@measured/puck-plugin-heading-analyzer 0.21.0-canary.a3dabae1 → 0.21.0-canary.ace4c8b3

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/index.js CHANGED
@@ -268,30 +268,30 @@ var require_flat = __commonJS({
268
268
  });
269
269
 
270
270
  // index.ts
271
- var plugin_heading_analyzer_exports = {};
272
- __export(plugin_heading_analyzer_exports, {
271
+ var index_exports = {};
272
+ __export(index_exports, {
273
273
  default: () => HeadingAnalyzer_default
274
274
  });
275
- module.exports = __toCommonJS(plugin_heading_analyzer_exports);
275
+ module.exports = __toCommonJS(index_exports);
276
276
  init_react_import();
277
277
 
278
278
  // src/HeadingAnalyzer.tsx
279
279
  init_react_import();
280
- var import_react10 = require("react");
280
+ var import_react11 = require("react");
281
281
 
282
282
  // css-module:/home/runner/work/puck/puck/packages/plugin-heading-analyzer/src/HeadingAnalyzer.module.css#css-module
283
283
  init_react_import();
284
- var HeadingAnalyzer_module_default = { "HeadingAnalyzer": "_HeadingAnalyzer_yg0s7_1", "HeadingAnalyzer-cssWarning": "_HeadingAnalyzer-cssWarning_yg0s7_6", "HeadingAnalyzerItem": "_HeadingAnalyzerItem_yg0s7_10", "HeadingAnalyzerItem--missing": "_HeadingAnalyzerItem--missing_yg0s7_14" };
284
+ var HeadingAnalyzer_module_default = { "HeadingAnalyzer": "_HeadingAnalyzer_116v6_1", "HeadingAnalyzer-cssWarning": "_HeadingAnalyzer-cssWarning_116v6_5", "HeadingAnalyzerItem": "_HeadingAnalyzerItem_116v6_9", "HeadingAnalyzerItem--missing": "_HeadingAnalyzerItem--missing_116v6_13" };
285
285
 
286
286
  // src/HeadingAnalyzer.tsx
287
287
  var import_puck = require("@measured/puck");
288
288
 
289
- // ../core/components/OutlineList/index.tsx
289
+ // ../core/components/SidebarSection/index.tsx
290
290
  init_react_import();
291
291
 
292
- // css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css#css-module
292
+ // css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css#css-module
293
293
  init_react_import();
294
- var styles_module_default = { "OutlineList": "_OutlineList_w4lzv_1", "OutlineListItem": "_OutlineListItem_w4lzv_25", "OutlineListItem--clickable": "_OutlineListItem--clickable_w4lzv_45" };
294
+ var styles_module_default = { "SidebarSection": "_SidebarSection_8boj8_1", "SidebarSection-title": "_SidebarSection-title_8boj8_12", "SidebarSection--noBorderTop": "_SidebarSection--noBorderTop_8boj8_20", "SidebarSection-content": "_SidebarSection-content_8boj8_24", "SidebarSection--noPadding": "_SidebarSection--noPadding_8boj8_28", "SidebarSection-breadcrumbLabel": "_SidebarSection-breadcrumbLabel_8boj8_41", "SidebarSection-breadcrumbs": "_SidebarSection-breadcrumbs_8boj8_70", "SidebarSection-breadcrumb": "_SidebarSection-breadcrumb_8boj8_41", "SidebarSection-heading": "_SidebarSection-heading_8boj8_82", "SidebarSection-loadingOverlay": "_SidebarSection-loadingOverlay_8boj8_86" };
295
295
 
296
296
  // ../core/lib/get-class-name-factory.ts
297
297
  init_react_import();
@@ -320,50 +320,29 @@ var getClassNameFactory = (rootClass, styles, config = { baseClass: "" }) => (op
320
320
  };
321
321
  var get_class_name_factory_default = getClassNameFactory;
322
322
 
323
- // ../core/components/OutlineList/index.tsx
323
+ // ../core/components/Heading/index.tsx
324
+ init_react_import();
325
+
326
+ // css-module:/home/runner/work/puck/puck/packages/core/components/Heading/styles.module.css#css-module
327
+ init_react_import();
328
+ var styles_module_default2 = { "Heading": "_Heading_qxrry_1", "Heading--xxxxl": "_Heading--xxxxl_qxrry_12", "Heading--xxxl": "_Heading--xxxl_qxrry_18", "Heading--xxl": "_Heading--xxl_qxrry_22", "Heading--xl": "_Heading--xl_qxrry_26", "Heading--l": "_Heading--l_qxrry_30", "Heading--m": "_Heading--m_qxrry_34", "Heading--s": "_Heading--s_qxrry_38", "Heading--xs": "_Heading--xs_qxrry_42" };
329
+
330
+ // ../core/components/Heading/index.tsx
324
331
  var import_jsx_runtime = require("react/jsx-runtime");
325
- var getClassName = get_class_name_factory_default("OutlineList", styles_module_default);
326
- var getClassNameItem = get_class_name_factory_default("OutlineListItem", styles_module_default);
327
- var OutlineList = ({ children }) => {
328
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { className: getClassName(), children });
329
- };
330
- OutlineList.Clickable = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: getClassNameItem({ clickable: true }), children });
331
- OutlineList.Item = ({
332
- children,
333
- onClick
334
- }) => {
332
+ var getClassName = get_class_name_factory_default("Heading", styles_module_default2);
333
+ var Heading = ({ children, rank, size = "m" }) => {
334
+ const Tag = rank ? `h${rank}` : "span";
335
335
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
336
- "li",
336
+ Tag,
337
337
  {
338
- className: getClassNameItem({ clickable: !!onClick }),
339
- onClick,
338
+ className: getClassName({
339
+ [size]: true
340
+ }),
340
341
  children
341
342
  }
342
343
  );
343
344
  };
344
345
 
345
- // ../core/lib/scroll-into-view.ts
346
- init_react_import();
347
- var scrollIntoView = (el) => {
348
- const oldStyle = __spreadValues({}, el.style);
349
- el.style.scrollMargin = "256px";
350
- if (el) {
351
- el == null ? void 0 : el.scrollIntoView({ behavior: "smooth" });
352
- el.style.scrollMargin = oldStyle.scrollMargin || "";
353
- }
354
- };
355
-
356
- // ../core/lib/get-frame.ts
357
- init_react_import();
358
- var getFrame = () => {
359
- if (typeof window === "undefined") return;
360
- let frameEl = document.querySelector("#preview-frame");
361
- if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
362
- return frameEl.contentDocument || document;
363
- }
364
- return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
365
- };
366
-
367
346
  // ../../node_modules/lucide-react/dist/esm/lucide-react.js
368
347
  init_react_import();
369
348
 
@@ -451,29 +430,15 @@ var createLucideIcon = (iconName, iconNode) => {
451
430
  return Component;
452
431
  };
453
432
 
454
- // ../../node_modules/lucide-react/dist/esm/icons/heading-1.js
433
+ // ../../node_modules/lucide-react/dist/esm/icons/chevron-right.js
455
434
  init_react_import();
456
- var Heading1 = createLucideIcon("Heading1", [
457
- ["path", { d: "M4 12h8", key: "17cfdx" }],
458
- ["path", { d: "M4 18V6", key: "1rz3zl" }],
459
- ["path", { d: "M12 18V6", key: "zqpxq5" }],
460
- ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
435
+ var ChevronRight = createLucideIcon("ChevronRight", [
436
+ ["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]
461
437
  ]);
462
438
 
463
- // ../core/lib/index.ts
464
- init_react_import();
465
-
466
- // ../core/lib/filter.ts
467
- init_react_import();
468
-
469
- // ../core/lib/data/reorder.ts
470
- init_react_import();
471
-
472
- // ../core/lib/data/replace.ts
473
- init_react_import();
474
-
475
- // ../core/lib/use-reset-auto-zoom.ts
439
+ // ../core/lib/use-breadcrumbs.ts
476
440
  init_react_import();
441
+ var import_react10 = require("react");
477
442
 
478
443
  // ../core/store/index.ts
479
444
  init_react_import();
@@ -544,32 +509,27 @@ var walkField = ({
544
509
  config,
545
510
  recurseSlots = false
546
511
  }) => {
547
- var _a, _b, _c, _d, _e;
512
+ var _a, _b, _c;
548
513
  const fieldType = (_a = fields[propKey]) == null ? void 0 : _a.type;
549
514
  const map = mappers[fieldType];
550
515
  if (map && fieldType === "slot") {
551
516
  const content = value || [];
552
- let mappedContent = content;
553
- if (recurseSlots) {
554
- for (let i = 0; i < content.length; i++) {
555
- const el = content[i];
556
- const componentConfig = config.components[el.type];
557
- if (!componentConfig || !((_b = el.props) == null ? void 0 : _b.id)) {
558
- continue;
559
- }
560
- const fields2 = (_c = componentConfig.fields) != null ? _c : {};
561
- mappedContent.push(
562
- walkField({
563
- value: __spreadProps(__spreadValues({}, el), { props: defaultSlots(el.props, fields2) }),
564
- fields: fields2,
565
- mappers,
566
- id: el.props.id,
567
- config,
568
- recurseSlots
569
- })
570
- );
517
+ const mappedContent = recurseSlots ? content.map((el) => {
518
+ var _a2;
519
+ const componentConfig = config.components[el.type];
520
+ if (!componentConfig) {
521
+ throw new Error(`Could not find component config for ${el.type}`);
571
522
  }
572
- }
523
+ const fields2 = (_a2 = componentConfig.fields) != null ? _a2 : {};
524
+ return walkField({
525
+ value: __spreadProps(__spreadValues({}, el), { props: defaultSlots(el.props, fields2) }),
526
+ fields: fields2,
527
+ mappers,
528
+ id: el.props.id,
529
+ config,
530
+ recurseSlots
531
+ });
532
+ }) : content;
573
533
  if (containsPromise(mappedContent)) {
574
534
  return Promise.all(mappedContent);
575
535
  }
@@ -591,7 +551,7 @@ var walkField = ({
591
551
  }
592
552
  if (value && typeof value === "object") {
593
553
  if (Array.isArray(value)) {
594
- const arrayFields = ((_d = fields[propKey]) == null ? void 0 : _d.type) === "array" ? fields[propKey].arrayFields : null;
554
+ const arrayFields = ((_b = fields[propKey]) == null ? void 0 : _b.type) === "array" ? fields[propKey].arrayFields : null;
595
555
  if (!arrayFields) return value;
596
556
  const newValue = value.map(
597
557
  (el, idx) => walkField({
@@ -612,7 +572,7 @@ var walkField = ({
612
572
  } else if ("$$typeof" in value) {
613
573
  return value;
614
574
  } else {
615
- const objectFields = ((_e = fields[propKey]) == null ? void 0 : _e.type) === "object" ? fields[propKey].objectFields : fields;
575
+ const objectFields = ((_c = fields[propKey]) == null ? void 0 : _c.type) === "object" ? fields[propKey].objectFields : fields;
616
576
  return walkObject({
617
577
  value,
618
578
  fields: objectFields,
@@ -858,10 +818,10 @@ var insert = (list, index, item) => {
858
818
  // ../core/lib/generate-id.ts
859
819
  init_react_import();
860
820
 
861
- // ../../node_modules/uuid/dist/esm-node/index.js
821
+ // ../core/node_modules/uuid/dist/esm-node/index.js
862
822
  init_react_import();
863
823
 
864
- // ../../node_modules/uuid/dist/esm-node/rng.js
824
+ // ../core/node_modules/uuid/dist/esm-node/rng.js
865
825
  init_react_import();
866
826
  var import_crypto = __toESM(require("crypto"));
867
827
  var rnds8Pool = new Uint8Array(256);
@@ -874,7 +834,7 @@ function rng() {
874
834
  return rnds8Pool.slice(poolPtr, poolPtr += 16);
875
835
  }
876
836
 
877
- // ../../node_modules/uuid/dist/esm-node/stringify.js
837
+ // ../core/node_modules/uuid/dist/esm-node/stringify.js
878
838
  init_react_import();
879
839
  var byteToHex = [];
880
840
  for (let i = 0; i < 256; ++i) {
@@ -884,17 +844,17 @@ function unsafeStringify(arr, offset = 0) {
884
844
  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
885
845
  }
886
846
 
887
- // ../../node_modules/uuid/dist/esm-node/v4.js
847
+ // ../core/node_modules/uuid/dist/esm-node/v4.js
888
848
  init_react_import();
889
849
 
890
- // ../../node_modules/uuid/dist/esm-node/native.js
850
+ // ../core/node_modules/uuid/dist/esm-node/native.js
891
851
  init_react_import();
892
852
  var import_crypto2 = __toESM(require("crypto"));
893
853
  var native_default = {
894
854
  randomUUID: import_crypto2.default.randomUUID
895
855
  };
896
856
 
897
- // ../../node_modules/uuid/dist/esm-node/v4.js
857
+ // ../core/node_modules/uuid/dist/esm-node/v4.js
898
858
  function v4(options, buf, offset) {
899
859
  if (native_default.randomUUID && !buf && !options) {
900
860
  return native_default.randomUUID();
@@ -1448,8 +1408,7 @@ init_react_import();
1448
1408
  var defaultViewports = [
1449
1409
  { width: 360, height: "auto", icon: "Smartphone", label: "Small" },
1450
1410
  { width: 768, height: "auto", icon: "Tablet", label: "Medium" },
1451
- { width: 1280, height: "auto", icon: "Monitor", label: "Large" },
1452
- { width: "100%", height: "auto", icon: "FullWidth", label: "Full-width" }
1411
+ { width: 1280, height: "auto", icon: "Monitor", label: "Large" }
1453
1412
  ];
1454
1413
 
1455
1414
  // ../../node_modules/zustand/esm/vanilla.mjs
@@ -1475,7 +1434,7 @@ var createStoreImpl = (createState) => {
1475
1434
  const initialState = state = createState(setState, getState, api);
1476
1435
  return api;
1477
1436
  };
1478
- var createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
1437
+ var createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);
1479
1438
 
1480
1439
  // ../../node_modules/zustand/esm/react.mjs
1481
1440
  init_react_import();
@@ -1484,8 +1443,8 @@ var identity = (arg) => arg;
1484
1443
  function useStore(api, selector = identity) {
1485
1444
  const slice = import_react4.default.useSyncExternalStore(
1486
1445
  api.subscribe,
1487
- () => selector(api.getState()),
1488
- () => selector(api.getInitialState())
1446
+ import_react4.default.useCallback(() => selector(api.getState()), [api, selector]),
1447
+ import_react4.default.useCallback(() => selector(api.getInitialState()), [api, selector])
1489
1448
  );
1490
1449
  import_react4.default.useDebugValue(slice);
1491
1450
  return slice;
@@ -1496,13 +1455,13 @@ var createImpl = (createState) => {
1496
1455
  Object.assign(useBoundStore, api);
1497
1456
  return useBoundStore;
1498
1457
  };
1499
- var create = (createState) => createState ? createImpl(createState) : createImpl;
1458
+ var create = ((createState) => createState ? createImpl(createState) : createImpl);
1500
1459
 
1501
1460
  // ../../node_modules/zustand/esm/middleware.mjs
1502
1461
  init_react_import();
1503
1462
  var subscribeWithSelectorImpl = (fn) => (set, get, api) => {
1504
1463
  const origSubscribe = api.subscribe;
1505
- api.subscribe = (selector, optListener, options) => {
1464
+ api.subscribe = ((selector, optListener, options) => {
1506
1465
  let listener = selector;
1507
1466
  if (optListener) {
1508
1467
  const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;
@@ -1519,7 +1478,7 @@ var subscribeWithSelectorImpl = (fn) => (set, get, api) => {
1519
1478
  }
1520
1479
  }
1521
1480
  return origSubscribe(listener);
1522
- };
1481
+ });
1523
1482
  const initialState = fn(set, get, api);
1524
1483
  return initialState;
1525
1484
  };
@@ -1736,9 +1695,9 @@ function createIsCircular(areItemsEqual) {
1736
1695
  function getStrictProperties(object) {
1737
1696
  return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));
1738
1697
  }
1739
- var hasOwn = Object.hasOwn || function(object, property) {
1698
+ var hasOwn = Object.hasOwn || (function(object, property) {
1740
1699
  return hasOwnProperty.call(object, property);
1741
- };
1700
+ });
1742
1701
  function sameValueZeroEqual(a, b) {
1743
1702
  return a === b || !a && !b && a !== a && b !== b;
1744
1703
  }
@@ -2128,10 +2087,10 @@ var getChanged = (newItem, oldItem) => {
2128
2087
 
2129
2088
  // ../core/store/slices/permissions.ts
2130
2089
  var createPermissionsSlice = (set, get) => {
2131
- const resolvePermissions = (..._0) => __async(void 0, [..._0], function* (params = {}, force) {
2090
+ const resolvePermissions = (..._0) => __async(null, [..._0], function* (params = {}, force) {
2132
2091
  const { state, permissions, config } = get();
2133
2092
  const { cache: cache2, globalPermissions } = permissions;
2134
- const resolveDataForItem = (item2, force2 = false) => __async(void 0, null, function* () {
2093
+ const resolveDataForItem = (item2, force2 = false) => __async(null, null, function* () {
2135
2094
  var _a, _b, _c;
2136
2095
  const { config: config2, state: appState, setComponentLoading } = get();
2137
2096
  const componentConfig = item2.type === "root" ? config2.root : config2.components[item2.type];
@@ -2186,13 +2145,13 @@ var createPermissionsSlice = (set, get) => {
2186
2145
  if (item) {
2187
2146
  yield resolveDataForItem(item, force);
2188
2147
  } else if (type) {
2189
- flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(void 0, null, function* () {
2148
+ flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(null, null, function* () {
2190
2149
  yield resolveDataForItem(item2, force);
2191
2150
  }));
2192
2151
  } else if (root) {
2193
2152
  resolveDataForRoot(force);
2194
2153
  } else {
2195
- flattenData(state, config).map((item2) => __async(void 0, null, function* () {
2154
+ flattenData(state, config).map((item2) => __async(null, null, function* () {
2196
2155
  yield resolveDataForItem(item2, force);
2197
2156
  }));
2198
2157
  }
@@ -2247,7 +2206,7 @@ var createFieldsSlice = (_set, _get) => {
2247
2206
  // ../core/lib/resolve-component-data.ts
2248
2207
  init_react_import();
2249
2208
  var cache = { lastChange: {} };
2250
- var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
2209
+ var resolveComponentData = (_0, _1, ..._2) => __async(null, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
2251
2210
  const configForItem = "type" in item && item.type !== "root" ? config.components[item.type] : config.root;
2252
2211
  const resolvedItem = __spreadValues({}, item);
2253
2212
  const shouldRunResolver = (configForItem == null ? void 0 : configForItem.resolveData) && item.props;
@@ -2275,11 +2234,11 @@ var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], f
2275
2234
  let itemWithResolvedChildren = yield mapFields(
2276
2235
  resolvedItem,
2277
2236
  {
2278
- slot: (_02) => __async(void 0, [_02], function* ({ value }) {
2237
+ slot: (_02) => __async(null, [_02], function* ({ value }) {
2279
2238
  const content = value;
2280
2239
  return yield Promise.all(
2281
2240
  content.map(
2282
- (childItem) => __async(void 0, null, function* () {
2241
+ (childItem) => __async(null, null, function* () {
2283
2242
  return (yield resolveComponentData(
2284
2243
  childItem,
2285
2244
  config,
@@ -2345,8 +2304,7 @@ var defaultAppState = {
2345
2304
  options: [],
2346
2305
  controlsVisible: true
2347
2306
  },
2348
- field: { focus: null },
2349
- plugin: { current: null }
2307
+ field: { focus: null }
2350
2308
  },
2351
2309
  indexes: {
2352
2310
  nodes: {},
@@ -2362,7 +2320,6 @@ var createAppStore = (initialAppStore) => create()(
2362
2320
  subscribeWithSelector((set, get) => {
2363
2321
  var _a, _b;
2364
2322
  return __spreadProps(__spreadValues({
2365
- instanceId: generateId(),
2366
2323
  state: defaultAppState,
2367
2324
  config: { components: {} },
2368
2325
  componentState: {},
@@ -2471,7 +2428,7 @@ var createAppStore = (initialAppStore) => create()(
2471
2428
  const selectedItem = state.ui.itemSelector ? getItem(state.ui.itemSelector, state) : null;
2472
2429
  return __spreadProps(__spreadValues({}, s), { state, selectedItem });
2473
2430
  }),
2474
- resolveComponentData: (componentData, trigger) => __async(void 0, null, function* () {
2431
+ resolveComponentData: (componentData, trigger) => __async(null, null, function* () {
2475
2432
  const { config, metadata, setComponentLoading, permissions } = get();
2476
2433
  const timeouts = {};
2477
2434
  return yield resolveComponentData(
@@ -2482,7 +2439,7 @@ var createAppStore = (initialAppStore) => create()(
2482
2439
  const id = "id" in item.props ? item.props.id : "root";
2483
2440
  timeouts[id] = setComponentLoading(id, true, 50);
2484
2441
  },
2485
- (item) => __async(void 0, null, function* () {
2442
+ (item) => __async(null, null, function* () {
2486
2443
  const id = "id" in item.props ? item.props.id : "root";
2487
2444
  if ("type" in item) {
2488
2445
  yield permissions.refreshPermissions({ item });
@@ -2494,7 +2451,7 @@ var createAppStore = (initialAppStore) => create()(
2494
2451
  trigger
2495
2452
  );
2496
2453
  }),
2497
- resolveAndCommitData: () => __async(void 0, null, function* () {
2454
+ resolveAndCommitData: () => __async(null, null, function* () {
2498
2455
  const { config, state, dispatch, resolveComponentData: resolveComponentData2 } = get();
2499
2456
  walkAppState(
2500
2457
  state,
@@ -2533,14 +2490,203 @@ var createAppStore = (initialAppStore) => create()(
2533
2490
  })
2534
2491
  );
2535
2492
  var appStoreContext = (0, import_react9.createContext)(createAppStore());
2493
+ function useAppStore(selector) {
2494
+ const context = (0, import_react9.useContext)(appStoreContext);
2495
+ return useStore(context, selector);
2496
+ }
2497
+ function useAppStoreApi() {
2498
+ return (0, import_react9.useContext)(appStoreContext);
2499
+ }
2500
+
2501
+ // ../core/lib/use-breadcrumbs.ts
2502
+ var useBreadcrumbs = (renderCount) => {
2503
+ const selectedId = useAppStore((s) => {
2504
+ var _a;
2505
+ return (_a = s.selectedItem) == null ? void 0 : _a.props.id;
2506
+ });
2507
+ const config = useAppStore((s) => s.config);
2508
+ const path = useAppStore((s) => {
2509
+ var _a;
2510
+ return (_a = s.state.indexes.nodes[selectedId]) == null ? void 0 : _a.path;
2511
+ });
2512
+ const appStore = useAppStoreApi();
2513
+ return (0, import_react10.useMemo)(() => {
2514
+ const breadcrumbs = (path == null ? void 0 : path.map((zoneCompound) => {
2515
+ var _a, _b, _c;
2516
+ const [componentId] = zoneCompound.split(":");
2517
+ if (componentId === "root") {
2518
+ return {
2519
+ label: "Page",
2520
+ selector: null
2521
+ };
2522
+ }
2523
+ const node = appStore.getState().state.indexes.nodes[componentId];
2524
+ const parentId = node.path[node.path.length - 1];
2525
+ const contentIds = ((_a = appStore.getState().state.indexes.zones[parentId]) == null ? void 0 : _a.contentIds) || [];
2526
+ const index = contentIds.indexOf(componentId);
2527
+ const label = node ? (_c = (_b = config.components[node.data.type]) == null ? void 0 : _b.label) != null ? _c : node.data.type : "Component";
2528
+ return {
2529
+ label,
2530
+ selector: node ? {
2531
+ index,
2532
+ zone: node.path[node.path.length - 1]
2533
+ } : null
2534
+ };
2535
+ })) || [];
2536
+ if (renderCount) {
2537
+ return breadcrumbs.slice(breadcrumbs.length - renderCount);
2538
+ }
2539
+ return breadcrumbs;
2540
+ }, [path, renderCount]);
2541
+ };
2542
+
2543
+ // ../core/components/Loader/index.tsx
2544
+ init_react_import();
2545
+
2546
+ // ../core/lib/index.ts
2547
+ init_react_import();
2548
+
2549
+ // ../core/lib/filter.ts
2550
+ init_react_import();
2551
+
2552
+ // ../core/lib/data/reorder.ts
2553
+ init_react_import();
2554
+
2555
+ // ../core/lib/data/replace.ts
2556
+ init_react_import();
2557
+
2558
+ // ../core/lib/use-reset-auto-zoom.ts
2559
+ init_react_import();
2536
2560
 
2537
2561
  // ../core/lib/get-zoom-config.ts
2538
2562
  init_react_import();
2539
2563
 
2564
+ // css-module:/home/runner/work/puck/puck/packages/core/components/Loader/styles.module.css#css-module
2565
+ init_react_import();
2566
+ var styles_module_default3 = { "Loader": "_Loader_nacdm_13", "loader-animation": "_loader-animation_nacdm_1" };
2567
+
2568
+ // ../core/components/Loader/index.tsx
2569
+ var import_jsx_runtime2 = require("react/jsx-runtime");
2570
+ var getClassName2 = get_class_name_factory_default("Loader", styles_module_default3);
2571
+ var Loader = (_a) => {
2572
+ var _b = _a, {
2573
+ color,
2574
+ size = 16
2575
+ } = _b, props = __objRest(_b, [
2576
+ "color",
2577
+ "size"
2578
+ ]);
2579
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
2580
+ "span",
2581
+ __spreadValues({
2582
+ className: getClassName2(),
2583
+ style: {
2584
+ width: size,
2585
+ height: size,
2586
+ color
2587
+ },
2588
+ "aria-label": "loading"
2589
+ }, props)
2590
+ );
2591
+ };
2592
+
2593
+ // ../core/components/SidebarSection/index.tsx
2594
+ var import_jsx_runtime3 = require("react/jsx-runtime");
2595
+ var getClassName3 = get_class_name_factory_default("SidebarSection", styles_module_default);
2596
+ var SidebarSection = ({
2597
+ children,
2598
+ title,
2599
+ background,
2600
+ showBreadcrumbs,
2601
+ noBorderTop,
2602
+ noPadding,
2603
+ isLoading
2604
+ }) => {
2605
+ const setUi = useAppStore((s) => s.setUi);
2606
+ const breadcrumbs = useBreadcrumbs(1);
2607
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
2608
+ "div",
2609
+ {
2610
+ className: getClassName3({ noBorderTop, noPadding }),
2611
+ style: { background },
2612
+ children: [
2613
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: getClassName3("title"), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: getClassName3("breadcrumbs"), children: [
2614
+ showBreadcrumbs ? breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: getClassName3("breadcrumb"), children: [
2615
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2616
+ "button",
2617
+ {
2618
+ type: "button",
2619
+ className: getClassName3("breadcrumbLabel"),
2620
+ onClick: () => setUi({ itemSelector: breadcrumb.selector }),
2621
+ children: breadcrumb.label
2622
+ }
2623
+ ),
2624
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ChevronRight, { size: 16 })
2625
+ ] }, i)) : null,
2626
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: getClassName3("heading"), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Heading, { rank: "2", size: "xs", children: title }) })
2627
+ ] }) }),
2628
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: getClassName3("content"), children }),
2629
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: getClassName3("loadingOverlay"), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Loader, { size: 32 }) })
2630
+ ]
2631
+ }
2632
+ );
2633
+ };
2634
+
2635
+ // ../core/components/OutlineList/index.tsx
2636
+ init_react_import();
2637
+
2638
+ // css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css#css-module
2639
+ init_react_import();
2640
+ var styles_module_default4 = { "OutlineList": "_OutlineList_w4lzv_1", "OutlineListItem": "_OutlineListItem_w4lzv_25", "OutlineListItem--clickable": "_OutlineListItem--clickable_w4lzv_45" };
2641
+
2642
+ // ../core/components/OutlineList/index.tsx
2643
+ var import_jsx_runtime4 = require("react/jsx-runtime");
2644
+ var getClassName4 = get_class_name_factory_default("OutlineList", styles_module_default4);
2645
+ var getClassNameItem = get_class_name_factory_default("OutlineListItem", styles_module_default4);
2646
+ var OutlineList = ({ children }) => {
2647
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("ul", { className: getClassName4(), children });
2648
+ };
2649
+ OutlineList.Clickable = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: getClassNameItem({ clickable: true }), children });
2650
+ OutlineList.Item = ({
2651
+ children,
2652
+ onClick
2653
+ }) => {
2654
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2655
+ "li",
2656
+ {
2657
+ className: getClassNameItem({ clickable: !!onClick }),
2658
+ onClick,
2659
+ children
2660
+ }
2661
+ );
2662
+ };
2663
+
2664
+ // ../core/lib/scroll-into-view.ts
2665
+ init_react_import();
2666
+ var scrollIntoView = (el) => {
2667
+ const oldStyle = __spreadValues({}, el.style);
2668
+ el.style.scrollMargin = "256px";
2669
+ if (el) {
2670
+ el == null ? void 0 : el.scrollIntoView({ behavior: "smooth" });
2671
+ el.style.scrollMargin = oldStyle.scrollMargin || "";
2672
+ }
2673
+ };
2674
+
2675
+ // ../core/lib/get-frame.ts
2676
+ init_react_import();
2677
+ var getFrame = () => {
2678
+ if (typeof window === "undefined") return;
2679
+ let frameEl = document.querySelector("#preview-frame");
2680
+ if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
2681
+ return frameEl.contentDocument || document;
2682
+ }
2683
+ return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
2684
+ };
2685
+
2540
2686
  // src/HeadingAnalyzer.tsx
2541
2687
  var import_react_from_json = __toESM(require("react-from-json"));
2542
- var import_jsx_runtime2 = require("react/jsx-runtime");
2543
- var getClassName2 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
2688
+ var import_jsx_runtime5 = require("react/jsx-runtime");
2689
+ var getClassName5 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
2544
2690
  var getClassNameItem2 = get_class_name_factory_default("HeadingAnalyzerItem", HeadingAnalyzer_module_default);
2545
2691
  var ReactFromJSON = import_react_from_json.default.default || import_react_from_json.default;
2546
2692
  var getOutline = ({ frame } = {}) => {
@@ -2595,8 +2741,8 @@ function buildHierarchy(frame) {
2595
2741
  var usePuck = (0, import_puck.createUsePuck)();
2596
2742
  var HeadingAnalyzer = () => {
2597
2743
  const data = usePuck((s) => s.appState.data);
2598
- const [hierarchy, setHierarchy] = (0, import_react10.useState)([]);
2599
- (0, import_react10.useEffect)(() => {
2744
+ const [hierarchy, setHierarchy] = (0, import_react11.useState)([]);
2745
+ (0, import_react11.useEffect)(() => {
2600
2746
  const frame = getFrame();
2601
2747
  let entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
2602
2748
  const createHierarchy = () => {
@@ -2631,11 +2777,11 @@ var HeadingAnalyzer = () => {
2631
2777
  frameObserver.disconnect();
2632
2778
  };
2633
2779
  }, [data]);
2634
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: getClassName2(), children: [
2635
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
2780
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: getClassName5(), children: [
2781
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
2636
2782
  "small",
2637
2783
  {
2638
- className: getClassName2("cssWarning"),
2784
+ className: getClassName5("cssWarning"),
2639
2785
  style: {
2640
2786
  color: "var(--puck-color-red-04)",
2641
2787
  display: "block",
@@ -2644,19 +2790,19 @@ var HeadingAnalyzer = () => {
2644
2790
  children: [
2645
2791
  "Heading analyzer styles not loaded. Please review the",
2646
2792
  " ",
2647
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("a", { href: "https://github.com/measuredco/puck/blob/main/packages/plugin-heading-analyzer/README.md", children: "README" }),
2793
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("a", { href: "https://github.com/measuredco/puck/blob/main/packages/plugin-heading-analyzer/README.md", children: "README" }),
2648
2794
  "."
2649
2795
  ]
2650
2796
  }
2651
2797
  ),
2652
- hierarchy.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { children: "No headings." }),
2653
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(OutlineList, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
2798
+ hierarchy.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { children: "No headings." }),
2799
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(OutlineList, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2654
2800
  ReactFromJSON,
2655
2801
  {
2656
2802
  mapping: {
2657
- Root: (props) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: props.children }),
2658
- OutlineListItem: (props) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(OutlineList.Item, { children: [
2659
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(OutlineList.Clickable, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
2803
+ Root: (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: props.children }),
2804
+ OutlineListItem: (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(OutlineList.Item, { children: [
2805
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(OutlineList.Clickable, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2660
2806
  "small",
2661
2807
  {
2662
2808
  className: getClassNameItem2({ missing: props.missing }),
@@ -2674,14 +2820,14 @@ var HeadingAnalyzer = () => {
2674
2820
  }, 2e3);
2675
2821
  }
2676
2822
  },
2677
- children: props.missing ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
2678
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("b", { children: [
2823
+ children: props.missing ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2824
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("b", { children: [
2679
2825
  "H",
2680
2826
  props.rank
2681
2827
  ] }),
2682
2828
  ": Missing"
2683
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
2684
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("b", { children: [
2829
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2830
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("b", { children: [
2685
2831
  "H",
2686
2832
  props.rank
2687
2833
  ] }),
@@ -2690,7 +2836,7 @@ var HeadingAnalyzer = () => {
2690
2836
  ] })
2691
2837
  }
2692
2838
  ) }),
2693
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(OutlineList, { children: props.children })
2839
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(OutlineList, { children: props.children })
2694
2840
  ] })
2695
2841
  },
2696
2842
  entry: {
@@ -2711,10 +2857,12 @@ var HeadingAnalyzer = () => {
2711
2857
  ] });
2712
2858
  };
2713
2859
  var headingAnalyzer = {
2714
- name: "heading-analyzer",
2715
- label: "Audit",
2716
- render: HeadingAnalyzer,
2717
- icon: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Heading1, {})
2860
+ overrides: {
2861
+ fields: ({ children, itemSelector }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2862
+ children,
2863
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { display: itemSelector ? "none" : "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SidebarSection, { title: "Heading Outline", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(HeadingAnalyzer, {}) }) })
2864
+ ] })
2865
+ }
2718
2866
  };
2719
2867
  var HeadingAnalyzer_default = headingAnalyzer;
2720
2868
  /*! Bundled license information:
@@ -2727,45 +2875,10 @@ classnames/index.js:
2727
2875
  *)
2728
2876
 
2729
2877
  lucide-react/dist/esm/shared/src/utils.js:
2730
- (**
2731
- * @license lucide-react v0.468.0 - ISC
2732
- *
2733
- * This source code is licensed under the ISC license.
2734
- * See the LICENSE file in the root directory of this source tree.
2735
- *)
2736
-
2737
2878
  lucide-react/dist/esm/defaultAttributes.js:
2738
- (**
2739
- * @license lucide-react v0.468.0 - ISC
2740
- *
2741
- * This source code is licensed under the ISC license.
2742
- * See the LICENSE file in the root directory of this source tree.
2743
- *)
2744
-
2745
2879
  lucide-react/dist/esm/Icon.js:
2746
- (**
2747
- * @license lucide-react v0.468.0 - ISC
2748
- *
2749
- * This source code is licensed under the ISC license.
2750
- * See the LICENSE file in the root directory of this source tree.
2751
- *)
2752
-
2753
2880
  lucide-react/dist/esm/createLucideIcon.js:
2754
- (**
2755
- * @license lucide-react v0.468.0 - ISC
2756
- *
2757
- * This source code is licensed under the ISC license.
2758
- * See the LICENSE file in the root directory of this source tree.
2759
- *)
2760
-
2761
- lucide-react/dist/esm/icons/heading-1.js:
2762
- (**
2763
- * @license lucide-react v0.468.0 - ISC
2764
- *
2765
- * This source code is licensed under the ISC license.
2766
- * See the LICENSE file in the root directory of this source tree.
2767
- *)
2768
-
2881
+ lucide-react/dist/esm/icons/chevron-right.js:
2769
2882
  lucide-react/dist/esm/lucide-react.js:
2770
2883
  (**
2771
2884
  * @license lucide-react v0.468.0 - ISC