@measured/puck-plugin-heading-analyzer 0.21.0-canary.b818cb1f → 0.21.0-canary.c0db75c1

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_react11 = require("react");
280
+ var import_react10 = 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_116v6_1", "HeadingAnalyzer-cssWarning": "_HeadingAnalyzer-cssWarning_116v6_5", "HeadingAnalyzerItem": "_HeadingAnalyzerItem_116v6_9", "HeadingAnalyzerItem--missing": "_HeadingAnalyzerItem--missing_116v6_13" };
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" };
285
285
 
286
286
  // src/HeadingAnalyzer.tsx
287
287
  var import_puck = require("@measured/puck");
288
288
 
289
- // ../core/components/SidebarSection/index.tsx
289
+ // ../core/components/OutlineList/index.tsx
290
290
  init_react_import();
291
291
 
292
- // css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css#css-module
292
+ // css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css#css-module
293
293
  init_react_import();
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" };
294
+ var styles_module_default = { "OutlineList": "_OutlineList_w4lzv_1", "OutlineListItem": "_OutlineListItem_w4lzv_25", "OutlineListItem--clickable": "_OutlineListItem--clickable_w4lzv_45" };
295
295
 
296
296
  // ../core/lib/get-class-name-factory.ts
297
297
  init_react_import();
@@ -320,29 +320,50 @@ var getClassNameFactory = (rootClass, styles, config = { baseClass: "" }) => (op
320
320
  };
321
321
  var get_class_name_factory_default = getClassNameFactory;
322
322
 
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
323
+ // ../core/components/OutlineList/index.tsx
331
324
  var import_jsx_runtime = require("react/jsx-runtime");
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";
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
+ }) => {
335
335
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
336
- Tag,
336
+ "li",
337
337
  {
338
- className: getClassName({
339
- [size]: true
340
- }),
338
+ className: getClassNameItem({ clickable: !!onClick }),
339
+ onClick,
341
340
  children
342
341
  }
343
342
  );
344
343
  };
345
344
 
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
+
346
367
  // ../../node_modules/lucide-react/dist/esm/lucide-react.js
347
368
  init_react_import();
348
369
 
@@ -430,15 +451,29 @@ var createLucideIcon = (iconName, iconNode) => {
430
451
  return Component;
431
452
  };
432
453
 
433
- // ../../node_modules/lucide-react/dist/esm/icons/chevron-right.js
454
+ // ../../node_modules/lucide-react/dist/esm/icons/heading-1.js
434
455
  init_react_import();
435
- var ChevronRight = createLucideIcon("ChevronRight", [
436
- ["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]
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" }]
437
461
  ]);
438
462
 
439
- // ../core/lib/use-breadcrumbs.ts
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
440
476
  init_react_import();
441
- var import_react10 = require("react");
442
477
 
443
478
  // ../core/store/index.ts
444
479
  init_react_import();
@@ -818,10 +853,10 @@ var insert = (list, index, item) => {
818
853
  // ../core/lib/generate-id.ts
819
854
  init_react_import();
820
855
 
821
- // ../../node_modules/uuid/dist/esm-node/index.js
856
+ // ../core/node_modules/uuid/dist/esm-node/index.js
822
857
  init_react_import();
823
858
 
824
- // ../../node_modules/uuid/dist/esm-node/rng.js
859
+ // ../core/node_modules/uuid/dist/esm-node/rng.js
825
860
  init_react_import();
826
861
  var import_crypto = __toESM(require("crypto"));
827
862
  var rnds8Pool = new Uint8Array(256);
@@ -834,7 +869,7 @@ function rng() {
834
869
  return rnds8Pool.slice(poolPtr, poolPtr += 16);
835
870
  }
836
871
 
837
- // ../../node_modules/uuid/dist/esm-node/stringify.js
872
+ // ../core/node_modules/uuid/dist/esm-node/stringify.js
838
873
  init_react_import();
839
874
  var byteToHex = [];
840
875
  for (let i = 0; i < 256; ++i) {
@@ -844,17 +879,17 @@ function unsafeStringify(arr, offset = 0) {
844
879
  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]];
845
880
  }
846
881
 
847
- // ../../node_modules/uuid/dist/esm-node/v4.js
882
+ // ../core/node_modules/uuid/dist/esm-node/v4.js
848
883
  init_react_import();
849
884
 
850
- // ../../node_modules/uuid/dist/esm-node/native.js
885
+ // ../core/node_modules/uuid/dist/esm-node/native.js
851
886
  init_react_import();
852
887
  var import_crypto2 = __toESM(require("crypto"));
853
888
  var native_default = {
854
889
  randomUUID: import_crypto2.default.randomUUID
855
890
  };
856
891
 
857
- // ../../node_modules/uuid/dist/esm-node/v4.js
892
+ // ../core/node_modules/uuid/dist/esm-node/v4.js
858
893
  function v4(options, buf, offset) {
859
894
  if (native_default.randomUUID && !buf && !options) {
860
895
  return native_default.randomUUID();
@@ -1408,7 +1443,8 @@ init_react_import();
1408
1443
  var defaultViewports = [
1409
1444
  { width: 360, height: "auto", icon: "Smartphone", label: "Small" },
1410
1445
  { width: 768, height: "auto", icon: "Tablet", label: "Medium" },
1411
- { width: 1280, height: "auto", icon: "Monitor", label: "Large" }
1446
+ { width: 1280, height: "auto", icon: "Monitor", label: "Large" },
1447
+ { width: "100%", height: "auto", icon: "FullWidth", label: "Full-width" }
1412
1448
  ];
1413
1449
 
1414
1450
  // ../../node_modules/zustand/esm/vanilla.mjs
@@ -1434,7 +1470,7 @@ var createStoreImpl = (createState) => {
1434
1470
  const initialState = state = createState(setState, getState, api);
1435
1471
  return api;
1436
1472
  };
1437
- var createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
1473
+ var createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);
1438
1474
 
1439
1475
  // ../../node_modules/zustand/esm/react.mjs
1440
1476
  init_react_import();
@@ -1443,8 +1479,8 @@ var identity = (arg) => arg;
1443
1479
  function useStore(api, selector = identity) {
1444
1480
  const slice = import_react4.default.useSyncExternalStore(
1445
1481
  api.subscribe,
1446
- () => selector(api.getState()),
1447
- () => selector(api.getInitialState())
1482
+ import_react4.default.useCallback(() => selector(api.getState()), [api, selector]),
1483
+ import_react4.default.useCallback(() => selector(api.getInitialState()), [api, selector])
1448
1484
  );
1449
1485
  import_react4.default.useDebugValue(slice);
1450
1486
  return slice;
@@ -1455,13 +1491,13 @@ var createImpl = (createState) => {
1455
1491
  Object.assign(useBoundStore, api);
1456
1492
  return useBoundStore;
1457
1493
  };
1458
- var create = (createState) => createState ? createImpl(createState) : createImpl;
1494
+ var create = ((createState) => createState ? createImpl(createState) : createImpl);
1459
1495
 
1460
1496
  // ../../node_modules/zustand/esm/middleware.mjs
1461
1497
  init_react_import();
1462
1498
  var subscribeWithSelectorImpl = (fn) => (set, get, api) => {
1463
1499
  const origSubscribe = api.subscribe;
1464
- api.subscribe = (selector, optListener, options) => {
1500
+ api.subscribe = ((selector, optListener, options) => {
1465
1501
  let listener = selector;
1466
1502
  if (optListener) {
1467
1503
  const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;
@@ -1478,7 +1514,7 @@ var subscribeWithSelectorImpl = (fn) => (set, get, api) => {
1478
1514
  }
1479
1515
  }
1480
1516
  return origSubscribe(listener);
1481
- };
1517
+ });
1482
1518
  const initialState = fn(set, get, api);
1483
1519
  return initialState;
1484
1520
  };
@@ -1695,9 +1731,9 @@ function createIsCircular(areItemsEqual) {
1695
1731
  function getStrictProperties(object) {
1696
1732
  return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));
1697
1733
  }
1698
- var hasOwn = Object.hasOwn || function(object, property) {
1734
+ var hasOwn = Object.hasOwn || (function(object, property) {
1699
1735
  return hasOwnProperty.call(object, property);
1700
- };
1736
+ });
1701
1737
  function sameValueZeroEqual(a, b) {
1702
1738
  return a === b || !a && !b && a !== a && b !== b;
1703
1739
  }
@@ -2087,29 +2123,37 @@ var getChanged = (newItem, oldItem) => {
2087
2123
 
2088
2124
  // ../core/store/slices/permissions.ts
2089
2125
  var createPermissionsSlice = (set, get) => {
2090
- const resolvePermissions = (..._0) => __async(void 0, [..._0], function* (params = {}, force) {
2126
+ const resolvePermissions = (..._0) => __async(null, [..._0], function* (params = {}, force) {
2091
2127
  const { state, permissions, config } = get();
2092
2128
  const { cache: cache2, globalPermissions } = permissions;
2093
- const resolveDataForItem = (item2, force2 = false) => __async(void 0, null, function* () {
2094
- var _a, _b, _c;
2129
+ const resolvePermissionsForItem = (item2, force2 = false) => __async(null, null, function* () {
2130
+ var _a, _b;
2095
2131
  const { config: config2, state: appState, setComponentLoading } = get();
2132
+ const itemCache = cache2[item2.props.id];
2133
+ const nodes = appState.indexes.nodes;
2134
+ const parentId = (_a = nodes[item2.props.id]) == null ? void 0 : _a.parentId;
2135
+ const parentNode = parentId ? nodes[parentId] : null;
2136
+ const parentData = (_b = parentNode == null ? void 0 : parentNode.data) != null ? _b : null;
2096
2137
  const componentConfig = item2.type === "root" ? config2.root : config2.components[item2.type];
2097
2138
  if (!componentConfig) {
2098
2139
  return;
2099
2140
  }
2100
2141
  const initialPermissions = __spreadValues(__spreadValues({}, globalPermissions), componentConfig.permissions);
2101
2142
  if (componentConfig.resolvePermissions) {
2102
- const changed = getChanged(item2, (_a = cache2[item2.props.id]) == null ? void 0 : _a.lastData);
2103
- if (Object.values(changed).some((el) => el === true) || force2) {
2143
+ const changed = getChanged(item2, itemCache == null ? void 0 : itemCache.lastData);
2144
+ const propsChanged = Object.values(changed).some((el) => el === true);
2145
+ const parentChanged = (itemCache == null ? void 0 : itemCache.lastParentId) !== parentId;
2146
+ if (propsChanged || parentChanged || force2) {
2104
2147
  const clearTimeout2 = setComponentLoading(item2.props.id, true, 50);
2105
2148
  const resolvedPermissions = yield componentConfig.resolvePermissions(
2106
2149
  item2,
2107
2150
  {
2108
2151
  changed,
2109
- lastPermissions: ((_b = cache2[item2.props.id]) == null ? void 0 : _b.lastPermissions) || null,
2152
+ lastPermissions: (itemCache == null ? void 0 : itemCache.lastPermissions) || null,
2110
2153
  permissions: initialPermissions,
2111
2154
  appState: makeStatePublic(appState),
2112
- lastData: ((_c = cache2[item2.props.id]) == null ? void 0 : _c.lastData) || null
2155
+ lastData: (itemCache == null ? void 0 : itemCache.lastData) || null,
2156
+ parent: parentData
2113
2157
  }
2114
2158
  );
2115
2159
  const latest = get().permissions;
@@ -2117,6 +2161,7 @@ var createPermissionsSlice = (set, get) => {
2117
2161
  permissions: __spreadProps(__spreadValues({}, latest), {
2118
2162
  cache: __spreadProps(__spreadValues({}, latest.cache), {
2119
2163
  [item2.props.id]: {
2164
+ lastParentId: parentId,
2120
2165
  lastData: item2,
2121
2166
  lastPermissions: resolvedPermissions
2122
2167
  }
@@ -2130,9 +2175,9 @@ var createPermissionsSlice = (set, get) => {
2130
2175
  }
2131
2176
  }
2132
2177
  });
2133
- const resolveDataForRoot = (force2 = false) => {
2178
+ const resolvePermissionsForRoot = (force2 = false) => {
2134
2179
  const { state: appState } = get();
2135
- resolveDataForItem(
2180
+ resolvePermissionsForItem(
2136
2181
  // Shim the root data in by conforming to component data shape
2137
2182
  {
2138
2183
  type: "root",
@@ -2143,16 +2188,16 @@ var createPermissionsSlice = (set, get) => {
2143
2188
  };
2144
2189
  const { item, type, root } = params;
2145
2190
  if (item) {
2146
- yield resolveDataForItem(item, force);
2191
+ yield resolvePermissionsForItem(item, force);
2147
2192
  } else if (type) {
2148
- flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(void 0, null, function* () {
2149
- yield resolveDataForItem(item2, force);
2193
+ flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(null, null, function* () {
2194
+ yield resolvePermissionsForItem(item2, force);
2150
2195
  }));
2151
2196
  } else if (root) {
2152
- resolveDataForRoot(force);
2197
+ resolvePermissionsForRoot(force);
2153
2198
  } else {
2154
- flattenData(state, config).map((item2) => __async(void 0, null, function* () {
2155
- yield resolveDataForItem(item2, force);
2199
+ flattenData(state, config).map((item2) => __async(null, null, function* () {
2200
+ yield resolvePermissionsForItem(item2, force);
2156
2201
  }));
2157
2202
  }
2158
2203
  });
@@ -2206,7 +2251,7 @@ var createFieldsSlice = (_set, _get) => {
2206
2251
  // ../core/lib/resolve-component-data.ts
2207
2252
  init_react_import();
2208
2253
  var cache = { lastChange: {} };
2209
- var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
2254
+ var resolveComponentData = (_0, _1, ..._2) => __async(null, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
2210
2255
  const configForItem = "type" in item && item.type !== "root" ? config.components[item.type] : config.root;
2211
2256
  const resolvedItem = __spreadValues({}, item);
2212
2257
  const shouldRunResolver = (configForItem == null ? void 0 : configForItem.resolveData) && item.props;
@@ -2234,11 +2279,11 @@ var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], f
2234
2279
  let itemWithResolvedChildren = yield mapFields(
2235
2280
  resolvedItem,
2236
2281
  {
2237
- slot: (_02) => __async(void 0, [_02], function* ({ value }) {
2282
+ slot: (_02) => __async(null, [_02], function* ({ value }) {
2238
2283
  const content = value;
2239
2284
  return yield Promise.all(
2240
2285
  content.map(
2241
- (childItem) => __async(void 0, null, function* () {
2286
+ (childItem) => __async(null, null, function* () {
2242
2287
  return (yield resolveComponentData(
2243
2288
  childItem,
2244
2289
  config,
@@ -2304,7 +2349,8 @@ var defaultAppState = {
2304
2349
  options: [],
2305
2350
  controlsVisible: true
2306
2351
  },
2307
- field: { focus: null }
2352
+ field: { focus: null },
2353
+ plugin: { current: null }
2308
2354
  },
2309
2355
  indexes: {
2310
2356
  nodes: {},
@@ -2320,6 +2366,7 @@ var createAppStore = (initialAppStore) => create()(
2320
2366
  subscribeWithSelector((set, get) => {
2321
2367
  var _a, _b;
2322
2368
  return __spreadProps(__spreadValues({
2369
+ instanceId: generateId(),
2323
2370
  state: defaultAppState,
2324
2371
  config: { components: {} },
2325
2372
  componentState: {},
@@ -2428,7 +2475,7 @@ var createAppStore = (initialAppStore) => create()(
2428
2475
  const selectedItem = state.ui.itemSelector ? getItem(state.ui.itemSelector, state) : null;
2429
2476
  return __spreadProps(__spreadValues({}, s), { state, selectedItem });
2430
2477
  }),
2431
- resolveComponentData: (componentData, trigger) => __async(void 0, null, function* () {
2478
+ resolveComponentData: (componentData, trigger) => __async(null, null, function* () {
2432
2479
  const { config, metadata, setComponentLoading, permissions } = get();
2433
2480
  const timeouts = {};
2434
2481
  return yield resolveComponentData(
@@ -2439,7 +2486,7 @@ var createAppStore = (initialAppStore) => create()(
2439
2486
  const id = "id" in item.props ? item.props.id : "root";
2440
2487
  timeouts[id] = setComponentLoading(id, true, 50);
2441
2488
  },
2442
- (item) => __async(void 0, null, function* () {
2489
+ (item) => __async(null, null, function* () {
2443
2490
  const id = "id" in item.props ? item.props.id : "root";
2444
2491
  if ("type" in item) {
2445
2492
  yield permissions.refreshPermissions({ item });
@@ -2451,7 +2498,7 @@ var createAppStore = (initialAppStore) => create()(
2451
2498
  trigger
2452
2499
  );
2453
2500
  }),
2454
- resolveAndCommitData: () => __async(void 0, null, function* () {
2501
+ resolveAndCommitData: () => __async(null, null, function* () {
2455
2502
  const { config, state, dispatch, resolveComponentData: resolveComponentData2 } = get();
2456
2503
  walkAppState(
2457
2504
  state,
@@ -2490,203 +2537,14 @@ var createAppStore = (initialAppStore) => create()(
2490
2537
  })
2491
2538
  );
2492
2539
  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();
2560
2540
 
2561
2541
  // ../core/lib/get-zoom-config.ts
2562
2542
  init_react_import();
2563
2543
 
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
-
2686
2544
  // src/HeadingAnalyzer.tsx
2687
2545
  var import_react_from_json = __toESM(require("react-from-json"));
2688
- var import_jsx_runtime5 = require("react/jsx-runtime");
2689
- var getClassName5 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
2546
+ var import_jsx_runtime2 = require("react/jsx-runtime");
2547
+ var getClassName2 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
2690
2548
  var getClassNameItem2 = get_class_name_factory_default("HeadingAnalyzerItem", HeadingAnalyzer_module_default);
2691
2549
  var ReactFromJSON = import_react_from_json.default.default || import_react_from_json.default;
2692
2550
  var getOutline = ({ frame } = {}) => {
@@ -2741,8 +2599,8 @@ function buildHierarchy(frame) {
2741
2599
  var usePuck = (0, import_puck.createUsePuck)();
2742
2600
  var HeadingAnalyzer = () => {
2743
2601
  const data = usePuck((s) => s.appState.data);
2744
- const [hierarchy, setHierarchy] = (0, import_react11.useState)([]);
2745
- (0, import_react11.useEffect)(() => {
2602
+ const [hierarchy, setHierarchy] = (0, import_react10.useState)([]);
2603
+ (0, import_react10.useEffect)(() => {
2746
2604
  const frame = getFrame();
2747
2605
  let entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
2748
2606
  const createHierarchy = () => {
@@ -2777,11 +2635,11 @@ var HeadingAnalyzer = () => {
2777
2635
  frameObserver.disconnect();
2778
2636
  };
2779
2637
  }, [data]);
2780
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: getClassName5(), children: [
2781
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
2638
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: getClassName2(), children: [
2639
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
2782
2640
  "small",
2783
2641
  {
2784
- className: getClassName5("cssWarning"),
2642
+ className: getClassName2("cssWarning"),
2785
2643
  style: {
2786
2644
  color: "var(--puck-color-red-04)",
2787
2645
  display: "block",
@@ -2790,19 +2648,19 @@ var HeadingAnalyzer = () => {
2790
2648
  children: [
2791
2649
  "Heading analyzer styles not loaded. Please review the",
2792
2650
  " ",
2793
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("a", { href: "https://github.com/measuredco/puck/blob/main/packages/plugin-heading-analyzer/README.md", children: "README" }),
2651
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("a", { href: "https://github.com/measuredco/puck/blob/main/packages/plugin-heading-analyzer/README.md", children: "README" }),
2794
2652
  "."
2795
2653
  ]
2796
2654
  }
2797
2655
  ),
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)(
2656
+ hierarchy.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { children: "No headings." }),
2657
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(OutlineList, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
2800
2658
  ReactFromJSON,
2801
2659
  {
2802
2660
  mapping: {
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)(
2661
+ Root: (props) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: props.children }),
2662
+ OutlineListItem: (props) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(OutlineList.Item, { children: [
2663
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(OutlineList.Clickable, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
2806
2664
  "small",
2807
2665
  {
2808
2666
  className: getClassNameItem2({ missing: props.missing }),
@@ -2820,14 +2678,14 @@ var HeadingAnalyzer = () => {
2820
2678
  }, 2e3);
2821
2679
  }
2822
2680
  },
2823
- children: props.missing ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2824
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("b", { children: [
2681
+ children: props.missing ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
2682
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("b", { children: [
2825
2683
  "H",
2826
2684
  props.rank
2827
2685
  ] }),
2828
2686
  ": Missing"
2829
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2830
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("b", { children: [
2687
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
2688
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("b", { children: [
2831
2689
  "H",
2832
2690
  props.rank
2833
2691
  ] }),
@@ -2836,7 +2694,7 @@ var HeadingAnalyzer = () => {
2836
2694
  ] })
2837
2695
  }
2838
2696
  ) }),
2839
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(OutlineList, { children: props.children })
2697
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(OutlineList, { children: props.children })
2840
2698
  ] })
2841
2699
  },
2842
2700
  entry: {
@@ -2857,12 +2715,10 @@ var HeadingAnalyzer = () => {
2857
2715
  ] });
2858
2716
  };
2859
2717
  var headingAnalyzer = {
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
+ name: "heading-analyzer",
2719
+ label: "Audit",
2720
+ render: HeadingAnalyzer,
2721
+ icon: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Heading1, {})
2866
2722
  };
2867
2723
  var HeadingAnalyzer_default = headingAnalyzer;
2868
2724
  /*! Bundled license information:
@@ -2875,45 +2731,10 @@ classnames/index.js:
2875
2731
  *)
2876
2732
 
2877
2733
  lucide-react/dist/esm/shared/src/utils.js:
2878
- (**
2879
- * @license lucide-react v0.468.0 - ISC
2880
- *
2881
- * This source code is licensed under the ISC license.
2882
- * See the LICENSE file in the root directory of this source tree.
2883
- *)
2884
-
2885
2734
  lucide-react/dist/esm/defaultAttributes.js:
2886
- (**
2887
- * @license lucide-react v0.468.0 - ISC
2888
- *
2889
- * This source code is licensed under the ISC license.
2890
- * See the LICENSE file in the root directory of this source tree.
2891
- *)
2892
-
2893
2735
  lucide-react/dist/esm/Icon.js:
2894
- (**
2895
- * @license lucide-react v0.468.0 - ISC
2896
- *
2897
- * This source code is licensed under the ISC license.
2898
- * See the LICENSE file in the root directory of this source tree.
2899
- *)
2900
-
2901
2736
  lucide-react/dist/esm/createLucideIcon.js:
2902
- (**
2903
- * @license lucide-react v0.468.0 - ISC
2904
- *
2905
- * This source code is licensed under the ISC license.
2906
- * See the LICENSE file in the root directory of this source tree.
2907
- *)
2908
-
2909
- lucide-react/dist/esm/icons/chevron-right.js:
2910
- (**
2911
- * @license lucide-react v0.468.0 - ISC
2912
- *
2913
- * This source code is licensed under the ISC license.
2914
- * See the LICENSE file in the root directory of this source tree.
2915
- *)
2916
-
2737
+ lucide-react/dist/esm/icons/heading-1.js:
2917
2738
  lucide-react/dist/esm/lucide-react.js:
2918
2739
  (**
2919
2740
  * @license lucide-react v0.468.0 - ISC