@measured/puck-plugin-heading-analyzer 0.21.0-canary.5c2364c5 → 0.21.0-canary.66beb6e1

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.mjs CHANGED
@@ -269,17 +269,17 @@ import { useEffect as useEffect5, useState } from "react";
269
269
 
270
270
  // css-module:/home/runner/work/puck/puck/packages/plugin-heading-analyzer/src/HeadingAnalyzer.module.css#css-module
271
271
  init_react_import();
272
- var HeadingAnalyzer_module_default = { "HeadingAnalyzer": "_HeadingAnalyzer_116v6_1", "HeadingAnalyzer-cssWarning": "_HeadingAnalyzer-cssWarning_116v6_5", "HeadingAnalyzerItem": "_HeadingAnalyzerItem_116v6_9", "HeadingAnalyzerItem--missing": "_HeadingAnalyzerItem--missing_116v6_13" };
272
+ var HeadingAnalyzer_module_default = { "HeadingAnalyzer": "_HeadingAnalyzer_yg0s7_1", "HeadingAnalyzer-cssWarning": "_HeadingAnalyzer-cssWarning_yg0s7_6", "HeadingAnalyzerItem": "_HeadingAnalyzerItem_yg0s7_10", "HeadingAnalyzerItem--missing": "_HeadingAnalyzerItem--missing_yg0s7_14" };
273
273
 
274
274
  // src/HeadingAnalyzer.tsx
275
275
  import { createUsePuck } from "@measured/puck";
276
276
 
277
- // ../core/components/SidebarSection/index.tsx
277
+ // ../core/components/OutlineList/index.tsx
278
278
  init_react_import();
279
279
 
280
- // css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css#css-module
280
+ // css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css#css-module
281
281
  init_react_import();
282
- 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" };
282
+ var styles_module_default = { "OutlineList": "_OutlineList_w4lzv_1", "OutlineListItem": "_OutlineListItem_w4lzv_25", "OutlineListItem--clickable": "_OutlineListItem--clickable_w4lzv_45" };
283
283
 
284
284
  // ../core/lib/get-class-name-factory.ts
285
285
  init_react_import();
@@ -308,29 +308,50 @@ var getClassNameFactory = (rootClass, styles, config = { baseClass: "" }) => (op
308
308
  };
309
309
  var get_class_name_factory_default = getClassNameFactory;
310
310
 
311
- // ../core/components/Heading/index.tsx
312
- init_react_import();
313
-
314
- // css-module:/home/runner/work/puck/puck/packages/core/components/Heading/styles.module.css#css-module
315
- init_react_import();
316
- 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" };
317
-
318
- // ../core/components/Heading/index.tsx
311
+ // ../core/components/OutlineList/index.tsx
319
312
  import { jsx } from "react/jsx-runtime";
320
- var getClassName = get_class_name_factory_default("Heading", styles_module_default2);
321
- var Heading = ({ children, rank, size = "m" }) => {
322
- const Tag = rank ? `h${rank}` : "span";
313
+ var getClassName = get_class_name_factory_default("OutlineList", styles_module_default);
314
+ var getClassNameItem = get_class_name_factory_default("OutlineListItem", styles_module_default);
315
+ var OutlineList = ({ children }) => {
316
+ return /* @__PURE__ */ jsx("ul", { className: getClassName(), children });
317
+ };
318
+ OutlineList.Clickable = ({ children }) => /* @__PURE__ */ jsx("div", { className: getClassNameItem({ clickable: true }), children });
319
+ OutlineList.Item = ({
320
+ children,
321
+ onClick
322
+ }) => {
323
323
  return /* @__PURE__ */ jsx(
324
- Tag,
324
+ "li",
325
325
  {
326
- className: getClassName({
327
- [size]: true
328
- }),
326
+ className: getClassNameItem({ clickable: !!onClick }),
327
+ onClick,
329
328
  children
330
329
  }
331
330
  );
332
331
  };
333
332
 
333
+ // ../core/lib/scroll-into-view.ts
334
+ init_react_import();
335
+ var scrollIntoView = (el) => {
336
+ const oldStyle = __spreadValues({}, el.style);
337
+ el.style.scrollMargin = "256px";
338
+ if (el) {
339
+ el == null ? void 0 : el.scrollIntoView({ behavior: "smooth" });
340
+ el.style.scrollMargin = oldStyle.scrollMargin || "";
341
+ }
342
+ };
343
+
344
+ // ../core/lib/get-frame.ts
345
+ init_react_import();
346
+ var getFrame = () => {
347
+ if (typeof window === "undefined") return;
348
+ let frameEl = document.querySelector("#preview-frame");
349
+ if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
350
+ return frameEl.contentDocument || document;
351
+ }
352
+ return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
353
+ };
354
+
334
355
  // ../../node_modules/lucide-react/dist/esm/lucide-react.js
335
356
  init_react_import();
336
357
 
@@ -418,15 +439,29 @@ var createLucideIcon = (iconName, iconNode) => {
418
439
  return Component;
419
440
  };
420
441
 
421
- // ../../node_modules/lucide-react/dist/esm/icons/chevron-right.js
442
+ // ../../node_modules/lucide-react/dist/esm/icons/heading-1.js
422
443
  init_react_import();
423
- var ChevronRight = createLucideIcon("ChevronRight", [
424
- ["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]
444
+ var Heading1 = createLucideIcon("Heading1", [
445
+ ["path", { d: "M4 12h8", key: "17cfdx" }],
446
+ ["path", { d: "M4 18V6", key: "1rz3zl" }],
447
+ ["path", { d: "M12 18V6", key: "zqpxq5" }],
448
+ ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
425
449
  ]);
426
450
 
427
- // ../core/lib/use-breadcrumbs.ts
451
+ // ../core/lib/index.ts
452
+ init_react_import();
453
+
454
+ // ../core/lib/filter.ts
455
+ init_react_import();
456
+
457
+ // ../core/lib/data/reorder.ts
458
+ init_react_import();
459
+
460
+ // ../core/lib/data/replace.ts
461
+ init_react_import();
462
+
463
+ // ../core/lib/use-reset-auto-zoom.ts
428
464
  init_react_import();
429
- import { useMemo } from "react";
430
465
 
431
466
  // ../core/store/index.ts
432
467
  init_react_import();
@@ -609,12 +644,12 @@ var walkObject = ({
609
644
  }
610
645
  return flatten(newProps);
611
646
  };
612
- function mapFields(item, mappers, config, recurseSlots = false) {
647
+ function mapFields(item, mappers, config, recurseSlots = false, shouldDefaultSlots = true) {
613
648
  var _a, _b, _c, _d, _e;
614
649
  const itemType = "type" in item ? item.type : "root";
615
650
  const componentConfig = itemType === "root" ? config.root : (_a = config.components) == null ? void 0 : _a[itemType];
616
651
  const newProps = walkObject({
617
- value: defaultSlots((_b = item.props) != null ? _b : {}, (_c = componentConfig == null ? void 0 : componentConfig.fields) != null ? _c : {}),
652
+ value: shouldDefaultSlots ? defaultSlots((_b = item.props) != null ? _b : {}, (_c = componentConfig == null ? void 0 : componentConfig.fields) != null ? _c : {}) : item.props,
618
653
  fields: (_d = componentConfig == null ? void 0 : componentConfig.fields) != null ? _d : {},
619
654
  mappers,
620
655
  id: item.props ? (_e = item.props.id) != null ? _e : "root" : "root",
@@ -644,9 +679,28 @@ var stripSlots = (data, config) => {
644
679
 
645
680
  // ../core/lib/data/flatten-node.ts
646
681
  var { flatten: flatten2, unflatten } = import_flat.default;
682
+ function isEmptyArrayOrObject(val) {
683
+ if (Array.isArray(val)) {
684
+ return val.length === 0;
685
+ }
686
+ if (val != null && Object.prototype.toString.call(val) === "[object Object]") {
687
+ return Object.keys(val).length === 0;
688
+ }
689
+ return false;
690
+ }
691
+ function stripEmptyObjects(props) {
692
+ const result = {};
693
+ for (const key in props) {
694
+ if (!Object.prototype.hasOwnProperty.call(props, key)) continue;
695
+ const val = props[key];
696
+ if (isEmptyArrayOrObject(val)) continue;
697
+ result[key] = val;
698
+ }
699
+ return result;
700
+ }
647
701
  var flattenNode = (node, config) => {
648
702
  return __spreadProps(__spreadValues({}, node), {
649
- props: flatten2(stripSlots(node, config).props)
703
+ props: stripEmptyObjects(flatten2(stripSlots(node, config).props))
650
704
  });
651
705
  };
652
706
 
@@ -994,7 +1048,9 @@ var replaceAction = (state, action, appStore) => {
994
1048
  });
995
1049
  });
996
1050
  });
997
- const stateWithDeepSlotsRemoved = __spreadValues({}, state);
1051
+ const stateWithDeepSlotsRemoved = __spreadProps(__spreadValues({}, state), {
1052
+ ui: __spreadValues(__spreadValues({}, state.ui), action.ui)
1053
+ });
998
1054
  Object.keys(state.indexes.zones).forEach((zoneCompound) => {
999
1055
  const id = zoneCompound.split(":")[0];
1000
1056
  if (id === originalId) {
@@ -1396,7 +1452,8 @@ init_react_import();
1396
1452
  var defaultViewports = [
1397
1453
  { width: 360, height: "auto", icon: "Smartphone", label: "Small" },
1398
1454
  { width: 768, height: "auto", icon: "Tablet", label: "Medium" },
1399
- { width: 1280, height: "auto", icon: "Monitor", label: "Large" }
1455
+ { width: 1280, height: "auto", icon: "Monitor", label: "Large" },
1456
+ { width: "100%", height: "auto", icon: "FullWidth", label: "Full-width" }
1400
1457
  ];
1401
1458
 
1402
1459
  // ../../node_modules/zustand/esm/vanilla.mjs
@@ -1506,9 +1563,9 @@ function debounce(func, timeout = 300) {
1506
1563
  var tidyState = (state) => {
1507
1564
  return __spreadProps(__spreadValues({}, state), {
1508
1565
  ui: __spreadProps(__spreadValues({}, state.ui), {
1509
- field: {
1566
+ field: __spreadProps(__spreadValues({}, state.ui.field), {
1510
1567
  focus: null
1511
- }
1568
+ })
1512
1569
  })
1513
1570
  });
1514
1571
  };
@@ -2078,26 +2135,34 @@ var createPermissionsSlice = (set, get) => {
2078
2135
  const resolvePermissions = (..._0) => __async(null, [..._0], function* (params = {}, force) {
2079
2136
  const { state, permissions, config } = get();
2080
2137
  const { cache: cache2, globalPermissions } = permissions;
2081
- const resolveDataForItem = (item2, force2 = false) => __async(null, null, function* () {
2082
- var _a, _b, _c;
2138
+ const resolvePermissionsForItem = (item2, force2 = false) => __async(null, null, function* () {
2139
+ var _a, _b;
2083
2140
  const { config: config2, state: appState, setComponentLoading } = get();
2141
+ const itemCache = cache2[item2.props.id];
2142
+ const nodes = appState.indexes.nodes;
2143
+ const parentId = (_a = nodes[item2.props.id]) == null ? void 0 : _a.parentId;
2144
+ const parentNode = parentId ? nodes[parentId] : null;
2145
+ const parentData = (_b = parentNode == null ? void 0 : parentNode.data) != null ? _b : null;
2084
2146
  const componentConfig = item2.type === "root" ? config2.root : config2.components[item2.type];
2085
2147
  if (!componentConfig) {
2086
2148
  return;
2087
2149
  }
2088
2150
  const initialPermissions = __spreadValues(__spreadValues({}, globalPermissions), componentConfig.permissions);
2089
2151
  if (componentConfig.resolvePermissions) {
2090
- const changed = getChanged(item2, (_a = cache2[item2.props.id]) == null ? void 0 : _a.lastData);
2091
- if (Object.values(changed).some((el) => el === true) || force2) {
2152
+ const changed = getChanged(item2, itemCache == null ? void 0 : itemCache.lastData);
2153
+ const propsChanged = Object.values(changed).some((el) => el === true);
2154
+ const parentChanged = (itemCache == null ? void 0 : itemCache.lastParentId) !== parentId;
2155
+ if (propsChanged || parentChanged || force2) {
2092
2156
  const clearTimeout2 = setComponentLoading(item2.props.id, true, 50);
2093
2157
  const resolvedPermissions = yield componentConfig.resolvePermissions(
2094
2158
  item2,
2095
2159
  {
2096
2160
  changed,
2097
- lastPermissions: ((_b = cache2[item2.props.id]) == null ? void 0 : _b.lastPermissions) || null,
2161
+ lastPermissions: (itemCache == null ? void 0 : itemCache.lastPermissions) || null,
2098
2162
  permissions: initialPermissions,
2099
2163
  appState: makeStatePublic(appState),
2100
- lastData: ((_c = cache2[item2.props.id]) == null ? void 0 : _c.lastData) || null
2164
+ lastData: (itemCache == null ? void 0 : itemCache.lastData) || null,
2165
+ parent: parentData
2101
2166
  }
2102
2167
  );
2103
2168
  const latest = get().permissions;
@@ -2105,6 +2170,7 @@ var createPermissionsSlice = (set, get) => {
2105
2170
  permissions: __spreadProps(__spreadValues({}, latest), {
2106
2171
  cache: __spreadProps(__spreadValues({}, latest.cache), {
2107
2172
  [item2.props.id]: {
2173
+ lastParentId: parentId,
2108
2174
  lastData: item2,
2109
2175
  lastPermissions: resolvedPermissions
2110
2176
  }
@@ -2118,9 +2184,9 @@ var createPermissionsSlice = (set, get) => {
2118
2184
  }
2119
2185
  }
2120
2186
  });
2121
- const resolveDataForRoot = (force2 = false) => {
2187
+ const resolvePermissionsForRoot = (force2 = false) => {
2122
2188
  const { state: appState } = get();
2123
- resolveDataForItem(
2189
+ resolvePermissionsForItem(
2124
2190
  // Shim the root data in by conforming to component data shape
2125
2191
  {
2126
2192
  type: "root",
@@ -2131,16 +2197,16 @@ var createPermissionsSlice = (set, get) => {
2131
2197
  };
2132
2198
  const { item, type, root } = params;
2133
2199
  if (item) {
2134
- yield resolveDataForItem(item, force);
2200
+ yield resolvePermissionsForItem(item, force);
2135
2201
  } else if (type) {
2136
2202
  flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(null, null, function* () {
2137
- yield resolveDataForItem(item2, force);
2203
+ yield resolvePermissionsForItem(item2, force);
2138
2204
  }));
2139
2205
  } else if (root) {
2140
- resolveDataForRoot(force);
2206
+ resolvePermissionsForRoot(force);
2141
2207
  } else {
2142
2208
  flattenData(state, config).map((item2) => __async(null, null, function* () {
2143
- yield resolveDataForItem(item2, force);
2209
+ yield resolvePermissionsForItem(item2, force);
2144
2210
  }));
2145
2211
  }
2146
2212
  });
@@ -2292,7 +2358,8 @@ var defaultAppState = {
2292
2358
  options: [],
2293
2359
  controlsVisible: true
2294
2360
  },
2295
- field: { focus: null }
2361
+ field: { focus: null },
2362
+ plugin: { current: null }
2296
2363
  },
2297
2364
  indexes: {
2298
2365
  nodes: {},
@@ -2308,6 +2375,7 @@ var createAppStore = (initialAppStore) => create()(
2308
2375
  subscribeWithSelector((set, get) => {
2309
2376
  var _a, _b;
2310
2377
  return __spreadProps(__spreadValues({
2378
+ instanceId: generateId(),
2311
2379
  state: defaultAppState,
2312
2380
  config: { components: {} },
2313
2381
  componentState: {},
@@ -2328,6 +2396,11 @@ var createAppStore = (initialAppStore) => create()(
2328
2396
  history: createHistorySlice(set, get),
2329
2397
  nodes: createNodesSlice(set, get),
2330
2398
  permissions: createPermissionsSlice(set, get),
2399
+ getCurrentData: () => {
2400
+ var _a2;
2401
+ const s = get();
2402
+ return (_a2 = s.selectedItem) != null ? _a2 : s.state.data.root;
2403
+ },
2331
2404
  getComponentConfig: (type) => {
2332
2405
  var _a2;
2333
2406
  const { config, selectedItem } = get();
@@ -2478,203 +2551,14 @@ var createAppStore = (initialAppStore) => create()(
2478
2551
  })
2479
2552
  );
2480
2553
  var appStoreContext = createContext(createAppStore());
2481
- function useAppStore(selector) {
2482
- const context = useContext(appStoreContext);
2483
- return useStore(context, selector);
2484
- }
2485
- function useAppStoreApi() {
2486
- return useContext(appStoreContext);
2487
- }
2488
-
2489
- // ../core/lib/use-breadcrumbs.ts
2490
- var useBreadcrumbs = (renderCount) => {
2491
- const selectedId = useAppStore((s) => {
2492
- var _a;
2493
- return (_a = s.selectedItem) == null ? void 0 : _a.props.id;
2494
- });
2495
- const config = useAppStore((s) => s.config);
2496
- const path = useAppStore((s) => {
2497
- var _a;
2498
- return (_a = s.state.indexes.nodes[selectedId]) == null ? void 0 : _a.path;
2499
- });
2500
- const appStore = useAppStoreApi();
2501
- return useMemo(() => {
2502
- const breadcrumbs = (path == null ? void 0 : path.map((zoneCompound) => {
2503
- var _a, _b, _c;
2504
- const [componentId] = zoneCompound.split(":");
2505
- if (componentId === "root") {
2506
- return {
2507
- label: "Page",
2508
- selector: null
2509
- };
2510
- }
2511
- const node = appStore.getState().state.indexes.nodes[componentId];
2512
- const parentId = node.path[node.path.length - 1];
2513
- const contentIds = ((_a = appStore.getState().state.indexes.zones[parentId]) == null ? void 0 : _a.contentIds) || [];
2514
- const index = contentIds.indexOf(componentId);
2515
- const label = node ? (_c = (_b = config.components[node.data.type]) == null ? void 0 : _b.label) != null ? _c : node.data.type : "Component";
2516
- return {
2517
- label,
2518
- selector: node ? {
2519
- index,
2520
- zone: node.path[node.path.length - 1]
2521
- } : null
2522
- };
2523
- })) || [];
2524
- if (renderCount) {
2525
- return breadcrumbs.slice(breadcrumbs.length - renderCount);
2526
- }
2527
- return breadcrumbs;
2528
- }, [path, renderCount]);
2529
- };
2530
-
2531
- // ../core/components/Loader/index.tsx
2532
- init_react_import();
2533
-
2534
- // ../core/lib/index.ts
2535
- init_react_import();
2536
-
2537
- // ../core/lib/filter.ts
2538
- init_react_import();
2539
-
2540
- // ../core/lib/data/reorder.ts
2541
- init_react_import();
2542
-
2543
- // ../core/lib/data/replace.ts
2544
- init_react_import();
2545
-
2546
- // ../core/lib/use-reset-auto-zoom.ts
2547
- init_react_import();
2548
2554
 
2549
2555
  // ../core/lib/get-zoom-config.ts
2550
2556
  init_react_import();
2551
2557
 
2552
- // css-module:/home/runner/work/puck/puck/packages/core/components/Loader/styles.module.css#css-module
2553
- init_react_import();
2554
- var styles_module_default3 = { "Loader": "_Loader_nacdm_13", "loader-animation": "_loader-animation_nacdm_1" };
2555
-
2556
- // ../core/components/Loader/index.tsx
2557
- import { jsx as jsx2 } from "react/jsx-runtime";
2558
- var getClassName2 = get_class_name_factory_default("Loader", styles_module_default3);
2559
- var Loader = (_a) => {
2560
- var _b = _a, {
2561
- color,
2562
- size = 16
2563
- } = _b, props = __objRest(_b, [
2564
- "color",
2565
- "size"
2566
- ]);
2567
- return /* @__PURE__ */ jsx2(
2568
- "span",
2569
- __spreadValues({
2570
- className: getClassName2(),
2571
- style: {
2572
- width: size,
2573
- height: size,
2574
- color
2575
- },
2576
- "aria-label": "loading"
2577
- }, props)
2578
- );
2579
- };
2580
-
2581
- // ../core/components/SidebarSection/index.tsx
2582
- import { jsx as jsx3, jsxs } from "react/jsx-runtime";
2583
- var getClassName3 = get_class_name_factory_default("SidebarSection", styles_module_default);
2584
- var SidebarSection = ({
2585
- children,
2586
- title,
2587
- background,
2588
- showBreadcrumbs,
2589
- noBorderTop,
2590
- noPadding,
2591
- isLoading
2592
- }) => {
2593
- const setUi = useAppStore((s) => s.setUi);
2594
- const breadcrumbs = useBreadcrumbs(1);
2595
- return /* @__PURE__ */ jsxs(
2596
- "div",
2597
- {
2598
- className: getClassName3({ noBorderTop, noPadding }),
2599
- style: { background },
2600
- children: [
2601
- /* @__PURE__ */ jsx3("div", { className: getClassName3("title"), children: /* @__PURE__ */ jsxs("div", { className: getClassName3("breadcrumbs"), children: [
2602
- showBreadcrumbs ? breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ jsxs("div", { className: getClassName3("breadcrumb"), children: [
2603
- /* @__PURE__ */ jsx3(
2604
- "button",
2605
- {
2606
- type: "button",
2607
- className: getClassName3("breadcrumbLabel"),
2608
- onClick: () => setUi({ itemSelector: breadcrumb.selector }),
2609
- children: breadcrumb.label
2610
- }
2611
- ),
2612
- /* @__PURE__ */ jsx3(ChevronRight, { size: 16 })
2613
- ] }, i)) : null,
2614
- /* @__PURE__ */ jsx3("div", { className: getClassName3("heading"), children: /* @__PURE__ */ jsx3(Heading, { rank: "2", size: "xs", children: title }) })
2615
- ] }) }),
2616
- /* @__PURE__ */ jsx3("div", { className: getClassName3("content"), children }),
2617
- isLoading && /* @__PURE__ */ jsx3("div", { className: getClassName3("loadingOverlay"), children: /* @__PURE__ */ jsx3(Loader, { size: 32 }) })
2618
- ]
2619
- }
2620
- );
2621
- };
2622
-
2623
- // ../core/components/OutlineList/index.tsx
2624
- init_react_import();
2625
-
2626
- // css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css#css-module
2627
- init_react_import();
2628
- var styles_module_default4 = { "OutlineList": "_OutlineList_w4lzv_1", "OutlineListItem": "_OutlineListItem_w4lzv_25", "OutlineListItem--clickable": "_OutlineListItem--clickable_w4lzv_45" };
2629
-
2630
- // ../core/components/OutlineList/index.tsx
2631
- import { jsx as jsx4 } from "react/jsx-runtime";
2632
- var getClassName4 = get_class_name_factory_default("OutlineList", styles_module_default4);
2633
- var getClassNameItem = get_class_name_factory_default("OutlineListItem", styles_module_default4);
2634
- var OutlineList = ({ children }) => {
2635
- return /* @__PURE__ */ jsx4("ul", { className: getClassName4(), children });
2636
- };
2637
- OutlineList.Clickable = ({ children }) => /* @__PURE__ */ jsx4("div", { className: getClassNameItem({ clickable: true }), children });
2638
- OutlineList.Item = ({
2639
- children,
2640
- onClick
2641
- }) => {
2642
- return /* @__PURE__ */ jsx4(
2643
- "li",
2644
- {
2645
- className: getClassNameItem({ clickable: !!onClick }),
2646
- onClick,
2647
- children
2648
- }
2649
- );
2650
- };
2651
-
2652
- // ../core/lib/scroll-into-view.ts
2653
- init_react_import();
2654
- var scrollIntoView = (el) => {
2655
- const oldStyle = __spreadValues({}, el.style);
2656
- el.style.scrollMargin = "256px";
2657
- if (el) {
2658
- el == null ? void 0 : el.scrollIntoView({ behavior: "smooth" });
2659
- el.style.scrollMargin = oldStyle.scrollMargin || "";
2660
- }
2661
- };
2662
-
2663
- // ../core/lib/get-frame.ts
2664
- init_react_import();
2665
- var getFrame = () => {
2666
- if (typeof window === "undefined") return;
2667
- let frameEl = document.querySelector("#preview-frame");
2668
- if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
2669
- return frameEl.contentDocument || document;
2670
- }
2671
- return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
2672
- };
2673
-
2674
2558
  // src/HeadingAnalyzer.tsx
2675
2559
  import ReactFromJSONModule from "react-from-json";
2676
- import { Fragment, jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
2677
- var getClassName5 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
2560
+ import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
2561
+ var getClassName2 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
2678
2562
  var getClassNameItem2 = get_class_name_factory_default("HeadingAnalyzerItem", HeadingAnalyzer_module_default);
2679
2563
  var ReactFromJSON = ReactFromJSONModule.default || ReactFromJSONModule;
2680
2564
  var getOutline = ({ frame } = {}) => {
@@ -2765,11 +2649,11 @@ var HeadingAnalyzer = () => {
2765
2649
  frameObserver.disconnect();
2766
2650
  };
2767
2651
  }, [data]);
2768
- return /* @__PURE__ */ jsxs2("div", { className: getClassName5(), children: [
2769
- /* @__PURE__ */ jsxs2(
2652
+ return /* @__PURE__ */ jsxs("div", { className: getClassName2(), children: [
2653
+ /* @__PURE__ */ jsxs(
2770
2654
  "small",
2771
2655
  {
2772
- className: getClassName5("cssWarning"),
2656
+ className: getClassName2("cssWarning"),
2773
2657
  style: {
2774
2658
  color: "var(--puck-color-red-04)",
2775
2659
  display: "block",
@@ -2778,19 +2662,19 @@ var HeadingAnalyzer = () => {
2778
2662
  children: [
2779
2663
  "Heading analyzer styles not loaded. Please review the",
2780
2664
  " ",
2781
- /* @__PURE__ */ jsx5("a", { href: "https://github.com/measuredco/puck/blob/main/packages/plugin-heading-analyzer/README.md", children: "README" }),
2665
+ /* @__PURE__ */ jsx2("a", { href: "https://github.com/measuredco/puck/blob/main/packages/plugin-heading-analyzer/README.md", children: "README" }),
2782
2666
  "."
2783
2667
  ]
2784
2668
  }
2785
2669
  ),
2786
- hierarchy.length === 0 && /* @__PURE__ */ jsx5("div", { children: "No headings." }),
2787
- /* @__PURE__ */ jsx5(OutlineList, { children: /* @__PURE__ */ jsx5(
2670
+ hierarchy.length === 0 && /* @__PURE__ */ jsx2("div", { children: "No headings." }),
2671
+ /* @__PURE__ */ jsx2(OutlineList, { children: /* @__PURE__ */ jsx2(
2788
2672
  ReactFromJSON,
2789
2673
  {
2790
2674
  mapping: {
2791
- Root: (props) => /* @__PURE__ */ jsx5(Fragment, { children: props.children }),
2792
- OutlineListItem: (props) => /* @__PURE__ */ jsxs2(OutlineList.Item, { children: [
2793
- /* @__PURE__ */ jsx5(OutlineList.Clickable, { children: /* @__PURE__ */ jsx5(
2675
+ Root: (props) => /* @__PURE__ */ jsx2(Fragment, { children: props.children }),
2676
+ OutlineListItem: (props) => /* @__PURE__ */ jsxs(OutlineList.Item, { children: [
2677
+ /* @__PURE__ */ jsx2(OutlineList.Clickable, { children: /* @__PURE__ */ jsx2(
2794
2678
  "small",
2795
2679
  {
2796
2680
  className: getClassNameItem2({ missing: props.missing }),
@@ -2808,14 +2692,14 @@ var HeadingAnalyzer = () => {
2808
2692
  }, 2e3);
2809
2693
  }
2810
2694
  },
2811
- children: props.missing ? /* @__PURE__ */ jsxs2(Fragment, { children: [
2812
- /* @__PURE__ */ jsxs2("b", { children: [
2695
+ children: props.missing ? /* @__PURE__ */ jsxs(Fragment, { children: [
2696
+ /* @__PURE__ */ jsxs("b", { children: [
2813
2697
  "H",
2814
2698
  props.rank
2815
2699
  ] }),
2816
2700
  ": Missing"
2817
- ] }) : /* @__PURE__ */ jsxs2(Fragment, { children: [
2818
- /* @__PURE__ */ jsxs2("b", { children: [
2701
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
2702
+ /* @__PURE__ */ jsxs("b", { children: [
2819
2703
  "H",
2820
2704
  props.rank
2821
2705
  ] }),
@@ -2824,7 +2708,7 @@ var HeadingAnalyzer = () => {
2824
2708
  ] })
2825
2709
  }
2826
2710
  ) }),
2827
- /* @__PURE__ */ jsx5(OutlineList, { children: props.children })
2711
+ /* @__PURE__ */ jsx2(OutlineList, { children: props.children })
2828
2712
  ] })
2829
2713
  },
2830
2714
  entry: {
@@ -2845,12 +2729,10 @@ var HeadingAnalyzer = () => {
2845
2729
  ] });
2846
2730
  };
2847
2731
  var headingAnalyzer = {
2848
- overrides: {
2849
- fields: ({ children, itemSelector }) => /* @__PURE__ */ jsxs2(Fragment, { children: [
2850
- children,
2851
- /* @__PURE__ */ jsx5("div", { style: { display: itemSelector ? "none" : "block" }, children: /* @__PURE__ */ jsx5(SidebarSection, { title: "Heading Outline", children: /* @__PURE__ */ jsx5(HeadingAnalyzer, {}) }) })
2852
- ] })
2853
- }
2732
+ name: "heading-analyzer",
2733
+ label: "Audit",
2734
+ render: HeadingAnalyzer,
2735
+ icon: /* @__PURE__ */ jsx2(Heading1, {})
2854
2736
  };
2855
2737
  var HeadingAnalyzer_default = headingAnalyzer;
2856
2738
  export {
@@ -2869,7 +2751,7 @@ lucide-react/dist/esm/shared/src/utils.js:
2869
2751
  lucide-react/dist/esm/defaultAttributes.js:
2870
2752
  lucide-react/dist/esm/Icon.js:
2871
2753
  lucide-react/dist/esm/createLucideIcon.js:
2872
- lucide-react/dist/esm/icons/chevron-right.js:
2754
+ lucide-react/dist/esm/icons/heading-1.js:
2873
2755
  lucide-react/dist/esm/lucide-react.js:
2874
2756
  (**
2875
2757
  * @license lucide-react v0.468.0 - ISC
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measured/puck-plugin-heading-analyzer",
3
- "version": "0.21.0-canary.5c2364c5",
3
+ "version": "0.21.0-canary.66beb6e1",
4
4
  "author": "Chris Villa <chris@puckeditor.com>",
5
5
  "repository": "measuredco/puck",
6
6
  "bugs": "https://github.com/measuredco/puck/issues",
@@ -25,7 +25,7 @@
25
25
  "dist"
26
26
  ],
27
27
  "devDependencies": {
28
- "@measured/puck": "^0.21.0-canary.5c2364c5",
28
+ "@measured/puck": "^0.21.0-canary.66beb6e1",
29
29
  "@types/minimatch": "3.0.5",
30
30
  "@types/react": "^19.0.1",
31
31
  "@types/react-dom": "^19.0.2",