@brixter/brix-builder 0.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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/dist/core.d.ts +103 -0
  4. package/dist/core.d.ts.map +1 -0
  5. package/dist/core.js +758 -0
  6. package/dist/core.js.map +1 -0
  7. package/dist/editor/BuilderApp.svelte +1299 -0
  8. package/dist/editor/BuilderFieldEditor.svelte +274 -0
  9. package/dist/editor/BuilderInspector.svelte +123 -0
  10. package/dist/editor/BuilderPreviewFrame.svelte +661 -0
  11. package/dist/editor/ComponentPreviewThumbnail.svelte +197 -0
  12. package/dist/editor/PageFlowSidebar.svelte +198 -0
  13. package/dist/editor/PreviewBlockInserter.svelte +35 -0
  14. package/dist/editor/PreviewIconEditor.svelte +213 -0
  15. package/dist/editor/PreviewImageEditor.svelte +221 -0
  16. package/dist/editor/PreviewTextEditor.svelte +246 -0
  17. package/dist/editor/RichTextEditor.svelte +234 -0
  18. package/dist/editor/contracts.d.ts +57 -0
  19. package/dist/editor/contracts.d.ts.map +1 -0
  20. package/dist/editor/contracts.js +2 -0
  21. package/dist/editor/contracts.js.map +1 -0
  22. package/dist/editor/index.d.ts +3 -0
  23. package/dist/editor/index.d.ts.map +1 -0
  24. package/dist/editor/index.js +2 -0
  25. package/dist/editor/index.js.map +1 -0
  26. package/dist/editor/shortcuts.d.ts +28 -0
  27. package/dist/editor/shortcuts.d.ts.map +1 -0
  28. package/dist/editor/shortcuts.js +28 -0
  29. package/dist/editor/shortcuts.js.map +1 -0
  30. package/dist/editor-controller.d.ts +50 -0
  31. package/dist/editor-controller.d.ts.map +1 -0
  32. package/dist/editor-controller.js +157 -0
  33. package/dist/editor-controller.js.map +1 -0
  34. package/dist/index.d.ts +7 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +6 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/preview/field-edit-debug.d.ts +5 -0
  39. package/dist/preview/field-edit-debug.d.ts.map +1 -0
  40. package/dist/preview/field-edit-debug.js +36 -0
  41. package/dist/preview/field-edit-debug.js.map +1 -0
  42. package/dist/preview/interactive-content.d.ts +8 -0
  43. package/dist/preview/interactive-content.d.ts.map +1 -0
  44. package/dist/preview/interactive-content.js +62 -0
  45. package/dist/preview/interactive-content.js.map +1 -0
  46. package/dist/preview-dom.d.ts +67 -0
  47. package/dist/preview-dom.d.ts.map +1 -0
  48. package/dist/preview-dom.js +191 -0
  49. package/dist/preview-dom.js.map +1 -0
  50. package/dist/svelte/SveltePreviewRenderer.svelte +490 -0
  51. package/dist/svelte/adapter.d.ts +7 -0
  52. package/dist/svelte/adapter.d.ts.map +1 -0
  53. package/dist/svelte/adapter.js +66 -0
  54. package/dist/svelte/adapter.js.map +1 -0
  55. package/dist/svelte/index.d.ts +3 -0
  56. package/dist/svelte/index.d.ts.map +1 -0
  57. package/dist/svelte/index.js +3 -0
  58. package/dist/svelte/index.js.map +1 -0
  59. package/dist/svelte/markup-schema.d.ts +5 -0
  60. package/dist/svelte/markup-schema.d.ts.map +1 -0
  61. package/dist/svelte/markup-schema.js +177 -0
  62. package/dist/svelte/markup-schema.js.map +1 -0
  63. package/package.json +56 -0
@@ -0,0 +1,57 @@
1
+ import type { Component } from 'svelte';
2
+ import type { BuilderBlock, BuilderDefinition, BuilderRichTextValue } from '../core.js';
3
+ import type { PreviewCollectionOverlay, PreviewOverlay } from '../preview-dom.js';
4
+ export interface BuilderRenderDefinition extends BuilderDefinition {
5
+ component: Component<Record<string, unknown>>;
6
+ }
7
+ export interface PreviewFieldEdit {
8
+ blockId: string;
9
+ path: string;
10
+ caretOffset?: number | null;
11
+ }
12
+ export interface PreviewEditingContext {
13
+ active: boolean;
14
+ focusPath: string | null;
15
+ caretOffset: number | null;
16
+ previewProps: Record<string, unknown>;
17
+ }
18
+ export type PreviewContainerAction = (node: HTMLElement, params: {
19
+ block: BuilderBlock;
20
+ definition: BuilderRenderDefinition;
21
+ editing: PreviewEditingContext;
22
+ }) => {
23
+ update: (nextParams: {
24
+ block: BuilderBlock;
25
+ definition: BuilderRenderDefinition;
26
+ editing: PreviewEditingContext;
27
+ }) => void;
28
+ destroy: () => void;
29
+ };
30
+ export interface BuilderAppPreviewProps {
31
+ definitions: BuilderRenderDefinition[];
32
+ blocks: BuilderBlock[];
33
+ propsErrors: Record<string, string | null>;
34
+ previewOverlays: Record<string, PreviewOverlay[]>;
35
+ previewCollectionOverlays: Record<string, PreviewCollectionOverlay[]>;
36
+ activeBlockId: string | null;
37
+ activeFieldEdit: PreviewFieldEdit | null;
38
+ previewContainer: PreviewContainerAction;
39
+ onPreviewClick: (block: BuilderBlock, event: MouseEvent) => void;
40
+ onPreviewKeydown: (block: BuilderBlock, event: KeyboardEvent) => void;
41
+ onSelectBlock: (blockId: string) => void;
42
+ onCloseFieldEdit: () => void;
43
+ onUpdateRichText: (block: BuilderBlock, path: string, value: BuilderRichTextValue) => void;
44
+ onUpdateText: (block: BuilderBlock, path: string, value: string) => void;
45
+ onQueueFileEdit: (blockId: string, path: string) => void;
46
+ onAddBlockBefore: (blockId: string, type: string) => void;
47
+ onAddBlockAfter: (blockId: string, type: string) => void;
48
+ onAddItem: (block: BuilderBlock, collectionPath: string) => void;
49
+ onRemoveItem: (block: BuilderBlock, collectionPath: string, index: number) => void;
50
+ onMoveItem: (block: BuilderBlock, collectionPath: string, index: number, direction: -1 | 1) => void;
51
+ onOpenReorderModal: (blockId: string, collectionPath: string) => void;
52
+ onOpenInserterModal: (blockId: string, placement: 'before' | 'after') => void;
53
+ onDeselectBlock: () => void;
54
+ previewMode?: boolean;
55
+ viewportSize?: 'desktop' | 'tablet' | 'mobile';
56
+ }
57
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../editor/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElF,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IACjE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,sBAAsB,GAAG,CACpC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE;IACP,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,uBAAuB,CAAC;IACpC,OAAO,EAAE,qBAAqB,CAAC;CAC/B,KACG;IACJ,MAAM,EAAE,CAAC,UAAU,EAAE;QACpB,KAAK,EAAE,YAAY,CAAC;QACpB,UAAU,EAAE,uBAAuB,CAAC;QACpC,OAAO,EAAE,qBAAqB,CAAC;KAC/B,KAAK,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACtC,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAClD,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACtE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,cAAc,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACjE,gBAAgB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,gBAAgB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC3F,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,UAAU,EAAE,CACX,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,KACb,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IAC9E,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC/C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../editor/contracts.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { default as BuilderApp } from './BuilderApp.svelte';
2
+ export type { BuilderRenderDefinition, BuilderAppPreviewProps, PreviewContainerAction } from './contracts.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EACX,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default as BuilderApp } from './BuilderApp.svelte';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,28 @@
1
+ export declare const SHORTCUTS: {
2
+ togglePageFlow: {
3
+ key: string;
4
+ mod: true;
5
+ shift: false;
6
+ };
7
+ toggleInspector: {
8
+ key: string;
9
+ mod: true;
10
+ shift: true;
11
+ };
12
+ togglePreview: {
13
+ key: string;
14
+ mod: true;
15
+ shift: false;
16
+ };
17
+ closeModal: {
18
+ key: string;
19
+ mod: false;
20
+ shift: false;
21
+ };
22
+ };
23
+ export declare function matchesShortcut(event: KeyboardEvent, shortcut: {
24
+ key: string;
25
+ mod: boolean;
26
+ shift: boolean;
27
+ }): boolean;
28
+ //# sourceMappingURL=shortcuts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcuts.d.ts","sourceRoot":"","sources":["../../editor/shortcuts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;CAqBmD,CAAC;AAE1E,wBAAgB,eAAe,CAC9B,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACrD,OAAO,CAIT"}
@@ -0,0 +1,28 @@
1
+ export const SHORTCUTS = {
2
+ togglePageFlow: {
3
+ key: '\\',
4
+ mod: true,
5
+ shift: false,
6
+ },
7
+ toggleInspector: {
8
+ key: '\\',
9
+ mod: true,
10
+ shift: true,
11
+ },
12
+ togglePreview: {
13
+ key: 'p',
14
+ mod: true,
15
+ shift: false,
16
+ },
17
+ closeModal: {
18
+ key: 'Escape',
19
+ mod: false,
20
+ shift: false,
21
+ },
22
+ };
23
+ export function matchesShortcut(event, shortcut) {
24
+ const modMatch = shortcut.mod ? event.metaKey || event.ctrlKey : true;
25
+ const shiftMatch = shortcut.shift ? event.shiftKey : !event.shiftKey;
26
+ return modMatch && shiftMatch && event.key === shortcut.key;
27
+ }
28
+ //# sourceMappingURL=shortcuts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../editor/shortcuts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,cAAc,EAAE;QACf,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,KAAK;KACZ;IACD,eAAe,EAAE;QAChB,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI;KACX;IACD,aAAa,EAAE;QACd,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,KAAK;KACZ;IACD,UAAU,EAAE;QACX,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,KAAK;KACZ;CACuE,CAAC;AAE1E,MAAM,UAAU,eAAe,CAC9B,KAAoB,EACpB,QAAuD;IAEvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrE,OAAO,QAAQ,IAAI,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { type BuilderBlock, type BuilderCollection, type BuilderDefinition, type BuilderDocument } from './core.js';
2
+ export interface ReorderModalState {
3
+ blockId: string;
4
+ collectionPath: string;
5
+ }
6
+ export interface DraggedCollectionItemState {
7
+ blockId: string;
8
+ collectionPath: string;
9
+ index: number;
10
+ }
11
+ export interface PendingFileEditState {
12
+ blockId: string;
13
+ path: string;
14
+ }
15
+ export interface EditorControllerState {
16
+ document: BuilderDocument;
17
+ draggedBlockId: string | null;
18
+ copied: boolean;
19
+ propsErrors: Record<string, string | null>;
20
+ pendingFileEdit: PendingFileEditState | null;
21
+ reorderModal: ReorderModalState | null;
22
+ draggedCollectionItem: DraggedCollectionItemState | null;
23
+ }
24
+ export interface ActiveReorderContext {
25
+ block: BuilderBlock;
26
+ collection: BuilderCollection;
27
+ items: Array<Record<string, unknown>>;
28
+ }
29
+ export declare function createEditorControllerState(definitions: BuilderDefinition[], initialDocument?: BuilderDocument): EditorControllerState;
30
+ export declare function getBuilderDefinition<Definition extends BuilderDefinition>(type: string, definitions: Definition[]): Definition;
31
+ export declare function getActiveReorderContext(state: EditorControllerState, definitions: BuilderDefinition[]): ActiveReorderContext | null;
32
+ export declare function addBlock(state: EditorControllerState, definitions: BuilderDefinition[], type: string): BuilderBlock;
33
+ export declare function removeBlock(state: EditorControllerState, blockId: string): void;
34
+ export declare function handleBlockDragStart(state: EditorControllerState, blockId: string): void;
35
+ export declare function moveBlock(state: EditorControllerState, blockId: string, direction: -1 | 1): void;
36
+ export declare function handleBlockDrop(state: EditorControllerState, targetBlockId: string): void;
37
+ export declare function syncBlockProps(state: EditorControllerState, block: BuilderBlock, nextProps: Record<string, unknown>): void;
38
+ export declare function updatePropAtPath(state: EditorControllerState, block: BuilderBlock, path: string, value: unknown): void;
39
+ export declare function queueFileEdit(state: EditorControllerState, blockId: string, path: string): void;
40
+ export declare function applyFileToPendingEdit(state: EditorControllerState, dataUrl: string): BuilderBlock | null;
41
+ export declare function clearPendingFileEdit(state: EditorControllerState): void;
42
+ export declare function setBlockError(state: EditorControllerState, blockId: string, message: string | null): void;
43
+ export declare function addItem(state: EditorControllerState, definitions: BuilderDefinition[], block: BuilderBlock, collectionPath: string): void;
44
+ export declare function removeItem(state: EditorControllerState, definitions: BuilderDefinition[], block: BuilderBlock, collectionPath: string, index: number): void;
45
+ export declare function moveItem(state: EditorControllerState, definitions: BuilderDefinition[], block: BuilderBlock, collectionPath: string, index: number, direction: -1 | 1): void;
46
+ export declare function openReorderModal(state: EditorControllerState, blockId: string, collectionPath: string): void;
47
+ export declare function closeReorderModal(state: EditorControllerState): void;
48
+ export declare function handleCollectionItemDragStart(state: EditorControllerState, blockId: string, collectionPath: string, index: number): void;
49
+ export declare function handleCollectionItemDrop(state: EditorControllerState, definitions: BuilderDefinition[], targetIndex: number): void;
50
+ //# sourceMappingURL=editor-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-controller.d.ts","sourceRoot":"","sources":["../editor-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { addCollectionItem, createBlock, createBuilderDocument, getCollectionItems, moveCollectionItem, removeCollectionItem, reorderCollectionItem, updatePropsAtPath } from './core.js';
2
+ export function createEditorControllerState(definitions, initialDocument) {
3
+ const document = initialDocument ?? createBuilderDocument(definitions);
4
+ const state = {
5
+ document,
6
+ draggedBlockId: null,
7
+ copied: false,
8
+ propsErrors: {},
9
+ pendingFileEdit: null,
10
+ reorderModal: null,
11
+ draggedCollectionItem: null
12
+ };
13
+ return state;
14
+ }
15
+ export function getBuilderDefinition(type, definitions) {
16
+ const definition = definitions.find((entry) => entry.type === type);
17
+ if (!definition) {
18
+ throw new Error(`Unknown brik type: ${type}`);
19
+ }
20
+ return definition;
21
+ }
22
+ export function getActiveReorderContext(state, definitions) {
23
+ const modal = state.reorderModal;
24
+ if (!modal) {
25
+ return null;
26
+ }
27
+ const block = state.document.blocks.find((entry) => entry.id === modal.blockId);
28
+ if (!block) {
29
+ return null;
30
+ }
31
+ const definition = getBuilderDefinition(block.type, definitions);
32
+ const collection = definition.collections.find((entry) => entry.path === modal.collectionPath);
33
+ if (!collection) {
34
+ return null;
35
+ }
36
+ return {
37
+ block,
38
+ collection,
39
+ items: getCollectionItems(block.props, collection)
40
+ };
41
+ }
42
+ export function addBlock(state, definitions, type) {
43
+ const block = createBlock(type, definitions);
44
+ state.document.blocks.push(block);
45
+ return block;
46
+ }
47
+ export function removeBlock(state, blockId) {
48
+ state.document.blocks = state.document.blocks.filter((block) => block.id !== blockId);
49
+ delete state.propsErrors[blockId];
50
+ }
51
+ export function handleBlockDragStart(state, blockId) {
52
+ state.draggedBlockId = blockId;
53
+ }
54
+ export function moveBlock(state, blockId, direction) {
55
+ const index = state.document.blocks.findIndex((block) => block.id === blockId);
56
+ const nextIndex = index + direction;
57
+ if (index === -1 || nextIndex < 0 || nextIndex >= state.document.blocks.length) {
58
+ return;
59
+ }
60
+ const reordered = [...state.document.blocks];
61
+ const [block] = reordered.splice(index, 1);
62
+ reordered.splice(nextIndex, 0, block);
63
+ state.document.blocks = reordered;
64
+ }
65
+ export function handleBlockDrop(state, targetBlockId) {
66
+ if (!state.draggedBlockId || state.draggedBlockId === targetBlockId) {
67
+ state.draggedBlockId = null;
68
+ return;
69
+ }
70
+ const reordered = [...state.document.blocks];
71
+ const draggedIndex = reordered.findIndex((block) => block.id === state.draggedBlockId);
72
+ const targetIndex = reordered.findIndex((block) => block.id === targetBlockId);
73
+ if (draggedIndex === -1 || targetIndex === -1) {
74
+ state.draggedBlockId = null;
75
+ return;
76
+ }
77
+ const [draggedBlock] = reordered.splice(draggedIndex, 1);
78
+ reordered.splice(targetIndex, 0, draggedBlock);
79
+ state.document.blocks = reordered;
80
+ state.draggedBlockId = null;
81
+ }
82
+ export function syncBlockProps(state, block, nextProps) {
83
+ block.props = nextProps;
84
+ state.propsErrors[block.id] = null;
85
+ }
86
+ export function updatePropAtPath(state, block, path, value) {
87
+ syncBlockProps(state, block, updatePropsAtPath(block.props, path, value));
88
+ }
89
+ export function queueFileEdit(state, blockId, path) {
90
+ state.pendingFileEdit = { blockId, path };
91
+ }
92
+ export function applyFileToPendingEdit(state, dataUrl) {
93
+ if (!state.pendingFileEdit) {
94
+ return null;
95
+ }
96
+ const block = state.document.blocks.find((entry) => entry.id === state.pendingFileEdit?.blockId);
97
+ if (!block) {
98
+ state.pendingFileEdit = null;
99
+ return null;
100
+ }
101
+ syncBlockProps(state, block, updatePropsAtPath(block.props, state.pendingFileEdit.path, dataUrl));
102
+ state.pendingFileEdit = null;
103
+ return block;
104
+ }
105
+ export function clearPendingFileEdit(state) {
106
+ state.pendingFileEdit = null;
107
+ }
108
+ export function setBlockError(state, blockId, message) {
109
+ state.propsErrors[blockId] = message;
110
+ }
111
+ export function addItem(state, definitions, block, collectionPath) {
112
+ const collection = getCollectionDefinition(definitions, block, collectionPath);
113
+ if (!collection)
114
+ return;
115
+ syncBlockProps(state, block, addCollectionItem(block.props, collection));
116
+ }
117
+ export function removeItem(state, definitions, block, collectionPath, index) {
118
+ const collection = getCollectionDefinition(definitions, block, collectionPath);
119
+ if (!collection)
120
+ return;
121
+ syncBlockProps(state, block, removeCollectionItem(block.props, collection, index));
122
+ }
123
+ export function moveItem(state, definitions, block, collectionPath, index, direction) {
124
+ const collection = getCollectionDefinition(definitions, block, collectionPath);
125
+ if (!collection)
126
+ return;
127
+ syncBlockProps(state, block, moveCollectionItem(block.props, collection, index, direction));
128
+ }
129
+ export function openReorderModal(state, blockId, collectionPath) {
130
+ state.reorderModal = { blockId, collectionPath };
131
+ }
132
+ export function closeReorderModal(state) {
133
+ state.reorderModal = null;
134
+ state.draggedCollectionItem = null;
135
+ }
136
+ export function handleCollectionItemDragStart(state, blockId, collectionPath, index) {
137
+ state.draggedCollectionItem = { blockId, collectionPath, index };
138
+ }
139
+ export function handleCollectionItemDrop(state, definitions, targetIndex) {
140
+ const dragged = state.draggedCollectionItem;
141
+ const context = getActiveReorderContext(state, definitions);
142
+ if (!dragged || !context) {
143
+ state.draggedCollectionItem = null;
144
+ return;
145
+ }
146
+ if (dragged.blockId !== context.block.id || dragged.collectionPath !== context.collection.path) {
147
+ state.draggedCollectionItem = null;
148
+ return;
149
+ }
150
+ syncBlockProps(state, context.block, reorderCollectionItem(context.block.props, context.collection, dragged.index, targetIndex));
151
+ state.draggedCollectionItem = null;
152
+ }
153
+ function getCollectionDefinition(definitions, block, collectionPath) {
154
+ const definition = getBuilderDefinition(block.type, definitions);
155
+ return definition.collections.find((entry) => entry.path === collectionPath) ?? null;
156
+ }
157
+ //# sourceMappingURL=editor-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-controller.js","sourceRoot":"","sources":["../editor-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { default as BrixEditor } from './editor/BuilderApp.svelte';
2
+ export { SHORTCUTS, matchesShortcut } from './editor/shortcuts.js';
3
+ export { createBrixDefinitions, type BrikDefinition } from './svelte/adapter.js';
4
+ export { createBrikSchemaFromMarkup } from './svelte/markup-schema.js';
5
+ export { parseBrixYamlDocument as importBrixFromYaml, serializeToBrixYaml as exportBrixToYaml, serializeToMdsvex as exportBrixToMdsvex } from './core.js';
6
+ export type { BuilderBlock as Brik, BuilderCollection as BrikCollection, BuilderDefinition as BrikDefinitionBase, BuilderDocument as BrixDocument, BuilderField as BrikField, BuilderFields as BrikFields, BuilderPreviewBinding as BrikPreviewBinding, BuilderRichTextValue as BrikRichTextValue, BrixYamlComponent, BrixYamlDocument } from './core.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EACN,qBAAqB,IAAI,kBAAkB,EAC3C,mBAAmB,IAAI,gBAAgB,EACvC,iBAAiB,IAAI,kBAAkB,EACvC,MAAM,WAAW,CAAC;AAEnB,YAAY,EACX,YAAY,IAAI,IAAI,EACpB,iBAAiB,IAAI,cAAc,EACnC,iBAAiB,IAAI,kBAAkB,EACvC,eAAe,IAAI,YAAY,EAC/B,YAAY,IAAI,SAAS,EACzB,aAAa,IAAI,UAAU,EAC3B,qBAAqB,IAAI,kBAAkB,EAC3C,oBAAoB,IAAI,iBAAiB,EACzC,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { default as BrixEditor } from './editor/BuilderApp.svelte';
2
+ export { SHORTCUTS, matchesShortcut } from './editor/shortcuts.js';
3
+ export { createBrixDefinitions } from './svelte/adapter.js';
4
+ export { createBrikSchemaFromMarkup } from './svelte/markup-schema.js';
5
+ export { parseBrixYamlDocument as importBrixFromYaml, serializeToBrixYaml as exportBrixToYaml, serializeToMdsvex as exportBrixToMdsvex } from './core.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAuB,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EACN,qBAAqB,IAAI,kBAAkB,EAC3C,mBAAmB,IAAI,gBAAgB,EACvC,iBAAiB,IAAI,kBAAkB,EACvC,MAAM,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function isFieldEditDebugEnabled(): boolean;
2
+ /** User-driven events only (click / mousedown / activate). */
3
+ export declare function logFieldEditEvent(scope: string, message: string, data?: Record<string, unknown>): void;
4
+ export declare function describeFieldElement(element: Element | null | undefined): Record<string, unknown>;
5
+ //# sourceMappingURL=field-edit-debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-edit-debug.d.ts","sourceRoot":"","sources":["../../preview/field-edit-debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,IAAI,OAAO,CAKjD;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CAWN;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBjG"}
@@ -0,0 +1,36 @@
1
+ export function isFieldEditDebugEnabled() {
2
+ return (typeof globalThis !== 'undefined' &&
3
+ globalThis.__BUILDER_FIELD_EDIT_DEBUG__ === true);
4
+ }
5
+ /** User-driven events only (click / mousedown / activate). */
6
+ export function logFieldEditEvent(scope, message, data) {
7
+ if (!isFieldEditDebugEnabled()) {
8
+ return;
9
+ }
10
+ if (data) {
11
+ console.log(`[builder-preview-field] ${scope} — ${message}`, data);
12
+ return;
13
+ }
14
+ console.log(`[builder-preview-field] ${scope} — ${message}`);
15
+ }
16
+ export function describeFieldElement(element) {
17
+ if (!(element instanceof HTMLElement)) {
18
+ return { element: element == null ? null : String(element) };
19
+ }
20
+ const rect = element.getBoundingClientRect();
21
+ return {
22
+ tag: element.tagName.toLowerCase(),
23
+ field: element.getAttribute('data-builder-field'),
24
+ enhanced: element.dataset.builderFieldEnhanced ?? null,
25
+ placeholderActive: element.hasAttribute('data-builder-placeholder-active'),
26
+ ghostLabel: element.dataset.builderPreviewGhostLabel ?? null,
27
+ text: element.textContent?.slice(0, 80) ?? '',
28
+ rect: {
29
+ x: Math.round(rect.x),
30
+ y: Math.round(rect.y),
31
+ w: Math.round(rect.width),
32
+ h: Math.round(rect.height)
33
+ }
34
+ };
35
+ }
36
+ //# sourceMappingURL=field-edit-debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-edit-debug.js","sourceRoot":"","sources":["../../preview/field-edit-debug.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB;IACtC,OAAO,CACN,OAAO,UAAU,KAAK,WAAW;QAChC,UAAyD,CAAC,4BAA4B,KAAK,IAAI,CAChG,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,iBAAiB,CAChC,KAAa,EACb,OAAe,EACf,IAA8B;IAE9B,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;QAChC,OAAO;IACR,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,MAAM,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,MAAM,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAmC;IACvE,IAAI,CAAC,CAAC,OAAO,YAAY,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC7C,OAAO;QACN,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAClC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC;QACjD,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI;QACtD,iBAAiB,EAAE,OAAO,CAAC,YAAY,CAAC,iCAAiC,CAAC;QAC1E,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI;QAC5D,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE;QAC7C,IAAI,EAAE;YACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACrB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACrB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;SAC1B;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const INTERACTIVE_SELECTOR: string;
2
+ export declare function isInteractiveFieldHost(element: HTMLElement): boolean;
3
+ export declare function isEditorInteractionTarget(element: Element): boolean;
4
+ export declare function isFieldActivationTarget(element: Element): boolean;
5
+ export declare function isPreviewContentInteractiveTarget(element: Element): boolean;
6
+ export declare function neutralizeInteractiveElement(element: HTMLElement): void;
7
+ export declare function syncNeutralizedInteractiveElements(root: ParentNode): void;
8
+ //# sourceMappingURL=interactive-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-content.d.ts","sourceRoot":"","sources":["../../preview/interactive-content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,QAcrB,CAAC;AAKb,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAQpE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAIjE;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAM3E;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAmBvE;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAQzE"}
@@ -0,0 +1,62 @@
1
+ export const INTERACTIVE_SELECTOR = [
2
+ 'a',
3
+ 'button',
4
+ 'input[type="submit"]',
5
+ 'input[type="button"]',
6
+ 'input[type="reset"]',
7
+ 'input[type="checkbox"]',
8
+ 'input[type="radio"]',
9
+ 'label[for]',
10
+ 'select',
11
+ 'textarea',
12
+ 'summary',
13
+ '[role="button"]',
14
+ '[role="link"]',
15
+ ].join(', ');
16
+ const EDITOR_SELECTOR = '.builder-preview-field-editor, .builder-preview-text-editor, .ProseMirror, .builder-richtext-inline-editor';
17
+ export function isInteractiveFieldHost(element) {
18
+ const tag = element.tagName.toLowerCase();
19
+ if (tag === 'a' || tag === 'button') {
20
+ return true;
21
+ }
22
+ const role = element.getAttribute('role');
23
+ return role === 'button' || role === 'link';
24
+ }
25
+ export function isEditorInteractionTarget(element) {
26
+ return Boolean(element.closest(EDITOR_SELECTOR));
27
+ }
28
+ export function isFieldActivationTarget(element) {
29
+ return Boolean(element.closest('[data-builder-field-enhanced="pending"], [data-builder-field-enhanced="true"]'));
30
+ }
31
+ export function isPreviewContentInteractiveTarget(element) {
32
+ if (!element.closest('[data-builder-preview-content]')) {
33
+ return false;
34
+ }
35
+ return Boolean(element.closest(INTERACTIVE_SELECTOR));
36
+ }
37
+ export function neutralizeInteractiveElement(element) {
38
+ if (element.dataset.builderPreviewNeutralized === 'true') {
39
+ return;
40
+ }
41
+ const tag = element.tagName.toLowerCase();
42
+ if (tag === 'a') {
43
+ for (const attribute of ['href', 'target', 'download']) {
44
+ const value = element.getAttribute(attribute);
45
+ if (value == null) {
46
+ continue;
47
+ }
48
+ element.dataset[`builderPreview${attribute[0].toUpperCase()}${attribute.slice(1)}`] = value;
49
+ element.removeAttribute(attribute);
50
+ }
51
+ }
52
+ element.dataset.builderPreviewNeutralized = 'true';
53
+ }
54
+ export function syncNeutralizedInteractiveElements(root) {
55
+ for (const element of root.querySelectorAll(INTERACTIVE_SELECTOR)) {
56
+ if (!element.closest('[data-builder-preview-content]')) {
57
+ continue;
58
+ }
59
+ neutralizeInteractiveElement(element);
60
+ }
61
+ }
62
+ //# sourceMappingURL=interactive-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-content.js","sourceRoot":"","sources":["../../preview/interactive-content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,GAAG;IACH,QAAQ;IACR,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,wBAAwB;IACxB,qBAAqB;IACrB,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,SAAS;IACT,iBAAiB;IACjB,eAAe;CACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,eAAe,GACpB,4GAA4G,CAAC;AAE9G,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACzD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACvD,OAAO,OAAO,CACb,OAAO,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAChG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAgB;IACjE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAoB;IAChE,IAAI,OAAO,CAAC,OAAO,CAAC,yBAAyB,KAAK,MAAM,EAAE,CAAC;QAC1D,OAAO;IACR,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAU,EAAE,CAAC;YACjE,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBACnB,SAAS;YACV,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,iBAAiB,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YAC5F,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,yBAAyB,GAAG,MAAM,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,IAAgB;IAClE,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAc,oBAAoB,CAAC,EAAE,CAAC;QAChF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,EAAE,CAAC;YACxD,SAAS;QACV,CAAC;QAED,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;AACF,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { type BuilderCollection } from './core.js';
2
+ export interface ResolvedPreviewBinding<Binding> {
3
+ binding: Binding;
4
+ path: string;
5
+ matchedElement: Element;
6
+ }
7
+ export interface PreviewOverlay {
8
+ collectionPath: string;
9
+ index: number;
10
+ label: string;
11
+ top: number;
12
+ left: number;
13
+ width: number;
14
+ height: number;
15
+ addTop: number;
16
+ addLeft: number;
17
+ showFileButton: boolean;
18
+ filePath: string | null;
19
+ isLast: boolean;
20
+ }
21
+ export interface PreviewCollectionOverlay {
22
+ collectionPath: string;
23
+ label: string;
24
+ top: number;
25
+ left: number;
26
+ width: number;
27
+ height: number;
28
+ addTop: number;
29
+ addLeft: number;
30
+ }
31
+ export declare function resolvePreviewBinding<Binding extends {
32
+ selector: string;
33
+ path: string;
34
+ }>({ bindings, container, target }: {
35
+ bindings: Binding[];
36
+ container: HTMLElement;
37
+ target: EventTarget | null;
38
+ }): ResolvedPreviewBinding<Binding> | null;
39
+ export declare function resolvePreviewBindingAtPoint<Binding extends {
40
+ selector: string;
41
+ path: string;
42
+ }>({ bindings, container, target, clientX, clientY }: {
43
+ bindings: Binding[];
44
+ container: HTMLElement;
45
+ target: EventTarget | null;
46
+ clientX?: number;
47
+ clientY?: number;
48
+ }): ResolvedPreviewBinding<Binding> | null;
49
+ export declare function getCollectionPreviewElements(container: HTMLElement, collection: {
50
+ previewSelector?: string;
51
+ }): Element[];
52
+ export declare function attachPreviewContainer(node: HTMLElement, params: {
53
+ block: {
54
+ id: string;
55
+ props: Record<string, unknown>;
56
+ };
57
+ definition: {
58
+ collections: BuilderCollection[];
59
+ };
60
+ onOverlaysChange: (blockId: string, overlays: PreviewOverlay[]) => void;
61
+ onCollectionOverlaysChange: (blockId: string, overlays: PreviewCollectionOverlay[]) => void;
62
+ }): {
63
+ update: (nextParams: typeof params) => void;
64
+ destroy: () => void;
65
+ };
66
+ export declare function materializeFieldPath(rawPath: string, blockRoot: HTMLElement, element: HTMLElement): string | null;
67
+ //# sourceMappingURL=preview-dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-dom.d.ts","sourceRoot":"","sources":["../preview-dom.ts"],"names":[],"mappings":"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"}