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

Sign up to get free protection for your applications and to get access to all the features.
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.dd7051e",
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.dd7051e",
22
22
  "@types/react": "^18.2.0",
23
23
  "@types/react-dom": "^18.2.0",
24
24
  "eslint": "^7.32.0",