@yurikilian/lex4 0.1.2 → 0.2.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 (79) hide show
  1. package/README.md +236 -20
  2. package/dist/ast/block-mapper.d.ts +24 -0
  3. package/dist/ast/block-mapper.d.ts.map +1 -0
  4. package/dist/ast/content-mapper.d.ts +16 -0
  5. package/dist/ast/content-mapper.d.ts.map +1 -0
  6. package/dist/ast/document-serializer.d.ts +11 -0
  7. package/dist/ast/document-serializer.d.ts.map +1 -0
  8. package/dist/ast/index.d.ts +9 -0
  9. package/dist/ast/index.d.ts.map +1 -0
  10. package/dist/ast/inline-mapper.d.ts +41 -0
  11. package/dist/ast/inline-mapper.d.ts.map +1 -0
  12. package/dist/ast/payload-builder.d.ts +18 -0
  13. package/dist/ast/payload-builder.d.ts.map +1 -0
  14. package/dist/ast/types.d.ts +112 -0
  15. package/dist/ast/types.d.ts.map +1 -0
  16. package/dist/components/EditorSidebar.d.ts +1 -0
  17. package/dist/components/EditorSidebar.d.ts.map +1 -1
  18. package/dist/components/HistorySidebar.d.ts.map +1 -1
  19. package/dist/components/Lex4Editor.d.ts +9 -1
  20. package/dist/components/Lex4Editor.d.ts.map +1 -1
  21. package/dist/components/PageBody.d.ts +1 -2
  22. package/dist/components/PageBody.d.ts.map +1 -1
  23. package/dist/components/PageFooter.d.ts.map +1 -1
  24. package/dist/components/PageHeader.d.ts.map +1 -1
  25. package/dist/components/Toolbar.d.ts.map +1 -1
  26. package/dist/components/VariablePanel.d.ts +15 -0
  27. package/dist/components/VariablePanel.d.ts.map +1 -0
  28. package/dist/components/VariablePicker.d.ts +14 -0
  29. package/dist/components/VariablePicker.d.ts.map +1 -0
  30. package/dist/extensions/ast-extension.d.ts +16 -0
  31. package/dist/extensions/ast-extension.d.ts.map +1 -0
  32. package/dist/extensions/extension-context.d.ts +29 -0
  33. package/dist/extensions/extension-context.d.ts.map +1 -0
  34. package/dist/extensions/index.d.ts +6 -0
  35. package/dist/extensions/index.d.ts.map +1 -0
  36. package/dist/extensions/types.d.ts +74 -0
  37. package/dist/extensions/types.d.ts.map +1 -0
  38. package/dist/extensions/variables-extension.d.ts +31 -0
  39. package/dist/extensions/variables-extension.d.ts.map +1 -0
  40. package/dist/i18n/context.d.ts +28 -0
  41. package/dist/i18n/context.d.ts.map +1 -0
  42. package/dist/i18n/defaults.d.ts +3 -0
  43. package/dist/i18n/defaults.d.ts.map +1 -0
  44. package/dist/i18n/index.d.ts +4 -0
  45. package/dist/i18n/index.d.ts.map +1 -0
  46. package/dist/i18n/types.d.ts +82 -0
  47. package/dist/i18n/types.d.ts.map +1 -0
  48. package/dist/index.d.ts +10 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/lex4-editor.cjs +1119 -101
  51. package/dist/lex4-editor.cjs.map +1 -1
  52. package/dist/lex4-editor.js +1122 -104
  53. package/dist/lex4-editor.js.map +1 -1
  54. package/dist/lexical/editor-setup.d.ts +5 -1
  55. package/dist/lexical/editor-setup.d.ts.map +1 -1
  56. package/dist/lexical/plugins/font-plugin.d.ts +1 -1
  57. package/dist/lexical/plugins/font-plugin.d.ts.map +1 -1
  58. package/dist/lexical/plugins/font-size-plugin.d.ts +19 -0
  59. package/dist/lexical/plugins/font-size-plugin.d.ts.map +1 -0
  60. package/dist/lexical/plugins/index.d.ts +2 -0
  61. package/dist/lexical/plugins/index.d.ts.map +1 -1
  62. package/dist/style.css +532 -160
  63. package/dist/types/editor-handle.d.ts +14 -0
  64. package/dist/types/editor-handle.d.ts.map +1 -0
  65. package/dist/types/editor-props.d.ts +23 -0
  66. package/dist/types/editor-props.d.ts.map +1 -1
  67. package/dist/variables/index.d.ts +5 -0
  68. package/dist/variables/index.d.ts.map +1 -0
  69. package/dist/variables/types.d.ts +26 -0
  70. package/dist/variables/types.d.ts.map +1 -0
  71. package/dist/variables/variable-commands.d.ts +11 -0
  72. package/dist/variables/variable-commands.d.ts.map +1 -0
  73. package/dist/variables/variable-context.d.ts +21 -0
  74. package/dist/variables/variable-context.d.ts.map +1 -0
  75. package/dist/variables/variable-node.d.ts +34 -0
  76. package/dist/variables/variable-node.d.ts.map +1 -0
  77. package/dist/variables/variable-plugin.d.ts +8 -0
  78. package/dist/variables/variable-plugin.d.ts.map +1 -0
  79. package/package.json +1 -1
@@ -18,8 +18,7 @@ interface PageBodyProps {
18
18
  * Each page gets its own Lexical editor. The OverflowPlugin
19
19
  * handles splitting content when it exceeds the available height.
20
20
  *
21
- * When created with initialBodyState (e.g. from overflow), the
22
- * LexicalComposer is initialized with that content.
21
+ * Extension-contributed body plugins are rendered inside the LexicalComposer.
23
22
  */
24
23
  export declare const PageBody: React.FC<PageBodyProps>;
25
24
  export {};
@@ -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;AAalE,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;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA6F5C,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;AAclE,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,CAiG5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageFooter.d.ts","sourceRoot":"","sources":["../../src/components/PageFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,SAAS,CAAC;AASlE,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA8EhD,CAAC"}
1
+ {"version":3,"file":"PageFooter.d.ts","sourceRoot":"","sources":["../../src/components/PageFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAWlE,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgFhD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../src/components/PageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,SAAS,CAAC;AASlE,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA8EhD,CAAC"}
1
+ {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../src/components/PageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAWlE,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgFhD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AA6B3C,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAmU3B,CAAC"}
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAgC3C,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAsW3B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+ /**
3
+ * VariablePanel — Right sidebar for browsing and inserting variables.
4
+ *
5
+ * Features:
6
+ * - Search/filter variables by name or key
7
+ * - Grouped list with colored badges
8
+ * - Click-to-insert into the active editor
9
+ * - Refresh button for reloading definitions
10
+ */
11
+ export declare const VariablePanel: React.FC<{
12
+ open: boolean;
13
+ onClose: () => void;
14
+ }>;
15
+ //# sourceMappingURL=VariablePanel.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ interface VariablePickerProps {
3
+ onInsert: (variableKey: string) => void;
4
+ disabled?: boolean;
5
+ }
6
+ /**
7
+ * VariablePicker — Dropdown UI for browsing and inserting variables.
8
+ *
9
+ * Groups variables by their `group` field and allows filtering by name.
10
+ * Clicking a variable calls `onInsert` with its key.
11
+ */
12
+ export declare const VariablePicker: React.FC<VariablePickerProps>;
13
+ export {};
14
+ //# sourceMappingURL=VariablePicker.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,16 @@
1
+ import { Lex4Extension } from './types';
2
+ /**
3
+ * Creates an AST extension that adds document export capabilities.
4
+ *
5
+ * Handle methods provided:
6
+ * - `getDocumentAst()` — returns the current document as a typed AST
7
+ * - `getDocumentJson()` — returns the AST as a JSON string
8
+ * - `buildSavePayload(options?)` — builds a REST payload wrapping the AST
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <Lex4Editor extensions={[astExtension()]} />
13
+ * ```
14
+ */
15
+ export declare function astExtension(): Lex4Extension;
16
+ //# sourceMappingURL=ast-extension.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,29 @@
1
+ import { default as React } from 'react';
2
+ import { ResolvedExtensions, ExtensionContext, Lex4Extension } from './types';
3
+ /**
4
+ * Provides resolved extension data to all child components.
5
+ * Extensions are resolved once from the extensions array.
6
+ */
7
+ export declare const ExtensionProvider: React.FC<{
8
+ extensions?: Lex4Extension[];
9
+ children: React.ReactNode;
10
+ }>;
11
+ /**
12
+ * Returns the resolved extension data.
13
+ */
14
+ export declare function useExtensions(): ResolvedExtensions;
15
+ export declare const ExtensionStateProvider: React.FC<{
16
+ children: React.ReactNode;
17
+ }>;
18
+ /**
19
+ * Hook to get/set extension shared state from any component within the editor tree.
20
+ */
21
+ export declare function useExtensionState(): {
22
+ get: <T = unknown>(key: string) => T | undefined;
23
+ set: <T = unknown>(key: string, value: T) => void;
24
+ };
25
+ /**
26
+ * Builds an ExtensionContext for handle method factories.
27
+ */
28
+ export declare function useExtensionContext(getDocument: ExtensionContext['getDocument'], getActiveEditor: ExtensionContext['getActiveEditor']): ExtensionContext;
29
+ //# sourceMappingURL=extension-context.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
1
+ export type { Lex4Extension, ExtensionContext, ResolvedExtensions, } from './types';
2
+ export { resolveExtensions } from './types';
3
+ export { ExtensionProvider, ExtensionStateProvider, useExtensions, useExtensionContext, useExtensionState, } from './extension-context';
4
+ export { astExtension } from './ast-extension';
5
+ export { variablesExtension } from './variables-extension';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { EditorThemeClasses, Klass, LexicalNode } from 'lexical';
2
+ import { Lex4Document } from '../types/document';
3
+ /**
4
+ * Context passed to extension handleMethods factories.
5
+ * Provides read access to editor state so extensions can build
6
+ * their imperative API methods.
7
+ */
8
+ export interface ExtensionContext {
9
+ getDocument: () => Lex4Document;
10
+ getActiveEditor: () => import('lexical').LexicalEditor | null;
11
+ getExtensionState: <T = unknown>(key: string) => T | undefined;
12
+ setExtensionState: <T = unknown>(key: string, value: T) => void;
13
+ }
14
+ /**
15
+ * Lex4Extension — Plugin-based extension contract.
16
+ *
17
+ * Extensions add capabilities to the editor without requiring
18
+ * hard-wired imports. Each extension can contribute:
19
+ * - Lexical nodes (custom block/inline node types)
20
+ * - Body plugins (rendered inside every page's LexicalComposer)
21
+ * - Toolbar items (rendered in the toolbar extension slot)
22
+ * - Side panels (rendered to the right of the document area)
23
+ * - Provider wrappers (React context providers wrapping the editor)
24
+ * - Imperative handle methods (merged into the ref API)
25
+ */
26
+ export interface Lex4Extension {
27
+ /** Unique extension name used for identification. */
28
+ name: string;
29
+ /** Additional Lexical node classes to register in every editor instance. */
30
+ nodes?: Klass<LexicalNode>[];
31
+ /** Plugin components rendered inside each page body's LexicalComposer. */
32
+ bodyPlugins?: React.ComponentType[];
33
+ /** Components rendered in the toolbar's extension slot. */
34
+ toolbarItems?: React.ComponentType[];
35
+ /** Component rendered as a right side panel. */
36
+ sidePanel?: React.ComponentType;
37
+ /**
38
+ * Provider component that wraps the editor tree.
39
+ * Useful for injecting React contexts.
40
+ */
41
+ provider?: React.ComponentType<{
42
+ children: React.ReactNode;
43
+ }>;
44
+ /**
45
+ * Lexical editor theme overrides contributed by this extension.
46
+ * Merged into the base theme.
47
+ */
48
+ themeOverrides?: Partial<EditorThemeClasses>;
49
+ /**
50
+ * Factory that returns imperative handle methods.
51
+ * These are merged into the Lex4EditorHandle exposed via ref.
52
+ */
53
+ handleMethods?: (ctx: ExtensionContext) => Record<string, (...args: never[]) => unknown>;
54
+ }
55
+ /**
56
+ * Resolved extension data after processing all extensions.
57
+ * Used internally by the editor to wire everything together.
58
+ */
59
+ export interface ResolvedExtensions {
60
+ nodes: Klass<LexicalNode>[];
61
+ bodyPlugins: React.ComponentType[];
62
+ toolbarItems: React.ComponentType[];
63
+ sidePanels: React.ComponentType[];
64
+ providers: React.ComponentType<{
65
+ children: React.ReactNode;
66
+ }>[];
67
+ themeOverrides: Partial<EditorThemeClasses>;
68
+ handleFactories: Array<(ctx: ExtensionContext) => Record<string, (...args: never[]) => unknown>>;
69
+ }
70
+ /**
71
+ * Processes an array of extensions into a single resolved structure.
72
+ */
73
+ export declare function resolveExtensions(extensions: Lex4Extension[]): ResolvedExtensions;
74
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,31 @@
1
+ import { Lex4Extension } from './types';
2
+ import { VariableDefinition } from '../variables/types';
3
+ interface VariablePanelState {
4
+ panelOpen: boolean;
5
+ setPanelOpen: (open: boolean) => void;
6
+ }
7
+ export declare function useVariablePanelState(): VariablePanelState;
8
+ /**
9
+ * Creates a variables extension that adds variable/placeholder support.
10
+ *
11
+ * Contributes:
12
+ * - VariableNode (custom Lexical node)
13
+ * - VariablePlugin (body plugin for insert command handling)
14
+ * - VariableProvider (context provider for variable catalog)
15
+ * - VariablePicker toolbar item + panel toggle button
16
+ * - VariablePanel side panel with toggle state
17
+ * - Handle methods: insertVariable, refreshVariables
18
+ *
19
+ * @param definitions Initial variable definitions to load
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * const defs = [
24
+ * { key: 'customer.name', label: 'Customer', group: 'Customer', valueType: 'string' },
25
+ * ];
26
+ * <Lex4Editor extensions={[variablesExtension(defs)]} />
27
+ * ```
28
+ */
29
+ export declare function variablesExtension(definitions?: VariableDefinition[]): Lex4Extension;
30
+ export {};
31
+ //# sourceMappingURL=variables-extension.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,28 @@
1
+ import { default as React } from 'react';
2
+ import { Lex4Translations } from './types';
3
+ type DeepPartial<T> = {
4
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
5
+ };
6
+ /**
7
+ * Returns the active translations. Use inside any editor component
8
+ * to access localized strings.
9
+ */
10
+ export declare function useTranslations(): Lex4Translations;
11
+ /**
12
+ * Interpolates `{{key}}` placeholders in a translation string.
13
+ *
14
+ * @example
15
+ * interpolate('Font changed to {{value}}', { value: 'Inter' })
16
+ * // => 'Font changed to Inter'
17
+ */
18
+ export declare function interpolate(template: string, params: Record<string, string | number>): string;
19
+ interface TranslationsProviderProps {
20
+ translations?: DeepPartial<Lex4Translations>;
21
+ children: React.ReactNode;
22
+ }
23
+ /**
24
+ * TranslationsProvider — merges consumer overrides with DEFAULT_TRANSLATIONS.
25
+ */
26
+ export declare const TranslationsProvider: React.FC<TranslationsProviderProps>;
27
+ export {};
28
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/i18n/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AA+BF;;;GAGG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GACtC,MAAM,CAIR;AAED,UAAU,yBAAyB;IACjC,YAAY,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC7C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAiBpE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Lex4Translations } from './types';
2
+ export declare const DEFAULT_TRANSLATIONS: Lex4Translations;
3
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/i18n/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,oBAAoB,EAAE,gBA0ElC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type { Lex4Translations } from './types';
2
+ export { DEFAULT_TRANSLATIONS } from './defaults';
3
+ export { TranslationsProvider, useTranslations, interpolate } from './context';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Lex4Translations — All UI strings used by the editor.
3
+ *
4
+ * Consumers can pass `Partial<Lex4Translations>` to override
5
+ * any subset of strings for localization purposes.
6
+ */
7
+ export interface Lex4Translations {
8
+ toolbar: {
9
+ undo: string;
10
+ redo: string;
11
+ bold: string;
12
+ italic: string;
13
+ underline: string;
14
+ strikethrough: string;
15
+ alignLeft: string;
16
+ alignCenter: string;
17
+ alignRight: string;
18
+ justify: string;
19
+ numberedList: string;
20
+ bulletList: string;
21
+ indent: string;
22
+ outdent: string;
23
+ openHistory: string;
24
+ closeHistory: string;
25
+ };
26
+ history: {
27
+ title: string;
28
+ subtitle: string;
29
+ empty: string;
30
+ clearHistory: string;
31
+ actions: {
32
+ enabledHeadersFooters: string;
33
+ disabledHeadersFooters: string;
34
+ copiedHeaderToAll: string;
35
+ copiedFooterToAll: string;
36
+ clearedHeader: string;
37
+ clearedFooter: string;
38
+ clearedAllHeaders: string;
39
+ clearedAllFooters: string;
40
+ /** Use {{value}} for the mode name */
41
+ pageCounterSet: string;
42
+ boldApplied: string;
43
+ italicApplied: string;
44
+ underlineApplied: string;
45
+ strikethroughApplied: string;
46
+ alignedLeft: string;
47
+ alignedCenter: string;
48
+ alignedRight: string;
49
+ justifiedText: string;
50
+ insertedNumberedList: string;
51
+ insertedBulletList: string;
52
+ indentedContent: string;
53
+ outdentedContent: string;
54
+ /** Use {{value}} for the font name */
55
+ fontChanged: string;
56
+ /** Use {{value}} for the size */
57
+ fontSizeChanged: string;
58
+ };
59
+ };
60
+ variables: {
61
+ title: string;
62
+ /** Use {{count}} for the number of available variables */
63
+ available: string;
64
+ refreshVariables: string;
65
+ searchPlaceholder: string;
66
+ noVariablesFound: string;
67
+ /** Use {{key}} for the variable key */
68
+ insertVariable: string;
69
+ openPanel: string;
70
+ closePanel: string;
71
+ };
72
+ header: {
73
+ placeholder: string;
74
+ };
75
+ footer: {
76
+ placeholder: string;
77
+ };
78
+ sidebar: {
79
+ close: string;
80
+ };
81
+ }
82
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE;YACP,qBAAqB,EAAE,MAAM,CAAC;YAC9B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,aAAa,EAAE,MAAM,CAAC;YACtB,aAAa,EAAE,MAAM,CAAC;YACtB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,sCAAsC;YACtC,cAAc,EAAE,MAAM,CAAC;YACvB,WAAW,EAAE,MAAM,CAAC;YACpB,aAAa,EAAE,MAAM,CAAC;YACtB,gBAAgB,EAAE,MAAM,CAAC;YACzB,oBAAoB,EAAE,MAAM,CAAC;YAC7B,WAAW,EAAE,MAAM,CAAC;YACpB,aAAa,EAAE,MAAM,CAAC;YACtB,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,oBAAoB,EAAE,MAAM,CAAC;YAC7B,kBAAkB,EAAE,MAAM,CAAC;YAC3B,eAAe,EAAE,MAAM,CAAC;YACxB,gBAAgB,EAAE,MAAM,CAAC;YACzB,sCAAsC;YACtC,WAAW,EAAE,MAAM,CAAC;YACpB,iCAAiC;YACjC,eAAe,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,CAAC;IAEF,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,0DAA0D;QAC1D,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,uCAAuC;QACvC,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,19 @@
1
1
  export { Lex4Editor } from './components/Lex4Editor';
2
2
  export type { Lex4EditorProps } from './types/editor-props';
3
+ export type { Lex4EditorHandle } from './types/editor-handle';
3
4
  export type { Lex4Document, PageState } from './types/document';
4
5
  export { createEmptyDocument, createEmptyPage } from './types/document';
5
6
  export { A4_WIDTH_PX, A4_HEIGHT_PX, A4_WIDTH_MM, A4_HEIGHT_MM, MAX_HEADER_HEIGHT_PX, MAX_FOOTER_HEIGHT_PX, } from './constants/dimensions';
6
7
  export { usePagination } from './hooks/use-pagination';
7
8
  export { useOverflowDetection } from './hooks/use-overflow-detection';
8
9
  export { useHeaderFooter } from './hooks/use-header-footer';
10
+ export type { Lex4Extension, ExtensionContext } from './extensions';
11
+ export { astExtension } from './extensions';
12
+ export { variablesExtension } from './extensions';
13
+ export type { DocumentAst, PageAst, ContentAst, BlockNodeAst, InlineNodeAst, TextRunAst, TextMarks, VariableAst, LineBreakAst, ParagraphAst, HeadingAst, ListAst, ListItemAst, BlockQuoteAst, SaveDocumentRequest, VariableDefinitionAst, PayloadOptions, } from './ast';
14
+ export { AST_VERSION, serializeDocument, buildSavePayload, serializeDocumentJson } from './ast';
15
+ export type { VariableDefinition, VariableContextValue } from './variables';
16
+ export { VariableNode, $createVariableNode, $isVariableNode, INSERT_VARIABLE_COMMAND } from './variables';
17
+ export type { Lex4Translations } from './i18n';
18
+ export { DEFAULT_TRANSLATIONS } from './i18n';
9
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,YAAY,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAGhG,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG1G,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC"}