@datalayer/jupyter-lexical 0.0.1

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 (233) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/lib/components/InsertEquationDialog.d.ts +6 -0
  4. package/lib/components/InsertEquationDialog.js +17 -0
  5. package/lib/components/InsertEquationDialog.js.map +1 -0
  6. package/lib/components/InsertImageDialog.d.ts +13 -0
  7. package/lib/components/InsertImageDialog.js +48 -0
  8. package/lib/components/InsertImageDialog.js.map +1 -0
  9. package/lib/components/JupyterCellComponent.d.ts +2 -0
  10. package/lib/components/JupyterCellComponent.js +12 -0
  11. package/lib/components/JupyterCellComponent.js.map +1 -0
  12. package/lib/components/JupyterOutputComponent.d.ts +13 -0
  13. package/lib/components/JupyterOutputComponent.js +8 -0
  14. package/lib/components/JupyterOutputComponent.js.map +1 -0
  15. package/lib/convert/LexicalToNbFormat.d.ts +4 -0
  16. package/lib/convert/LexicalToNbFormat.js +100 -0
  17. package/lib/convert/LexicalToNbFormat.js.map +1 -0
  18. package/lib/convert/NbFormatToLexical.d.ts +4 -0
  19. package/lib/convert/NbFormatToLexical.js +31 -0
  20. package/lib/convert/NbFormatToLexical.js.map +1 -0
  21. package/lib/convert/markdown/MarkdownExport.d.ts +11 -0
  22. package/lib/convert/markdown/MarkdownExport.js +129 -0
  23. package/lib/convert/markdown/MarkdownExport.js.map +1 -0
  24. package/lib/convert/markdown/MarkdownImport.d.ts +2 -0
  25. package/lib/convert/markdown/MarkdownImport.js +246 -0
  26. package/lib/convert/markdown/MarkdownImport.js.map +1 -0
  27. package/lib/convert/markdown/MarkdownShortcuts.d.ts +10 -0
  28. package/lib/convert/markdown/MarkdownShortcuts.js +254 -0
  29. package/lib/convert/markdown/MarkdownShortcuts.js.map +1 -0
  30. package/lib/convert/markdown/MarkdownTransformers.d.ts +39 -0
  31. package/lib/convert/markdown/MarkdownTransformers.js +242 -0
  32. package/lib/convert/markdown/MarkdownTransformers.js.map +1 -0
  33. package/lib/convert/markdown/convertToMarkdown.d.ts +1 -0
  34. package/lib/convert/markdown/convertToMarkdown.js +126 -0
  35. package/lib/convert/markdown/convertToMarkdown.js.map +1 -0
  36. package/lib/convert/markdown/index.d.ts +17 -0
  37. package/lib/convert/markdown/index.js +46 -0
  38. package/lib/convert/markdown/index.js.map +1 -0
  39. package/lib/convert/markdown/utils.d.ts +24 -0
  40. package/lib/convert/markdown/utils.js +303 -0
  41. package/lib/convert/markdown/utils.js.map +1 -0
  42. package/lib/convert/transformers/MarkdownTransformers.d.ts +13 -0
  43. package/lib/convert/transformers/MarkdownTransformers.js +178 -0
  44. package/lib/convert/transformers/MarkdownTransformers.js.map +1 -0
  45. package/lib/examples/App.d.ts +1 -0
  46. package/lib/examples/App.js +22 -0
  47. package/lib/examples/App.js.map +1 -0
  48. package/lib/examples/Editor.d.ts +9 -0
  49. package/lib/examples/Editor.js +81 -0
  50. package/lib/examples/Editor.js.map +1 -0
  51. package/lib/examples/Example.d.ts +1 -0
  52. package/lib/examples/Example.js +11 -0
  53. package/lib/examples/Example.js.map +1 -0
  54. package/lib/examples/content/Example.ipynb.json +98 -0
  55. package/lib/examples/content/Example.lexical.json +259 -0
  56. package/lib/examples/context/LexicalContext.d.ts +13 -0
  57. package/lib/examples/context/LexicalContext.js +22 -0
  58. package/lib/examples/context/LexicalContext.js.map +1 -0
  59. package/lib/examples/plugins/ToolbarPlugin.d.ts +2 -0
  60. package/lib/examples/plugins/ToolbarPlugin.js +448 -0
  61. package/lib/examples/plugins/ToolbarPlugin.js.map +1 -0
  62. package/lib/examples/plugins/TreeViewPlugin.d.ts +2 -0
  63. package/lib/examples/plugins/TreeViewPlugin.js +13 -0
  64. package/lib/examples/plugins/TreeViewPlugin.js.map +1 -0
  65. package/lib/examples/themes/Theme.d.ts +10 -0
  66. package/lib/examples/themes/Theme.js +94 -0
  67. package/lib/examples/themes/Theme.js.map +1 -0
  68. package/lib/hooks/useModal.d.ts +2 -0
  69. package/lib/hooks/useModal.js +39 -0
  70. package/lib/hooks/useModal.js.map +1 -0
  71. package/lib/images/yellow-flower-small.jpg +0 -0
  72. package/lib/index.d.ts +40 -0
  73. package/lib/index.js +55 -0
  74. package/lib/index.js.map +1 -0
  75. package/lib/jupyter/index.d.ts +0 -0
  76. package/lib/jupyter/index.js +6 -0
  77. package/lib/jupyter/index.js.map +1 -0
  78. package/lib/jupyter/lab/Example.d.ts +1 -0
  79. package/lib/jupyter/lab/Example.js +11 -0
  80. package/lib/jupyter/lab/Example.js.map +1 -0
  81. package/lib/jupyter/lab/__tests__/datalayer.spec.d.ts +0 -0
  82. package/lib/jupyter/lab/__tests__/datalayer.spec.js +11 -0
  83. package/lib/jupyter/lab/__tests__/datalayer.spec.js.map +1 -0
  84. package/lib/jupyter/lab/component/MockComponent.d.ts +2 -0
  85. package/lib/jupyter/lab/component/MockComponent.js +17 -0
  86. package/lib/jupyter/lab/component/MockComponent.js.map +1 -0
  87. package/lib/jupyter/lab/component/MockTab1.d.ts +2 -0
  88. package/lib/jupyter/lab/component/MockTab1.js +14 -0
  89. package/lib/jupyter/lab/component/MockTab1.js.map +1 -0
  90. package/lib/jupyter/lab/handler.d.ts +8 -0
  91. package/lib/jupyter/lab/handler.js +41 -0
  92. package/lib/jupyter/lab/handler.js.map +1 -0
  93. package/lib/jupyter/lab/index.d.ts +7 -0
  94. package/lib/jupyter/lab/index.js +73 -0
  95. package/lib/jupyter/lab/index.js.map +1 -0
  96. package/lib/jupyter/lab/widget.d.ts +6 -0
  97. package/lib/jupyter/lab/widget.js +18 -0
  98. package/lib/jupyter/lab/widget.js.map +1 -0
  99. package/lib/nodes/EquationNode.d.ts +31 -0
  100. package/lib/nodes/EquationNode.js +118 -0
  101. package/lib/nodes/EquationNode.js.map +1 -0
  102. package/lib/nodes/ImageNode.css +50 -0
  103. package/lib/nodes/ImageNode.d.ts +58 -0
  104. package/lib/nodes/ImageNode.js +275 -0
  105. package/lib/nodes/ImageNode.js.map +1 -0
  106. package/lib/nodes/JupyterCodeHighlightNode.d.ts +49 -0
  107. package/lib/nodes/JupyterCodeHighlightNode.js +165 -0
  108. package/lib/nodes/JupyterCodeHighlightNode.js.map +1 -0
  109. package/lib/nodes/JupyterCodeHighlighter.d.ts +28 -0
  110. package/lib/nodes/JupyterCodeHighlighter.js +522 -0
  111. package/lib/nodes/JupyterCodeHighlighter.js.map +1 -0
  112. package/lib/nodes/JupyterCodeNode.d.ts +50 -0
  113. package/lib/nodes/JupyterCodeNode.js +277 -0
  114. package/lib/nodes/JupyterCodeNode.js.map +1 -0
  115. package/lib/nodes/JupyterOutputNode.d.ts +58 -0
  116. package/lib/nodes/JupyterOutputNode.js +144 -0
  117. package/lib/nodes/JupyterOutputNode.js.map +1 -0
  118. package/lib/nodes/YouTubeNode.d.ts +28 -0
  119. package/lib/nodes/YouTubeNode.js +56 -0
  120. package/lib/nodes/YouTubeNode.js.map +1 -0
  121. package/lib/plugins/AutoEmbedPlugin.d.ts +17 -0
  122. package/lib/plugins/AutoEmbedPlugin.js +110 -0
  123. package/lib/plugins/AutoEmbedPlugin.js.map +1 -0
  124. package/lib/plugins/AutoLinkPlugin.d.ts +2 -0
  125. package/lib/plugins/AutoLinkPlugin.js +34 -0
  126. package/lib/plugins/AutoLinkPlugin.js.map +1 -0
  127. package/lib/plugins/CodeActionMenuPlugin.css +52 -0
  128. package/lib/plugins/CodeActionMenuPlugin.d.ts +12 -0
  129. package/lib/plugins/CodeActionMenuPlugin.js +108 -0
  130. package/lib/plugins/CodeActionMenuPlugin.js.map +1 -0
  131. package/lib/plugins/ComponentPickerMenuPlugin.d.ts +2 -0
  132. package/lib/plugins/ComponentPickerMenuPlugin.js +244 -0
  133. package/lib/plugins/ComponentPickerMenuPlugin.js.map +1 -0
  134. package/lib/plugins/EquationsPlugin.d.ts +21 -0
  135. package/lib/plugins/EquationsPlugin.js +48 -0
  136. package/lib/plugins/EquationsPlugin.js.map +1 -0
  137. package/lib/plugins/HorizontalRulePlugin.d.ts +2 -0
  138. package/lib/plugins/HorizontalRulePlugin.js +40 -0
  139. package/lib/plugins/HorizontalRulePlugin.js.map +1 -0
  140. package/lib/plugins/ImagesPlugin.d.ts +25 -0
  141. package/lib/plugins/ImagesPlugin.js +212 -0
  142. package/lib/plugins/ImagesPlugin.js.map +1 -0
  143. package/lib/plugins/JupyterPlugin.css +13 -0
  144. package/lib/plugins/JupyterPlugin.d.ts +16 -0
  145. package/lib/plugins/JupyterPlugin.js +169 -0
  146. package/lib/plugins/JupyterPlugin.js.map +1 -0
  147. package/lib/plugins/ListMaxIndentLevelPlugin.d.ts +4 -0
  148. package/lib/plugins/ListMaxIndentLevelPlugin.js +49 -0
  149. package/lib/plugins/ListMaxIndentLevelPlugin.js.map +1 -0
  150. package/lib/plugins/MardownPlugin.d.ts +2 -0
  151. package/lib/plugins/MardownPlugin.js +20 -0
  152. package/lib/plugins/MardownPlugin.js.map +1 -0
  153. package/lib/plugins/NbformatContentPlugin.d.ts +6 -0
  154. package/lib/plugins/NbformatContentPlugin.js +20 -0
  155. package/lib/plugins/NbformatContentPlugin.js.map +1 -0
  156. package/lib/plugins/TableOfContentsPlugin.css +87 -0
  157. package/lib/plugins/TableOfContentsPlugin.d.ts +3 -0
  158. package/lib/plugins/TableOfContentsPlugin.js +115 -0
  159. package/lib/plugins/TableOfContentsPlugin.js.map +1 -0
  160. package/lib/plugins/YouTubePlugin.d.ts +4 -0
  161. package/lib/plugins/YouTubePlugin.js +34 -0
  162. package/lib/plugins/YouTubePlugin.js.map +1 -0
  163. package/lib/ui/Button.css +40 -0
  164. package/lib/ui/Button.d.ts +18 -0
  165. package/lib/ui/Button.js +8 -0
  166. package/lib/ui/Button.js.map +1 -0
  167. package/lib/ui/ContentEditable.css +24 -0
  168. package/lib/ui/ContentEditable.d.ts +5 -0
  169. package/lib/ui/ContentEditable.js +20 -0
  170. package/lib/ui/ContentEditable.js.map +1 -0
  171. package/lib/ui/CopyButton.d.ts +7 -0
  172. package/lib/ui/CopyButton.js +47 -0
  173. package/lib/ui/CopyButton.js.map +1 -0
  174. package/lib/ui/Dialog.css +23 -0
  175. package/lib/ui/Dialog.d.ts +16 -0
  176. package/lib/ui/Dialog.js +21 -0
  177. package/lib/ui/Dialog.js.map +1 -0
  178. package/lib/ui/DropDown.d.ts +23 -0
  179. package/lib/ui/DropDown.js +119 -0
  180. package/lib/ui/DropDown.js.map +1 -0
  181. package/lib/ui/EquationEditor.css +42 -0
  182. package/lib/ui/EquationEditor.d.ts +18 -0
  183. package/lib/ui/EquationEditor.js +31 -0
  184. package/lib/ui/EquationEditor.js.map +1 -0
  185. package/lib/ui/FileInput.d.ts +15 -0
  186. package/lib/ui/FileInput.js +18 -0
  187. package/lib/ui/FileInput.js.map +1 -0
  188. package/lib/ui/ImageResizer.d.ts +16 -0
  189. package/lib/ui/ImageResizer.js +166 -0
  190. package/lib/ui/ImageResizer.js.map +1 -0
  191. package/lib/ui/Input.css +37 -0
  192. package/lib/ui/KatexEquationAlterer.css +45 -0
  193. package/lib/ui/KatexEquationAlterer.d.ts +7 -0
  194. package/lib/ui/KatexEquationAlterer.js +33 -0
  195. package/lib/ui/KatexEquationAlterer.js.map +1 -0
  196. package/lib/ui/KatexRenderer.d.ts +6 -0
  197. package/lib/ui/KatexRenderer.js +36 -0
  198. package/lib/ui/KatexRenderer.js.map +1 -0
  199. package/lib/ui/Modal.css +67 -0
  200. package/lib/ui/Modal.d.ts +15 -0
  201. package/lib/ui/Modal.js +58 -0
  202. package/lib/ui/Modal.js.map +1 -0
  203. package/lib/ui/Placeholder.css +29 -0
  204. package/lib/ui/Placeholder.d.ts +14 -0
  205. package/lib/ui/Placeholder.js +7 -0
  206. package/lib/ui/Placeholder.js.map +1 -0
  207. package/lib/ui/PrettierButton.css +20 -0
  208. package/lib/ui/PrettierButton.tsx_tmp +133 -0
  209. package/lib/ui/TextInput.d.ts +16 -0
  210. package/lib/ui/TextInput.js +20 -0
  211. package/lib/ui/TextInput.js.map +1 -0
  212. package/lib/utils/canUseDOM.d.ts +8 -0
  213. package/lib/utils/canUseDOM.js +16 -0
  214. package/lib/utils/canUseDOM.js.map +1 -0
  215. package/lib/utils/debouncer.d.ts +1 -0
  216. package/lib/utils/debouncer.js +24 -0
  217. package/lib/utils/debouncer.js.map +1 -0
  218. package/lib/utils/invariant.d.ts +8 -0
  219. package/lib/utils/invariant.js +23 -0
  220. package/lib/utils/invariant.js.map +1 -0
  221. package/lib/utils/join.d.ts +8 -0
  222. package/lib/utils/join.js +16 -0
  223. package/lib/utils/join.js.map +1 -0
  224. package/lib/utils/selection.d.ts +8 -0
  225. package/lib/utils/selection.js +14 -0
  226. package/lib/utils/selection.js.map +1 -0
  227. package/lib/utils/useLayoutEffect.d.ts +10 -0
  228. package/lib/utils/useLayoutEffect.js +19 -0
  229. package/lib/utils/useLayoutEffect.js.map +1 -0
  230. package/package.json +166 -0
  231. package/style/base.css +16 -0
  232. package/style/index.css +7 -0
  233. package/style/index.js +7 -0
@@ -0,0 +1,119 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2021-2023 Datalayer, Inc.
4
+ *
5
+ * MIT License
6
+ */
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+ import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
14
+ import * as React from 'react';
15
+ import { createPortal } from 'react-dom';
16
+ const DropDownContext = React.createContext(null);
17
+ export function DropDownItem({ children, className, onClick, title, }) {
18
+ const ref = useRef(null);
19
+ const dropDownContext = React.useContext(DropDownContext);
20
+ if (dropDownContext === null) {
21
+ throw new Error('DropDownItem must be used within a DropDown');
22
+ }
23
+ const { registerItem } = dropDownContext;
24
+ useEffect(() => {
25
+ if (ref && ref.current) {
26
+ registerItem(ref);
27
+ }
28
+ }, [ref, registerItem]);
29
+ return (_jsx("button", { className: className, onClick: onClick, ref: ref, title: title, children: children }));
30
+ }
31
+ function DropDownItems({ children, dropDownRef, onClose, }) {
32
+ const [items, setItems] = useState();
33
+ const [highlightedItem, setHighlightedItem] = useState();
34
+ const registerItem = useCallback((itemRef) => {
35
+ setItems((prev) => (prev ? [...prev, itemRef] : [itemRef]));
36
+ }, [setItems]);
37
+ const handleKeyDown = (event) => {
38
+ if (!items)
39
+ return;
40
+ const key = event.key;
41
+ if (['Escape', 'ArrowUp', 'ArrowDown', 'Tab'].includes(key)) {
42
+ event.preventDefault();
43
+ }
44
+ if (key === 'Escape' || key === 'Tab') {
45
+ onClose();
46
+ }
47
+ else if (key === 'ArrowUp') {
48
+ setHighlightedItem((prev) => {
49
+ if (!prev)
50
+ return items[0];
51
+ const index = items.indexOf(prev) - 1;
52
+ return items[index === -1 ? items.length - 1 : index];
53
+ });
54
+ }
55
+ else if (key === 'ArrowDown') {
56
+ setHighlightedItem((prev) => {
57
+ if (!prev)
58
+ return items[0];
59
+ return items[items.indexOf(prev) + 1];
60
+ });
61
+ }
62
+ };
63
+ const contextValue = useMemo(() => ({
64
+ registerItem,
65
+ }), [registerItem]);
66
+ useEffect(() => {
67
+ if (items && !highlightedItem) {
68
+ setHighlightedItem(items[0]);
69
+ }
70
+ if (highlightedItem && highlightedItem.current) {
71
+ highlightedItem.current.focus();
72
+ }
73
+ }, [items, highlightedItem]);
74
+ return (_jsx(DropDownContext.Provider, { value: contextValue, children: _jsx("div", { className: "dropdown", ref: dropDownRef, onKeyDown: handleKeyDown, children: children }) }));
75
+ }
76
+ export const DropDown = ({ buttonLabel, buttonAriaLabel, buttonClassName, buttonIconClassName, children, stopCloseOnClickSelf, }) => {
77
+ const dropDownRef = useRef(null);
78
+ const buttonRef = useRef(null);
79
+ const [showDropDown, setShowDropDown] = useState(false);
80
+ const handleClose = () => {
81
+ setShowDropDown(false);
82
+ if (buttonRef && buttonRef.current) {
83
+ buttonRef.current.focus();
84
+ }
85
+ };
86
+ useEffect(() => {
87
+ const button = buttonRef.current;
88
+ const dropDown = dropDownRef.current;
89
+ if (showDropDown && button !== null && dropDown !== null) {
90
+ const { top, left } = button.getBoundingClientRect();
91
+ dropDown.style.top = `${top + 40}px`;
92
+ dropDown.style.left = `${Math.min(left, window.innerWidth - dropDown.offsetWidth - 20)}px`;
93
+ }
94
+ }, [dropDownRef, buttonRef, showDropDown]);
95
+ useEffect(() => {
96
+ const button = buttonRef.current;
97
+ if (button !== null && showDropDown) {
98
+ const handle = (event) => {
99
+ const target = event.target;
100
+ if (stopCloseOnClickSelf) {
101
+ if (dropDownRef.current &&
102
+ dropDownRef.current.contains(target))
103
+ return;
104
+ }
105
+ if (!button.contains(target)) {
106
+ setShowDropDown(false);
107
+ }
108
+ };
109
+ document.addEventListener('click', handle);
110
+ return () => {
111
+ document.removeEventListener('click', handle);
112
+ };
113
+ }
114
+ }, [dropDownRef, buttonRef, showDropDown, stopCloseOnClickSelf]);
115
+ return (_jsxs(_Fragment, { children: [_jsxs("button", { "aria-label": buttonAriaLabel || buttonLabel, className: buttonClassName, onClick: () => setShowDropDown(!showDropDown), ref: buttonRef, children: [buttonIconClassName && _jsx("span", { className: buttonIconClassName }), buttonLabel && (_jsx("span", { className: "text dropdown-button-text", children: buttonLabel })), _jsx("i", { className: "chevron-down" })] }), showDropDown &&
116
+ createPortal(_jsx(DropDownItems, { dropDownRef: dropDownRef, onClose: handleClose, children: children }), document.body)] }));
117
+ };
118
+ export default DropDown;
119
+ //# sourceMappingURL=DropDown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropDown.js","sourceRoot":"","sources":["../../src/ui/DropDown.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,OAAO,EAEL,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AAMvC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAA6B,IAAI,CAAC,CAAC;AAE9E,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,KAAK,GAMN;IACC,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAE5C,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAE1D,IAAI,eAAe,KAAK,IAAI,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;KAChE;IAED,MAAM,EAAC,YAAY,EAAC,GAAG,eAAe,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE;YACtB,YAAY,CAAC,GAAG,CAAC,CAAC;SACnB;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;IAExB,OAAO,CACL,iBAAQ,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,YACnE,QAAQ,GACF,CACV,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,QAAQ,EACR,WAAW,EACX,OAAO,GAKR;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAwC,CAAC;IAC3E,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GACzC,QAAQ,EAAsC,CAAC;IACjD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,OAA2C,EAAE,EAAE;QAC9C,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,KAA0C,EAAE,EAAE;QACnE,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3D,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;QAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,EAAE;YACrC,OAAO,EAAE,CAAC;SACX;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE;YAC5B,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1B,IAAI,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtC,OAAO,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE;YAC9B,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1B,IAAI,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,YAAY;KACb,CAAC,EACF,CAAC,YAAY,CAAC,CACf,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,IAAI,CAAC,eAAe,EAAE;YAC7B,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B;QACD,IAAI,eAAe,IAAI,eAAe,CAAC,OAAO,EAAE;YAC9C,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;SACjC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IAC7B,OAAO,CACL,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC3C,cAAK,SAAS,EAAC,UAAU,EAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,YACjE,QAAQ,GACL,GACmB,CAC5B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,oBAAoB,GAQrB,EAAe,EAAE;IAChB,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE;YAClC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;SAC3B;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;QAErC,IAAI,YAAY,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;YACxD,MAAM,EAAC,GAAG,EAAE,IAAI,EAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACnD,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC;YACrC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAC/B,IAAI,EACJ,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,WAAW,GAAG,EAAE,CAC9C,IAAI,CAAC;SACP;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QAEjC,IAAI,MAAM,KAAK,IAAI,IAAI,YAAY,EAAE;YACnC,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAE,EAAE;gBACnC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC5B,IAAI,oBAAoB,EAAE;oBACxB,IACE,WAAW,CAAC,OAAO;wBACnB,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAc,CAAC;wBAE5C,OAAO;iBACV;gBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAc,CAAC,EAAE;oBACpC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACxB;YACH,CAAC,CAAC;YACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE3C,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEjE,OAAO,CACL,8BACE,gCACc,eAAe,IAAI,WAAW,EAC1C,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,EAC7C,GAAG,EAAE,SAAS,aACb,mBAAmB,IAAI,eAAM,SAAS,EAAE,mBAAmB,GAAI,EAC/D,WAAW,IAAI,CACd,eAAM,SAAS,EAAC,2BAA2B,YAAE,WAAW,GAAQ,CACjE,EACD,YAAG,SAAS,EAAC,cAAc,GAAG,IACvB,EAER,YAAY;gBACX,YAAY,CACV,KAAC,aAAa,IAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,YAC1D,QAAQ,GACK,EAChB,QAAQ,CAAC,IAAI,CACd,IACF,CACJ,CAAC;AACJ,CAAC,CAAA;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Copyright (c) 2021-2023 Datalayer, Inc.
3
+ *
4
+ * MIT License
5
+ */
6
+
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+
14
+ .EquationEditor_inlineEditor {
15
+ padding: 0;
16
+ margin: 0;
17
+ border: 0;
18
+ outline: 0;
19
+ color: #8421a2;
20
+ background-color: inherit;
21
+ resize: none;
22
+ }
23
+
24
+ .EquationEditor_blockEditor {
25
+ padding: 0;
26
+ margin: 0;
27
+ border: 0;
28
+ outline: 0;
29
+ color: #8421a2;
30
+ background-color: inherit;
31
+ resize: none;
32
+ width: '100%';
33
+ }
34
+
35
+ .EquationEditor_inputBackground {
36
+ background-color: #eee;
37
+ }
38
+
39
+ .EquationEditor_dollarSign {
40
+ text-align: left;
41
+ color: #b0b0b0;
42
+ }
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import './EquationEditor.css';
9
+ type BaseEquationEditorProps = {
10
+ equation: string;
11
+ inline: boolean;
12
+ inputRef: {
13
+ current: null | HTMLInputElement | HTMLTextAreaElement;
14
+ };
15
+ setEquation: (equation: string) => void;
16
+ };
17
+ export default function EquationEditor({ equation, setEquation, inline, inputRef, }: BaseEquationEditorProps): JSX.Element;
18
+ export {};
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2021-2023 Datalayer, Inc.
4
+ *
5
+ * MIT License
6
+ */
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+ import './EquationEditor.css';
14
+ export default function EquationEditor({ equation, setEquation, inline, inputRef, }) {
15
+ const onChange = (event) => {
16
+ setEquation(event.target.value);
17
+ };
18
+ const props = {
19
+ equation,
20
+ inputRef,
21
+ onChange,
22
+ };
23
+ return inline ? (_jsx(InlineEquationEditor, { ...props, inputRef: inputRef })) : (_jsx(BlockEquationEditor, { ...props, inputRef: inputRef }));
24
+ }
25
+ function InlineEquationEditor({ equation, onChange, inputRef, }) {
26
+ return (_jsxs("span", { className: "EquationEditor_inputBackground", children: [_jsx("span", { className: "EquationEditor_dollarSign", children: "$" }), _jsx("input", { className: "EquationEditor_inlineEditor", value: equation, onChange: onChange, autoFocus: true, ref: inputRef }), _jsx("span", { className: "EquationEditor_dollarSign", children: "$" })] }));
27
+ }
28
+ function BlockEquationEditor({ equation, onChange, inputRef, }) {
29
+ return (_jsxs("div", { className: "EquationEditor_inputBackground", children: [_jsx("span", { className: "EquationEditor_dollarSign", children: '$$\n' }), _jsx("textarea", { className: "EquationEditor_blockEditor", value: equation, onChange: onChange, ref: inputRef }), _jsx("span", { className: "EquationEditor_dollarSign", children: '\n$$' })] }));
30
+ }
31
+ //# sourceMappingURL=EquationEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EquationEditor.js","sourceRoot":"","sources":["../../src/ui/EquationEditor.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,OAAO,sBAAsB,CAAC;AAW9B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,QAAQ,EACR,WAAW,EACX,MAAM,EACN,QAAQ,GACgB;IACxB,MAAM,QAAQ,GAAG,CAAC,KAAkB,EAAE,EAAE;QACtC,WAAW,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG;QACZ,QAAQ;QACR,QAAQ;QACR,QAAQ;KACT,CAAC;IAEF,OAAO,MAAM,CAAC,CAAC,CAAC,CACd,KAAC,oBAAoB,OACf,KAAK,EACT,QAAQ,EAAE,QAAuC,GACjD,CACH,CAAC,CAAC,CAAC,CACF,KAAC,mBAAmB,OACd,KAAK,EACT,QAAQ,EAAE,QAA0C,GACpD,CACH,CAAC;AACJ,CAAC;AAQD,SAAS,oBAAoB,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,QAAQ,GACgB;IACxB,OAAO,CACL,gBAAM,SAAS,EAAC,gCAAgC,aAC9C,eAAM,SAAS,EAAC,2BAA2B,kBAAS,EACpD,gBACE,SAAS,EAAC,6BAA6B,EACvC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAI,EACf,GAAG,EAAE,QAAQ,GACb,EACF,eAAM,SAAS,EAAC,2BAA2B,kBAAS,IAC/C,CACR,CAAC;AACJ,CAAC;AAQD,SAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,QAAQ,GACqB;IAC7B,OAAO,CACL,eAAK,SAAS,EAAC,gCAAgC,aAC7C,eAAM,SAAS,EAAC,2BAA2B,YAAE,MAAM,GAAQ,EAC3D,mBACE,SAAS,EAAC,4BAA4B,EACtC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,QAAQ,GACb,EACF,eAAM,SAAS,EAAC,2BAA2B,YAAE,MAAM,GAAQ,IACvD,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import './Input.css';
8
+ type Props = Readonly<{
9
+ 'data-test-id'?: string;
10
+ accept?: string;
11
+ label: string;
12
+ onChange: (files: FileList | null) => void;
13
+ }>;
14
+ export declare const FileInput: ({ accept, label, onChange, "data-test-id": dataTestId, }: Props) => JSX.Element;
15
+ export default FileInput;
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2021-2023 Datalayer, Inc.
4
+ *
5
+ * MIT License
6
+ */
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+ import './Input.css';
14
+ export const FileInput = ({ accept, label, onChange, 'data-test-id': dataTestId, }) => {
15
+ return (_jsxs("div", { className: "Input__wrapper", children: [_jsx("label", { className: "Input__label", children: label }), _jsx("input", { type: "file", accept: accept, className: "Input__input", onChange: (e) => onChange(e.target.files), "data-test-id": dataTestId })] }));
16
+ };
17
+ export default FileInput;
18
+ //# sourceMappingURL=FileInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileInput.js","sourceRoot":"","sources":["../../src/ui/FileInput.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,OAAO,aAAa,CAAC;AASrB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACxB,MAAM,EACN,KAAK,EACL,QAAQ,EACR,cAAc,EAAE,UAAU,GACpB,EAAe,EAAE;IACvB,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,aAC7B,gBAAO,SAAS,EAAC,cAAc,YAAE,KAAK,GAAS,EAC/C,gBACE,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAC,cAAc,EACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,kBAC3B,UAAU,GACxB,IACE,CACP,CAAC;AACJ,CAAC,CAAA;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { LexicalEditor } from 'lexical';
2
+ export declare const ImageResizer: ({ onResizeStart, onResizeEnd, buttonRef, imageRef, maxWidth, editor, showCaption, setShowCaption, }: {
3
+ editor: LexicalEditor;
4
+ buttonRef: {
5
+ current: null | HTMLButtonElement;
6
+ };
7
+ imageRef: {
8
+ current: null | HTMLElement;
9
+ };
10
+ maxWidth?: number | undefined;
11
+ onResizeEnd: (width: 'inherit' | number, height: 'inherit' | number) => void;
12
+ onResizeStart: () => void;
13
+ setShowCaption: (show: boolean) => void;
14
+ showCaption: boolean;
15
+ }) => JSX.Element;
16
+ export default ImageResizer;
@@ -0,0 +1,166 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef } from 'react';
3
+ function clamp(value, min, max) {
4
+ return Math.min(Math.max(value, min), max);
5
+ }
6
+ const Direction = {
7
+ east: 1 << 0,
8
+ north: 1 << 3,
9
+ south: 1 << 1,
10
+ west: 1 << 2,
11
+ };
12
+ export const ImageResizer = ({ onResizeStart, onResizeEnd, buttonRef, imageRef, maxWidth, editor, showCaption, setShowCaption, }) => {
13
+ const controlWrapperRef = useRef(null);
14
+ const userSelect = useRef({
15
+ priority: '',
16
+ value: 'default',
17
+ });
18
+ const positioningRef = useRef({
19
+ currentHeight: 0,
20
+ currentWidth: 0,
21
+ direction: 0,
22
+ isResizing: false,
23
+ ratio: 0,
24
+ startHeight: 0,
25
+ startWidth: 0,
26
+ startX: 0,
27
+ startY: 0,
28
+ });
29
+ const editorRootElement = editor.getRootElement();
30
+ // Find max width, accounting for editor padding.
31
+ const maxWidthContainer = maxWidth
32
+ ? maxWidth
33
+ : editorRootElement !== null
34
+ ? editorRootElement.getBoundingClientRect().width - 20
35
+ : 100;
36
+ const maxHeightContainer = editorRootElement !== null
37
+ ? editorRootElement.getBoundingClientRect().height - 20
38
+ : 100;
39
+ const minWidth = 100;
40
+ const minHeight = 100;
41
+ const setStartCursor = (direction) => {
42
+ const ew = direction === Direction.east || direction === Direction.west;
43
+ const ns = direction === Direction.north || direction === Direction.south;
44
+ const nwse = (direction & Direction.north && direction & Direction.west) ||
45
+ (direction & Direction.south && direction & Direction.east);
46
+ const cursorDir = ew ? 'ew' : ns ? 'ns' : nwse ? 'nwse' : 'nesw';
47
+ if (editorRootElement !== null) {
48
+ editorRootElement.style.setProperty('cursor', `${cursorDir}-resize`, 'important');
49
+ }
50
+ if (document.body !== null) {
51
+ document.body.style.setProperty('cursor', `${cursorDir}-resize`, 'important');
52
+ userSelect.current.value = document.body.style.getPropertyValue('-webkit-user-select');
53
+ userSelect.current.priority = document.body.style.getPropertyPriority('-webkit-user-select');
54
+ document.body.style.setProperty('-webkit-user-select', `none`, 'important');
55
+ }
56
+ };
57
+ const setEndCursor = () => {
58
+ if (editorRootElement !== null) {
59
+ editorRootElement.style.setProperty('cursor', 'default');
60
+ }
61
+ if (document.body !== null) {
62
+ document.body.style.setProperty('cursor', 'default');
63
+ document.body.style.setProperty('-webkit-user-select', userSelect.current.value, userSelect.current.priority);
64
+ }
65
+ };
66
+ const handlePointerDown = (event, direction) => {
67
+ const image = imageRef.current;
68
+ const controlWrapper = controlWrapperRef.current;
69
+ if (image !== null && controlWrapper !== null) {
70
+ const { width, height } = image.getBoundingClientRect();
71
+ const positioning = positioningRef.current;
72
+ positioning.startWidth = width;
73
+ positioning.startHeight = height;
74
+ positioning.ratio = width / height;
75
+ positioning.currentWidth = width;
76
+ positioning.currentHeight = height;
77
+ positioning.startX = event.clientX;
78
+ positioning.startY = event.clientY;
79
+ positioning.isResizing = true;
80
+ positioning.direction = direction;
81
+ setStartCursor(direction);
82
+ onResizeStart();
83
+ controlWrapper.classList.add('image-control-wrapper--resizing');
84
+ image.style.height = `${height}px`;
85
+ image.style.width = `${width}px`;
86
+ document.addEventListener('pointermove', handlePointerMove);
87
+ document.addEventListener('pointerup', handlePointerUp);
88
+ }
89
+ };
90
+ const handlePointerMove = (event) => {
91
+ const image = imageRef.current;
92
+ const positioning = positioningRef.current;
93
+ const isHorizontal = positioning.direction & (Direction.east | Direction.west);
94
+ const isVertical = positioning.direction & (Direction.south | Direction.north);
95
+ if (image !== null && positioning.isResizing) {
96
+ // Corner cursor
97
+ if (isHorizontal && isVertical) {
98
+ let diff = Math.floor(positioning.startX - event.clientX);
99
+ diff = positioning.direction & Direction.east ? -diff : diff;
100
+ const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
101
+ const height = width / positioning.ratio;
102
+ image.style.width = `${width}px`;
103
+ image.style.height = `${height}px`;
104
+ positioning.currentHeight = height;
105
+ positioning.currentWidth = width;
106
+ }
107
+ else if (isVertical) {
108
+ let diff = Math.floor(positioning.startY - event.clientY);
109
+ diff = positioning.direction & Direction.south ? -diff : diff;
110
+ const height = clamp(positioning.startHeight + diff, minHeight, maxHeightContainer);
111
+ image.style.height = `${height}px`;
112
+ positioning.currentHeight = height;
113
+ }
114
+ else {
115
+ let diff = Math.floor(positioning.startX - event.clientX);
116
+ diff = positioning.direction & Direction.east ? -diff : diff;
117
+ const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
118
+ image.style.width = `${width}px`;
119
+ positioning.currentWidth = width;
120
+ }
121
+ }
122
+ };
123
+ const handlePointerUp = () => {
124
+ const image = imageRef.current;
125
+ const positioning = positioningRef.current;
126
+ const controlWrapper = controlWrapperRef.current;
127
+ if (image !== null && controlWrapper !== null && positioning.isResizing) {
128
+ const width = positioning.currentWidth;
129
+ const height = positioning.currentHeight;
130
+ positioning.startWidth = 0;
131
+ positioning.startHeight = 0;
132
+ positioning.ratio = 0;
133
+ positioning.startX = 0;
134
+ positioning.startY = 0;
135
+ positioning.currentWidth = 0;
136
+ positioning.currentHeight = 0;
137
+ positioning.isResizing = false;
138
+ controlWrapper.classList.remove('image-control-wrapper--resizing');
139
+ setEndCursor();
140
+ onResizeEnd(width, height);
141
+ document.removeEventListener('pointermove', handlePointerMove);
142
+ document.removeEventListener('pointerup', handlePointerUp);
143
+ }
144
+ };
145
+ return (_jsxs("div", { ref: controlWrapperRef, children: [!showCaption && (_jsx("button", { className: "image-caption-button", ref: buttonRef, onClick: () => {
146
+ setShowCaption(!showCaption);
147
+ }, children: "Add Caption" })), _jsx("div", { className: "image-resizer image-resizer-n", onPointerDown: (event) => {
148
+ handlePointerDown(event, Direction.north);
149
+ } }), _jsx("div", { className: "image-resizer image-resizer-ne", onPointerDown: (event) => {
150
+ handlePointerDown(event, Direction.north | Direction.east);
151
+ } }), _jsx("div", { className: "image-resizer image-resizer-e", onPointerDown: (event) => {
152
+ handlePointerDown(event, Direction.east);
153
+ } }), _jsx("div", { className: "image-resizer image-resizer-se", onPointerDown: (event) => {
154
+ handlePointerDown(event, Direction.south | Direction.east);
155
+ } }), _jsx("div", { className: "image-resizer image-resizer-s", onPointerDown: (event) => {
156
+ handlePointerDown(event, Direction.south);
157
+ } }), _jsx("div", { className: "image-resizer image-resizer-sw", onPointerDown: (event) => {
158
+ handlePointerDown(event, Direction.south | Direction.west);
159
+ } }), _jsx("div", { className: "image-resizer image-resizer-w", onPointerDown: (event) => {
160
+ handlePointerDown(event, Direction.west);
161
+ } }), _jsx("div", { className: "image-resizer image-resizer-nw", onPointerDown: (event) => {
162
+ handlePointerDown(event, Direction.north | Direction.west);
163
+ } })] }));
164
+ };
165
+ export default ImageResizer;
166
+ //# sourceMappingURL=ImageResizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageResizer.js","sourceRoot":"","sources":["../../src/ui/ImageResizer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Copyright (c) 2021-2023 Datalayer, Inc.
3
+ *
4
+ * MIT License
5
+ */
6
+
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ *
13
+ */
14
+
15
+ .Input__wrapper {
16
+ display: flex;
17
+ flex-direction: row;
18
+ align-items: center;
19
+ margin-bottom: 10px;
20
+ }
21
+ .Input__label {
22
+ display: flex;
23
+ flex: 1;
24
+ color: #666;
25
+ }
26
+ .Input__input {
27
+ display: flex;
28
+ flex: 2;
29
+ border: 1px solid #999;
30
+ padding-top: 7px;
31
+ padding-bottom: 7px;
32
+ padding-left: 10px;
33
+ padding-right: 10px;
34
+ font-size: 16px;
35
+ border-radius: 5px;
36
+ min-width: 0;
37
+ }
@@ -0,0 +1,45 @@
1
+ /*
2
+ * Copyright (c) 2021-2023 Datalayer, Inc.
3
+ *
4
+ * MIT License
5
+ */
6
+
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+
14
+ .KatexEquationAlterer_defaultRow {
15
+ display: flex;
16
+ flex-direction: row;
17
+ margin-top: 10px;
18
+ margin-bottom: 10px;
19
+ justify-content: space-between;
20
+ overflow: hidden;
21
+ }
22
+
23
+ .KatexEquationAlterer_dialogActions {
24
+ display: flex;
25
+ flex-direction: row;
26
+ overflow: hidden;
27
+ margin-top: 20px;
28
+ margin-bottom: 0;
29
+ justify-content: right;
30
+ }
31
+
32
+ .KatexEquationAlterer_centerRow {
33
+ display: flex;
34
+ flex-direction: 'row';
35
+ margin-top: 10px;
36
+ margin-bottom: 10px;
37
+ justify-content: center;
38
+ overflow: hidden;
39
+ }
40
+
41
+ .KatexEquationAlterer_textArea {
42
+ width: 100%;
43
+ resize: none;
44
+ padding: 7px;
45
+ }
@@ -0,0 +1,7 @@
1
+ import './KatexEquationAlterer.css';
2
+ type Props = {
3
+ initialEquation?: string;
4
+ onConfirm: (equation: string, inline: boolean) => void;
5
+ };
6
+ export declare const KatexEquationAlterer: ({ onConfirm, initialEquation, }: Props) => JSX.Element;
7
+ export default KatexEquationAlterer;
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2021-2023 Datalayer, Inc.
4
+ *
5
+ * MIT License
6
+ */
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+ import { useCallback, useState } from 'react';
14
+ import Button from '../ui/Button';
15
+ import KatexRenderer from './KatexRenderer';
16
+ import './KatexEquationAlterer.css';
17
+ export const KatexEquationAlterer = ({ onConfirm, initialEquation = '', }) => {
18
+ const [equation, setEquation] = useState(initialEquation);
19
+ const [inline, setInline] = useState(true);
20
+ const onClick = useCallback(() => {
21
+ onConfirm(equation, inline);
22
+ }, [onConfirm, equation, inline]);
23
+ const onCheckboxChange = useCallback(() => {
24
+ setInline(!inline);
25
+ }, [setInline, inline]);
26
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "KatexEquationAlterer_defaultRow", children: ["Inline", _jsx("input", { type: "checkbox", checked: inline, onChange: onCheckboxChange })] }), _jsx("div", { className: "KatexEquationAlterer_defaultRow", children: "Equation " }), _jsx("div", { className: "KatexEquationAlterer_centerRow", children: inline ? (_jsx("input", { onChange: (event) => {
27
+ setEquation(event.target.value);
28
+ }, value: equation, className: "KatexEquationAlterer_textArea" })) : (_jsx("textarea", { onChange: (event) => {
29
+ setEquation(event.target.value);
30
+ }, value: equation, className: "KatexEquationAlterer_textArea" })) }), _jsx("div", { className: "KatexEquationAlterer_defaultRow", children: "Visualization " }), _jsx("div", { className: "KatexEquationAlterer_centerRow", children: _jsx(KatexRenderer, { equation: equation, inline: false, onClick: () => null }) }), _jsx("div", { className: "KatexEquationAlterer_dialogActions", children: _jsx(Button, { onClick: onClick, children: "Confirm" }) })] }));
31
+ };
32
+ export default KatexEquationAlterer;
33
+ //# sourceMappingURL=KatexEquationAlterer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KatexEquationAlterer.js","sourceRoot":"","sources":["../../src/ui/KatexEquationAlterer.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,OAAO,EAAC,WAAW,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC5C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,4BAA4B,CAAC;AAOpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,SAAS,EACT,eAAe,GAAG,EAAE,GACd,EAAe,EAAE;IACvB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,eAAe,CAAC,CAAC;IAClE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAClC,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACxB,OAAO,CACL,8BACE,eAAK,SAAS,EAAC,iCAAiC,uBAE9C,gBAAO,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAI,IAClE,EACN,cAAK,SAAS,EAAC,iCAAiC,0BAAgB,EAChE,cAAK,SAAS,EAAC,gCAAgC,YAC5C,MAAM,CAAC,CAAC,CAAC,CACR,gBACE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,CAAC,EACD,KAAK,EAAE,QAAQ,EACf,SAAS,EAAC,+BAA+B,GACzC,CACH,CAAC,CAAC,CAAC,CACF,mBACE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,CAAC,EACD,KAAK,EAAE,QAAQ,EACf,SAAS,EAAC,+BAA+B,GACzC,CACH,GACG,EACN,cAAK,SAAS,EAAC,iCAAiC,+BAAqB,EACrE,cAAK,SAAS,EAAC,gCAAgC,YAC7C,KAAC,aAAa,IACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,KAAK,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,GACnB,GACE,EACN,cAAK,SAAS,EAAC,oCAAoC,YACjD,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,wBAAkB,GACtC,IACL,CACJ,CAAC;AACJ,CAAC,CAAA;AAED,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export default function KatexRenderer({ equation, inline, onClick, }: Readonly<{
3
+ equation: string;
4
+ inline: boolean;
5
+ onClick: () => void;
6
+ }>): JSX.Element;
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2021-2023 Datalayer, Inc.
4
+ *
5
+ * MIT License
6
+ */
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+ import katex from 'katex';
14
+ import { useEffect, useRef } from 'react';
15
+ export default function KatexRenderer({ equation, inline, onClick, }) {
16
+ const katexElementRef = useRef(null);
17
+ useEffect(() => {
18
+ const katexElement = katexElementRef.current;
19
+ if (katexElement !== null) {
20
+ katex.render(equation, katexElement, {
21
+ displayMode: !inline,
22
+ errorColor: '#cc0000',
23
+ output: 'html',
24
+ strict: 'warn',
25
+ throwOnError: false,
26
+ trust: false,
27
+ });
28
+ }
29
+ }, [equation, inline]);
30
+ return (
31
+ // We use spacers either side to ensure Android doesn't try and compose from the
32
+ // inner text from Katex. There didn't seem to be any other way of making this work,
33
+ // without having a physical space.
34
+ _jsxs(_Fragment, { children: [_jsx("span", { className: "spacer", children: " " }), _jsx("span", { role: "button", tabIndex: -1, onClick: onClick, ref: katexElementRef }), _jsx("span", { className: "spacer", children: " " })] }));
35
+ }
36
+ //# sourceMappingURL=KatexRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KatexRenderer.js","sourceRoot":"","sources":["../../src/ui/KatexRenderer.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,MAAM,OAAO,CAAC;AAExC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,QAAQ,EACR,MAAM,EACN,OAAO,GAKP;IACA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;QAE7C,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE;gBACnC,WAAW,EAAE,CAAC,MAAM;gBACpB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;gBACd,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;SACJ;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAEvB,OAAO;IACL,gFAAgF;IAChF,oFAAoF;IACpF,mCAAmC;IACnC,8BACE,eAAM,SAAS,EAAC,QAAQ,kBAAS,EACjC,eACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,eAAe,GACpB,EACF,eAAM,SAAS,EAAC,QAAQ,kBAAS,IAChC,CACJ,CAAC;AACJ,CAAC"}