@measured/puck-plugin-heading-analyzer 0.9.1-canary.f4e8d4a → 0.10.0-canary.18b3473
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 +177 -25
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
var __create = Object.create;
|
3
3
|
var __defProp = Object.defineProperty;
|
4
|
+
var __defProps = Object.defineProperties;
|
4
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
5
7
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
8
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
7
9
|
var __getProtoOf = Object.getPrototypeOf;
|
@@ -19,6 +21,7 @@ var __spreadValues = (a, b) => {
|
|
19
21
|
}
|
20
22
|
return a;
|
21
23
|
};
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
22
25
|
var __esm = (fn, res) => function __init() {
|
23
26
|
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
24
27
|
};
|
@@ -292,7 +295,7 @@ var require_react_is_development = __commonJS({
|
|
292
295
|
var ContextProvider = REACT_PROVIDER_TYPE;
|
293
296
|
var Element = REACT_ELEMENT_TYPE;
|
294
297
|
var ForwardRef = REACT_FORWARD_REF_TYPE;
|
295
|
-
var
|
298
|
+
var Fragment3 = REACT_FRAGMENT_TYPE;
|
296
299
|
var Lazy = REACT_LAZY_TYPE;
|
297
300
|
var Memo = REACT_MEMO_TYPE;
|
298
301
|
var Portal = REACT_PORTAL_TYPE;
|
@@ -351,7 +354,7 @@ var require_react_is_development = __commonJS({
|
|
351
354
|
exports.ContextProvider = ContextProvider;
|
352
355
|
exports.Element = Element;
|
353
356
|
exports.ForwardRef = ForwardRef;
|
354
|
-
exports.Fragment =
|
357
|
+
exports.Fragment = Fragment3;
|
355
358
|
exports.Lazy = Lazy;
|
356
359
|
exports.Memo = Memo;
|
357
360
|
exports.Portal = Portal;
|
@@ -1074,7 +1077,7 @@ init_react_import();
|
|
1074
1077
|
|
1075
1078
|
// src/HeadingAnalyzer.tsx
|
1076
1079
|
init_react_import();
|
1077
|
-
var
|
1080
|
+
var import_react6 = require("react");
|
1078
1081
|
|
1079
1082
|
// ../core/components/SidebarSection/index.tsx
|
1080
1083
|
init_react_import();
|
@@ -1211,24 +1214,172 @@ ChevronRight.propTypes = {
|
|
1211
1214
|
ChevronRight.displayName = "ChevronRight";
|
1212
1215
|
var chevron_right_default = ChevronRight;
|
1213
1216
|
|
1217
|
+
// ../core/lib/use-breadcrumbs.ts
|
1218
|
+
init_react_import();
|
1219
|
+
var import_react5 = require("react");
|
1220
|
+
|
1221
|
+
// ../core/components/DropZone/context.tsx
|
1222
|
+
init_react_import();
|
1223
|
+
var import_react3 = require("react");
|
1224
|
+
|
1225
|
+
// ../core/lib/get-item.ts
|
1226
|
+
init_react_import();
|
1227
|
+
|
1228
|
+
// ../core/lib/root-droppable-id.ts
|
1229
|
+
init_react_import();
|
1230
|
+
var rootDroppableId = "default-zone";
|
1231
|
+
|
1232
|
+
// ../core/lib/setup-zone.ts
|
1233
|
+
init_react_import();
|
1234
|
+
var setupZone = (data, zoneKey) => {
|
1235
|
+
if (zoneKey === rootDroppableId) {
|
1236
|
+
return data;
|
1237
|
+
}
|
1238
|
+
const newData = __spreadValues({}, data);
|
1239
|
+
newData.zones = data.zones || {};
|
1240
|
+
newData.zones[zoneKey] = newData.zones[zoneKey] || [];
|
1241
|
+
return newData;
|
1242
|
+
};
|
1243
|
+
|
1244
|
+
// ../core/lib/get-item.ts
|
1245
|
+
var getItem = (selector, data) => {
|
1246
|
+
if (!selector.zone || selector.zone === rootDroppableId) {
|
1247
|
+
return data.content[selector.index];
|
1248
|
+
}
|
1249
|
+
return setupZone(data, selector.zone).zones[selector.zone][selector.index];
|
1250
|
+
};
|
1251
|
+
|
1252
|
+
// ../core/lib/get-zone-id.ts
|
1253
|
+
init_react_import();
|
1254
|
+
var getZoneId = (zoneCompound) => {
|
1255
|
+
if (!zoneCompound) {
|
1256
|
+
return [];
|
1257
|
+
}
|
1258
|
+
if (zoneCompound && zoneCompound.indexOf(":") > -1) {
|
1259
|
+
return zoneCompound.split(":");
|
1260
|
+
}
|
1261
|
+
return [rootDroppableId, zoneCompound];
|
1262
|
+
};
|
1263
|
+
|
1264
|
+
// ../core/components/DropZone/context.tsx
|
1265
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
1266
|
+
var dropZoneContext = (0, import_react3.createContext)(null);
|
1267
|
+
|
1268
|
+
// ../core/components/Puck/context.tsx
|
1269
|
+
init_react_import();
|
1270
|
+
var import_react4 = require("react");
|
1271
|
+
var defaultAppState = {
|
1272
|
+
data: { content: [], root: { title: "" } },
|
1273
|
+
ui: {
|
1274
|
+
leftSideBarVisible: true,
|
1275
|
+
arrayState: {},
|
1276
|
+
itemSelector: null
|
1277
|
+
}
|
1278
|
+
};
|
1279
|
+
var appContext = (0, import_react4.createContext)({
|
1280
|
+
state: defaultAppState,
|
1281
|
+
dispatch: () => null
|
1282
|
+
});
|
1283
|
+
var AppProvider = appContext.Provider;
|
1284
|
+
var useAppContext = () => {
|
1285
|
+
const mainContext = (0, import_react4.useContext)(appContext);
|
1286
|
+
const selectedItem = mainContext.state.ui.itemSelector ? getItem(mainContext.state.ui.itemSelector, mainContext.state.data) : void 0;
|
1287
|
+
return __spreadProps(__spreadValues({}, mainContext), {
|
1288
|
+
// Helpers
|
1289
|
+
selectedItem,
|
1290
|
+
setUi: (ui, recordHistory) => {
|
1291
|
+
return mainContext.dispatch({
|
1292
|
+
type: "setUi",
|
1293
|
+
ui,
|
1294
|
+
recordHistory
|
1295
|
+
});
|
1296
|
+
}
|
1297
|
+
});
|
1298
|
+
};
|
1299
|
+
|
1300
|
+
// ../core/lib/use-breadcrumbs.ts
|
1301
|
+
var convertPathDataToBreadcrumbs = (selectedItem, pathData, data) => {
|
1302
|
+
const id = selectedItem ? selectedItem == null ? void 0 : selectedItem.props.id : "";
|
1303
|
+
const currentPathData = pathData && id && pathData[id] ? __spreadValues({}, pathData[id]) : { label: "Page", path: [] };
|
1304
|
+
if (!id) {
|
1305
|
+
return [];
|
1306
|
+
}
|
1307
|
+
return currentPathData == null ? void 0 : currentPathData.path.reduce((acc, zoneCompound) => {
|
1308
|
+
const [area] = getZoneId(zoneCompound);
|
1309
|
+
if (area === rootDroppableId) {
|
1310
|
+
return [
|
1311
|
+
{
|
1312
|
+
label: "Page",
|
1313
|
+
selector: null
|
1314
|
+
}
|
1315
|
+
];
|
1316
|
+
}
|
1317
|
+
const parentZoneCompound = acc.length > 0 ? acc[acc.length - 1].zoneCompound : rootDroppableId;
|
1318
|
+
let parentZone = data.content;
|
1319
|
+
if (parentZoneCompound && parentZoneCompound !== rootDroppableId) {
|
1320
|
+
parentZone = data.zones[parentZoneCompound];
|
1321
|
+
}
|
1322
|
+
if (!parentZone) {
|
1323
|
+
return acc;
|
1324
|
+
}
|
1325
|
+
const itemIndex = parentZone.findIndex(
|
1326
|
+
(queryItem) => queryItem.props.id === area
|
1327
|
+
);
|
1328
|
+
const item = parentZone[itemIndex];
|
1329
|
+
if (!item) {
|
1330
|
+
return acc;
|
1331
|
+
}
|
1332
|
+
return [
|
1333
|
+
...acc,
|
1334
|
+
{
|
1335
|
+
label: item.type.toString(),
|
1336
|
+
selector: {
|
1337
|
+
index: itemIndex,
|
1338
|
+
zone: parentZoneCompound
|
1339
|
+
},
|
1340
|
+
zoneCompound
|
1341
|
+
}
|
1342
|
+
];
|
1343
|
+
}, []);
|
1344
|
+
};
|
1345
|
+
var useBreadcrumbs = (renderCount) => {
|
1346
|
+
const {
|
1347
|
+
state: { data },
|
1348
|
+
selectedItem
|
1349
|
+
} = useAppContext();
|
1350
|
+
const dzContext = (0, import_react5.useContext)(dropZoneContext);
|
1351
|
+
return (0, import_react5.useMemo)(() => {
|
1352
|
+
const breadcrumbs = convertPathDataToBreadcrumbs(
|
1353
|
+
selectedItem,
|
1354
|
+
dzContext == null ? void 0 : dzContext.pathData,
|
1355
|
+
data
|
1356
|
+
);
|
1357
|
+
if (renderCount) {
|
1358
|
+
return breadcrumbs.slice(breadcrumbs.length - renderCount);
|
1359
|
+
}
|
1360
|
+
return breadcrumbs;
|
1361
|
+
}, [selectedItem, dzContext == null ? void 0 : dzContext.pathData, renderCount]);
|
1362
|
+
};
|
1363
|
+
|
1214
1364
|
// ../core/components/SidebarSection/index.tsx
|
1215
1365
|
var getClassName2 = get_class_name_factory_default("SidebarSection", styles_module_default);
|
1216
1366
|
var SidebarSection = ({
|
1217
1367
|
children,
|
1218
1368
|
title,
|
1219
1369
|
background,
|
1220
|
-
|
1221
|
-
breadcrumbClick,
|
1370
|
+
showBreadcrumbs,
|
1222
1371
|
noPadding
|
1223
1372
|
}) => {
|
1224
|
-
|
1373
|
+
const { setUi } = useAppContext();
|
1374
|
+
const breadcrumbs = useBreadcrumbs(1);
|
1375
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { className: getClassName2({ noPadding }), style: { background } }, /* @__PURE__ */ import_react.default.createElement("div", { className: getClassName2("title") }, /* @__PURE__ */ import_react.default.createElement("div", { className: getClassName2("breadcrumbs") }, showBreadcrumbs ? breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ import_react.default.createElement("div", { key: i, className: getClassName2("breadcrumb") }, /* @__PURE__ */ import_react.default.createElement(
|
1225
1376
|
"div",
|
1226
1377
|
{
|
1227
1378
|
className: getClassName2("breadcrumbLabel"),
|
1228
|
-
onClick: () =>
|
1379
|
+
onClick: () => setUi({ itemSelector: breadcrumb.selector })
|
1229
1380
|
},
|
1230
1381
|
breadcrumb.label
|
1231
|
-
), /* @__PURE__ */ import_react.default.createElement(chevron_right_default, { size: 16 }))), /* @__PURE__ */ import_react.default.createElement("div", { className: getClassName2("heading") }, /* @__PURE__ */ import_react.default.createElement(Heading, { rank: 2, size: "xs" }, title)))), /* @__PURE__ */ import_react.default.createElement("div", { className: getClassName2("content") }, children));
|
1382
|
+
), /* @__PURE__ */ import_react.default.createElement(chevron_right_default, { size: 16 }))) : null, /* @__PURE__ */ import_react.default.createElement("div", { className: getClassName2("heading") }, /* @__PURE__ */ import_react.default.createElement(Heading, { rank: 2, size: "xs" }, title)))), /* @__PURE__ */ import_react.default.createElement("div", { className: getClassName2("content") }, children));
|
1232
1383
|
};
|
1233
1384
|
|
1234
1385
|
// ../core/components/OutlineList/index.tsx
|
@@ -1272,7 +1423,7 @@ var scrollIntoView = (el) => {
|
|
1272
1423
|
|
1273
1424
|
// src/HeadingAnalyzer.tsx
|
1274
1425
|
var import_react_from_json = __toESM(require("react-from-json"));
|
1275
|
-
var
|
1426
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
1276
1427
|
var dataAttr = "data-puck-heading-analyzer-id";
|
1277
1428
|
var getOutline = ({
|
1278
1429
|
addDataAttr = false
|
@@ -1327,11 +1478,12 @@ function buildHierarchy() {
|
|
1327
1478
|
}
|
1328
1479
|
var HeadingOutlineAnalyer = ({
|
1329
1480
|
children,
|
1330
|
-
|
1481
|
+
state
|
1331
1482
|
}) => {
|
1332
|
-
const
|
1333
|
-
const [
|
1334
|
-
(0,
|
1483
|
+
const { data } = state;
|
1484
|
+
const [hierarchy, setHierarchy] = (0, import_react6.useState)([]);
|
1485
|
+
const [firstRender, setFirstRender] = (0, import_react6.useState)(true);
|
1486
|
+
(0, import_react6.useEffect)(() => {
|
1335
1487
|
if (firstRender) {
|
1336
1488
|
setTimeout(() => {
|
1337
1489
|
setHierarchy(buildHierarchy());
|
@@ -1341,17 +1493,17 @@ var HeadingOutlineAnalyer = ({
|
|
1341
1493
|
setHierarchy(buildHierarchy());
|
1342
1494
|
}
|
1343
1495
|
}, [data.content]);
|
1344
|
-
return /* @__PURE__ */ (0,
|
1496
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
1345
1497
|
children,
|
1346
|
-
/* @__PURE__ */ (0,
|
1347
|
-
hierarchy.length === 0 && /* @__PURE__ */ (0,
|
1348
|
-
/* @__PURE__ */ (0,
|
1498
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(SidebarSection, { title: "Heading Outline", children: [
|
1499
|
+
hierarchy.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { children: "No headings." }),
|
1500
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OutlineList, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
1349
1501
|
import_react_from_json.default,
|
1350
1502
|
{
|
1351
1503
|
mapping: {
|
1352
|
-
Root: (props) => /* @__PURE__ */ (0,
|
1353
|
-
OutlineListItem: (props) => /* @__PURE__ */ (0,
|
1354
|
-
/* @__PURE__ */ (0,
|
1504
|
+
Root: (props) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: props.children }),
|
1505
|
+
OutlineListItem: (props) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(OutlineList.Item, { children: [
|
1506
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OutlineList.Clickable, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
1355
1507
|
"small",
|
1356
1508
|
{
|
1357
1509
|
onClick: typeof props.analyzeId == "undefined" ? void 0 : (e) => {
|
@@ -1370,14 +1522,14 @@ var HeadingOutlineAnalyer = ({
|
|
1370
1522
|
}, 2e3);
|
1371
1523
|
}
|
1372
1524
|
},
|
1373
|
-
children: props.missing ? /* @__PURE__ */ (0,
|
1374
|
-
/* @__PURE__ */ (0,
|
1525
|
+
children: props.missing ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { style: { color: "var(--puck-color-red)" }, children: [
|
1526
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("b", { children: [
|
1375
1527
|
"H",
|
1376
1528
|
props.rank
|
1377
1529
|
] }),
|
1378
1530
|
": Missing"
|
1379
|
-
] }) : /* @__PURE__ */ (0,
|
1380
|
-
/* @__PURE__ */ (0,
|
1531
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { children: [
|
1532
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("b", { children: [
|
1381
1533
|
"H",
|
1382
1534
|
props.rank
|
1383
1535
|
] }),
|
@@ -1386,7 +1538,7 @@ var HeadingOutlineAnalyer = ({
|
|
1386
1538
|
] })
|
1387
1539
|
}
|
1388
1540
|
) }),
|
1389
|
-
/* @__PURE__ */ (0,
|
1541
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OutlineList, { children: props.children })
|
1390
1542
|
] })
|
1391
1543
|
},
|
1392
1544
|
entry: {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@measured/puck-plugin-heading-analyzer",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.10.0-canary.18b3473",
|
4
4
|
"private": false,
|
5
5
|
"main": "./dist/index.js",
|
6
6
|
"types": "./dist/index.d.ts",
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"dist"
|
15
15
|
],
|
16
16
|
"devDependencies": {
|
17
|
-
"@measured/puck": "^0.
|
17
|
+
"@measured/puck": "^0.10.0-canary.18b3473",
|
18
18
|
"@types/react": "^18.2.0",
|
19
19
|
"@types/react-dom": "^18.2.0",
|
20
20
|
"eslint": "^7.32.0",
|