@measured/puck 0.21.0-canary.16a3eee1 → 0.21.0-canary.1b69a8f3

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
@@ -190,8 +190,8 @@ var require_fast_deep_equal = __commonJS({
190
190
  });
191
191
 
192
192
  // bundle/index.ts
193
- var bundle_exports = {};
194
- __export(bundle_exports, {
193
+ var index_exports = {};
194
+ __export(index_exports, {
195
195
  Action: () => Action,
196
196
  ActionBar: () => ActionBar,
197
197
  AutoField: () => AutoField,
@@ -216,7 +216,7 @@ __export(bundle_exports, {
216
216
  usePuck: () => usePuck,
217
217
  walkTree: () => walkTree
218
218
  });
219
- module.exports = __toCommonJS(bundle_exports);
219
+ module.exports = __toCommonJS(index_exports);
220
220
  init_react_import();
221
221
 
222
222
  // bundle/core.ts
@@ -1749,6 +1749,10 @@ var monitorHotkeys = (doc) => {
1749
1749
  useHotkeyStore.getState().reset();
1750
1750
  }
1751
1751
  };
1752
+ const onBlur = () => {
1753
+ useHotkeyStore.getState().reset();
1754
+ };
1755
+ window.addEventListener("blur", onBlur);
1752
1756
  doc.addEventListener("keydown", onKeyDown);
1753
1757
  doc.addEventListener("keyup", onKeyUp);
1754
1758
  doc.addEventListener("visibilitychange", onVisibilityChanged);
@@ -1756,6 +1760,7 @@ var monitorHotkeys = (doc) => {
1756
1760
  doc.removeEventListener("keydown", onKeyDown);
1757
1761
  doc.removeEventListener("keyup", onKeyUp);
1758
1762
  doc.removeEventListener("visibilitychange", onVisibilityChanged);
1763
+ window.removeEventListener("blur", onBlur);
1759
1764
  };
1760
1765
  };
1761
1766
  var useMonitorHotkeys = () => {
@@ -1971,29 +1976,37 @@ var getChanged = (newItem, oldItem) => {
1971
1976
 
1972
1977
  // store/slices/permissions.ts
1973
1978
  var createPermissionsSlice = (set, get) => {
1974
- const resolvePermissions = (..._0) => __async(void 0, [..._0], function* (params = {}, force) {
1979
+ const resolvePermissions = (..._0) => __async(null, [..._0], function* (params = {}, force) {
1975
1980
  const { state, permissions, config } = get();
1976
1981
  const { cache: cache2, globalPermissions } = permissions;
1977
- const resolveDataForItem = (item2, force2 = false) => __async(void 0, null, function* () {
1978
- var _a, _b, _c;
1982
+ const resolvePermissionsForItem = (item2, force2 = false) => __async(null, null, function* () {
1983
+ var _a, _b;
1979
1984
  const { config: config2, state: appState, setComponentLoading } = get();
1985
+ const itemCache = cache2[item2.props.id];
1986
+ const nodes = appState.indexes.nodes;
1987
+ const parentId = (_a = nodes[item2.props.id]) == null ? void 0 : _a.parentId;
1988
+ const parentNode = parentId ? nodes[parentId] : null;
1989
+ const parentData = (_b = parentNode == null ? void 0 : parentNode.data) != null ? _b : null;
1980
1990
  const componentConfig = item2.type === "root" ? config2.root : config2.components[item2.type];
1981
1991
  if (!componentConfig) {
1982
1992
  return;
1983
1993
  }
1984
1994
  const initialPermissions = __spreadValues(__spreadValues({}, globalPermissions), componentConfig.permissions);
1985
1995
  if (componentConfig.resolvePermissions) {
1986
- const changed = getChanged(item2, (_a = cache2[item2.props.id]) == null ? void 0 : _a.lastData);
1987
- if (Object.values(changed).some((el) => el === true) || force2) {
1996
+ const changed = getChanged(item2, itemCache == null ? void 0 : itemCache.lastData);
1997
+ const propsChanged = Object.values(changed).some((el) => el === true);
1998
+ const parentChanged = (itemCache == null ? void 0 : itemCache.lastParentId) !== parentId;
1999
+ if (propsChanged || parentChanged || force2) {
1988
2000
  const clearTimeout2 = setComponentLoading(item2.props.id, true, 50);
1989
2001
  const resolvedPermissions = yield componentConfig.resolvePermissions(
1990
2002
  item2,
1991
2003
  {
1992
2004
  changed,
1993
- lastPermissions: ((_b = cache2[item2.props.id]) == null ? void 0 : _b.lastPermissions) || null,
2005
+ lastPermissions: (itemCache == null ? void 0 : itemCache.lastPermissions) || null,
1994
2006
  permissions: initialPermissions,
1995
2007
  appState: makeStatePublic(appState),
1996
- lastData: ((_c = cache2[item2.props.id]) == null ? void 0 : _c.lastData) || null
2008
+ lastData: (itemCache == null ? void 0 : itemCache.lastData) || null,
2009
+ parent: parentData
1997
2010
  }
1998
2011
  );
1999
2012
  const latest = get().permissions;
@@ -2001,6 +2014,7 @@ var createPermissionsSlice = (set, get) => {
2001
2014
  permissions: __spreadProps(__spreadValues({}, latest), {
2002
2015
  cache: __spreadProps(__spreadValues({}, latest.cache), {
2003
2016
  [item2.props.id]: {
2017
+ lastParentId: parentId,
2004
2018
  lastData: item2,
2005
2019
  lastPermissions: resolvedPermissions
2006
2020
  }
@@ -2014,9 +2028,9 @@ var createPermissionsSlice = (set, get) => {
2014
2028
  }
2015
2029
  }
2016
2030
  });
2017
- const resolveDataForRoot = (force2 = false) => {
2031
+ const resolvePermissionsForRoot = (force2 = false) => {
2018
2032
  const { state: appState } = get();
2019
- resolveDataForItem(
2033
+ resolvePermissionsForItem(
2020
2034
  // Shim the root data in by conforming to component data shape
2021
2035
  {
2022
2036
  type: "root",
@@ -2027,16 +2041,16 @@ var createPermissionsSlice = (set, get) => {
2027
2041
  };
2028
2042
  const { item, type, root } = params;
2029
2043
  if (item) {
2030
- yield resolveDataForItem(item, force);
2044
+ yield resolvePermissionsForItem(item, force);
2031
2045
  } else if (type) {
2032
- flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(void 0, null, function* () {
2033
- yield resolveDataForItem(item2, force);
2046
+ flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(null, null, function* () {
2047
+ yield resolvePermissionsForItem(item2, force);
2034
2048
  }));
2035
2049
  } else if (root) {
2036
- resolveDataForRoot(force);
2050
+ resolvePermissionsForRoot(force);
2037
2051
  } else {
2038
- flattenData(state, config).map((item2) => __async(void 0, null, function* () {
2039
- yield resolveDataForItem(item2, force);
2052
+ flattenData(state, config).map((item2) => __async(null, null, function* () {
2053
+ yield resolvePermissionsForItem(item2, force);
2040
2054
  }));
2041
2055
  }
2042
2056
  });
@@ -2116,7 +2130,7 @@ var createFieldsSlice = (_set, _get) => {
2116
2130
  };
2117
2131
  var useRegisterFieldsSlice = (appStore, id) => {
2118
2132
  const resolveFields = (0, import_react7.useCallback)(
2119
- (reset) => __async(void 0, null, function* () {
2133
+ (reset) => __async(null, null, function* () {
2120
2134
  var _a, _b;
2121
2135
  const { fields, lastResolvedData } = appStore.getState().fields;
2122
2136
  const metadata = appStore.getState().metadata;
@@ -2187,7 +2201,7 @@ var useRegisterFieldsSlice = (appStore, id) => {
2187
2201
  init_react_import();
2188
2202
  var import_fast_equals2 = require("fast-equals");
2189
2203
  var cache = { lastChange: {} };
2190
- var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
2204
+ var resolveComponentData = (_0, _1, ..._2) => __async(null, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
2191
2205
  const configForItem = "type" in item && item.type !== "root" ? config.components[item.type] : config.root;
2192
2206
  const resolvedItem = __spreadValues({}, item);
2193
2207
  const shouldRunResolver = (configForItem == null ? void 0 : configForItem.resolveData) && item.props;
@@ -2215,11 +2229,11 @@ var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], f
2215
2229
  let itemWithResolvedChildren = yield mapFields(
2216
2230
  resolvedItem,
2217
2231
  {
2218
- slot: (_02) => __async(void 0, [_02], function* ({ value }) {
2232
+ slot: (_02) => __async(null, [_02], function* ({ value }) {
2219
2233
  const content = value;
2220
2234
  return yield Promise.all(
2221
2235
  content.map(
2222
- (childItem) => __async(void 0, null, function* () {
2236
+ (childItem) => __async(null, null, function* () {
2223
2237
  return (yield resolveComponentData(
2224
2238
  childItem,
2225
2239
  config,
@@ -2409,7 +2423,7 @@ var createAppStore = (initialAppStore) => (0, import_zustand2.create)()(
2409
2423
  const selectedItem = state.ui.itemSelector ? getItem(state.ui.itemSelector, state) : null;
2410
2424
  return __spreadProps(__spreadValues({}, s), { state, selectedItem });
2411
2425
  }),
2412
- resolveComponentData: (componentData, trigger) => __async(void 0, null, function* () {
2426
+ resolveComponentData: (componentData, trigger) => __async(null, null, function* () {
2413
2427
  const { config, metadata, setComponentLoading, permissions } = get();
2414
2428
  const timeouts = {};
2415
2429
  return yield resolveComponentData(
@@ -2420,7 +2434,7 @@ var createAppStore = (initialAppStore) => (0, import_zustand2.create)()(
2420
2434
  const id = "id" in item.props ? item.props.id : "root";
2421
2435
  timeouts[id] = setComponentLoading(id, true, 50);
2422
2436
  },
2423
- (item) => __async(void 0, null, function* () {
2437
+ (item) => __async(null, null, function* () {
2424
2438
  const id = "id" in item.props ? item.props.id : "root";
2425
2439
  if ("type" in item) {
2426
2440
  yield permissions.refreshPermissions({ item });
@@ -2432,7 +2446,7 @@ var createAppStore = (initialAppStore) => (0, import_zustand2.create)()(
2432
2446
  trigger
2433
2447
  );
2434
2448
  }),
2435
- resolveAndCommitData: () => __async(void 0, null, function* () {
2449
+ resolveAndCommitData: () => __async(null, null, function* () {
2436
2450
  const { config, state, dispatch, resolveComponentData: resolveComponentData2 } = get();
2437
2451
  walkAppState(
2438
2452
  state,
@@ -3004,7 +3018,7 @@ var collisionStore = (0, import_vanilla.createStore)(() => ({
3004
3018
 
3005
3019
  // lib/dnd/collision/dynamic/index.ts
3006
3020
  var flushNext = "";
3007
- var createDynamicCollisionDetector = (dragAxis, midpointOffset = 0.05) => (input) => {
3021
+ var createDynamicCollisionDetector = (dragAxis, midpointOffset = 0.05) => ((input) => {
3008
3022
  var _a, _b, _c, _d, _e;
3009
3023
  const { dragOperation, droppable } = input;
3010
3024
  const { position } = dragOperation;
@@ -3097,7 +3111,7 @@ var createDynamicCollisionDetector = (dragAxis, midpointOffset = 0.05) => (input
3097
3111
  }
3098
3112
  collisionDebug(dragCenter, dropCenter, droppable.id.toString(), "hotpink");
3099
3113
  return null;
3100
- };
3114
+ });
3101
3115
 
3102
3116
  // components/Sortable/index.tsx
3103
3117
  var import_sortable = require("@dnd-kit/react/sortable");
@@ -3530,8 +3544,9 @@ var ArrayField = ({
3530
3544
  var _a;
3531
3545
  if (isDraggingAny) return;
3532
3546
  const existingValue = value || [];
3547
+ const defaultProps = typeof field.defaultItemProps === "function" ? field.defaultItemProps(existingValue.length) : (_a = field.defaultItemProps) != null ? _a : {};
3533
3548
  const newItem = defaultSlots(
3534
- uniqifyItem((_a = field.defaultItemProps) != null ? _a : {}),
3549
+ uniqifyItem(defaultProps),
3535
3550
  field.arrayFields
3536
3551
  );
3537
3552
  const newValue = [...existingValue, newItem];
@@ -3790,11 +3805,13 @@ var ExternalInput = ({
3790
3805
  id,
3791
3806
  readOnly
3792
3807
  }) => {
3808
+ var _a;
3793
3809
  const {
3794
3810
  mapProp = (val) => val,
3795
3811
  mapRow = (val) => val,
3796
3812
  filterFields
3797
3813
  } = field || {};
3814
+ const { enabled: shouldCacheData } = (_a = field.cache) != null ? _a : { enabled: true };
3798
3815
  const [data, setData] = (0, import_react17.useState)([]);
3799
3816
  const [isOpen, setOpen] = (0, import_react17.useState)(false);
3800
3817
  const [isLoading, setIsLoading] = (0, import_react17.useState)(true);
@@ -3817,14 +3834,21 @@ var ExternalInput = ({
3817
3834
  }, [mappedData]);
3818
3835
  const [searchQuery, setSearchQuery] = (0, import_react17.useState)(field.initialQuery || "");
3819
3836
  const search = (0, import_react17.useCallback)(
3820
- (query, filters2) => __async(void 0, null, function* () {
3837
+ (query, filters2) => __async(null, null, function* () {
3821
3838
  setIsLoading(true);
3822
3839
  const cacheKey = `${id}-${query}-${JSON.stringify(filters2)}`;
3823
- const listData = dataCache[cacheKey] || (yield field.fetchList({ query, filters: filters2 }));
3840
+ let listData;
3841
+ if (shouldCacheData && dataCache[cacheKey]) {
3842
+ listData = dataCache[cacheKey];
3843
+ } else {
3844
+ listData = yield field.fetchList({ query, filters: filters2 });
3845
+ }
3824
3846
  if (listData) {
3825
3847
  setData(listData);
3826
3848
  setIsLoading(false);
3827
- dataCache[cacheKey] = listData;
3849
+ if (shouldCacheData) {
3850
+ dataCache[cacheKey] = listData;
3851
+ }
3828
3852
  }
3829
3853
  }),
3830
3854
  [id, field]
@@ -3888,6 +3912,7 @@ var ExternalInput = ({
3888
3912
  }),
3889
3913
  onSubmit: (e) => {
3890
3914
  e.preventDefault();
3915
+ e.stopPropagation();
3891
3916
  search(searchQuery, filters);
3892
3917
  },
3893
3918
  children: [
@@ -4035,7 +4060,7 @@ var ExternalField = ({
4035
4060
  placeholder: ((_a = deprecatedField.adaptor) == null ? void 0 : _a.name) ? `Select from ${deprecatedField.adaptor.name}` : validField.placeholder || "Select data",
4036
4061
  mapProp: ((_b = deprecatedField.adaptor) == null ? void 0 : _b.mapProp) || validField.mapProp,
4037
4062
  mapRow: validField.mapRow,
4038
- fetchList: ((_c = deprecatedField.adaptor) == null ? void 0 : _c.fetchList) ? () => __async(void 0, null, function* () {
4063
+ fetchList: ((_c = deprecatedField.adaptor) == null ? void 0 : _c.fetchList) ? () => __async(null, null, function* () {
4039
4064
  return yield deprecatedField.adaptor.fetchList(
4040
4065
  deprecatedField.adaptorParams
4041
4066
  );
@@ -4411,6 +4436,7 @@ function AutoFieldInternal(props) {
4411
4436
  }
4412
4437
  return (_props) => null;
4413
4438
  }, [field.type]);
4439
+ const fieldKey = field.type === "custom" ? field.key : void 0;
4414
4440
  let FieldComponent = (0, import_react20.useMemo)(() => {
4415
4441
  if (field.type === "custom") {
4416
4442
  if (!field.render) {
@@ -4420,7 +4446,7 @@ function AutoFieldInternal(props) {
4420
4446
  } else if (field.type !== "slot") {
4421
4447
  return render[field.type];
4422
4448
  }
4423
- }, [field.type, render]);
4449
+ }, [field.type, fieldKey, render]);
4424
4450
  const { visible = true } = props.field;
4425
4451
  if (!visible) {
4426
4452
  return null;
@@ -4791,12 +4817,14 @@ var DraggableComponent = ({
4791
4817
  }
4792
4818
  return cleanup;
4793
4819
  }, [permissions.drag, zoneCompound]);
4820
+ const [, setRerender] = (0, import_react24.useState)(0);
4794
4821
  const ref = (0, import_react24.useRef)(null);
4795
4822
  const refSetter = (0, import_react24.useCallback)(
4796
4823
  (el) => {
4797
4824
  sortableRef(el);
4798
- if (el) {
4825
+ if (ref.current !== el) {
4799
4826
  ref.current = el;
4827
+ setRerender((update) => update + 1);
4800
4828
  }
4801
4829
  },
4802
4830
  [sortableRef]
@@ -5243,7 +5271,7 @@ var import_react27 = require("react");
5243
5271
  function useRenderedCallback(callback, deps) {
5244
5272
  const manager = (0, import_react26.useDragDropManager)();
5245
5273
  return (0, import_react27.useCallback)(
5246
- (...args) => __async(this, null, function* () {
5274
+ (...args) => __async(null, null, function* () {
5247
5275
  yield manager == null ? void 0 : manager.renderer.rendering;
5248
5276
  return callback(...args);
5249
5277
  }),
@@ -5448,8 +5476,9 @@ var Item = ({
5448
5476
  );
5449
5477
  };
5450
5478
  var SlotRender = (0, import_react31.forwardRef)(
5451
- function SlotRenderInternal({ className, style, content, config, metadata }, ref) {
5452
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className, style, ref, children: content.map((item) => {
5479
+ function SlotRenderInternal({ className, style, content, config, metadata, as }, ref) {
5480
+ const El = as != null ? as : "div";
5481
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(El, { className, style, ref, children: content.map((item) => {
5453
5482
  if (!config.components[item.type]) {
5454
5483
  return null;
5455
5484
  }
@@ -5571,26 +5600,26 @@ var registerOverlayPortal = (el, opts = {}) => {
5571
5600
  capture: true
5572
5601
  });
5573
5602
  };
5574
- if (disableDragOnFocus) {
5575
- el.addEventListener("focus", onFocus, { capture: true });
5576
- el.addEventListener("blur", onBlur, { capture: true });
5577
- } else if (disableDrag) {
5603
+ if (disableDrag) {
5578
5604
  el.addEventListener("pointerdown", stopPropagation, {
5579
5605
  capture: true
5580
5606
  });
5607
+ } else if (disableDragOnFocus) {
5608
+ el.addEventListener("focus", onFocus, { capture: true });
5609
+ el.addEventListener("blur", onBlur, { capture: true });
5581
5610
  }
5582
5611
  el.setAttribute("data-puck-overlay-portal", "true");
5583
5612
  return () => {
5584
5613
  el.removeEventListener("mouseover", stopPropagation, {
5585
5614
  capture: true
5586
5615
  });
5587
- if (disableDragOnFocus) {
5588
- el.removeEventListener("focus", onFocus, { capture: true });
5589
- el.removeEventListener("blur", onFocus, { capture: true });
5590
- } else if (disableDrag) {
5616
+ if (disableDrag) {
5591
5617
  el.removeEventListener("pointerdown", stopPropagation, {
5592
5618
  capture: true
5593
5619
  });
5620
+ } else if (disableDragOnFocus) {
5621
+ el.removeEventListener("focus", onFocus, { capture: true });
5622
+ el.removeEventListener("blur", onBlur, { capture: true });
5594
5623
  }
5595
5624
  el.removeAttribute("data-puck-overlay-portal");
5596
5625
  };
@@ -5598,7 +5627,7 @@ var registerOverlayPortal = (el, opts = {}) => {
5598
5627
 
5599
5628
  // css-module:/home/runner/work/puck/puck/packages/core/components/InlineTextField/styles.module.css#css-module
5600
5629
  init_react_import();
5601
- var styles_module_default13 = { "InlineTextField": "_InlineTextField_1xph6_1" };
5630
+ var styles_module_default13 = { "InlineTextField": "_InlineTextField_104qp_1" };
5602
5631
 
5603
5632
  // lib/data/set-deep.ts
5604
5633
  init_react_import();
@@ -5672,7 +5701,7 @@ var InlineTextFieldInternal = ({
5672
5701
  ref.current.replaceChildren(value);
5673
5702
  }
5674
5703
  const cleanupPortal = registerOverlayPortal(ref.current);
5675
- const handleInput = (e) => __async(void 0, null, function* () {
5704
+ const handleInput = (e) => __async(null, null, function* () {
5676
5705
  var _a2;
5677
5706
  const appStore2 = appStoreApi.getState();
5678
5707
  const node = appStore2.state.indexes.nodes[componentId];
@@ -5964,7 +5993,8 @@ var DropZoneEdit = (0, import_react34.forwardRef)(
5964
5993
  style,
5965
5994
  className,
5966
5995
  minEmptyHeight: userMinEmptyHeight = 128,
5967
- collisionAxis
5996
+ collisionAxis,
5997
+ as
5968
5998
  }, userRef) {
5969
5999
  const ctx = (0, import_react34.useContext)(dropZoneContext);
5970
6000
  const appStoreApi = useAppStoreApi();
@@ -6107,8 +6137,9 @@ var DropZoneEdit = (0, import_react34.forwardRef)(
6107
6137
  userMinEmptyHeight,
6108
6138
  ref
6109
6139
  });
6140
+ const El = as != null ? as : "div";
6110
6141
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
6111
- "div",
6142
+ El,
6112
6143
  {
6113
6144
  className: `${getClassName18({
6114
6145
  isRootZone,
@@ -6171,7 +6202,7 @@ var DropZoneRenderItem = ({
6171
6202
  };
6172
6203
  var DropZoneRenderPure = (props) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropZoneRender, __spreadValues({}, props));
6173
6204
  var DropZoneRender = (0, import_react34.forwardRef)(
6174
- function DropZoneRenderInternal({ className, style, zone }, ref) {
6205
+ function DropZoneRenderInternal({ className, style, zone, as }, ref) {
6175
6206
  const ctx = (0, import_react34.useContext)(dropZoneContext);
6176
6207
  const { areaId = "root" } = ctx || {};
6177
6208
  const { config, data, metadata } = (0, import_react34.useContext)(renderContext);
@@ -6184,13 +6215,14 @@ var DropZoneRender = (0, import_react34.forwardRef)(
6184
6215
  }
6185
6216
  }
6186
6217
  }, [content]);
6218
+ const El = as != null ? as : "div";
6187
6219
  if (!data || !config) {
6188
6220
  return null;
6189
6221
  }
6190
6222
  if (zoneCompound !== rootDroppableId) {
6191
6223
  content = setupZone(data, zoneCompound).zones[zoneCompound];
6192
6224
  }
6193
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className, style, ref, children: content.map((item) => {
6225
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(El, { className, style, ref, children: content.map((item) => {
6194
6226
  const Component = config.components[item.type];
6195
6227
  if (Component) {
6196
6228
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
@@ -6496,7 +6528,8 @@ var createNestedDroppablePlugin = ({ onChange }, id) => class NestedDroppablePlu
6496
6528
 
6497
6529
  // lib/insert-component.ts
6498
6530
  init_react_import();
6499
- var insertComponent = (componentType, zone, index, appStore) => __async(void 0, null, function* () {
6531
+ var insertComponent = (componentType, zone, index, appStore) => __async(null, null, function* () {
6532
+ const { getState } = appStore;
6500
6533
  const id = generateId(componentType);
6501
6534
  const insertActionData = {
6502
6535
  type: "insert",
@@ -6505,8 +6538,9 @@ var insertComponent = (componentType, zone, index, appStore) => __async(void 0,
6505
6538
  destinationZone: zone,
6506
6539
  id
6507
6540
  };
6508
- const { state, dispatch, resolveComponentData: resolveComponentData2 } = appStore;
6509
- const insertedState = insertAction(state, insertActionData, appStore);
6541
+ const stateBefore = getState().state;
6542
+ const insertedState = insertAction(stateBefore, insertActionData, getState());
6543
+ const dispatch = getState().dispatch;
6510
6544
  dispatch(__spreadProps(__spreadValues({}, insertActionData), {
6511
6545
  // Dispatch insert rather set, as user's may rely on this via onAction
6512
6546
  // We must always record history here so the insert is added to user history
@@ -6514,23 +6548,21 @@ var insertComponent = (componentType, zone, index, appStore) => __async(void 0,
6514
6548
  // entries on insert - one for the initial insert, and one when the data resolves
6515
6549
  recordHistory: true
6516
6550
  }));
6517
- const itemSelector = {
6518
- index,
6519
- zone
6520
- };
6551
+ const itemSelector = { index, zone };
6521
6552
  dispatch({ type: "setUi", ui: { itemSelector } });
6522
6553
  const itemData = getItem(itemSelector, insertedState);
6523
- if (itemData) {
6524
- const resolved = yield resolveComponentData2(itemData, "insert");
6525
- if (resolved.didChange) {
6526
- dispatch({
6527
- type: "replace",
6528
- destinationZone: itemSelector.zone,
6529
- destinationIndex: itemSelector.index,
6530
- data: resolved.node
6531
- });
6532
- }
6533
- }
6554
+ if (!itemData) return;
6555
+ const resolveComponentData2 = getState().resolveComponentData;
6556
+ const resolved = yield resolveComponentData2(itemData, "insert");
6557
+ if (!resolved.didChange) return;
6558
+ const latestItemSelector = getSelectorForId(getState().state, id);
6559
+ if (!latestItemSelector) return;
6560
+ dispatch({
6561
+ type: "replace",
6562
+ destinationZone: latestItemSelector.zone,
6563
+ destinationIndex: latestItemSelector.index,
6564
+ data: resolved.node
6565
+ });
6534
6566
  });
6535
6567
 
6536
6568
  // components/DragDropContext/index.tsx
@@ -6767,7 +6799,7 @@ var DragDropContextClient = ({
6767
6799
  thisPreview.componentType,
6768
6800
  thisPreview.zone,
6769
6801
  thisPreview.index,
6770
- appStore.getState()
6802
+ appStore
6771
6803
  );
6772
6804
  } else if (initialSelector.current) {
6773
6805
  dispatch({
@@ -7204,49 +7236,48 @@ var DefaultFields = ({
7204
7236
  }) => {
7205
7237
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, { children });
7206
7238
  };
7207
- var createOnChange = (fieldName, appStore) => (value, updatedUi) => __async(void 0, null, function* () {
7208
- let currentProps;
7239
+ var createOnChange = (fieldName, appStore) => (value, updatedUi) => __async(null, null, function* () {
7209
7240
  const { dispatch, state, selectedItem, resolveComponentData: resolveComponentData2 } = appStore.getState();
7210
7241
  const { data, ui } = state;
7211
7242
  const { itemSelector } = ui;
7212
7243
  const rootProps = data.root.props || data.root;
7213
- if (selectedItem) {
7214
- currentProps = selectedItem.props;
7215
- } else {
7216
- currentProps = rootProps;
7217
- }
7218
- const newProps = __spreadProps(__spreadValues({}, currentProps), {
7219
- [fieldName]: value
7220
- });
7244
+ const currentProps = selectedItem ? selectedItem.props : rootProps;
7245
+ const newProps = __spreadProps(__spreadValues({}, currentProps), { [fieldName]: value });
7221
7246
  if (selectedItem && itemSelector) {
7247
+ const resolved = yield resolveComponentData2(
7248
+ __spreadProps(__spreadValues({}, selectedItem), { props: newProps }),
7249
+ "replace"
7250
+ );
7251
+ const latestSelector = getSelectorForId(
7252
+ appStore.getState().state,
7253
+ selectedItem.props.id
7254
+ );
7255
+ if (!latestSelector) return;
7222
7256
  dispatch({
7223
7257
  type: "replace",
7224
- destinationIndex: itemSelector.index,
7225
- destinationZone: itemSelector.zone || rootDroppableId,
7226
- data: (yield resolveComponentData2(
7227
- __spreadProps(__spreadValues({}, selectedItem), { props: newProps }),
7258
+ destinationIndex: latestSelector.index,
7259
+ destinationZone: latestSelector.zone || rootDroppableId,
7260
+ data: resolved.node,
7261
+ ui: updatedUi
7262
+ });
7263
+ return;
7264
+ }
7265
+ if (data.root.props) {
7266
+ dispatch({
7267
+ type: "replaceRoot",
7268
+ root: (yield resolveComponentData2(
7269
+ __spreadProps(__spreadValues({}, data.root), { props: newProps }),
7228
7270
  "replace"
7229
7271
  )).node,
7230
- ui: updatedUi
7272
+ ui: __spreadValues(__spreadValues({}, ui), updatedUi),
7273
+ recordHistory: true
7231
7274
  });
7232
- } else {
7233
- if (data.root.props) {
7234
- dispatch({
7235
- type: "replaceRoot",
7236
- root: (yield resolveComponentData2(
7237
- __spreadProps(__spreadValues({}, data.root), { props: newProps }),
7238
- "replace"
7239
- )).node,
7240
- ui: __spreadValues(__spreadValues({}, ui), updatedUi),
7241
- recordHistory: true
7242
- });
7243
- } else {
7244
- dispatch({
7245
- type: "setData",
7246
- data: { root: newProps }
7247
- });
7248
- }
7275
+ return;
7249
7276
  }
7277
+ dispatch({
7278
+ type: "setData",
7279
+ data: { root: newProps }
7280
+ });
7250
7281
  });
7251
7282
  var FieldsChild = ({ fieldName }) => {
7252
7283
  const field = useAppStore((s) => s.fields.fields[fieldName]);
@@ -7573,7 +7604,7 @@ var CopyHostStyles = ({
7573
7604
  let elements = [];
7574
7605
  const hashes = {};
7575
7606
  const lookupEl = (el) => elements.findIndex((elementMap) => elementMap.original === el);
7576
- const mirrorEl = (el, inlineStyles = false) => __async(void 0, null, function* () {
7607
+ const mirrorEl = (el, inlineStyles = false) => __async(null, null, function* () {
7577
7608
  let mirror;
7578
7609
  if (el.nodeName === "LINK" && inlineStyles) {
7579
7610
  mirror = document.createElement("style");
@@ -7605,7 +7636,7 @@ var CopyHostStyles = ({
7605
7636
  }
7606
7637
  return mirror;
7607
7638
  });
7608
- const addEl = (el) => __async(void 0, null, function* () {
7639
+ const addEl = (el) => __async(null, null, function* () {
7609
7640
  const index = lookupEl(el);
7610
7641
  if (index > -1) {
7611
7642
  if (debug)
@@ -7678,7 +7709,7 @@ var CopyHostStyles = ({
7678
7709
  const parentBody = parentDocument.getElementsByTagName("body")[0];
7679
7710
  syncAttributes(parentBody, doc.body);
7680
7711
  Promise.all(
7681
- collectedStyles.map((styleNode, i) => __async(void 0, null, function* () {
7712
+ collectedStyles.map((styleNode, i) => __async(null, null, function* () {
7682
7713
  if (styleNode.nodeName === "LINK") {
7683
7714
  const linkHref = styleNode.href;
7684
7715
  if (hrefs.indexOf(linkHref) > -1) {
@@ -8753,7 +8784,7 @@ function createUsePuck() {
8753
8784
  }
8754
8785
  const result = (0, import_zustand6.useStore)(
8755
8786
  usePuckApi,
8756
- selector != null ? selector : (s) => s
8787
+ selector != null ? selector : ((s) => s)
8757
8788
  );
8758
8789
  return result;
8759
8790
  };
@@ -9203,6 +9234,15 @@ function useSidebarResize(position, dispatch) {
9203
9234
  };
9204
9235
  }
9205
9236
 
9237
+ // lib/data/to-component.ts
9238
+ init_react_import();
9239
+ var toComponent = (item) => {
9240
+ return "type" in item ? item : __spreadProps(__spreadValues({}, item), {
9241
+ props: __spreadProps(__spreadValues({}, item.props), { id: "root" }),
9242
+ type: "root"
9243
+ });
9244
+ };
9245
+
9206
9246
  // components/Puck/index.tsx
9207
9247
  var import_jsx_runtime46 = require("react/jsx-runtime");
9208
9248
  var getClassName31 = get_class_name_factory_default("Puck", styles_module_default15);
@@ -9279,9 +9319,13 @@ function PuckProvider({ children }) {
9279
9319
  }
9280
9320
  const rootProps = ((_h = initialData == null ? void 0 : initialData.root) == null ? void 0 : _h.props) || (initialData == null ? void 0 : initialData.root) || {};
9281
9321
  const defaultedRootProps = __spreadValues(__spreadValues({}, (_i = config.root) == null ? void 0 : _i.defaultProps), rootProps);
9322
+ const root = populateIds(
9323
+ toComponent(__spreadProps(__spreadValues({}, initialData == null ? void 0 : initialData.root), { props: defaultedRootProps })),
9324
+ config
9325
+ );
9282
9326
  const newAppState = __spreadProps(__spreadValues({}, defaultAppState), {
9283
9327
  data: __spreadProps(__spreadValues({}, initialData), {
9284
- root: __spreadProps(__spreadValues({}, initialData == null ? void 0 : initialData.root), { props: defaultedRootProps }),
9328
+ root: __spreadProps(__spreadValues({}, initialData == null ? void 0 : initialData.root), { props: root.props }),
9285
9329
  content: initialData.content || []
9286
9330
  }),
9287
9331
  ui: __spreadProps(__spreadValues(__spreadValues({}, initial), clientUiState), {
@@ -9318,7 +9362,12 @@ function PuckProvider({ children }) {
9318
9362
  });
9319
9363
  })
9320
9364
  );
9321
- const initialHistoryIndex = (_initialHistory == null ? void 0 : _initialHistory.index) || blendedHistories.length - 1;
9365
+ const initialHistoryIndex = (0, import_react60.useMemo)(() => {
9366
+ if ((_initialHistory == null ? void 0 : _initialHistory.index) !== void 0 && (_initialHistory == null ? void 0 : _initialHistory.index) >= 0 && (_initialHistory == null ? void 0 : _initialHistory.index) < blendedHistories.length) {
9367
+ return _initialHistory == null ? void 0 : _initialHistory.index;
9368
+ }
9369
+ return blendedHistories.length - 1;
9370
+ }, []);
9322
9371
  const initialAppState = blendedHistories[initialHistoryIndex].state;
9323
9372
  const loadedOverrides = useLoadedOverrides({
9324
9373
  overrides,
@@ -9377,7 +9426,7 @@ function PuckProvider({ children }) {
9377
9426
  });
9378
9427
  const previousData = (0, import_react60.useRef)(null);
9379
9428
  (0, import_react60.useEffect)(() => {
9380
- appStore.subscribe(
9429
+ return appStore.subscribe(
9381
9430
  (s) => s.state.data,
9382
9431
  (data) => {
9383
9432
  if (onChange) {
@@ -9387,7 +9436,7 @@ function PuckProvider({ children }) {
9387
9436
  }
9388
9437
  }
9389
9438
  );
9390
- }, []);
9439
+ }, [onChange]);
9391
9440
  useRegisterPermissionsSlice(appStore, permissions);
9392
9441
  const uPuckStore = useRegisterUsePuckStore(appStore);
9393
9442
  (0, import_react60.useEffect)(() => {
@@ -9700,22 +9749,11 @@ function transformProps(data, propTransforms, config = { components: {} }) {
9700
9749
 
9701
9750
  // lib/resolve-all-data.ts
9702
9751
  init_react_import();
9703
-
9704
- // lib/data/to-component.ts
9705
- init_react_import();
9706
- var toComponent = (item) => {
9707
- return "type" in item ? item : __spreadProps(__spreadValues({}, item), {
9708
- props: __spreadProps(__spreadValues({}, item.props), { id: "root" }),
9709
- type: "root"
9710
- });
9711
- };
9712
-
9713
- // lib/resolve-all-data.ts
9714
9752
  function resolveAllData(_0, _1) {
9715
9753
  return __async(this, arguments, function* (data, config, metadata = {}, onResolveStart, onResolveEnd) {
9716
9754
  var _a;
9717
9755
  const defaultedData = defaultData(data);
9718
- const resolveNode = (_node) => __async(this, null, function* () {
9756
+ const resolveNode = (_node) => __async(null, null, function* () {
9719
9757
  const node = toComponent(_node);
9720
9758
  onResolveStart == null ? void 0 : onResolveStart(node);
9721
9759
  const resolved = (yield resolveComponentData(
@@ -9736,13 +9774,13 @@ function resolveAllData(_0, _1) {
9736
9774
  onResolveEnd == null ? void 0 : onResolveEnd(toComponent(resolvedDeep));
9737
9775
  return resolvedDeep;
9738
9776
  });
9739
- const processContent = (content) => __async(this, null, function* () {
9777
+ const processContent = (content) => __async(null, null, function* () {
9740
9778
  return Promise.all(content.map(resolveNode));
9741
9779
  });
9742
- const processZones = () => __async(this, null, function* () {
9780
+ const processZones = () => __async(null, null, function* () {
9743
9781
  var _a2;
9744
9782
  const zones = (_a2 = data.zones) != null ? _a2 : {};
9745
- Object.entries(zones).forEach((_02) => __async(this, [_02], function* ([zoneKey, content]) {
9783
+ Object.entries(zones).forEach((_02) => __async(null, [_02], function* ([zoneKey, content]) {
9746
9784
  zones[zoneKey] = yield Promise.all(content.map(resolveNode));
9747
9785
  }));
9748
9786
  return zones;
@@ -9752,7 +9790,7 @@ function resolveAllData(_0, _1) {
9752
9790
  content: yield processContent(defaultedData.content),
9753
9791
  zones: yield processZones()
9754
9792
  };
9755
- Object.keys((_a = defaultedData.zones) != null ? _a : {}).forEach((zoneKey) => __async(this, null, function* () {
9793
+ Object.keys((_a = defaultedData.zones) != null ? _a : {}).forEach((zoneKey) => __async(null, null, function* () {
9756
9794
  const content = defaultedData.zones[zoneKey];
9757
9795
  dynamic.zones[zoneKey] = yield processContent(content);
9758
9796
  }), {});
@@ -9795,269 +9833,38 @@ classnames/index.js:
9795
9833
  *)
9796
9834
 
9797
9835
  lucide-react/dist/esm/shared/src/utils.js:
9798
- (**
9799
- * @license lucide-react v0.468.0 - ISC
9800
- *
9801
- * This source code is licensed under the ISC license.
9802
- * See the LICENSE file in the root directory of this source tree.
9803
- *)
9804
-
9805
9836
  lucide-react/dist/esm/defaultAttributes.js:
9806
- (**
9807
- * @license lucide-react v0.468.0 - ISC
9808
- *
9809
- * This source code is licensed under the ISC license.
9810
- * See the LICENSE file in the root directory of this source tree.
9811
- *)
9812
-
9813
9837
  lucide-react/dist/esm/Icon.js:
9814
- (**
9815
- * @license lucide-react v0.468.0 - ISC
9816
- *
9817
- * This source code is licensed under the ISC license.
9818
- * See the LICENSE file in the root directory of this source tree.
9819
- *)
9820
-
9821
9838
  lucide-react/dist/esm/createLucideIcon.js:
9822
- (**
9823
- * @license lucide-react v0.468.0 - ISC
9824
- *
9825
- * This source code is licensed under the ISC license.
9826
- * See the LICENSE file in the root directory of this source tree.
9827
- *)
9828
-
9829
9839
  lucide-react/dist/esm/icons/chevron-down.js:
9830
- (**
9831
- * @license lucide-react v0.468.0 - ISC
9832
- *
9833
- * This source code is licensed under the ISC license.
9834
- * See the LICENSE file in the root directory of this source tree.
9835
- *)
9836
-
9837
9840
  lucide-react/dist/esm/icons/chevron-right.js:
9838
- (**
9839
- * @license lucide-react v0.468.0 - ISC
9840
- *
9841
- * This source code is licensed under the ISC license.
9842
- * See the LICENSE file in the root directory of this source tree.
9843
- *)
9844
-
9845
9841
  lucide-react/dist/esm/icons/chevron-up.js:
9846
- (**
9847
- * @license lucide-react v0.468.0 - ISC
9848
- *
9849
- * This source code is licensed under the ISC license.
9850
- * See the LICENSE file in the root directory of this source tree.
9851
- *)
9852
-
9853
9842
  lucide-react/dist/esm/icons/circle-check-big.js:
9854
- (**
9855
- * @license lucide-react v0.468.0 - ISC
9856
- *
9857
- * This source code is licensed under the ISC license.
9858
- * See the LICENSE file in the root directory of this source tree.
9859
- *)
9860
-
9861
9843
  lucide-react/dist/esm/icons/copy.js:
9862
- (**
9863
- * @license lucide-react v0.468.0 - ISC
9864
- *
9865
- * This source code is licensed under the ISC license.
9866
- * See the LICENSE file in the root directory of this source tree.
9867
- *)
9868
-
9869
9844
  lucide-react/dist/esm/icons/corner-left-up.js:
9870
- (**
9871
- * @license lucide-react v0.468.0 - ISC
9872
- *
9873
- * This source code is licensed under the ISC license.
9874
- * See the LICENSE file in the root directory of this source tree.
9875
- *)
9876
-
9877
9845
  lucide-react/dist/esm/icons/ellipsis-vertical.js:
9878
- (**
9879
- * @license lucide-react v0.468.0 - ISC
9880
- *
9881
- * This source code is licensed under the ISC license.
9882
- * See the LICENSE file in the root directory of this source tree.
9883
- *)
9884
-
9885
9846
  lucide-react/dist/esm/icons/globe.js:
9886
- (**
9887
- * @license lucide-react v0.468.0 - ISC
9888
- *
9889
- * This source code is licensed under the ISC license.
9890
- * See the LICENSE file in the root directory of this source tree.
9891
- *)
9892
-
9893
9847
  lucide-react/dist/esm/icons/hash.js:
9894
- (**
9895
- * @license lucide-react v0.468.0 - ISC
9896
- *
9897
- * This source code is licensed under the ISC license.
9898
- * See the LICENSE file in the root directory of this source tree.
9899
- *)
9900
-
9901
9848
  lucide-react/dist/esm/icons/layers.js:
9902
- (**
9903
- * @license lucide-react v0.468.0 - ISC
9904
- *
9905
- * This source code is licensed under the ISC license.
9906
- * See the LICENSE file in the root directory of this source tree.
9907
- *)
9908
-
9909
9849
  lucide-react/dist/esm/icons/layout-grid.js:
9910
- (**
9911
- * @license lucide-react v0.468.0 - ISC
9912
- *
9913
- * This source code is licensed under the ISC license.
9914
- * See the LICENSE file in the root directory of this source tree.
9915
- *)
9916
-
9917
9850
  lucide-react/dist/esm/icons/link.js:
9918
- (**
9919
- * @license lucide-react v0.468.0 - ISC
9920
- *
9921
- * This source code is licensed under the ISC license.
9922
- * See the LICENSE file in the root directory of this source tree.
9923
- *)
9924
-
9925
9851
  lucide-react/dist/esm/icons/list.js:
9926
- (**
9927
- * @license lucide-react v0.468.0 - ISC
9928
- *
9929
- * This source code is licensed under the ISC license.
9930
- * See the LICENSE file in the root directory of this source tree.
9931
- *)
9932
-
9933
9852
  lucide-react/dist/esm/icons/lock-open.js:
9934
- (**
9935
- * @license lucide-react v0.468.0 - ISC
9936
- *
9937
- * This source code is licensed under the ISC license.
9938
- * See the LICENSE file in the root directory of this source tree.
9939
- *)
9940
-
9941
9853
  lucide-react/dist/esm/icons/lock.js:
9942
- (**
9943
- * @license lucide-react v0.468.0 - ISC
9944
- *
9945
- * This source code is licensed under the ISC license.
9946
- * See the LICENSE file in the root directory of this source tree.
9947
- *)
9948
-
9949
9854
  lucide-react/dist/esm/icons/monitor.js:
9950
- (**
9951
- * @license lucide-react v0.468.0 - ISC
9952
- *
9953
- * This source code is licensed under the ISC license.
9954
- * See the LICENSE file in the root directory of this source tree.
9955
- *)
9956
-
9957
9855
  lucide-react/dist/esm/icons/panel-left.js:
9958
- (**
9959
- * @license lucide-react v0.468.0 - ISC
9960
- *
9961
- * This source code is licensed under the ISC license.
9962
- * See the LICENSE file in the root directory of this source tree.
9963
- *)
9964
-
9965
9856
  lucide-react/dist/esm/icons/panel-right.js:
9966
- (**
9967
- * @license lucide-react v0.468.0 - ISC
9968
- *
9969
- * This source code is licensed under the ISC license.
9970
- * See the LICENSE file in the root directory of this source tree.
9971
- *)
9972
-
9973
9857
  lucide-react/dist/esm/icons/plus.js:
9974
- (**
9975
- * @license lucide-react v0.468.0 - ISC
9976
- *
9977
- * This source code is licensed under the ISC license.
9978
- * See the LICENSE file in the root directory of this source tree.
9979
- *)
9980
-
9981
9858
  lucide-react/dist/esm/icons/redo-2.js:
9982
- (**
9983
- * @license lucide-react v0.468.0 - ISC
9984
- *
9985
- * This source code is licensed under the ISC license.
9986
- * See the LICENSE file in the root directory of this source tree.
9987
- *)
9988
-
9989
9859
  lucide-react/dist/esm/icons/search.js:
9990
- (**
9991
- * @license lucide-react v0.468.0 - ISC
9992
- *
9993
- * This source code is licensed under the ISC license.
9994
- * See the LICENSE file in the root directory of this source tree.
9995
- *)
9996
-
9997
9860
  lucide-react/dist/esm/icons/sliders-horizontal.js:
9998
- (**
9999
- * @license lucide-react v0.468.0 - ISC
10000
- *
10001
- * This source code is licensed under the ISC license.
10002
- * See the LICENSE file in the root directory of this source tree.
10003
- *)
10004
-
10005
9861
  lucide-react/dist/esm/icons/smartphone.js:
10006
- (**
10007
- * @license lucide-react v0.468.0 - ISC
10008
- *
10009
- * This source code is licensed under the ISC license.
10010
- * See the LICENSE file in the root directory of this source tree.
10011
- *)
10012
-
10013
9862
  lucide-react/dist/esm/icons/tablet.js:
10014
- (**
10015
- * @license lucide-react v0.468.0 - ISC
10016
- *
10017
- * This source code is licensed under the ISC license.
10018
- * See the LICENSE file in the root directory of this source tree.
10019
- *)
10020
-
10021
9863
  lucide-react/dist/esm/icons/trash.js:
10022
- (**
10023
- * @license lucide-react v0.468.0 - ISC
10024
- *
10025
- * This source code is licensed under the ISC license.
10026
- * See the LICENSE file in the root directory of this source tree.
10027
- *)
10028
-
10029
9864
  lucide-react/dist/esm/icons/type.js:
10030
- (**
10031
- * @license lucide-react v0.468.0 - ISC
10032
- *
10033
- * This source code is licensed under the ISC license.
10034
- * See the LICENSE file in the root directory of this source tree.
10035
- *)
10036
-
10037
9865
  lucide-react/dist/esm/icons/undo-2.js:
10038
- (**
10039
- * @license lucide-react v0.468.0 - ISC
10040
- *
10041
- * This source code is licensed under the ISC license.
10042
- * See the LICENSE file in the root directory of this source tree.
10043
- *)
10044
-
10045
9866
  lucide-react/dist/esm/icons/zoom-in.js:
10046
- (**
10047
- * @license lucide-react v0.468.0 - ISC
10048
- *
10049
- * This source code is licensed under the ISC license.
10050
- * See the LICENSE file in the root directory of this source tree.
10051
- *)
10052
-
10053
9867
  lucide-react/dist/esm/icons/zoom-out.js:
10054
- (**
10055
- * @license lucide-react v0.468.0 - ISC
10056
- *
10057
- * This source code is licensed under the ISC license.
10058
- * See the LICENSE file in the root directory of this source tree.
10059
- *)
10060
-
10061
9868
  lucide-react/dist/esm/lucide-react.js:
10062
9869
  (**
10063
9870
  * @license lucide-react v0.468.0 - ISC