@modusoperandi/licit 0.1.9 → 0.13.2

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 (340) hide show
  1. package/.github/workflows/build.yml +1 -7
  2. package/.github/workflows/lint.yml +1 -1
  3. package/README.md +1 -1
  4. package/babel.config.json +54 -0
  5. package/dist/BlockquoteNodeSpec.js +2 -2
  6. package/dist/CZIProseMirror.js +4 -4
  7. package/dist/CodeBlockCommand.js +2 -2
  8. package/dist/CodeBlockCommand.js.flow +1 -1
  9. package/dist/CursorPlaceholderPlugin.js +2 -2
  10. package/dist/DocLayoutCommand.js +2 -4
  11. package/dist/DocLayoutCommand.js.flow +1 -1
  12. package/dist/DocNodeSpec.js +1 -1
  13. package/dist/EditorCommands.js +23 -35
  14. package/dist/EditorCommands.js.flow +7 -7
  15. package/dist/EditorKeyMap.js +3 -3
  16. package/dist/FontTypeMarkSpec.js +1 -1
  17. package/dist/HeadingNodeSpec.js +2 -2
  18. package/dist/ImageSourceCommand.js +2 -4
  19. package/dist/ImageSourceCommand.js.flow +1 -1
  20. package/dist/ImageUploadPlaceholderPlugin.js +1 -1
  21. package/dist/LinkSetURLCommand.js +4 -8
  22. package/dist/LinkSetURLCommand.js.flow +3 -3
  23. package/dist/LinkTooltipPlugin.js +9 -15
  24. package/dist/LinkTooltipPlugin.js.flow +5 -5
  25. package/dist/ListToggleCommand.js +5 -11
  26. package/dist/ListToggleCommand.js.flow +3 -3
  27. package/dist/MarkNames.js +1 -1
  28. package/dist/MarksClearCommand.js +3 -3
  29. package/dist/MarksClearCommand.js.flow +1 -1
  30. package/dist/MathEditCommand.js +2 -2
  31. package/dist/MathEditCommand.js.flow +1 -1
  32. package/dist/ParagraphNodeSpec.js +3 -4
  33. package/dist/ParagraphNodeSpec.js.flow +2 -6
  34. package/dist/ParagraphSpacingCommand.js +3 -3
  35. package/dist/SelectionPlaceholderPlugin.js +2 -2
  36. package/dist/SpacerMarkSpec.js +1 -1
  37. package/dist/TableBackgroundColorCommand.js +3 -7
  38. package/dist/TableBackgroundColorCommand.js.flow +3 -3
  39. package/dist/TableBorderColorCommand.js +3 -7
  40. package/dist/TableBorderColorCommand.js.flow +3 -3
  41. package/dist/TableCellColorCommand.js +3 -7
  42. package/dist/TableCellColorCommand.js.flow +3 -3
  43. package/dist/TableCellMenuPlugin.js +4 -6
  44. package/dist/TableCellMenuPlugin.js.flow +3 -3
  45. package/dist/TableInsertCommand.js +3 -5
  46. package/dist/TableInsertCommand.js.flow +2 -2
  47. package/dist/TableResizePlugin.js +2 -2
  48. package/dist/TextInsertTabSpaceCommand.js +2 -4
  49. package/dist/TextInsertTabSpaceCommand.js.flow +1 -1
  50. package/dist/Types.js +1 -1
  51. package/dist/bom.xml +4970 -4167
  52. package/dist/client/CollabConnector.js +17 -2
  53. package/dist/client/CollabConnector.js.flow +17 -2
  54. package/dist/client/EditorConnection.js +15 -4
  55. package/dist/client/EditorConnection.js.flow +14 -3
  56. package/dist/client/Licit.js +73 -58
  57. package/dist/client/Licit.js.flow +101 -85
  58. package/dist/client/Licit.test.js +18 -17
  59. package/dist/client/Licit.test.js.flow +13 -11
  60. package/dist/client/SimpleConnector.js +4 -2
  61. package/dist/client/SimpleConnector.js.flow +3 -1
  62. package/dist/client/http.js +3 -3
  63. package/dist/convertToCSSPTValue.js +1 -1
  64. package/dist/createEmptyEditorState.js +1 -1
  65. package/dist/index.js +16 -16
  66. package/dist/joinListNode.js +2 -2
  67. package/dist/joinListNode.js.flow +1 -1
  68. package/dist/keymaps.js +2 -2
  69. package/dist/patchStyleElements.js +3 -3
  70. package/dist/patchStyleElements.js.flow +1 -1
  71. package/dist/splitListItem.js +2 -2
  72. package/dist/styles.css +2 -2
  73. package/dist/styles0.css +3 -3
  74. package/dist/toggleBlockquote.js +6 -14
  75. package/dist/toggleBlockquote.js.flow +4 -4
  76. package/dist/toggleCodeBlock.js +4 -10
  77. package/dist/toggleCodeBlock.js.flow +3 -3
  78. package/dist/ui/AlertInfo.js +2 -2
  79. package/dist/ui/CommandButton.js +2 -4
  80. package/dist/ui/CommandButton.js.flow +1 -1
  81. package/dist/ui/CommandMenuButton.js +5 -7
  82. package/dist/ui/CommandMenuButton.js.flow +2 -2
  83. package/dist/ui/CustomMenuItem.js +3 -5
  84. package/dist/ui/CustomMenuItem.js.flow +1 -1
  85. package/dist/ui/CustomNodeView.js +3 -3
  86. package/dist/ui/CustomRadioButton.js +8 -6
  87. package/dist/ui/CustomRadioButton.js.flow +3 -3
  88. package/dist/ui/DocLayoutEditor.js +5 -7
  89. package/dist/ui/DocLayoutEditor.js.flow +2 -2
  90. package/dist/ui/Editor.js +1 -2
  91. package/dist/ui/Editor.js.flow +1 -2
  92. package/dist/ui/EditorFrameset.js +1 -1
  93. package/dist/ui/EditorToolbar.js +4 -4
  94. package/dist/ui/EditorToolbar.js.flow +1 -1
  95. package/dist/ui/EditorToolbarConfig.js +1 -1
  96. package/dist/ui/FontSizeCommandMenuButton.js +3 -3
  97. package/dist/ui/FontSizeCommandMenuButton.js.flow +1 -1
  98. package/dist/ui/FontTypeCommandMenuButton.js +3 -3
  99. package/dist/ui/FontTypeCommandMenuButton.js.flow +1 -1
  100. package/dist/ui/ImageAlignEditor.js +5 -5
  101. package/dist/ui/ImageAlignEditor.js.flow +1 -1
  102. package/dist/ui/ImageInlineEditor.js +5 -5
  103. package/dist/ui/ImageInlineEditor.js.flow +1 -1
  104. package/dist/ui/ImageNodeView.js +5 -7
  105. package/dist/ui/ImageNodeView.js.flow +2 -2
  106. package/dist/ui/ImageResizeBox.js +4 -4
  107. package/dist/ui/ImageResizeBox.js.flow +1 -1
  108. package/dist/ui/ImageURLEditor.js +6 -8
  109. package/dist/ui/ImageURLEditor.js.flow +2 -2
  110. package/dist/ui/ImageUploadEditor.js +3 -5
  111. package/dist/ui/ImageUploadEditor.js.flow +2 -2
  112. package/dist/ui/LinkTooltip.js +4 -4
  113. package/dist/ui/LinkTooltip.js.flow +1 -1
  114. package/dist/ui/LinkURLEditor.js +4 -6
  115. package/dist/ui/LinkURLEditor.js.flow +2 -2
  116. package/dist/ui/ListTypeButton.js +5 -7
  117. package/dist/ui/ListTypeButton.js.flow +2 -2
  118. package/dist/ui/MathEditor.js +4 -6
  119. package/dist/ui/MathEditor.js.flow +2 -2
  120. package/dist/ui/MathInlineEditor.js +7 -9
  121. package/dist/ui/MathInlineEditor.js.flow +2 -2
  122. package/dist/ui/MathNodeView.js +5 -7
  123. package/dist/ui/MathNodeView.js.flow +2 -2
  124. package/dist/ui/ResizeObserver.js +1 -1
  125. package/dist/ui/TableGridSizeEditor.js +7 -9
  126. package/dist/ui/TableGridSizeEditor.js.flow +2 -2
  127. package/dist/ui/czi-link-tooltip.css +1 -1
  128. package/dist/ui/czi-vars.css +1 -45
  129. package/dist/ui/findActiveFontType.js +1 -1
  130. package/dist/ui/htmlElementToRect.js +1 -1
  131. package/dist/ui/isElementFullyVisible.js +2 -2
  132. package/dist/ui/isElementFullyVisible.js.flow +1 -1
  133. package/dist/ui/mathquill-editor/MathQuillEditorSymbols.js +1 -1
  134. package/dist/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +2 -2
  135. package/dist/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js.flow +1 -1
  136. package/dist/ui/resolveImage.js +3 -3
  137. package/dist/ui/toCSSColor.js +1 -1
  138. package/dist/ui/toCSSLineSpacing.js +1 -36
  139. package/dist/ui/toCSSLineSpacing.js.flow +0 -27
  140. package/flow-typed/@modusoperandilicit-ui-commands.js +5 -0
  141. package/jest.config.js +207 -0
  142. package/lint.sh +0 -0
  143. package/node_modules/prosemirror-utils/LICENSE +13 -0
  144. package/{dist/ui/PopUpTypes.js.flow → node_modules/prosemirror-utils/README.md} +0 -0
  145. package/node_modules/prosemirror-utils/dist/helpers.js +119 -0
  146. package/node_modules/prosemirror-utils/dist/index.js +17 -0
  147. package/node_modules/prosemirror-utils/dist/index.js.map +1 -0
  148. package/node_modules/prosemirror-utils/dist/node.js +106 -0
  149. package/node_modules/prosemirror-utils/dist/selection.js +168 -0
  150. package/node_modules/prosemirror-utils/dist/transforms.js +257 -0
  151. package/node_modules/prosemirror-utils/package.json +81 -0
  152. package/node_modules/prosemirror-utils/typings.d.ts +79 -0
  153. package/package.json +14 -8
  154. package/scripts/build_bin.py +0 -0
  155. package/scripts/ci_check_dist.sh +0 -0
  156. package/src/CodeBlockCommand.js +1 -1
  157. package/src/DocLayoutCommand.js +1 -1
  158. package/src/EditorCommands.js +7 -7
  159. package/src/ImageSourceCommand.js +1 -1
  160. package/src/LinkSetURLCommand.js +3 -3
  161. package/src/LinkTooltipPlugin.js +5 -5
  162. package/src/ListToggleCommand.js +3 -3
  163. package/src/MarksClearCommand.js +1 -1
  164. package/src/MathEditCommand.js +1 -1
  165. package/src/ParagraphNodeSpec.js +2 -6
  166. package/src/TableBackgroundColorCommand.js +3 -3
  167. package/src/TableBorderColorCommand.js +3 -3
  168. package/src/TableCellColorCommand.js +3 -3
  169. package/src/TableCellMenuPlugin.js +3 -3
  170. package/src/TableInsertCommand.js +2 -2
  171. package/src/TextInsertTabSpaceCommand.js +1 -1
  172. package/src/client/CollabConnector.js +17 -2
  173. package/src/client/EditorConnection.js +14 -3
  174. package/src/client/Licit.js +101 -85
  175. package/src/client/Licit.test.js +13 -11
  176. package/src/client/SimpleConnector.js +3 -1
  177. package/src/joinListNode.js +1 -1
  178. package/src/patchStyleElements.js +1 -1
  179. package/src/styles.css +2 -2
  180. package/src/styles0.css +3 -3
  181. package/src/toggleBlockquote.js +4 -4
  182. package/src/toggleCodeBlock.js +3 -3
  183. package/src/ui/CommandButton.js +1 -1
  184. package/src/ui/CommandMenuButton.js +2 -2
  185. package/src/ui/CustomMenuItem.js +1 -1
  186. package/src/ui/CustomRadioButton.js +3 -3
  187. package/src/ui/DocLayoutEditor.js +2 -2
  188. package/src/ui/Editor.js +1 -2
  189. package/src/ui/EditorToolbar.js +1 -1
  190. package/src/ui/FontSizeCommandMenuButton.js +1 -1
  191. package/src/ui/FontTypeCommandMenuButton.js +1 -1
  192. package/src/ui/ImageAlignEditor.js +1 -1
  193. package/src/ui/ImageInlineEditor.js +1 -1
  194. package/src/ui/ImageNodeView.js +2 -2
  195. package/src/ui/ImageResizeBox.js +1 -1
  196. package/src/ui/ImageURLEditor.js +2 -2
  197. package/src/ui/ImageUploadEditor.js +2 -2
  198. package/src/ui/LinkTooltip.js +1 -1
  199. package/src/ui/LinkURLEditor.js +2 -2
  200. package/src/ui/ListTypeButton.js +2 -2
  201. package/src/ui/MathEditor.js +2 -2
  202. package/src/ui/MathInlineEditor.js +2 -2
  203. package/src/ui/MathNodeView.js +2 -2
  204. package/src/ui/TableGridSizeEditor.js +2 -2
  205. package/src/ui/czi-link-tooltip.css +1 -1
  206. package/src/ui/czi-vars.css +1 -45
  207. package/src/ui/isElementFullyVisible.js +1 -1
  208. package/src/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +1 -1
  209. package/src/ui/toCSSLineSpacing.js +0 -27
  210. package/build_customstyle_server.py +0 -7
  211. package/dist/FontSizeCommand.js +0 -80
  212. package/dist/FontSizeCommand.js.flow +0 -57
  213. package/dist/FontTypeCommand.js +0 -137
  214. package/dist/FontTypeCommand.js.flow +0 -100
  215. package/dist/HeadingCommand.js +0 -65
  216. package/dist/HeadingCommand.js.flow +0 -51
  217. package/dist/IndentCommand.js +0 -57
  218. package/dist/IndentCommand.js.flow +0 -41
  219. package/dist/MarkToggleCommand.js +0 -90
  220. package/dist/MarkToggleCommand.js.flow +0 -66
  221. package/dist/TextAlignCommand.js +0 -151
  222. package/dist/TextAlignCommand.js.flow +0 -122
  223. package/dist/TextColorCommand.js +0 -114
  224. package/dist/TextColorCommand.js.flow +0 -87
  225. package/dist/TextHighlightCommand.js +0 -118
  226. package/dist/TextHighlightCommand.js.flow +0 -91
  227. package/dist/TextLineSpacingCommand.js +0 -177
  228. package/dist/TextLineSpacingCommand.js.flow +0 -157
  229. package/dist/applyMark.js +0 -84
  230. package/dist/applyMark.js.flow +0 -61
  231. package/dist/clearMarks.js +0 -160
  232. package/dist/clearMarks.js.flow +0 -128
  233. package/dist/compareNumber.js +0 -18
  234. package/dist/compareNumber.js.flow +0 -11
  235. package/dist/consolidateListNodes.js +0 -291
  236. package/dist/consolidateListNodes.js.flow +0 -281
  237. package/dist/coverage/lcov-report/block-navigation.js +0 -77
  238. package/dist/coverage/lcov-report/block-navigation.js.flow +0 -79
  239. package/dist/coverage/lcov-report/prettify.js +0 -994
  240. package/dist/coverage/lcov-report/prettify.js.flow +0 -2
  241. package/dist/coverage/lcov-report/sorter.js +0 -187
  242. package/dist/coverage/lcov-report/sorter.js.flow +0 -170
  243. package/dist/findNodesWithSameMark.js +0 -89
  244. package/dist/findNodesWithSameMark.js.flow +0 -89
  245. package/dist/isBulletListNode.js +0 -14
  246. package/dist/isBulletListNode.js.flow +0 -9
  247. package/dist/isInsideListItem.js +0 -19
  248. package/dist/isInsideListItem.js.flow +0 -13
  249. package/dist/isListNode.js +0 -22
  250. package/dist/isListNode.js.flow +0 -13
  251. package/dist/isNodeSelectionForNodeType.js +0 -19
  252. package/dist/isNodeSelectionForNodeType.js.flow +0 -15
  253. package/dist/isOrderedListNode.js +0 -14
  254. package/dist/isOrderedListNode.js.flow +0 -9
  255. package/dist/isTextStyleMarkCommandEnabled.js +0 -59
  256. package/dist/isTextStyleMarkCommandEnabled.js.flow +0 -49
  257. package/dist/noop.js +0 -11
  258. package/dist/noop.js.flow +0 -5
  259. package/dist/toggleHeading.js +0 -135
  260. package/dist/toggleHeading.js.flow +0 -113
  261. package/dist/toggleList.js +0 -431
  262. package/dist/toggleList.js.flow +0 -450
  263. package/dist/transformAndPreserveTextSelection.js +0 -173
  264. package/dist/transformAndPreserveTextSelection.js.flow +0 -151
  265. package/dist/ui/ColorEditor.js +0 -118
  266. package/dist/ui/ColorEditor.js.flow +0 -101
  267. package/dist/ui/CustomButton.js +0 -62
  268. package/dist/ui/CustomButton.js.flow +0 -33
  269. package/dist/ui/PointerSurface.js +0 -173
  270. package/dist/ui/PointerSurface.js.flow +0 -141
  271. package/dist/ui/PopUp.js +0 -129
  272. package/dist/ui/PopUp.js.flow +0 -77
  273. package/dist/ui/PopUpManager.js +0 -266
  274. package/dist/ui/PopUpManager.js.flow +0 -213
  275. package/dist/ui/PopUpPosition.js +0 -156
  276. package/dist/ui/PopUpPosition.js.flow +0 -104
  277. package/dist/ui/PopUpTypes.js +0 -1
  278. package/dist/ui/TooltipSurface.js +0 -99
  279. package/dist/ui/TooltipSurface.js.flow +0 -76
  280. package/dist/ui/clamp.js +0 -18
  281. package/dist/ui/clamp.js.flow +0 -11
  282. package/dist/ui/createPopUp.js +0 -199
  283. package/dist/ui/createPopUp.js.flow +0 -205
  284. package/dist/ui/czi-animations.css +0 -15
  285. package/dist/ui/czi-color-editor.css +0 -56
  286. package/dist/ui/czi-custom-button.css +0 -93
  287. package/dist/ui/czi-pop-up.css +0 -32
  288. package/dist/ui/czi-tooltip-surface.css +0 -45
  289. package/dist/ui/preventEventDefault.js +0 -10
  290. package/dist/ui/preventEventDefault.js.flow +0 -5
  291. package/dist/ui/rects.js +0 -58
  292. package/dist/ui/rects.js.flow +0 -47
  293. package/dist/updateIndentLevel.js +0 -232
  294. package/dist/updateIndentLevel.js.flow +0 -211
  295. package/flow-typed/@molicit-citation.js +0 -5
  296. package/licit/server/customstyles/start.js +0 -184
  297. package/run_customstyle_server.py +0 -20
  298. package/src/FontSizeCommand.js +0 -57
  299. package/src/FontTypeCommand.js +0 -100
  300. package/src/HeadingCommand.js +0 -51
  301. package/src/IndentCommand.js +0 -41
  302. package/src/MarkToggleCommand.js +0 -66
  303. package/src/TextAlignCommand.js +0 -122
  304. package/src/TextColorCommand.js +0 -87
  305. package/src/TextHighlightCommand.js +0 -91
  306. package/src/TextLineSpacingCommand.js +0 -157
  307. package/src/applyMark.js +0 -61
  308. package/src/clearMarks.js +0 -128
  309. package/src/compareNumber.js +0 -11
  310. package/src/consolidateListNodes.js +0 -281
  311. package/src/findNodesWithSameMark.js +0 -89
  312. package/src/isBulletListNode.js +0 -9
  313. package/src/isInsideListItem.js +0 -13
  314. package/src/isListNode.js +0 -13
  315. package/src/isNodeSelectionForNodeType.js +0 -15
  316. package/src/isOrderedListNode.js +0 -9
  317. package/src/isTextStyleMarkCommandEnabled.js +0 -49
  318. package/src/noop.js +0 -5
  319. package/src/toggleHeading.js +0 -113
  320. package/src/toggleList.js +0 -450
  321. package/src/transformAndPreserveTextSelection.js +0 -151
  322. package/src/ui/ColorEditor.js +0 -101
  323. package/src/ui/CustomButton.js +0 -33
  324. package/src/ui/PointerSurface.js +0 -141
  325. package/src/ui/PopUp.js +0 -77
  326. package/src/ui/PopUpManager.js +0 -213
  327. package/src/ui/PopUpPosition.js +0 -104
  328. package/src/ui/PopUpTypes.js +0 -0
  329. package/src/ui/TooltipSurface.js +0 -76
  330. package/src/ui/clamp.js +0 -11
  331. package/src/ui/createPopUp.js +0 -205
  332. package/src/ui/czi-animations.css +0 -15
  333. package/src/ui/czi-color-editor.css +0 -56
  334. package/src/ui/czi-custom-button.css +0 -93
  335. package/src/ui/czi-pop-up.css +0 -32
  336. package/src/ui/czi-tooltip-surface.css +0 -45
  337. package/src/ui/preventEventDefault.js +0 -5
  338. package/src/ui/rects.js +0 -47
  339. package/src/updateIndentLevel.js +0 -211
  340. package/utils/build_customstyle_server.js +0 -72
@@ -1,151 +0,0 @@
1
- import { Fragment, Schema } from 'prosemirror-model';
2
- import { TextSelection } from 'prosemirror-state';
3
- import { Transform } from 'prosemirror-transform';
4
-
5
- import { MARK_TEXT_SELECTION } from './MarkNames';
6
- import { PARAGRAPH, TEXT } from './NodeNames';
7
- import applyMark from './applyMark';
8
- import uuid from './ui/uuid';
9
-
10
- export type SelectionMemo = {
11
- schema: Schema,
12
- tr: Transform,
13
- };
14
-
15
- // Text used to create temporary selection.
16
- // This assumes that no user could enter such string manually.
17
- const PLACEHOLDER_TEXT = `[\u200b\u2800PLACEHOLDER_TEXT_${uuid()}\u2800\u200b]`;
18
-
19
- // Perform the transform without losing the perceived text selection.
20
- // The way it works is that this will annotate teh current selection with
21
- // temporary marks and restores the selection with those marks after performing
22
- // the transform.
23
- export default function transformAndPreserveTextSelection(
24
- tr: Transform,
25
- schema: Schema,
26
- fn: (memo: SelectionMemo) => Transform
27
- ): Transform {
28
- if (tr.getMeta('dryrun')) {
29
- // There's no need to preserve the selection in dryrun mode.
30
- return fn({ tr, schema });
31
- }
32
-
33
- const { selection, doc } = tr;
34
- const markType = schema.marks[MARK_TEXT_SELECTION];
35
- if (!markType || !selection || !doc) {
36
- return tr;
37
- }
38
-
39
- if (!(selection instanceof TextSelection)) {
40
- return tr;
41
- }
42
-
43
- const { from, to } = selection;
44
-
45
- // Mark current selection so that we could resume the selection later
46
- // after changing the whole list.
47
- let fromOffset = 0;
48
- let toOffset = 0;
49
- let placeholderTextNode;
50
-
51
- if (from === to) {
52
- if (from === 0) {
53
- return tr;
54
- }
55
- // Selection is collapsed, create a temporary selection that the marks can
56
- // be applied to.
57
- const currentNode = tr.doc.nodeAt(from);
58
- const prevNode = tr.doc.nodeAt(from - 1);
59
- const nextNode = tr.doc.nodeAt(from + 1);
60
-
61
- if (
62
- !currentNode &&
63
- prevNode &&
64
- prevNode.type.name === PARAGRAPH &&
65
- !prevNode.firstChild
66
- ) {
67
- // The selection is at a paragraph node which has no content.
68
- // Create a temporary text and move selection into that text.
69
- placeholderTextNode = schema.text(PLACEHOLDER_TEXT);
70
- tr = tr.insert(from, Fragment.from(placeholderTextNode));
71
- toOffset = 1;
72
- } else if (!currentNode && prevNode && prevNode.type.name === TEXT) {
73
- // The selection is at the end of the text node. Select the last
74
- // character instead.
75
- fromOffset = -1;
76
- } else if (prevNode && currentNode && currentNode.type === prevNode.type) {
77
- // Ensure that the mark is applied to the same type of node.
78
- fromOffset = -1;
79
- } else if (nextNode && currentNode && currentNode.type === nextNode.type) {
80
- toOffset = 1;
81
- } else if (nextNode) {
82
- // Could not find the same type of node, assume the next node is safe to use.
83
- toOffset = 1;
84
- } else if (prevNode) {
85
- // Could not find the same type of node, assume the next node is safe to use.
86
- fromOffset = -1;
87
- } else {
88
- // Selection can't be safely preserved.
89
- return tr;
90
- }
91
- tr = tr.setSelection(
92
- // [FS] IRAD-1005 2020-07-29
93
- // Upgrade outdated packages.
94
- // reset selection using the latest doc.
95
- // This fixes IRAD-1023
96
- TextSelection.create(tr.doc, from + fromOffset, to + toOffset)
97
- );
98
- }
99
-
100
- // This is an unique ID (by reference).
101
- const id = {};
102
- const findMark = (mark) => mark.attrs.id === id;
103
-
104
- const findMarkRange = () => {
105
- let markFrom = 0;
106
- let markTo = 0;
107
- tr.doc.descendants((node, pos) => {
108
- if (node.marks && node.marks.find(findMark)) {
109
- markFrom = markFrom === 0 ? pos : markFrom;
110
- markTo = pos + node.nodeSize;
111
- }
112
- return true;
113
- });
114
- return {
115
- from: markFrom,
116
- to: markTo,
117
- };
118
- };
119
-
120
- // TODO: This has side-effect. It will cause `tr.docChanged` to be `true`.
121
- // No matter whether `fn({tr, schema})` did change the doc or not.
122
- tr = applyMark(tr, schema, markType, { id });
123
- tr = fn({ tr, schema });
124
-
125
- const markRange = findMarkRange();
126
- const selectionRange = {
127
- from: Math.max(0, markRange.from - fromOffset),
128
- to: Math.max(0, markRange.to - toOffset),
129
- };
130
-
131
- selectionRange.to = Math.max(0, selectionRange.from, selectionRange.to);
132
-
133
- tr = tr.removeMark(markRange.from, markRange.to, markType);
134
-
135
- if (placeholderTextNode) {
136
- tr.doc.descendants((node, pos) => {
137
- if (node.type.name === TEXT && node.text === PLACEHOLDER_TEXT) {
138
- tr = tr.delete(pos, pos + PLACEHOLDER_TEXT.length);
139
- placeholderTextNode = null;
140
- return false;
141
- }
142
- return true;
143
- });
144
- }
145
-
146
- tr = tr.setSelection(
147
- TextSelection.create(tr.doc, selectionRange.from, selectionRange.to)
148
- );
149
-
150
- return tr;
151
- }
@@ -1,118 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _color = _interopRequireDefault(require("color"));
9
-
10
- var React = _interopRequireWildcard(require("react"));
11
-
12
- var _CustomButton = _interopRequireDefault(require("./CustomButton"));
13
-
14
- var _clamp = _interopRequireDefault(require("./clamp"));
15
-
16
- require("./czi-color-editor.css");
17
-
18
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
-
26
- function generateGreyColors(count) {
27
- let cc = 255;
28
- const interval = cc / count;
29
- const colors = [];
30
-
31
- while (cc > 0) {
32
- const color = (0, _color.default)({
33
- r: cc,
34
- g: cc,
35
- b: cc
36
- });
37
- cc -= interval;
38
- cc = Math.floor(cc);
39
- colors.unshift(color);
40
- }
41
-
42
- return colors;
43
- }
44
-
45
- function generateRainbowColors(count, saturation, lightness) {
46
- const colors = [];
47
- const interval = 360 / count;
48
- const ss = (0, _clamp.default)(0, saturation, 100);
49
- const ll = (0, _clamp.default)(0, lightness, 100);
50
- let hue = 0;
51
-
52
- while (hue < 360) {
53
- const hsl = `hsl(${hue},${ss}%,${ll}%)`;
54
- const color = (0, _color.default)(hsl);
55
- colors.unshift(color);
56
- hue += interval;
57
- }
58
-
59
- return colors;
60
- }
61
-
62
- class ColorEditor extends React.PureComponent {
63
- constructor() {
64
- super(...arguments);
65
-
66
- _defineProperty(this, "props", void 0);
67
-
68
- _defineProperty(this, "_renderColor", (color, index) => {
69
- const selectedColor = this.props.hex;
70
- const hex = color.hex().toLowerCase();
71
- const style = {
72
- backgroundColor: hex
73
- };
74
- const active = selectedColor && selectedColor.toLowerCase() === hex;
75
- return /*#__PURE__*/React.createElement(_CustomButton.default, {
76
- active: active,
77
- className: "czi-color-editor-cell",
78
- key: `${hex}-${index}`,
79
- label: "",
80
- onClick: this._onSelectColor,
81
- style: style,
82
- value: hex
83
- });
84
- });
85
-
86
- _defineProperty(this, "_onSelectColor", hex => {
87
- this.props.close(hex);
88
- });
89
- }
90
-
91
- render() {
92
- const renderColor = this._renderColor;
93
- const selectedColor = this.props.hex;
94
- return /*#__PURE__*/React.createElement("div", {
95
- className: "czi-color-editor"
96
- }, /*#__PURE__*/React.createElement("div", {
97
- className: "czi-color-editor-section"
98
- }, /*#__PURE__*/React.createElement(_CustomButton.default, {
99
- active: !selectedColor,
100
- className: "czi-color-editor-color-transparent",
101
- label: "Transparent",
102
- onClick: this._onSelectColor,
103
- value: "rgba(0,0,0,0)"
104
- })), /*#__PURE__*/React.createElement("div", {
105
- className: "czi-color-editor-section"
106
- }, generateGreyColors(10).map(renderColor)), /*#__PURE__*/React.createElement("div", {
107
- className: "czi-color-editor-section"
108
- }, generateRainbowColors(10, 90, 50).map(renderColor)), /*#__PURE__*/React.createElement("div", {
109
- className: "czi-color-editor-section"
110
- }, generateRainbowColors(30, 70, 70).map(renderColor)), /*#__PURE__*/React.createElement("div", {
111
- className: "czi-color-editor-section"
112
- }, generateRainbowColors(30, 90, 30).map(renderColor)));
113
- }
114
-
115
- }
116
-
117
- var _default = ColorEditor;
118
- exports.default = _default;
@@ -1,101 +0,0 @@
1
- // @flow
2
-
3
- import Color from 'color';
4
- import * as React from 'react';
5
-
6
- import CustomButton from './CustomButton';
7
- import clamp from './clamp';
8
-
9
- import './czi-color-editor.css';
10
-
11
- function generateGreyColors(count: number): Array<Color> {
12
- let cc = 255;
13
- const interval = cc / count;
14
- const colors = [];
15
- while (cc > 0) {
16
- const color = Color({ r: cc, g: cc, b: cc });
17
- cc -= interval;
18
- cc = Math.floor(cc);
19
- colors.unshift(color);
20
- }
21
- return colors;
22
- }
23
-
24
- function generateRainbowColors(
25
- count: number,
26
- saturation: number,
27
- lightness: number
28
- ): Array<Color> {
29
- const colors = [];
30
- const interval = 360 / count;
31
- const ss = clamp(0, saturation, 100);
32
- const ll = clamp(0, lightness, 100);
33
- let hue = 0;
34
- while (hue < 360) {
35
- const hsl = `hsl(${hue},${ss}%,${ll}%)`;
36
- const color = Color(hsl);
37
- colors.unshift(color);
38
- hue += interval;
39
- }
40
- return colors;
41
- }
42
-
43
- class ColorEditor extends React.PureComponent<any, any> {
44
- props: {
45
- close: (?string) => void,
46
- hex?: ?string,
47
- };
48
-
49
- render(): React.Element<any> {
50
- const renderColor = this._renderColor;
51
- const selectedColor = this.props.hex;
52
- return (
53
- <div className="czi-color-editor">
54
- <div className="czi-color-editor-section">
55
- <CustomButton
56
- active={!selectedColor}
57
- className="czi-color-editor-color-transparent"
58
- label="Transparent"
59
- onClick={this._onSelectColor}
60
- value="rgba(0,0,0,0)"
61
- />
62
- </div>
63
- <div className="czi-color-editor-section">
64
- {generateGreyColors(10).map(renderColor)}
65
- </div>
66
- <div className="czi-color-editor-section">
67
- {generateRainbowColors(10, 90, 50).map(renderColor)}
68
- </div>
69
- <div className="czi-color-editor-section">
70
- {generateRainbowColors(30, 70, 70).map(renderColor)}
71
- </div>
72
- <div className="czi-color-editor-section">
73
- {generateRainbowColors(30, 90, 30).map(renderColor)}
74
- </div>
75
- </div>
76
- );
77
- }
78
-
79
- _renderColor = (color: Color, index: number): React.Element<any> => {
80
- const selectedColor = this.props.hex;
81
- const hex = color.hex().toLowerCase();
82
- const style = { backgroundColor: hex };
83
- const active = selectedColor && selectedColor.toLowerCase() === hex;
84
- return (
85
- <CustomButton
86
- active={active}
87
- className="czi-color-editor-cell"
88
- key={`${hex}-${index}`}
89
- label=""
90
- onClick={this._onSelectColor}
91
- style={style}
92
- value={hex}
93
- />
94
- );
95
- };
96
-
97
- _onSelectColor = (hex: string): void => {
98
- this.props.close(hex);
99
- };
100
- }
101
- export default ColorEditor;
@@ -1,62 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- require("./czi-custom-button.css");
9
-
10
- var _PointerSurface = _interopRequireWildcard(require("./PointerSurface"));
11
-
12
- var React = _interopRequireWildcard(require("react"));
13
-
14
- var _TooltipSurface = _interopRequireDefault(require("./TooltipSurface"));
15
-
16
- var _classnames = _interopRequireDefault(require("classnames"));
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
-
22
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
-
24
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
-
26
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
27
-
28
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
29
-
30
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
-
32
- class CustomButton extends React.PureComponent {
33
- constructor() {
34
- super(...arguments);
35
-
36
- _defineProperty(this, "props", void 0);
37
- }
38
-
39
- render() {
40
- const _this$props = this.props,
41
- {
42
- icon,
43
- label,
44
- className,
45
- title
46
- } = _this$props,
47
- pointerProps = _objectWithoutProperties(_this$props, ["icon", "label", "className", "title"]);
48
-
49
- const klass = (0, _classnames.default)(className, 'czi-custom-button', {
50
- 'use-icon': !!icon
51
- });
52
- return /*#__PURE__*/React.createElement(_TooltipSurface.default, {
53
- tooltip: title
54
- }, /*#__PURE__*/React.createElement(_PointerSurface.default, _extends({}, pointerProps, {
55
- className: klass
56
- }), icon, label));
57
- }
58
-
59
- }
60
-
61
- var _default = CustomButton;
62
- exports.default = _default;
@@ -1,33 +0,0 @@
1
- // @flow
2
-
3
- import './czi-custom-button.css';
4
- import PointerSurface from './PointerSurface';
5
- import * as React from 'react';
6
- import TooltipSurface from './TooltipSurface';
7
- import cx from 'classnames';
8
-
9
- import type { PointerSurfaceProps } from './PointerSurface';
10
-
11
- class CustomButton extends React.PureComponent<any, any> {
12
- props: PointerSurfaceProps & {
13
- icon?: string | React.Element<any> | null,
14
- label?: string | React.Element<any> | null,
15
- };
16
-
17
- render(): React.Element<any> {
18
- const { icon, label, className, title, ...pointerProps } = this.props;
19
- const klass = cx(className, 'czi-custom-button', {
20
- 'use-icon': !!icon,
21
- });
22
- return (
23
- <TooltipSurface tooltip={title}>
24
- <PointerSurface {...pointerProps} className={klass}>
25
- {icon}
26
- {label}
27
- </PointerSurface>
28
- </TooltipSurface>
29
- );
30
- }
31
- }
32
-
33
- export default CustomButton;
@@ -1,173 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.bpfrpt_proptype_PointerSurfaceProps = exports.default = void 0;
7
-
8
- var _classnames = _interopRequireDefault(require("classnames"));
9
-
10
- var React = _interopRequireWildcard(require("react"));
11
-
12
- var _preventEventDefault = _interopRequireDefault(require("./preventEventDefault"));
13
-
14
- var _propTypes = _interopRequireDefault(require("prop-types"));
15
-
16
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
-
18
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
-
24
- var bpfrpt_proptype_PointerSurfaceProps = {
25
- "active": _propTypes.default.bool,
26
- "children": _propTypes.default.any,
27
- "className": _propTypes.default.string,
28
- "disabled": _propTypes.default.bool,
29
- "id": _propTypes.default.string,
30
- "onClick": _propTypes.default.func,
31
- "onMouseEnter": _propTypes.default.func,
32
- "style": _propTypes.default.object,
33
- "title": _propTypes.default.string,
34
- "value": _propTypes.default.any
35
- };
36
- exports.bpfrpt_proptype_PointerSurfaceProps = bpfrpt_proptype_PointerSurfaceProps;
37
-
38
- class PointerSurface extends React.PureComponent {
39
- constructor() {
40
- super(...arguments);
41
-
42
- _defineProperty(this, "props", void 0);
43
-
44
- _defineProperty(this, "_clicked", false);
45
-
46
- _defineProperty(this, "_mul", false);
47
-
48
- _defineProperty(this, "_pressedTarget", null);
49
-
50
- _defineProperty(this, "_unmounted", false);
51
-
52
- _defineProperty(this, "state", {
53
- pressed: false
54
- });
55
-
56
- _defineProperty(this, "_onMouseEnter", e => {
57
- this._pressedTarget = null;
58
- e.preventDefault();
59
- const {
60
- onMouseEnter,
61
- value
62
- } = this.props;
63
- onMouseEnter && onMouseEnter(value, e);
64
- });
65
-
66
- _defineProperty(this, "_onMouseLeave", e => {
67
- this._pressedTarget = null;
68
- const mouseUpEvent = e;
69
-
70
- this._onMouseUpCapture(mouseUpEvent);
71
- });
72
-
73
- _defineProperty(this, "_onMouseDown", e => {
74
- e.preventDefault();
75
- this._pressedTarget = null;
76
- this._clicked = false;
77
-
78
- if (e.which === 3 || e.button == 2) {
79
- // right click.
80
- return;
81
- }
82
-
83
- this.setState({
84
- pressed: true
85
- });
86
- this._pressedTarget = e.currentTarget;
87
- this._clicked = false;
88
-
89
- if (!this._mul) {
90
- document.addEventListener('mouseup', this._onMouseUpCapture, true);
91
- this._mul = true;
92
- }
93
- });
94
-
95
- _defineProperty(this, "_onMouseUp", e => {
96
- e.preventDefault();
97
-
98
- if (this._clicked || e.type === 'keypress') {
99
- const {
100
- onClick,
101
- value,
102
- disabled
103
- } = this.props;
104
- !disabled && onClick && onClick(value, e);
105
- }
106
-
107
- this._pressedTarget = null;
108
- this._clicked = false;
109
- });
110
-
111
- _defineProperty(this, "_onMouseUpCapture", e => {
112
- if (this._mul) {
113
- this._mul = false;
114
- document.removeEventListener('mouseup', this._onMouseUpCapture, true);
115
- }
116
-
117
- const target = e.target;
118
- this._clicked = this._pressedTarget instanceof HTMLElement && target instanceof HTMLElement && (target === this._pressedTarget || target.contains(this._pressedTarget) || this._pressedTarget.contains(target));
119
- this.setState({
120
- pressed: false
121
- });
122
- });
123
- }
124
-
125
- render() {
126
- const {
127
- className,
128
- disabled,
129
- active,
130
- id,
131
- style,
132
- title,
133
- children
134
- } = this.props;
135
- const {
136
- pressed
137
- } = this.state;
138
- const buttonClassName = (0, _classnames.default)(className, {
139
- active: active,
140
- disabled: disabled,
141
- pressed: pressed
142
- });
143
- return /*#__PURE__*/React.createElement("span", {
144
- "aria-disabled": disabled,
145
- "aria-pressed": pressed,
146
- className: buttonClassName,
147
- disabled: disabled,
148
- id: id,
149
- onKeyPress: disabled ? _preventEventDefault.default : this._onMouseUp,
150
- onMouseDown: disabled ? _preventEventDefault.default : this._onMouseDown,
151
- onMouseEnter: disabled ? _preventEventDefault.default : this._onMouseEnter,
152
- onMouseLeave: disabled ? null : this._onMouseLeave,
153
- onMouseUp: disabled ? _preventEventDefault.default : this._onMouseUp,
154
- role: "button",
155
- style: style,
156
- tabIndex: disabled ? null : 0,
157
- title: title
158
- }, children);
159
- }
160
-
161
- componentWillUnmount() {
162
- this._unmounted = true;
163
-
164
- if (this._mul) {
165
- this._mul = false;
166
- document.removeEventListener('mouseup', this._onMouseUpCapture, true);
167
- }
168
- }
169
-
170
- }
171
-
172
- var _default = PointerSurface;
173
- exports.default = _default;