@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.
Files changed (360) hide show
  1. package/BlockquoteInsertNewLineCommand.js +16 -18
  2. package/BlockquoteInsertNewLineCommand.js.flow +76 -77
  3. package/BlockquoteNodeSpec.js +3 -4
  4. package/BlockquoteNodeSpec.js.flow +29 -30
  5. package/BlockquoteToggleCommand.js +16 -17
  6. package/BlockquoteToggleCommand.js.flow +56 -56
  7. package/BookmarkNodeSpec.js +2 -2
  8. package/BookmarkNodeSpec.js.flow +39 -39
  9. package/BulletListNodeSpec.js.flow +61 -61
  10. package/CZIProseMirror.js.flow +90 -90
  11. package/CodeBlockCommand.js +17 -18
  12. package/CodeBlockCommand.js.flow +65 -65
  13. package/CodeBlockNodeSpec.js.flow +24 -24
  14. package/CodeMarkSpec.js.flow +14 -14
  15. package/ContentPlaceholderPlugin.js +20 -21
  16. package/ContentPlaceholderPlugin.js.flow +185 -187
  17. package/CursorPlaceholderPlugin.js +11 -11
  18. package/CursorPlaceholderPlugin.js.flow +115 -115
  19. package/DocLayoutCommand.js +18 -21
  20. package/DocLayoutCommand.js.flow +97 -99
  21. package/DocNodeSpec.js.flow +64 -64
  22. package/EMMarkSpec.js.flow +14 -14
  23. package/EditorCommands.js.flow +126 -126
  24. package/EditorKeyMap.js +0 -1
  25. package/EditorKeyMap.js.flow +185 -187
  26. package/EditorMarks.js +2 -2
  27. package/EditorMarks.js.flow +71 -71
  28. package/EditorNodes.js +2 -3
  29. package/EditorNodes.js.flow +58 -59
  30. package/EditorPageLayoutPlugin.js +10 -10
  31. package/EditorPageLayoutPlugin.js.flow +67 -67
  32. package/EditorPlugins.js.flow +8 -8
  33. package/EditorSchema.js.flow +12 -12
  34. package/EditorState.js.flow +7 -7
  35. package/FontSizeMarkSpec.js.flow +49 -49
  36. package/FontTypeMarkSpec.js +1 -1
  37. package/FontTypeMarkSpec.js.flow +80 -80
  38. package/HTMLMutator.js +6 -7
  39. package/HTMLMutator.js.flow +59 -59
  40. package/HardBreakNodeSpec.js.flow +15 -15
  41. package/HeadingNodeSpec.js +3 -13
  42. package/HeadingNodeSpec.js.flow +42 -52
  43. package/HistoryRedoCommand.js +15 -16
  44. package/HistoryRedoCommand.js.flow +41 -41
  45. package/HistoryUndoCommand.js +15 -16
  46. package/HistoryUndoCommand.js.flow +41 -41
  47. package/HorizontalRuleCommand.js +15 -16
  48. package/HorizontalRuleCommand.js.flow +71 -71
  49. package/HorizontalRuleNodeSpec.js.flow +39 -39
  50. package/ImageUploadPlaceholderPlugin.js +15 -17
  51. package/ImageUploadPlaceholderPlugin.js.flow +190 -192
  52. package/LinkMarkSpec.js +6 -1
  53. package/LinkMarkSpec.js.flow +37 -32
  54. package/LinkSetURLCommand.js +130 -60
  55. package/LinkSetURLCommand.js.flow +141 -117
  56. package/LinkTooltipPlugin.js +122 -34
  57. package/LinkTooltipPlugin.js.flow +261 -190
  58. package/ListItemInsertNewLineCommand.js +16 -18
  59. package/ListItemInsertNewLineCommand.js.flow +76 -77
  60. package/ListItemMergeCommand.js +24 -24
  61. package/ListItemMergeCommand.js.flow +198 -199
  62. package/ListItemNodeSpec.js.flow +52 -52
  63. package/ListSplitCommand.js +15 -16
  64. package/ListSplitCommand.js.flow +54 -54
  65. package/ListToggleCommand.js +19 -20
  66. package/ListToggleCommand.js.flow +99 -99
  67. package/MarkNames.js.flow +18 -18
  68. package/MarksClearCommand.js +17 -18
  69. package/MarksClearCommand.js.flow +65 -65
  70. package/MathEditCommand.js +17 -19
  71. package/MathEditCommand.js.flow +119 -120
  72. package/MathNodeSpec.js.flow +46 -46
  73. package/NodeNames.js.flow +23 -23
  74. package/OrderedListNodeSpec.js +2 -2
  75. package/OrderedListNodeSpec.js.flow +132 -132
  76. package/ParagraphNodeSpec.js +11 -2
  77. package/ParagraphNodeSpec.js.flow +163 -156
  78. package/ParagraphSpacingCommand.js +21 -23
  79. package/ParagraphSpacingCommand.js.flow +139 -144
  80. package/PrintCommand.js +17 -18
  81. package/PrintCommand.js.flow +53 -53
  82. package/SelectionPlaceholderPlugin.js +11 -11
  83. package/SelectionPlaceholderPlugin.js.flow +131 -131
  84. package/SpacerMarkSpec.js +2 -2
  85. package/SpacerMarkSpec.js.flow +47 -47
  86. package/StrikeMarkSpec.js.flow +21 -21
  87. package/StrongMarkSpec.js.flow +25 -25
  88. package/StyleView.js +5 -7
  89. package/StyleView.js.flow +18 -19
  90. package/TableBackgroundColorCommand.js +34 -23
  91. package/TableBackgroundColorCommand.js.flow +80 -75
  92. package/TableBorderColorCommand.js +34 -23
  93. package/TableBorderColorCommand.js.flow +81 -75
  94. package/TableCellColorCommand.js +20 -21
  95. package/TableCellColorCommand.js.flow +74 -75
  96. package/TableCellMenuPlugin.js +19 -19
  97. package/TableCellMenuPlugin.js.flow +130 -132
  98. package/TableInsertCommand.js +19 -22
  99. package/TableInsertCommand.js.flow +118 -120
  100. package/TableMergeCellsCommand.js +19 -19
  101. package/TableMergeCellsCommand.js.flow +113 -112
  102. package/TableNodesSpecs.js +4 -2
  103. package/TableNodesSpecs.js.flow +80 -78
  104. package/TablePlugins.js.flow +14 -14
  105. package/TableResizePlugin.js +20 -20
  106. package/TableResizePlugin.js.flow +631 -631
  107. package/TextColorMarkSpec.js.flow +35 -35
  108. package/TextHighlightMarkSpec.js.flow +38 -38
  109. package/TextInsertTabSpaceCommand.js +15 -16
  110. package/TextInsertTabSpaceCommand.js.flow +106 -106
  111. package/TextNoWrapMarkSpec.js.flow +14 -14
  112. package/TextNodeSpec.js.flow +7 -7
  113. package/TextSelectionMarkSpec.js.flow +24 -24
  114. package/TextSubMarkSpec.js.flow +20 -20
  115. package/TextSuperMarkSpec.js.flow +20 -20
  116. package/TextUnderlineMarkSpec.js.flow +27 -27
  117. package/Types.js +6 -0
  118. package/Types.js.flow +77 -75
  119. package/WebFontLoader.js +6 -7
  120. package/WebFontLoader.js.flow +22 -22
  121. package/blockQuoteInputRule.js.flow +36 -36
  122. package/bom.xml +17223 -25722
  123. package/browser.js.flow +7 -7
  124. package/buildEditorPlugins.js +6 -7
  125. package/buildEditorPlugins.js.flow +49 -49
  126. package/buildInputRules.js +8 -4
  127. package/buildInputRules.js.flow +85 -81
  128. package/client/CollabConnector.js +20 -20
  129. package/client/CollabConnector.js.flow +90 -90
  130. package/client/EditorConnection.js +10 -9
  131. package/client/EditorConnection.js.flow +324 -323
  132. package/client/Licit.js +78 -115
  133. package/client/Licit.js.flow +611 -643
  134. package/client/Licit.test.js +49 -39
  135. package/client/Licit.test.js.flow +104 -98
  136. package/client/Reporter.js +5 -6
  137. package/client/Reporter.js.flow +37 -37
  138. package/client/SimpleConnector.js +5 -5
  139. package/client/SimpleConnector.js.flow +61 -61
  140. package/client/http.js +0 -6
  141. package/client/http.js.flow +62 -70
  142. package/client/licit.css +12 -12
  143. package/client/throttle.js +8 -2
  144. package/client/throttle.js.flow +27 -27
  145. package/convertFromDOMElement.js +2 -4
  146. package/convertFromDOMElement.js.flow +33 -36
  147. package/convertFromHTML.js +2 -3
  148. package/convertFromHTML.js.flow +15 -17
  149. package/convertFromJSON.js +1 -2
  150. package/convertFromJSON.js.flow +55 -56
  151. package/convertToCSSPTValue.js +6 -10
  152. package/convertToCSSPTValue.js.flow +19 -22
  153. package/convertToJSON.js.flow +7 -7
  154. package/createCommand.js +16 -17
  155. package/createCommand.js.flow +62 -62
  156. package/createEditorKeyMap.js +2 -2
  157. package/createEditorKeyMap.js.flow +94 -94
  158. package/createEmptyEditorState.js +2 -3
  159. package/createEmptyEditorState.js.flow +29 -31
  160. package/createTableResizingPlugin.js +6 -6
  161. package/createTableResizingPlugin.js.flow +86 -86
  162. package/findActionableCell.js.flow +74 -74
  163. package/findActiveMark.js +1 -1
  164. package/findActiveMark.js.flow +32 -32
  165. package/hyphenize.js.flow +17 -17
  166. package/index.d.ts +165 -165
  167. package/index.js.flow +10 -10
  168. package/insertTable.js +0 -3
  169. package/insertTable.js.flow +54 -56
  170. package/isEditorStateEmpty.js.flow +32 -32
  171. package/isTableNode.js.flow +15 -15
  172. package/joinDown.js +1 -3
  173. package/joinDown.js.flow +25 -27
  174. package/joinListNode.js.flow +55 -55
  175. package/joinUp.js +1 -3
  176. package/joinUp.js.flow +37 -39
  177. package/keymaps.js.flow +185 -185
  178. package/lookUpElement.js +2 -1
  179. package/lookUpElement.js.flow +14 -14
  180. package/nodeAt.js.flow +12 -12
  181. package/normalizeHTML.js +3 -1
  182. package/normalizeHTML.js.flow +80 -78
  183. package/package.json +162 -156
  184. package/patchAnchorElements.js +1 -1
  185. package/patchAnchorElements.js.flow +38 -38
  186. package/patchBreakElements.js +3 -2
  187. package/patchBreakElements.js.flow +22 -22
  188. package/patchElementInlineStyles.js +1 -1
  189. package/patchElementInlineStyles.js.flow +92 -92
  190. package/patchListElements.js +4 -4
  191. package/patchListElements.js.flow +276 -276
  192. package/patchMathElements.js +5 -7
  193. package/patchMathElements.js.flow +58 -60
  194. package/patchParagraphElements.js.flow +20 -20
  195. package/patchStyleElements.js +1 -1
  196. package/patchStyleElements.js.flow +197 -196
  197. package/patchTableElements.js +2 -3
  198. package/patchTableElements.js.flow +88 -89
  199. package/rebaseDocWithSteps.js.flow +42 -42
  200. package/sanitizeURL.js +1 -1
  201. package/sanitizeURL.js.flow +13 -13
  202. package/splitListItem.js +3 -3
  203. package/splitListItem.js.flow +191 -191
  204. package/styles.css +19 -19
  205. package/styles0.css +29 -29
  206. package/toClosestFontPtSize.js.flow +22 -22
  207. package/toSafeHTMLDocument.js.flow +9 -9
  208. package/toggleBlockquote.js +4 -5
  209. package/toggleBlockquote.js.flow +101 -108
  210. package/toggleCodeBlock.js +6 -6
  211. package/toggleCodeBlock.js.flow +102 -102
  212. package/ui/AlertInfo.js +15 -16
  213. package/ui/AlertInfo.js.flow +64 -64
  214. package/ui/BookmarkNodeView.js +20 -21
  215. package/ui/BookmarkNodeView.js.flow +66 -66
  216. package/ui/CommandButton.js +15 -16
  217. package/ui/CommandButton.js.flow +68 -68
  218. package/ui/CommandMenu.js +19 -20
  219. package/ui/CommandMenu.js.flow +75 -75
  220. package/ui/CommandMenuButton.js +23 -25
  221. package/ui/CommandMenuButton.js.flow +130 -131
  222. package/ui/CustomEditorView.js +20 -20
  223. package/ui/CustomEditorView.js.flow +29 -28
  224. package/ui/CustomMenu.js +11 -12
  225. package/ui/CustomMenu.js.flow +17 -17
  226. package/ui/CustomMenuItem.js +16 -18
  227. package/ui/CustomMenuItem.js.flow +36 -36
  228. package/ui/CustomNodeView.js +29 -19
  229. package/ui/CustomNodeView.js.flow +207 -200
  230. package/ui/CustomRadioButton.js +18 -21
  231. package/ui/CustomRadioButton.js.flow +64 -65
  232. package/ui/DocLayoutEditor.js +18 -20
  233. package/ui/DocLayoutEditor.js.flow +145 -146
  234. package/ui/Editor.js +30 -28
  235. package/ui/Editor.js.flow +287 -288
  236. package/ui/EditorFrameset.js +13 -14
  237. package/ui/EditorFrameset.js.flow +81 -81
  238. package/ui/EditorToolbar.js +36 -42
  239. package/ui/EditorToolbar.js.flow +199 -218
  240. package/ui/EditorToolbarConfig.js +5 -5
  241. package/ui/EditorToolbarConfig.js.flow +164 -164
  242. package/ui/FontSizeCommandMenuButton.js +14 -15
  243. package/ui/FontSizeCommandMenuButton.js.flow +66 -66
  244. package/ui/FontTypeCommandMenuButton.js +15 -17
  245. package/ui/FontTypeCommandMenuButton.js.flow +60 -61
  246. package/ui/Frag.js +11 -12
  247. package/ui/Frag.js.flow +13 -13
  248. package/ui/Icon.js +21 -24
  249. package/ui/Icon.js.flow +89 -89
  250. package/ui/ImageInlineEditor.js +14 -15
  251. package/ui/ImageInlineEditor.js.flow +67 -67
  252. package/ui/KeyCodes.js.flow +12 -12
  253. package/ui/LinkTooltip.js +68 -34
  254. package/ui/LinkTooltip.js.flow +118 -85
  255. package/ui/LinkURLEditor.js +160 -43
  256. package/ui/LinkURLEditor.js.flow +243 -117
  257. package/ui/ListItemNodeView.js +6 -7
  258. package/ui/ListItemNodeView.js.flow +98 -98
  259. package/ui/ListTypeButton.js +23 -27
  260. package/ui/ListTypeButton.js.flow +128 -131
  261. package/ui/ListTypeCommandButton.js +14 -15
  262. package/ui/ListTypeCommandButton.js.flow +85 -85
  263. package/ui/ListTypeMenu.js +21 -22
  264. package/ui/ListTypeMenu.js.flow +70 -70
  265. package/ui/LoadingIndicator.js +11 -12
  266. package/ui/LoadingIndicator.js.flow +20 -20
  267. package/ui/MathEditor.js +17 -22
  268. package/ui/MathEditor.js.flow +72 -78
  269. package/ui/MathInlineEditor.js +20 -21
  270. package/ui/MathInlineEditor.js.flow +101 -102
  271. package/ui/MathNodeView.js +29 -30
  272. package/ui/MathNodeView.js.flow +176 -186
  273. package/ui/PasteMenu.js +19 -23
  274. package/ui/PasteMenu.js.flow +53 -57
  275. package/ui/ResizeObserver.js +1 -1
  276. package/ui/ResizeObserver.js.flow +106 -106
  277. package/ui/RichTextEditor.js +17 -18
  278. package/ui/RichTextEditor.js.flow +133 -133
  279. package/ui/SelectionObserver.js +8 -9
  280. package/ui/SelectionObserver.js.flow +134 -134
  281. package/ui/TableCellMenu.js +14 -15
  282. package/ui/TableCellMenu.js.flow +51 -51
  283. package/ui/TableGridSizeEditor.js +30 -33
  284. package/ui/TableGridSizeEditor.js.flow +187 -184
  285. package/ui/TableNodeView.js +18 -17
  286. package/ui/TableNodeView.js.flow +25 -25
  287. package/ui/bindScrollHandler.js +2 -1
  288. package/ui/bindScrollHandler.js.flow +46 -46
  289. package/ui/canUseCSSFont.js +5 -4
  290. package/ui/canUseCSSFont.js.flow +42 -43
  291. package/ui/czi-body-layout-editor.css +16 -16
  292. package/ui/czi-bookmark-view.css +10 -10
  293. package/ui/czi-cursor-placeholder.css +36 -36
  294. package/ui/czi-custom-menu-button.css +18 -18
  295. package/ui/czi-custom-menu-item.css +30 -30
  296. package/ui/czi-custom-menu.css +8 -8
  297. package/ui/czi-custom-radio-button.css +80 -80
  298. package/ui/czi-custom-scrollbar.css +21 -21
  299. package/ui/czi-editor-frameset.css +81 -81
  300. package/ui/czi-editor-toolbar.css +122 -122
  301. package/ui/czi-editor.css +217 -220
  302. package/ui/czi-form.css +201 -107
  303. package/ui/czi-frag.css +3 -3
  304. package/ui/czi-heading.css +40 -40
  305. package/ui/czi-icon.css +72 -72
  306. package/ui/czi-image-resize-box.css +165 -165
  307. package/ui/czi-image-upload-editor.css +57 -57
  308. package/ui/czi-image-upload-placeholder.css +50 -50
  309. package/ui/czi-image-url-editor.css +38 -38
  310. package/ui/czi-image-view.css +121 -125
  311. package/ui/czi-indent.css +137 -137
  312. package/ui/czi-inline-editor.css +20 -20
  313. package/ui/czi-link-tooltip.css +112 -71
  314. package/ui/czi-list.css +406 -410
  315. package/ui/czi-loading-indicator.css +66 -111
  316. package/ui/czi-math-view.css +62 -62
  317. package/ui/czi-selection-placeholder.css +24 -24
  318. package/ui/czi-table-cell-menu.css +16 -14
  319. package/ui/czi-table-grid-size-editor.css +37 -37
  320. package/ui/czi-table.css +87 -87
  321. package/ui/czi-vars.css +2 -2
  322. package/ui/findActiveFontSize.js +2 -1
  323. package/ui/findActiveFontSize.js.flow +55 -58
  324. package/ui/findActiveFontType.js +4 -3
  325. package/ui/findActiveFontType.js.flow +35 -38
  326. package/ui/fonts.css +460 -460
  327. package/ui/handleEditorDrop.js +1 -1
  328. package/ui/handleEditorDrop.js.flow +28 -28
  329. package/ui/handleEditorKeyDown.js +1 -1
  330. package/ui/handleEditorKeyDown.js.flow +39 -39
  331. package/ui/handleEditorPaste.js +1 -1
  332. package/ui/handleEditorPaste.js.flow +33 -33
  333. package/ui/htmlElementToRect.js.flow +18 -18
  334. package/ui/icon-font.css +9 -9
  335. package/ui/injectStyleSheet.js +2 -2
  336. package/ui/injectStyleSheet.js.flow +40 -42
  337. package/ui/isElementFullyVisible.js +1 -10
  338. package/ui/isElementFullyVisible.js.flow +14 -26
  339. package/ui/isOffline.js.flow +8 -8
  340. package/ui/isReactClass.js.flow +12 -12
  341. package/ui/listType.css +21 -21
  342. package/ui/mathquill-editor/MathQuillEditor.js +27 -30
  343. package/ui/mathquill-editor/MathQuillEditor.js.flow +158 -159
  344. package/ui/mathquill-editor/MathQuillEditorSymbols.js.flow +483 -483
  345. package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +14 -15
  346. package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js.flow +50 -50
  347. package/ui/mathquill-editor/czi-mathquill-editor-symbols-panel.css +39 -39
  348. package/ui/mathquill-editor/czi-mathquill-editor.css +50 -50
  349. package/ui/mathquill-editor/mathquill-import-kludge.js +1 -8
  350. package/ui/mathquill-editor/mathquill-import-kludge.js.flow +17 -24
  351. package/ui/renderLaTeXAsHTML.js +4 -4
  352. package/ui/renderLaTeXAsHTML.js.flow +46 -46
  353. package/ui/resolveImage.js +5 -6
  354. package/ui/resolveImage.js.flow +121 -123
  355. package/ui/toCSSColor.js.flow +51 -51
  356. package/ui/toCSSLineSpacing.js +2 -3
  357. package/ui/toCSSLineSpacing.js.flow +53 -55
  358. package/ui/toHexColor.js.flow +26 -26
  359. package/ui/uuid.js.flow +9 -9
  360. package/uuid.js.flow +9 -9
@@ -1,132 +1,132 @@
1
- // @flow
2
-
3
- import { Node } from 'prosemirror-model';
4
-
5
- import { ATTRIBUTE_LIST_STYLE_TYPE } from './ListItemNodeSpec.js';
6
- import { LIST_ITEM } from './NodeNames.js';
7
- import { ATTRIBUTE_INDENT, MIN_INDENT_LEVEL, RESERVED_STYLE_NONE } from './ParagraphNodeSpec.js';
8
-
9
- import type { NodeSpec } from './Types.js';
10
-
11
- export const ATTRIBUTE_COUNTER_RESET = 'data-counter-reset';
12
- export const ATTRIBUTE_FOLLOWING = 'data-following';
13
- const AUTO_LIST_STYLE_TYPES = ['decimal', 'lower-alpha', 'lower-roman'];
14
-
15
- const OrderedListNodeSpec: NodeSpec = {
16
- attrs: {
17
- id: { default: null },
18
- counterReset: { default: null },
19
- indent: { default: MIN_INDENT_LEVEL },
20
- following: { default: null },
21
- listStyleType: { default: null },
22
- name: { default: null },
23
- start: { default: 1 },
24
- type: { default: 'decimal' },
25
- styleName: { default: RESERVED_STYLE_NONE },
26
- },
27
- group: 'block',
28
- content: LIST_ITEM + '+',
29
- parseDOM: [
30
- {
31
- tag: 'ol',
32
- getAttrs(dom: HTMLElement) {
33
- const listStyleType = dom.getAttribute(ATTRIBUTE_LIST_STYLE_TYPE);
34
- const counterReset =
35
- dom.getAttribute(ATTRIBUTE_COUNTER_RESET) || undefined;
36
-
37
- const start = dom.hasAttribute('start')
38
- ? parseInt(dom.getAttribute('start'), 10)
39
- : 1;
40
-
41
- const indent = dom.hasAttribute(ATTRIBUTE_INDENT)
42
- ? parseInt(dom.getAttribute(ATTRIBUTE_INDENT), 10)
43
- : MIN_INDENT_LEVEL;
44
-
45
- const name = dom.getAttribute('name') || undefined;
46
-
47
- const following = dom.getAttribute(ATTRIBUTE_FOLLOWING) || undefined;
48
- const type = dom.getAttribute('type') || undefined;
49
-
50
- return {
51
- counterReset,
52
- following,
53
- indent,
54
- listStyleType,
55
- name,
56
- start,
57
- type,
58
- };
59
- },
60
- },
61
- ],
62
- toDOM(node: Node) {
63
- const {
64
- start,
65
- indent,
66
- listStyleType,
67
- counterReset,
68
- following,
69
- name,
70
- type,
71
- } = node.attrs;
72
- const attrs: Object = {
73
- [ATTRIBUTE_INDENT]: indent,
74
- };
75
-
76
- if (counterReset === 'none') {
77
- attrs[ATTRIBUTE_COUNTER_RESET] = counterReset;
78
- }
79
-
80
- if (following) {
81
- attrs[ATTRIBUTE_FOLLOWING] = following;
82
- }
83
-
84
- if (listStyleType) {
85
- attrs[ATTRIBUTE_LIST_STYLE_TYPE] = listStyleType;
86
- }
87
-
88
- if (start !== 1) {
89
- attrs.start = start;
90
- }
91
-
92
- if (name) {
93
- attrs.name = name;
94
- }
95
- let htmlListStyleType = listStyleType;
96
-
97
- if (!htmlListStyleType || htmlListStyleType === 'decimal') {
98
- htmlListStyleType =
99
- AUTO_LIST_STYLE_TYPES[indent % AUTO_LIST_STYLE_TYPES.length];
100
- }
101
-
102
- const cssCounterName = `czi-counter-${indent}`;
103
- if ('x.x.x' === type) {
104
- if (RESERVED_STYLE_NONE !== node.attrs.styleName) {
105
- attrs.style = buildStyleClass(indent, node.attrs.start);
106
- } else {
107
- attrs.style =
108
- `--czi-counter-name: ${cssCounterName};` +
109
- `--czi-counter-reset: ${following ? 'none' : start - 1};` +
110
- `--czi-list-style-type: ${htmlListStyleType}`;
111
- }
112
- } else {
113
- attrs.style =
114
- `--czi-counter-name: ${cssCounterName};` +
115
- `--czi-counter-reset: ${following ? 'none' : start - 1};` +
116
- `--czi-list-style-type: ${htmlListStyleType}`;
117
- }
118
- attrs.type = type;
119
-
120
- return ['ol', attrs, 0];
121
- },
122
- };
123
-
124
- function buildStyleClass(indent, start) {
125
- const cssCounterName = `czi-counter-${indent}`;
126
- let cssCounterReset = `czi-counter-${indent} ${start - 1} `;
127
- for (let index = 0; index < indent; index++) {
128
- cssCounterReset += `czi-counter-${index} 1 `;
129
- }
130
- return `--czi-counter-name: ${cssCounterName}; counter-reset: ${cssCounterReset};`;
131
- }
132
- export default OrderedListNodeSpec;
1
+ // @flow
2
+
3
+ import { Node } from 'prosemirror-model';
4
+
5
+ import { ATTRIBUTE_LIST_STYLE_TYPE } from './ListItemNodeSpec.js';
6
+ import { LIST_ITEM } from './NodeNames.js';
7
+ import { ATTRIBUTE_INDENT, MIN_INDENT_LEVEL, RESERVED_STYLE_NONE } from './ParagraphNodeSpec.js';
8
+
9
+ import type { NodeSpec } from './Types.js';
10
+
11
+ export const ATTRIBUTE_COUNTER_RESET = 'data-counter-reset';
12
+ export const ATTRIBUTE_FOLLOWING = 'data-following';
13
+ const AUTO_LIST_STYLE_TYPES = ['decimal', 'lower-alpha', 'lower-roman'];
14
+
15
+ const OrderedListNodeSpec: NodeSpec = {
16
+ attrs: {
17
+ id: { default: null },
18
+ counterReset: { default: null },
19
+ indent: { default: MIN_INDENT_LEVEL },
20
+ following: { default: null },
21
+ listStyleType: { default: null },
22
+ name: { default: null },
23
+ start: { default: 1 },
24
+ type: { default: 'decimal' },
25
+ styleName: { default: RESERVED_STYLE_NONE },
26
+ },
27
+ group: 'block',
28
+ content: LIST_ITEM + '+',
29
+ parseDOM: [
30
+ {
31
+ tag: 'ol',
32
+ getAttrs(dom: HTMLElement) {
33
+ const listStyleType = dom.getAttribute(ATTRIBUTE_LIST_STYLE_TYPE);
34
+ const counterReset =
35
+ dom.getAttribute(ATTRIBUTE_COUNTER_RESET) || undefined;
36
+
37
+ const start = dom.hasAttribute('start')
38
+ ? parseInt(dom.getAttribute('start'), 10)
39
+ : 1;
40
+
41
+ const indent = dom.hasAttribute(ATTRIBUTE_INDENT)
42
+ ? parseInt(dom.getAttribute(ATTRIBUTE_INDENT), 10)
43
+ : MIN_INDENT_LEVEL;
44
+
45
+ const name = dom.getAttribute('name') || undefined;
46
+
47
+ const following = dom.getAttribute(ATTRIBUTE_FOLLOWING) || undefined;
48
+ const type = dom.getAttribute('type') || undefined;
49
+
50
+ return {
51
+ counterReset,
52
+ following,
53
+ indent,
54
+ listStyleType,
55
+ name,
56
+ start,
57
+ type,
58
+ };
59
+ },
60
+ },
61
+ ],
62
+ toDOM(node: Node) {
63
+ const {
64
+ start,
65
+ indent,
66
+ listStyleType,
67
+ counterReset,
68
+ following,
69
+ name,
70
+ type,
71
+ } = node.attrs;
72
+ const attrs: Object = {
73
+ [ATTRIBUTE_INDENT]: indent,
74
+ };
75
+
76
+ if (counterReset === 'none') {
77
+ attrs[ATTRIBUTE_COUNTER_RESET] = counterReset;
78
+ }
79
+
80
+ if (following) {
81
+ attrs[ATTRIBUTE_FOLLOWING] = following;
82
+ }
83
+
84
+ if (listStyleType) {
85
+ attrs[ATTRIBUTE_LIST_STYLE_TYPE] = listStyleType;
86
+ }
87
+
88
+ if (start !== 1) {
89
+ attrs.start = start;
90
+ }
91
+
92
+ if (name) {
93
+ attrs.name = name;
94
+ }
95
+ let htmlListStyleType = listStyleType;
96
+
97
+ if (!htmlListStyleType || htmlListStyleType === 'decimal') {
98
+ htmlListStyleType =
99
+ AUTO_LIST_STYLE_TYPES[indent % AUTO_LIST_STYLE_TYPES.length];
100
+ }
101
+
102
+ const cssCounterName = `czi-counter-${indent}`;
103
+ if ('x.x.x' === type) {
104
+ if (RESERVED_STYLE_NONE !== node.attrs.styleName) {
105
+ attrs.style = buildStyleClass(indent, node.attrs.start);
106
+ } else {
107
+ attrs.style =
108
+ `--czi-counter-name: ${cssCounterName};` +
109
+ `--czi-counter-reset: ${following ? 'none' : start - 1};` +
110
+ `--czi-list-style-type: ${htmlListStyleType}`;
111
+ }
112
+ } else {
113
+ attrs.style =
114
+ `--czi-counter-name: ${cssCounterName};` +
115
+ `--czi-counter-reset: ${following ? 'none' : start - 1};` +
116
+ `--czi-list-style-type: ${htmlListStyleType}`;
117
+ }
118
+ attrs.type = type;
119
+
120
+ return ['ol', attrs, 0];
121
+ },
122
+ };
123
+
124
+ function buildStyleClass(indent, start) {
125
+ const cssCounterName = `czi-counter-${indent}`;
126
+ let cssCounterReset = `czi-counter-${indent} ${start - 1} `;
127
+ for (let index = 0; index < indent; index++) {
128
+ cssCounterReset += `czi-counter-${index} 1 `;
129
+ }
130
+ return `--czi-counter-name: ${cssCounterName}; counter-reset: ${cssCounterReset};`;
131
+ }
132
+ export default OrderedListNodeSpec;
@@ -40,6 +40,9 @@ var ParagraphNodeSpec = {
40
40
  // TODO: Add UI to let user edit / clear padding.
41
41
  paddingTop: {
42
42
  "default": null
43
+ },
44
+ innerLink: {
45
+ "default": null
43
46
  }
44
47
  },
45
48
  content: 'inline*',
@@ -66,13 +69,15 @@ function getAttrs(dom) {
66
69
  indent = indent || MIN_INDENT_LEVEL;
67
70
  var lineSpacing = lineHeight ? toCSSLineSpacing(lineHeight) : null;
68
71
  var id = dom.getAttribute('id') || '';
72
+ var innerLink = dom.getAttribute('innerLink') || '';
69
73
  return {
70
74
  align: align,
71
75
  indent: indent,
72
76
  lineSpacing: lineSpacing,
73
77
  paddingTop: paddingTop,
74
78
  paddingBottom: paddingBottom,
75
- id: id
79
+ id: id,
80
+ innerLink: innerLink
76
81
  };
77
82
  }
78
83
  function getStyle(attrs) {
@@ -102,7 +107,8 @@ function getStyleEx(align, lineSpacing, paddingTop, paddingBottom) {
102
107
  function toDOM(node) {
103
108
  var _node$attrs = node.attrs,
104
109
  indent = _node$attrs.indent,
105
- id = _node$attrs.id;
110
+ id = _node$attrs.id,
111
+ innerLink = _node$attrs.innerLink;
106
112
  var attrs = {};
107
113
  var _getStyle = getStyle(node.attrs),
108
114
  style = _getStyle.style;
@@ -113,6 +119,9 @@ function toDOM(node) {
113
119
  if (id) {
114
120
  attrs.id = id;
115
121
  }
122
+ if (innerLink) {
123
+ attrs.innerLink = innerLink;
124
+ }
116
125
  return ['p', attrs, 0];
117
126
  }
118
127
  export var toParagraphDOM = toDOM;
@@ -1,156 +1,163 @@
1
- // @flow
2
-
3
- import convertToCSSPTValue from './convertToCSSPTValue.js';
4
- import toCSSLineSpacing from './ui/toCSSLineSpacing.js';
5
- import { Node } from 'prosemirror-model';
6
-
7
- import type { NodeSpec } from './Types.js';
8
-
9
- // This assumes that every 36pt maps to one indent level.
10
- export const INDENT_MARGIN_PT_SIZE = 36;
11
- export const MIN_INDENT_LEVEL = 0;
12
- export const MAX_INDENT_LEVEL = 7;
13
- export const ATTRIBUTE_INDENT = 'data-indent';
14
- export const ATTRIBUTE_STYLE_LEVEL = 'data-style-level';
15
- export const RESERVED_STYLE_NONE = 'None';
16
- export const RESERVED_STYLE_NONE_NUMBERING = RESERVED_STYLE_NONE + '-@#$-';
17
- const cssVal = new Set(['', '0%', '0pt', '0px']);
18
-
19
- export const EMPTY_CSS_VALUE = cssVal;
20
-
21
- const ALIGN_PATTERN = /(left|right|center|justify)/;
22
-
23
- // https://github.com/ProseMirror/prosemirror-schema-basic/blob/master/src/schema-basic.js
24
- // :: NodeSpec A plain paragraph textblock. Represented in the DOM
25
- // as a `<p>` element.
26
- const ParagraphNodeSpec: NodeSpec = {
27
- attrs: {
28
- align: {
29
- default: null,
30
- },
31
- color: {
32
- default: null,
33
- },
34
- id: {
35
- default: null,
36
- },
37
- indent: {
38
- default: null,
39
- },
40
- lineSpacing: {
41
- default: null,
42
- },
43
- // TODO: Add UI to let user edit / clear padding.
44
- paddingBottom: {
45
- default: null,
46
- },
47
- // TODO: Add UI to let user edit / clear padding.
48
- paddingTop: {
49
- default: null,
50
- },
51
- },
52
- content: 'inline*',
53
- group: 'block',
54
- parseDOM: [
55
- {
56
- tag: 'p',
57
- getAttrs,
58
- },
59
- ],
60
- toDOM,
61
- };
62
-
63
- function getAttrs(dom: HTMLElement): Object {
64
- const {
65
- lineHeight,
66
- textAlign,
67
- marginLeft,
68
- paddingTop,
69
- paddingBottom,
70
- } = dom.style;
71
-
72
- let align = dom.getAttribute('align') || textAlign || '';
73
- align = ALIGN_PATTERN.test(align) ? align : null;
74
-
75
- let indent = parseInt(dom.getAttribute(ATTRIBUTE_INDENT), 10);
76
-
77
- if (!indent && marginLeft) {
78
- indent = convertMarginLeftToIndentValue(marginLeft);
79
- }
80
-
81
- indent = indent || MIN_INDENT_LEVEL;
82
-
83
- const lineSpacing = lineHeight ? toCSSLineSpacing(lineHeight) : null;
84
-
85
- const id = dom.getAttribute('id') || '';
86
- return {
87
- align,
88
- indent,
89
- lineSpacing,
90
- paddingTop,
91
- paddingBottom,
92
- id,
93
- };
94
- }
95
-
96
- function getStyle(attrs: Object) {
97
- return getStyleEx(
98
- attrs.align,
99
- attrs.lineSpacing,
100
- attrs.paddingTop,
101
- attrs.paddingBottom,
102
- );
103
- }
104
-
105
- function getStyleEx(align, lineSpacing, paddingTop, paddingBottom) {
106
- let style = '';
107
- if (align && align !== 'left') {
108
- style += `text-align: ${align};`;
109
- }
110
-
111
- if (lineSpacing) {
112
- const cssLineSpacing = toCSSLineSpacing(lineSpacing);
113
- style +=
114
- `line-height: ${cssLineSpacing};` +
115
- // This creates the local css variable `--czi-content-line-height`
116
- // that its children may apply.
117
- `--czi-content-line-height: ${cssLineSpacing};`;
118
- }
119
-
120
- if (paddingTop && !EMPTY_CSS_VALUE.has(paddingTop)) {
121
- style += `padding-top: ${paddingTop};`;
122
- }
123
- if (paddingBottom && !EMPTY_CSS_VALUE.has(paddingBottom)) {
124
- style += `padding-bottom: ${paddingBottom};`;
125
- }
126
- return { style };
127
-
128
- }
129
-
130
- function toDOM(node: Node): Array<any> {
131
- const { indent, id } = node.attrs;
132
- const attrs = {};
133
- const { style } = getStyle(node.attrs);
134
-
135
- style && (attrs.style = style);
136
-
137
- if (indent) {
138
- attrs[ATTRIBUTE_INDENT] = String(indent);
139
- }
140
- if (id) {
141
- attrs.id = id;
142
- }
143
-
144
- return ['p', attrs, 0];
145
- }
146
-
147
- export const toParagraphDOM = toDOM;
148
- export const getParagraphNodeAttrs = getAttrs;
149
- export const getParagraphStyle = getStyle;
150
-
151
- export function convertMarginLeftToIndentValue(marginLeft: string): number {
152
- const ptValue = convertToCSSPTValue(marginLeft);
153
- return Math.min(Math.max(Math.floor(ptValue / INDENT_MARGIN_PT_SIZE), MIN_INDENT_LEVEL), MAX_INDENT_LEVEL);
154
- }
155
-
156
- export default ParagraphNodeSpec;
1
+ // @flow
2
+
3
+ import convertToCSSPTValue from './convertToCSSPTValue.js';
4
+ import toCSSLineSpacing from './ui/toCSSLineSpacing.js';
5
+ import { Node } from 'prosemirror-model';
6
+
7
+ import type { NodeSpec } from './Types.js';
8
+
9
+ // This assumes that every 36pt maps to one indent level.
10
+ export const INDENT_MARGIN_PT_SIZE = 36;
11
+ export const MIN_INDENT_LEVEL = 0;
12
+ export const MAX_INDENT_LEVEL = 7;
13
+ export const ATTRIBUTE_INDENT = 'data-indent';
14
+ export const ATTRIBUTE_STYLE_LEVEL = 'data-style-level';
15
+ export const RESERVED_STYLE_NONE = 'None';
16
+ export const RESERVED_STYLE_NONE_NUMBERING = RESERVED_STYLE_NONE + '-@#$-';
17
+ const cssVal = new Set(['', '0%', '0pt', '0px']);
18
+
19
+ export const EMPTY_CSS_VALUE = cssVal;
20
+
21
+ const ALIGN_PATTERN = /(left|right|center|justify)/;
22
+
23
+ // https://github.com/ProseMirror/prosemirror-schema-basic/blob/master/src/schema-basic.js
24
+ // :: NodeSpec A plain paragraph textblock. Represented in the DOM
25
+ // as a `<p>` element.
26
+ const ParagraphNodeSpec: NodeSpec = {
27
+ attrs: {
28
+ align: {
29
+ default: null,
30
+ },
31
+ color: {
32
+ default: null,
33
+ },
34
+ id: {
35
+ default: null,
36
+ },
37
+ indent: {
38
+ default: null,
39
+ },
40
+ lineSpacing: {
41
+ default: null,
42
+ },
43
+ // TODO: Add UI to let user edit / clear padding.
44
+ paddingBottom: {
45
+ default: null,
46
+ },
47
+ // TODO: Add UI to let user edit / clear padding.
48
+ paddingTop: {
49
+ default: null,
50
+ },
51
+ innerLink: {
52
+ default: null,
53
+ },
54
+ },
55
+ content: 'inline*',
56
+ group: 'block',
57
+ parseDOM: [
58
+ {
59
+ tag: 'p',
60
+ getAttrs,
61
+ },
62
+ ],
63
+ toDOM,
64
+ };
65
+
66
+ function getAttrs(dom: HTMLElement): Object {
67
+ const {
68
+ lineHeight,
69
+ textAlign,
70
+ marginLeft,
71
+ paddingTop,
72
+ paddingBottom,
73
+ } = dom.style;
74
+
75
+ let align = dom.getAttribute('align') || textAlign || '';
76
+ align = ALIGN_PATTERN.test(align) ? align : null;
77
+
78
+ let indent = parseInt(dom.getAttribute(ATTRIBUTE_INDENT), 10);
79
+
80
+ if (!indent && marginLeft) {
81
+ indent = convertMarginLeftToIndentValue(marginLeft);
82
+ }
83
+
84
+ indent = indent || MIN_INDENT_LEVEL;
85
+
86
+ const lineSpacing = lineHeight ? toCSSLineSpacing(lineHeight) : null;
87
+
88
+ const id = dom.getAttribute('id') || '';
89
+ const innerLink = dom.getAttribute('innerLink') || '';
90
+ return {
91
+ align,
92
+ indent,
93
+ lineSpacing,
94
+ paddingTop,
95
+ paddingBottom,
96
+ id,
97
+ innerLink,
98
+ };
99
+ }
100
+
101
+ function getStyle(attrs: Object) {
102
+ return getStyleEx(
103
+ attrs.align,
104
+ attrs.lineSpacing,
105
+ attrs.paddingTop,
106
+ attrs.paddingBottom,
107
+ );
108
+ }
109
+
110
+ function getStyleEx(align, lineSpacing, paddingTop, paddingBottom) {
111
+ let style = '';
112
+ if (align && align !== 'left') {
113
+ style += `text-align: ${align};`;
114
+ }
115
+
116
+ if (lineSpacing) {
117
+ const cssLineSpacing = toCSSLineSpacing(lineSpacing);
118
+ style +=
119
+ `line-height: ${cssLineSpacing};` +
120
+ // This creates the local css variable `--czi-content-line-height`
121
+ // that its children may apply.
122
+ `--czi-content-line-height: ${cssLineSpacing};`;
123
+ }
124
+
125
+ if (paddingTop && !EMPTY_CSS_VALUE.has(paddingTop)) {
126
+ style += `padding-top: ${paddingTop};`;
127
+ }
128
+ if (paddingBottom && !EMPTY_CSS_VALUE.has(paddingBottom)) {
129
+ style += `padding-bottom: ${paddingBottom};`;
130
+ }
131
+ return { style };
132
+
133
+ }
134
+
135
+ function toDOM(node: Node): Array<any> {
136
+ const { indent, id, innerLink } = node.attrs;
137
+ const attrs = {};
138
+ const { style } = getStyle(node.attrs);
139
+
140
+ style && (attrs.style = style);
141
+
142
+ if (indent) {
143
+ attrs[ATTRIBUTE_INDENT] = String(indent);
144
+ }
145
+ if (id) {
146
+ attrs.id = id;
147
+ }
148
+ if (innerLink) {
149
+ attrs.innerLink = innerLink;
150
+ }
151
+ return ['p', attrs, 0];
152
+ }
153
+
154
+ export const toParagraphDOM = toDOM;
155
+ export const getParagraphNodeAttrs = getAttrs;
156
+ export const getParagraphStyle = getStyle;
157
+
158
+ export function convertMarginLeftToIndentValue(marginLeft: string): number {
159
+ const ptValue = convertToCSSPTValue(marginLeft);
160
+ return Math.min(Math.max(Math.floor(ptValue / INDENT_MARGIN_PT_SIZE), MIN_INDENT_LEVEL), MAX_INDENT_LEVEL);
161
+ }
162
+
163
+ export default ParagraphNodeSpec;