@se-studio/core-ui 1.19.9 → 1.20.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 (88) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cmsRegistration.d.ts +16 -0
  3. package/dist/cmsRegistration.d.ts.map +1 -1
  4. package/dist/cmsRegistration.js +10 -0
  5. package/dist/cmsRegistration.js.map +1 -1
  6. package/dist/elements/TrackedLink.d.ts.map +1 -1
  7. package/dist/elements/TrackedLink.js +7 -15
  8. package/dist/elements/TrackedLink.js.map +1 -1
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/route-handlers/createCmsTxtHandler.d.ts.map +1 -1
  14. package/dist/route-handlers/createCmsTxtHandler.js +4 -0
  15. package/dist/route-handlers/createCmsTxtHandler.js.map +1 -1
  16. package/dist/rtf/rtf.d.ts.map +1 -1
  17. package/dist/rtf/rtf.js +5 -2
  18. package/dist/rtf/rtf.js.map +1 -1
  19. package/dist/showcase/components/AllViewPanel.d.ts.map +1 -1
  20. package/dist/showcase/components/AllViewPanel.js +5 -2
  21. package/dist/showcase/components/AllViewPanel.js.map +1 -1
  22. package/dist/showcase/components/Controls.d.ts.map +1 -1
  23. package/dist/showcase/components/Controls.js +2 -5
  24. package/dist/showcase/components/Controls.js.map +1 -1
  25. package/dist/showcase/components/ControlsWrapper.d.ts +3 -1
  26. package/dist/showcase/components/ControlsWrapper.d.ts.map +1 -1
  27. package/dist/showcase/components/ControlsWrapper.js +2 -2
  28. package/dist/showcase/components/ControlsWrapper.js.map +1 -1
  29. package/dist/showcase/components/IframeHeightReporter.d.ts +6 -3
  30. package/dist/showcase/components/IframeHeightReporter.d.ts.map +1 -1
  31. package/dist/showcase/components/IframeHeightReporter.js +32 -5
  32. package/dist/showcase/components/IframeHeightReporter.js.map +1 -1
  33. package/dist/showcase/components/PreviewPanel.d.ts +6 -1
  34. package/dist/showcase/components/PreviewPanel.d.ts.map +1 -1
  35. package/dist/showcase/components/PreviewPanel.js +5 -3
  36. package/dist/showcase/components/PreviewPanel.js.map +1 -1
  37. package/dist/showcase/components/ScaledIframe.d.ts +12 -1
  38. package/dist/showcase/components/ScaledIframe.d.ts.map +1 -1
  39. package/dist/showcase/components/ScaledIframe.js +18 -11
  40. package/dist/showcase/components/ScaledIframe.js.map +1 -1
  41. package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -1
  42. package/dist/showcase/components/ShowcaseAllRenderPage.js +3 -2
  43. package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -1
  44. package/dist/showcase/components/ShowcasePage.d.ts +6 -1
  45. package/dist/showcase/components/ShowcasePage.d.ts.map +1 -1
  46. package/dist/showcase/components/ShowcasePage.js +8 -2
  47. package/dist/showcase/components/ShowcasePage.js.map +1 -1
  48. package/dist/showcase/components/ShowcaseRenderPage.d.ts.map +1 -1
  49. package/dist/showcase/components/ShowcaseRenderPage.js +9 -8
  50. package/dist/showcase/components/ShowcaseRenderPage.js.map +1 -1
  51. package/dist/showcase/components/ShowcaseViewportGuard.d.ts +14 -0
  52. package/dist/showcase/components/ShowcaseViewportGuard.d.ts.map +1 -0
  53. package/dist/showcase/components/ShowcaseViewportGuard.js +77 -0
  54. package/dist/showcase/components/ShowcaseViewportGuard.js.map +1 -0
  55. package/dist/showcase/controlFieldSupport.d.ts +12 -0
  56. package/dist/showcase/controlFieldSupport.d.ts.map +1 -0
  57. package/dist/showcase/controlFieldSupport.js +35 -0
  58. package/dist/showcase/controlFieldSupport.js.map +1 -0
  59. package/dist/showcase/index.d.ts +7 -1
  60. package/dist/showcase/index.d.ts.map +1 -1
  61. package/dist/showcase/index.js +7 -1
  62. package/dist/showcase/index.js.map +1 -1
  63. package/dist/showcase/isCmsShowcase.d.ts +10 -0
  64. package/dist/showcase/isCmsShowcase.d.ts.map +1 -0
  65. package/dist/showcase/isCmsShowcase.js +12 -0
  66. package/dist/showcase/isCmsShowcase.js.map +1 -0
  67. package/dist/showcase/mockFactory.d.ts +3 -0
  68. package/dist/showcase/mockFactory.d.ts.map +1 -1
  69. package/dist/showcase/mockFactory.js +133 -27
  70. package/dist/showcase/mockFactory.js.map +1 -1
  71. package/dist/showcase/showcaseLayout.d.ts +17 -0
  72. package/dist/showcase/showcaseLayout.d.ts.map +1 -0
  73. package/dist/showcase/showcaseLayout.js +11 -0
  74. package/dist/showcase/showcaseLayout.js.map +1 -0
  75. package/dist/showcase/showcaseRelatedContent.d.ts +30 -0
  76. package/dist/showcase/showcaseRelatedContent.d.ts.map +1 -0
  77. package/dist/showcase/showcaseRelatedContent.js +106 -0
  78. package/dist/showcase/showcaseRelatedContent.js.map +1 -0
  79. package/dist/utils/reactNodeText.d.ts +7 -0
  80. package/dist/utils/reactNodeText.d.ts.map +1 -0
  81. package/dist/utils/reactNodeText.js +43 -0
  82. package/dist/utils/reactNodeText.js.map +1 -0
  83. package/dist/utils/richTextNodeText.d.ts +13 -0
  84. package/dist/utils/richTextNodeText.d.ts.map +1 -0
  85. package/dist/utils/richTextNodeText.js +29 -0
  86. package/dist/utils/richTextNodeText.js.map +1 -0
  87. package/package.json +1 -1
  88. package/src/showcase/README.md +130 -0
@@ -2,22 +2,49 @@
2
2
  import { useEffect } from 'react';
3
3
  /**
4
4
  * Drop this inside any page that is rendered inside an iframe.
5
- * It measures the true document height via ResizeObserver and posts it to the
6
- * parent frame via postMessage so the parent can size the iframe to fit content
7
- * instead of using a fixed/oversized height.
5
+ * It measures content height and posts it to the parent frame so the parent
6
+ * can size the iframe to fit content instead of using a fixed/oversized height.
7
+ *
8
+ * Prefers `#showcase-measure-root` when present so short content can shrink
9
+ * below the iframe chrome height (documentElement.scrollHeight often mirrors
10
+ * the iframe viewport and never reports a smaller value).
8
11
  *
9
12
  * Same-origin only — no CORS issues for the CMS showcase use case.
10
13
  */
11
14
  export function IframeHeightReporter() {
12
15
  useEffect(() => {
13
16
  const report = () => {
14
- const height = document.documentElement.scrollHeight;
17
+ const measureRoot = document.getElementById('showcase-measure-root');
18
+ // Prefer the content wrapper when present — documentElement.scrollHeight
19
+ // often equals the iframe chrome and blocks shrinking short components.
20
+ let height;
21
+ if (measureRoot) {
22
+ height = Math.max(measureRoot.scrollHeight, measureRoot.offsetHeight, document.body?.scrollHeight ?? 0, document.body?.offsetHeight ?? 0);
23
+ }
24
+ else {
25
+ height = Math.max(document.body?.scrollHeight ?? 0, document.body?.offsetHeight ?? 0, document.documentElement.scrollHeight);
26
+ }
27
+ height = Math.max(120, Math.ceil(height + 8));
15
28
  window.parent.postMessage({ type: 'showcase-iframe-height', height }, '*');
16
29
  };
17
30
  report();
31
+ // Second pass after layout/images settle.
32
+ const t1 = window.setTimeout(report, 100);
33
+ const t2 = window.setTimeout(report, 400);
18
34
  const observer = new ResizeObserver(report);
35
+ const measureRoot = document.getElementById('showcase-measure-root');
36
+ if (measureRoot) {
37
+ observer.observe(measureRoot);
38
+ }
19
39
  observer.observe(document.documentElement);
20
- return () => observer.disconnect();
40
+ if (document.body) {
41
+ observer.observe(document.body);
42
+ }
43
+ return () => {
44
+ window.clearTimeout(t1);
45
+ window.clearTimeout(t2);
46
+ observer.disconnect();
47
+ };
21
48
  }, []);
22
49
  return null;
23
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IframeHeightReporter.js","sourceRoot":"","sources":["../../../src/showcase/components/IframeHeightReporter.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEF,MAAM,EAAE,CAAC;QAET,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"IframeHeightReporter.js","sourceRoot":"","sources":["../../../src/showcase/components/IframeHeightReporter.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;YAErE,yEAAyE;YACzE,wEAAwE;YACxE,IAAI,MAAc,CAAC;YACnB,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,GAAG,IAAI,CAAC,GAAG,CACf,WAAW,CAAC,YAAY,EACxB,WAAW,CAAC,YAAY,EACxB,QAAQ,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,EAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,CACjC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,IAAI,CAAC,GAAG,CACf,QAAQ,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,EAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,EAChC,QAAQ,CAAC,eAAe,CAAC,YAAY,CACtC,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEF,MAAM,EAAE,CAAC;QACT,0CAA0C;QAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACrE,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QACD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACxB,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACxB,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type ShowcaseLayoutMode } from '../showcaseLayout';
1
2
  import type { ShowcaseControlState } from '../types';
2
3
  interface PreviewPanelProps {
3
4
  type: string;
@@ -7,7 +8,11 @@ interface PreviewPanelProps {
7
8
  basePath: string;
8
9
  /** When true, add clean=true to URL and encode all controls (no diff). */
9
10
  clean?: boolean;
11
+ componentShowcaseLayoutMap?: Record<string, ShowcaseLayoutMode>;
12
+ collectionShowcaseLayoutMap?: Record<string, ShowcaseLayoutMode>;
13
+ /** Showcase shell `?debug=true` — shows fixed-frame labels etc. */
14
+ debug?: boolean;
10
15
  }
11
- export declare const PreviewPanel: ({ type, mode, controls, mockDefaults, basePath, clean, }: PreviewPanelProps) => import("react").JSX.Element;
16
+ export declare const PreviewPanel: ({ type, mode, controls, mockDefaults, basePath, clean, componentShowcaseLayoutMap, collectionShowcaseLayoutMap, debug, }: PreviewPanelProps) => import("react").JSX.Element;
12
17
  export {};
13
18
  //# sourceMappingURL=PreviewPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewPanel.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,YAAY,EAAE,oBAAoB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,eAAO,MAAM,YAAY,GAAI,0DAO1B,iBAAiB,gCAiEnB,CAAC"}
1
+ {"version":3,"file":"PreviewPanel.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,YAAY,EAAE,oBAAoB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0BAA0B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChE,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACjE,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,eAAO,MAAM,YAAY,GAAI,0HAU1B,iBAAiB,gCA4EnB,CAAC"}
@@ -1,10 +1,11 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useState } from 'react';
4
+ import { resolveShowcaseLayout, SHOWCASE_LAYOUT_FIXED_HEIGHT, } from '../showcaseLayout';
4
5
  import { ScaledIframe } from './ScaledIframe';
5
6
  const VIEWPORT_MOBILE = { width: 375 };
6
7
  const VIEWPORT_DESKTOP = { width: 1440 };
7
- export const PreviewPanel = ({ type, mode, controls, mockDefaults, basePath, clean, }) => {
8
+ export const PreviewPanel = ({ type, mode, controls, mockDefaults, basePath, clean, componentShowcaseLayoutMap = {}, collectionShowcaseLayoutMap = {}, debug = false, }) => {
8
9
  const containerRef = useRef(null);
9
10
  const [containerWidth, setContainerWidth] = useState(0);
10
11
  useEffect(() => {
@@ -20,6 +21,8 @@ export const PreviewPanel = ({ type, mode, controls, mockDefaults, basePath, cle
20
21
  observer.observe(containerRef.current);
21
22
  return () => observer.disconnect();
22
23
  }, []);
24
+ const layout = resolveShowcaseLayout(type, mode, componentShowcaseLayoutMap, collectionShowcaseLayoutMap);
25
+ const fixedHeights = layout === 'document' ? null : SHOWCASE_LAYOUT_FIXED_HEIGHT[layout];
23
26
  const buildUrl = () => {
24
27
  const params = new URLSearchParams();
25
28
  params.set('type', type);
@@ -42,9 +45,8 @@ export const PreviewPanel = ({ type, mode, controls, mockDefaults, basePath, cle
42
45
  return `${renderPath}?${params.toString()}`;
43
46
  };
44
47
  const iframeUrl = buildUrl();
45
- // Desktop gets roughly 2/3 of the space, Mobile gets 1/3
46
48
  const mobileContainerWidth = containerWidth * 0.35;
47
49
  const desktopContainerWidth = containerWidth * 0.65;
48
- return (_jsxs("div", { ref: containerRef, className: "flex-1 bg-[#f3f4f6] p-8 flex gap-8 justify-center items-start overflow-auto", children: [_jsx(ScaledIframe, { src: iframeUrl, viewportWidth: VIEWPORT_MOBILE.width, label: "Mobile", containerWidth: mobileContainerWidth }), _jsx(ScaledIframe, { src: iframeUrl, viewportWidth: VIEWPORT_DESKTOP.width, label: "Desktop", containerWidth: desktopContainerWidth })] }));
50
+ return (_jsxs("div", { ref: containerRef, className: "flex-1 bg-[#f3f4f6] p-8 flex gap-8 justify-center items-start overflow-auto", children: [_jsx(ScaledIframe, { src: iframeUrl, viewportWidth: VIEWPORT_MOBILE.width, label: "Mobile", containerWidth: mobileContainerWidth, fixedHeight: fixedHeights?.mobile, debug: debug }), _jsx(ScaledIframe, { src: iframeUrl, viewportWidth: VIEWPORT_DESKTOP.width, label: "Desktop", containerWidth: desktopContainerWidth, fixedHeight: fixedHeights?.desktop, debug: debug })] }));
49
51
  };
50
52
  //# sourceMappingURL=PreviewPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,22 @@
1
+ /** Hard cap so a single auto-height preview never becomes a multi-viewport tower. */
2
+ export declare const SHOWCASE_SINGLE_IFRAME_MAX_HEIGHT = 900;
1
3
  interface ScaledIframeProps {
2
4
  src: string;
3
5
  viewportWidth: number;
4
6
  /** Initial height used before the iframe reports its content height. */
5
7
  initialHeight?: number;
8
+ /** Maximum accepted content height (px). Default SHOWCASE_SINGLE_IFRAME_MAX_HEIGHT. */
9
+ maxHeight?: number;
10
+ /**
11
+ * When set, use a fixed frame height and ignore content height reports
12
+ * (content scrolls inside the iframe). For `showcaseLayout: viewport|compact`.
13
+ */
14
+ fixedHeight?: number;
6
15
  label: string;
7
16
  containerWidth: number;
17
+ /** When true (e.g. `?debug=true` on showcase), show fixed-frame chrome label. */
18
+ debug?: boolean;
8
19
  }
9
- export declare const ScaledIframe: ({ src, viewportWidth, initialHeight, label, containerWidth, }: ScaledIframeProps) => import("react").JSX.Element;
20
+ export declare const ScaledIframe: ({ src, viewportWidth, initialHeight, maxHeight, fixedHeight, label, containerWidth, debug, }: ScaledIframeProps) => import("react").JSX.Element;
10
21
  export {};
11
22
  //# sourceMappingURL=ScaledIframe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScaledIframe.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,GAAI,+DAM1B,iBAAiB,gCAuDnB,CAAC"}
1
+ {"version":3,"file":"ScaledIframe.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAIA,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,GAAI,8FAS1B,iBAAiB,gCA8DnB,CAAC"}
@@ -1,31 +1,38 @@
1
1
  'use client';
2
2
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useState } from 'react';
4
- export const ScaledIframe = ({ src, viewportWidth, initialHeight = 600, label, containerWidth, }) => {
4
+ /** Hard cap so a single auto-height preview never becomes a multi-viewport tower. */
5
+ export const SHOWCASE_SINGLE_IFRAME_MAX_HEIGHT = 900;
6
+ export const ScaledIframe = ({ src, viewportWidth, initialHeight = 400, maxHeight = SHOWCASE_SINGLE_IFRAME_MAX_HEIGHT, fixedHeight, label, containerWidth, debug = false, }) => {
5
7
  const iframeRef = useRef(null);
6
- const [iframeHeight, setIframeHeight] = useState(initialHeight);
7
- // Listen for height reports from this specific iframe's content.
8
- // Filtering by event.source ensures two side-by-side iframes don't
9
- // interfere with each other.
8
+ const [iframeHeight, setIframeHeight] = useState(fixedHeight ?? initialHeight);
10
9
  useEffect(() => {
10
+ if (fixedHeight != null) {
11
+ setIframeHeight(fixedHeight);
12
+ }
13
+ }, [fixedHeight]);
14
+ // Listen for height reports unless fixed frame mode.
15
+ useEffect(() => {
16
+ if (fixedHeight != null) {
17
+ return;
18
+ }
11
19
  const handler = (event) => {
12
20
  if (event.data?.type === 'showcase-iframe-height' &&
13
21
  iframeRef.current &&
14
22
  event.source === iframeRef.current.contentWindow) {
15
- setIframeHeight(event.data.height);
23
+ const next = Math.min(Math.max(120, event.data.height), maxHeight);
24
+ setIframeHeight(next);
16
25
  }
17
26
  };
18
27
  window.addEventListener('message', handler);
19
28
  return () => window.removeEventListener('message', handler);
20
- }, []);
21
- // Calculate scale to fit container with padding
22
- const padding = 32; // 16px each side
29
+ }, [maxHeight, fixedHeight]);
30
+ const padding = 32;
23
31
  const availableWidth = Math.max(containerWidth - padding, 100);
24
32
  const scale = Math.min(availableWidth / viewportWidth, 1.0);
25
33
  const scaledWidth = viewportWidth * scale;
26
- // The outer box must reflect the visual (scaled) height so layout doesn't collapse.
27
34
  const scaledHeight = iframeHeight * scale;
28
- return (_jsxs("div", { className: "flex flex-col items-center shrink-0", children: [_jsxs("div", { className: "text-[11px] font-[600] text-[#6b7280] uppercase tracking-wider mb-3", children: [label, " (", viewportWidth, "px)"] }), _jsx("div", { className: "bg-[#ffffff] shadow-lg rounded-lg overflow-hidden border border-[#e5e7eb]", style: { width: scaledWidth, height: scaledHeight }, children: _jsx("iframe", { ref: iframeRef, src: src, title: `${label} preview`, className: "origin-top-left border-none", style: {
35
+ return (_jsxs("div", { className: "flex flex-col items-center shrink-0", children: [_jsxs("div", { className: "text-[11px] font-[600] text-[#6b7280] uppercase tracking-wider mb-3", children: [label, " (", viewportWidth, "px)", debug && fixedHeight != null ? ' · fixed frame' : ''] }), _jsx("div", { className: "bg-[#ffffff] shadow-lg rounded-lg overflow-hidden border border-[#e5e7eb]", style: { width: scaledWidth, height: scaledHeight }, children: _jsx("iframe", { ref: iframeRef, src: src, title: `${label} preview`, className: "origin-top-left border-none", style: {
29
36
  width: viewportWidth,
30
37
  height: iframeHeight,
31
38
  transform: `scale(${scale})`,
@@ -1 +1 @@
1
- {"version":3,"file":"ScaledIframe.js","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWpD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,GAAG,EACH,aAAa,EACb,aAAa,GAAG,GAAG,EACnB,KAAK,EACL,cAAc,GACI,EAAE,EAAE;IACtB,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEhE,iEAAiE;IACjE,mEAAmE;IACnE,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,IACE,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,wBAAwB;gBAC7C,SAAS,CAAC,OAAO;gBACjB,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,OAAO,CAAC,aAAa,EAChD,CAAC;gBACD,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,gDAAgD;IAChD,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,iBAAiB;IACrC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,aAAa,GAAG,KAAK,CAAC;IAC1C,oFAAoF;IACpF,MAAM,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC;IAE1C,OAAO,CACL,eAAK,SAAS,EAAC,qCAAqC,aAClD,eAAK,SAAS,EAAC,qEAAqE,aACjF,KAAK,QAAI,aAAa,WACnB,EAEN,cACE,SAAS,EAAC,2EAA2E,EACrF,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAEnD,iBACE,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,KAAK,UAAU,EACzB,SAAS,EAAC,6BAA6B,EACvC,KAAK,EAAE;wBACL,KAAK,EAAE,aAAa;wBACpB,MAAM,EAAE,YAAY;wBACpB,SAAS,EAAE,SAAS,KAAK,GAAG;qBAC7B,GACD,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ScaledIframe.js","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,qFAAqF;AACrF,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAoBrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,GAAG,EACH,aAAa,EACb,aAAa,GAAG,GAAG,EACnB,SAAS,GAAG,iCAAiC,EAC7C,WAAW,EACX,KAAK,EACL,cAAc,EACd,KAAK,GAAG,KAAK,GACK,EAAE,EAAE;IACtB,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;IAE/E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,eAAe,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,qDAAqD;IACrD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,IACE,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,wBAAwB;gBAC7C,SAAS,CAAC,OAAO;gBACjB,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,OAAO,CAAC,aAAa,EAChD,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,MAAgB,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC7E,eAAe,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7B,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,aAAa,GAAG,KAAK,CAAC;IAC1C,MAAM,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC;IAE1C,OAAO,CACL,eAAK,SAAS,EAAC,qCAAqC,aAClD,eAAK,SAAS,EAAC,qEAAqE,aACjF,KAAK,QAAI,aAAa,SACtB,KAAK,IAAI,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IACjD,EAEN,cACE,SAAS,EAAC,2EAA2E,EACrF,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAEnD,iBACE,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,KAAK,UAAU,EACzB,SAAS,EAAC,6BAA6B,EACvC,KAAK,EAAE;wBACL,KAAK,EAAE,aAAa;wBACpB,MAAM,EAAE,YAAY;wBACpB,SAAS,EAAE,SAAS,KAAK,GAAG;qBAC7B,GACD,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ShowcaseAllRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIrD,UAAU,0BAA0B;IAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAQD,eAAO,MAAM,qBAAqB,GAAI,wOAanC,0BAA0B,gCAuE5B,CAAC"}
1
+ {"version":3,"file":"ShowcaseAllRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAKrD,UAAU,0BAA0B;IAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAQD,eAAO,MAAM,qBAAqB,GAAI,wOAanC,0BAA0B,gCAwE5B,CAAC"}
@@ -4,6 +4,7 @@ import { CmsComponent } from '../../components/CmsComponent';
4
4
  import { createMockShowcaseData, getMergedShowcaseDefaultState } from '../mockFactory';
5
5
  import { IframeHeightReporter } from './IframeHeightReporter';
6
6
  import { ShowcaseAnimationRoot } from './ShowcaseAnimationRoot';
7
+ import { ShowcaseViewportGuard } from './ShowcaseViewportGuard';
7
8
  const DEFAULT_MOCK_CONTEXT = {
8
9
  current: { type: 'Page', id: 'mock-page' },
9
10
  pageContext: {},
@@ -18,7 +19,7 @@ export const ShowcaseAllRenderPage = ({ searchParams, rendererConfig, componentF
18
19
  : Object.keys(rendererConfig.collectionMap)
19
20
  .filter((type) => !excludedCollections.includes(type))
20
21
  .sort();
21
- return (_jsx(ShowcaseAnimationRoot, { children: _jsxs("div", { className: "bg-[#f3f4f6]", children: [types.map((type) => {
22
+ return (_jsxs(ShowcaseAnimationRoot, { children: [_jsx("div", { id: "showcase-measure-root", className: "showcase-render bg-[#f3f4f6]", children: types.map((type) => {
22
23
  const mergedDefaultState = getMergedShowcaseDefaultState(defaultState, type, mode, componentMockMap, collectionMockMap);
23
24
  const mockData = createMockShowcaseData(type, mode, mergedDefaultState, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, componentMockMap, collectionMockMap, collectionCardMockMap, new Set());
24
25
  return (_jsxs("div", { id: `component-${type.replace(/\s+/g, '-').toLowerCase()}`, children: [_jsxs("div", { className: "sticky top-0 z-[10] px-[16px] py-[8px] bg-[#1f2937] text-[#ffffff] text-[14px] font-[600] border-b-[2px] border-[#3b82f6]", children: [_jsx("span", { className: "text-[#9ca3af] mr-[8px]", children: mode === 'component' ? 'Component:' : 'Collection:' }), type] }), _jsx("div", { children: mode === 'component' ? (_jsx(CmsComponent
@@ -30,6 +31,6 @@ export const ShowcaseAllRenderPage = ({ searchParams, rendererConfig, componentF
30
31
  , {
31
32
  // biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
32
33
  information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) })] }, type));
33
- }), _jsx(IframeHeightReporter, {})] }) }));
34
+ }) }), _jsx(ShowcaseViewportGuard, {}), _jsx(IframeHeightReporter, {})] }));
34
35
  };
35
36
  //# sourceMappingURL=ShowcaseAllRenderPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShowcaseAllRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAiBhE,MAAM,oBAAoB,GAAoB;IAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE;IAC1C,WAAW,EAAE,EAAE;IACf,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,cAAc,GAAG,oBAAoB,EACrC,gBAAgB,GAAG,EAAE,EACrB,iBAAiB,GAAG,EAAE,EACtB,qBAAqB,GAAG,EAAE,EAC1B,kBAAkB,GAAG,EAAE,EACvB,mBAAmB,GAAG,EAAE,GACG,EAAE,EAAE;IAC/B,MAAM,IAAI,GAAI,YAAY,CAAC,IAAmC,IAAI,WAAW,CAAC;IAE9E,MAAM,KAAK,GACT,IAAI,KAAK,WAAW;QAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACpD,IAAI,EAAE;QACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;aACtC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACrD,IAAI,EAAE,CAAC;IAEhB,OAAO,CACL,KAAC,qBAAqB,cACpB,eAAK,SAAS,EAAC,cAAc,aAC1B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAClB,MAAM,kBAAkB,GAAG,6BAA6B,CACtD,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,gBAAgB,EAChB,iBAAiB,CAClB,CAAC;oBACF,MAAM,QAAQ,GAAG,sBAAsB,CACrC,IAAI,EACJ,IAAI,EACJ,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,IAAI,GAAG,EAAE,CACV,CAAC;oBAEF,OAAO,CACL,eAAgB,EAAE,EAAE,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,aAExE,eAAK,SAAS,EAAC,2HAA2H,aACxI,eAAM,SAAS,EAAC,yBAAyB,YACtC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,GAC/C,EACN,IAAI,IACD,EAGN,wBACG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CACtB,KAAC,YAAY;gCACX,2EAA2E;;oCAA3E,2EAA2E;oCAC3E,WAAW,EAAE,QAAe,EAC5B,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC,CAAC,CAAC,CACF,KAAC,aAAa;gCACZ,2EAA2E;;oCAA3E,2EAA2E;oCAC3E,WAAW,EAAE,QAAe,EAC5B,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,GAC9B,CACH,GACG,KA1BE,IAAI,CA2BR,CACP,CAAC;gBACJ,CAAC,CAAC,EACF,KAAC,oBAAoB,KAAG,IACpB,GACgB,CACzB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ShowcaseAllRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAiBhE,MAAM,oBAAoB,GAAoB;IAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE;IAC1C,WAAW,EAAE,EAAE;IACf,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,cAAc,GAAG,oBAAoB,EACrC,gBAAgB,GAAG,EAAE,EACrB,iBAAiB,GAAG,EAAE,EACtB,qBAAqB,GAAG,EAAE,EAC1B,kBAAkB,GAAG,EAAE,EACvB,mBAAmB,GAAG,EAAE,GACG,EAAE,EAAE;IAC/B,MAAM,IAAI,GAAI,YAAY,CAAC,IAAmC,IAAI,WAAW,CAAC;IAE9E,MAAM,KAAK,GACT,IAAI,KAAK,WAAW;QAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACpD,IAAI,EAAE;QACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;aACtC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACrD,IAAI,EAAE,CAAC;IAEhB,OAAO,CACL,MAAC,qBAAqB,eACpB,cAAK,EAAE,EAAC,uBAAuB,EAAC,SAAS,EAAC,8BAA8B,YACrE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAClB,MAAM,kBAAkB,GAAG,6BAA6B,CACtD,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,gBAAgB,EAChB,iBAAiB,CAClB,CAAC;oBACF,MAAM,QAAQ,GAAG,sBAAsB,CACrC,IAAI,EACJ,IAAI,EACJ,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,IAAI,GAAG,EAAE,CACV,CAAC;oBAEF,OAAO,CACL,eAAgB,EAAE,EAAE,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,aAExE,eAAK,SAAS,EAAC,2HAA2H,aACxI,eAAM,SAAS,EAAC,yBAAyB,YACtC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,GAC/C,EACN,IAAI,IACD,EAGN,wBACG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CACtB,KAAC,YAAY;gCACX,2EAA2E;;oCAA3E,2EAA2E;oCAC3E,WAAW,EAAE,QAAe,EAC5B,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC,CAAC,CAAC,CACF,KAAC,aAAa;gCACZ,2EAA2E;;oCAA3E,2EAA2E;oCAC3E,WAAW,EAAE,QAAe,EAC5B,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,GAC9B,CACH,GACG,KA1BE,IAAI,CA2BR,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,EACN,KAAC,qBAAqB,KAAG,EACzB,KAAC,oBAAoB,KAAG,IACF,CACzB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { CmsRendererConfig } from '../../CmsRendererConfig';
2
2
  import type { MockData } from '../../cmsRegistration';
3
+ import type { ShowcaseLayoutMode } from '../showcaseLayout';
3
4
  import type { ShowcaseControlState } from '../types';
4
5
  interface ShowcasePageProps {
5
6
  searchParams: Record<string, string | string[] | undefined>;
@@ -14,7 +15,11 @@ interface ShowcasePageProps {
14
15
  excludedCollections?: string[];
15
16
  componentMockMap?: Record<string, MockData>;
16
17
  collectionMockMap?: Record<string, MockData>;
18
+ /** From buildComponentMaps().componentShowcaseLayoutMap */
19
+ componentShowcaseLayoutMap?: Record<string, ShowcaseLayoutMode>;
20
+ /** From buildCollectionMaps().collectionShowcaseLayoutMap */
21
+ collectionShowcaseLayoutMap?: Record<string, ShowcaseLayoutMode>;
17
22
  }
18
- export declare const ShowcasePage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents, excludedCollections, componentMockMap, collectionMockMap, }: ShowcasePageProps) => import("react").JSX.Element;
23
+ export declare const ShowcasePage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents, excludedCollections, componentMockMap, collectionMockMap, componentShowcaseLayoutMap, collectionShowcaseLayoutMap, }: ShowcasePageProps) => import("react").JSX.Element;
19
24
  export {};
20
25
  //# sourceMappingURL=ShowcasePage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShowcasePage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAMrD,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,oBAAoB,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC9C;AAED,eAAO,MAAM,YAAY,GAAI,kNAa1B,iBAAiB,gCAyDnB,CAAC"}
1
+ {"version":3,"file":"ShowcasePage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAMrD,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,oBAAoB,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,2DAA2D;IAC3D,0BAA0B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChE,6DAA6D;IAC7D,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,YAAY,GAAI,2QAe1B,iBAAiB,gCAqEnB,CAAC"}
@@ -4,7 +4,7 @@ import { AllViewPanel } from './AllViewPanel';
4
4
  import { ControlsWrapper } from './ControlsWrapper';
5
5
  import { PreviewPanel } from './PreviewPanel';
6
6
  import { TopBar } from './TopBar';
7
- export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents = [], excludedCollections = [], componentMockMap = {}, collectionMockMap = {}, }) => {
7
+ export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents = [], excludedCollections = [], componentMockMap = {}, collectionMockMap = {}, componentShowcaseLayoutMap = {}, collectionShowcaseLayoutMap = {}, }) => {
8
8
  const componentTypes = Object.keys(rendererConfig.componentMap)
9
9
  .filter((type) => !excludedComponents.includes(type))
10
10
  .sort();
@@ -16,10 +16,16 @@ export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap,
16
16
  const view = (searchParams.view || 'single');
17
17
  const isClean = searchParams.clean === 'true' ||
18
18
  (Array.isArray(searchParams.clean) && searchParams.clean[0] === 'true');
19
+ const controlsOpen = searchParams.controls === 'true' ||
20
+ (Array.isArray(searchParams.controls) && searchParams.controls[0] === 'true');
21
+ const debug = searchParams.debug === 'true' ||
22
+ searchParams.debug === '1' ||
23
+ (Array.isArray(searchParams.debug) &&
24
+ (searchParams.debug[0] === 'true' || searchParams.debug[0] === '1'));
19
25
  const mockDefaults = isClean
20
26
  ? defaultState
21
27
  : getMergedShowcaseDefaultState(defaultState, type, mode, componentMockMap, collectionMockMap);
22
28
  const controls = parseShowcaseControls(searchParams, mockDefaults);
23
- return (_jsxs("div", { className: "flex flex-col h-screen bg-[#ffffff] overflow-hidden", children: [_jsx(TopBar, { componentTypes: componentTypes, collectionTypes: collectionTypes, selectedType: type, mode: mode, view: view }), _jsx("div", { className: "flex-1 flex overflow-hidden relative", children: view === 'all' ? (_jsx(AllViewPanel, { mode: mode, basePath: basePath })) : (_jsxs(_Fragment, { children: [_jsx(PreviewPanel, { type: type, mode: mode, controls: controls, mockDefaults: mockDefaults, basePath: basePath, clean: isClean }), _jsx(ControlsWrapper, { initialState: controls, type: type, mode: mode, colorOptions: colorOptions, foregroundColors: foregroundColors, componentFieldsMap: componentFieldsMap, collectionFieldsMap: collectionFieldsMap })] })) })] }));
29
+ return (_jsxs("div", { className: "flex flex-col h-screen bg-[#ffffff] overflow-hidden", children: [_jsx(TopBar, { componentTypes: componentTypes, collectionTypes: collectionTypes, selectedType: type, mode: mode, view: view }), _jsx("div", { className: "flex-1 flex overflow-hidden relative", children: view === 'all' ? (_jsx(AllViewPanel, { mode: mode, basePath: basePath })) : (_jsxs(_Fragment, { children: [_jsx(PreviewPanel, { type: type, mode: mode, controls: controls, mockDefaults: mockDefaults, basePath: basePath, clean: isClean, componentShowcaseLayoutMap: componentShowcaseLayoutMap, collectionShowcaseLayoutMap: collectionShowcaseLayoutMap, debug: debug }), _jsx(ControlsWrapper, { initialState: controls, type: type, mode: mode, colorOptions: colorOptions, foregroundColors: foregroundColors, componentFieldsMap: componentFieldsMap, collectionFieldsMap: collectionFieldsMap, initialOpen: controlsOpen })] })) })] }));
24
30
  };
25
31
  //# sourceMappingURL=ShowcasePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShowcasePage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAqB,MAAM,EAAE,MAAM,UAAU,CAAC;AAiBrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,kBAAkB,GAAG,EAAE,EACvB,mBAAmB,GAAG,EAAE,EACxB,gBAAgB,GAAG,EAAE,EACrB,iBAAiB,GAAG,EAAE,GACJ,EAAE,EAAE;IACtB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;SAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACpD,IAAI,EAAE,CAAC;IACV,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;SAC9D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACrD,IAAI,EAAE,CAAC;IAEV,MAAM,IAAI,GAAI,YAAY,CAAC,IAAe,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,IAAI,GAAI,YAAY,CAAC,IAAmC,IAAI,WAAW,CAAC;IAC9E,MAAM,IAAI,GAAG,CAAE,YAAY,CAAC,IAAe,IAAI,QAAQ,CAAiB,CAAC;IAEzE,MAAM,OAAO,GACX,YAAY,CAAC,KAAK,KAAK,MAAM;QAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,OAAO;QAC1B,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,6BAA6B,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAEnE,OAAO,CACL,eAAK,SAAS,EAAC,qDAAqD,aAClE,KAAC,MAAM,IACL,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,IAAI,EAClB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,GACV,EAEF,cAAK,SAAS,EAAC,sCAAsC,YAClD,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAChB,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,CACjD,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,YAAY,IACX,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,OAAO,GACd,EACF,KAAC,eAAe,IACd,YAAY,EAAE,QAAQ,EACtB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,mBAAmB,EAAE,mBAAmB,GACxC,IACD,CACJ,GACG,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ShowcasePage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ShowcaseRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAKrD,UAAU,uBAAuB;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC9D,kGAAkG;IAClG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAQD,eAAO,MAAM,kBAAkB,GAAI,yMAYhC,uBAAuB,gCAsEzB,CAAC"}
1
+ {"version":3,"file":"ShowcaseRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAMrD,UAAU,uBAAuB;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC9D,kGAAkG;IAClG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAQD,eAAO,MAAM,kBAAkB,GAAI,yMAYhC,uBAAuB,gCA6EzB,CAAC"}
@@ -1,10 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { CmsCollection } from '../../components/CmsCollection';
3
3
  import { CmsComponent } from '../../components/CmsComponent';
4
4
  import { createMockShowcaseData, getMergedShowcaseDefaultState, parseShowcaseControls, } from '../mockFactory';
5
5
  import { SHOWCASE_CONTROL_KEYS } from '../types';
6
6
  import { IframeHeightReporter } from './IframeHeightReporter';
7
7
  import { ShowcaseAnimationRoot } from './ShowcaseAnimationRoot';
8
+ import { ShowcaseViewportGuard } from './ShowcaseViewportGuard';
8
9
  const DEFAULT_MOCK_CONTEXT = {
9
10
  current: { type: 'Page', id: 'mock-page' },
10
11
  pageContext: {},
@@ -31,14 +32,14 @@ export const ShowcaseRenderPage = ({ searchParams, rendererConfig, componentFiel
31
32
  if (!mockData) {
32
33
  return _jsx("div", { className: "p-4 text-red-500 text-sm", children: "No component selected" });
33
34
  }
34
- return (_jsxs(ShowcaseAnimationRoot, { children: [mode === 'component' ? (_jsx(CmsComponent
35
- // biome-ignore lint/suspicious/noExplicitAny: Any is allowed
36
- , {
35
+ return (_jsxs(ShowcaseAnimationRoot, { children: [_jsx("div", { id: "showcase-measure-root", className: "showcase-render", children: mode === 'component' ? (_jsx(CmsComponent
37
36
  // biome-ignore lint/suspicious/noExplicitAny: Any is allowed
38
- information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) : (_jsx(CmsCollection
39
- // biome-ignore lint/suspicious/noExplicitAny: Any is allowed
40
- , {
37
+ , {
38
+ // biome-ignore lint/suspicious/noExplicitAny: Any is allowed
39
+ information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) : (_jsx(CmsCollection
41
40
  // biome-ignore lint/suspicious/noExplicitAny: Any is allowed
42
- information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })), !isEmbedded && _jsx(IframeHeightReporter, {})] }));
41
+ , {
42
+ // biome-ignore lint/suspicious/noExplicitAny: Any is allowed
43
+ information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) }), !isEmbedded && (_jsxs(_Fragment, { children: [_jsx(ShowcaseViewportGuard, {}), _jsx(IframeHeightReporter, {})] }))] }));
43
44
  };
44
45
  //# sourceMappingURL=ShowcaseRenderPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShowcaseRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseRenderPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShowcaseRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseRenderPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /** Max height for viewport-unit heroes inside the showcase iframe (px). */
2
+ export declare const SHOWCASE_VIEWPORT_MAX_PX = 720;
3
+ /**
4
+ * Caps elements that use viewport height units so showcase iframes cannot
5
+ * grow unboundedly (svh feedback loop with height reporter).
6
+ * Production pages are unaffected — this only mounts inside showcase render routes.
7
+ *
8
+ * Prefer registration `showcaseLayout` + in-component `isCmsShowcase()` compact
9
+ * layouts; this is a safety net for residual *svh CSS.
10
+ */
11
+ export declare function ShowcaseViewportGuard({ maxPx }: {
12
+ maxPx?: number;
13
+ }): null;
14
+ //# sourceMappingURL=ShowcaseViewportGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShowcaseViewportGuard.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseViewportGuard.tsx"],"names":[],"mappings":"AAIA,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAM5C;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,KAAgC,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,QAsE7F"}
@@ -0,0 +1,77 @@
1
+ 'use client';
2
+ import { useEffect } from 'react';
3
+ /** Max height for viewport-unit heroes inside the showcase iframe (px). */
4
+ export const SHOWCASE_VIEWPORT_MAX_PX = 720;
5
+ const VIEWPORT_CLASS_RE = /(?:min-h|h)-(?:screen|svh|dvh|lvh|\[(?:\d+(?:\.\d+)?(?:vh|svh|dvh|lvh)|[^[\]]*(?:vh|svh|dvh|lvh)[^[\]]*)\])/;
6
+ const VIEWPORT_STYLE_RE = /(?:\d+(?:\.\d+)?)?(?:vh|svh|dvh|lvh)|100vh|100svh|200svh/;
7
+ /**
8
+ * Caps elements that use viewport height units so showcase iframes cannot
9
+ * grow unboundedly (svh feedback loop with height reporter).
10
+ * Production pages are unaffected — this only mounts inside showcase render routes.
11
+ *
12
+ * Prefer registration `showcaseLayout` + in-component `isCmsShowcase()` compact
13
+ * layouts; this is a safety net for residual *svh CSS.
14
+ */
15
+ export function ShowcaseViewportGuard({ maxPx = SHOWCASE_VIEWPORT_MAX_PX }) {
16
+ useEffect(() => {
17
+ document.documentElement.classList.add('showcase-iframe');
18
+ let raf = 0;
19
+ let scheduled = false;
20
+ const capElement = (el) => {
21
+ const style = el.getAttribute('style') || '';
22
+ const className = el.className?.toString?.() || '';
23
+ const styleMatch = VIEWPORT_STYLE_RE.test(style);
24
+ const classMatch = VIEWPORT_CLASS_RE.test(className);
25
+ if (!(styleMatch || classMatch)) {
26
+ return;
27
+ }
28
+ // Prefer max-height so flex/sticky layouts still paint content.
29
+ el.style.maxHeight = `${maxPx}px`;
30
+ if (styleMatch && /height\s*:/.test(style)) {
31
+ // Collapse scroll-sentinel budgets (e.g. calc(100svh + 60svh)).
32
+ el.style.height = `${maxPx}px`;
33
+ }
34
+ if (classMatch && !styleMatch) {
35
+ el.style.minHeight = '0';
36
+ if (/(?:^|\s)(?:min-h|h)-(?:screen|svh|dvh)/.test(className) ||
37
+ className.includes('70vh') ||
38
+ className.includes('70svh') ||
39
+ className.includes('100svh')) {
40
+ el.style.height = `${maxPx}px`;
41
+ }
42
+ }
43
+ };
44
+ const scan = () => {
45
+ scheduled = false;
46
+ const all = document.body?.querySelectorAll('*') ?? [];
47
+ for (const node of all) {
48
+ if (node instanceof HTMLElement) {
49
+ capElement(node);
50
+ }
51
+ }
52
+ };
53
+ const scheduleScan = () => {
54
+ if (scheduled)
55
+ return;
56
+ scheduled = true;
57
+ raf = window.requestAnimationFrame(scan);
58
+ };
59
+ scan();
60
+ const observer = new MutationObserver(scheduleScan);
61
+ if (document.body) {
62
+ observer.observe(document.body, {
63
+ childList: true,
64
+ subtree: true,
65
+ attributes: true,
66
+ attributeFilter: ['class', 'style'],
67
+ });
68
+ }
69
+ return () => {
70
+ window.cancelAnimationFrame(raf);
71
+ observer.disconnect();
72
+ document.documentElement.classList.remove('showcase-iframe');
73
+ };
74
+ }, [maxPx]);
75
+ return null;
76
+ }
77
+ //# sourceMappingURL=ShowcaseViewportGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShowcaseViewportGuard.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseViewportGuard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ShowcaseControlState } from './types';
2
+ /**
3
+ * Maps showcase control keys to CMS usedFields names.
4
+ * Controls use synthetic keys like `showVisual`; registrations list `visual`.
5
+ */
6
+ export declare const CONTROL_TO_CMS_FIELDS: Record<keyof ShowcaseControlState, readonly string[]>;
7
+ /**
8
+ * Whether a showcase control is supported for the given CMS type's usedFields.
9
+ * Falls back to supported when the type has no fields map entry.
10
+ */
11
+ export declare function isControlFieldSupported(field: keyof ShowcaseControlState, usedFields: Set<string> | undefined): boolean;
12
+ //# sourceMappingURL=controlFieldSupport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlFieldSupport.d.ts","sourceRoot":"","sources":["../../src/showcase/controlFieldSupport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAevF,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,oBAAoB,EACjC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAClC,OAAO,CAST"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Maps showcase control keys to CMS usedFields names.
3
+ * Controls use synthetic keys like `showVisual`; registrations list `visual`.
4
+ */
5
+ export const CONTROL_TO_CMS_FIELDS = {
6
+ showHeading: ['heading'],
7
+ heading: ['heading'],
8
+ preHeading: ['preHeading'],
9
+ postHeading: ['postHeading'],
10
+ body: ['body'],
11
+ additionalCopy: ['additionalCopy'],
12
+ showVisual: ['visual', 'backgroundVisual'],
13
+ showMobileVisual: ['visual', 'backgroundVisual', 'mobileVisual'],
14
+ backgroundColour: ['backgroundColour'],
15
+ textColour: ['textColour'],
16
+ textSize: ['textSize'],
17
+ showLinks: ['links'],
18
+ numberOfLinks: ['links'],
19
+ cmsLabel: ['cmsLabel'],
20
+ };
21
+ /**
22
+ * Whether a showcase control is supported for the given CMS type's usedFields.
23
+ * Falls back to supported when the type has no fields map entry.
24
+ */
25
+ export function isControlFieldSupported(field, usedFields) {
26
+ if (!usedFields) {
27
+ return true;
28
+ }
29
+ const cmsFields = CONTROL_TO_CMS_FIELDS[field];
30
+ if (!cmsFields || cmsFields.length === 0) {
31
+ return usedFields.has(field);
32
+ }
33
+ return cmsFields.some((name) => usedFields.has(name));
34
+ }
35
+ //# sourceMappingURL=controlFieldSupport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlFieldSupport.js","sourceRoot":"","sources":["../../src/showcase/controlFieldSupport.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA0D;IAC1F,WAAW,EAAE,CAAC,SAAS,CAAC;IACxB,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,WAAW,EAAE,CAAC,aAAa,CAAC;IAC5B,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,cAAc,EAAE,CAAC,gBAAgB,CAAC;IAClC,UAAU,EAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAC1C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,cAAc,CAAC;IAChE,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;IACtC,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,QAAQ,EAAE,CAAC,UAAU,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAiC,EACjC,UAAmC;IAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -1,14 +1,20 @@
1
1
  export { AllViewPanel } from './components/AllViewPanel';
2
2
  export { Controls } from './components/Controls';
3
3
  export { ControlsWrapper } from './components/ControlsWrapper';
4
+ export { IframeHeightReporter } from './components/IframeHeightReporter';
4
5
  export { PreviewPanel } from './components/PreviewPanel';
5
- export { ScaledIframe } from './components/ScaledIframe';
6
+ export { ScaledIframe, SHOWCASE_SINGLE_IFRAME_MAX_HEIGHT, } from './components/ScaledIframe';
6
7
  export { ShowcaseAllRenderPage } from './components/ShowcaseAllRenderPage';
7
8
  export { ShowcaseAnimationRoot } from './components/ShowcaseAnimationRoot';
8
9
  export { ShowcasePage } from './components/ShowcasePage';
9
10
  export { ShowcaseRenderPage } from './components/ShowcaseRenderPage';
11
+ export { SHOWCASE_VIEWPORT_MAX_PX, ShowcaseViewportGuard, } from './components/ShowcaseViewportGuard';
10
12
  export { type ShowcaseView, TopBar } from './components/TopBar';
13
+ export * from './controlFieldSupport';
14
+ export { isCmsShowcase, SHOWCASE_ANALYTICS_SLUG_PREFIX, } from './isCmsShowcase';
11
15
  export * from './mergeShowcaseMocks';
12
16
  export * from './mockFactory';
17
+ export { resolveShowcaseLayout, SHOWCASE_LAYOUT_FIXED_HEIGHT, type ShowcaseLayoutMode, } from './showcaseLayout';
18
+ export { articlesFromShowcaseContents, peopleFromShowcaseContents, visualFromShowcaseMockDims, } from './showcaseRelatedContent';
13
19
  export * from './types';
14
20
  //# sourceMappingURL=index.d.ts.map