@drawnagency/primitives 0.1.56 → 0.1.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter-HH47ZPGM.js +1779 -0
- package/dist/auth/index.js +1 -0
- package/dist/{chunk-EU6NZ4GS.js → chunk-AN62WPW7.js} +22 -163
- package/dist/chunk-ESE5UBQI.js +73 -0
- package/dist/{chunk-KGYWQDBB.js → chunk-ICLXLWQ5.js} +9 -72
- package/dist/chunk-JSBRDJBE.js +30 -0
- package/dist/chunk-NSCT3AMV.js +32 -0
- package/dist/chunk-RFZNNCAS.js +160 -0
- package/dist/chunk-TG43X7JO.js +123 -0
- package/dist/{chunk-7IAWF7LE.js → chunk-V7JN2DDU.js} +2 -19
- package/dist/chunk-VKAGMEKE.js +90 -0
- package/dist/chunk-ZU2MKPTG.js +29 -0
- package/dist/closest-edge-EBOXL3YW.js +72 -0
- package/dist/components/editor/ChildBlockWrapper.d.ts +19 -0
- package/dist/components/editor/ChildBlockWrapper.d.ts.map +1 -0
- package/dist/components/editor/ColSpanControl.d.ts +9 -0
- package/dist/components/editor/ColSpanControl.d.ts.map +1 -0
- package/dist/components/editor/SectionWrapper.d.ts +1 -1
- package/dist/components/editor/SectionWrapper.d.ts.map +1 -1
- package/dist/components/editor/SettingsForm.d.ts +5 -1
- package/dist/components/editor/SettingsForm.d.ts.map +1 -1
- package/dist/components/primitives/EditableGrid.d.ts.map +1 -1
- package/dist/components/primitives/IconPicker.d.ts +7 -1
- package/dist/components/primitives/IconPicker.d.ts.map +1 -1
- package/dist/components/sections/Container/Container.d.ts +20 -0
- package/dist/components/sections/Container/Container.d.ts.map +1 -0
- package/dist/components/sections/Container/ContainerSettingsForm.d.ts +17 -0
- package/dist/components/sections/Container/ContainerSettingsForm.d.ts.map +1 -0
- package/dist/components/sections/Container/index.d.ts +11 -0
- package/dist/components/sections/Container/index.d.ts.map +1 -0
- package/dist/components/sections/IconList/IconList.d.ts +1 -0
- package/dist/components/sections/IconList/IconList.d.ts.map +1 -1
- package/dist/components/sections/IconList/IconListSettings.d.ts +3 -4
- package/dist/components/sections/IconList/IconListSettings.d.ts.map +1 -1
- package/dist/components/sections/IconList/index.d.ts +1 -0
- package/dist/components/sections/IconList/index.d.ts.map +1 -1
- package/dist/components/sections/Media/MediaBlock.d.ts +19 -0
- package/dist/components/sections/Media/MediaBlock.d.ts.map +1 -0
- package/dist/components/sections/{MediaGrid → Media}/index.d.ts +15 -25
- package/dist/components/sections/Media/index.d.ts.map +1 -0
- package/dist/components/sections/Prose/index.d.ts.map +1 -1
- package/dist/components/sections/Spacer/Spacer.d.ts +2 -0
- package/dist/components/sections/Spacer/Spacer.d.ts.map +1 -0
- package/dist/components/sections/Spacer/index.d.ts +6 -0
- package/dist/components/sections/Spacer/index.d.ts.map +1 -0
- package/dist/components/sections/all-sections.d.ts +29 -103
- package/dist/components/sections/all-sections.d.ts.map +1 -1
- package/dist/components/sections/register-schemas.d.ts.map +1 -1
- package/dist/components/sections/register-schemas.js +4094 -0
- package/dist/components/shared/Tabs.d.ts +24 -0
- package/dist/components/shared/Tabs.d.ts.map +1 -0
- package/dist/components/shell/EditorShell.d.ts.map +1 -1
- package/dist/components/shell/SiteSettingsModal.d.ts.map +1 -1
- package/dist/components/shell/blockMoveDispatch.d.ts +21 -0
- package/dist/components/shell/blockMoveDispatch.d.ts.map +1 -0
- package/dist/hooks/useBlockDnd.d.ts +48 -0
- package/dist/hooks/useBlockDnd.d.ts.map +1 -0
- package/dist/index.js +69 -56
- package/dist/lib/block-dnd.d.ts +42 -0
- package/dist/lib/block-dnd.d.ts.map +1 -0
- package/dist/lib/block-move.d.ts +31 -0
- package/dist/lib/block-move.d.ts.map +1 -0
- package/dist/lib/container-grid.d.ts +29 -0
- package/dist/lib/container-grid.d.ts.map +1 -0
- package/dist/lib/container-ops.d.ts +44 -0
- package/dist/lib/container-ops.d.ts.map +1 -0
- package/dist/lib/dexie.d.ts.map +1 -1
- package/dist/lib/dexie.js +15 -0
- package/dist/lib/env.js +1 -0
- package/dist/lib/index.js +19 -13
- package/dist/lib/loader.d.ts.map +1 -1
- package/dist/lib/migrate-sections-transform.d.ts +12 -0
- package/dist/lib/migrate-sections-transform.d.ts.map +1 -0
- package/dist/lib/migrate-sections-transform.js +7 -0
- package/dist/lib/registry.d.ts +39 -0
- package/dist/lib/registry.d.ts.map +1 -1
- package/dist/lib/registry.js +27 -0
- package/dist/media/index.js +1 -0
- package/dist/schemas/auth.js +1 -0
- package/dist/schemas/block.d.ts +20 -0
- package/dist/schemas/block.d.ts.map +1 -0
- package/dist/schemas/block.js +15 -0
- package/dist/schemas/index.js +13 -4
- package/dist/schemas/link.d.ts +7 -0
- package/dist/schemas/link.d.ts.map +1 -1
- package/dist/schemas/rich-text.d.ts +9 -0
- package/dist/schemas/rich-text.d.ts.map +1 -0
- package/dist/schemas/sections.d.ts +2 -0
- package/dist/schemas/sections.d.ts.map +1 -1
- package/dist/schemas/shared.d.ts +30 -0
- package/dist/schemas/shared.d.ts.map +1 -1
- package/dist/types/database.js +2 -0
- package/package.json +17 -1
- package/src/components/brandguide/Colors.tsx +35 -33
- package/src/components/editor/ChildBlockWrapper.tsx +108 -0
- package/src/components/editor/ColSpanControl.tsx +56 -0
- package/src/components/editor/SectionWrapper.tsx +44 -20
- package/src/components/editor/SettingsForm.tsx +100 -73
- package/src/components/primitives/EditableGrid.tsx +40 -36
- package/src/components/primitives/IconPicker.tsx +116 -26
- package/src/components/sections/Container/Container.tsx +354 -0
- package/src/components/sections/Container/ContainerSettingsForm.tsx +113 -0
- package/src/components/sections/Container/index.tsx +51 -0
- package/src/components/sections/IconList/IconList.tsx +113 -43
- package/src/components/sections/IconList/IconListSettings.tsx +2 -2
- package/src/components/sections/IconList/index.tsx +1 -1
- package/src/components/sections/Media/MediaBlock.tsx +103 -0
- package/src/components/sections/Media/index.tsx +85 -0
- package/src/components/sections/Prose/index.tsx +1 -0
- package/src/components/sections/Spacer/Spacer.tsx +6 -0
- package/src/components/sections/Spacer/index.tsx +18 -0
- package/src/components/sections/all-sections.ts +10 -8
- package/src/components/sections/register-schemas.ts +5 -2
- package/src/components/shared/Tabs.tsx +63 -0
- package/src/components/shell/EditorShell.tsx +105 -13
- package/src/components/shell/SiteSettingsModal.tsx +41 -51
- package/src/components/shell/blockMoveDispatch.ts +40 -0
- package/src/hooks/useBlockDnd.ts +144 -0
- package/src/lib/block-dnd.ts +58 -0
- package/src/lib/block-move.ts +236 -0
- package/src/lib/container-grid.ts +58 -0
- package/src/lib/container-ops.ts +159 -0
- package/src/lib/dexie.ts +22 -0
- package/src/lib/loader.ts +16 -4
- package/src/lib/migrate-sections-transform.ts +147 -0
- package/src/lib/registry.ts +48 -0
- package/src/schemas/block.ts +40 -0
- package/src/schemas/link.ts +19 -1
- package/src/schemas/rich-text.ts +11 -0
- package/src/schemas/sections.ts +5 -1
- package/src/schemas/shared.ts +6 -0
- package/dist/components/brandguide/DoDontList.d.ts +0 -16
- package/dist/components/brandguide/DoDontList.d.ts.map +0 -1
- package/dist/components/brandguide/DoDontMediaGrid.d.ts +0 -16
- package/dist/components/brandguide/DoDontMediaGrid.d.ts.map +0 -1
- package/dist/components/primitives/MediaSettingsForms.d.ts +0 -23
- package/dist/components/primitives/MediaSettingsForms.d.ts.map +0 -1
- package/dist/components/sections/DoDontList/index.d.ts +0 -21
- package/dist/components/sections/DoDontList/index.d.ts.map +0 -1
- package/dist/components/sections/DoDontMediaGrid/index.d.ts +0 -55
- package/dist/components/sections/DoDontMediaGrid/index.d.ts.map +0 -1
- package/dist/components/sections/MediaGrid/MediaGrid.d.ts +0 -17
- package/dist/components/sections/MediaGrid/MediaGrid.d.ts.map +0 -1
- package/dist/components/sections/MediaGrid/index.d.ts.map +0 -1
- package/dist/components/sections/SplitContent/SplitContent.d.ts +0 -14
- package/dist/components/sections/SplitContent/SplitContent.d.ts.map +0 -1
- package/dist/components/sections/SplitContent/index.d.ts +0 -13
- package/dist/components/sections/SplitContent/index.d.ts.map +0 -1
- package/src/components/brandguide/DoDontList.d.ts.map +0 -1
- package/src/components/brandguide/DoDontList.tsx +0 -67
- package/src/components/brandguide/DoDontMediaGrid.d.ts.map +0 -1
- package/src/components/brandguide/DoDontMediaGrid.tsx +0 -19
- package/src/components/primitives/MediaSettingsForms.tsx +0 -128
- package/src/components/sections/DoDontList/index.d.ts.map +0 -1
- package/src/components/sections/DoDontList/index.tsx +0 -45
- package/src/components/sections/DoDontMediaGrid/index.d.ts.map +0 -1
- package/src/components/sections/DoDontMediaGrid/index.tsx +0 -63
- package/src/components/sections/MediaGrid/MediaGrid.d.ts.map +0 -1
- package/src/components/sections/MediaGrid/MediaGrid.tsx +0 -239
- package/src/components/sections/MediaGrid/index.d.ts.map +0 -1
- package/src/components/sections/MediaGrid/index.tsx +0 -57
- package/src/components/sections/SplitContent/SplitContent.d.ts.map +0 -1
- package/src/components/sections/SplitContent/SplitContent.tsx +0 -84
- package/src/components/sections/SplitContent/index.d.ts.map +0 -1
- package/src/components/sections/SplitContent/index.tsx +0 -55
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface TabItem {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
content: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
interface TabsProps {
|
|
8
|
+
tabs: TabItem[];
|
|
9
|
+
/** Initial active tab when uncontrolled. Defaults to the first tab. */
|
|
10
|
+
defaultTabId?: string;
|
|
11
|
+
/** When provided, the component is controlled by the parent. */
|
|
12
|
+
activeTabId?: string;
|
|
13
|
+
onTabChange?: (id: string) => void;
|
|
14
|
+
/**
|
|
15
|
+
* When true, the tab-bar row uses -mx-6 to break out of the parent's px-6 padding
|
|
16
|
+
* (e.g. EditorModal's content wrapper) and re-pads with px-6 so buttons stay aligned.
|
|
17
|
+
* The tab panel inherits the parent's padding unchanged.
|
|
18
|
+
* Use only when the parent container has px-6; leave false for noPadding contexts.
|
|
19
|
+
*/
|
|
20
|
+
fullBleedTabBar?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function Tabs({ tabs, defaultTabId, activeTabId, onTabChange, fullBleedTabBar }: TabsProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=Tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/shared/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,SAAS,2CAqChG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAqEjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,GACZ,EAAE,KAAK,2CAg6BP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiteSettingsModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsModal.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,KAAK;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;
|
|
1
|
+
{"version":3,"file":"SiteSettingsModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsModal.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,KAAK;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,2CA2FzI"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type BlockMove, type BlockMoveState } from "../../lib/block-move";
|
|
2
|
+
import type { LoadedSection } from "../../lib/loader";
|
|
3
|
+
import type { SiteIndex } from "../../schemas/site-config";
|
|
4
|
+
import type { SectionContent } from "../../schemas/sections";
|
|
5
|
+
export interface BlockMoveDispatchDeps {
|
|
6
|
+
getState: () => BlockMoveState;
|
|
7
|
+
setSections: (updater: (prev: LoadedSection[]) => LoadedSection[]) => void;
|
|
8
|
+
setSiteIndex: (updater: (prev: SiteIndex) => SiteIndex) => void;
|
|
9
|
+
persistence: {
|
|
10
|
+
markSectionDirty: (id: string, content: SectionContent) => void;
|
|
11
|
+
markIndexDirty: () => void;
|
|
12
|
+
removeSection: (id: string) => void;
|
|
13
|
+
};
|
|
14
|
+
isRemote: (id: string) => boolean;
|
|
15
|
+
scheduleDelete: (id: string) => void;
|
|
16
|
+
markLocalChanges: () => void;
|
|
17
|
+
/** Latest content for a section id, for markSectionDirty after the move. */
|
|
18
|
+
newSectionContent: (id: string, sections: LoadedSection[]) => SectionContent;
|
|
19
|
+
}
|
|
20
|
+
export declare function makeBlockMoveDispatch(deps: BlockMoveDispatchDeps): (move: BlockMove) => void;
|
|
21
|
+
//# sourceMappingURL=blockMoveDispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockMoveDispatch.d.ts","sourceRoot":"","sources":["../../../src/components/shell/blockMoveDispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,cAAc,CAAC;IAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,IAAI,CAAC;IAC3E,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE;QACX,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;QAChE,cAAc,EAAE,MAAM,IAAI,CAAC;QAC3B,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;KACrC,CAAC;IACF,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,4EAA4E;IAC5E,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,cAAc,CAAC;CAC9E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,IACnC,MAAM,SAAS,UAiB5C"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Edge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
|
|
2
|
+
type AllowedEdges = Edge[];
|
|
3
|
+
export interface UseBlockDndArgs {
|
|
4
|
+
blockId: string;
|
|
5
|
+
containerId: string;
|
|
6
|
+
index: number;
|
|
7
|
+
isContainer: boolean;
|
|
8
|
+
/** ["left","right"] inside a row container, ["top","bottom"] at root */
|
|
9
|
+
allowedEdges: AllowedEdges;
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Wires a block as a unified drag source + drop target. Manages only this block's
|
|
14
|
+
* local hover edge + dragging flag — the actual move dispatch is centralized in the
|
|
15
|
+
* EditorContent monitor (a later task), so nested targets never double-fire. The edge
|
|
16
|
+
* indicator is shown only when this element is the innermost drop target.
|
|
17
|
+
*
|
|
18
|
+
* Callers must pass a stable `allowedEdges` array (module-level constant or memoized)
|
|
19
|
+
* to avoid re-subscribing on every render.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useBlockDnd({ blockId, containerId, index, isContainer, allowedEdges, enabled }: UseBlockDndArgs): {
|
|
22
|
+
dragRef: import("react").RefObject<HTMLDivElement | null>;
|
|
23
|
+
handleRef: import("react").RefObject<HTMLButtonElement | null>;
|
|
24
|
+
closestEdge: import("@atlaskit/pragmatic-drag-and-drop-hitbox/dist/types/types").Edge | null;
|
|
25
|
+
isDragging: boolean;
|
|
26
|
+
};
|
|
27
|
+
export interface UseBlockDropZoneArgs {
|
|
28
|
+
containerId: string;
|
|
29
|
+
index: number;
|
|
30
|
+
/** When set, the zone is a column-targeted drop (ghost/spacer): place at this 1-based column. */
|
|
31
|
+
toColumn?: number;
|
|
32
|
+
allowedEdges: AllowedEdges;
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A drop-target-ONLY zone (not draggable) — used for an empty container's first-drop
|
|
37
|
+
* area, where there are no child cells to act as targets. It advertises
|
|
38
|
+
* `{ dropContainerId, index }` and shows an edge indicator only when it is the innermost
|
|
39
|
+
* drop target. The actual move dispatch is centralized in the EditorContent monitor.
|
|
40
|
+
*
|
|
41
|
+
* Callers must pass a stable `allowedEdges` array (module-level constant or memoized).
|
|
42
|
+
*/
|
|
43
|
+
export declare function useBlockDropZone({ containerId, index, toColumn, allowedEdges, enabled }: UseBlockDropZoneArgs): {
|
|
44
|
+
dropRef: import("react").RefObject<HTMLDivElement | null>;
|
|
45
|
+
closestEdge: import("@atlaskit/pragmatic-drag-and-drop-hitbox/dist/types/types").Edge | null;
|
|
46
|
+
};
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=useBlockDnd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBlockDnd.d.ts","sourceRoot":"","sources":["../../src/hooks/useBlockDnd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uDAAuD,CAAC;AAGlF,KAAK,YAAY,GAAG,IAAI,EAAE,CAAC;AAE3B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,eAAe;;;;;EA0D/G;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,oBAAoB;;;EAyC7G"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,43 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AUDIENCE_COOKIE,
|
|
3
|
+
AUDIENCE_MAX_AGE_SECONDS,
|
|
4
|
+
LastOwnerError,
|
|
5
|
+
SESSION_COOKIE,
|
|
6
|
+
SESSION_MAX_AGE_SECONDS,
|
|
7
|
+
setSessionCookie,
|
|
8
|
+
signAudienceToken,
|
|
9
|
+
signSessionToken,
|
|
10
|
+
verifyAudienceToken,
|
|
11
|
+
verifySessionToken
|
|
12
|
+
} from "./chunk-XTK4BR27.js";
|
|
13
|
+
import {
|
|
14
|
+
EXT_TO_MIME,
|
|
15
|
+
MIME_TO_EXT,
|
|
16
|
+
ProcessingQueue,
|
|
17
|
+
displayFilename,
|
|
18
|
+
displayFilenameExt,
|
|
19
|
+
formatFileSize,
|
|
20
|
+
generateVideoPoster,
|
|
21
|
+
getMediaProvider,
|
|
22
|
+
hashFileBuffer,
|
|
23
|
+
mimeToExt,
|
|
24
|
+
resolveManifestReferences,
|
|
25
|
+
resolveMedia,
|
|
26
|
+
sanitizeMediaName,
|
|
27
|
+
setMediaProvider
|
|
28
|
+
} from "./chunk-L2JJFOXD.js";
|
|
1
29
|
import {
|
|
2
30
|
AudienceColorSchema,
|
|
3
31
|
AudienceNameSchema,
|
|
32
|
+
MediaGridOptionsSchema,
|
|
33
|
+
slugifyAudienceName
|
|
34
|
+
} from "./chunk-V7JN2DDU.js";
|
|
35
|
+
import {
|
|
4
36
|
DEFAULT_LINK,
|
|
5
37
|
LinkTargetSchema,
|
|
6
38
|
LinkValueSchema,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} from "./chunk-7IAWF7LE.js";
|
|
39
|
+
isSafeHref
|
|
40
|
+
} from "./chunk-ZU2MKPTG.js";
|
|
10
41
|
import {
|
|
11
42
|
AudienceSchema,
|
|
12
43
|
RoleSchema,
|
|
@@ -15,25 +46,33 @@ import {
|
|
|
15
46
|
} from "./chunk-LZKVV4K2.js";
|
|
16
47
|
import {
|
|
17
48
|
buildGoogleFontsUrl,
|
|
18
|
-
cn,
|
|
19
49
|
createEvent,
|
|
20
|
-
curatedIcons,
|
|
21
50
|
darkModeEvent,
|
|
22
51
|
deriveContrast,
|
|
23
52
|
editModeEvent,
|
|
24
|
-
ensureSanitizer,
|
|
25
53
|
formatTimestamp,
|
|
26
|
-
generateNavLinks,
|
|
27
|
-
getIcon,
|
|
28
54
|
gridColsClass,
|
|
29
55
|
loadSiteContent,
|
|
30
56
|
loadStaticSiteContent,
|
|
31
57
|
mergeSiteContent,
|
|
32
58
|
navChangeEvent,
|
|
33
|
-
safeRedirect
|
|
59
|
+
safeRedirect
|
|
60
|
+
} from "./chunk-AN62WPW7.js";
|
|
61
|
+
import "./chunk-TG43X7JO.js";
|
|
62
|
+
import {
|
|
63
|
+
cn,
|
|
64
|
+
curatedIcons,
|
|
65
|
+
ensureSanitizer,
|
|
66
|
+
generateNavLinks,
|
|
67
|
+
getIcon,
|
|
34
68
|
sanitizeHtml,
|
|
35
69
|
toSectionId
|
|
36
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-RFZNNCAS.js";
|
|
71
|
+
import {
|
|
72
|
+
isSameOriginRequest,
|
|
73
|
+
requireSessionSecret,
|
|
74
|
+
safeNextPath
|
|
75
|
+
} from "./chunk-S2L3BPLS.js";
|
|
37
76
|
import {
|
|
38
77
|
ColorItemSchema,
|
|
39
78
|
ColorSpaceSchema,
|
|
@@ -45,8 +84,24 @@ import {
|
|
|
45
84
|
PageStatusSchema,
|
|
46
85
|
RESERVED_SLUGS,
|
|
47
86
|
SectionMetaSchema,
|
|
87
|
+
SingleMediaReferenceSchema,
|
|
48
88
|
SiteConfigSchema,
|
|
49
89
|
TextLineSchema,
|
|
90
|
+
getSectionContentSchema,
|
|
91
|
+
getSectionSchema,
|
|
92
|
+
normalizeSiteIndex
|
|
93
|
+
} from "./chunk-ICLXLWQ5.js";
|
|
94
|
+
import {
|
|
95
|
+
ImageManifestSchema,
|
|
96
|
+
MediaConfigSchema,
|
|
97
|
+
MediaItemSchema,
|
|
98
|
+
VariantSchema
|
|
99
|
+
} from "./chunk-DKOUFIP6.js";
|
|
100
|
+
import "./chunk-NSCT3AMV.js";
|
|
101
|
+
import {
|
|
102
|
+
env
|
|
103
|
+
} from "./chunk-WKZ7OENC.js";
|
|
104
|
+
import {
|
|
50
105
|
clearRegistry,
|
|
51
106
|
createRegistry,
|
|
52
107
|
defineSection,
|
|
@@ -54,54 +109,10 @@ import {
|
|
|
54
109
|
getAllSections,
|
|
55
110
|
getSchema,
|
|
56
111
|
getSection,
|
|
57
|
-
getSectionContentSchema,
|
|
58
|
-
getSectionSchema,
|
|
59
|
-
normalizeSiteIndex,
|
|
60
112
|
registerSchema,
|
|
61
113
|
registerSection
|
|
62
|
-
} from "./chunk-
|
|
63
|
-
import
|
|
64
|
-
AUDIENCE_COOKIE,
|
|
65
|
-
AUDIENCE_MAX_AGE_SECONDS,
|
|
66
|
-
LastOwnerError,
|
|
67
|
-
SESSION_COOKIE,
|
|
68
|
-
SESSION_MAX_AGE_SECONDS,
|
|
69
|
-
setSessionCookie,
|
|
70
|
-
signAudienceToken,
|
|
71
|
-
signSessionToken,
|
|
72
|
-
verifyAudienceToken,
|
|
73
|
-
verifySessionToken
|
|
74
|
-
} from "./chunk-XTK4BR27.js";
|
|
75
|
-
import {
|
|
76
|
-
isSameOriginRequest,
|
|
77
|
-
requireSessionSecret,
|
|
78
|
-
safeNextPath
|
|
79
|
-
} from "./chunk-S2L3BPLS.js";
|
|
80
|
-
import {
|
|
81
|
-
env
|
|
82
|
-
} from "./chunk-WKZ7OENC.js";
|
|
83
|
-
import {
|
|
84
|
-
EXT_TO_MIME,
|
|
85
|
-
MIME_TO_EXT,
|
|
86
|
-
ProcessingQueue,
|
|
87
|
-
displayFilename,
|
|
88
|
-
displayFilenameExt,
|
|
89
|
-
formatFileSize,
|
|
90
|
-
generateVideoPoster,
|
|
91
|
-
getMediaProvider,
|
|
92
|
-
hashFileBuffer,
|
|
93
|
-
mimeToExt,
|
|
94
|
-
resolveManifestReferences,
|
|
95
|
-
resolveMedia,
|
|
96
|
-
sanitizeMediaName,
|
|
97
|
-
setMediaProvider
|
|
98
|
-
} from "./chunk-L2JJFOXD.js";
|
|
99
|
-
import {
|
|
100
|
-
ImageManifestSchema,
|
|
101
|
-
MediaConfigSchema,
|
|
102
|
-
MediaItemSchema,
|
|
103
|
-
VariantSchema
|
|
104
|
-
} from "./chunk-DKOUFIP6.js";
|
|
114
|
+
} from "./chunk-VKAGMEKE.js";
|
|
115
|
+
import "./chunk-JSBRDJBE.js";
|
|
105
116
|
|
|
106
117
|
// src/storage/types.ts
|
|
107
118
|
var StorageConflictError = class extends Error {
|
|
@@ -143,6 +154,7 @@ export {
|
|
|
143
154
|
SESSION_MAX_AGE_SECONDS,
|
|
144
155
|
SectionMetaSchema,
|
|
145
156
|
SessionSchema,
|
|
157
|
+
SingleMediaReferenceSchema,
|
|
146
158
|
SiteConfigSchema,
|
|
147
159
|
SiteUserSchema,
|
|
148
160
|
StorageConflictError,
|
|
@@ -176,6 +188,7 @@ export {
|
|
|
176
188
|
getSectionSchema,
|
|
177
189
|
gridColsClass,
|
|
178
190
|
hashFileBuffer,
|
|
191
|
+
isSafeHref,
|
|
179
192
|
isSameOriginRequest,
|
|
180
193
|
loadSiteContent,
|
|
181
194
|
loadStaticSiteContent,
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Edge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
|
|
2
|
+
/** The page root behaves like a single-column container (spec §3). */
|
|
3
|
+
export declare const ROOT_CONTAINER_ID = "__root__";
|
|
4
|
+
export interface BlockDragData {
|
|
5
|
+
dragType: "block";
|
|
6
|
+
blockId: string;
|
|
7
|
+
/** Container the block currently lives in: ROOT_CONTAINER_ID or a container section id. */
|
|
8
|
+
containerId: string;
|
|
9
|
+
index: number;
|
|
10
|
+
/** True if the dragged block is itself a container (used for the depth guard). */
|
|
11
|
+
isContainer: boolean;
|
|
12
|
+
[key: string | symbol]: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface BlockDropData {
|
|
15
|
+
dropContainerId: string;
|
|
16
|
+
index: number;
|
|
17
|
+
/** When set, a column-targeted drop (ghost/spacer cell): place at this 1-based grid column. */
|
|
18
|
+
toColumn?: number;
|
|
19
|
+
[key: string | symbol]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export declare function buildBlockDragData(args: {
|
|
22
|
+
blockId: string;
|
|
23
|
+
containerId: string;
|
|
24
|
+
index: number;
|
|
25
|
+
isContainer: boolean;
|
|
26
|
+
}): BlockDragData;
|
|
27
|
+
export declare function buildBlockDropData(args: {
|
|
28
|
+
dropContainerId: string;
|
|
29
|
+
index: number;
|
|
30
|
+
toColumn?: number;
|
|
31
|
+
}): BlockDropData;
|
|
32
|
+
export declare function isBlockDragData(data: Record<string | symbol, unknown>): data is BlockDragData;
|
|
33
|
+
/**
|
|
34
|
+
* May `source` drop into `dropContainerId`?
|
|
35
|
+
* - A container block may only land at the page root (v1 one-level nesting → no
|
|
36
|
+
* container-in-container; MAX_BLOCK_DEPTH=2).
|
|
37
|
+
* - Nothing may drop onto itself.
|
|
38
|
+
*/
|
|
39
|
+
export declare function canDropBlock(source: BlockDragData, dropContainerId: string): boolean;
|
|
40
|
+
/** Closest edge → insertion index (before = index, after = index + 1). */
|
|
41
|
+
export declare function resolveDropIndex(targetIndex: number, edge: Edge | null): number;
|
|
42
|
+
//# sourceMappingURL=block-dnd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-dnd.d.ts","sourceRoot":"","sources":["../../src/lib/block-dnd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uDAAuD,CAAC;AAElF,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,WAAW,EAAE,OAAO,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,aAAa,CAEhB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAErH;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,aAAa,CAE7F;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAIpF;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAG/E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { LoadedSection } from "./loader";
|
|
2
|
+
import type { SiteIndex } from "../schemas/site-config";
|
|
3
|
+
export interface BlockMoveState {
|
|
4
|
+
sections: LoadedSection[];
|
|
5
|
+
index: SiteIndex;
|
|
6
|
+
rootPageId: string;
|
|
7
|
+
}
|
|
8
|
+
export interface BlockMove {
|
|
9
|
+
blockId: string;
|
|
10
|
+
fromContainerId: string;
|
|
11
|
+
fromIndex: number;
|
|
12
|
+
toContainerId: string;
|
|
13
|
+
/** Raw insertion index in the ORIGINAL (pre-removal) array, 0..len — as resolveDropIndex returns. applyBlockMove shifts it for same-container moves. */
|
|
14
|
+
toIndex: number;
|
|
15
|
+
/** When set, place at this 1-based grid column (ghost/spacer drop) instead of toIndex. */
|
|
16
|
+
toColumn?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface BlockMoveEffects {
|
|
19
|
+
markDirtySectionIds: string[];
|
|
20
|
+
indexDirty: boolean;
|
|
21
|
+
deleteSectionIds: string[];
|
|
22
|
+
createSectionIds: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface BlockMoveResult {
|
|
25
|
+
sections: LoadedSection[];
|
|
26
|
+
index: SiteIndex;
|
|
27
|
+
effects: BlockMoveEffects;
|
|
28
|
+
changed: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function applyBlockMove(state: BlockMoveState, move: BlockMove, newId?: () => string): BlockMoveResult;
|
|
31
|
+
//# sourceMappingURL=block-move.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-move.d.ts","sourceRoot":"","sources":["../../src/lib/block-move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,wBAAwB,CAAC;AAKrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,wJAAwJ;IACxJ,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AA2BD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,SAAS,EACf,KAAK,GAAE,MAAM,MAAqB,GACjC,eAAe,CAsFjB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Max columns a container exposes in v1 (covers halves/thirds/sixths via spans). */
|
|
2
|
+
export declare const MAX_CONTAINER_COLUMNS = 6;
|
|
3
|
+
/**
|
|
4
|
+
* Column count -> grid-cols classes that collapse by the CONTAINER's own width
|
|
5
|
+
* (Tailwind 4 container-query `@` variants), not the viewport. Full static
|
|
6
|
+
* strings so Tailwind's source scan generates them (no interpolation/purge gap).
|
|
7
|
+
*/
|
|
8
|
+
export declare const containerGridClass: Record<number, string>;
|
|
9
|
+
/**
|
|
10
|
+
* Per-child colSpan -> col-span classes, keyed [columns][span]. A child's span
|
|
11
|
+
* must clamp to the columns AVAILABLE at each container-query breakpoint, and the
|
|
12
|
+
* collapse curve differs per column count — so the class depends on BOTH the
|
|
13
|
+
* parent's column count and the child's span, not span alone. At every breakpoint
|
|
14
|
+
* the emitted span = min(span, columns-at-that-breakpoint), guaranteeing a span
|
|
15
|
+
* never exceeds the tracks that exist (no phantom column). Span 1 needs no class.
|
|
16
|
+
* Full static strings so Tailwind's source scan generates them.
|
|
17
|
+
*/
|
|
18
|
+
export declare const colSpanClass: Record<number, Record<number, string>>;
|
|
19
|
+
/** Gap token -> Tailwind gap class. Retained as a utility; the container now uses a
|
|
20
|
+
* fixed gap (the Gap setting was removed), but the map stays for general use. */
|
|
21
|
+
export declare const gapClass: Record<string, string>;
|
|
22
|
+
/**
|
|
23
|
+
* Per-column-count container-query classes that HIDE a spacer cell once the container
|
|
24
|
+
* collapses to a single column (mobile). Mirrors `containerGridClass`'s collapse curve:
|
|
25
|
+
* hidden at base width, shown at the first breakpoint where the grid has ≥2 columns.
|
|
26
|
+
* Static strings so Tailwind's source scan generates them.
|
|
27
|
+
*/
|
|
28
|
+
export declare const spacerHiddenClass: Record<number, string>;
|
|
29
|
+
//# sourceMappingURL=container-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-grid.d.ts","sourceRoot":"","sources":["../../src/lib/container-grid.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOrD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO/D,CAAC;AAEF;kFACkF;AAClF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOpD,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { Section } from "../schemas/sections";
|
|
3
|
+
/** A container is any block whose `content.children` is an array. */
|
|
4
|
+
export declare function getContainerChildren(block: Section): Section[];
|
|
5
|
+
export declare function reorderChild(container: Section, from: number, to: number): Section;
|
|
6
|
+
/**
|
|
7
|
+
* Block types insertable as a container CHILD — excludes `container` itself
|
|
8
|
+
* (v1 enforces one level of container nesting). Shared so the depth guard has a
|
|
9
|
+
* single, testable source of truth (the container toolbar's "+" picker uses it).
|
|
10
|
+
*/
|
|
11
|
+
export declare function childInsertableTypes(): {
|
|
12
|
+
type: string;
|
|
13
|
+
label: string;
|
|
14
|
+
icon: ReactNode;
|
|
15
|
+
}[];
|
|
16
|
+
export declare function insertChildAt(container: Section, child: Section, index: number): Section;
|
|
17
|
+
export declare function removeChildAt(container: Section, index: number): {
|
|
18
|
+
container: Section;
|
|
19
|
+
removed: Section | null;
|
|
20
|
+
};
|
|
21
|
+
export declare function duplicateChildAt(container: Section, index: number, newId: () => string): Section;
|
|
22
|
+
/** Set a child's colSpan, clamped to the container's columns. Span 1 removes `layout`. */
|
|
23
|
+
export declare function setChildColSpan(container: Section, index: number, span: number): Section;
|
|
24
|
+
/** A spacer is the empty gap-filler block. */
|
|
25
|
+
export declare function isSpacer(child: Section): boolean;
|
|
26
|
+
/** Mint a fresh empty spacer block. */
|
|
27
|
+
export declare function makeSpacer(newId: () => string): Section;
|
|
28
|
+
/** Grid tracks occupied by a container's children (real child = clamped colSpan, spacer = 1). */
|
|
29
|
+
export declare function occupiedColumns(children: Section[], columns: number): number;
|
|
30
|
+
/** Remove spacer children after the last non-spacer child (a trailing gap is meaningless). */
|
|
31
|
+
export declare function trimTrailingSpacers(container: Section): Section;
|
|
32
|
+
/**
|
|
33
|
+
* Place `block` at 1-based grid column `K` of `container`. If a spacer already holds column
|
|
34
|
+
* `K`, replace it; otherwise pad intervening empty columns with spacers and append the block.
|
|
35
|
+
* Trailing spacers are trimmed. `columns` clamps colSpan accounting; `newId` mints spacer ids.
|
|
36
|
+
*
|
|
37
|
+
* Precondition: `K` addresses an EMPTY column — a trailing empty column or one held by a
|
|
38
|
+
* spacer. The editor's drop targets (ghost/spacer cells) only ever address empty columns, so
|
|
39
|
+
* callers never target a column consumed by a real block. Defensive: out-of-range `K`
|
|
40
|
+
* (`K < 1 || K > columns`) or a spacer `block` returns the container unchanged. A `block` with
|
|
41
|
+
* `colSpan > 1` dropped onto a single spacer keeps its span; CSS grid reflows it (v1).
|
|
42
|
+
*/
|
|
43
|
+
export declare function placeBlockAtColumn(container: Section, block: Section, K: number, columns: number, newId: () => string): Section;
|
|
44
|
+
//# sourceMappingURL=container-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-ops.d.ts","sourceRoot":"","sources":["../../src/lib/container-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAWnD,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAG9D;AAWD,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAOlF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,EAAE,CAIzF;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAMxF;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,GACZ;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAMjD;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,MAAM,GAClB,OAAO,CAOT;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAaxF;AAOD,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhD;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,OAAO,CAEvD;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAM/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,MAAM,GAClB,OAAO,CAiBT"}
|
package/dist/lib/dexie.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAe,UAAU,EAAQ,MAAM,wBAAwB,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/dexie.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import "../chunk-JSBRDJBE.js";
|
|
2
|
+
|
|
1
3
|
// src/lib/dexie.ts
|
|
2
4
|
import Dexie from "dexie";
|
|
3
5
|
var EditorDatabase = class extends Dexie {
|
|
@@ -74,6 +76,19 @@ var EditorDatabase = class extends Dexie {
|
|
|
74
76
|
await tx.table("siteIndex").clear();
|
|
75
77
|
await tx.table("contentCache").clear();
|
|
76
78
|
});
|
|
79
|
+
this.version(8).stores({
|
|
80
|
+
sections: "sectionId",
|
|
81
|
+
siteIndex: "key",
|
|
82
|
+
meta: "key",
|
|
83
|
+
siteConfig: "key",
|
|
84
|
+
contentCache: "key",
|
|
85
|
+
mediaManifest: "key",
|
|
86
|
+
pendingMedia: "id",
|
|
87
|
+
pendingMediaDeletions: "id"
|
|
88
|
+
}).upgrade(async (tx) => {
|
|
89
|
+
await tx.table("siteIndex").clear();
|
|
90
|
+
await tx.table("contentCache").clear();
|
|
91
|
+
});
|
|
77
92
|
}
|
|
78
93
|
};
|
|
79
94
|
var db = null;
|
package/dist/lib/env.js
CHANGED
package/dist/lib/index.js
CHANGED
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildGoogleFontsUrl,
|
|
3
|
-
cn,
|
|
4
3
|
createEvent,
|
|
5
|
-
curatedIcons,
|
|
6
4
|
darkModeEvent,
|
|
7
5
|
deriveContrast,
|
|
8
6
|
editModeEvent,
|
|
9
|
-
ensureSanitizer,
|
|
10
7
|
formatTimestamp,
|
|
11
|
-
generateNavLinks,
|
|
12
|
-
getIcon,
|
|
13
8
|
gridColsClass,
|
|
14
9
|
loadSiteContent,
|
|
15
10
|
loadStaticSiteContent,
|
|
16
11
|
mergeSiteContent,
|
|
17
12
|
navChangeEvent,
|
|
18
|
-
safeRedirect
|
|
13
|
+
safeRedirect
|
|
14
|
+
} from "../chunk-AN62WPW7.js";
|
|
15
|
+
import "../chunk-TG43X7JO.js";
|
|
16
|
+
import {
|
|
17
|
+
cn,
|
|
18
|
+
curatedIcons,
|
|
19
|
+
ensureSanitizer,
|
|
20
|
+
generateNavLinks,
|
|
21
|
+
getIcon,
|
|
19
22
|
sanitizeHtml,
|
|
20
23
|
toSectionId
|
|
21
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-RFZNNCAS.js";
|
|
25
|
+
import "../chunk-S2L3BPLS.js";
|
|
26
|
+
import "../chunk-ICLXLWQ5.js";
|
|
27
|
+
import "../chunk-DKOUFIP6.js";
|
|
28
|
+
import "../chunk-NSCT3AMV.js";
|
|
29
|
+
import {
|
|
30
|
+
env
|
|
31
|
+
} from "../chunk-WKZ7OENC.js";
|
|
22
32
|
import {
|
|
23
33
|
clearRegistry,
|
|
24
34
|
createRegistry,
|
|
@@ -29,12 +39,8 @@ import {
|
|
|
29
39
|
getSection,
|
|
30
40
|
registerSchema,
|
|
31
41
|
registerSection
|
|
32
|
-
} from "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import {
|
|
35
|
-
env
|
|
36
|
-
} from "../chunk-WKZ7OENC.js";
|
|
37
|
-
import "../chunk-DKOUFIP6.js";
|
|
42
|
+
} from "../chunk-VKAGMEKE.js";
|
|
43
|
+
import "../chunk-JSBRDJBE.js";
|
|
38
44
|
export {
|
|
39
45
|
buildGoogleFontsUrl,
|
|
40
46
|
clearRegistry,
|
package/dist/lib/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/lib/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/lib/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKvF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,WAAW,CAuCb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,WAAW,CAQb;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAe9E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, browser-safe transform that rewrites the three legacy "layout-as-content"
|
|
3
|
+
* section types into the recursive `container` block. Used by BOTH the loader
|
|
4
|
+
* fallback (mergeSiteContent) and the codemod (scripts/migrate-sections.ts), so
|
|
5
|
+
* it must stay free of Node APIs and registry/schema imports.
|
|
6
|
+
*
|
|
7
|
+
* Structural only — it never sanitizes. Output is emitted in schema-normal form
|
|
8
|
+
* (every defaulted key explicit, only known ref fields carried) so that
|
|
9
|
+
* `transform(raw)` deep-equals `safeParse(transform(raw))` (convergence).
|
|
10
|
+
*/
|
|
11
|
+
export declare function upgradeLegacySection(raw: unknown): unknown;
|
|
12
|
+
//# sourceMappingURL=migrate-sections-transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-sections-transform.d.ts","sourceRoot":"","sources":["../../src/lib/migrate-sections-transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAO1D"}
|