@modusoperandi/licit 1.0.4 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BlockquoteInsertNewLineCommand.js +16 -18
- package/BlockquoteInsertNewLineCommand.js.flow +76 -77
- package/BlockquoteNodeSpec.js +3 -4
- package/BlockquoteNodeSpec.js.flow +29 -30
- package/BlockquoteToggleCommand.js +16 -17
- package/BlockquoteToggleCommand.js.flow +56 -56
- package/BookmarkNodeSpec.js +2 -2
- package/BookmarkNodeSpec.js.flow +39 -39
- package/BulletListNodeSpec.js.flow +61 -61
- package/CZIProseMirror.js.flow +90 -90
- package/CodeBlockCommand.js +17 -18
- package/CodeBlockCommand.js.flow +65 -65
- package/CodeBlockNodeSpec.js.flow +24 -24
- package/CodeMarkSpec.js.flow +14 -14
- package/ContentPlaceholderPlugin.js +20 -21
- package/ContentPlaceholderPlugin.js.flow +185 -187
- package/CursorPlaceholderPlugin.js +11 -11
- package/CursorPlaceholderPlugin.js.flow +115 -115
- package/DocLayoutCommand.js +18 -21
- package/DocLayoutCommand.js.flow +97 -99
- package/DocNodeSpec.js.flow +64 -64
- package/EMMarkSpec.js.flow +14 -14
- package/EditorCommands.js.flow +126 -126
- package/EditorKeyMap.js +0 -1
- package/EditorKeyMap.js.flow +185 -187
- package/EditorMarks.js +2 -2
- package/EditorMarks.js.flow +71 -71
- package/EditorNodes.js +2 -3
- package/EditorNodes.js.flow +58 -59
- package/EditorPageLayoutPlugin.js +10 -10
- package/EditorPageLayoutPlugin.js.flow +67 -67
- package/EditorPlugins.js.flow +8 -8
- package/EditorSchema.js.flow +12 -12
- package/EditorState.js.flow +7 -7
- package/FontSizeMarkSpec.js.flow +49 -49
- package/FontTypeMarkSpec.js +1 -1
- package/FontTypeMarkSpec.js.flow +80 -80
- package/HTMLMutator.js +6 -7
- package/HTMLMutator.js.flow +59 -59
- package/HardBreakNodeSpec.js.flow +15 -15
- package/HeadingNodeSpec.js +3 -13
- package/HeadingNodeSpec.js.flow +42 -52
- package/HistoryRedoCommand.js +15 -16
- package/HistoryRedoCommand.js.flow +41 -41
- package/HistoryUndoCommand.js +15 -16
- package/HistoryUndoCommand.js.flow +41 -41
- package/HorizontalRuleCommand.js +15 -16
- package/HorizontalRuleCommand.js.flow +71 -71
- package/HorizontalRuleNodeSpec.js.flow +39 -39
- package/ImageUploadPlaceholderPlugin.js +15 -17
- package/ImageUploadPlaceholderPlugin.js.flow +190 -192
- package/LinkMarkSpec.js +6 -1
- package/LinkMarkSpec.js.flow +37 -32
- package/LinkSetURLCommand.js +130 -60
- package/LinkSetURLCommand.js.flow +141 -117
- package/LinkTooltipPlugin.js +122 -34
- package/LinkTooltipPlugin.js.flow +261 -190
- package/ListItemInsertNewLineCommand.js +16 -18
- package/ListItemInsertNewLineCommand.js.flow +76 -77
- package/ListItemMergeCommand.js +24 -24
- package/ListItemMergeCommand.js.flow +198 -199
- package/ListItemNodeSpec.js.flow +52 -52
- package/ListSplitCommand.js +15 -16
- package/ListSplitCommand.js.flow +54 -54
- package/ListToggleCommand.js +19 -20
- package/ListToggleCommand.js.flow +99 -99
- package/MarkNames.js.flow +18 -18
- package/MarksClearCommand.js +17 -18
- package/MarksClearCommand.js.flow +65 -65
- package/MathEditCommand.js +17 -19
- package/MathEditCommand.js.flow +119 -120
- package/MathNodeSpec.js.flow +46 -46
- package/NodeNames.js.flow +23 -23
- package/OrderedListNodeSpec.js +2 -2
- package/OrderedListNodeSpec.js.flow +132 -132
- package/ParagraphNodeSpec.js +11 -2
- package/ParagraphNodeSpec.js.flow +163 -156
- package/ParagraphSpacingCommand.js +21 -23
- package/ParagraphSpacingCommand.js.flow +139 -144
- package/PrintCommand.js +17 -18
- package/PrintCommand.js.flow +53 -53
- package/SelectionPlaceholderPlugin.js +11 -11
- package/SelectionPlaceholderPlugin.js.flow +131 -131
- package/SpacerMarkSpec.js +2 -2
- package/SpacerMarkSpec.js.flow +47 -47
- package/StrikeMarkSpec.js.flow +21 -21
- package/StrongMarkSpec.js.flow +25 -25
- package/StyleView.js +5 -7
- package/StyleView.js.flow +18 -19
- package/TableBackgroundColorCommand.js +34 -23
- package/TableBackgroundColorCommand.js.flow +80 -75
- package/TableBorderColorCommand.js +34 -23
- package/TableBorderColorCommand.js.flow +81 -75
- package/TableCellColorCommand.js +20 -21
- package/TableCellColorCommand.js.flow +74 -75
- package/TableCellMenuPlugin.js +19 -19
- package/TableCellMenuPlugin.js.flow +130 -132
- package/TableInsertCommand.js +19 -22
- package/TableInsertCommand.js.flow +118 -120
- package/TableMergeCellsCommand.js +19 -19
- package/TableMergeCellsCommand.js.flow +113 -112
- package/TableNodesSpecs.js +4 -2
- package/TableNodesSpecs.js.flow +80 -78
- package/TablePlugins.js.flow +14 -14
- package/TableResizePlugin.js +20 -20
- package/TableResizePlugin.js.flow +631 -631
- package/TextColorMarkSpec.js.flow +35 -35
- package/TextHighlightMarkSpec.js.flow +38 -38
- package/TextInsertTabSpaceCommand.js +15 -16
- package/TextInsertTabSpaceCommand.js.flow +106 -106
- package/TextNoWrapMarkSpec.js.flow +14 -14
- package/TextNodeSpec.js.flow +7 -7
- package/TextSelectionMarkSpec.js.flow +24 -24
- package/TextSubMarkSpec.js.flow +20 -20
- package/TextSuperMarkSpec.js.flow +20 -20
- package/TextUnderlineMarkSpec.js.flow +27 -27
- package/Types.js +6 -0
- package/Types.js.flow +77 -75
- package/WebFontLoader.js +6 -7
- package/WebFontLoader.js.flow +22 -22
- package/blockQuoteInputRule.js.flow +36 -36
- package/bom.xml +17223 -25722
- package/browser.js.flow +7 -7
- package/buildEditorPlugins.js +6 -7
- package/buildEditorPlugins.js.flow +49 -49
- package/buildInputRules.js +8 -4
- package/buildInputRules.js.flow +85 -81
- package/client/CollabConnector.js +20 -20
- package/client/CollabConnector.js.flow +90 -90
- package/client/EditorConnection.js +10 -9
- package/client/EditorConnection.js.flow +324 -323
- package/client/Licit.js +78 -115
- package/client/Licit.js.flow +611 -643
- package/client/Licit.test.js +49 -39
- package/client/Licit.test.js.flow +104 -98
- package/client/Reporter.js +5 -6
- package/client/Reporter.js.flow +37 -37
- package/client/SimpleConnector.js +5 -5
- package/client/SimpleConnector.js.flow +61 -61
- package/client/http.js +0 -6
- package/client/http.js.flow +62 -70
- package/client/licit.css +12 -12
- package/client/throttle.js +8 -2
- package/client/throttle.js.flow +27 -27
- package/convertFromDOMElement.js +2 -4
- package/convertFromDOMElement.js.flow +33 -36
- package/convertFromHTML.js +2 -3
- package/convertFromHTML.js.flow +15 -17
- package/convertFromJSON.js +1 -2
- package/convertFromJSON.js.flow +55 -56
- package/convertToCSSPTValue.js +6 -10
- package/convertToCSSPTValue.js.flow +19 -22
- package/convertToJSON.js.flow +7 -7
- package/createCommand.js +16 -17
- package/createCommand.js.flow +62 -62
- package/createEditorKeyMap.js +2 -2
- package/createEditorKeyMap.js.flow +94 -94
- package/createEmptyEditorState.js +2 -3
- package/createEmptyEditorState.js.flow +29 -31
- package/createTableResizingPlugin.js +6 -6
- package/createTableResizingPlugin.js.flow +86 -86
- package/findActionableCell.js.flow +74 -74
- package/findActiveMark.js +1 -1
- package/findActiveMark.js.flow +32 -32
- package/hyphenize.js.flow +17 -17
- package/index.d.ts +165 -165
- package/index.js.flow +10 -10
- package/insertTable.js +0 -3
- package/insertTable.js.flow +54 -56
- package/isEditorStateEmpty.js.flow +32 -32
- package/isTableNode.js.flow +15 -15
- package/joinDown.js +1 -3
- package/joinDown.js.flow +25 -27
- package/joinListNode.js.flow +55 -55
- package/joinUp.js +1 -3
- package/joinUp.js.flow +37 -39
- package/keymaps.js.flow +185 -185
- package/lookUpElement.js +2 -1
- package/lookUpElement.js.flow +14 -14
- package/nodeAt.js.flow +12 -12
- package/normalizeHTML.js +3 -1
- package/normalizeHTML.js.flow +80 -78
- package/package.json +162 -156
- package/patchAnchorElements.js +1 -1
- package/patchAnchorElements.js.flow +38 -38
- package/patchBreakElements.js +3 -2
- package/patchBreakElements.js.flow +22 -22
- package/patchElementInlineStyles.js +1 -1
- package/patchElementInlineStyles.js.flow +92 -92
- package/patchListElements.js +4 -4
- package/patchListElements.js.flow +276 -276
- package/patchMathElements.js +5 -7
- package/patchMathElements.js.flow +58 -60
- package/patchParagraphElements.js.flow +20 -20
- package/patchStyleElements.js +1 -1
- package/patchStyleElements.js.flow +197 -196
- package/patchTableElements.js +2 -3
- package/patchTableElements.js.flow +88 -89
- package/rebaseDocWithSteps.js.flow +42 -42
- package/sanitizeURL.js +1 -1
- package/sanitizeURL.js.flow +13 -13
- package/splitListItem.js +3 -3
- package/splitListItem.js.flow +191 -191
- package/styles.css +19 -19
- package/styles0.css +29 -29
- package/toClosestFontPtSize.js.flow +22 -22
- package/toSafeHTMLDocument.js.flow +9 -9
- package/toggleBlockquote.js +4 -5
- package/toggleBlockquote.js.flow +101 -108
- package/toggleCodeBlock.js +6 -6
- package/toggleCodeBlock.js.flow +102 -102
- package/ui/AlertInfo.js +15 -16
- package/ui/AlertInfo.js.flow +64 -64
- package/ui/BookmarkNodeView.js +20 -21
- package/ui/BookmarkNodeView.js.flow +66 -66
- package/ui/CommandButton.js +15 -16
- package/ui/CommandButton.js.flow +68 -68
- package/ui/CommandMenu.js +19 -20
- package/ui/CommandMenu.js.flow +75 -75
- package/ui/CommandMenuButton.js +23 -25
- package/ui/CommandMenuButton.js.flow +130 -131
- package/ui/CustomEditorView.js +20 -20
- package/ui/CustomEditorView.js.flow +29 -28
- package/ui/CustomMenu.js +11 -12
- package/ui/CustomMenu.js.flow +17 -17
- package/ui/CustomMenuItem.js +16 -18
- package/ui/CustomMenuItem.js.flow +36 -36
- package/ui/CustomNodeView.js +29 -19
- package/ui/CustomNodeView.js.flow +207 -200
- package/ui/CustomRadioButton.js +18 -21
- package/ui/CustomRadioButton.js.flow +64 -65
- package/ui/DocLayoutEditor.js +18 -20
- package/ui/DocLayoutEditor.js.flow +145 -146
- package/ui/Editor.js +30 -28
- package/ui/Editor.js.flow +287 -288
- package/ui/EditorFrameset.js +13 -14
- package/ui/EditorFrameset.js.flow +81 -81
- package/ui/EditorToolbar.js +36 -42
- package/ui/EditorToolbar.js.flow +199 -218
- package/ui/EditorToolbarConfig.js +5 -5
- package/ui/EditorToolbarConfig.js.flow +164 -164
- package/ui/FontSizeCommandMenuButton.js +14 -15
- package/ui/FontSizeCommandMenuButton.js.flow +66 -66
- package/ui/FontTypeCommandMenuButton.js +15 -17
- package/ui/FontTypeCommandMenuButton.js.flow +60 -61
- package/ui/Frag.js +11 -12
- package/ui/Frag.js.flow +13 -13
- package/ui/Icon.js +21 -24
- package/ui/Icon.js.flow +89 -89
- package/ui/ImageInlineEditor.js +14 -15
- package/ui/ImageInlineEditor.js.flow +67 -67
- package/ui/KeyCodes.js.flow +12 -12
- package/ui/LinkTooltip.js +68 -34
- package/ui/LinkTooltip.js.flow +118 -85
- package/ui/LinkURLEditor.js +160 -43
- package/ui/LinkURLEditor.js.flow +243 -117
- package/ui/ListItemNodeView.js +6 -7
- package/ui/ListItemNodeView.js.flow +98 -98
- package/ui/ListTypeButton.js +23 -27
- package/ui/ListTypeButton.js.flow +128 -131
- package/ui/ListTypeCommandButton.js +14 -15
- package/ui/ListTypeCommandButton.js.flow +85 -85
- package/ui/ListTypeMenu.js +21 -22
- package/ui/ListTypeMenu.js.flow +70 -70
- package/ui/LoadingIndicator.js +11 -12
- package/ui/LoadingIndicator.js.flow +20 -20
- package/ui/MathEditor.js +17 -22
- package/ui/MathEditor.js.flow +72 -78
- package/ui/MathInlineEditor.js +20 -21
- package/ui/MathInlineEditor.js.flow +101 -102
- package/ui/MathNodeView.js +29 -30
- package/ui/MathNodeView.js.flow +176 -186
- package/ui/PasteMenu.js +19 -23
- package/ui/PasteMenu.js.flow +53 -57
- package/ui/ResizeObserver.js +1 -1
- package/ui/ResizeObserver.js.flow +106 -106
- package/ui/RichTextEditor.js +17 -18
- package/ui/RichTextEditor.js.flow +133 -133
- package/ui/SelectionObserver.js +8 -9
- package/ui/SelectionObserver.js.flow +134 -134
- package/ui/TableCellMenu.js +14 -15
- package/ui/TableCellMenu.js.flow +51 -51
- package/ui/TableGridSizeEditor.js +30 -33
- package/ui/TableGridSizeEditor.js.flow +187 -184
- package/ui/TableNodeView.js +18 -17
- package/ui/TableNodeView.js.flow +25 -25
- package/ui/bindScrollHandler.js +2 -1
- package/ui/bindScrollHandler.js.flow +46 -46
- package/ui/canUseCSSFont.js +5 -4
- package/ui/canUseCSSFont.js.flow +42 -43
- package/ui/czi-body-layout-editor.css +16 -16
- package/ui/czi-bookmark-view.css +10 -10
- package/ui/czi-cursor-placeholder.css +36 -36
- package/ui/czi-custom-menu-button.css +18 -18
- package/ui/czi-custom-menu-item.css +30 -30
- package/ui/czi-custom-menu.css +8 -8
- package/ui/czi-custom-radio-button.css +80 -80
- package/ui/czi-custom-scrollbar.css +21 -21
- package/ui/czi-editor-frameset.css +81 -81
- package/ui/czi-editor-toolbar.css +122 -122
- package/ui/czi-editor.css +217 -220
- package/ui/czi-form.css +201 -107
- package/ui/czi-frag.css +3 -3
- package/ui/czi-heading.css +40 -40
- package/ui/czi-icon.css +72 -72
- package/ui/czi-image-resize-box.css +165 -165
- package/ui/czi-image-upload-editor.css +57 -57
- package/ui/czi-image-upload-placeholder.css +50 -50
- package/ui/czi-image-url-editor.css +38 -38
- package/ui/czi-image-view.css +121 -125
- package/ui/czi-indent.css +137 -137
- package/ui/czi-inline-editor.css +20 -20
- package/ui/czi-link-tooltip.css +112 -71
- package/ui/czi-list.css +406 -410
- package/ui/czi-loading-indicator.css +66 -111
- package/ui/czi-math-view.css +62 -62
- package/ui/czi-selection-placeholder.css +24 -24
- package/ui/czi-table-cell-menu.css +16 -14
- package/ui/czi-table-grid-size-editor.css +37 -37
- package/ui/czi-table.css +87 -87
- package/ui/czi-vars.css +2 -2
- package/ui/findActiveFontSize.js +2 -1
- package/ui/findActiveFontSize.js.flow +55 -58
- package/ui/findActiveFontType.js +4 -3
- package/ui/findActiveFontType.js.flow +35 -38
- package/ui/fonts.css +460 -460
- package/ui/handleEditorDrop.js +1 -1
- package/ui/handleEditorDrop.js.flow +28 -28
- package/ui/handleEditorKeyDown.js +1 -1
- package/ui/handleEditorKeyDown.js.flow +39 -39
- package/ui/handleEditorPaste.js +1 -1
- package/ui/handleEditorPaste.js.flow +33 -33
- package/ui/htmlElementToRect.js.flow +18 -18
- package/ui/icon-font.css +9 -9
- package/ui/injectStyleSheet.js +2 -2
- package/ui/injectStyleSheet.js.flow +40 -42
- package/ui/isElementFullyVisible.js +1 -10
- package/ui/isElementFullyVisible.js.flow +14 -26
- package/ui/isOffline.js.flow +8 -8
- package/ui/isReactClass.js.flow +12 -12
- package/ui/listType.css +21 -21
- package/ui/mathquill-editor/MathQuillEditor.js +27 -30
- package/ui/mathquill-editor/MathQuillEditor.js.flow +158 -159
- package/ui/mathquill-editor/MathQuillEditorSymbols.js.flow +483 -483
- package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +14 -15
- package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js.flow +50 -50
- package/ui/mathquill-editor/czi-mathquill-editor-symbols-panel.css +39 -39
- package/ui/mathquill-editor/czi-mathquill-editor.css +50 -50
- package/ui/mathquill-editor/mathquill-import-kludge.js +1 -8
- package/ui/mathquill-editor/mathquill-import-kludge.js.flow +17 -24
- package/ui/renderLaTeXAsHTML.js +4 -4
- package/ui/renderLaTeXAsHTML.js.flow +46 -46
- package/ui/resolveImage.js +5 -6
- package/ui/resolveImage.js.flow +121 -123
- package/ui/toCSSColor.js.flow +51 -51
- package/ui/toCSSLineSpacing.js +2 -3
- package/ui/toCSSLineSpacing.js.flow +53 -55
- package/ui/toHexColor.js.flow +26 -26
- package/ui/uuid.js.flow +9 -9
- package/uuid.js.flow +9 -9
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { EditorState, Plugin, PluginKey } from 'prosemirror-state';
|
|
4
|
-
import { Transform } from 'prosemirror-transform';
|
|
5
|
-
import { Decoration, DecorationSet } from 'prosemirror-view';
|
|
6
|
-
|
|
7
|
-
import './ui/czi-cursor-placeholder.css';
|
|
8
|
-
|
|
9
|
-
const PLACE_HOLDER_ID = { name: 'CursorPlaceholderPlugin' };
|
|
10
|
-
|
|
11
|
-
let singletonInstance = null;
|
|
12
|
-
|
|
13
|
-
// https://prosemirror.net/examples/upload/
|
|
14
|
-
const SPEC = {
|
|
15
|
-
// [FS] IRAD-1005 2020-07-07
|
|
16
|
-
// Upgrade outdated packages.
|
|
17
|
-
key: new PluginKey('CursorPlaceholderPlugin'),
|
|
18
|
-
state: {
|
|
19
|
-
init() {
|
|
20
|
-
return DecorationSet.empty;
|
|
21
|
-
},
|
|
22
|
-
apply(tr, set) {
|
|
23
|
-
set = set.map(tr.mapping, tr.doc);
|
|
24
|
-
const action = tr.getMeta(this);
|
|
25
|
-
if (!action) {
|
|
26
|
-
return set;
|
|
27
|
-
}
|
|
28
|
-
if (action.add) {
|
|
29
|
-
const widget = document.createElement('czi-cursor-placeholder');
|
|
30
|
-
widget.className = 'czi-cursor-placeholder';
|
|
31
|
-
const deco = Decoration.widget(action.add.pos, widget, {
|
|
32
|
-
id: PLACE_HOLDER_ID,
|
|
33
|
-
});
|
|
34
|
-
set = set.add(tr.doc, [deco]);
|
|
35
|
-
} else if (action.remove) {
|
|
36
|
-
const found = set.find(null, null, specFinder);
|
|
37
|
-
set = set.remove(found);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return set;
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
props: {
|
|
44
|
-
decorations: (state) => {
|
|
45
|
-
const plugin = singletonInstance;
|
|
46
|
-
return plugin ? plugin.getState(state) : null;
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
class CursorPlaceholderPlugin extends Plugin {
|
|
52
|
-
constructor() {
|
|
53
|
-
super(SPEC);
|
|
54
|
-
if (singletonInstance) {
|
|
55
|
-
return singletonInstance;
|
|
56
|
-
}
|
|
57
|
-
singletonInstance = this;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function specFinder(spec: Object): boolean {
|
|
62
|
-
return spec.id === PLACE_HOLDER_ID;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function findCursorPlaceholderPos(state: EditorState): ?number {
|
|
66
|
-
if (!singletonInstance) {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
const decos = singletonInstance.getState(state);
|
|
70
|
-
const found = decos.find(null, null, specFinder);
|
|
71
|
-
const pos = found.length ? found[0].from : null;
|
|
72
|
-
return pos || null;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export function showCursorPlaceholder(state: EditorState): Transform {
|
|
76
|
-
const plugin = singletonInstance;
|
|
77
|
-
let { tr } = state;
|
|
78
|
-
if (!plugin || !tr.selection) {
|
|
79
|
-
return tr;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const pos = findCursorPlaceholderPos(state);
|
|
83
|
-
if (pos === null) {
|
|
84
|
-
if (!tr.selection.empty) {
|
|
85
|
-
// Replace the selection with a placeholder.
|
|
86
|
-
tr = tr.deleteSelection();
|
|
87
|
-
}
|
|
88
|
-
tr = tr.setMeta(plugin, {
|
|
89
|
-
add: {
|
|
90
|
-
pos: tr.selection.from,
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return tr;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export function hideCursorPlaceholder(state: EditorState): Transform {
|
|
99
|
-
const plugin = singletonInstance;
|
|
100
|
-
let { tr } = state;
|
|
101
|
-
if (!plugin) {
|
|
102
|
-
return tr;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const pos = findCursorPlaceholderPos(state);
|
|
106
|
-
if (pos !== null) {
|
|
107
|
-
tr = tr.setMeta(plugin, {
|
|
108
|
-
remove: {},
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return tr;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export default CursorPlaceholderPlugin;
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { EditorState, Plugin, PluginKey } from 'prosemirror-state';
|
|
4
|
+
import { Transform } from 'prosemirror-transform';
|
|
5
|
+
import { Decoration, DecorationSet } from 'prosemirror-view';
|
|
6
|
+
|
|
7
|
+
import './ui/czi-cursor-placeholder.css';
|
|
8
|
+
|
|
9
|
+
const PLACE_HOLDER_ID = { name: 'CursorPlaceholderPlugin' };
|
|
10
|
+
|
|
11
|
+
let singletonInstance = null;
|
|
12
|
+
|
|
13
|
+
// https://prosemirror.net/examples/upload/
|
|
14
|
+
const SPEC = {
|
|
15
|
+
// [FS] IRAD-1005 2020-07-07
|
|
16
|
+
// Upgrade outdated packages.
|
|
17
|
+
key: new PluginKey('CursorPlaceholderPlugin'),
|
|
18
|
+
state: {
|
|
19
|
+
init() {
|
|
20
|
+
return DecorationSet.empty;
|
|
21
|
+
},
|
|
22
|
+
apply(tr, set) {
|
|
23
|
+
set = set.map(tr.mapping, tr.doc);
|
|
24
|
+
const action = tr.getMeta(this);
|
|
25
|
+
if (!action) {
|
|
26
|
+
return set;
|
|
27
|
+
}
|
|
28
|
+
if (action.add) {
|
|
29
|
+
const widget = document.createElement('czi-cursor-placeholder');
|
|
30
|
+
widget.className = 'czi-cursor-placeholder';
|
|
31
|
+
const deco = Decoration.widget(action.add.pos, widget, {
|
|
32
|
+
id: PLACE_HOLDER_ID,
|
|
33
|
+
});
|
|
34
|
+
set = set.add(tr.doc, [deco]);
|
|
35
|
+
} else if (action.remove) {
|
|
36
|
+
const found = set.find(null, null, specFinder);
|
|
37
|
+
set = set.remove(found);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return set;
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
props: {
|
|
44
|
+
decorations: (state) => {
|
|
45
|
+
const plugin = singletonInstance;
|
|
46
|
+
return plugin ? plugin.getState(state) : null;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
class CursorPlaceholderPlugin extends Plugin {
|
|
52
|
+
constructor() {
|
|
53
|
+
super(SPEC);
|
|
54
|
+
if (singletonInstance) {
|
|
55
|
+
return singletonInstance;
|
|
56
|
+
}
|
|
57
|
+
singletonInstance = this;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function specFinder(spec: Object): boolean {
|
|
62
|
+
return spec.id === PLACE_HOLDER_ID;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function findCursorPlaceholderPos(state: EditorState): ?number {
|
|
66
|
+
if (!singletonInstance) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const decos = singletonInstance.getState(state);
|
|
70
|
+
const found = decos.find(null, null, specFinder);
|
|
71
|
+
const pos = found.length ? found[0].from : null;
|
|
72
|
+
return pos || null;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function showCursorPlaceholder(state: EditorState): Transform {
|
|
76
|
+
const plugin = singletonInstance;
|
|
77
|
+
let { tr } = state;
|
|
78
|
+
if (!plugin || !tr.selection) {
|
|
79
|
+
return tr;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const pos = findCursorPlaceholderPos(state);
|
|
83
|
+
if (pos === null) {
|
|
84
|
+
if (!tr.selection.empty) {
|
|
85
|
+
// Replace the selection with a placeholder.
|
|
86
|
+
tr = tr.deleteSelection();
|
|
87
|
+
}
|
|
88
|
+
tr = tr.setMeta(plugin, {
|
|
89
|
+
add: {
|
|
90
|
+
pos: tr.selection.from,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return tr;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function hideCursorPlaceholder(state: EditorState): Transform {
|
|
99
|
+
const plugin = singletonInstance;
|
|
100
|
+
let { tr } = state;
|
|
101
|
+
if (!plugin) {
|
|
102
|
+
return tr;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const pos = findCursorPlaceholderPos(state);
|
|
106
|
+
if (pos !== null) {
|
|
107
|
+
tr = tr.setMeta(plugin, {
|
|
108
|
+
remove: {},
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return tr;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export default CursorPlaceholderPlugin;
|
package/DocLayoutCommand.js
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function _classCallCheck(
|
|
3
|
-
function _defineProperties(
|
|
4
|
-
function _createClass(
|
|
2
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
3
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
4
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
5
5
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
6
|
-
function _possibleConstructorReturn(
|
|
6
|
+
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
7
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
7
8
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
8
|
-
function _getPrototypeOf(
|
|
9
|
-
function
|
|
10
|
-
function
|
|
11
|
-
function
|
|
12
|
-
function
|
|
13
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
9
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
10
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
11
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
12
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
13
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
14
14
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
15
15
|
import { Schema } from 'prosemirror-model';
|
|
16
16
|
import { EditorState } from 'prosemirror-state';
|
|
17
17
|
import { Transform } from 'prosemirror-transform';
|
|
18
18
|
import { EditorView } from 'prosemirror-view';
|
|
19
|
-
import { SetDocAttrStep } from '@modusoperandi/licit-doc-attrs-step';
|
|
19
|
+
import { SetDocAttrStep, UICommand } from '@modusoperandi/licit-doc-attrs-step';
|
|
20
20
|
import DocLayoutEditor from './ui/DocLayoutEditor.js';
|
|
21
|
-
import { UICommand } from '@modusoperandi/licit-doc-attrs-step';
|
|
22
21
|
import { createPopUp } from '@modusoperandi/licit-ui-commands';
|
|
23
22
|
function setDocLayout(tr, schema, width, layout) {
|
|
24
23
|
var _tr = tr,
|
|
@@ -31,7 +30,6 @@ function setDocLayout(tr, schema, width, layout) {
|
|
|
31
30
|
return tr;
|
|
32
31
|
}
|
|
33
32
|
var DocLayoutCommand = /*#__PURE__*/function (_UICommand) {
|
|
34
|
-
_inherits(DocLayoutCommand, _UICommand);
|
|
35
33
|
function DocLayoutCommand() {
|
|
36
34
|
var _this;
|
|
37
35
|
_classCallCheck(this, DocLayoutCommand);
|
|
@@ -39,14 +37,14 @@ var DocLayoutCommand = /*#__PURE__*/function (_UICommand) {
|
|
|
39
37
|
args[_key] = arguments[_key];
|
|
40
38
|
}
|
|
41
39
|
_this = _callSuper(this, DocLayoutCommand, [].concat(args));
|
|
42
|
-
_defineProperty(
|
|
43
|
-
_defineProperty(
|
|
40
|
+
_defineProperty(_this, "_popUp", null);
|
|
41
|
+
_defineProperty(_this, "isEnabled", function (state) {
|
|
44
42
|
return true;
|
|
45
43
|
});
|
|
46
|
-
_defineProperty(
|
|
44
|
+
_defineProperty(_this, "isActive", function (state) {
|
|
47
45
|
return !!_this._popUp;
|
|
48
46
|
});
|
|
49
|
-
_defineProperty(
|
|
47
|
+
_defineProperty(_this, "waitForUserInput", function (state, dispatch, view, event) {
|
|
50
48
|
if (_this._popUp) {
|
|
51
49
|
return Promise.resolve(undefined);
|
|
52
50
|
}
|
|
@@ -66,12 +64,11 @@ var DocLayoutCommand = /*#__PURE__*/function (_UICommand) {
|
|
|
66
64
|
});
|
|
67
65
|
});
|
|
68
66
|
});
|
|
69
|
-
_defineProperty(
|
|
67
|
+
_defineProperty(_this, "executeWithUserInput", function (state, dispatch, view, inputs) {
|
|
70
68
|
if (dispatch) {
|
|
71
69
|
var selection = state.selection,
|
|
72
70
|
schema = state.schema;
|
|
73
71
|
var _tr2 = state.tr;
|
|
74
|
-
// tr = view ? hideCursorPlaceholder(view.state) : tr;
|
|
75
72
|
_tr2 = _tr2.setSelection(selection);
|
|
76
73
|
if (inputs) {
|
|
77
74
|
var width = inputs.width,
|
|
@@ -85,13 +82,13 @@ var DocLayoutCommand = /*#__PURE__*/function (_UICommand) {
|
|
|
85
82
|
});
|
|
86
83
|
return _this;
|
|
87
84
|
}
|
|
88
|
-
|
|
85
|
+
_inherits(DocLayoutCommand, _UICommand);
|
|
86
|
+
return _createClass(DocLayoutCommand, [{
|
|
89
87
|
key: "cancel",
|
|
90
88
|
value: function cancel() {
|
|
91
89
|
return null;
|
|
92
90
|
}
|
|
93
91
|
}]);
|
|
94
|
-
return DocLayoutCommand;
|
|
95
92
|
}(UICommand);
|
|
96
93
|
export default DocLayoutCommand;
|
|
97
94
|
import { bpfrpt_proptype_DocLayoutEditorValue } from "./ui/DocLayoutEditor.js";
|
package/DocLayoutCommand.js.flow
CHANGED
|
@@ -1,99 +1,97 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { Schema } from 'prosemirror-model';
|
|
4
|
-
import { EditorState } from 'prosemirror-state';
|
|
5
|
-
import { Transform } from 'prosemirror-transform';
|
|
6
|
-
import { EditorView } from 'prosemirror-view';
|
|
7
|
-
import { SetDocAttrStep } from '@modusoperandi/licit-doc-attrs-step';
|
|
8
|
-
import DocLayoutEditor from './ui/DocLayoutEditor.js';
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
tr = tr.step(new SetDocAttrStep('
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
export default DocLayoutCommand;
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { Schema } from 'prosemirror-model';
|
|
4
|
+
import { EditorState } from 'prosemirror-state';
|
|
5
|
+
import { Transform } from 'prosemirror-transform';
|
|
6
|
+
import { EditorView } from 'prosemirror-view';
|
|
7
|
+
import { SetDocAttrStep, UICommand } from '@modusoperandi/licit-doc-attrs-step';
|
|
8
|
+
import DocLayoutEditor from './ui/DocLayoutEditor.js';
|
|
9
|
+
import { createPopUp } from '@modusoperandi/licit-ui-commands';
|
|
10
|
+
|
|
11
|
+
import type {
|
|
12
|
+
DocLayoutEditorValue
|
|
13
|
+
} from './ui/DocLayoutEditor.js';
|
|
14
|
+
|
|
15
|
+
function setDocLayout(
|
|
16
|
+
tr: Transform,
|
|
17
|
+
schema: Schema,
|
|
18
|
+
width: ?number,
|
|
19
|
+
layout: ?string
|
|
20
|
+
): Transform {
|
|
21
|
+
const { doc } = tr;
|
|
22
|
+
if (!doc) {
|
|
23
|
+
return tr;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
tr = tr.step(new SetDocAttrStep('width', width || null));
|
|
27
|
+
tr = tr.step(new SetDocAttrStep('layout', layout || null));
|
|
28
|
+
return tr;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
class DocLayoutCommand extends UICommand {
|
|
32
|
+
_popUp = null;
|
|
33
|
+
|
|
34
|
+
isEnabled = (state: EditorState): boolean => {
|
|
35
|
+
return true;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
isActive = (state: EditorState): boolean => {
|
|
39
|
+
return !!this._popUp;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
waitForUserInput = (
|
|
43
|
+
state: EditorState,
|
|
44
|
+
dispatch: ?(tr: Transform) => void,
|
|
45
|
+
view: ?EditorView,
|
|
46
|
+
event: ?SyntheticEvent<>
|
|
47
|
+
): Promise<any> => {
|
|
48
|
+
if (this._popUp) {
|
|
49
|
+
return Promise.resolve(undefined);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const { doc } = state;
|
|
53
|
+
|
|
54
|
+
return new Promise((resolve) => {
|
|
55
|
+
const props = {
|
|
56
|
+
initialValue: doc.attrs,
|
|
57
|
+
};
|
|
58
|
+
this._popUp = createPopUp(DocLayoutEditor, props, {
|
|
59
|
+
modal: true,
|
|
60
|
+
onClose: (val) => {
|
|
61
|
+
if (this._popUp) {
|
|
62
|
+
this._popUp = null;
|
|
63
|
+
resolve(val);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
executeWithUserInput = (
|
|
71
|
+
state: EditorState,
|
|
72
|
+
dispatch: ?(tr: Transform) => void,
|
|
73
|
+
view: ?EditorView,
|
|
74
|
+
inputs: ?DocLayoutEditorValue
|
|
75
|
+
): boolean => {
|
|
76
|
+
if (dispatch) {
|
|
77
|
+
const { selection, schema } = state;
|
|
78
|
+
let { tr } = state;
|
|
79
|
+
tr = tr.setSelection(selection);
|
|
80
|
+
|
|
81
|
+
if (inputs) {
|
|
82
|
+
const { width, layout } = inputs;
|
|
83
|
+
tr = setDocLayout(tr, schema, width, layout);
|
|
84
|
+
}
|
|
85
|
+
dispatch(tr);
|
|
86
|
+
view && view.focus();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return false;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
cancel(): void {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export default DocLayoutCommand;
|
package/DocNodeSpec.js.flow
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import convertToCSSPTValue from './convertToCSSPTValue.js';
|
|
4
|
-
|
|
5
|
-
export const LAYOUT = {
|
|
6
|
-
DESKTOP_SCREEN_4_3: 'desktop_screen_4_3',
|
|
7
|
-
DESKTOP_SCREEN_16_9: 'desktop_screen_16_9',
|
|
8
|
-
US_LETTER_LANDSCAPE: 'us_letter_landscape',
|
|
9
|
-
US_LETTER_PORTRAIT: 'us_letter_portrait',
|
|
10
|
-
A4_LANDSCAPE: 'a4_landscape',
|
|
11
|
-
A4_PORTRAIT: 'a4_portrait',
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export const ATTRIBUTE_LAYOUT = 'data-layout';
|
|
15
|
-
|
|
16
|
-
export function getAttrs(el: HTMLElement): Object {
|
|
17
|
-
const attrs: Object = {
|
|
18
|
-
layout: null,
|
|
19
|
-
width: null,
|
|
20
|
-
padding: null,
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const { width, maxWidth, padding } = el.style || {};
|
|
24
|
-
const ww = convertToCSSPTValue(width) || convertToCSSPTValue(maxWidth);
|
|
25
|
-
const pp = convertToCSSPTValue(padding);
|
|
26
|
-
if (ww) {
|
|
27
|
-
// 1pt = 1/72in
|
|
28
|
-
// letter size: 8.5in x 11inch
|
|
29
|
-
const ptWidth = ww + pp * 2;
|
|
30
|
-
const inWidth = ptWidth / 72;
|
|
31
|
-
const cmWidth = inWidth * 2.54;
|
|
32
|
-
if (inWidth >= 10.9 && inWidth <= 11.1) {
|
|
33
|
-
// Round up to letter size.
|
|
34
|
-
attrs.layout = LAYOUT.US_LETTER_LANDSCAPE;
|
|
35
|
-
} else if (inWidth >= 8.4 && inWidth <= 8.6) {
|
|
36
|
-
// Round up to letter size.
|
|
37
|
-
attrs.layout = LAYOUT.US_LETTER_PORTRAIT;
|
|
38
|
-
} else if (cmWidth >= 29.5 && cmWidth <= 30.1) {
|
|
39
|
-
attrs.layout = LAYOUT.A4_LANDSCAPE;
|
|
40
|
-
} else if (cmWidth >= 20.5 && cmWidth <= 21.5) {
|
|
41
|
-
attrs.layout = LAYOUT.A4_PORTRAIT;
|
|
42
|
-
} else {
|
|
43
|
-
attrs.width = ptWidth;
|
|
44
|
-
if (pp) {
|
|
45
|
-
attrs.padding = pp;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return attrs;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const DocNodeSpec = {
|
|
54
|
-
attrs: {
|
|
55
|
-
layout: { default: null },
|
|
56
|
-
padding: { default: null },
|
|
57
|
-
width: { default: null },
|
|
58
|
-
// [FS] IRAD-1202 2021-02-15
|
|
59
|
-
// Counter flags for Numbering
|
|
60
|
-
counterFlags: { default: null },
|
|
61
|
-
},
|
|
62
|
-
content: 'block+',
|
|
63
|
-
};
|
|
64
|
-
export default DocNodeSpec;
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import convertToCSSPTValue from './convertToCSSPTValue.js';
|
|
4
|
+
|
|
5
|
+
export const LAYOUT = {
|
|
6
|
+
DESKTOP_SCREEN_4_3: 'desktop_screen_4_3',
|
|
7
|
+
DESKTOP_SCREEN_16_9: 'desktop_screen_16_9',
|
|
8
|
+
US_LETTER_LANDSCAPE: 'us_letter_landscape',
|
|
9
|
+
US_LETTER_PORTRAIT: 'us_letter_portrait',
|
|
10
|
+
A4_LANDSCAPE: 'a4_landscape',
|
|
11
|
+
A4_PORTRAIT: 'a4_portrait',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const ATTRIBUTE_LAYOUT = 'data-layout';
|
|
15
|
+
|
|
16
|
+
export function getAttrs(el: HTMLElement): Object {
|
|
17
|
+
const attrs: Object = {
|
|
18
|
+
layout: null,
|
|
19
|
+
width: null,
|
|
20
|
+
padding: null,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const { width, maxWidth, padding } = el.style || {};
|
|
24
|
+
const ww = convertToCSSPTValue(width) || convertToCSSPTValue(maxWidth);
|
|
25
|
+
const pp = convertToCSSPTValue(padding);
|
|
26
|
+
if (ww) {
|
|
27
|
+
// 1pt = 1/72in
|
|
28
|
+
// letter size: 8.5in x 11inch
|
|
29
|
+
const ptWidth = ww + pp * 2;
|
|
30
|
+
const inWidth = ptWidth / 72;
|
|
31
|
+
const cmWidth = inWidth * 2.54;
|
|
32
|
+
if (inWidth >= 10.9 && inWidth <= 11.1) {
|
|
33
|
+
// Round up to letter size.
|
|
34
|
+
attrs.layout = LAYOUT.US_LETTER_LANDSCAPE;
|
|
35
|
+
} else if (inWidth >= 8.4 && inWidth <= 8.6) {
|
|
36
|
+
// Round up to letter size.
|
|
37
|
+
attrs.layout = LAYOUT.US_LETTER_PORTRAIT;
|
|
38
|
+
} else if (cmWidth >= 29.5 && cmWidth <= 30.1) {
|
|
39
|
+
attrs.layout = LAYOUT.A4_LANDSCAPE;
|
|
40
|
+
} else if (cmWidth >= 20.5 && cmWidth <= 21.5) {
|
|
41
|
+
attrs.layout = LAYOUT.A4_PORTRAIT;
|
|
42
|
+
} else {
|
|
43
|
+
attrs.width = ptWidth;
|
|
44
|
+
if (pp) {
|
|
45
|
+
attrs.padding = pp;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return attrs;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const DocNodeSpec = {
|
|
54
|
+
attrs: {
|
|
55
|
+
layout: { default: null },
|
|
56
|
+
padding: { default: null },
|
|
57
|
+
width: { default: null },
|
|
58
|
+
// [FS] IRAD-1202 2021-02-15
|
|
59
|
+
// Counter flags for Numbering
|
|
60
|
+
counterFlags: { default: null },
|
|
61
|
+
},
|
|
62
|
+
content: 'block+',
|
|
63
|
+
};
|
|
64
|
+
export default DocNodeSpec;
|