@yurikilian/lex4 0.3.1 → 1.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.
- package/README.md +71 -4
- package/dist/components/EditorSidebar.d.ts.map +1 -1
- package/dist/components/HeaderFooterActions.d.ts.map +1 -1
- package/dist/components/HeaderFooterToggle.d.ts.map +1 -1
- package/dist/components/HistorySidebar.d.ts.map +1 -1
- package/dist/components/Lex4Editor.d.ts.map +1 -1
- package/dist/components/PageBody.d.ts.map +1 -1
- package/dist/components/Toolbar.d.ts.map +1 -1
- package/dist/components/VariablePanel.d.ts.map +1 -1
- package/dist/components/VariablePicker.d.ts.map +1 -1
- package/dist/extensions/ast-extension.d.ts +9 -0
- package/dist/extensions/ast-extension.d.ts.map +1 -1
- package/dist/extensions/extension-context.d.ts +3 -1
- package/dist/extensions/extension-context.d.ts.map +1 -1
- package/dist/extensions/types.d.ts +12 -0
- package/dist/extensions/types.d.ts.map +1 -1
- package/dist/extensions/variables-extension.d.ts +6 -0
- package/dist/extensions/variables-extension.d.ts.map +1 -1
- package/dist/lex4-editor.cjs +390 -383
- package/dist/lex4-editor.cjs.map +1 -1
- package/dist/lex4-editor.js +390 -383
- package/dist/lex4-editor.js.map +1 -1
- package/dist/lexical/theme.d.ts +1 -1
- package/dist/style.css +671 -1176
- package/dist/types/editor-handle.d.ts +12 -7
- package/dist/types/editor-handle.d.ts.map +1 -1
- package/dist/types/editor-props.d.ts +2 -1
- package/dist/types/editor-props.d.ts.map +1 -1
- package/dist/variables/variable-node.d.ts.map +1 -1
- 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 |
|
|
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` |
|
|
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/) |
|
|
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":"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,
|
|
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,
|
|
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,
|
|
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,
|
|
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;
|
|
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,
|
|
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":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAkC3C,eAAO,MAAM,OAAO,EAAE,KAAK,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,
|
|
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,
|
|
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"}
|
|
@@ -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;
|
|
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
|
|
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;
|
|
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,
|
|
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;
|
|
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"}
|