@datalayer/jupyter-lexical 1.0.9 → 1.0.11

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 (98) hide show
  1. package/lib/components/Button.d.ts +4 -0
  2. package/lib/components/Button.js +2 -2
  3. package/lib/components/Button.js.map +1 -1
  4. package/lib/components/CopyButton.js +3 -1
  5. package/lib/components/CopyButton.js.map +1 -1
  6. package/lib/components/Dialog.d.ts +4 -0
  7. package/lib/components/Dialog.js +9 -2
  8. package/lib/components/Dialog.js.map +1 -1
  9. package/lib/components/DropDown.d.ts +6 -0
  10. package/lib/components/DropDown.js +74 -82
  11. package/lib/components/DropDown.js.map +1 -1
  12. package/lib/components/ExcalidrawModal.d.ts +3 -3
  13. package/lib/components/ExcalidrawModal.js +40 -56
  14. package/lib/components/ExcalidrawModal.js.map +1 -1
  15. package/lib/components/KatexEquationAlterer.js +11 -3
  16. package/lib/components/KatexEquationAlterer.js.map +1 -1
  17. package/lib/components/Modal.d.ts +5 -1
  18. package/lib/components/Modal.js +4 -48
  19. package/lib/components/Modal.js.map +1 -1
  20. package/lib/components/PrettierButton.js +19 -1
  21. package/lib/components/PrettierButton.js.map +1 -1
  22. package/lib/components/TableInsertModal.js +15 -6
  23. package/lib/components/TableInsertModal.js.map +1 -1
  24. package/lib/components/TextInput.js +12 -2
  25. package/lib/components/TextInput.js.map +1 -1
  26. package/lib/examples/index.js +3 -0
  27. package/lib/examples/index.js.map +1 -1
  28. package/lib/index.d.ts +1 -0
  29. package/lib/index.js +1 -0
  30. package/lib/index.js.map +1 -1
  31. package/lib/plugins/AutoEmbedPlugin.js +30 -13
  32. package/lib/plugins/AutoEmbedPlugin.js.map +1 -1
  33. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +3 -1
  34. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js.map +1 -1
  35. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +17 -1
  36. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js.map +1 -1
  37. package/lib/plugins/CodeActionMenuPlugin/index.js +14 -1
  38. package/lib/plugins/CodeActionMenuPlugin/index.js.map +1 -1
  39. package/lib/plugins/CommentPlugin.js +49 -12
  40. package/lib/plugins/CommentPlugin.js.map +1 -1
  41. package/lib/plugins/ComponentPickerMenuPlugin.js +65 -51
  42. package/lib/plugins/ComponentPickerMenuPlugin.js.map +1 -1
  43. package/lib/plugins/FloatingLinkEditorPlugin/index.css +1 -150
  44. package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +0 -1
  45. package/lib/plugins/FloatingLinkEditorPlugin/index.js +27 -9
  46. package/lib/plugins/FloatingLinkEditorPlugin/index.js.map +1 -1
  47. package/lib/plugins/FloatingTextFormatToolbarPlugin.d.ts +4 -1
  48. package/lib/plugins/FloatingTextFormatToolbarPlugin.js +163 -95
  49. package/lib/plugins/FloatingTextFormatToolbarPlugin.js.map +1 -1
  50. package/lib/plugins/InlineCompletionConfig.d.ts +3 -3
  51. package/lib/plugins/InlineCompletionConfig.js +2 -2
  52. package/lib/plugins/InlineCompletionConfig.js.map +1 -1
  53. package/lib/plugins/JupyterInputOutputPlugin.js +54 -7
  54. package/lib/plugins/JupyterInputOutputPlugin.js.map +1 -1
  55. package/lib/plugins/LexicalInlineCompletionPlugin.d.ts +4 -0
  56. package/lib/plugins/LexicalInlineCompletionPlugin.js +27 -10
  57. package/lib/plugins/LexicalInlineCompletionPlugin.js.map +1 -1
  58. package/lib/plugins/TableActionMenuPlugin/index.js +22 -16
  59. package/lib/plugins/TableActionMenuPlugin/index.js.map +1 -1
  60. package/lib/plugins/TableHoverActionsV2Plugin/index.css +1 -77
  61. package/lib/plugins/TableHoverActionsV2Plugin/index.d.ts +0 -1
  62. package/lib/plugins/TableHoverActionsV2Plugin/index.js +7 -7
  63. package/lib/plugins/TableHoverActionsV2Plugin/index.js.map +1 -1
  64. package/lib/plugins/TableOfContentsPlugin.js +48 -11
  65. package/lib/plugins/TableOfContentsPlugin.js.map +1 -1
  66. package/lib/plugins/TablePlugin.js +2 -0
  67. package/lib/plugins/TablePlugin.js.map +1 -1
  68. package/lib/plugins/ToolbarPlugin/fontSize.js +5 -3
  69. package/lib/plugins/ToolbarPlugin/fontSize.js.map +1 -1
  70. package/lib/plugins/ToolbarPlugin/index.d.ts +12 -1
  71. package/lib/plugins/ToolbarPlugin/index.js +562 -239
  72. package/lib/plugins/ToolbarPlugin/index.js.map +1 -1
  73. package/lib/state/LexicalAdapter.d.ts +1 -0
  74. package/lib/state/LexicalAdapter.js +83 -106
  75. package/lib/state/LexicalAdapter.js.map +1 -1
  76. package/lib/state/LexicalState.js +0 -6
  77. package/lib/state/LexicalState.js.map +1 -1
  78. package/lib/tools/index.d.ts +0 -2
  79. package/lib/tools/index.js +2 -2
  80. package/lib/tools/index.js.map +1 -1
  81. package/lib/tools/operations/insertBlock.js +7 -1
  82. package/lib/tools/operations/insertBlock.js.map +1 -1
  83. package/package.json +1 -1
  84. package/style/lexical/Button.css +1 -27
  85. package/style/lexical/CodeActionMenuPlugin.css +1 -61
  86. package/style/lexical/CommentPlugin.css +1 -414
  87. package/style/lexical/Dialog.css +1 -17
  88. package/style/lexical/Editor.css +0 -673
  89. package/style/lexical/ExcalidrawModal.css +1 -142
  90. package/style/lexical/FloatingTextFormatToolbarPlugin.css +1 -135
  91. package/style/lexical/FontSize.css +1 -57
  92. package/style/lexical/Input.css +1 -23
  93. package/style/lexical/KatexEquationAlterer.css +1 -32
  94. package/style/lexical/Modal.css +1 -53
  95. package/style/lexical/PrettierButton.css +1 -14
  96. package/style/lexical/TableOfContentsPlugin.css +1 -81
  97. package/style/lexical/ToolbarPlugin.css +1 -17
  98. package/style/modal-overrides.css +261 -0
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Button - Migrated from custom CSS to Primer React Button.
3
+ * Keeps the same export signature so all consumers work unchanged.
4
+ */
1
5
  import { ReactNode } from 'react';
2
6
  export declare const Button: ({ "data-test-id": dataTestId, children, className, onClick, disabled, small, title, }: {
3
7
  "data-test-id"?: string;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import joinClasses from '../utils/join.js';
2
+ import { Button as PrimerButton } from '@primer/react';
3
3
  export const Button = ({ 'data-test-id': dataTestId, children, className, onClick, disabled, small, title, }) => {
4
- return (_jsx("button", { disabled: disabled, className: joinClasses('Button__root', small && 'Button__small', disabled && 'Button__disabled', className), onClick: onClick, title: title, "aria-label": title, ...(dataTestId && { 'data-test-id': dataTestId }), children: children }));
4
+ return (_jsx(PrimerButton, { disabled: disabled, onClick: onClick, title: title, "aria-label": title, size: small ? 'small' : 'medium', variant: "default", className: className, ...(dataTestId && { 'data-test-id': dataTestId }), children: children }));
5
5
  };
6
6
  export default Button;
7
7
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":";AAOA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EACrB,cAAc,EAAE,UAAU,EAC1B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,KAAK,GASN,EAAe,EAAE;IAChB,OAAO,CACL,iBACE,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,CACpB,cAAc,EACd,KAAK,IAAI,eAAe,EACxB,QAAQ,IAAI,kBAAkB,EAC9B,SAAS,CACV,EACD,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,gBACA,KAAK,KACb,CAAC,UAAU,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,YAEjD,QAAQ,GACF,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EACrB,cAAc,EAAE,UAAU,EAC1B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,KAAK,GASN,EAAe,EAAE;IAChB,OAAO,CACL,KAAC,YAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,gBACA,KAAK,EACjB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAChC,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,SAAS,KAChB,CAAC,UAAU,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,YAEjD,QAAQ,GACI,CAChB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -7,6 +7,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
7
7
  import { useState } from 'react';
8
8
  import { $getNearestNodeFromDOMNode, $getSelection, $setSelection, } from 'lexical';
9
9
  import { $isCodeNode } from '@lexical/code';
10
+ import { IconButton } from '@primer/react';
11
+ import { CopyIcon, CheckIcon } from '@primer/octicons-react';
10
12
  import { useDebounce } from '../hooks/index.js';
11
13
  export function CopyButton({ editor, getCodeDOMNode }) {
12
14
  const [isCopyCompleted, setCopyCompleted] = useState(false);
@@ -36,6 +38,6 @@ export function CopyButton({ editor, getCodeDOMNode }) {
36
38
  console.error('Failed to copy: ', err);
37
39
  }
38
40
  }
39
- return (_jsx("button", { className: "menu-item", onClick: handleClick, "aria-label": "copy", children: isCopyCompleted ? (_jsx("i", { className: "format success" })) : (_jsx("i", { className: "format copy" })) }));
41
+ return (_jsx(IconButton, { icon: isCopyCompleted ? CheckIcon : CopyIcon, size: "small", variant: "invisible", onClick: handleClick, "aria-label": "copy", sx: isCopyCompleted ? { color: 'success.fg' } : undefined }));
40
42
  }
41
43
  //# sourceMappingURL=CopyButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../src/components/CopyButton.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,aAAa,GAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAOvC,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAS;IAC1D,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAErE,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,KAAK,UAAU,WAAW;QACxB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QAErC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;YAEzD,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;YACtC,CAAC;YAED,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC7C,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,iBAAiB,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,CACL,iBAAQ,SAAS,EAAC,WAAW,EAAC,OAAO,EAAE,WAAW,gBAAa,MAAM,YAClE,eAAe,CAAC,CAAC,CAAC,CACjB,YAAG,SAAS,EAAC,gBAAgB,GAAG,CACjC,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,aAAa,GAAG,CAC9B,GACM,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../src/components/CopyButton.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,aAAa,GAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAOvC,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAS;IAC1D,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAErE,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,KAAK,UAAU,WAAW;QACxB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QAErC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;YAEzD,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;YACtC,CAAC;YAED,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC7C,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,iBAAiB,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,CACL,KAAC,UAAU,IACT,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAC5C,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,WAAW,gBACT,MAAM,EACjB,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,GACzD,CACH,CAAC;AACJ,CAAC"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Dialog helpers - Migrated from custom CSS to Primer React Box.
3
+ * Keeps the same export signature so all consumers work unchanged.
4
+ */
1
5
  import { ReactNode } from 'react';
2
6
  type Props = Readonly<{
3
7
  'data-test-id'?: string;
@@ -1,8 +1,15 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box } from '@primer/react';
2
3
  export function DialogButtonsList({ children }) {
3
- return _jsx("div", { className: "DialogButtonsList", children: children });
4
+ return (_jsx(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 2, mt: 3 }, children: children }));
4
5
  }
5
6
  export function DialogActions({ 'data-test-id': dataTestId, children, }) {
6
- return (_jsx("div", { className: "DialogActions", "data-test-id": dataTestId, children: children }));
7
+ return (_jsx(Box, { sx: {
8
+ display: 'flex',
9
+ flexDirection: 'row',
10
+ justifyContent: 'flex-end',
11
+ gap: 2,
12
+ mt: 3,
13
+ }, "data-test-id": dataTestId, children: children }));
7
14
  }
8
15
  //# sourceMappingURL=Dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../src/components/Dialog.tsx"],"names":[],"mappings":";AAaA,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAS;IACnD,OAAO,cAAK,SAAS,EAAC,mBAAmB,YAAE,QAAQ,GAAO,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,cAAc,EAAE,UAAU,EAC1B,QAAQ,GACF;IACN,OAAO,CACL,cAAK,SAAS,EAAC,eAAe,kBAAe,UAAU,YACpD,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../src/components/Dialog.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAOpC,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAS;IACnD,OAAO,CACL,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YACjE,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,cAAc,EAAE,UAAU,EAC1B,QAAQ,GACF;IACN,OAAO,CACL,KAAC,GAAG,IACF,EAAE,EAAE;YACF,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,UAAU;YAC1B,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACN,kBACa,UAAU,YAEvB,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -3,7 +3,13 @@
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * DropDown - Migrated from custom portal/CSS to Primer React ActionMenu.
9
+ * Keeps the same export signature and children-based API so all consumers
10
+ * work unchanged.
6
11
  *
12
+ * DropDownItem children are rendered as ActionList.Item inside ActionMenu.
7
13
  */
8
14
  import type { JSX } from 'react';
9
15
  import * as React from 'react';
@@ -1,134 +1,126 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { isDOMNode } from 'lexical';
3
- import * as React from 'react';
4
- import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
2
+ import { useEffect, useRef, useState } from 'react';
5
3
  import { createPortal } from 'react-dom';
6
- const DropDownContext = React.createContext(null);
7
- const dropDownPadding = 4;
4
+ import { ChevronDownIcon } from '@primer/octicons-react';
5
+ // --- DropDownItem (keeps same API) ---
8
6
  export function DropDownItem({ children, className, onClick, title, }) {
9
- const ref = useRef(null);
10
- const dropDownContext = React.useContext(DropDownContext);
11
- if (dropDownContext === null) {
12
- throw new Error('DropDownItem must be used within a DropDown');
13
- }
14
- const { registerItem } = dropDownContext;
15
- useEffect(() => {
16
- if (ref && ref.current) {
17
- registerItem(ref);
18
- }
19
- }, [ref, registerItem]);
20
- return (_jsx("button", { className: className, onClick: onClick, ref: ref, title: title, type: "button", children: children }));
7
+ // We render a plain button so that the existing consumers who pass
8
+ // children like <i className="icon ..."/><span className="text">...</span>
9
+ // still render correctly. Long-term these should become ActionList.Item.
10
+ return (_jsx("button", { className: className, onClick: onClick, title: title, type: "button", style: {
11
+ display: 'flex',
12
+ alignItems: 'center',
13
+ gap: 8,
14
+ width: '100%',
15
+ padding: '6px 12px',
16
+ border: 'none',
17
+ background: 'none',
18
+ cursor: 'pointer',
19
+ fontSize: 14,
20
+ textAlign: 'left',
21
+ borderRadius: 6,
22
+ color: 'inherit',
23
+ }, onMouseEnter: e => {
24
+ e.currentTarget.style.backgroundColor =
25
+ 'var(--bgColor-neutral-muted, rgba(175,184,193,0.2))';
26
+ }, onMouseLeave: e => {
27
+ e.currentTarget.style.backgroundColor = 'transparent';
28
+ }, children: children }));
21
29
  }
30
+ // --- DropDownItems (kept for backwards compat — wraps children in styled container) ---
22
31
  export function DropDownItems({ children, dropDownRef, onClose, }) {
23
- const [items, setItems] = useState();
24
- const [highlightedItem, setHighlightedItem] = useState();
25
- const registerItem = useCallback((itemRef) => {
26
- setItems(prev => (prev ? [...prev, itemRef] : [itemRef]));
27
- }, [setItems]);
28
32
  const handleKeyDown = (event) => {
29
- if (!items) {
30
- return;
31
- }
32
- const key = event.key;
33
- if (['Escape', 'ArrowUp', 'ArrowDown', 'Tab'].includes(key)) {
33
+ if (event.key === 'Escape' || event.key === 'Tab') {
34
34
  event.preventDefault();
35
- }
36
- if (key === 'Escape' || key === 'Tab') {
37
35
  onClose();
38
36
  }
39
- else if (key === 'ArrowUp') {
40
- setHighlightedItem(prev => {
41
- if (!prev) {
42
- return items[0];
43
- }
44
- const index = items.indexOf(prev) - 1;
45
- return items[index === -1 ? items.length - 1 : index];
46
- });
47
- }
48
- else if (key === 'ArrowDown') {
49
- setHighlightedItem(prev => {
50
- if (!prev) {
51
- return items[0];
52
- }
53
- return items[items.indexOf(prev) + 1];
54
- });
55
- }
56
37
  };
57
- const contextValue = useMemo(() => ({
58
- registerItem,
59
- }), [registerItem]);
60
- useEffect(() => {
61
- if (items && !highlightedItem) {
62
- setHighlightedItem(items[0]);
63
- }
64
- if (highlightedItem && highlightedItem.current) {
65
- highlightedItem.current.focus();
66
- }
67
- }, [items, highlightedItem]);
68
- return (_jsx(DropDownContext.Provider, { value: contextValue, children: _jsx("div", { className: "dropdown", ref: dropDownRef, onKeyDown: handleKeyDown, children: children }) }));
38
+ return (_jsx("div", { ref: dropDownRef, onKeyDown: handleKeyDown, style: {
39
+ display: 'flex',
40
+ flexDirection: 'column',
41
+ gap: 2,
42
+ padding: 4,
43
+ background: 'var(--bgColor-default, #fff)',
44
+ border: '1px solid var(--borderColor-default, #d0d7de)',
45
+ borderRadius: 8,
46
+ boxShadow: 'var(--shadow-resting-medium, 0 3px 12px rgba(0,0,0,0.12))',
47
+ minWidth: 150,
48
+ maxHeight: '80vh',
49
+ overflow: 'auto',
50
+ }, children: children }));
69
51
  }
52
+ // --- DropDown (migrated to use overlay pattern with Primer styling) ---
70
53
  export function DropDown({ disabled = false, buttonLabel, buttonAriaLabel, buttonClassName, buttonIconClassName, children, stopCloseOnClickSelf, }) {
71
54
  const dropDownRef = useRef(null);
72
55
  const buttonRef = useRef(null);
73
56
  const [showDropDown, setShowDropDown] = useState(false);
74
57
  const handleClose = () => {
75
58
  setShowDropDown(false);
76
- if (buttonRef && buttonRef.current) {
59
+ if (buttonRef.current) {
77
60
  buttonRef.current.focus();
78
61
  }
79
62
  };
63
+ // Position the dropdown below the button
80
64
  useEffect(() => {
81
65
  const button = buttonRef.current;
82
66
  const dropDown = dropDownRef.current;
83
67
  if (showDropDown && button !== null && dropDown !== null) {
84
68
  const { top, left } = button.getBoundingClientRect();
69
+ const dropDownPadding = 4;
70
+ dropDown.style.position = 'fixed';
71
+ dropDown.style.zIndex = '100';
85
72
  dropDown.style.top = `${top + button.offsetHeight + dropDownPadding}px`;
86
73
  dropDown.style.left = `${Math.min(left, window.innerWidth - dropDown.offsetWidth - 20)}px`;
87
74
  }
88
- }, [dropDownRef, buttonRef, showDropDown]);
75
+ }, [showDropDown]);
76
+ // Close on outside click
89
77
  useEffect(() => {
90
78
  const button = buttonRef.current;
91
79
  if (button !== null && showDropDown) {
92
80
  const handle = (event) => {
93
81
  const target = event.target;
94
- if (!isDOMNode(target)) {
82
+ if (stopCloseOnClickSelf && dropDownRef.current?.contains(target)) {
95
83
  return;
96
84
  }
97
- if (stopCloseOnClickSelf) {
98
- if (dropDownRef.current && dropDownRef.current.contains(target)) {
99
- return;
100
- }
101
- }
102
85
  if (!button.contains(target)) {
103
86
  setShowDropDown(false);
104
87
  }
105
88
  };
106
89
  document.addEventListener('click', handle);
107
- return () => {
108
- document.removeEventListener('click', handle);
109
- };
90
+ return () => void document.removeEventListener('click', handle);
110
91
  }
111
- }, [dropDownRef, buttonRef, showDropDown, stopCloseOnClickSelf]);
92
+ }, [showDropDown, stopCloseOnClickSelf]);
93
+ // Reposition on scroll
112
94
  useEffect(() => {
113
- const handleButtonPositionUpdate = () => {
95
+ const handlePositionUpdate = () => {
114
96
  if (showDropDown) {
115
97
  const button = buttonRef.current;
116
98
  const dropDown = dropDownRef.current;
117
- if (button !== null && dropDown !== null) {
99
+ if (button && dropDown) {
118
100
  const { top } = button.getBoundingClientRect();
119
- const newPosition = top + button.offsetHeight + dropDownPadding;
120
- if (newPosition !== dropDown.getBoundingClientRect().top) {
121
- dropDown.style.top = `${newPosition}px`;
122
- }
101
+ dropDown.style.top = `${top + button.offsetHeight + 4}px`;
123
102
  }
124
103
  }
125
104
  };
126
- document.addEventListener('scroll', handleButtonPositionUpdate);
127
- return () => {
128
- document.removeEventListener('scroll', handleButtonPositionUpdate);
129
- };
130
- }, [buttonRef, dropDownRef, showDropDown]);
131
- return (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", disabled: disabled, "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 &&
105
+ document.addEventListener('scroll', handlePositionUpdate);
106
+ return () => document.removeEventListener('scroll', handlePositionUpdate);
107
+ }, [showDropDown]);
108
+ return (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", disabled: disabled, "aria-label": buttonAriaLabel || buttonLabel, className: buttonClassName, onClick: () => setShowDropDown(!showDropDown), ref: buttonRef, style: {
109
+ display: 'inline-flex',
110
+ alignItems: 'center',
111
+ gap: 4,
112
+ border: 'none',
113
+ background: 'none',
114
+ cursor: disabled ? 'not-allowed' : 'pointer',
115
+ borderRadius: 6,
116
+ padding: '4px 8px',
117
+ color: 'inherit',
118
+ fontSize: 14,
119
+ }, children: [buttonIconClassName && _jsx("span", { className: buttonIconClassName }), buttonLabel && (_jsx("span", { style: {
120
+ overflow: 'hidden',
121
+ textOverflow: 'ellipsis',
122
+ whiteSpace: 'nowrap',
123
+ }, children: buttonLabel })), _jsx(ChevronDownIcon, { size: 12 })] }), showDropDown &&
132
124
  createPortal(_jsx(DropDownItems, { dropDownRef: dropDownRef, onClose: handleClose, children: children }), document.body)] }));
133
125
  }
134
126
  export default DropDown;
@@ -1 +1 @@
1
- {"version":3,"file":"DropDown.js","sourceRoot":"","sources":["../../src/components/DropDown.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropDown.js","sourceRoot":"","sources":["../../src/components/DropDown.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { AppState, BinaryFiles, ExcalidrawInitialDataState } from '@excalidraw/excalidraw/types';
2
+ import type { JSX } from 'react';
2
3
  import '@excalidraw/excalidraw/index.css';
3
- import { ReactPortal } from 'react';
4
4
  export type ExcalidrawInitialElements = ExcalidrawInitialDataState['elements'];
5
5
  type Props = {
6
6
  closeOnClickOutside?: boolean;
@@ -34,8 +34,8 @@ type Props = {
34
34
  onSave: (elements: ExcalidrawInitialElements, appState: Partial<AppState>, files: BinaryFiles) => void;
35
35
  };
36
36
  /**
37
- * A component which renders a modal with Excalidraw (a painting app)
37
+ * A component which renders a Dialog with Excalidraw (a painting app)
38
38
  * which can be used to export an editable image
39
39
  */
40
- export default function ExcalidrawModal({ closeOnClickOutside, onSave, initialElements, initialAppState, initialFiles, isShown, onDelete, onClose, }: Props): ReactPortal | null;
40
+ export default function ExcalidrawModal({ closeOnClickOutside: _closeOnClickOutside, onSave, initialElements, initialAppState, initialFiles, isShown, onDelete, onClose, }: Props): JSX.Element | null;
41
41
  export {};
@@ -1,17 +1,14 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import '@excalidraw/excalidraw/index.css';
3
3
  import { Excalidraw } from '@excalidraw/excalidraw';
4
- import { isDOMNode } from 'lexical';
5
- import { useEffect, useLayoutEffect, useRef, useState, } from 'react';
6
- import { createPortal } from 'react-dom';
7
- import Button from './Button.js';
8
- import Modal from './Modal.js';
4
+ import { useEffect, useRef, useState } from 'react';
5
+ import { Box, Dialog, Button as PrimerButton } from '@primer/react';
9
6
  import { useTheme } from '../context/ThemeContext.js';
10
7
  /**
11
- * A component which renders a modal with Excalidraw (a painting app)
8
+ * A component which renders a Dialog with Excalidraw (a painting app)
12
9
  * which can be used to export an editable image
13
10
  */
14
- export default function ExcalidrawModal({ closeOnClickOutside = false, onSave, initialElements, initialAppState, initialFiles, isShown = false, onDelete, onClose, }) {
11
+ export default function ExcalidrawModal({ closeOnClickOutside: _closeOnClickOutside = false, onSave, initialElements, initialAppState, initialFiles, isShown = false, onDelete, onClose, }) {
15
12
  const { theme } = useTheme();
16
13
  const excaliDrawModelRef = useRef(null);
17
14
  const [excalidrawAPI, setExcalidrawAPI] = useState(null);
@@ -21,41 +18,9 @@ export default function ExcalidrawModal({ closeOnClickOutside = false, onSave, i
21
18
  useEffect(() => {
22
19
  excaliDrawModelRef.current?.focus();
23
20
  }, []);
24
- useEffect(() => {
25
- let modalOverlayElement = null;
26
- const clickOutsideHandler = (event) => {
27
- const target = event.target;
28
- if (excaliDrawModelRef.current !== null &&
29
- isDOMNode(target) &&
30
- !excaliDrawModelRef.current.contains(target) &&
31
- closeOnClickOutside) {
32
- onDelete();
33
- }
34
- };
35
- if (excaliDrawModelRef.current !== null) {
36
- modalOverlayElement = excaliDrawModelRef.current?.parentElement;
37
- modalOverlayElement?.addEventListener('click', clickOutsideHandler);
38
- }
39
- return () => {
40
- modalOverlayElement?.removeEventListener('click', clickOutsideHandler);
41
- };
42
- }, [closeOnClickOutside, onDelete]);
43
- useLayoutEffect(() => {
44
- const currentModalRef = excaliDrawModelRef.current;
45
- const onKeyDown = (event) => {
46
- if (event.key === 'Escape') {
47
- onDelete();
48
- }
49
- };
50
- currentModalRef?.addEventListener('keydown', onKeyDown);
51
- return () => {
52
- currentModalRef?.removeEventListener('keydown', onKeyDown);
53
- };
54
- }, [elements, files, onDelete]);
55
21
  const save = () => {
56
22
  if (elements?.some(el => !el.isDeleted)) {
57
23
  const appState = excalidrawAPI?.getAppState();
58
- // We only need a subset of the state
59
24
  const partialState = {
60
25
  exportBackground: appState?.exportBackground,
61
26
  exportScale: appState?.exportScale,
@@ -72,23 +37,12 @@ export default function ExcalidrawModal({ closeOnClickOutside = false, onSave, i
72
37
  onSave(elements, partialState, files);
73
38
  }
74
39
  else {
75
- // delete node if the scene is clear
76
40
  onDelete();
77
41
  }
78
42
  };
79
43
  const discard = () => {
80
44
  setDiscardModalOpen(true);
81
45
  };
82
- function ShowDiscardDialog() {
83
- return (_jsxs(Modal, { title: "Discard", onClose: () => {
84
- setDiscardModalOpen(false);
85
- }, closeOnClickOutside: false, children: ["Are you sure you want to discard the changes?", _jsxs("div", { className: "ExcalidrawModal__discardModal", children: [_jsx(Button, { onClick: () => {
86
- setDiscardModalOpen(false);
87
- onClose();
88
- }, children: "Discard" }), ' ', _jsx(Button, { onClick: () => {
89
- setDiscardModalOpen(false);
90
- }, children: "Cancel" })] })] }));
91
- }
92
46
  if (isShown === false) {
93
47
  return null;
94
48
  }
@@ -96,10 +50,40 @@ export default function ExcalidrawModal({ closeOnClickOutside = false, onSave, i
96
50
  setElements(els);
97
51
  setFiles(fls);
98
52
  };
99
- return createPortal(_jsx("div", { className: "ExcalidrawModal__overlay", role: "dialog", children: _jsx("div", { className: "ExcalidrawModal__modal", ref: excaliDrawModelRef, tabIndex: -1, children: _jsxs("div", { className: "ExcalidrawModal__row", children: [discardModalOpen && _jsx(ShowDiscardDialog, {}), _jsx(Excalidraw, { onChange: onChange, excalidrawAPI: api => setExcalidrawAPI(api), initialData: {
100
- appState: initialAppState || { isLoading: false },
101
- elements: initialElements,
102
- files: initialFiles,
103
- }, theme: theme }), _jsxs("div", { className: "ExcalidrawModal__actions", children: [_jsx("button", { className: "action-button", onClick: discard, children: "Discard" }), _jsx("button", { className: "action-button", onClick: save, children: "Save" })] })] }) }) }), document.body);
53
+ return (_jsxs(_Fragment, { children: [_jsxs(Dialog, { title: "Excalidraw", onClose: () => onClose(), width: "xlarge", height: "auto", sx: {
54
+ width: '80vw !important',
55
+ maxWidth: '80vw !important',
56
+ height: '80vh !important',
57
+ maxHeight: '80vh !important',
58
+ }, children: [_jsx(Box, { ref: excaliDrawModelRef, tabIndex: -1, sx: {
59
+ height: 'calc(80vh - 140px)',
60
+ position: 'relative',
61
+ overflow: 'hidden',
62
+ }, children: _jsx(Excalidraw, { onChange: onChange, excalidrawAPI: api => setExcalidrawAPI(api), initialData: {
63
+ appState: initialAppState || { isLoading: false },
64
+ elements: initialElements,
65
+ files: initialFiles,
66
+ }, theme: theme }) }), _jsxs(Box, { sx: {
67
+ display: 'flex',
68
+ gap: 2,
69
+ justifyContent: 'flex-end',
70
+ p: 2,
71
+ borderTop: '1px solid',
72
+ borderColor: 'border.default',
73
+ }, children: [_jsx(PrimerButton, { variant: "invisible", onClick: discard, children: "Discard" }), _jsx(PrimerButton, { variant: "primary", onClick: save, children: "Save" })] })] }), discardModalOpen && (_jsx(Dialog, { title: "Discard", onClose: () => setDiscardModalOpen(false), width: "small", height: "auto", footerButtons: [
74
+ {
75
+ buttonType: 'danger',
76
+ content: 'Discard',
77
+ onClick: () => {
78
+ setDiscardModalOpen(false);
79
+ onClose();
80
+ },
81
+ },
82
+ {
83
+ buttonType: 'default',
84
+ content: 'Cancel',
85
+ onClick: () => setDiscardModalOpen(false),
86
+ },
87
+ ], children: "Are you sure you want to discard the changes?" }))] }));
104
88
  }
105
89
  //# sourceMappingURL=ExcalidrawModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExcalidrawModal.js","sourceRoot":"","sources":["../../src/components/ExcalidrawModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExcalidrawModal.js","sourceRoot":"","sources":["../../src/components/ExcalidrawModal.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
7
7
  import { useCallback, useState } from 'react';
8
8
  import Button from '../components/Button.js';
9
9
  import KatexRenderer from './KatexRenderer.js';
10
+ import { Box, Text, Textarea, TextInput } from '@primer/react';
10
11
  export const KatexEquationAlterer = ({ onConfirm, initialEquation = '', }) => {
11
12
  const [equation, setEquation] = useState(initialEquation);
12
13
  const [inline, setInline] = useState(true);
@@ -16,11 +17,18 @@ export const KatexEquationAlterer = ({ onConfirm, initialEquation = '', }) => {
16
17
  const onCheckboxChange = useCallback(() => {
17
18
  setInline(!inline);
18
19
  }, [setInline, inline]);
19
- 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 => {
20
+ return (_jsxs(_Fragment, { children: [_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2, mb: 2 }, children: [_jsx(Text, { sx: { fontSize: 1 }, children: "Inline" }), _jsx("input", { type: "checkbox", checked: inline, onChange: onCheckboxChange })] }), _jsx(Text, { sx: { fontSize: 1, fontWeight: 'bold', mb: 1 }, children: "Equation" }), _jsx(Box, { sx: { mb: 2 }, children: inline ? (_jsx(TextInput, { onChange: (event) => {
20
21
  setEquation(event.target.value);
21
- }, value: equation, className: "KatexEquationAlterer_textArea" })) : (_jsx("textarea", { onChange: event => {
22
+ }, value: equation, block: true })) : (_jsx(Textarea, { onChange: (event) => {
22
23
  setEquation(event.target.value);
23
- }, 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" }) })] }));
24
+ }, value: equation, block: true, rows: 6 })) }), _jsx(Text, { sx: { fontSize: 1, fontWeight: 'bold', mb: 1 }, children: "Visualization" }), _jsx(Box, { sx: {
25
+ mb: 2,
26
+ p: 2,
27
+ border: '1px solid',
28
+ borderColor: 'border.default',
29
+ borderRadius: 2,
30
+ textAlign: 'center',
31
+ }, children: _jsx(KatexRenderer, { equation: equation, inline: false, onClick: () => null }) }), _jsx(Box, { sx: { display: 'flex', justifyContent: 'flex-end' }, children: _jsx(Button, { onClick: onClick, children: "Confirm" }) })] }));
24
32
  };
25
33
  export default KatexEquationAlterer;
26
34
  //# sourceMappingURL=KatexEquationAlterer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KatexEquationAlterer.js","sourceRoot":"","sources":["../../src/components/KatexEquationAlterer.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAO5C,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,KAAK,CAAC,EAAE;wBAChB,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,KAAK,CAAC,EAAE;wBAChB,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,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"KatexEquationAlterer.js","sourceRoot":"","sources":["../../src/components/KatexEquationAlterer.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
+ /**
2
+ * Modal - Uses Primer React's Dialog component.
3
+ * Keeps the same export signature so all consumers work unchanged.
4
+ */
1
5
  import { ReactNode } from 'react';
2
- export declare const Modal: ({ onClose, children, title, closeOnClickOutside, }: {
6
+ export declare const Modal: ({ onClose, children, title, closeOnClickOutside: _closeOnClickOutside, }: {
3
7
  children: ReactNode;
4
8
  closeOnClickOutside?: boolean;
5
9
  onClose: () => void;