@measured/puck-plugin-heading-analyzer 0.15.0-canary.480467a → 0.15.0-canary.b1c40c6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +117 -53
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -77164,6 +77164,16 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
77164
77164
  init_react_import2();
77165
77165
  var import_react132 = require("react");
77166
77166
  init_react_import2();
77167
+ init_react_import2();
77168
+ var getChanged = (newItem, oldItem) => {
77169
+ return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
77170
+ const newItemProps = (newItem == null ? void 0 : newItem.props) || {};
77171
+ const oldItemProps = (oldItem == null ? void 0 : oldItem.props) || {};
77172
+ return __spreadProps2(__spreadValues2({}, acc), {
77173
+ [item]: oldItemProps[item] !== newItemProps[item]
77174
+ });
77175
+ }, {}) : {};
77176
+ };
77167
77177
  var cache = { lastChange: {} };
77168
77178
  var resolveAllComponentData = (content, config, onResolveStart, onResolveEnd) => __async2(void 0, null, function* () {
77169
77179
  return yield Promise.all(
@@ -77180,25 +77190,15 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
77180
77190
  var resolveComponentData = (item, config, onResolveStart, onResolveEnd) => __async2(void 0, null, function* () {
77181
77191
  const configForItem = config.components[item.type];
77182
77192
  if (configForItem.resolveData) {
77183
- let changed = Object.keys(item.props).reduce(
77184
- (acc, item2) => __spreadProps2(__spreadValues2({}, acc), { [item2]: true }),
77185
- {}
77186
- );
77187
- if (cache.lastChange[item.props.id]) {
77188
- const { item: oldItem, resolved } = cache.lastChange[item.props.id];
77189
- if (oldItem === item) {
77190
- return resolved;
77191
- }
77192
- Object.keys(item.props).forEach((propName) => {
77193
- if (oldItem.props[propName] === item.props[propName]) {
77194
- changed[propName] = false;
77195
- }
77196
- });
77193
+ const { item: oldItem = {}, resolved = {} } = cache.lastChange[item.props.id] || {};
77194
+ if (item && item === oldItem) {
77195
+ return resolved;
77197
77196
  }
77197
+ const changed = getChanged(item, oldItem);
77198
77198
  if (onResolveStart) {
77199
77199
  onResolveStart(item);
77200
77200
  }
77201
- const { props: resolvedProps, readOnly = {} } = yield configForItem.resolveData(item, { changed });
77201
+ const { props: resolvedProps, readOnly = {} } = yield configForItem.resolveData(item, { changed, lastData: oldItem });
77202
77202
  const { readOnly: existingReadOnly = {} } = item || {};
77203
77203
  const newReadOnly = __spreadValues2(__spreadValues2({}, existingReadOnly), readOnly);
77204
77204
  const resolvedItem = __spreadProps2(__spreadValues2({}, item), {
@@ -77237,26 +77237,16 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
77237
77237
  init_react_import2();
77238
77238
  var cache2 = {};
77239
77239
  var resolveRootData = (data, config) => __async2(void 0, null, function* () {
77240
- var _a3, _b;
77240
+ var _a3, _b, _c, _d, _e;
77241
77241
  if (((_a3 = config.root) == null ? void 0 : _a3.resolveData) && data.root.props) {
77242
- let changed = Object.keys(data.root.props).reduce(
77243
- (acc, item) => __spreadProps2(__spreadValues2({}, acc), { [item]: true }),
77244
- {}
77245
- );
77246
- if (cache2.lastChange) {
77247
- const { original, resolved } = cache2.lastChange;
77248
- if (original === data.root) {
77249
- return resolved;
77250
- }
77251
- Object.keys(data.root.props).forEach((propName) => {
77252
- if (original.props[propName] === data.root.props[propName]) {
77253
- changed[propName] = false;
77254
- }
77255
- });
77242
+ if (((_b = cache2.lastChange) == null ? void 0 : _b.original) === data.root) {
77243
+ return cache2.lastChange.resolved;
77256
77244
  }
77245
+ const changed = getChanged(data.root, (_c = cache2.lastChange) == null ? void 0 : _c.original);
77257
77246
  const rootWithProps = data.root;
77258
- const resolvedRoot = yield (_b = config.root) == null ? void 0 : _b.resolveData(rootWithProps, {
77259
- changed
77247
+ const resolvedRoot = yield (_e = config.root) == null ? void 0 : _e.resolveData(rootWithProps, {
77248
+ changed,
77249
+ lastData: ((_d = cache2.lastChange) == null ? void 0 : _d.original) || {}
77260
77250
  });
77261
77251
  cache2.lastChange = {
77262
77252
  original: data.root,
@@ -78320,7 +78310,7 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
78320
78310
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Render2, __spreadProps2(__spreadValues2({}, mergedProps), { children }));
78321
78311
  };
78322
78312
  init_react_import2();
78323
- var styles_module_default14 = { "PuckFields": "_PuckFields_17k3p_1", "PuckFields-loadingOverlay": "_PuckFields-loadingOverlay_17k3p_6" };
78313
+ var styles_module_default14 = { "PuckFields": "_PuckFields_1o0if_1", "PuckFields--isLoading": "_PuckFields--isLoading_1o0if_6", "PuckFields-loadingOverlay": "_PuckFields-loadingOverlay_1o0if_10" };
78324
78314
  var import_react19 = require("react");
78325
78315
  var import_jsx_runtime25 = require("react/jsx-runtime");
78326
78316
  var getClassName19 = get_class_name_factory_default2("PuckFields", styles_module_default14);
@@ -78331,13 +78321,73 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
78331
78321
  children,
78332
78322
  isLoading
78333
78323
  }) => {
78334
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: getClassName19(), children: [
78324
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: getClassName19({ isLoading }), children: [
78335
78325
  children,
78336
78326
  isLoading && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: getClassName19("loadingOverlay"), children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_spinners6.ClipLoader, { "aria-label": "loading" }) })
78337
78327
  ] });
78338
78328
  };
78329
+ var useResolvedFields = () => {
78330
+ var _a3;
78331
+ const { selectedItem, state, config } = useAppContext2();
78332
+ const { data } = state;
78333
+ const rootFields = ((_a3 = config.root) == null ? void 0 : _a3.fields) || defaultPageFields;
78334
+ const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
78335
+ const defaultFields = selectedItem ? componentConfig == null ? void 0 : componentConfig.fields : rootFields;
78336
+ const rootProps = data.root.props || data.root;
78337
+ const [lastSelectedData, setLastSelectedData] = (0, import_react19.useState)(
78338
+ {}
78339
+ );
78340
+ const [resolvedFields, setResolvedFields] = (0, import_react19.useState)(defaultFields || {});
78341
+ const [fieldsLoading, setFieldsLoading] = (0, import_react19.useState)(false);
78342
+ const defaultResolveFields = (_componentData, _params) => defaultFields;
78343
+ const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
78344
+ const resolveFields = (0, import_react19.useCallback)(
78345
+ (..._0) => __async2(void 0, [..._0], function* (fields = {}) {
78346
+ var _a22, _b, _c;
78347
+ const lastData = ((_a22 = lastSelectedData.props) == null ? void 0 : _a22.id) === componentData.props.id ? lastSelectedData : {};
78348
+ const changed = getChanged(componentData, lastData);
78349
+ setLastSelectedData(componentData);
78350
+ if (selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields)) {
78351
+ return yield componentConfig == null ? void 0 : componentConfig.resolveFields(
78352
+ componentData,
78353
+ {
78354
+ changed,
78355
+ fields,
78356
+ lastFields: resolvedFields,
78357
+ lastData,
78358
+ appState: state
78359
+ }
78360
+ );
78361
+ }
78362
+ if (!selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields)) {
78363
+ return yield (_c = config.root) == null ? void 0 : _c.resolveFields(componentData, {
78364
+ changed,
78365
+ fields,
78366
+ lastFields: resolvedFields,
78367
+ lastData,
78368
+ appState: state
78369
+ });
78370
+ }
78371
+ return defaultResolveFields(componentData, {
78372
+ changed,
78373
+ fields,
78374
+ lastFields: resolvedFields,
78375
+ lastData
78376
+ });
78377
+ }),
78378
+ [data, config, componentData, selectedItem, resolvedFields, state]
78379
+ );
78380
+ (0, import_react19.useEffect)(() => {
78381
+ setFieldsLoading(true);
78382
+ resolveFields(defaultFields).then((fields) => {
78383
+ setResolvedFields(fields || {});
78384
+ setFieldsLoading(false);
78385
+ });
78386
+ }, [data, defaultFields]);
78387
+ return [resolvedFields, fieldsLoading];
78388
+ };
78339
78389
  var Fields = () => {
78340
- var _a3, _b, _c, _d;
78390
+ var _a3, _b;
78341
78391
  const {
78342
78392
  selectedItem,
78343
78393
  state,
@@ -78349,9 +78399,9 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
78349
78399
  } = useAppContext2();
78350
78400
  const { data, ui } = state;
78351
78401
  const { itemSelector } = ui;
78352
- const rootFields = ((_a3 = config.root) == null ? void 0 : _a3.fields) || defaultPageFields;
78353
- const fields = selectedItem ? ((_b = config.components[selectedItem.type]) == null ? void 0 : _b.fields) || {} : rootFields;
78354
- const isLoading = selectedItem ? (_c = componentState[selectedItem == null ? void 0 : selectedItem.props.id]) == null ? void 0 : _c.loading : (_d = componentState["puck-root"]) == null ? void 0 : _d.loading;
78402
+ const [fields, fieldsResolving] = useResolvedFields();
78403
+ const componentResolving = selectedItem ? (_a3 = componentState[selectedItem == null ? void 0 : selectedItem.props.id]) == null ? void 0 : _a3.loading : (_b = componentState["puck-root"]) == null ? void 0 : _b.loading;
78404
+ const isLoading = fieldsResolving || componentResolving;
78355
78405
  const rootProps = data.root.props || data.root;
78356
78406
  const Wrapper = (0, import_react19.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
78357
78407
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
@@ -78363,6 +78413,8 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
78363
78413
  },
78364
78414
  children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Wrapper, { isLoading, itemSelector, children: Object.keys(fields).map((fieldName) => {
78365
78415
  const field = fields[fieldName];
78416
+ if (!(field == null ? void 0 : field.type))
78417
+ return null;
78366
78418
  const onChange = (value, updatedUi) => {
78367
78419
  var _a22, _b2;
78368
78420
  let currentProps;
@@ -79567,7 +79619,7 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
79567
79619
  () => createReducer({ config, record: historyStore.record })
79568
79620
  );
79569
79621
  const [initialAppState] = (0, import_react29.useState)(() => {
79570
- var _a22, _b, _c, _d, _e;
79622
+ var _a22, _b, _c, _d, _e, _f;
79571
79623
  const initial = __spreadValues2(__spreadValues2({}, defaultAppState2.ui), initialUi);
79572
79624
  let clientUiState = {};
79573
79625
  if (typeof window !== "undefined") {
@@ -79594,11 +79646,12 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
79594
79646
  };
79595
79647
  }
79596
79648
  }
79597
- const rootProps2 = initialData.root.props || initialData.root;
79598
- const defaultedRootProps = __spreadValues2(__spreadValues2({}, (_e = config.root) == null ? void 0 : _e.defaultProps), rootProps2);
79649
+ const rootProps2 = ((_e = initialData == null ? void 0 : initialData.root) == null ? void 0 : _e.props) || initialData.root || {};
79650
+ const defaultedRootProps = __spreadValues2(__spreadValues2({}, (_f = config.root) == null ? void 0 : _f.defaultProps), rootProps2);
79599
79651
  return __spreadProps2(__spreadValues2({}, defaultAppState2), {
79600
79652
  data: __spreadProps2(__spreadValues2({}, initialData), {
79601
- root: defaultedRootProps
79653
+ root: defaultedRootProps,
79654
+ content: initialData.content || []
79602
79655
  }),
79603
79656
  ui: __spreadProps2(__spreadValues2(__spreadValues2({}, initial), clientUiState), {
79604
79657
  // Store categories under componentList on state to allow render functions and plugins to modify
@@ -79964,10 +80017,14 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
79964
80017
  data
79965
80018
  }) {
79966
80019
  var _a3;
79967
- const rootProps = data.root.props || data.root;
80020
+ const defaultedData = __spreadProps2(__spreadValues2({}, data), {
80021
+ root: data.root || {},
80022
+ content: data.content || []
80023
+ });
80024
+ const rootProps = defaultedData.root.props || defaultedData.root;
79968
80025
  const title = (rootProps == null ? void 0 : rootProps.title) || "";
79969
80026
  if ((_a3 = config.root) == null ? void 0 : _a3.render) {
79970
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
80027
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZoneProvider, { value: { data: defaultedData, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
79971
80028
  config.root.render,
79972
80029
  __spreadProps2(__spreadValues2({}, rootProps), {
79973
80030
  puck: {
@@ -79980,7 +80037,7 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
79980
80037
  })
79981
80038
  ) });
79982
80039
  }
79983
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZoneProvider, { value: { data, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZone, { zone: rootDroppableId2 }) });
80040
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZoneProvider, { value: { data: defaultedData, config, mode: "render" }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropZone, { zone: rootDroppableId2 }) });
79984
80041
  }
79985
80042
  init_react_import2();
79986
80043
  var migrations = [
@@ -80004,6 +80061,11 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
80004
80061
  return migrations == null ? void 0 : migrations.reduce((acc, migration) => migration(acc), data);
80005
80062
  }
80006
80063
  init_react_import2();
80064
+ init_react_import2();
80065
+ var defaultData = (data) => __spreadProps2(__spreadValues2({}, data), {
80066
+ root: data.root || {},
80067
+ content: data.content || []
80068
+ });
80007
80069
  function transformProps(data, propTransforms) {
80008
80070
  const mapItem = (item) => {
80009
80071
  if (propTransforms[item.type]) {
@@ -80013,18 +80075,19 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
80013
80075
  }
80014
80076
  return item;
80015
80077
  };
80016
- const rootProps = data.root.props || data.root;
80017
- let newRoot = __spreadValues2({}, data.root);
80078
+ const defaultedData = defaultData(data);
80079
+ const rootProps = defaultedData.root.props || defaultedData.root;
80080
+ let newRoot = __spreadValues2({}, defaultedData.root);
80018
80081
  if (propTransforms["root"]) {
80019
- if (data.root.props) {
80082
+ if (defaultedData.root.props) {
80020
80083
  newRoot.props = propTransforms["root"](rootProps);
80021
80084
  } else {
80022
80085
  newRoot = propTransforms["root"](rootProps);
80023
80086
  }
80024
80087
  }
80025
- const afterPropTransforms = __spreadProps2(__spreadValues2({}, data), {
80088
+ const afterPropTransforms = __spreadProps2(__spreadValues2({}, defaultedData), {
80026
80089
  root: newRoot,
80027
- content: data.content.map(mapItem),
80090
+ content: defaultedData.content.map(mapItem),
80028
80091
  zones: Object.keys(data.zones || {}).reduce(
80029
80092
  (acc, zoneKey) => __spreadProps2(__spreadValues2({}, acc), {
80030
80093
  [zoneKey]: data.zones[zoneKey].map(mapItem)
@@ -80037,7 +80100,8 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
80037
80100
  init_react_import2();
80038
80101
  function resolveAllData(data, config, onResolveStart, onResolveEnd) {
80039
80102
  return __async2(this, null, function* () {
80040
- const dynamicRoot = yield resolveRootData(data, config);
80103
+ const defaultedData = defaultData(data);
80104
+ const dynamicRoot = yield resolveRootData(defaultedData, config);
80041
80105
  const { zones = {} } = data;
80042
80106
  const zoneKeys = Object.keys(zones);
80043
80107
  const resolvedZones = {};
@@ -80050,10 +80114,10 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
80050
80114
  onResolveEnd
80051
80115
  );
80052
80116
  }
80053
- return __spreadProps2(__spreadValues2({}, data), {
80117
+ return __spreadProps2(__spreadValues2({}, defaultedData), {
80054
80118
  root: dynamicRoot,
80055
80119
  content: yield resolveAllComponentData(
80056
- data.content,
80120
+ defaultedData.content,
80057
80121
  config,
80058
80122
  onResolveStart,
80059
80123
  onResolveEnd
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measured/puck-plugin-heading-analyzer",
3
- "version": "0.15.0-canary.480467a",
3
+ "version": "0.15.0-canary.b1c40c6",
4
4
  "author": "Measured Corporation Ltd <hello@measured.co>",
5
5
  "repository": "measuredco/puck",
6
6
  "bugs": "https://github.com/measuredco/puck/issues",
@@ -18,7 +18,7 @@
18
18
  "dist"
19
19
  ],
20
20
  "devDependencies": {
21
- "@measured/puck": "^0.15.0-canary.480467a",
21
+ "@measured/puck": "^0.15.0-canary.b1c40c6",
22
22
  "@types/react": "^18.2.0",
23
23
  "@types/react-dom": "^18.2.0",
24
24
  "eslint": "^7.32.0",