@measured/puck 0.21.0-canary.bd7b613d → 0.21.0-canary.c0db75c1

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.
@@ -1,30 +1,41 @@
1
+ import {
2
+ createReducer,
3
+ generateId,
4
+ getItem,
5
+ insert,
6
+ insertAction,
7
+ makeStatePublic,
8
+ populateIds
9
+ } from "./chunk-J32NOAUF.mjs";
1
10
  import {
2
11
  SlotRender,
3
12
  SlotRenderPure,
13
+ defaultAppState,
14
+ defaultViewports,
15
+ getChanged,
16
+ getSlotTransform,
17
+ resolveComponentData,
18
+ toComponent,
19
+ useFieldTransforms,
20
+ useSlots
21
+ } from "./chunk-PJYARUPI.mjs";
22
+ import {
4
23
  __async,
5
24
  __commonJS,
6
25
  __objRest,
7
26
  __spreadProps,
8
27
  __spreadValues,
9
28
  __toESM,
10
- defaultAppState,
11
29
  defaultSlots,
12
- defaultViewports,
13
30
  expandNode,
14
- getChanged,
15
- getSlotTransform,
16
31
  init_react_import,
17
- resolveComponentData,
18
32
  rootAreaId,
19
33
  rootDroppableId,
20
34
  rootZone,
21
35
  setupZone,
22
- useFieldTransforms,
23
- useSlots,
24
36
  walkAppState,
25
- walkField,
26
- walkTree
27
- } from "./chunk-FPQ7BWRD.mjs";
37
+ walkField
38
+ } from "./chunk-S3RM5GHZ.mjs";
28
39
 
29
40
  // ../../node_modules/classnames/index.js
30
41
  var require_classnames = __commonJS({
@@ -252,513 +263,6 @@ init_react_import();
252
263
 
253
264
  // store/index.ts
254
265
  init_react_import();
255
-
256
- // reducer/index.ts
257
- init_react_import();
258
-
259
- // reducer/actions/set.ts
260
- init_react_import();
261
- var setAction = (state, action, appStore) => {
262
- if (typeof action.state === "object") {
263
- const newState = __spreadValues(__spreadValues({}, state), action.state);
264
- if (action.state.indexes) {
265
- return newState;
266
- }
267
- console.warn(
268
- "`set` is expensive and may cause unnecessary re-renders. Consider using a more atomic action instead."
269
- );
270
- return walkAppState(newState, appStore.config);
271
- }
272
- return __spreadValues(__spreadValues({}, state), action.state(state));
273
- };
274
-
275
- // reducer/actions/insert.ts
276
- init_react_import();
277
-
278
- // lib/data/insert.ts
279
- init_react_import();
280
- var insert = (list, index, item) => {
281
- const result = Array.from(list || []);
282
- result.splice(index, 0, item);
283
- return result;
284
- };
285
-
286
- // lib/generate-id.ts
287
- init_react_import();
288
- import { v4 as uuidv4 } from "uuid";
289
- var generateId = (type) => type ? `${type}-${uuidv4()}` : uuidv4();
290
-
291
- // lib/data/get-ids-for-parent.ts
292
- init_react_import();
293
- var getIdsForParent = (zoneCompound, state) => {
294
- const [parentId] = zoneCompound.split(":");
295
- const node = state.indexes.nodes[parentId];
296
- return ((node == null ? void 0 : node.path) || []).map((p) => p.split(":")[0]);
297
- };
298
-
299
- // lib/data/populate-ids.ts
300
- init_react_import();
301
- var populateIds = (data, config, override = false) => {
302
- const id = generateId(data.type);
303
- return walkTree(
304
- __spreadProps(__spreadValues({}, data), {
305
- props: override ? __spreadProps(__spreadValues({}, data.props), { id }) : __spreadValues({}, data.props)
306
- }),
307
- config,
308
- (contents) => contents.map((item) => {
309
- const id2 = generateId(item.type);
310
- return __spreadProps(__spreadValues({}, item), {
311
- props: override ? __spreadProps(__spreadValues({}, item.props), { id: id2 }) : __spreadValues({ id: id2 }, item.props)
312
- });
313
- })
314
- );
315
- };
316
-
317
- // reducer/actions/insert.ts
318
- function insertAction(state, action, appStore) {
319
- const id = action.id || generateId(action.componentType);
320
- const emptyComponentData = populateIds(
321
- {
322
- type: action.componentType,
323
- props: __spreadProps(__spreadValues({}, appStore.config.components[action.componentType].defaultProps || {}), {
324
- id
325
- })
326
- },
327
- appStore.config
328
- );
329
- const [parentId] = action.destinationZone.split(":");
330
- const idsInPath = getIdsForParent(action.destinationZone, state);
331
- return walkAppState(
332
- state,
333
- appStore.config,
334
- (content, zoneCompound) => {
335
- if (zoneCompound === action.destinationZone) {
336
- return insert(
337
- content || [],
338
- action.destinationIndex,
339
- emptyComponentData
340
- );
341
- }
342
- return content;
343
- },
344
- (childItem, path) => {
345
- if (childItem.props.id === id || childItem.props.id === parentId) {
346
- return childItem;
347
- } else if (idsInPath.includes(childItem.props.id)) {
348
- return childItem;
349
- } else if (path.includes(action.destinationZone)) {
350
- return childItem;
351
- }
352
- return null;
353
- }
354
- );
355
- }
356
-
357
- // reducer/actions/replace.ts
358
- init_react_import();
359
- var replaceAction = (state, action, appStore) => {
360
- const [parentId] = action.destinationZone.split(":");
361
- const idsInPath = getIdsForParent(action.destinationZone, state);
362
- const originalId = state.indexes.zones[action.destinationZone].contentIds[action.destinationIndex];
363
- const idChanged = originalId !== action.data.props.id;
364
- if (idChanged) {
365
- throw new Error(
366
- `Can't change the id during a replace action. Please us "remove" and "insert" to define a new node.`
367
- );
368
- }
369
- const newSlotIds = [];
370
- const data = walkTree(action.data, appStore.config, (contents, opts) => {
371
- newSlotIds.push(`${opts.parentId}:${opts.propName}`);
372
- return contents.map((item) => {
373
- const id = generateId(item.type);
374
- return __spreadProps(__spreadValues({}, item), {
375
- props: __spreadValues({ id }, item.props)
376
- });
377
- });
378
- });
379
- const stateWithDeepSlotsRemoved = __spreadValues({}, state);
380
- Object.keys(state.indexes.zones).forEach((zoneCompound) => {
381
- const id = zoneCompound.split(":")[0];
382
- if (id === originalId) {
383
- if (!newSlotIds.includes(zoneCompound)) {
384
- delete stateWithDeepSlotsRemoved.indexes.zones[zoneCompound];
385
- }
386
- }
387
- });
388
- return walkAppState(
389
- stateWithDeepSlotsRemoved,
390
- appStore.config,
391
- (content, zoneCompound) => {
392
- const newContent = [...content];
393
- if (zoneCompound === action.destinationZone) {
394
- newContent[action.destinationIndex] = data;
395
- }
396
- return newContent;
397
- },
398
- (childItem, path) => {
399
- const pathIds = path.map((p) => p.split(":")[0]);
400
- if (childItem.props.id === data.props.id) {
401
- return data;
402
- } else if (childItem.props.id === parentId) {
403
- return childItem;
404
- } else if (idsInPath.indexOf(childItem.props.id) > -1) {
405
- return childItem;
406
- } else if (pathIds.indexOf(data.props.id) > -1) {
407
- return childItem;
408
- }
409
- return null;
410
- }
411
- );
412
- };
413
-
414
- // reducer/actions/replace-root.ts
415
- init_react_import();
416
- var replaceRootAction = (state, action, appStore) => {
417
- return walkAppState(
418
- state,
419
- appStore.config,
420
- (content) => content,
421
- (childItem) => {
422
- if (childItem.props.id === "root") {
423
- return __spreadProps(__spreadValues({}, childItem), {
424
- props: __spreadValues(__spreadValues({}, childItem.props), action.root.props),
425
- readOnly: action.root.readOnly
426
- });
427
- }
428
- return childItem;
429
- }
430
- );
431
- };
432
-
433
- // reducer/actions/duplicate.ts
434
- init_react_import();
435
-
436
- // lib/data/get-item.ts
437
- init_react_import();
438
- function getItem(selector, state) {
439
- var _a, _b;
440
- const zone = (_a = state.indexes.zones) == null ? void 0 : _a[selector.zone || rootDroppableId];
441
- return zone ? (_b = state.indexes.nodes[zone.contentIds[selector.index]]) == null ? void 0 : _b.data : void 0;
442
- }
443
-
444
- // reducer/actions/duplicate.ts
445
- function duplicateAction(state, action, appStore) {
446
- const item = getItem(
447
- { index: action.sourceIndex, zone: action.sourceZone },
448
- state
449
- );
450
- const idsInPath = getIdsForParent(action.sourceZone, state);
451
- const newItem = __spreadProps(__spreadValues({}, item), {
452
- props: __spreadProps(__spreadValues({}, item.props), {
453
- id: generateId(item.type)
454
- })
455
- });
456
- const modified = walkAppState(
457
- state,
458
- appStore.config,
459
- (content, zoneCompound) => {
460
- if (zoneCompound === action.sourceZone) {
461
- return insert(content, action.sourceIndex + 1, item);
462
- }
463
- return content;
464
- },
465
- (childItem, path, index) => {
466
- const zoneCompound = path[path.length - 1];
467
- const parents = path.map((p) => p.split(":")[0]);
468
- if (parents.indexOf(newItem.props.id) > -1) {
469
- return __spreadProps(__spreadValues({}, childItem), {
470
- props: __spreadProps(__spreadValues({}, childItem.props), {
471
- id: generateId(childItem.type)
472
- })
473
- });
474
- }
475
- if (zoneCompound === action.sourceZone && index === action.sourceIndex + 1) {
476
- return newItem;
477
- }
478
- const [sourceZoneParent] = action.sourceZone.split(":");
479
- if (sourceZoneParent === childItem.props.id || idsInPath.indexOf(childItem.props.id) > -1) {
480
- return childItem;
481
- }
482
- return null;
483
- }
484
- );
485
- return __spreadProps(__spreadValues({}, modified), {
486
- ui: __spreadProps(__spreadValues({}, modified.ui), {
487
- itemSelector: {
488
- index: action.sourceIndex + 1,
489
- zone: action.sourceZone
490
- }
491
- })
492
- });
493
- }
494
-
495
- // reducer/actions/reorder.ts
496
- init_react_import();
497
-
498
- // reducer/actions/move.ts
499
- init_react_import();
500
-
501
- // lib/data/remove.ts
502
- init_react_import();
503
- var remove = (list, index) => {
504
- const result = Array.from(list);
505
- result.splice(index, 1);
506
- return result;
507
- };
508
-
509
- // reducer/actions/move.ts
510
- var moveAction = (state, action, appStore) => {
511
- if (action.sourceZone === action.destinationZone && action.sourceIndex === action.destinationIndex) {
512
- return state;
513
- }
514
- const item = getItem(
515
- { zone: action.sourceZone, index: action.sourceIndex },
516
- state
517
- );
518
- if (!item) return state;
519
- const idsInSourcePath = getIdsForParent(action.sourceZone, state);
520
- const idsInDestinationPath = getIdsForParent(action.destinationZone, state);
521
- return walkAppState(
522
- state,
523
- appStore.config,
524
- (content, zoneCompound) => {
525
- if (zoneCompound === action.sourceZone && zoneCompound === action.destinationZone) {
526
- return insert(
527
- remove(content, action.sourceIndex),
528
- action.destinationIndex,
529
- item
530
- );
531
- } else if (zoneCompound === action.sourceZone) {
532
- return remove(content, action.sourceIndex);
533
- } else if (zoneCompound === action.destinationZone) {
534
- return insert(content, action.destinationIndex, item);
535
- }
536
- return content;
537
- },
538
- (childItem, path) => {
539
- const [sourceZoneParent] = action.sourceZone.split(":");
540
- const [destinationZoneParent] = action.destinationZone.split(":");
541
- const childId = childItem.props.id;
542
- if (sourceZoneParent === childId || destinationZoneParent === childId || item.props.id === childId || idsInSourcePath.indexOf(childId) > -1 || idsInDestinationPath.indexOf(childId) > -1 || path.includes(action.destinationZone)) {
543
- return childItem;
544
- }
545
- return null;
546
- }
547
- );
548
- };
549
-
550
- // reducer/actions/reorder.ts
551
- var reorderAction = (state, action, appStore) => {
552
- return moveAction(
553
- state,
554
- {
555
- type: "move",
556
- sourceIndex: action.sourceIndex,
557
- sourceZone: action.destinationZone,
558
- destinationIndex: action.destinationIndex,
559
- destinationZone: action.destinationZone
560
- },
561
- appStore
562
- );
563
- };
564
-
565
- // reducer/actions/remove.ts
566
- init_react_import();
567
- var removeAction = (state, action, appStore) => {
568
- const item = getItem({ index: action.index, zone: action.zone }, state);
569
- const nodesToDelete = Object.entries(state.indexes.nodes).reduce(
570
- (acc, [nodeId, nodeData]) => {
571
- const pathIds = nodeData.path.map((p) => p.split(":")[0]);
572
- if (pathIds.includes(item.props.id)) {
573
- return [...acc, nodeId];
574
- }
575
- return acc;
576
- },
577
- [item.props.id]
578
- );
579
- const newState = walkAppState(
580
- state,
581
- appStore.config,
582
- (content, zoneCompound) => {
583
- if (zoneCompound === action.zone) {
584
- return remove(content, action.index);
585
- }
586
- return content;
587
- }
588
- );
589
- Object.keys(newState.data.zones || {}).forEach((zoneCompound) => {
590
- const parentId = zoneCompound.split(":")[0];
591
- if (nodesToDelete.includes(parentId) && newState.data.zones) {
592
- delete newState.data.zones[zoneCompound];
593
- }
594
- });
595
- Object.keys(newState.indexes.zones).forEach((zoneCompound) => {
596
- const parentId = zoneCompound.split(":")[0];
597
- if (nodesToDelete.includes(parentId)) {
598
- delete newState.indexes.zones[zoneCompound];
599
- }
600
- });
601
- nodesToDelete.forEach((id) => {
602
- delete newState.indexes.nodes[id];
603
- });
604
- return newState;
605
- };
606
-
607
- // reducer/actions/register-zone.ts
608
- init_react_import();
609
- var zoneCache = {};
610
- function registerZoneAction(state, action) {
611
- if (zoneCache[action.zone]) {
612
- return __spreadProps(__spreadValues({}, state), {
613
- data: __spreadProps(__spreadValues({}, state.data), {
614
- zones: __spreadProps(__spreadValues({}, state.data.zones), {
615
- [action.zone]: zoneCache[action.zone]
616
- })
617
- }),
618
- indexes: __spreadProps(__spreadValues({}, state.indexes), {
619
- zones: __spreadProps(__spreadValues({}, state.indexes.zones), {
620
- [action.zone]: __spreadProps(__spreadValues({}, state.indexes.zones[action.zone]), {
621
- contentIds: zoneCache[action.zone].map((item) => item.props.id),
622
- type: "dropzone"
623
- })
624
- })
625
- })
626
- });
627
- }
628
- return __spreadProps(__spreadValues({}, state), { data: setupZone(state.data, action.zone) });
629
- }
630
- function unregisterZoneAction(state, action) {
631
- const _zones = __spreadValues({}, state.data.zones || {});
632
- const zoneIndex = __spreadValues({}, state.indexes.zones || {});
633
- if (_zones[action.zone]) {
634
- zoneCache[action.zone] = _zones[action.zone];
635
- delete _zones[action.zone];
636
- }
637
- delete zoneIndex[action.zone];
638
- return __spreadProps(__spreadValues({}, state), {
639
- data: __spreadProps(__spreadValues({}, state.data), {
640
- zones: _zones
641
- }),
642
- indexes: __spreadProps(__spreadValues({}, state.indexes), {
643
- zones: zoneIndex
644
- })
645
- });
646
- }
647
-
648
- // reducer/actions/set-data.ts
649
- init_react_import();
650
- var setDataAction = (state, action, appStore) => {
651
- if (typeof action.data === "object") {
652
- console.warn(
653
- "`setData` is expensive and may cause unnecessary re-renders. Consider using a more atomic action instead."
654
- );
655
- return walkAppState(
656
- __spreadProps(__spreadValues({}, state), {
657
- data: __spreadValues(__spreadValues({}, state.data), action.data)
658
- }),
659
- appStore.config
660
- );
661
- }
662
- return walkAppState(
663
- __spreadProps(__spreadValues({}, state), {
664
- data: __spreadValues(__spreadValues({}, state.data), action.data(state.data))
665
- }),
666
- appStore.config
667
- );
668
- };
669
-
670
- // reducer/actions/set-ui.ts
671
- init_react_import();
672
- var setUiAction = (state, action) => {
673
- if (typeof action.ui === "object") {
674
- return __spreadProps(__spreadValues({}, state), {
675
- ui: __spreadValues(__spreadValues({}, state.ui), action.ui)
676
- });
677
- }
678
- return __spreadProps(__spreadValues({}, state), {
679
- ui: __spreadValues(__spreadValues({}, state.ui), action.ui(state.ui))
680
- });
681
- };
682
-
683
- // lib/data/make-state-public.ts
684
- init_react_import();
685
- var makeStatePublic = (state) => {
686
- const { data, ui } = state;
687
- return { data, ui };
688
- };
689
-
690
- // reducer/actions.tsx
691
- init_react_import();
692
-
693
- // reducer/index.ts
694
- function storeInterceptor(reducer, record, onAction) {
695
- return (state, action) => {
696
- const newAppState = reducer(state, action);
697
- const isValidType = ![
698
- "registerZone",
699
- "unregisterZone",
700
- "setData",
701
- "setUi",
702
- "set"
703
- ].includes(action.type);
704
- if (typeof action.recordHistory !== "undefined" ? action.recordHistory : isValidType) {
705
- if (record) record(newAppState);
706
- }
707
- onAction == null ? void 0 : onAction(action, makeStatePublic(newAppState), makeStatePublic(state));
708
- return newAppState;
709
- };
710
- }
711
- function createReducer({
712
- record,
713
- onAction,
714
- appStore
715
- }) {
716
- return storeInterceptor(
717
- (state, action) => {
718
- if (action.type === "set") {
719
- return setAction(state, action, appStore);
720
- }
721
- if (action.type === "insert") {
722
- return insertAction(state, action, appStore);
723
- }
724
- if (action.type === "replace") {
725
- return replaceAction(state, action, appStore);
726
- }
727
- if (action.type === "replaceRoot") {
728
- return replaceRootAction(state, action, appStore);
729
- }
730
- if (action.type === "duplicate") {
731
- return duplicateAction(state, action, appStore);
732
- }
733
- if (action.type === "reorder") {
734
- return reorderAction(state, action, appStore);
735
- }
736
- if (action.type === "move") {
737
- return moveAction(state, action, appStore);
738
- }
739
- if (action.type === "remove") {
740
- return removeAction(state, action, appStore);
741
- }
742
- if (action.type === "registerZone") {
743
- return registerZoneAction(state, action);
744
- }
745
- if (action.type === "unregisterZone") {
746
- return unregisterZoneAction(state, action);
747
- }
748
- if (action.type === "setData") {
749
- return setDataAction(state, action, appStore);
750
- }
751
- if (action.type === "setUi") {
752
- return setUiAction(state, action);
753
- }
754
- return state;
755
- },
756
- record,
757
- onAction
758
- );
759
- }
760
-
761
- // store/index.ts
762
266
  import { create as create2, useStore } from "zustand";
763
267
  import { subscribeWithSelector as subscribeWithSelector2 } from "zustand/middleware";
764
268
  import { createContext, useContext } from "react";
@@ -856,6 +360,10 @@ var monitorHotkeys = (doc) => {
856
360
  useHotkeyStore.getState().reset();
857
361
  }
858
362
  };
363
+ const onBlur = () => {
364
+ useHotkeyStore.getState().reset();
365
+ };
366
+ window.addEventListener("blur", onBlur);
859
367
  doc.addEventListener("keydown", onKeyDown);
860
368
  doc.addEventListener("keyup", onKeyUp);
861
369
  doc.addEventListener("visibilitychange", onVisibilityChanged);
@@ -863,6 +371,7 @@ var monitorHotkeys = (doc) => {
863
371
  doc.removeEventListener("keydown", onKeyDown);
864
372
  doc.removeEventListener("keyup", onKeyUp);
865
373
  doc.removeEventListener("visibilitychange", onVisibilityChanged);
374
+ window.removeEventListener("blur", onBlur);
866
375
  };
867
376
  };
868
377
  var useMonitorHotkeys = () => {
@@ -1065,29 +574,37 @@ var flattenData = (state, config) => {
1065
574
 
1066
575
  // store/slices/permissions.ts
1067
576
  var createPermissionsSlice = (set, get) => {
1068
- const resolvePermissions = (..._0) => __async(void 0, [..._0], function* (params = {}, force) {
577
+ const resolvePermissions = (..._0) => __async(null, [..._0], function* (params = {}, force) {
1069
578
  const { state, permissions, config } = get();
1070
579
  const { cache, globalPermissions } = permissions;
1071
- const resolveDataForItem = (item2, force2 = false) => __async(void 0, null, function* () {
1072
- var _a, _b, _c;
580
+ const resolvePermissionsForItem = (item2, force2 = false) => __async(null, null, function* () {
581
+ var _a, _b;
1073
582
  const { config: config2, state: appState, setComponentLoading } = get();
583
+ const itemCache = cache[item2.props.id];
584
+ const nodes = appState.indexes.nodes;
585
+ const parentId = (_a = nodes[item2.props.id]) == null ? void 0 : _a.parentId;
586
+ const parentNode = parentId ? nodes[parentId] : null;
587
+ const parentData = (_b = parentNode == null ? void 0 : parentNode.data) != null ? _b : null;
1074
588
  const componentConfig = item2.type === "root" ? config2.root : config2.components[item2.type];
1075
589
  if (!componentConfig) {
1076
590
  return;
1077
591
  }
1078
592
  const initialPermissions = __spreadValues(__spreadValues({}, globalPermissions), componentConfig.permissions);
1079
593
  if (componentConfig.resolvePermissions) {
1080
- const changed = getChanged(item2, (_a = cache[item2.props.id]) == null ? void 0 : _a.lastData);
1081
- if (Object.values(changed).some((el) => el === true) || force2) {
594
+ const changed = getChanged(item2, itemCache == null ? void 0 : itemCache.lastData);
595
+ const propsChanged = Object.values(changed).some((el) => el === true);
596
+ const parentChanged = (itemCache == null ? void 0 : itemCache.lastParentId) !== parentId;
597
+ if (propsChanged || parentChanged || force2) {
1082
598
  const clearTimeout2 = setComponentLoading(item2.props.id, true, 50);
1083
599
  const resolvedPermissions = yield componentConfig.resolvePermissions(
1084
600
  item2,
1085
601
  {
1086
602
  changed,
1087
- lastPermissions: ((_b = cache[item2.props.id]) == null ? void 0 : _b.lastPermissions) || null,
603
+ lastPermissions: (itemCache == null ? void 0 : itemCache.lastPermissions) || null,
1088
604
  permissions: initialPermissions,
1089
605
  appState: makeStatePublic(appState),
1090
- lastData: ((_c = cache[item2.props.id]) == null ? void 0 : _c.lastData) || null
606
+ lastData: (itemCache == null ? void 0 : itemCache.lastData) || null,
607
+ parent: parentData
1091
608
  }
1092
609
  );
1093
610
  const latest = get().permissions;
@@ -1095,6 +612,7 @@ var createPermissionsSlice = (set, get) => {
1095
612
  permissions: __spreadProps(__spreadValues({}, latest), {
1096
613
  cache: __spreadProps(__spreadValues({}, latest.cache), {
1097
614
  [item2.props.id]: {
615
+ lastParentId: parentId,
1098
616
  lastData: item2,
1099
617
  lastPermissions: resolvedPermissions
1100
618
  }
@@ -1108,9 +626,9 @@ var createPermissionsSlice = (set, get) => {
1108
626
  }
1109
627
  }
1110
628
  });
1111
- const resolveDataForRoot = (force2 = false) => {
629
+ const resolvePermissionsForRoot = (force2 = false) => {
1112
630
  const { state: appState } = get();
1113
- resolveDataForItem(
631
+ resolvePermissionsForItem(
1114
632
  // Shim the root data in by conforming to component data shape
1115
633
  {
1116
634
  type: "root",
@@ -1121,16 +639,16 @@ var createPermissionsSlice = (set, get) => {
1121
639
  };
1122
640
  const { item, type, root } = params;
1123
641
  if (item) {
1124
- yield resolveDataForItem(item, force);
642
+ yield resolvePermissionsForItem(item, force);
1125
643
  } else if (type) {
1126
- flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(void 0, null, function* () {
1127
- yield resolveDataForItem(item2, force);
644
+ flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(null, null, function* () {
645
+ yield resolvePermissionsForItem(item2, force);
1128
646
  }));
1129
647
  } else if (root) {
1130
- resolveDataForRoot(force);
648
+ resolvePermissionsForRoot(force);
1131
649
  } else {
1132
- flattenData(state, config).map((item2) => __async(void 0, null, function* () {
1133
- yield resolveDataForItem(item2, force);
650
+ flattenData(state, config).map((item2) => __async(null, null, function* () {
651
+ yield resolvePermissionsForItem(item2, force);
1134
652
  }));
1135
653
  }
1136
654
  });
@@ -1210,7 +728,7 @@ var createFieldsSlice = (_set, _get) => {
1210
728
  };
1211
729
  var useRegisterFieldsSlice = (appStore, id) => {
1212
730
  const resolveFields = useCallback(
1213
- (reset) => __async(void 0, null, function* () {
731
+ (reset) => __async(null, null, function* () {
1214
732
  var _a, _b;
1215
733
  const { fields, lastResolvedData } = appStore.getState().fields;
1216
734
  const metadata = appStore.getState().metadata;
@@ -1411,7 +929,7 @@ var createAppStore = (initialAppStore) => create2()(
1411
929
  const selectedItem = state.ui.itemSelector ? getItem(state.ui.itemSelector, state) : null;
1412
930
  return __spreadProps(__spreadValues({}, s), { state, selectedItem });
1413
931
  }),
1414
- resolveComponentData: (componentData, trigger) => __async(void 0, null, function* () {
932
+ resolveComponentData: (componentData, trigger) => __async(null, null, function* () {
1415
933
  const { config, metadata, setComponentLoading, permissions } = get();
1416
934
  const timeouts = {};
1417
935
  return yield resolveComponentData(
@@ -1422,7 +940,7 @@ var createAppStore = (initialAppStore) => create2()(
1422
940
  const id = "id" in item.props ? item.props.id : "root";
1423
941
  timeouts[id] = setComponentLoading(id, true, 50);
1424
942
  },
1425
- (item) => __async(void 0, null, function* () {
943
+ (item) => __async(null, null, function* () {
1426
944
  const id = "id" in item.props ? item.props.id : "root";
1427
945
  if ("type" in item) {
1428
946
  yield permissions.refreshPermissions({ item });
@@ -1434,7 +952,7 @@ var createAppStore = (initialAppStore) => create2()(
1434
952
  trigger
1435
953
  );
1436
954
  }),
1437
- resolveAndCommitData: () => __async(void 0, null, function* () {
955
+ resolveAndCommitData: () => __async(null, null, function* () {
1438
956
  const { config, state, dispatch, resolveComponentData: resolveComponentData2 } = get();
1439
957
  walkAppState(
1440
958
  state,
@@ -1611,7 +1129,7 @@ var getZoomConfig = (uiViewport, frame, zoom) => {
1611
1129
  const viewportHeight = uiViewport.height === "auto" ? frameHeight : uiViewport.height;
1612
1130
  let rootHeight = 0;
1613
1131
  let autoZoom = 1;
1614
- if (uiViewport.width > frameWidth || viewportHeight > frameHeight) {
1132
+ if (typeof uiViewport.width === "number" && (uiViewport.width > frameWidth || viewportHeight > frameHeight)) {
1615
1133
  const widthZoom = Math.min(frameWidth / uiViewport.width, 1);
1616
1134
  const heightZoom = Math.min(frameHeight / viewportHeight, 1);
1617
1135
  zoom = widthZoom;
@@ -1690,7 +1208,8 @@ var IconButton = ({
1690
1208
  tabIndex,
1691
1209
  newTab,
1692
1210
  fullWidth,
1693
- title
1211
+ title,
1212
+ suppressHydrationWarning
1694
1213
  }) => {
1695
1214
  const [loading, setLoading] = useState(false);
1696
1215
  const ElementType = href ? "a" : "button";
@@ -1717,6 +1236,7 @@ var IconButton = ({
1717
1236
  rel: newTab ? "noreferrer" : void 0,
1718
1237
  href,
1719
1238
  title,
1239
+ suppressHydrationWarning,
1720
1240
  children: [
1721
1241
  /* @__PURE__ */ jsx3("span", { className: getClassName3("title"), children: title }),
1722
1242
  children,
@@ -2526,7 +2046,7 @@ var collisionStore = createStore(() => ({
2526
2046
 
2527
2047
  // lib/dnd/collision/dynamic/index.ts
2528
2048
  var flushNext = "";
2529
- var createDynamicCollisionDetector = (dragAxis, midpointOffset = 0.05) => (input) => {
2049
+ var createDynamicCollisionDetector = (dragAxis, midpointOffset = 0.05) => ((input) => {
2530
2050
  var _a, _b, _c, _d, _e;
2531
2051
  const { dragOperation, droppable } = input;
2532
2052
  const { position } = dragOperation;
@@ -2619,7 +2139,7 @@ var createDynamicCollisionDetector = (dragAxis, midpointOffset = 0.05) => (input
2619
2139
  }
2620
2140
  collisionDebug(dragCenter, dropCenter, droppable.id.toString(), "hotpink");
2621
2141
  return null;
2622
- };
2142
+ });
2623
2143
 
2624
2144
  // components/Sortable/index.tsx
2625
2145
  import { useSortable } from "@dnd-kit/react/sortable";
@@ -3215,8 +2735,9 @@ var ArrayField = ({
3215
2735
  if (isDraggingAny) return;
3216
2736
  const value2 = getValue();
3217
2737
  const existingValue = value2 || [];
2738
+ const defaultProps = typeof field.defaultItemProps === "function" ? field.defaultItemProps(existingValue.length) : (_a = field.defaultItemProps) != null ? _a : {};
3218
2739
  const newItem = defaultSlots(
3219
- uniqifyItem((_a = field.defaultItemProps) != null ? _a : {}),
2740
+ uniqifyItem(defaultProps),
3220
2741
  field.arrayFields
3221
2742
  );
3222
2743
  const newValue = [...existingValue, newItem];
@@ -3389,11 +2910,13 @@ var ExternalInput = ({
3389
2910
  id,
3390
2911
  readOnly
3391
2912
  }) => {
2913
+ var _a;
3392
2914
  const {
3393
2915
  mapProp = (val) => val,
3394
2916
  mapRow = (val) => val,
3395
2917
  filterFields
3396
2918
  } = field || {};
2919
+ const { enabled: shouldCacheData } = (_a = field.cache) != null ? _a : { enabled: true };
3397
2920
  const [data, setData] = useState6([]);
3398
2921
  const [isOpen, setOpen] = useState6(false);
3399
2922
  const [isLoading, setIsLoading] = useState6(true);
@@ -3416,14 +2939,21 @@ var ExternalInput = ({
3416
2939
  }, [mappedData]);
3417
2940
  const [searchQuery, setSearchQuery] = useState6(field.initialQuery || "");
3418
2941
  const search = useCallback3(
3419
- (query, filters2) => __async(void 0, null, function* () {
2942
+ (query, filters2) => __async(null, null, function* () {
3420
2943
  setIsLoading(true);
3421
2944
  const cacheKey = `${id}-${query}-${JSON.stringify(filters2)}`;
3422
- const listData = dataCache[cacheKey] || (yield field.fetchList({ query, filters: filters2 }));
2945
+ let listData;
2946
+ if (shouldCacheData && dataCache[cacheKey]) {
2947
+ listData = dataCache[cacheKey];
2948
+ } else {
2949
+ listData = yield field.fetchList({ query, filters: filters2 });
2950
+ }
3423
2951
  if (listData) {
3424
2952
  setData(listData);
3425
2953
  setIsLoading(false);
3426
- dataCache[cacheKey] = listData;
2954
+ if (shouldCacheData) {
2955
+ dataCache[cacheKey] = listData;
2956
+ }
3427
2957
  }
3428
2958
  }),
3429
2959
  [id, field]
@@ -3487,6 +3017,7 @@ var ExternalInput = ({
3487
3017
  }),
3488
3018
  onSubmit: (e) => {
3489
3019
  e.preventDefault();
3020
+ e.stopPropagation();
3490
3021
  search(searchQuery, filters);
3491
3022
  },
3492
3023
  children: [
@@ -3636,7 +3167,7 @@ var ExternalField = ({
3636
3167
  placeholder: ((_a = deprecatedField.adaptor) == null ? void 0 : _a.name) ? `Select from ${deprecatedField.adaptor.name}` : validField.placeholder || "Select data",
3637
3168
  mapProp: ((_b = deprecatedField.adaptor) == null ? void 0 : _b.mapProp) || validField.mapProp,
3638
3169
  mapRow: validField.mapRow,
3639
- fetchList: ((_c = deprecatedField.adaptor) == null ? void 0 : _c.fetchList) ? () => __async(void 0, null, function* () {
3170
+ fetchList: ((_c = deprecatedField.adaptor) == null ? void 0 : _c.fetchList) ? () => __async(null, null, function* () {
3640
3171
  return yield deprecatedField.adaptor.fetchList(
3641
3172
  deprecatedField.adaptorParams
3642
3173
  );
@@ -4008,6 +3539,7 @@ function AutoFieldInternal(props) {
4008
3539
  }
4009
3540
  return (_props) => null;
4010
3541
  }, [field.type]);
3542
+ const fieldKey = field.type === "custom" ? field.key : void 0;
4011
3543
  let FieldComponent = useMemo3(() => {
4012
3544
  if (field.type === "custom") {
4013
3545
  if (!field.render) {
@@ -4017,7 +3549,7 @@ function AutoFieldInternal(props) {
4017
3549
  } else if (field.type !== "slot") {
4018
3550
  return render[field.type];
4019
3551
  }
4020
- }, [field.type, render]);
3552
+ }, [field.type, fieldKey, render]);
4021
3553
  const { visible = true } = props.field;
4022
3554
  if (!visible) {
4023
3555
  return null;
@@ -4415,12 +3947,14 @@ var DraggableComponent = ({
4415
3947
  }
4416
3948
  return cleanup;
4417
3949
  }, [permissions.drag, zoneCompound]);
3950
+ const [, setRerender] = useState10(0);
4418
3951
  const ref = useRef2(null);
4419
3952
  const refSetter = useCallback8(
4420
3953
  (el) => {
4421
3954
  sortableRef(el);
4422
- if (el) {
3955
+ if (ref.current !== el) {
4423
3956
  ref.current = el;
3957
+ setRerender((update) => update + 1);
4424
3958
  }
4425
3959
  },
4426
3960
  [sortableRef]
@@ -5084,7 +4618,20 @@ var createNestedDroppablePlugin = ({ onChange }, id) => class NestedDroppablePlu
5084
4618
 
5085
4619
  // lib/insert-component.ts
5086
4620
  init_react_import();
5087
- var insertComponent = (componentType, zone, index, appStore) => __async(void 0, null, function* () {
4621
+
4622
+ // lib/get-selector-for-id.ts
4623
+ init_react_import();
4624
+ var getSelectorForId = (state, id) => {
4625
+ const node = state.indexes.nodes[id];
4626
+ if (!node) return;
4627
+ const zoneCompound = `${node.parentId}:${node.zone}`;
4628
+ const index = state.indexes.zones[zoneCompound].contentIds.indexOf(id);
4629
+ return { zone: zoneCompound, index };
4630
+ };
4631
+
4632
+ // lib/insert-component.ts
4633
+ var insertComponent = (componentType, zone, index, appStore) => __async(null, null, function* () {
4634
+ const { getState } = appStore;
5088
4635
  const id = generateId(componentType);
5089
4636
  const insertActionData = {
5090
4637
  type: "insert",
@@ -5093,8 +4640,9 @@ var insertComponent = (componentType, zone, index, appStore) => __async(void 0,
5093
4640
  destinationZone: zone,
5094
4641
  id
5095
4642
  };
5096
- const { state, dispatch, resolveComponentData: resolveComponentData2 } = appStore;
5097
- const insertedState = insertAction(state, insertActionData, appStore);
4643
+ const stateBefore = getState().state;
4644
+ const insertedState = insertAction(stateBefore, insertActionData, getState());
4645
+ const dispatch = getState().dispatch;
5098
4646
  dispatch(__spreadProps(__spreadValues({}, insertActionData), {
5099
4647
  // Dispatch insert rather set, as user's may rely on this via onAction
5100
4648
  // We must always record history here so the insert is added to user history
@@ -5102,23 +4650,21 @@ var insertComponent = (componentType, zone, index, appStore) => __async(void 0,
5102
4650
  // entries on insert - one for the initial insert, and one when the data resolves
5103
4651
  recordHistory: true
5104
4652
  }));
5105
- const itemSelector = {
5106
- index,
5107
- zone
5108
- };
4653
+ const itemSelector = { index, zone };
5109
4654
  dispatch({ type: "setUi", ui: { itemSelector } });
5110
4655
  const itemData = getItem(itemSelector, insertedState);
5111
- if (itemData) {
5112
- const resolved = yield resolveComponentData2(itemData, "insert");
5113
- if (resolved.didChange) {
5114
- dispatch({
5115
- type: "replace",
5116
- destinationZone: itemSelector.zone,
5117
- destinationIndex: itemSelector.index,
5118
- data: resolved.node
5119
- });
5120
- }
5121
- }
4656
+ if (!itemData) return;
4657
+ const resolveComponentData2 = getState().resolveComponentData;
4658
+ const resolved = yield resolveComponentData2(itemData, "insert");
4659
+ if (!resolved.didChange) return;
4660
+ const latestItemSelector = getSelectorForId(getState().state, id);
4661
+ if (!latestItemSelector) return;
4662
+ dispatch({
4663
+ type: "replace",
4664
+ destinationZone: latestItemSelector.zone,
4665
+ destinationIndex: latestItemSelector.index,
4666
+ data: resolved.node
4667
+ });
5122
4668
  });
5123
4669
 
5124
4670
  // components/DragDropContext/index.tsx
@@ -5355,7 +4901,7 @@ var DragDropContextClient = ({
5355
4901
  thisPreview.componentType,
5356
4902
  thisPreview.zone,
5357
4903
  thisPreview.index,
5358
- appStore.getState()
4904
+ appStore
5359
4905
  );
5360
4906
  } else if (initialSelector.current) {
5361
4907
  dispatch({
@@ -5739,7 +5285,8 @@ var useMinEmptyHeight = ({
5739
5285
  }
5740
5286
  }
5741
5287
  }, [ref.current, draggedItem, onDragFinished]);
5742
- return [prevHeight || userMinEmptyHeight, isAnimating];
5288
+ const returnedMinHeight = isNaN(Number(userMinEmptyHeight)) ? userMinEmptyHeight : `${userMinEmptyHeight}px`;
5289
+ return [prevHeight ? `${prevHeight}px` : returnedMinHeight, isAnimating];
5743
5290
  };
5744
5291
 
5745
5292
  // lib/assign-refs.ts
@@ -5768,7 +5315,7 @@ import { useCallback as useCallback10 } from "react";
5768
5315
  function useRenderedCallback(callback, deps) {
5769
5316
  const manager = useDragDropManager();
5770
5317
  return useCallback10(
5771
- (...args) => __async(this, null, function* () {
5318
+ (...args) => __async(null, null, function* () {
5772
5319
  yield manager == null ? void 0 : manager.renderer.rendering;
5773
5320
  return callback(...args);
5774
5321
  }),
@@ -5934,26 +5481,26 @@ var registerOverlayPortal = (el, opts = {}) => {
5934
5481
  capture: true
5935
5482
  });
5936
5483
  };
5937
- if (disableDragOnFocus) {
5938
- el.addEventListener("focus", onFocus, { capture: true });
5939
- el.addEventListener("blur", onBlur, { capture: true });
5940
- } else if (disableDrag) {
5484
+ if (disableDrag) {
5941
5485
  el.addEventListener("pointerdown", stopPropagation, {
5942
5486
  capture: true
5943
5487
  });
5488
+ } else if (disableDragOnFocus) {
5489
+ el.addEventListener("focus", onFocus, { capture: true });
5490
+ el.addEventListener("blur", onBlur, { capture: true });
5944
5491
  }
5945
5492
  el.setAttribute("data-puck-overlay-portal", "true");
5946
5493
  return () => {
5947
5494
  el.removeEventListener("mouseover", stopPropagation, {
5948
5495
  capture: true
5949
5496
  });
5950
- if (disableDragOnFocus) {
5951
- el.removeEventListener("focus", onFocus, { capture: true });
5952
- el.removeEventListener("blur", onFocus, { capture: true });
5953
- } else if (disableDrag) {
5497
+ if (disableDrag) {
5954
5498
  el.removeEventListener("pointerdown", stopPropagation, {
5955
5499
  capture: true
5956
5500
  });
5501
+ } else if (disableDragOnFocus) {
5502
+ el.removeEventListener("focus", onFocus, { capture: true });
5503
+ el.removeEventListener("blur", onBlur, { capture: true });
5957
5504
  }
5958
5505
  el.removeAttribute("data-puck-overlay-portal");
5959
5506
  };
@@ -5961,7 +5508,7 @@ var registerOverlayPortal = (el, opts = {}) => {
5961
5508
 
5962
5509
  // css-module:/home/runner/work/puck/puck/packages/core/components/InlineTextField/styles.module.css#css-module
5963
5510
  init_react_import();
5964
- var styles_module_default13 = { "InlineTextField": "_InlineTextField_1xph6_1" };
5511
+ var styles_module_default13 = { "InlineTextField": "_InlineTextField_104qp_1" };
5965
5512
 
5966
5513
  // lib/data/set-deep.ts
5967
5514
  init_react_import();
@@ -5997,16 +5544,6 @@ function setDeep(node, path, newVal) {
5997
5544
  return __spreadValues(__spreadValues({}, node), newNode);
5998
5545
  }
5999
5546
 
6000
- // lib/get-selector-for-id.ts
6001
- init_react_import();
6002
- var getSelectorForId = (state, id) => {
6003
- const node = state.indexes.nodes[id];
6004
- if (!node) return;
6005
- const zoneCompound = `${node.parentId}:${node.zone}`;
6006
- const index = state.indexes.zones[zoneCompound].contentIds.indexOf(id);
6007
- return { zone: zoneCompound, index };
6008
- };
6009
-
6010
5547
  // components/InlineTextField/index.tsx
6011
5548
  import { jsx as jsx25 } from "react/jsx-runtime";
6012
5549
  var getClassName18 = get_class_name_factory_default("InlineTextField", styles_module_default13);
@@ -6035,7 +5572,7 @@ var InlineTextFieldInternal = ({
6035
5572
  ref.current.replaceChildren(value);
6036
5573
  }
6037
5574
  const cleanupPortal = registerOverlayPortal(ref.current);
6038
- const handleInput = (e) => __async(void 0, null, function* () {
5575
+ const handleInput = (e) => __async(null, null, function* () {
6039
5576
  var _a2;
6040
5577
  const appStore2 = appStoreApi.getState();
6041
5578
  const node = appStore2.state.indexes.nodes[componentId];
@@ -6326,8 +5863,9 @@ var DropZoneEdit = forwardRef3(
6326
5863
  disallow,
6327
5864
  style,
6328
5865
  className,
6329
- minEmptyHeight: userMinEmptyHeight = 128,
6330
- collisionAxis
5866
+ minEmptyHeight: userMinEmptyHeight = "128px",
5867
+ collisionAxis,
5868
+ as
6331
5869
  }, userRef) {
6332
5870
  const ctx = useContext8(dropZoneContext);
6333
5871
  const appStoreApi = useAppStoreApi();
@@ -6470,8 +6008,9 @@ var DropZoneEdit = forwardRef3(
6470
6008
  userMinEmptyHeight,
6471
6009
  ref
6472
6010
  });
6011
+ const El = as != null ? as : "div";
6473
6012
  return /* @__PURE__ */ jsx27(
6474
- "div",
6013
+ El,
6475
6014
  {
6476
6015
  className: `${getClassName19({
6477
6016
  isRootZone,
@@ -6487,7 +6026,7 @@ var DropZoneEdit = forwardRef3(
6487
6026
  "data-testid": `dropzone:${zoneCompound}`,
6488
6027
  "data-puck-dropzone": zoneCompound,
6489
6028
  style: __spreadProps(__spreadValues({}, style), {
6490
- "--min-empty-height": `${minEmptyHeight}px`,
6029
+ "--min-empty-height": minEmptyHeight,
6491
6030
  backgroundColor: RENDER_DEBUG ? getRandomColor() : style == null ? void 0 : style.backgroundColor
6492
6031
  }),
6493
6032
  children: contentIdsWithPreview.map((componentId, i) => {
@@ -6534,7 +6073,7 @@ var DropZoneRenderItem = ({
6534
6073
  };
6535
6074
  var DropZoneRenderPure = (props) => /* @__PURE__ */ jsx27(DropZoneRender, __spreadValues({}, props));
6536
6075
  var DropZoneRender = forwardRef3(
6537
- function DropZoneRenderInternal({ className, style, zone }, ref) {
6076
+ function DropZoneRenderInternal({ className, style, zone, as }, ref) {
6538
6077
  const ctx = useContext8(dropZoneContext);
6539
6078
  const { areaId = "root" } = ctx || {};
6540
6079
  const { config, data, metadata } = useContext8(renderContext);
@@ -6547,13 +6086,14 @@ var DropZoneRender = forwardRef3(
6547
6086
  }
6548
6087
  }
6549
6088
  }, [content]);
6089
+ const El = as != null ? as : "div";
6550
6090
  if (!data || !config) {
6551
6091
  return null;
6552
6092
  }
6553
6093
  if (zoneCompound !== rootDroppableId) {
6554
6094
  content = setupZone(data, zoneCompound).zones[zoneCompound];
6555
6095
  }
6556
- return /* @__PURE__ */ jsx27("div", { className, style, ref, children: content.map((item) => {
6096
+ return /* @__PURE__ */ jsx27(El, { className, style, ref, children: content.map((item) => {
6557
6097
  const Component = config.components[item.type];
6558
6098
  if (Component) {
6559
6099
  return /* @__PURE__ */ jsx27(
@@ -6655,7 +6195,18 @@ var generateUsePuck = (store) => {
6655
6195
  selectedItem: store.selectedItem || null,
6656
6196
  getItemBySelector: (selector) => getItem(selector, store.state),
6657
6197
  getItemById: (id) => store.state.indexes.nodes[id].data,
6658
- getSelectorForId: (id) => getSelectorForId(store.state, id)
6198
+ getSelectorForId: (id) => getSelectorForId(store.state, id),
6199
+ getParentById: (id) => {
6200
+ const node = store.state.indexes.nodes[id];
6201
+ const parentId = node.parentId;
6202
+ if (parentId === null) return;
6203
+ const parentNode = store.state.indexes.nodes[parentId];
6204
+ if (!parentNode) return;
6205
+ return parentNode.data;
6206
+ }
6207
+ };
6208
+ storeData.__private = {
6209
+ appState: store.state
6659
6210
  };
6660
6211
  return storeData;
6661
6212
  };
@@ -6696,7 +6247,7 @@ function createUsePuck() {
6696
6247
  }
6697
6248
  const result = useStore3(
6698
6249
  usePuckApi,
6699
- selector != null ? selector : (s) => s
6250
+ selector != null ? selector : ((s) => s)
6700
6251
  );
6701
6252
  return result;
6702
6253
  };
@@ -7263,49 +6814,48 @@ var DefaultFields = ({
7263
6814
  }) => {
7264
6815
  return /* @__PURE__ */ jsx37(Fragment10, { children });
7265
6816
  };
7266
- var createOnChange = (fieldName, appStore) => (value, updatedUi) => __async(void 0, null, function* () {
7267
- let currentProps;
6817
+ var createOnChange = (fieldName, appStore) => (value, updatedUi) => __async(null, null, function* () {
7268
6818
  const { dispatch, state, selectedItem, resolveComponentData: resolveComponentData2 } = appStore.getState();
7269
6819
  const { data, ui } = state;
7270
6820
  const { itemSelector } = ui;
7271
6821
  const rootProps = data.root.props || data.root;
7272
- if (selectedItem) {
7273
- currentProps = selectedItem.props;
7274
- } else {
7275
- currentProps = rootProps;
7276
- }
7277
- const newProps = __spreadProps(__spreadValues({}, currentProps), {
7278
- [fieldName]: value
7279
- });
6822
+ const currentProps = selectedItem ? selectedItem.props : rootProps;
6823
+ const newProps = __spreadProps(__spreadValues({}, currentProps), { [fieldName]: value });
7280
6824
  if (selectedItem && itemSelector) {
6825
+ const resolved = yield resolveComponentData2(
6826
+ __spreadProps(__spreadValues({}, selectedItem), { props: newProps }),
6827
+ "replace"
6828
+ );
6829
+ const latestSelector = getSelectorForId(
6830
+ appStore.getState().state,
6831
+ selectedItem.props.id
6832
+ );
6833
+ if (!latestSelector) return;
7281
6834
  dispatch({
7282
6835
  type: "replace",
7283
- destinationIndex: itemSelector.index,
7284
- destinationZone: itemSelector.zone || rootDroppableId,
7285
- data: (yield resolveComponentData2(
7286
- __spreadProps(__spreadValues({}, selectedItem), { props: newProps }),
6836
+ destinationIndex: latestSelector.index,
6837
+ destinationZone: latestSelector.zone || rootDroppableId,
6838
+ data: resolved.node,
6839
+ ui: updatedUi
6840
+ });
6841
+ return;
6842
+ }
6843
+ if (data.root.props) {
6844
+ dispatch({
6845
+ type: "replaceRoot",
6846
+ root: (yield resolveComponentData2(
6847
+ __spreadProps(__spreadValues({}, data.root), { props: newProps }),
7287
6848
  "replace"
7288
6849
  )).node,
7289
- ui: updatedUi
6850
+ ui: __spreadValues(__spreadValues({}, ui), updatedUi),
6851
+ recordHistory: true
7290
6852
  });
7291
- } else {
7292
- if (data.root.props) {
7293
- dispatch({
7294
- type: "replaceRoot",
7295
- root: (yield resolveComponentData2(
7296
- __spreadProps(__spreadValues({}, data.root), { props: newProps }),
7297
- "replace"
7298
- )).node,
7299
- ui: __spreadValues(__spreadValues({}, ui), updatedUi),
7300
- recordHistory: true
7301
- });
7302
- } else {
7303
- dispatch({
7304
- type: "setData",
7305
- data: { root: newProps }
7306
- });
7307
- }
6853
+ return;
7308
6854
  }
6855
+ dispatch({
6856
+ type: "setData",
6857
+ data: { root: newProps }
6858
+ });
7309
6859
  });
7310
6860
  var FieldsChild = ({ fieldName }) => {
7311
6861
  const field = useAppStore((s) => s.fields.fields[fieldName]);
@@ -7492,7 +7042,7 @@ var CopyHostStyles = ({
7492
7042
  let elements = [];
7493
7043
  const hashes = {};
7494
7044
  const lookupEl = (el) => elements.findIndex((elementMap) => elementMap.original === el);
7495
- const mirrorEl = (el, inlineStyles = false) => __async(void 0, null, function* () {
7045
+ const mirrorEl = (el, inlineStyles = false) => __async(null, null, function* () {
7496
7046
  let mirror;
7497
7047
  if (el.nodeName === "LINK" && inlineStyles) {
7498
7048
  mirror = document.createElement("style");
@@ -7524,7 +7074,7 @@ var CopyHostStyles = ({
7524
7074
  }
7525
7075
  return mirror;
7526
7076
  });
7527
- const addEl = (el) => __async(void 0, null, function* () {
7077
+ const addEl = (el) => __async(null, null, function* () {
7528
7078
  const index = lookupEl(el);
7529
7079
  if (index > -1) {
7530
7080
  if (debug)
@@ -7597,7 +7147,7 @@ var CopyHostStyles = ({
7597
7147
  const parentBody = parentDocument.getElementsByTagName("body")[0];
7598
7148
  syncAttributes(parentBody, doc.body);
7599
7149
  Promise.all(
7600
- collectedStyles.map((styleNode, i) => __async(void 0, null, function* () {
7150
+ collectedStyles.map((styleNode, i) => __async(null, null, function* () {
7601
7151
  if (styleNode.nodeName === "LINK") {
7602
7152
  const linkHref = styleNode.href;
7603
7153
  if (hrefs.indexOf(linkHref) > -1) {
@@ -7910,7 +7460,7 @@ import { useEffect as useEffect29, useMemo as useMemo20, useState as useState25
7910
7460
 
7911
7461
  // css-module:/home/runner/work/puck/puck/packages/core/components/Puck/components/Layout/styles.module.css#css-module
7912
7462
  init_react_import();
7913
- var styles_module_default22 = { "Puck": "_Puck_hv23j_19", "Puck-portal": "_Puck-portal_hv23j_31", "PuckLayout": "_PuckLayout_hv23j_36", "PuckLayout-inner": "_PuckLayout-inner_hv23j_40", "PuckLayout--mounted": "_PuckLayout--mounted_hv23j_73", "PuckLayout--mobilePanelHeightToggle": "_PuckLayout--mobilePanelHeightToggle_hv23j_77", "PuckLayout--leftSideBarVisible": "_PuckLayout--leftSideBarVisible_hv23j_77", "PuckLayout--isExpanded": "_PuckLayout--isExpanded_hv23j_83", "PuckLayout--mobilePanelHeightMinContent": "_PuckLayout--mobilePanelHeightMinContent_hv23j_101", "PuckLayout--rightSideBarVisible": "_PuckLayout--rightSideBarVisible_hv23j_128", "PuckLayout-mounted": "_PuckLayout-mounted_hv23j_147", "PuckLayout-nav": "_PuckLayout-nav_hv23j_188", "PuckLayout-header": "_PuckLayout-header_hv23j_204", "PuckPluginTab": "_PuckPluginTab_hv23j_218", "PuckPluginTab--visible": "_PuckPluginTab--visible_hv23j_224", "PuckPluginTab-body": "_PuckPluginTab-body_hv23j_229" };
7463
+ var styles_module_default22 = { "Puck": "_Puck_lqzmv_19", "Puck-portal": "_Puck-portal_lqzmv_32", "PuckLayout": "_PuckLayout_lqzmv_37", "PuckLayout-inner": "_PuckLayout-inner_lqzmv_41", "PuckLayout--mounted": "_PuckLayout--mounted_lqzmv_74", "PuckLayout--mobilePanelHeightToggle": "_PuckLayout--mobilePanelHeightToggle_lqzmv_78", "PuckLayout--leftSideBarVisible": "_PuckLayout--leftSideBarVisible_lqzmv_78", "PuckLayout--isExpanded": "_PuckLayout--isExpanded_lqzmv_84", "PuckLayout--mobilePanelHeightMinContent": "_PuckLayout--mobilePanelHeightMinContent_lqzmv_102", "PuckLayout--rightSideBarVisible": "_PuckLayout--rightSideBarVisible_lqzmv_129", "PuckLayout-mounted": "_PuckLayout-mounted_lqzmv_148", "PuckLayout-nav": "_PuckLayout-nav_lqzmv_189", "PuckLayout-header": "_PuckLayout-header_lqzmv_205", "PuckPluginTab": "_PuckPluginTab_lqzmv_219", "PuckPluginTab--visible": "_PuckPluginTab--visible_lqzmv_225", "PuckPluginTab-body": "_PuckPluginTab-body_lqzmv_230" };
7914
7464
 
7915
7465
  // lib/use-inject-css.ts
7916
7466
  init_react_import();
@@ -8267,13 +7817,14 @@ var ActionButton = ({
8267
7817
  isActive,
8268
7818
  disabled
8269
7819
  }) => {
8270
- return /* @__PURE__ */ jsx45("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ jsx45(
7820
+ return /* @__PURE__ */ jsx45("span", { className: getClassNameButton({ isActive }), suppressHydrationWarning: true, children: /* @__PURE__ */ jsx45(
8271
7821
  IconButton,
8272
7822
  {
8273
7823
  type: "button",
8274
7824
  title,
8275
7825
  disabled: disabled || isActive,
8276
7826
  onClick,
7827
+ suppressHydrationWarning: true,
8277
7828
  children: /* @__PURE__ */ jsx45("span", { className: getClassNameButton("inner"), children })
8278
7829
  }
8279
7830
  ) });
@@ -8948,7 +8499,7 @@ var Layout = ({ children }) => {
8948
8499
  dnd,
8949
8500
  initialHistory: _initialHistory,
8950
8501
  plugins,
8951
- height = "100dvh"
8502
+ height
8952
8503
  } = usePropsContext();
8953
8504
  const iframe = useMemo20(
8954
8505
  () => __spreadValues({
@@ -9092,92 +8643,85 @@ var Layout = ({ children }) => {
9092
8643
  return (_a = s.state.ui.mobilePanelExpanded) != null ? _a : false;
9093
8644
  }
9094
8645
  );
9095
- return /* @__PURE__ */ jsxs24(
9096
- "div",
9097
- {
9098
- className: `Puck ${getClassName36()}`,
9099
- style: { height },
9100
- id: instanceId,
9101
- children: [
9102
- /* @__PURE__ */ jsx51(DragDropContext, { disableAutoScroll: dnd == null ? void 0 : dnd.disableAutoScroll, children: /* @__PURE__ */ jsx51(CustomPuck, { children: children || /* @__PURE__ */ jsx51(FrameProvider, { children: /* @__PURE__ */ jsx51(
8646
+ return /* @__PURE__ */ jsxs24("div", { className: `Puck ${getClassName36()}`, id: instanceId, children: [
8647
+ /* @__PURE__ */ jsx51(DragDropContext, { disableAutoScroll: dnd == null ? void 0 : dnd.disableAutoScroll, children: /* @__PURE__ */ jsx51(CustomPuck, { children: children || /* @__PURE__ */ jsx51(FrameProvider, { children: /* @__PURE__ */ jsx51(
8648
+ "div",
8649
+ {
8650
+ className: getLayoutClassName({
8651
+ leftSideBarVisible,
8652
+ mounted,
8653
+ rightSideBarVisible: !hasDesktopFieldsPlugin && rightSideBarVisible,
8654
+ isExpanded: mobilePanelExpanded,
8655
+ mobilePanelHeightToggle: mobilePanelHeightMode === "toggle",
8656
+ mobilePanelHeightMinContent: mobilePanelHeightMode === "min-content"
8657
+ }),
8658
+ style: { height },
8659
+ children: /* @__PURE__ */ jsxs24(
9103
8660
  "div",
9104
8661
  {
9105
- className: getLayoutClassName({
9106
- leftSideBarVisible,
9107
- mounted,
9108
- rightSideBarVisible: !hasDesktopFieldsPlugin && rightSideBarVisible,
9109
- isExpanded: mobilePanelExpanded,
9110
- mobilePanelHeightToggle: mobilePanelHeightMode === "toggle",
9111
- mobilePanelHeightMinContent: mobilePanelHeightMode === "min-content"
9112
- }),
9113
- children: /* @__PURE__ */ jsxs24(
9114
- "div",
9115
- {
9116
- className: getLayoutClassName("inner"),
9117
- style: layoutOptions,
9118
- children: [
9119
- /* @__PURE__ */ jsx51("div", { className: getLayoutClassName("header"), children: /* @__PURE__ */ jsx51(Header, {}) }),
9120
- /* @__PURE__ */ jsx51("div", { className: getLayoutClassName("nav"), children: /* @__PURE__ */ jsx51(
9121
- Nav,
9122
- {
9123
- items: pluginItems,
9124
- mobileActions: leftSideBarVisible && mobilePanelHeightMode === "toggle" && /* @__PURE__ */ jsx51(
9125
- IconButton,
9126
- {
9127
- type: "button",
9128
- title: "maximize",
9129
- onClick: () => {
9130
- setUi({
9131
- mobilePanelExpanded: !mobilePanelExpanded
9132
- });
9133
- },
9134
- children: mobilePanelExpanded ? /* @__PURE__ */ jsx51(Minimize2, { size: 21 }) : /* @__PURE__ */ jsx51(Maximize2, { size: 21 })
9135
- }
9136
- )
9137
- }
9138
- ) }),
9139
- /* @__PURE__ */ jsx51(
9140
- Sidebar,
9141
- {
9142
- position: "left",
9143
- sidebarRef: leftSidebarRef,
9144
- isVisible: leftSideBarVisible,
9145
- onResize: setLeftWidth,
9146
- onResizeEnd: handleLeftSidebarResizeEnd,
9147
- children: Object.entries(pluginItems).map(
9148
- ([id, { mobileOnly, render: Render2, label }]) => /* @__PURE__ */ jsx51(
9149
- PluginTab,
9150
- {
9151
- visible: currentPlugin === id,
9152
- mobileOnly,
9153
- children: /* @__PURE__ */ jsx51(Render2, {})
9154
- },
9155
- id
9156
- )
9157
- )
9158
- }
9159
- ),
9160
- /* @__PURE__ */ jsx51(Canvas, {}),
9161
- !hasDesktopFieldsPlugin && /* @__PURE__ */ jsx51(
9162
- Sidebar,
8662
+ className: getLayoutClassName("inner"),
8663
+ style: layoutOptions,
8664
+ children: [
8665
+ /* @__PURE__ */ jsx51("div", { className: getLayoutClassName("header"), children: /* @__PURE__ */ jsx51(Header, {}) }),
8666
+ /* @__PURE__ */ jsx51("div", { className: getLayoutClassName("nav"), children: /* @__PURE__ */ jsx51(
8667
+ Nav,
8668
+ {
8669
+ items: pluginItems,
8670
+ mobileActions: leftSideBarVisible && mobilePanelHeightMode === "toggle" && /* @__PURE__ */ jsx51(
8671
+ IconButton,
9163
8672
  {
9164
- position: "right",
9165
- sidebarRef: rightSidebarRef,
9166
- isVisible: rightSideBarVisible,
9167
- onResize: setRightWidth,
9168
- onResizeEnd: handleRightSidebarResizeEnd,
9169
- children: /* @__PURE__ */ jsx51(FieldSideBar, {})
8673
+ type: "button",
8674
+ title: "maximize",
8675
+ onClick: () => {
8676
+ setUi({
8677
+ mobilePanelExpanded: !mobilePanelExpanded
8678
+ });
8679
+ },
8680
+ children: mobilePanelExpanded ? /* @__PURE__ */ jsx51(Minimize2, { size: 21 }) : /* @__PURE__ */ jsx51(Maximize2, { size: 21 })
9170
8681
  }
9171
8682
  )
9172
- ]
9173
- }
9174
- )
8683
+ }
8684
+ ) }),
8685
+ /* @__PURE__ */ jsx51(
8686
+ Sidebar,
8687
+ {
8688
+ position: "left",
8689
+ sidebarRef: leftSidebarRef,
8690
+ isVisible: leftSideBarVisible,
8691
+ onResize: setLeftWidth,
8692
+ onResizeEnd: handleLeftSidebarResizeEnd,
8693
+ children: Object.entries(pluginItems).map(
8694
+ ([id, { mobileOnly, render: Render2, label }]) => /* @__PURE__ */ jsx51(
8695
+ PluginTab,
8696
+ {
8697
+ visible: currentPlugin === id,
8698
+ mobileOnly,
8699
+ children: /* @__PURE__ */ jsx51(Render2, {})
8700
+ },
8701
+ id
8702
+ )
8703
+ )
8704
+ }
8705
+ ),
8706
+ /* @__PURE__ */ jsx51(Canvas, {}),
8707
+ !hasDesktopFieldsPlugin && /* @__PURE__ */ jsx51(
8708
+ Sidebar,
8709
+ {
8710
+ position: "right",
8711
+ sidebarRef: rightSidebarRef,
8712
+ isVisible: rightSideBarVisible,
8713
+ onResize: setRightWidth,
8714
+ onResizeEnd: handleRightSidebarResizeEnd,
8715
+ children: /* @__PURE__ */ jsx51(FieldSideBar, {})
8716
+ }
8717
+ )
8718
+ ]
9175
8719
  }
9176
- ) }) }) }),
9177
- /* @__PURE__ */ jsx51("div", { id: "puck-portal-root", className: getClassName36("portal") })
9178
- ]
9179
- }
9180
- );
8720
+ )
8721
+ }
8722
+ ) }) }) }),
8723
+ /* @__PURE__ */ jsx51("div", { id: "puck-portal-root", className: getClassName36("portal") })
8724
+ ] });
9181
8725
  };
9182
8726
 
9183
8727
  // components/Puck/index.tsx
@@ -9255,9 +8799,13 @@ function PuckProvider({ children }) {
9255
8799
  }
9256
8800
  const rootProps = ((_f = initialData == null ? void 0 : initialData.root) == null ? void 0 : _f.props) || (initialData == null ? void 0 : initialData.root) || {};
9257
8801
  const defaultedRootProps = __spreadValues(__spreadValues({}, (_g = config.root) == null ? void 0 : _g.defaultProps), rootProps);
8802
+ const root = populateIds(
8803
+ toComponent(__spreadProps(__spreadValues({}, initialData == null ? void 0 : initialData.root), { props: defaultedRootProps })),
8804
+ config
8805
+ );
9258
8806
  const newAppState = __spreadProps(__spreadValues({}, defaultAppState), {
9259
8807
  data: __spreadProps(__spreadValues({}, initialData), {
9260
- root: __spreadProps(__spreadValues({}, initialData == null ? void 0 : initialData.root), { props: defaultedRootProps }),
8808
+ root: __spreadProps(__spreadValues({}, initialData == null ? void 0 : initialData.root), { props: root.props }),
9261
8809
  content: initialData.content || []
9262
8810
  }),
9263
8811
  ui: __spreadProps(__spreadValues(__spreadValues({}, initial), clientUiState), {
@@ -9294,7 +8842,12 @@ function PuckProvider({ children }) {
9294
8842
  });
9295
8843
  })
9296
8844
  );
9297
- const initialHistoryIndex = (_initialHistory == null ? void 0 : _initialHistory.index) || blendedHistories.length - 1;
8845
+ const initialHistoryIndex = useMemo21(() => {
8846
+ if ((_initialHistory == null ? void 0 : _initialHistory.index) !== void 0 && (_initialHistory == null ? void 0 : _initialHistory.index) >= 0 && (_initialHistory == null ? void 0 : _initialHistory.index) < blendedHistories.length) {
8847
+ return _initialHistory == null ? void 0 : _initialHistory.index;
8848
+ }
8849
+ return blendedHistories.length - 1;
8850
+ }, []);
9298
8851
  const initialAppState = blendedHistories[initialHistoryIndex].state;
9299
8852
  const loadedOverrides = useLoadedOverrides({
9300
8853
  overrides,
@@ -9356,7 +8909,7 @@ function PuckProvider({ children }) {
9356
8909
  });
9357
8910
  const previousData = useRef12(null);
9358
8911
  useEffect30(() => {
9359
- appStore.subscribe(
8912
+ return appStore.subscribe(
9360
8913
  (s) => s.state.data,
9361
8914
  (data) => {
9362
8915
  if (onChange) {
@@ -9366,7 +8919,7 @@ function PuckProvider({ children }) {
9366
8919
  }
9367
8920
  }
9368
8921
  );
9369
- }, []);
8922
+ }, [onChange]);
9370
8923
  useRegisterPermissionsSlice(appStore, permissions);
9371
8924
  const uPuckStore = useRegisterUsePuckStore(appStore);
9372
8925
  useEffect30(() => {
@@ -9453,325 +9006,45 @@ classnames/index.js:
9453
9006
  *)
9454
9007
 
9455
9008
  lucide-react/dist/esm/shared/src/utils.js:
9456
- (**
9457
- * @license lucide-react v0.468.0 - ISC
9458
- *
9459
- * This source code is licensed under the ISC license.
9460
- * See the LICENSE file in the root directory of this source tree.
9461
- *)
9462
-
9463
9009
  lucide-react/dist/esm/defaultAttributes.js:
9464
- (**
9465
- * @license lucide-react v0.468.0 - ISC
9466
- *
9467
- * This source code is licensed under the ISC license.
9468
- * See the LICENSE file in the root directory of this source tree.
9469
- *)
9470
-
9471
9010
  lucide-react/dist/esm/Icon.js:
9472
- (**
9473
- * @license lucide-react v0.468.0 - ISC
9474
- *
9475
- * This source code is licensed under the ISC license.
9476
- * See the LICENSE file in the root directory of this source tree.
9477
- *)
9478
-
9479
9011
  lucide-react/dist/esm/createLucideIcon.js:
9480
- (**
9481
- * @license lucide-react v0.468.0 - ISC
9482
- *
9483
- * This source code is licensed under the ISC license.
9484
- * See the LICENSE file in the root directory of this source tree.
9485
- *)
9486
-
9487
9012
  lucide-react/dist/esm/icons/chevron-down.js:
9488
- (**
9489
- * @license lucide-react v0.468.0 - ISC
9490
- *
9491
- * This source code is licensed under the ISC license.
9492
- * See the LICENSE file in the root directory of this source tree.
9493
- *)
9494
-
9495
9013
  lucide-react/dist/esm/icons/chevron-right.js:
9496
- (**
9497
- * @license lucide-react v0.468.0 - ISC
9498
- *
9499
- * This source code is licensed under the ISC license.
9500
- * See the LICENSE file in the root directory of this source tree.
9501
- *)
9502
-
9503
9014
  lucide-react/dist/esm/icons/chevron-up.js:
9504
- (**
9505
- * @license lucide-react v0.468.0 - ISC
9506
- *
9507
- * This source code is licensed under the ISC license.
9508
- * See the LICENSE file in the root directory of this source tree.
9509
- *)
9510
-
9511
9015
  lucide-react/dist/esm/icons/circle-check-big.js:
9512
- (**
9513
- * @license lucide-react v0.468.0 - ISC
9514
- *
9515
- * This source code is licensed under the ISC license.
9516
- * See the LICENSE file in the root directory of this source tree.
9517
- *)
9518
-
9519
9016
  lucide-react/dist/esm/icons/copy.js:
9520
- (**
9521
- * @license lucide-react v0.468.0 - ISC
9522
- *
9523
- * This source code is licensed under the ISC license.
9524
- * See the LICENSE file in the root directory of this source tree.
9525
- *)
9526
-
9527
9017
  lucide-react/dist/esm/icons/corner-left-up.js:
9528
- (**
9529
- * @license lucide-react v0.468.0 - ISC
9530
- *
9531
- * This source code is licensed under the ISC license.
9532
- * See the LICENSE file in the root directory of this source tree.
9533
- *)
9534
-
9535
9018
  lucide-react/dist/esm/icons/ellipsis-vertical.js:
9536
- (**
9537
- * @license lucide-react v0.468.0 - ISC
9538
- *
9539
- * This source code is licensed under the ISC license.
9540
- * See the LICENSE file in the root directory of this source tree.
9541
- *)
9542
-
9543
9019
  lucide-react/dist/esm/icons/expand.js:
9544
- (**
9545
- * @license lucide-react v0.468.0 - ISC
9546
- *
9547
- * This source code is licensed under the ISC license.
9548
- * See the LICENSE file in the root directory of this source tree.
9549
- *)
9550
-
9551
9020
  lucide-react/dist/esm/icons/globe.js:
9552
- (**
9553
- * @license lucide-react v0.468.0 - ISC
9554
- *
9555
- * This source code is licensed under the ISC license.
9556
- * See the LICENSE file in the root directory of this source tree.
9557
- *)
9558
-
9559
9021
  lucide-react/dist/esm/icons/hammer.js:
9560
- (**
9561
- * @license lucide-react v0.468.0 - ISC
9562
- *
9563
- * This source code is licensed under the ISC license.
9564
- * See the LICENSE file in the root directory of this source tree.
9565
- *)
9566
-
9567
9022
  lucide-react/dist/esm/icons/hash.js:
9568
- (**
9569
- * @license lucide-react v0.468.0 - ISC
9570
- *
9571
- * This source code is licensed under the ISC license.
9572
- * See the LICENSE file in the root directory of this source tree.
9573
- *)
9574
-
9575
9023
  lucide-react/dist/esm/icons/layers.js:
9576
- (**
9577
- * @license lucide-react v0.468.0 - ISC
9578
- *
9579
- * This source code is licensed under the ISC license.
9580
- * See the LICENSE file in the root directory of this source tree.
9581
- *)
9582
-
9583
9024
  lucide-react/dist/esm/icons/layout-grid.js:
9584
- (**
9585
- * @license lucide-react v0.468.0 - ISC
9586
- *
9587
- * This source code is licensed under the ISC license.
9588
- * See the LICENSE file in the root directory of this source tree.
9589
- *)
9590
-
9591
9025
  lucide-react/dist/esm/icons/link.js:
9592
- (**
9593
- * @license lucide-react v0.468.0 - ISC
9594
- *
9595
- * This source code is licensed under the ISC license.
9596
- * See the LICENSE file in the root directory of this source tree.
9597
- *)
9598
-
9599
9026
  lucide-react/dist/esm/icons/list.js:
9600
- (**
9601
- * @license lucide-react v0.468.0 - ISC
9602
- *
9603
- * This source code is licensed under the ISC license.
9604
- * See the LICENSE file in the root directory of this source tree.
9605
- *)
9606
-
9607
9027
  lucide-react/dist/esm/icons/lock-open.js:
9608
- (**
9609
- * @license lucide-react v0.468.0 - ISC
9610
- *
9611
- * This source code is licensed under the ISC license.
9612
- * See the LICENSE file in the root directory of this source tree.
9613
- *)
9614
-
9615
9028
  lucide-react/dist/esm/icons/lock.js:
9616
- (**
9617
- * @license lucide-react v0.468.0 - ISC
9618
- *
9619
- * This source code is licensed under the ISC license.
9620
- * See the LICENSE file in the root directory of this source tree.
9621
- *)
9622
-
9623
9029
  lucide-react/dist/esm/icons/maximize-2.js:
9624
- (**
9625
- * @license lucide-react v0.468.0 - ISC
9626
- *
9627
- * This source code is licensed under the ISC license.
9628
- * See the LICENSE file in the root directory of this source tree.
9629
- *)
9630
-
9631
9030
  lucide-react/dist/esm/icons/minimize-2.js:
9632
- (**
9633
- * @license lucide-react v0.468.0 - ISC
9634
- *
9635
- * This source code is licensed under the ISC license.
9636
- * See the LICENSE file in the root directory of this source tree.
9637
- *)
9638
-
9639
9031
  lucide-react/dist/esm/icons/monitor.js:
9640
- (**
9641
- * @license lucide-react v0.468.0 - ISC
9642
- *
9643
- * This source code is licensed under the ISC license.
9644
- * See the LICENSE file in the root directory of this source tree.
9645
- *)
9646
-
9647
9032
  lucide-react/dist/esm/icons/panel-left.js:
9648
- (**
9649
- * @license lucide-react v0.468.0 - ISC
9650
- *
9651
- * This source code is licensed under the ISC license.
9652
- * See the LICENSE file in the root directory of this source tree.
9653
- *)
9654
-
9655
9033
  lucide-react/dist/esm/icons/panel-right.js:
9656
- (**
9657
- * @license lucide-react v0.468.0 - ISC
9658
- *
9659
- * This source code is licensed under the ISC license.
9660
- * See the LICENSE file in the root directory of this source tree.
9661
- *)
9662
-
9663
9034
  lucide-react/dist/esm/icons/plus.js:
9664
- (**
9665
- * @license lucide-react v0.468.0 - ISC
9666
- *
9667
- * This source code is licensed under the ISC license.
9668
- * See the LICENSE file in the root directory of this source tree.
9669
- *)
9670
-
9671
9035
  lucide-react/dist/esm/icons/rectangle-ellipsis.js:
9672
- (**
9673
- * @license lucide-react v0.468.0 - ISC
9674
- *
9675
- * This source code is licensed under the ISC license.
9676
- * See the LICENSE file in the root directory of this source tree.
9677
- *)
9678
-
9679
9036
  lucide-react/dist/esm/icons/redo-2.js:
9680
- (**
9681
- * @license lucide-react v0.468.0 - ISC
9682
- *
9683
- * This source code is licensed under the ISC license.
9684
- * See the LICENSE file in the root directory of this source tree.
9685
- *)
9686
-
9687
9037
  lucide-react/dist/esm/icons/search.js:
9688
- (**
9689
- * @license lucide-react v0.468.0 - ISC
9690
- *
9691
- * This source code is licensed under the ISC license.
9692
- * See the LICENSE file in the root directory of this source tree.
9693
- *)
9694
-
9695
9038
  lucide-react/dist/esm/icons/sliders-horizontal.js:
9696
- (**
9697
- * @license lucide-react v0.468.0 - ISC
9698
- *
9699
- * This source code is licensed under the ISC license.
9700
- * See the LICENSE file in the root directory of this source tree.
9701
- *)
9702
-
9703
9039
  lucide-react/dist/esm/icons/smartphone.js:
9704
- (**
9705
- * @license lucide-react v0.468.0 - ISC
9706
- *
9707
- * This source code is licensed under the ISC license.
9708
- * See the LICENSE file in the root directory of this source tree.
9709
- *)
9710
-
9711
9040
  lucide-react/dist/esm/icons/tablet.js:
9712
- (**
9713
- * @license lucide-react v0.468.0 - ISC
9714
- *
9715
- * This source code is licensed under the ISC license.
9716
- * See the LICENSE file in the root directory of this source tree.
9717
- *)
9718
-
9719
9041
  lucide-react/dist/esm/icons/toy-brick.js:
9720
- (**
9721
- * @license lucide-react v0.468.0 - ISC
9722
- *
9723
- * This source code is licensed under the ISC license.
9724
- * See the LICENSE file in the root directory of this source tree.
9725
- *)
9726
-
9727
9042
  lucide-react/dist/esm/icons/trash.js:
9728
- (**
9729
- * @license lucide-react v0.468.0 - ISC
9730
- *
9731
- * This source code is licensed under the ISC license.
9732
- * See the LICENSE file in the root directory of this source tree.
9733
- *)
9734
-
9735
9043
  lucide-react/dist/esm/icons/type.js:
9736
- (**
9737
- * @license lucide-react v0.468.0 - ISC
9738
- *
9739
- * This source code is licensed under the ISC license.
9740
- * See the LICENSE file in the root directory of this source tree.
9741
- *)
9742
-
9743
9044
  lucide-react/dist/esm/icons/undo-2.js:
9744
- (**
9745
- * @license lucide-react v0.468.0 - ISC
9746
- *
9747
- * This source code is licensed under the ISC license.
9748
- * See the LICENSE file in the root directory of this source tree.
9749
- *)
9750
-
9751
9045
  lucide-react/dist/esm/icons/x.js:
9752
- (**
9753
- * @license lucide-react v0.468.0 - ISC
9754
- *
9755
- * This source code is licensed under the ISC license.
9756
- * See the LICENSE file in the root directory of this source tree.
9757
- *)
9758
-
9759
9046
  lucide-react/dist/esm/icons/zoom-in.js:
9760
- (**
9761
- * @license lucide-react v0.468.0 - ISC
9762
- *
9763
- * This source code is licensed under the ISC license.
9764
- * See the LICENSE file in the root directory of this source tree.
9765
- *)
9766
-
9767
9047
  lucide-react/dist/esm/icons/zoom-out.js:
9768
- (**
9769
- * @license lucide-react v0.468.0 - ISC
9770
- *
9771
- * This source code is licensed under the ISC license.
9772
- * See the LICENSE file in the root directory of this source tree.
9773
- *)
9774
-
9775
9048
  lucide-react/dist/esm/lucide-react.js:
9776
9049
  (**
9777
9050
  * @license lucide-react v0.468.0 - ISC