/*
* <<
* Davinci
* ==
* Copyright (C) 2016 - 2017 EDP
* ==
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* >>
*/
import React, { useContext } from 'react'
import { Select } from 'antd'
const { Option } = Select
import { OptionProps } from 'antd/lib/select'
import { TextProperties } from '../Element/constants'
import { EditorContext } from '../context'
const Font: React.FC = () => {
const { isTextPropertyActive, toggleTextProperty } = useContext(EditorContext)
const fontFamily =
FontSelectOptions.find(({ value }) =>
isTextPropertyActive(TextProperties.FontFamily, value)
)?.value || ''
const fontSize = +isTextPropertyActive(TextProperties.FontSize) || ''
const fontFamilyChange = (value: string) =>
toggleTextProperty(TextProperties.FontFamily, value)
const fontSizeChange = (value: number) =>
toggleTextProperty(TextProperties.FontSize, value)
return (
<>
>
)
}
export default Font
interface FontOptionProps extends OptionProps {
value: string
label: string
}
const FontSelectOptions: FontOptionProps[] = [
{ value: '', label: '默认字体' },
{ value: "Microsoft Yahei", label: "微软雅黑"},
{ value: "SimSun", label: "宋体"},
{ value: "Heiti", label: "黑体"},
{ value: "STXihei", label: "华文细黑"},
{ value: "Verdana", label: "Verdana"},
{ value: "Arial", label: "Arial"},
{ value: "Times New Roman", label: "Times New Roman"},
{ value: "Times", label: "Times"},
{ value: "MS Sans Serif", label: "MS Sans Serif"},
{ value: 'Sans Serif', label: 'Sans Serif' },
{ value: 'Serif', label: 'Serif' },
{ value: 'Monospace', label: 'Monospace' },
]
const FontSizeSelectOptions: OptionProps[] = [
10,
12,
13,
14,
15,
16,
18,
20,
24,
28,
32,
36,
40,
48,
56,
64,
72,
96,
128
].map((size) => ({
value: size,
label: `${size}px`
}))