@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,30 +1,30 @@
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(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
4
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
4
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
5
+ 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); } }
6
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
7
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
5
8
  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(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
9
+ 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); }
10
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
7
11
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
8
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
9
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
10
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
11
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
12
+ function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
13
+ 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); }
14
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
15
+ 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; }
16
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
14
17
  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
- import { EditorState } from 'prosemirror-state';
16
- import { TextSelection } from 'prosemirror-state';
18
+ import { EditorState, TextSelection } from 'prosemirror-state';
17
19
  import { Transform } from 'prosemirror-transform';
18
20
  import { EditorView } from 'prosemirror-view';
19
21
  import { MARK_LINK } from './MarkNames.js';
20
22
  import { hideSelectionPlaceholder, showSelectionPlaceholder } from './SelectionPlaceholderPlugin.js';
21
- import { applyMark } from '@modusoperandi/licit-ui-commands';
22
- import { findNodesWithSameMark } from '@modusoperandi/licit-ui-commands';
23
+ import { applyMark, findNodesWithSameMark, createPopUp } from '@modusoperandi/licit-ui-commands';
23
24
  import LinkURLEditor from './ui/LinkURLEditor.js';
24
25
  import { UICommand } from '@modusoperandi/licit-doc-attrs-step';
25
- import { createPopUp } from '@modusoperandi/licit-ui-commands';
26
+ import { INNER_LINK } from './Types.js';
26
27
  var LinkSetURLCommand = /*#__PURE__*/function (_UICommand) {
27
- _inherits(LinkSetURLCommand, _UICommand);
28
28
  function LinkSetURLCommand() {
29
29
  var _this;
30
30
  _classCallCheck(this, LinkSetURLCommand);
@@ -32,8 +32,8 @@ var LinkSetURLCommand = /*#__PURE__*/function (_UICommand) {
32
32
  args[_key] = arguments[_key];
33
33
  }
34
34
  _this = _callSuper(this, LinkSetURLCommand, [].concat(args));
35
- _defineProperty(_assertThisInitialized(_this), "_popUp", null);
36
- _defineProperty(_assertThisInitialized(_this), "isEnabled", function (state) {
35
+ _defineProperty(_this, "_popUp", null);
36
+ _defineProperty(_this, "isEnabled", function (state) {
37
37
  if (!(state.selection instanceof TextSelection)) {
38
38
  // Could be a NodeSelection or CellSelection.
39
39
  return false;
@@ -47,49 +47,124 @@ var LinkSetURLCommand = /*#__PURE__*/function (_UICommand) {
47
47
  to = _state$selection.to;
48
48
  return from < to;
49
49
  });
50
- _defineProperty(_assertThisInitialized(_this), "waitForUserInput", function (state, dispatch, view, event) {
51
- if (_this._popUp) {
52
- return Promise.resolve(undefined);
53
- }
54
- if (dispatch) {
55
- dispatch(showSelectionPlaceholder(state));
56
- }
57
- var doc = state.doc,
58
- schema = state.schema,
59
- selection = state.selection;
60
- var markType = schema.marks[MARK_LINK];
61
- if (!markType) {
62
- return Promise.resolve(undefined);
63
- }
64
- var from = selection.from,
65
- to = selection.to;
66
- var result = findNodesWithSameMark(doc, from, to, markType);
67
- var href = result ? result.mark.attrs.href : null;
68
- return new Promise(function (resolve) {
69
- _this._popUp = createPopUp(LinkURLEditor, {
70
- href: href
71
- }, {
72
- modal: true,
73
- onClose: function onClose(val) {
74
- if (_this._popUp) {
75
- _this._popUp = null;
76
- resolve(val);
77
- }
50
+ _defineProperty(_this, "showTocList", /*#__PURE__*/function () {
51
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(view) {
52
+ var storeTOCvalue, TOCselectedNode, stylePromise, styles;
53
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
54
+ while (1) switch (_context.prev = _context.next) {
55
+ case 0:
56
+ storeTOCvalue = [];
57
+ TOCselectedNode = [];
58
+ stylePromise = view.runtime;
59
+ if (!(stylePromise === null || undefined)) {
60
+ _context.next = 5;
61
+ break;
62
+ }
63
+ return _context.abrupt("return", TOCselectedNode);
64
+ case 5:
65
+ _context.next = 7;
66
+ return stylePromise.fetchStyles();
67
+ case 7:
68
+ styles = _context.sent;
69
+ storeTOCvalue = styles.filter(function (style) {
70
+ return style.styles.toc === true;
71
+ }).map(function (style) {
72
+ return style.styleName;
73
+ });
74
+ view.state.tr.doc.descendants(function (node, pos) {
75
+ if (node.attrs.styleName) {
76
+ for (var i = 0; i <= storeTOCvalue.length; i++) {
77
+ if (storeTOCvalue[i] === node.attrs.styleName) {
78
+ TOCselectedNode.push({
79
+ node_: node,
80
+ pos_: pos
81
+ });
82
+ }
83
+ }
84
+ }
85
+ });
86
+ return _context.abrupt("return", TOCselectedNode);
87
+ case 11:
88
+ case "end":
89
+ return _context.stop();
78
90
  }
79
- });
80
- });
81
- });
82
- _defineProperty(_assertThisInitialized(_this), "executeWithUserInput", function (state, dispatch, view, href) {
91
+ }, _callee);
92
+ }));
93
+ return function (_x) {
94
+ return _ref.apply(this, arguments);
95
+ };
96
+ }());
97
+ _defineProperty(_this, "waitForUserInput", /*#__PURE__*/function () {
98
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(state, dispatch, view, event) {
99
+ var doc, schema, selection, markType, from, to, result, href, tocItemsNode, viewPops;
100
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
101
+ while (1) switch (_context2.prev = _context2.next) {
102
+ case 0:
103
+ if (dispatch) {
104
+ dispatch(showSelectionPlaceholder(state));
105
+ }
106
+ doc = state.doc, schema = state.schema, selection = state.selection;
107
+ markType = schema.marks[MARK_LINK];
108
+ if (markType) {
109
+ _context2.next = 5;
110
+ break;
111
+ }
112
+ return _context2.abrupt("return", Promise.resolve(undefined));
113
+ case 5:
114
+ from = selection.from, to = selection.to;
115
+ result = findNodesWithSameMark(doc, from, to, markType);
116
+ href = result ? result.mark.attrs.href : null;
117
+ _context2.next = 10;
118
+ return _this.showTocList(view);
119
+ case 10:
120
+ tocItemsNode = _context2.sent;
121
+ viewPops = {
122
+ href_: href,
123
+ TOCselectedNode_: tocItemsNode,
124
+ view_: view
125
+ };
126
+ return _context2.abrupt("return", new Promise(function (resolve) {
127
+ _this._popUp = createPopUp(LinkURLEditor, viewPops, {
128
+ modal: true,
129
+ onClose: function onClose(val) {
130
+ if (_this._popUp) {
131
+ resolve(val);
132
+ _this._popUp = null;
133
+ }
134
+ }
135
+ });
136
+ }));
137
+ case 13:
138
+ case "end":
139
+ return _context2.stop();
140
+ }
141
+ }, _callee2);
142
+ }));
143
+ return function (_x2, _x3, _x4, _x5) {
144
+ return _ref2.apply(this, arguments);
145
+ };
146
+ }());
147
+ _defineProperty(_this, "executeWithUserInput", function (state, dispatch, view, url) {
83
148
  if (dispatch) {
84
149
  var selection = state.selection,
85
150
  schema = state.schema;
86
151
  var _tr = state.tr;
87
152
  _tr = view ? hideSelectionPlaceholder(view.state) : _tr;
88
153
  _tr = _tr.setSelection(selection);
89
- if (href !== undefined) {
154
+ if (url !== undefined) {
155
+ var selectionId;
156
+ var href;
157
+ if (url.includes(INNER_LINK)) {
158
+ selectionId = url.split(INNER_LINK)[0];
159
+ href = url.split(INNER_LINK)[1];
160
+ } else {
161
+ selectionId = null;
162
+ href = url;
163
+ }
90
164
  var markType = schema.marks[MARK_LINK];
91
- var attrs = href ? {
92
- href: href
165
+ var attrs = url ? {
166
+ href: href,
167
+ selectionId: selectionId
93
168
  } : null;
94
169
  _tr = applyMark(_tr.setSelection(state.selection), schema, markType, attrs);
95
170
  }
@@ -100,12 +175,7 @@ var LinkSetURLCommand = /*#__PURE__*/function (_UICommand) {
100
175
  });
101
176
  return _this;
102
177
  }
103
- _createClass(LinkSetURLCommand, [{
104
- key: "cancel",
105
- value: function cancel() {
106
- return null;
107
- }
108
- }]);
109
- return LinkSetURLCommand;
178
+ _inherits(LinkSetURLCommand, _UICommand);
179
+ return _createClass(LinkSetURLCommand);
110
180
  }(UICommand);
111
181
  export default LinkSetURLCommand;
@@ -1,117 +1,141 @@
1
- // @flow
2
-
3
- import { EditorState } from 'prosemirror-state';
4
- import { TextSelection } from 'prosemirror-state';
5
- import { Transform } from 'prosemirror-transform';
6
- import { EditorView } from 'prosemirror-view';
7
-
8
- import {
9
- MARK_LINK
10
- } from './MarkNames.js';
11
- import {
12
- hideSelectionPlaceholder,
13
- showSelectionPlaceholder,
14
- } from './SelectionPlaceholderPlugin.js';
15
- import {
16
- applyMark
17
- } from '@modusoperandi/licit-ui-commands';
18
- import {
19
- findNodesWithSameMark
20
- } from '@modusoperandi/licit-ui-commands';
21
- import LinkURLEditor from './ui/LinkURLEditor.js';
22
- import {
23
- UICommand
24
- } from '@modusoperandi/licit-doc-attrs-step';
25
- import {
26
- createPopUp
27
- } from '@modusoperandi/licit-ui-commands';
28
-
29
- class LinkSetURLCommand extends UICommand {
30
- _popUp = null;
31
-
32
- isEnabled = (state: EditorState): boolean => {
33
- if (!(state.selection instanceof TextSelection)) {
34
- // Could be a NodeSelection or CellSelection.
35
- return false;
36
- }
37
-
38
- const markType = state.schema.marks[MARK_LINK];
39
- if (!markType) {
40
- return false;
41
- }
42
- const { from, to } = state.selection;
43
- return from < to;
44
- };
45
-
46
- waitForUserInput = (
47
- state: EditorState,
48
- dispatch: ?(tr: Transform) => void,
49
- view: ?EditorView,
50
- event: ?SyntheticEvent<>
51
- ): Promise<any> => {
52
- if (this._popUp) {
53
- return Promise.resolve(undefined);
54
- }
55
-
56
- if (dispatch) {
57
- dispatch(showSelectionPlaceholder(state));
58
- }
59
-
60
- const { doc, schema, selection } = state;
61
- const markType = schema.marks[MARK_LINK];
62
- if (!markType) {
63
- return Promise.resolve(undefined);
64
- }
65
- const { from, to } = selection;
66
- const result = findNodesWithSameMark(doc, from, to, markType);
67
- const href = result ? result.mark.attrs.href : null;
68
- return new Promise((resolve) => {
69
- this._popUp = createPopUp(
70
- LinkURLEditor,
71
- { href },
72
- {
73
- modal: true,
74
- onClose: (val) => {
75
- if (this._popUp) {
76
- this._popUp = null;
77
- resolve(val);
78
- }
79
- },
80
- }
81
- );
82
- });
83
- };
84
-
85
- executeWithUserInput = (
86
- state: EditorState,
87
- dispatch: ?(tr: Transform) => void,
88
- view: ?EditorView,
89
- href: ?string
90
- ): boolean => {
91
- if (dispatch) {
92
- const { selection, schema } = state;
93
- let { tr } = state;
94
- tr = view ? hideSelectionPlaceholder(view.state) : tr;
95
- tr = tr.setSelection(selection);
96
- if (href !== undefined) {
97
- const markType = schema.marks[MARK_LINK];
98
- const attrs = href ? { href } : null;
99
- tr = applyMark(
100
- tr.setSelection(state.selection),
101
- schema,
102
- markType,
103
- attrs
104
- );
105
- }
106
- dispatch(tr);
107
- }
108
- view && view.focus();
109
- return true;
110
- };
111
-
112
- cancel(): void {
113
- return null;
114
- }
115
- }
116
-
117
- export default LinkSetURLCommand;
1
+ // @flow
2
+
3
+ import { EditorState, TextSelection } from 'prosemirror-state';
4
+ import { Transform } from 'prosemirror-transform';
5
+ import { EditorView } from 'prosemirror-view';
6
+
7
+ import { MARK_LINK } from './MarkNames.js';
8
+ import {
9
+ hideSelectionPlaceholder,
10
+ showSelectionPlaceholder,
11
+ } from './SelectionPlaceholderPlugin.js';
12
+ import {
13
+ applyMark, findNodesWithSameMark, createPopUp
14
+ } from '@modusoperandi/licit-ui-commands';
15
+ import LinkURLEditor from './ui/LinkURLEditor.js';
16
+ import {
17
+ UICommand
18
+ } from '@modusoperandi/licit-doc-attrs-step';
19
+ import { INNER_LINK } from './Types.js';
20
+
21
+ class LinkSetURLCommand extends UICommand {
22
+ _popUp = null;
23
+
24
+ isEnabled = (state: EditorState): boolean => {
25
+ if (!(state.selection instanceof TextSelection)) {
26
+ // Could be a NodeSelection or CellSelection.
27
+ return false;
28
+ }
29
+
30
+ const markType = state.schema.marks[MARK_LINK];
31
+ if (!markType) {
32
+ return false;
33
+ }
34
+ const { from, to } = state.selection;
35
+ return from < to;
36
+ };
37
+
38
+ showTocList = async (view) => {
39
+ let storeTOCvalue = [];
40
+ const TOCselectedNode = [];
41
+
42
+ const stylePromise = view.runtime;
43
+
44
+ if (stylePromise === null || undefined) {
45
+ return TOCselectedNode;
46
+ }
47
+ const styles = await stylePromise.fetchStyles();
48
+
49
+ storeTOCvalue = styles
50
+ .filter((style) => style.styles.toc === true)
51
+ .map((style) => style.styleName);
52
+
53
+ view.state.tr.doc.descendants((node, pos) => {
54
+ if (node.attrs.styleName) {
55
+ for (let i = 0; i <= storeTOCvalue.length; i++) {
56
+ if (storeTOCvalue[i] === node.attrs.styleName) {
57
+ TOCselectedNode.push({ node_: node, pos_: pos });
58
+ }
59
+ }
60
+ }
61
+ });
62
+
63
+ return TOCselectedNode;
64
+ };
65
+
66
+ waitForUserInput = async (
67
+ state: EditorState,
68
+ dispatch: ?(tr: Transform) => void,
69
+ view: ?EditorView,
70
+ event: ?SyntheticEvent<>
71
+ ): Promise<any> => {
72
+ if (dispatch) {
73
+ dispatch(showSelectionPlaceholder(state));
74
+ }
75
+
76
+ const { doc, schema, selection } = state;
77
+ const markType = schema.marks[MARK_LINK];
78
+ if (!markType) {
79
+ return Promise.resolve(undefined);
80
+ }
81
+ const { from, to } = selection;
82
+ const result = findNodesWithSameMark(doc, from, to, markType);
83
+ const href = result ? result.mark.attrs.href : null;
84
+ const tocItemsNode = await this.showTocList(view);
85
+ const viewPops = {
86
+ href_: href,
87
+ TOCselectedNode_: tocItemsNode,
88
+ view_: view,
89
+ };
90
+
91
+ return new Promise((resolve) => {
92
+ this._popUp = createPopUp(LinkURLEditor, viewPops, {
93
+ modal: true,
94
+ onClose: (val) => {
95
+ if (this._popUp) {
96
+ resolve(val);
97
+ this._popUp = null;
98
+ }
99
+ },
100
+ });
101
+ });
102
+ };
103
+
104
+ executeWithUserInput = (
105
+ state: EditorState,
106
+ dispatch: ?(tr: Transform) => void,
107
+ view: ?EditorView,
108
+ url: ?string
109
+ ): boolean => {
110
+ if (dispatch) {
111
+ const { selection, schema } = state;
112
+ let { tr } = state;
113
+ tr = view ? hideSelectionPlaceholder(view.state) : tr;
114
+ tr = tr.setSelection(selection);
115
+ if (url !== undefined) {
116
+ let selectionId;
117
+ let href;
118
+ if (url.includes(INNER_LINK)) {
119
+ selectionId = url.split(INNER_LINK)[0];
120
+ href = url.split(INNER_LINK)[1];
121
+ } else {
122
+ selectionId = null;
123
+ href = url;
124
+ }
125
+ const markType = schema.marks[MARK_LINK];
126
+ const attrs = url ? { href, selectionId } : null;
127
+ tr = applyMark(
128
+ tr.setSelection(state.selection),
129
+ schema,
130
+ markType,
131
+ attrs
132
+ );
133
+ }
134
+ dispatch(tr);
135
+ }
136
+ view && view.focus();
137
+ return true;
138
+ };
139
+ }
140
+
141
+ export default LinkSetURLCommand;