@juo/blocks 1.0.0

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 (153) hide show
  1. package/dist/ExtensionRoot-CZyBNJZY.js +159 -0
  2. package/dist/block-VhmfGB3N.js +51 -0
  3. package/dist/block.d.ts +96 -0
  4. package/dist/block.d.ts.map +1 -0
  5. package/dist/bridge-DQsM97cH.js +490 -0
  6. package/dist/context.d.ts +76 -0
  7. package/dist/context.d.ts.map +1 -0
  8. package/dist/context.test.d.ts +2 -0
  9. package/dist/context.test.d.ts.map +1 -0
  10. package/dist/core.js +1163 -0
  11. package/dist/editor/bridge.d.ts +75 -0
  12. package/dist/editor/bridge.d.ts.map +1 -0
  13. package/dist/editor/bridge.test.d.ts +2 -0
  14. package/dist/editor/bridge.test.d.ts.map +1 -0
  15. package/dist/editor/components.d.ts +31 -0
  16. package/dist/editor/components.d.ts.map +1 -0
  17. package/dist/editor/handler.d.ts +10 -0
  18. package/dist/editor/handler.d.ts.map +1 -0
  19. package/dist/editor/main.d.ts +17 -0
  20. package/dist/editor/main.d.ts.map +1 -0
  21. package/dist/editor/messages.d.ts +233 -0
  22. package/dist/editor/messages.d.ts.map +1 -0
  23. package/dist/editor.js +711 -0
  24. package/dist/flows/MockWorkflowApiAdapter.d.ts +13 -0
  25. package/dist/flows/MockWorkflowApiAdapter.d.ts.map +1 -0
  26. package/dist/flows/WorkflowService.d.ts +175 -0
  27. package/dist/flows/WorkflowService.d.ts.map +1 -0
  28. package/dist/flows/__tests__/WorkflowService.test.d.ts +2 -0
  29. package/dist/flows/__tests__/WorkflowService.test.d.ts.map +1 -0
  30. package/dist/flows/__tests__/defaults.test.d.ts +2 -0
  31. package/dist/flows/__tests__/defaults.test.d.ts.map +1 -0
  32. package/dist/flows/__tests__/juo-workflow.test.d.ts +2 -0
  33. package/dist/flows/__tests__/juo-workflow.test.d.ts.map +1 -0
  34. package/dist/flows/__tests__/overlay-behavior.test.d.ts +2 -0
  35. package/dist/flows/__tests__/overlay-behavior.test.d.ts.map +1 -0
  36. package/dist/flows/__tests__/theme-state-surfaces.test.d.ts +2 -0
  37. package/dist/flows/__tests__/theme-state-surfaces.test.d.ts.map +1 -0
  38. package/dist/flows/defaults.d.ts +15 -0
  39. package/dist/flows/defaults.d.ts.map +1 -0
  40. package/dist/flows/index.d.ts +4 -0
  41. package/dist/flows/index.d.ts.map +1 -0
  42. package/dist/flows/juo-workflow.d.ts +48 -0
  43. package/dist/flows/juo-workflow.d.ts.map +1 -0
  44. package/dist/juo-workflow-RSrOuKUH.js +591 -0
  45. package/dist/main.d.ts +11 -0
  46. package/dist/main.d.ts.map +1 -0
  47. package/dist/preact/block.d.ts +21 -0
  48. package/dist/preact/block.d.ts.map +1 -0
  49. package/dist/preact/block.test.d.ts +2 -0
  50. package/dist/preact/block.test.d.ts.map +1 -0
  51. package/dist/preact/bridge.d.ts +11 -0
  52. package/dist/preact/bridge.d.ts.map +1 -0
  53. package/dist/preact/context.d.ts +31 -0
  54. package/dist/preact/context.d.ts.map +1 -0
  55. package/dist/preact/main.d.ts +11 -0
  56. package/dist/preact/main.d.ts.map +1 -0
  57. package/dist/preact/signals.d.ts +23 -0
  58. package/dist/preact/signals.d.ts.map +1 -0
  59. package/dist/preact.js +230 -0
  60. package/dist/react/block.d.ts +21 -0
  61. package/dist/react/block.d.ts.map +1 -0
  62. package/dist/react/block.test.d.ts +2 -0
  63. package/dist/react/block.test.d.ts.map +1 -0
  64. package/dist/react/bridge.d.ts +11 -0
  65. package/dist/react/bridge.d.ts.map +1 -0
  66. package/dist/react/context.d.ts +28 -0
  67. package/dist/react/context.d.ts.map +1 -0
  68. package/dist/react/main.d.ts +11 -0
  69. package/dist/react/main.d.ts.map +1 -0
  70. package/dist/react/signals.d.ts +23 -0
  71. package/dist/react/signals.d.ts.map +1 -0
  72. package/dist/react.js +205 -0
  73. package/dist/services/index.d.ts +4 -0
  74. package/dist/services/index.d.ts.map +1 -0
  75. package/dist/services/login/index.d.ts +23 -0
  76. package/dist/services/login/index.d.ts.map +1 -0
  77. package/dist/services/login/loginService.d.ts +82 -0
  78. package/dist/services/login/loginService.d.ts.map +1 -0
  79. package/dist/services/product/adapter.d.ts +20 -0
  80. package/dist/services/product/adapter.d.ts.map +1 -0
  81. package/dist/services/product/index.d.ts +5 -0
  82. package/dist/services/product/index.d.ts.map +1 -0
  83. package/dist/services/product/productService.d.ts +12 -0
  84. package/dist/services/product/productService.d.ts.map +1 -0
  85. package/dist/services/product/types.d.ts +32 -0
  86. package/dist/services/product/types.d.ts.map +1 -0
  87. package/dist/services/subscription/adapter.d.ts +49 -0
  88. package/dist/services/subscription/adapter.d.ts.map +1 -0
  89. package/dist/services/subscription/index.d.ts +5 -0
  90. package/dist/services/subscription/index.d.ts.map +1 -0
  91. package/dist/services/subscription/list.d.ts +22 -0
  92. package/dist/services/subscription/list.d.ts.map +1 -0
  93. package/dist/services/subscription/store.d.ts +30 -0
  94. package/dist/services/subscription/store.d.ts.map +1 -0
  95. package/dist/services/subscription/subscriptionService.d.ts +12 -0
  96. package/dist/services/subscription/subscriptionService.d.ts.map +1 -0
  97. package/dist/services/subscription/types.d.ts +76 -0
  98. package/dist/services/subscription/types.d.ts.map +1 -0
  99. package/dist/shared/block.d.ts +17 -0
  100. package/dist/shared/block.d.ts.map +1 -0
  101. package/dist/shared/context.d.ts +16 -0
  102. package/dist/shared/context.d.ts.map +1 -0
  103. package/dist/shared/signals.d.ts +17 -0
  104. package/dist/shared/signals.d.ts.map +1 -0
  105. package/dist/state.d.ts +81 -0
  106. package/dist/state.d.ts.map +1 -0
  107. package/dist/theme-state-BZplRS92.js +886 -0
  108. package/dist/theme-state.d.ts +85 -0
  109. package/dist/theme-state.d.ts.map +1 -0
  110. package/dist/theme-state.locales.test.d.ts +2 -0
  111. package/dist/theme-state.locales.test.d.ts.map +1 -0
  112. package/dist/translation.d.ts +14 -0
  113. package/dist/translation.d.ts.map +1 -0
  114. package/dist/translation.test.d.ts +2 -0
  115. package/dist/translation.test.d.ts.map +1 -0
  116. package/dist/utils/index.d.ts +32 -0
  117. package/dist/utils/index.d.ts.map +1 -0
  118. package/dist/utils/login.d.ts +11 -0
  119. package/dist/utils/login.d.ts.map +1 -0
  120. package/dist/utils/uuid.d.ts +2 -0
  121. package/dist/utils/uuid.d.ts.map +1 -0
  122. package/dist/vue/block.d.ts +7 -0
  123. package/dist/vue/block.d.ts.map +1 -0
  124. package/dist/vue/bridge.d.ts +11 -0
  125. package/dist/vue/bridge.d.ts.map +1 -0
  126. package/dist/vue/context.d.ts +24 -0
  127. package/dist/vue/context.d.ts.map +1 -0
  128. package/dist/vue/main.d.ts +6 -0
  129. package/dist/vue/main.d.ts.map +1 -0
  130. package/dist/vue/signals.d.ts +5 -0
  131. package/dist/vue/signals.d.ts.map +1 -0
  132. package/dist/vue/target.d.ts +2 -0
  133. package/dist/vue/target.d.ts.map +1 -0
  134. package/dist/vue/transform.d.ts +2 -0
  135. package/dist/vue/transform.d.ts.map +1 -0
  136. package/dist/vue.js +254 -0
  137. package/dist/web-components/Block.d.ts +17 -0
  138. package/dist/web-components/Block.d.ts.map +1 -0
  139. package/dist/web-components/Block.test.d.ts +2 -0
  140. package/dist/web-components/Block.test.d.ts.map +1 -0
  141. package/dist/web-components/ExtensionRoot.d.ts +29 -0
  142. package/dist/web-components/ExtensionRoot.d.ts.map +1 -0
  143. package/dist/web-components/editor/InlineText.d.ts +29 -0
  144. package/dist/web-components/editor/InlineText.d.ts.map +1 -0
  145. package/dist/web-components/editor/main.d.ts +2 -0
  146. package/dist/web-components/editor/main.d.ts.map +1 -0
  147. package/dist/web-components/runtime/InlineText.d.ts +6 -0
  148. package/dist/web-components/runtime/InlineText.d.ts.map +1 -0
  149. package/dist/web-components/runtime/main.d.ts +2 -0
  150. package/dist/web-components/runtime/main.d.ts.map +1 -0
  151. package/dist/web-components-editor.js +183 -0
  152. package/dist/web-components-runtime.js +55 -0
  153. package/package.json +62 -0
@@ -0,0 +1,75 @@
1
+ import { EditorMessage, IframeMessage } from './messages';
2
+ import { GlobalStyles, ThemeSurface, TranslationOverride } from '../theme-state';
3
+ import { Block } from '../block';
4
+ /**
5
+ * TODO: Messaging Architecture Improvements
6
+ *
7
+ * Current implementation uses a broadcast pattern where all messages are passed to all
8
+ * subscribers. Each subscriber then filters messages by blockId to find relevant ones.
9
+ * This works but is inefficient for pages with many blocks.
10
+ *
11
+ * Planned optimizations:
12
+ *
13
+ * 1. Use Browser's BroadcastChannel API or MessageChannel for targeted messaging instead
14
+ * of broadcasting to all subscribers. This would allow direct communication channels
15
+ * between specific blocks and the editor.
16
+ *
17
+ * 2. Implement 2-way communication. Currently, the editor sends messages to blocks
18
+ * (e.g., SET_BLOCK_PRESET). We need blocks to also post messages that the editor
19
+ * can subscribe to. Use cases:
20
+ * - Blocks reporting their current state to the editor
21
+ * - Blocks notifying the editor of user interactions
22
+ * - Blocks requesting data or actions from the editor
23
+ *
24
+ * 3. Consider using a topic-based subscription model where subscribers register for
25
+ * specific message types + blockId combinations rather than receiving everything.
26
+ *
27
+ * 4. Improve subscription lifecycle management. Although `onMessage` returns an
28
+ * `unsubscribe` callback, relying on framework-level cleanup (React/Preact/Vue
29
+ * useEffect cleanup, watchEffect onCleanup, etc.) is not always sufficient.
30
+ * When blocks are moved in the DOM, the component may be re-mounted without the
31
+ * previous instance's cleanup running (the old instance gets orphaned). This causes
32
+ * subscription leakage where multiple handlers accumulate for the same blockId.
33
+ * Currently, the Preact bridge works around this with a global `subscriptionMap`
34
+ * that deduplicates by blockId, but this should ideally be handled at the block
35
+ * lifecycle level - perhaps by the editor notifying when a block is about to be
36
+ * moved, or by having the bridge itself track subscriptions per blockId and
37
+ * automatically clean up stale ones.
38
+ */
39
+ export interface PresetData<TState = unknown, TContext = Record<string, unknown>> {
40
+ state: TState;
41
+ context: TContext;
42
+ }
43
+ export type ExtractPresetState<TPresets> = TPresets[keyof TPresets] extends {
44
+ state: infer S;
45
+ } ? S : never;
46
+ export type ExtractPresetContext<TPresets> = TPresets[keyof TPresets] extends {
47
+ context: infer C;
48
+ } ? C : never;
49
+ export interface EditorBridge {
50
+ readonly isEditorMode: boolean;
51
+ sendMessage: (message: IframeMessage) => void;
52
+ onMessage: (handler: (message: EditorMessage) => void) => {
53
+ unsubscribe: () => void;
54
+ };
55
+ onBlockPresetChange<TPresets = unknown>(blockId: string, callback: (preset: PresetData<ExtractPresetState<TPresets>, ExtractPresetContext<TPresets>> | null) => void): {
56
+ unsubscribe: () => void;
57
+ };
58
+ requestThemeState: (surface: ThemeSurface, id: string, defaultBlock: string) => Promise<{
59
+ blocks: Block[];
60
+ }>;
61
+ requestTranslationOverrides: (locale: string) => Promise<TranslationOverride[]>;
62
+ requestGlobalStyles: () => Promise<GlobalStyles>;
63
+ /**
64
+ * Tears down the bridge: removes event listeners, rejects pending requests,
65
+ * clears message handlers, and resets the singleton so a new bridge can be created.
66
+ */
67
+ destroy: () => void;
68
+ }
69
+ /**
70
+ * Returns the existing EditorBridge singleton, or null if not yet created.
71
+ * Use this when you need to conditionally send messages only in editor mode.
72
+ */
73
+ export declare function getEditorBridge(): EditorBridge | null;
74
+ export declare function createEditorBridge(): EditorBridge;
75
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/editor/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAGd,MAAM,YAAY,CAAC;AAUpB,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,UAAU,CACzB,MAAM,GAAG,OAAO,EAChB,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,QAAQ,CAAC,SAAS;IAC1E,KAAK,EAAE,MAAM,CAAC,CAAC;CAChB,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,oBAAoB,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,QAAQ,CAAC,SAAS;IAC5E,OAAO,EAAE,MAAM,CAAC,CAAC;CAClB,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,KAAK;QACxD,WAAW,EAAE,MAAM,IAAI,CAAC;KACzB,CAAC;IACF,mBAAmB,CAAC,QAAQ,GAAG,OAAO,EACpC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CACR,MAAM,EAAE,UAAU,CAChB,kBAAkB,CAAC,QAAQ,CAAC,EAC5B,oBAAoB,CAAC,QAAQ,CAAC,CAC/B,GAAG,IAAI,KACL,IAAI,GACR;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAC/B,iBAAiB,EAAE,CACjB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAA;KAAE,CAAC,CAAC;IAClC,2BAA2B,EAAE,CAC3B,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpC,mBAAmB,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CA2ZjD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bridge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.test.d.ts","sourceRoot":"","sources":["../../src/editor/bridge.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { BlockInstance } from '../block';
2
+ export declare class BlockWrapper extends HTMLElement {
3
+ private block;
4
+ private editorBridge;
5
+ private nameElement;
6
+ private menuElement;
7
+ private isMenuOpen;
8
+ private closeMenuOnOutsideClick;
9
+ static get observedAttributes(): string[];
10
+ constructor();
11
+ private setupStyles;
12
+ private setupTemplate;
13
+ connectedCallback(): void;
14
+ disconnectedCallback(): void;
15
+ private toggleMenu;
16
+ private openMenu;
17
+ private closeMenu;
18
+ setBlock(block: BlockInstance): void;
19
+ private updateActiveState;
20
+ /**
21
+ * Traverses up the DOM tree to find the parent element, crossing shadow root boundaries
22
+ */
23
+ private getParentElement;
24
+ private handleRemoveBlock;
25
+ }
26
+ declare global {
27
+ interface HTMLElementTagNameMap {
28
+ "juo-editor-block-wrapper": BlockWrapper;
29
+ }
30
+ }
31
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/editor/components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAkJ9C,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,uBAAuB,CAA0C;IAEzE,MAAM,KAAK,kBAAkB,aAE5B;;IASD,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;IA0ErB,iBAAiB;IAWjB,oBAAoB;IAUpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,SAAS;IAWjB,QAAQ,CAAC,KAAK,EAAE,aAAa;IAQ7B,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;CAmD1B;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,YAAY,CAAC;KAC1C;CACF"}
@@ -0,0 +1,10 @@
1
+ import { EditorMessage } from './messages';
2
+ import { ThemeState } from '../theme-state';
3
+ export interface EditorHandlerOptions {
4
+ themeState: ThemeState;
5
+ onBlockSelection?: (blockId: string | null) => void;
6
+ }
7
+ export declare function createEditorHandler(options: EditorHandlerOptions): {
8
+ handleMessage: (message: EditorMessage) => void;
9
+ };
10
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/editor/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACrD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB;6BAsE/B,aAAa;EAqS9C"}
@@ -0,0 +1,17 @@
1
+ import { ThemeState } from '../main.ts';
2
+ export * from './messages';
3
+ export * from './bridge';
4
+ export * from './handler';
5
+ export * from './components';
6
+ /**
7
+ * Sets up editor mode integration for the theme.
8
+ * Should be called when a ThemeStateContext is available and editor mode is detected.
9
+ *
10
+ * Returns a cleanup function that tears down the bridge and handler.
11
+ * Call the cleanup function when the host component unmounts (e.g. in Vue's `onUnmounted`).
12
+ */
13
+ export declare function setupEditorMode(routes: Record<string, {
14
+ name: string;
15
+ pageComponent: string;
16
+ }>, themeState: ThemeState): Promise<() => void>;
17
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/editor/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,aAAa,CAAC;AAQrB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAiD7B;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/D,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC,CA4BrB"}
@@ -0,0 +1,233 @@
1
+ import { Block, BlockPresets } from '../block';
2
+ import { GlobalStyles, ThemeSurface, TranslationOverride } from '../theme-state';
3
+ export type MessageType = "PROVIDE_THEME_STATE" | "SELECT_BLOCK" | "UPDATE_BLOCK_PROPS" | "ADD_BLOCK" | "REMOVE_BLOCK" | "MOVE_BLOCK" | "IFRAME_READY" | "REGISTER_BLOCKS" | "REGISTER_ROUTES" | "SET_BLOCK_PRESET" | "SET_LOCALE" | "REQUEST_THEME_STATE" | "REQUEST_TRANSLATION_OVERRIDES" | "PROVIDE_TRANSLATION_OVERRIDES" | "UPDATE_BLOCK_TRANSLATION" | "REGISTER_BLOCK_TRANSLATION_KEYS" | "FOCUS_INLINE_TEXT" | "SET_GLOBAL_STYLES" | "REQUEST_GLOBAL_STYLES" | "PROVIDE_GLOBAL_STYLES" | "PROVIDE_INITIAL_GLOBAL_STYLES" | "SCROLL_SYNC" | "REPORT_CONTENT_HEIGHT" | "REQUEST_CONTENT_HEIGHT";
4
+ export interface BaseMessage {
5
+ type: MessageType;
6
+ timestamp: number;
7
+ }
8
+ export interface ProvideThemeStateMessage extends BaseMessage {
9
+ type: "PROVIDE_THEME_STATE";
10
+ payload: {
11
+ requestId?: string;
12
+ surface: ThemeSurface;
13
+ id: string;
14
+ blocks: Block[];
15
+ };
16
+ }
17
+ export interface RequestThemeStateMessage extends BaseMessage {
18
+ type: "REQUEST_THEME_STATE";
19
+ payload: {
20
+ requestId: string;
21
+ surface: ThemeSurface;
22
+ id: string;
23
+ defaultBlock: string;
24
+ };
25
+ }
26
+ export interface RequestTranslationOverridesMessage extends BaseMessage {
27
+ type: "REQUEST_TRANSLATION_OVERRIDES";
28
+ payload: {
29
+ requestId: string;
30
+ locale: string;
31
+ };
32
+ }
33
+ export interface ProvideTranslationOverridesMessage extends BaseMessage {
34
+ type: "PROVIDE_TRANSLATION_OVERRIDES";
35
+ payload: {
36
+ requestId?: string;
37
+ overrides: TranslationOverride[];
38
+ };
39
+ }
40
+ export interface SelectBlockMessage extends BaseMessage {
41
+ type: "SELECT_BLOCK";
42
+ payload: {
43
+ blockId: string | null;
44
+ };
45
+ blockId?: string;
46
+ }
47
+ export interface UpdateBlockPropsMessage extends BaseMessage {
48
+ type: "UPDATE_BLOCK_PROPS";
49
+ payload: {
50
+ blockId: string;
51
+ props: unknown;
52
+ };
53
+ blockId: string;
54
+ }
55
+ export interface UpdateBlockTranslationMessage extends BaseMessage {
56
+ type: "UPDATE_BLOCK_TRANSLATION";
57
+ payload: {
58
+ blockId: string;
59
+ blockType: string;
60
+ key: string;
61
+ value: string;
62
+ locale?: string;
63
+ };
64
+ blockId: string;
65
+ }
66
+ export interface RegisterBlockTranslationKeysMessage extends BaseMessage {
67
+ type: "REGISTER_BLOCK_TRANSLATION_KEYS";
68
+ payload: {
69
+ blockId: string;
70
+ blockType: string;
71
+ /** Map of translation key to its default/fallback value */
72
+ keys: Record<string, string>;
73
+ };
74
+ }
75
+ export interface AddBlockMessage extends BaseMessage {
76
+ type: "ADD_BLOCK";
77
+ payload: {
78
+ block: Block;
79
+ location: {
80
+ type: "before" | "after";
81
+ targetId: string;
82
+ } | {
83
+ type: "append";
84
+ slot: string;
85
+ parentId: string;
86
+ };
87
+ };
88
+ blockId: string;
89
+ }
90
+ export interface RemoveBlockMessage extends BaseMessage {
91
+ type: "REMOVE_BLOCK";
92
+ payload: {
93
+ blockId: string;
94
+ location: {
95
+ slot: string;
96
+ parentId: string;
97
+ };
98
+ };
99
+ blockId: string;
100
+ }
101
+ export interface MoveBlockMessage extends BaseMessage {
102
+ type: "MOVE_BLOCK";
103
+ payload: {
104
+ blockId: string;
105
+ location: {
106
+ index: number;
107
+ slot: string;
108
+ parentId: string;
109
+ };
110
+ };
111
+ blockId: string;
112
+ }
113
+ export interface IframeReadyMessage extends BaseMessage {
114
+ type: "IFRAME_READY";
115
+ payload: {};
116
+ }
117
+ export interface RegisterBlocksMessage extends BaseMessage {
118
+ type: "REGISTER_BLOCKS";
119
+ payload: {
120
+ blocks: Array<{
121
+ name: string;
122
+ group: string;
123
+ schema: unknown;
124
+ initialValue: unknown;
125
+ presets?: BlockPresets;
126
+ /** Locale code → flattened translation strings for all supported locales. */
127
+ locales?: Record<string, Record<string, string>>;
128
+ }>;
129
+ };
130
+ }
131
+ export interface SetBlockPresetMessage extends BaseMessage {
132
+ type: "SET_BLOCK_PRESET";
133
+ payload: {
134
+ blockId: string;
135
+ /** State and context to apply (null to reset to default) */
136
+ preset: {
137
+ state: string;
138
+ context: Record<string, unknown>;
139
+ } | null;
140
+ };
141
+ }
142
+ export interface SetLocaleMessage extends BaseMessage {
143
+ type: "SET_LOCALE";
144
+ payload: {
145
+ locale: string;
146
+ };
147
+ }
148
+ export interface FocusInlineTextMessage extends BaseMessage {
149
+ type: "FOCUS_INLINE_TEXT";
150
+ payload: {
151
+ blockId: string;
152
+ key: string;
153
+ };
154
+ blockId: string;
155
+ }
156
+ export interface RegisterRoutesMessage extends BaseMessage {
157
+ type: "REGISTER_ROUTES";
158
+ payload: {
159
+ routes: Record<string, {
160
+ name: string;
161
+ pageComponent: string;
162
+ }>;
163
+ };
164
+ }
165
+ export interface SetGlobalStylesMessage extends BaseMessage {
166
+ type: "SET_GLOBAL_STYLES";
167
+ payload: {
168
+ styles: GlobalStyles;
169
+ };
170
+ }
171
+ export interface RequestGlobalStylesMessage extends BaseMessage {
172
+ type: "REQUEST_GLOBAL_STYLES";
173
+ payload: {
174
+ requestId: string;
175
+ };
176
+ }
177
+ export interface ProvideGlobalStylesMessage extends BaseMessage {
178
+ type: "PROVIDE_GLOBAL_STYLES";
179
+ payload: {
180
+ requestId?: string;
181
+ styles: GlobalStyles;
182
+ };
183
+ }
184
+ export interface ProvideInitialGlobalStylesMessage extends BaseMessage {
185
+ type: "PROVIDE_INITIAL_GLOBAL_STYLES";
186
+ payload: {
187
+ styles: GlobalStyles;
188
+ };
189
+ }
190
+ export type EditorMessage = ProvideThemeStateMessage | ProvideTranslationOverridesMessage | SelectBlockMessage | UpdateBlockPropsMessage | AddBlockMessage | RemoveBlockMessage | MoveBlockMessage | SetBlockPresetMessage | SetLocaleMessage | SetGlobalStylesMessage | ProvideGlobalStylesMessage | ScrollSyncMessage | RequestContentHeightMessage;
191
+ export type IframeMessage = SelectBlockMessage | IframeReadyMessage | RegisterBlocksMessage | RegisterRoutesMessage | RemoveBlockMessage | UpdateBlockPropsMessage | RequestThemeStateMessage | RequestTranslationOverridesMessage | UpdateBlockTranslationMessage | RegisterBlockTranslationKeysMessage | FocusInlineTextMessage | RequestGlobalStylesMessage | ProvideInitialGlobalStylesMessage | ReportContentHeightMessage | ScrollSyncMessage;
192
+ export type AnyMessage = EditorMessage | IframeMessage;
193
+ export declare function isEditorMessage(message: AnyMessage): message is EditorMessage;
194
+ export declare function isIframeMessage(message: AnyMessage): message is IframeMessage;
195
+ export declare function createProvideThemeStateMessage(payload: ProvideThemeStateMessage["payload"]): ProvideThemeStateMessage;
196
+ export declare function createRequestThemeStateMessage(payload: RequestThemeStateMessage["payload"]): RequestThemeStateMessage;
197
+ export declare function createRequestTranslationOverridesMessage(payload: RequestTranslationOverridesMessage["payload"]): RequestTranslationOverridesMessage;
198
+ export declare function createProvideTranslationOverridesMessage(payload: ProvideTranslationOverridesMessage["payload"]): ProvideTranslationOverridesMessage;
199
+ export declare function createSelectBlockMessage(payload: SelectBlockMessage["payload"], blockId?: string): SelectBlockMessage;
200
+ export declare function createUpdateBlockPropsMessage(payload: UpdateBlockPropsMessage["payload"], blockId: string): UpdateBlockPropsMessage;
201
+ export declare function createUpdateBlockTranslationMessage(payload: UpdateBlockTranslationMessage["payload"], blockId: string): UpdateBlockTranslationMessage;
202
+ export declare function createAddBlockMessage(payload: AddBlockMessage["payload"], blockId: string): AddBlockMessage;
203
+ export declare function createRemoveBlockMessage(payload: RemoveBlockMessage["payload"], blockId: string): RemoveBlockMessage;
204
+ export declare function createMoveBlockMessage(payload: MoveBlockMessage["payload"], blockId: string): MoveBlockMessage;
205
+ export declare function createRegisterBlocksMessage(payload: RegisterBlocksMessage["payload"]): RegisterBlocksMessage;
206
+ export declare function createSetBlockPresetMessage(payload: SetBlockPresetMessage["payload"]): SetBlockPresetMessage;
207
+ export declare function createSetLocaleMessage(payload: SetLocaleMessage["payload"]): SetLocaleMessage;
208
+ export declare function createRegisterBlockTranslationKeysMessage(payload: RegisterBlockTranslationKeysMessage["payload"]): RegisterBlockTranslationKeysMessage;
209
+ export declare function createFocusInlineTextMessage(payload: FocusInlineTextMessage["payload"], blockId: string): FocusInlineTextMessage;
210
+ export declare function createRegisterRoutesMessage(payload: RegisterRoutesMessage["payload"]): RegisterRoutesMessage;
211
+ export declare function createSetGlobalStylesMessage(payload: SetGlobalStylesMessage["payload"]): SetGlobalStylesMessage;
212
+ export declare function createRequestGlobalStylesMessage(payload: RequestGlobalStylesMessage["payload"]): RequestGlobalStylesMessage;
213
+ export interface ScrollSyncMessage extends BaseMessage {
214
+ type: "SCROLL_SYNC";
215
+ payload: {
216
+ scrollY: number;
217
+ };
218
+ }
219
+ export interface ReportContentHeightMessage extends BaseMessage {
220
+ type: "REPORT_CONTENT_HEIGHT";
221
+ payload: {
222
+ height: number;
223
+ };
224
+ }
225
+ export interface RequestContentHeightMessage extends BaseMessage {
226
+ type: "REQUEST_CONTENT_HEIGHT";
227
+ payload: Record<string, never>;
228
+ }
229
+ export declare function createProvideGlobalStylesMessage(payload: ProvideGlobalStylesMessage["payload"]): ProvideGlobalStylesMessage;
230
+ export declare function createProvideInitialGlobalStylesMessage(payload: ProvideInitialGlobalStylesMessage["payload"]): ProvideInitialGlobalStylesMessage;
231
+ export declare function createScrollSyncMessage(payload: ScrollSyncMessage["payload"]): ScrollSyncMessage;
232
+ export declare function createReportContentHeightMessage(payload: ReportContentHeightMessage["payload"]): ReportContentHeightMessage;
233
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/editor/messages.ts"],"names":[],"mappings":"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"}