OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
_backup
/
tinymce
/
tinymce
/
src
/
core
/
main
/
ts
/
fmt
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/20/2020 05:44:43 AM
rwxr-xr-x
📄
ApplyFormat.ts
11.18 KB
02/20/2020 05:43:19 AM
rw-r--r--
📄
CaretFormat.ts
10.27 KB
02/20/2020 05:43:19 AM
rw-r--r--
📄
DefaultFormats.ts
5.17 KB
02/20/2020 05:43:20 AM
rw-r--r--
📄
ExpandRange.ts
12.32 KB
02/20/2020 05:43:21 AM
rw-r--r--
📄
FontInfo.ts
2.1 KB
02/20/2020 05:43:21 AM
rw-r--r--
📄
FormatChanged.ts
4.52 KB
02/20/2020 05:43:22 AM
rw-r--r--
📄
FormatContainer.ts
706 bytes
02/20/2020 05:43:22 AM
rw-r--r--
📄
FormatRegistry.ts
2.7 KB
02/20/2020 05:43:23 AM
rw-r--r--
📄
FormatUtils.ts
4.83 KB
02/20/2020 05:43:23 AM
rw-r--r--
📄
Hooks.ts
1.56 KB
02/20/2020 05:43:24 AM
rw-r--r--
📄
MatchFormat.ts
5.54 KB
02/20/2020 05:43:24 AM
rw-r--r--
📄
MergeFormats.ts
6.75 KB
02/20/2020 05:43:25 AM
rw-r--r--
📄
Preview.ts
8.79 KB
02/20/2020 05:43:26 AM
rw-r--r--
📄
RemoveFormat.ts
18.89 KB
02/20/2020 05:43:26 AM
rw-r--r--
📄
ToggleFormat.ts
842 bytes
02/20/2020 05:43:27 AM
rw-r--r--
Editing: FontInfo.ts
Close
/** * Copyright (c) Tiny Technologies, Inc. All rights reserved. * Licensed under the LGPL or a commercial license. * For LGPL see License.txt in the project root for license information. * For commercial licenses see https://www.tiny.cloud/ */ import { Element, HTMLElement, Node } from '@ephox/dom-globals'; import { Fun, Option } from '@ephox/katamari'; import { Element as SugarElement, Node as SugarNode, PredicateFind, Css, Compare } from '@ephox/sugar'; import DOMUtils from '../api/dom/DOMUtils'; const getSpecifiedFontProp = (propName: string, rootElm: Element, elm: HTMLElement): Option<string> => { const getProperty = (elm) => Css.getRaw(elm, propName); const isRoot = (elm) => Compare.eq(SugarElement.fromDom(rootElm), elm); return PredicateFind.closest(SugarElement.fromDom(elm), (elm) => getProperty(elm).isSome(), isRoot).bind(getProperty); }; const round = (number: number, precision: number) => { const factor = Math.pow(10, precision); return Math.round(number * factor) / factor; }; const toPt = (fontSize: string, precision?: number) => { if (/[0-9.]+px$/.test(fontSize)) { // Round to the nearest 0.5 return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt'; } return fontSize; }; const normalizeFontFamily = (fontFamily: string) => { // 'Font name', Font -> Font name,Font return fontFamily.replace(/[\'\"\\]/g, '').replace(/,\s+/g, ','); }; const getComputedFontProp = (propName: string, elm: HTMLElement): Option<string> => { return Option.from(DOMUtils.DOM.getStyle(elm, propName, true)); }; const getFontProp = (propName: string) => { return (rootElm: Element, elm: Node): string => { return Option.from(elm) .map(SugarElement.fromDom) .filter(SugarNode.isElement) .bind((element: any) => { return getSpecifiedFontProp(propName, rootElm, element.dom()) .or(getComputedFontProp(propName, element.dom())); }) .getOr(''); }; }; export default { getFontSize: getFontProp('font-size'), getFontFamily: Fun.compose(normalizeFontFamily, getFontProp('font-family')) as (rootElm: Element, elm: Node) => string, toPt };