@yurikilian/lex4 0.3.2 → 1.1.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 (38) hide show
  1. package/README.md +71 -4
  2. package/dist/ast/document-serializer.d.ts.map +1 -1
  3. package/dist/components/EditorSidebar.d.ts.map +1 -1
  4. package/dist/components/HeaderFooterActions.d.ts.map +1 -1
  5. package/dist/components/HeaderFooterToggle.d.ts.map +1 -1
  6. package/dist/components/HistorySidebar.d.ts.map +1 -1
  7. package/dist/components/Lex4Editor.d.ts.map +1 -1
  8. package/dist/components/PageBody.d.ts.map +1 -1
  9. package/dist/components/PageView.d.ts.map +1 -1
  10. package/dist/components/Toolbar.d.ts.map +1 -1
  11. package/dist/components/VariablePanel.d.ts.map +1 -1
  12. package/dist/components/VariablePicker.d.ts.map +1 -1
  13. package/dist/constants/dimensions.d.ts +6 -2
  14. package/dist/constants/dimensions.d.ts.map +1 -1
  15. package/dist/constants/index.d.ts +1 -1
  16. package/dist/constants/index.d.ts.map +1 -1
  17. package/dist/constants/page-layout.d.ts +0 -4
  18. package/dist/constants/page-layout.d.ts.map +1 -1
  19. package/dist/extensions/ast-extension.d.ts +9 -0
  20. package/dist/extensions/ast-extension.d.ts.map +1 -1
  21. package/dist/extensions/extension-context.d.ts +3 -1
  22. package/dist/extensions/extension-context.d.ts.map +1 -1
  23. package/dist/extensions/types.d.ts +12 -0
  24. package/dist/extensions/types.d.ts.map +1 -1
  25. package/dist/extensions/variables-extension.d.ts +6 -0
  26. package/dist/extensions/variables-extension.d.ts.map +1 -1
  27. package/dist/lex4-editor.cjs +402 -386
  28. package/dist/lex4-editor.cjs.map +1 -1
  29. package/dist/lex4-editor.js +402 -386
  30. package/dist/lex4-editor.js.map +1 -1
  31. package/dist/lexical/theme.d.ts +1 -1
  32. package/dist/style.css +789 -695
  33. package/dist/types/editor-handle.d.ts +12 -7
  34. package/dist/types/editor-handle.d.ts.map +1 -1
  35. package/dist/types/editor-props.d.ts +2 -1
  36. package/dist/types/editor-props.d.ts.map +1 -1
  37. package/dist/variables/variable-node.d.ts.map +1 -1
  38. package/package.json +1 -1
package/README.md CHANGED
@@ -175,7 +175,7 @@ The main editor component. Drop it into any React application.
175
175
  | `readOnly` | `boolean` | `false` | Disable editing (view-only mode) |
176
176
  | `extensions` | `Lex4Extension[]` | `[]` | Extensions to load (e.g., `astExtension()`, `variablesExtension(defs)`) |
177
177
  | `translations` | `DeepPartial<Lex4Translations>` | English | Partial i18n overrides, deep-merged with defaults |
178
- | `onSave` | `(payload: { ast, json }) => void` | — | Called when the host app triggers a save |
178
+ | `onSave` | `(payload: { document, ast, json }) => void` | — | Called when the host app triggers a save (includes full `Lex4Document`) |
179
179
  | `captureHistoryShortcutsOnWindow` | `boolean` | `true` | Capture ⌘Z/⌘⇧Z at the window level |
180
180
  | `className` | `string` | — | Additional CSS class for the editor root |
181
181
 
@@ -343,6 +343,71 @@ import { DEFAULT_TRANSLATIONS } from '@yurikilian/lex4';
343
343
  import type { Lex4Translations } from '@yurikilian/lex4';
344
344
  ```
345
345
 
346
+ ## 🎨 Theming & Customization
347
+
348
+ All styling uses **CSS custom properties** (design tokens) and **semantic `.lex4-*` classes** — no Tailwind utilities in the production output. This makes `style.css` safe to import alongside any CSS framework.
349
+
350
+ ### Design Tokens
351
+
352
+ Override tokens on `.lex4-editor` to theme the entire editor without `!important`:
353
+
354
+ ```css
355
+ .lex4-editor {
356
+ /* Brand / accent */
357
+ --lex4-color-primary: #10b981; /* emerald instead of blue */
358
+ --lex4-color-primary-light: #ecfdf5;
359
+ --lex4-color-primary-text: #047857;
360
+
361
+ /* Surfaces & text */
362
+ --lex4-color-bg: #ffffff;
363
+ --lex4-color-bg-canvas: #f8fafc; /* lighter canvas */
364
+ --lex4-color-text: #111827;
365
+ --lex4-color-text-secondary: #6b7280;
366
+
367
+ /* Dimensions */
368
+ --lex4-sidebar-width: 280px; /* narrower sidebar */
369
+ --lex4-font-family: 'Times New Roman', serif;
370
+ }
371
+ ```
372
+
373
+ See the full list of tokens in [`packages/editor/src/styles.css`](packages/editor/src/styles.css).
374
+
375
+ ### Stable CSS Selectors
376
+
377
+ Every UI region has a semantic class you can target:
378
+
379
+ | Region | Selector |
380
+ |--------|----------|
381
+ | Root | `.lex4-editor` |
382
+ | Toolbar | `.lex4-toolbar` |
383
+ | Toolbar button | `.lex4-toolbar-btn` |
384
+ | Toolbar select | `.lex4-toolbar-select` |
385
+ | Document canvas | `.lex4-canvas` |
386
+ | Page | `.lex4-page` |
387
+ | Page body | `.lex4-page-body` |
388
+ | Page header | `.lex4-page-header` |
389
+ | Page footer | `.lex4-page-footer` |
390
+ | Sidebar | `.lex4-sidebar` |
391
+ | History entry | `.lex4-history-entry-row` |
392
+ | Variable chip | `.lex4-variable-chip` |
393
+ | Variable picker | `.lex4-variable-picker` |
394
+
395
+ ### Extension-Level Theming
396
+
397
+ Extensions can contribute CSS variables and a root class name:
398
+
399
+ ```ts
400
+ const darkModeExtension: Lex4Extension = {
401
+ name: 'dark-mode',
402
+ cssVariables: {
403
+ '--lex4-color-bg': '#1a1a2e',
404
+ '--lex4-color-text': '#e0e0e0',
405
+ '--lex4-color-bg-canvas': '#16213e',
406
+ },
407
+ rootClassName: 'lex4-dark',
408
+ };
409
+ ```
410
+
346
411
  ## 📝 Document AST
347
412
 
348
413
  The AST is a **clean, versioned, Lexical-independent** structure designed for backend consumption (e.g., DOCX/PDF generation). It preserves semantic structure, formatting marks, font choices, header/footer layout, A4 page metadata, and variable references.
@@ -436,6 +501,8 @@ interface Lex4Extension {
436
501
  sidePanel?: React.ComponentType; // right-side panel
437
502
  provider?: React.ComponentType<...>; // context provider wrapper
438
503
  themeOverrides?: Partial<EditorThemeClasses>;
504
+ cssVariables?: Record<string, string>; // CSS custom property overrides
505
+ rootClassName?: string; // extra class on editor root
439
506
  handleMethods?: (ctx) => Record<string, Function>;
440
507
  }
441
508
  ```
@@ -528,7 +595,7 @@ pnpm --filter e2e test:ui
528
595
 
529
596
  | Category | Framework | Count | Description |
530
597
  |----------|-----------|-------|-------------|
531
- | Unit | Vitest | 178 | Engine logic, reducers, AST serializers, i18n, variable nodes |
598
+ | Unit | Vitest | 186 | Engine logic, reducers, AST serializers, i18n, variable nodes |
532
599
  | E2E | Playwright | 118 | Full user flows — typing, formatting, pagination, header/footer, variables, theme, i18n |
533
600
 
534
601
  ## 🔧 Build & Bundle
@@ -540,7 +607,7 @@ The library is built with **Vite in library mode**, producing:
540
607
  | ESM | `dist/lex4-editor.js` | ES module for modern bundlers |
541
608
  | CJS | `dist/lex4-editor.cjs` | CommonJS for Node.js / legacy bundlers |
542
609
  | Types | `dist/index.d.ts` | Full TypeScript declarations |
543
- | CSS | `dist/style.css` | Compiled Tailwind styles |
610
+ | CSS | `dist/style.css` | Pure CSS with design tokens (no Tailwind) |
544
611
  | Source maps | `dist/*.map` | Debugging support |
545
612
 
546
613
  React and ReactDOM are **externalized** — they are not bundled and must be provided by the consuming application. Lexical packages are bundled as direct dependencies.
@@ -572,7 +639,7 @@ To deploy manually, trigger the workflow from the Actions tab.
572
639
  | [React 18](https://react.dev/) | UI framework |
573
640
  | [Meta Lexical](https://lexical.dev/) | Rich text editing engine |
574
641
  | [Vite](https://vitejs.dev/) | Library build (ESM + CJS) and dev server |
575
- | [Tailwind CSS](https://tailwindcss.com/) | Styling |
642
+ | [Tailwind CSS](https://tailwindcss.com/) | Dev-only utility reference (not in production output) |
576
643
  | [Vitest](https://vitest.dev/) | Unit testing |
577
644
  | [Playwright](https://playwright.dev/) | End-to-end testing |
578
645
  | [pnpm](https://pnpm.io/) | Package manager (monorepo workspaces) |
@@ -1 +1 @@
1
- {"version":3,"file":"document-serializer.d.ts","sourceRoot":"","sources":["../../src/ast/document-serializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAM7D;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,mBAAmB,GAAE,kBAAkB,EAAO,GAC7C,WAAW,CAiCb"}
1
+ {"version":3,"file":"document-serializer.d.ts","sourceRoot":"","sources":["../../src/ast/document-serializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAe7D;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,mBAAmB,GAAE,kBAAkB,EAAO,GAC7C,WAAW,CAiCb"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditorSidebar.d.ts","sourceRoot":"","sources":["../../src/components/EditorSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgDtD,CAAC"}
1
+ {"version":3,"file":"EditorSidebar.d.ts","sourceRoot":"","sources":["../../src/components/EditorSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+CtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderFooterActions.d.ts","sourceRoot":"","sources":["../../src/components/HeaderFooterActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAQxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,UAAU,wBAAwB;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,uBAAuB,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AASD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAqIlE,CAAC"}
1
+ {"version":3,"file":"HeaderFooterActions.d.ts","sourceRoot":"","sources":["../../src/components/HeaderFooterActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAQxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,UAAU,wBAAwB;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,uBAAuB,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AASD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA2HlE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderFooterToggle.d.ts","sourceRoot":"","sources":["../../src/components/HeaderFooterToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,uBAAuB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAsChE,CAAC"}
1
+ {"version":3,"file":"HeaderFooterToggle.d.ts","sourceRoot":"","sources":["../../src/components/HeaderFooterToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,uBAAuB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA6BhE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HistorySidebar.d.ts","sourceRoot":"","sources":["../../src/components/HistorySidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAkFlC,CAAC"}
1
+ {"version":3,"file":"HistorySidebar.d.ts","sourceRoot":"","sources":["../../src/components/HistorySidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAiFlC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Lex4Editor.d.ts","sourceRoot":"","sources":["../../src/components/Lex4Editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0E,MAAM,OAAO,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAa/D,OAAO,eAAe,CAAC;AAkQvB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,0FA0BrB,CAAC"}
1
+ {"version":3,"file":"Lex4Editor.d.ts","sourceRoot":"","sources":["../../src/components/Lex4Editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0E,MAAM,OAAO,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAe/D,OAAO,eAAe,CAAC;AA4RvB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,0FA4BrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageBody.d.ts","sourceRoot":"","sources":["../../src/components/PageBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAelE,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACtD,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsBD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkG5C,CAAC"}
1
+ {"version":3,"file":"PageBody.d.ts","sourceRoot":"","sources":["../../src/components/PageBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAelE,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACtD,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsBD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAgG5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageView.d.ts","sourceRoot":"","sources":["../../src/components/PageView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAO3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1F,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkG3C,CAAC"}
1
+ {"version":3,"file":"PageView.d.ts","sourceRoot":"","sources":["../../src/components/PageView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAO3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1F,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAqG3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAkC3C,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAyW3B,CAAC"}
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAkC3C,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAuW3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariablePanel.d.ts","sourceRoot":"","sources":["../../src/components/VariablePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAS9D;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CA2GA,CAAC"}
1
+ {"version":3,"file":"VariablePanel.d.ts","sourceRoot":"","sources":["../../src/components/VariablePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAS9D;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAmGA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariablePicker.d.ts","sourceRoot":"","sources":["../../src/components/VariablePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAIjF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+GxD,CAAC"}
1
+ {"version":3,"file":"VariablePicker.d.ts","sourceRoot":"","sources":["../../src/components/VariablePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAIjF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAyGxD,CAAC"}
@@ -12,8 +12,12 @@ export declare const PX_PER_MM: number;
12
12
  export declare const A4_WIDTH_PX: number;
13
13
  /** A4 height in CSS pixels (≈1123px) */
14
14
  export declare const A4_HEIGHT_PX: number;
15
- /** Default page margin in CSS pixels (≈10.6mm each side) */
16
- export declare const PAGE_MARGIN_PX = 40;
15
+ /** Standard A4 vertical margin: 25.4mm (1 inch) in CSS pixels */
16
+ export declare const PAGE_MARGIN_TOP_PX: number;
17
+ export declare const PAGE_MARGIN_BOTTOM_PX: number;
18
+ /** Standard A4 horizontal margin: 31.75mm (1.25 inches) in CSS pixels */
19
+ export declare const PAGE_MARGIN_LEFT_PX: number;
20
+ export declare const PAGE_MARGIN_RIGHT_PX: number;
17
21
  /** Maximum header height as a ratio of page height */
18
22
  export declare const MAX_HEADER_RATIO = 0.2;
19
23
  /** Maximum footer height as a ratio of page height */
@@ -1 +1 @@
1
- {"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../src/constants/dimensions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,0CAA0C;AAC1C,eAAO,MAAM,SAAS,QAAY,CAAC;AAEnC,sCAAsC;AACtC,eAAO,MAAM,WAAW,QAAsC,CAAC;AAE/D,wCAAwC;AACxC,eAAO,MAAM,YAAY,QAAuC,CAAC;AAEjE,4DAA4D;AAC5D,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,QAA8C,CAAC;AAEhF,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,QAA8C,CAAC"}
1
+ {"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../src/constants/dimensions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,0CAA0C;AAC1C,eAAO,MAAM,SAAS,QAAY,CAAC;AAEnC,sCAAsC;AACtC,eAAO,MAAM,WAAW,QAAsC,CAAC;AAE/D,wCAAwC;AACxC,eAAO,MAAM,YAAY,QAAuC,CAAC;AAEjE,iEAAiE;AACjE,eAAO,MAAM,kBAAkB,QAA+B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,QAA+B,CAAC;AAElE,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,QAAgC,CAAC;AACjE,eAAO,MAAM,oBAAoB,QAAgC,CAAC;AAElE,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,QAA8C,CAAC;AAEhF,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,QAA8C,CAAC"}
@@ -1,3 +1,3 @@
1
- export { A4_WIDTH_MM, A4_HEIGHT_MM, A4_WIDTH_PX, A4_HEIGHT_PX, PX_PER_MM, PAGE_MARGIN_PX, MAX_HEADER_RATIO, MAX_FOOTER_RATIO, MAX_HEADER_HEIGHT_PX, MAX_FOOTER_HEIGHT_PX, } from './dimensions';
1
+ export { A4_WIDTH_MM, A4_HEIGHT_MM, A4_WIDTH_PX, A4_HEIGHT_PX, PX_PER_MM, PAGE_MARGIN_TOP_PX, PAGE_MARGIN_BOTTOM_PX, PAGE_MARGIN_LEFT_PX, PAGE_MARGIN_RIGHT_PX, MAX_HEADER_RATIO, MAX_FOOTER_RATIO, MAX_HEADER_HEIGHT_PX, MAX_FOOTER_HEIGHT_PX, } from './dimensions';
2
2
  export { computeBodyHeight, computeContentAreaHeight, } from './page-layout';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,eAAe,CAAC"}
@@ -1,7 +1,3 @@
1
- /**
2
- * Computes the available body height for a page, accounting for
3
- * header/footer heights and page margins.
4
- */
5
1
  export declare function computeBodyHeight(headerHeight: number, footerHeight: number): number;
6
2
  /**
7
3
  * Computes the content area height based on whether
@@ -1 +1 @@
1
- {"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../src/constants/page-layout.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,mBAAmB,EAAE,OAAO,EAC5B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAKR"}
1
+ {"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../src/constants/page-layout.ts"],"names":[],"mappings":"AAMA,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,mBAAmB,EAAE,OAAO,EAC5B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAKR"}
@@ -1,4 +1,13 @@
1
1
  import { Lex4Extension } from './types';
2
+ import { PayloadOptions } from '../ast/payload-builder';
3
+ import { DocumentAst, SaveDocumentRequest } from '../ast/types';
4
+ declare module '../types/editor-handle' {
5
+ interface Lex4EditorHandle {
6
+ getDocumentAst: () => DocumentAst;
7
+ getDocumentJson: () => string;
8
+ buildSavePayload: (options?: PayloadOptions) => SaveDocumentRequest;
9
+ }
10
+ }
2
11
  /**
3
12
  * Creates an AST extension that adds document export capabilities.
4
13
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ast-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/ast-extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAK/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,IAAI,aAAa,CA0B5C"}
1
+ {"version":3,"file":"ast-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/ast-extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAG/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGrE,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,gBAAgB;QACxB,cAAc,EAAE,MAAM,WAAW,CAAC;QAClC,eAAe,EAAE,MAAM,MAAM,CAAC;QAC9B,gBAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,cAAc,KAAK,mBAAmB,CAAC;KACrE;CACF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,IAAI,aAAa,CA0B5C"}
@@ -2,7 +2,9 @@ import { default as React } from 'react';
2
2
  import { ResolvedExtensions, ExtensionContext, Lex4Extension } from './types';
3
3
  /**
4
4
  * Provides resolved extension data to all child components.
5
- * Extensions are resolved once from the extensions array.
5
+ * Extensions are resolved when the set of extension names changes,
6
+ * not on every array reference change — preventing unnecessary
7
+ * editor re-initialization.
6
8
  */
7
9
  export declare const ExtensionProvider: React.FC<{
8
10
  extensions?: Lex4Extension[];
@@ -1 +1 @@
1
- {"version":3,"file":"extension-context.d.ts","sourceRoot":"","sources":["../../src/extensions/extension-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAc7C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAkBA,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,IAAI,kBAAkB,CAElD;AAMD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAO1E,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB;UAGvB,CAAC,iBAAiB,MAAM,KAAG,CAAC,GAAG,SAAS;UACxC,CAAC,iBAAiB,MAAM,SAAS,CAAC;EAI3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,EAC5C,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,GACnD,gBAAgB,CAWlB"}
1
+ {"version":3,"file":"extension-context.d.ts","sourceRoot":"","sources":["../../src/extensions/extension-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAwB7C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAwBA,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,IAAI,kBAAkB,CAElD;AAMD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAO1E,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB;UAGvB,CAAC,iBAAiB,MAAM,KAAG,CAAC,GAAG,SAAS;UACxC,CAAC,iBAAiB,MAAM,SAAS,CAAC;EAI3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,EAC5C,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,GACnD,gBAAgB,CAWlB"}
@@ -46,6 +46,16 @@ export interface Lex4Extension {
46
46
  * Merged into the base theme.
47
47
  */
48
48
  themeOverrides?: Partial<EditorThemeClasses>;
49
+ /**
50
+ * CSS custom property overrides applied on the `.lex4-editor` root.
51
+ * Use to retheme the editor — e.g. `{ '--lex4-color-primary': '#e11d48' }`.
52
+ */
53
+ cssVariables?: Record<string, string>;
54
+ /**
55
+ * Extra CSS class name(s) added to the `.lex4-editor` root element.
56
+ * Useful for scoping extension-specific styles.
57
+ */
58
+ rootClassName?: string;
49
59
  /**
50
60
  * Factory that returns imperative handle methods.
51
61
  * These are merged into the Lex4EditorHandle exposed via ref.
@@ -65,6 +75,8 @@ export interface ResolvedExtensions {
65
75
  children: React.ReactNode;
66
76
  }>[];
67
77
  themeOverrides: Partial<EditorThemeClasses>;
78
+ cssVariables: Record<string, string>;
79
+ rootClassNames: string[];
68
80
  handleFactories: Array<(ctx: ExtensionContext) => Record<string, (...args: never[]) => unknown>>;
69
81
  }
70
82
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/extensions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,YAAY,CAAC;IAChC,eAAe,EAAE,MAAM,OAAO,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9D,iBAAiB,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IAC/D,iBAAiB,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CACjE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IAEb,4EAA4E;IAC5E,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;IAE7B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAEpC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAErC,gDAAgD;IAChD,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;IAE9D;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE7C;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,CAAC;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5B,WAAW,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IACnC,YAAY,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAClC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,EAAE,CAAC;IAChE,cAAc,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,eAAe,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;CAClG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAwBjF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/extensions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,YAAY,CAAC;IAChC,eAAe,EAAE,MAAM,OAAO,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9D,iBAAiB,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IAC/D,iBAAiB,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CACjE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IAEb,4EAA4E;IAC5E,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;IAE7B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAEpC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAErC,gDAAgD;IAChD,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;IAE9D;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE7C;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,CAAC;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5B,WAAW,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IACnC,YAAY,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAClC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,EAAE,CAAC;IAChE,cAAc,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;CAClG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,kBAAkB,CA8BjF"}
@@ -1,5 +1,11 @@
1
1
  import { Lex4Extension } from './types';
2
2
  import { VariableDefinition } from '../variables/types';
3
+ declare module '../types/editor-handle' {
4
+ interface Lex4EditorHandle {
5
+ insertVariable: (key: string) => void;
6
+ refreshVariables: (newDefs: VariableDefinition[]) => void;
7
+ }
8
+ }
3
9
  interface VariablePanelState {
4
10
  panelOpen: boolean;
5
11
  setPanelOpen: (open: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"variables-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/variables-extension.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAa7D,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAOD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAwFD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,kBAAkB,EAAO,GAAG,aAAa,CAgCxF"}
1
+ {"version":3,"file":"variables-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/variables-extension.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ7D,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,gBAAgB;QACxB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QACtC,gBAAgB,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;KAC3D;CACF;AAOD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAOD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAmFD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,kBAAkB,EAAO,GAAG,aAAa,CAgCxF"}