@measured/puck 0.11.0-canary.f9033e2 → 0.11.1-canary.1a8f6b8
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/README.md +26 -37
- package/dist/index.css +63 -31
- package/dist/index.d.ts +20 -8
- package/dist/index.js +307 -195
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -234,33 +234,28 @@ The current DropZone implementation has certain rules and limitations:
|
|
|
234
234
|
3. You can't drag between DropZones that don't share a parent (or _area_)
|
|
235
235
|
4. Your mouse must be directly over a DropZone for a collision to be detected
|
|
236
236
|
|
|
237
|
-
##
|
|
237
|
+
## External fields
|
|
238
238
|
|
|
239
|
-
|
|
239
|
+
External fields can be used to import data from a third-party API, such as a headless CMS.
|
|
240
240
|
|
|
241
241
|
### Example
|
|
242
242
|
|
|
243
|
-
The `external` field type enables us to
|
|
243
|
+
The `external` field type enables us to query data from a third party API:
|
|
244
244
|
|
|
245
245
|
```tsx
|
|
246
|
-
const myAdaptor = {
|
|
247
|
-
name: "My adaptor",
|
|
248
|
-
fetchList: async () => {
|
|
249
|
-
const response = await fetch("https://www.example.com/api");
|
|
250
|
-
|
|
251
|
-
return {
|
|
252
|
-
text: response.json().text,
|
|
253
|
-
};
|
|
254
|
-
},
|
|
255
|
-
};
|
|
256
|
-
|
|
257
246
|
const config = {
|
|
258
247
|
components: {
|
|
259
248
|
HeadingBlock: {
|
|
260
249
|
fields: {
|
|
261
250
|
myData: {
|
|
262
251
|
type: "external",
|
|
263
|
-
|
|
252
|
+
fetchList: async () => {
|
|
253
|
+
const response = await fetch("https://www.example.com/api");
|
|
254
|
+
|
|
255
|
+
return {
|
|
256
|
+
text: response.json().text,
|
|
257
|
+
};
|
|
258
|
+
},
|
|
264
259
|
},
|
|
265
260
|
},
|
|
266
261
|
render: ({ myData }) => {
|
|
@@ -271,11 +266,11 @@ const config = {
|
|
|
271
266
|
};
|
|
272
267
|
```
|
|
273
268
|
|
|
274
|
-
When the user interacts with this
|
|
269
|
+
When the user interacts with this external field, they'll be presented with a list of items to choose from. Once they select an item, the value will be mapped onto the prop. In this case, `myData`.
|
|
275
270
|
|
|
276
271
|
## Dynamic prop resolution
|
|
277
272
|
|
|
278
|
-
Dynamic prop resolution allows developers to
|
|
273
|
+
Dynamic prop resolution allows developers to change the props for a component after the props have been changed by the user. This is useful for making third-party API calls, such as requesting the latest content from a headless CMS.
|
|
279
274
|
|
|
280
275
|
### resolveData()
|
|
281
276
|
|
|
@@ -317,29 +312,25 @@ const config = {
|
|
|
317
312
|
};
|
|
318
313
|
```
|
|
319
314
|
|
|
320
|
-
##### Combining with
|
|
315
|
+
##### Combining with external fields
|
|
321
316
|
|
|
322
|
-
A more advanced pattern is to combine the `resolveData` method with
|
|
317
|
+
A more advanced pattern is to combine the `resolveData` method with `external` fields to dynamically fetch data when rendering the component.
|
|
323
318
|
|
|
324
319
|
```tsx
|
|
325
|
-
const myAdaptor = {
|
|
326
|
-
name: "My adaptor",
|
|
327
|
-
fetchList: async () => {
|
|
328
|
-
const response = await fetch("https://www.example.com/api");
|
|
329
|
-
|
|
330
|
-
return {
|
|
331
|
-
id: response.json().id,
|
|
332
|
-
};
|
|
333
|
-
},
|
|
334
|
-
};
|
|
335
|
-
|
|
336
320
|
const config = {
|
|
337
321
|
components: {
|
|
338
322
|
HeadingBlock: {
|
|
339
323
|
fields: {
|
|
340
324
|
myData: {
|
|
341
325
|
type: "external",
|
|
342
|
-
|
|
326
|
+
placeholder: "Select from example.com",
|
|
327
|
+
fetchList: async () => {
|
|
328
|
+
const response = await fetch("https://www.example.com/api");
|
|
329
|
+
|
|
330
|
+
return {
|
|
331
|
+
id: response.json().id,
|
|
332
|
+
};
|
|
333
|
+
},
|
|
343
334
|
},
|
|
344
335
|
title: {
|
|
345
336
|
type: "text",
|
|
@@ -481,14 +472,12 @@ A `Field` represents a user input field shown in the Puck interface.
|
|
|
481
472
|
|
|
482
473
|
### External Fields
|
|
483
474
|
|
|
484
|
-
External fields can be used to load content from an external content repository, like Strapi.js
|
|
475
|
+
External fields can be used to load content from an external content repository, like Strapi.js.
|
|
485
476
|
|
|
486
477
|
- **type** (`"external"`)
|
|
487
|
-
- **
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
- **mapProp** (`(selectedItem: object) => object`): Map the selected item into another shape
|
|
491
|
-
- **adaptorParams** (`object`): Paramaters passed to the adaptor
|
|
478
|
+
- **placeholder** (`string`): A placeholder for the external field button
|
|
479
|
+
- **fetchList** (`() => object`): Fetch content from a third-party API and return an array
|
|
480
|
+
- **mapProp** (`(selectedItem: object) => object`): Map the selected item into another shape
|
|
492
481
|
|
|
493
482
|
### Custom Fields
|
|
494
483
|
|
package/dist/index.css
CHANGED
|
@@ -634,13 +634,13 @@
|
|
|
634
634
|
}
|
|
635
635
|
|
|
636
636
|
/* css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css/#css-module-data */
|
|
637
|
-
.
|
|
637
|
+
._ExternalInput_z7jih_1 {
|
|
638
638
|
font-family: var(--puck-font-stack);
|
|
639
639
|
}
|
|
640
|
-
._ExternalInput-
|
|
640
|
+
._ExternalInput-actions_z7jih_5 {
|
|
641
641
|
display: flex;
|
|
642
642
|
}
|
|
643
|
-
._ExternalInput-
|
|
643
|
+
._ExternalInput-button_z7jih_9 {
|
|
644
644
|
display: flex;
|
|
645
645
|
gap: 8px;
|
|
646
646
|
align-items: center;
|
|
@@ -657,20 +657,20 @@
|
|
|
657
657
|
overflow: hidden;
|
|
658
658
|
flex-grow: 1;
|
|
659
659
|
}
|
|
660
|
-
._ExternalInput-
|
|
661
|
-
._ExternalInput-
|
|
660
|
+
._ExternalInput-button_z7jih_9:hover,
|
|
661
|
+
._ExternalInput-detachButton_z7jih_28:hover {
|
|
662
662
|
cursor: pointer;
|
|
663
663
|
background: var(--puck-color-azure-9);
|
|
664
664
|
color: var(--puck-color-azure-4);
|
|
665
665
|
z-index: 1;
|
|
666
666
|
}
|
|
667
|
-
._ExternalInput--
|
|
667
|
+
._ExternalInput--dataSelected_z7jih_35 ._ExternalInput-button_z7jih_9 {
|
|
668
668
|
color: var(--puck-color-grey-2);
|
|
669
669
|
display: block;
|
|
670
670
|
border-top-right-radius: 0px;
|
|
671
671
|
border-bottom-right-radius: 0px;
|
|
672
672
|
}
|
|
673
|
-
._ExternalInput-
|
|
673
|
+
._ExternalInput-detachButton_z7jih_28 {
|
|
674
674
|
border: 1px solid var(--puck-color-grey-8);
|
|
675
675
|
border-top-right-radius: 4px;
|
|
676
676
|
border-bottom-right-radius: 4px;
|
|
@@ -683,54 +683,87 @@
|
|
|
683
683
|
padding: 8px 12px;
|
|
684
684
|
margin-left: -1px;
|
|
685
685
|
}
|
|
686
|
-
.
|
|
686
|
+
._ExternalInputModal_z7jih_56 {
|
|
687
|
+
display: flex;
|
|
688
|
+
flex-direction: column;
|
|
689
|
+
position: relative;
|
|
690
|
+
max-height: 90vh;
|
|
691
|
+
}
|
|
692
|
+
._ExternalInputModal-masthead_z7jih_63 {
|
|
687
693
|
background-color: white;
|
|
688
694
|
padding: 32px 24px;
|
|
689
695
|
}
|
|
690
|
-
.
|
|
691
|
-
overflow-x:
|
|
692
|
-
overflow-y:
|
|
696
|
+
._ExternalInputModal-tableWrapper_z7jih_68 {
|
|
697
|
+
overflow-x: auto;
|
|
698
|
+
overflow-y: auto;
|
|
693
699
|
flex-grow: 1;
|
|
694
700
|
}
|
|
695
|
-
.
|
|
701
|
+
._ExternalInputModal-table_z7jih_68 {
|
|
702
|
+
border-collapse: unset;
|
|
696
703
|
border-spacing: 0px;
|
|
697
704
|
color: var(--puck-color-neutral-4);
|
|
698
705
|
position: relative;
|
|
706
|
+
z-index: 0;
|
|
699
707
|
}
|
|
700
|
-
.
|
|
708
|
+
._ExternalInputModal-thead_z7jih_82 {
|
|
701
709
|
position: sticky;
|
|
702
710
|
top: 0;
|
|
711
|
+
z-index: 1;
|
|
703
712
|
}
|
|
704
|
-
.
|
|
713
|
+
._ExternalInputModal-th_z7jih_82 {
|
|
705
714
|
border-bottom: 1px solid var(--puck-color-grey-8);
|
|
706
715
|
border-top: 1px solid var(--puck-color-grey-8);
|
|
707
716
|
font-weight: 700;
|
|
708
717
|
padding: 16px 24px;
|
|
709
718
|
opacity: 0.9;
|
|
710
719
|
}
|
|
711
|
-
.
|
|
720
|
+
._ExternalInputModal-td_z7jih_96 {
|
|
721
|
+
font-family: var(--puck-font-stack);
|
|
712
722
|
padding: 16px 24px;
|
|
713
723
|
}
|
|
714
|
-
.
|
|
724
|
+
._ExternalInputModal-tr_z7jih_101:nth-of-type(n) {
|
|
715
725
|
background-color: white;
|
|
716
726
|
}
|
|
717
|
-
.
|
|
727
|
+
._ExternalInputModal-tr_z7jih_101:nth-of-type(2n) {
|
|
718
728
|
background-color: var(--puck-color-grey-10);
|
|
719
729
|
}
|
|
720
|
-
.
|
|
730
|
+
._ExternalInputModal-tr_z7jih_101 ._ExternalInputModal-td_z7jih_96:first-of-type {
|
|
721
731
|
font-weight: 500;
|
|
722
732
|
}
|
|
723
|
-
.
|
|
733
|
+
._ExternalInputModal-tbody_z7jih_113 ._ExternalInputModal-tr_z7jih_101:hover {
|
|
724
734
|
background: var(--puck-color-grey-11);
|
|
725
735
|
color: var(--puck-color-azure-4);
|
|
726
736
|
cursor: pointer;
|
|
727
737
|
position: relative;
|
|
728
738
|
margin-left: -5px;
|
|
729
739
|
}
|
|
730
|
-
.
|
|
740
|
+
._ExternalInputModal-tbody_z7jih_113 ._ExternalInputModal-tr_z7jih_101:hover ._ExternalInputModal-td_z7jih_96:first-of-type {
|
|
731
741
|
border-left: 4px solid var(--puck-color-azure-4);
|
|
732
742
|
padding-left: 20px;
|
|
733
743
|
}
|
|
744
|
+
._ExternalInputModal-tableWrapper_z7jih_68 {
|
|
745
|
+
display: none;
|
|
746
|
+
}
|
|
747
|
+
._ExternalInputModal--hasData_z7jih_132 ._ExternalInputModal-tableWrapper_z7jih_68 {
|
|
748
|
+
display: block;
|
|
749
|
+
}
|
|
750
|
+
._ExternalInputModal-loadingBanner_z7jih_136 {
|
|
751
|
+
display: none;
|
|
752
|
+
background-color: white;
|
|
753
|
+
padding: 64px;
|
|
754
|
+
align-items: center;
|
|
755
|
+
justify-content: center;
|
|
756
|
+
}
|
|
757
|
+
._ExternalInputModal--isLoading_z7jih_144 ._ExternalInputModal-loadingBanner_z7jih_136 {
|
|
758
|
+
display: flex;
|
|
759
|
+
}
|
|
760
|
+
._ExternalInputModal-noContentBanner_z7jih_148 {
|
|
761
|
+
display: none;
|
|
762
|
+
}
|
|
763
|
+
._ExternalInputModal--loaded_z7jih_152:not(._ExternalInputModal--hasData_z7jih_132) ._ExternalInputModal-noContentBanner_z7jih_148 {
|
|
764
|
+
display: block;
|
|
765
|
+
padding: 24px;
|
|
766
|
+
}
|
|
734
767
|
|
|
735
768
|
/* css-module:/home/runner/work/puck/puck/packages/core/components/Modal/styles.module.css/#css-module-data */
|
|
736
769
|
._Modal_hx2u6_1 {
|
|
@@ -761,41 +794,40 @@
|
|
|
761
794
|
}
|
|
762
795
|
|
|
763
796
|
/* css-module:/home/runner/work/puck/puck/packages/core/components/Heading/styles.module.css/#css-module-data */
|
|
764
|
-
.
|
|
797
|
+
._Heading_1bvy5_1 {
|
|
765
798
|
display: block;
|
|
766
799
|
color: var(--puck-color-black);
|
|
767
800
|
font-family: var(--puck-font-stack);
|
|
768
801
|
font-weight: 700;
|
|
769
802
|
margin: 0;
|
|
770
|
-
word-break: break-word;
|
|
771
803
|
}
|
|
772
|
-
.
|
|
804
|
+
._Heading_1bvy5_1 b {
|
|
773
805
|
font-weight: 700;
|
|
774
806
|
}
|
|
775
|
-
._Heading--
|
|
807
|
+
._Heading--xxxxl_1bvy5_13 {
|
|
776
808
|
font-size: var(--puck-font-size-xxxxl);
|
|
777
809
|
letter-spacing: 0.08ch;
|
|
778
810
|
font-weight: 800;
|
|
779
811
|
}
|
|
780
|
-
._Heading--
|
|
812
|
+
._Heading--xxxl_1bvy5_19 {
|
|
781
813
|
font-size: var(--puck-font-size-xxxl);
|
|
782
814
|
}
|
|
783
|
-
._Heading--
|
|
815
|
+
._Heading--xxl_1bvy5_23 {
|
|
784
816
|
font-size: var(--puck-font-size-xxl);
|
|
785
817
|
}
|
|
786
|
-
._Heading--
|
|
818
|
+
._Heading--xl_1bvy5_27 {
|
|
787
819
|
font-size: var(--puck-font-size-xl);
|
|
788
820
|
}
|
|
789
|
-
._Heading--
|
|
821
|
+
._Heading--l_1bvy5_31 {
|
|
790
822
|
font-size: var(--puck-font-size-l);
|
|
791
823
|
}
|
|
792
|
-
._Heading--
|
|
824
|
+
._Heading--m_1bvy5_35 {
|
|
793
825
|
font-size: var(--puck-font-size-m);
|
|
794
826
|
}
|
|
795
|
-
._Heading--
|
|
827
|
+
._Heading--s_1bvy5_39 {
|
|
796
828
|
font-size: var(--puck-font-size-s);
|
|
797
829
|
}
|
|
798
|
-
._Heading--
|
|
830
|
+
._Heading--xs_1bvy5_43 {
|
|
799
831
|
font-size: var(--puck-font-size-xs);
|
|
800
832
|
}
|
|
801
833
|
|
package/dist/index.d.ts
CHANGED
|
@@ -8,11 +8,6 @@ type ItemSelector = {
|
|
|
8
8
|
zone?: string;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, PropShape = TableShape> = {
|
|
12
|
-
name: string;
|
|
13
|
-
fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
|
|
14
|
-
mapProp?: (value: TableShape) => PropShape;
|
|
15
|
-
};
|
|
16
11
|
type WithPuckProps<Props> = Props & {
|
|
17
12
|
id: string;
|
|
18
13
|
};
|
|
@@ -41,16 +36,33 @@ type ArrayField<Props extends {
|
|
|
41
36
|
defaultItemProps?: Props[0];
|
|
42
37
|
getItemSummary?: (item: Props[0], index?: number) => string;
|
|
43
38
|
};
|
|
44
|
-
type
|
|
39
|
+
type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, PropShape = TableShape> = {
|
|
40
|
+
name: string;
|
|
41
|
+
fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
|
|
42
|
+
mapProp?: (value: TableShape) => PropShape;
|
|
43
|
+
};
|
|
44
|
+
type ExternalFieldWithAdaptor<Props extends {
|
|
45
45
|
[key: string]: any;
|
|
46
46
|
} = {
|
|
47
47
|
[key: string]: any;
|
|
48
48
|
}> = BaseField & {
|
|
49
49
|
type: "external";
|
|
50
|
+
placeholder?: string;
|
|
50
51
|
adaptor: Adaptor<any, any, Props>;
|
|
51
52
|
adaptorParams?: object;
|
|
52
53
|
getItemSummary: (item: Props, index?: number) => string;
|
|
53
54
|
};
|
|
55
|
+
type ExternalField<Props extends {
|
|
56
|
+
[key: string]: any;
|
|
57
|
+
} = {
|
|
58
|
+
[key: string]: any;
|
|
59
|
+
}> = BaseField & {
|
|
60
|
+
type: "external";
|
|
61
|
+
placeholder?: string;
|
|
62
|
+
fetchList: () => Promise<any[] | null>;
|
|
63
|
+
mapProp?: (value: any) => Props;
|
|
64
|
+
getItemSummary: (item: Props, index?: number) => string;
|
|
65
|
+
};
|
|
54
66
|
type CustomField<Props extends {
|
|
55
67
|
[key: string]: any;
|
|
56
68
|
} = {
|
|
@@ -69,7 +81,7 @@ type Field<Props extends {
|
|
|
69
81
|
[key: string]: any;
|
|
70
82
|
} = {
|
|
71
83
|
[key: string]: any;
|
|
72
|
-
}> = TextField | SelectField | ArrayField<Props> | ExternalField<Props> | CustomField;
|
|
84
|
+
}> = TextField | SelectField | ArrayField<Props> | ExternalField<Props> | ExternalFieldWithAdaptor<Props> | CustomField;
|
|
73
85
|
type DefaultRootProps = {
|
|
74
86
|
title?: string;
|
|
75
87
|
[key: string]: any;
|
|
@@ -362,4 +374,4 @@ declare const FieldLabel: ({ children, icon, label, el, readOnly, className, }:
|
|
|
362
374
|
className?: string | undefined;
|
|
363
375
|
}) => react_jsx_runtime.JSX.Element;
|
|
364
376
|
|
|
365
|
-
export { Adaptor, AppState, ArrayField, ArrayState, BaseData, BaseField, Button, ComponentConfig, ComponentData, Config, Content, CustomField, Data, DefaultComponentProps, DefaultRootProps, DefaultRootRenderProps, DropZone, DropZoneProvider, ExternalField, Field, FieldLabel, Fields, IconButton, ItemWithId, MappedItem, Puck, Render, RootData, RootDataWithProps, RootDataWithoutProps, SelectField, TextField, UiState, dropZoneContext, resolveAllData };
|
|
377
|
+
export { Adaptor, AppState, ArrayField, ArrayState, BaseData, BaseField, Button, ComponentConfig, ComponentData, Config, Content, CustomField, Data, DefaultComponentProps, DefaultRootProps, DefaultRootRenderProps, DropZone, DropZoneProvider, ExternalField, ExternalFieldWithAdaptor, Field, FieldLabel, Fields, IconButton, ItemWithId, MappedItem, Puck, Render, RootData, RootDataWithProps, RootDataWithoutProps, SelectField, TextField, UiState, dropZoneContext, resolveAllData };
|
package/dist/index.js
CHANGED
|
@@ -32372,7 +32372,7 @@ var IconButton = ({
|
|
|
32372
32372
|
|
|
32373
32373
|
// components/Puck/index.tsx
|
|
32374
32374
|
init_react_import();
|
|
32375
|
-
var
|
|
32375
|
+
var import_react39 = require("react");
|
|
32376
32376
|
var import_react_beautiful_dnd5 = require("react-beautiful-dnd");
|
|
32377
32377
|
|
|
32378
32378
|
// components/InputOrGroup/index.tsx
|
|
@@ -32382,6 +32382,9 @@ init_react_import();
|
|
|
32382
32382
|
init_react_import();
|
|
32383
32383
|
var styles_module_default3 = { "Input": "_Input_1kw16_1", "Input-label": "_Input-label_1kw16_27", "Input-labelIcon": "_Input-labelIcon_1kw16_34", "Input-disabledIcon": "_Input-disabledIcon_1kw16_40", "Input-input": "_Input-input_1kw16_45", "Input--readOnly": "_Input--readOnly_1kw16_66", "Input-radioGroupItems": "_Input-radioGroupItems_1kw16_78", "Input-radio": "_Input-radio_1kw16_78", "Input-radioInner": "_Input-radioInner_1kw16_95", "Input-radioInput": "_Input-radioInput_1kw16_117" };
|
|
32384
32384
|
|
|
32385
|
+
// components/InputOrGroup/index.tsx
|
|
32386
|
+
var import_react31 = require("react");
|
|
32387
|
+
|
|
32385
32388
|
// components/InputOrGroup/fields/index.tsx
|
|
32386
32389
|
init_react_import();
|
|
32387
32390
|
|
|
@@ -32701,6 +32704,7 @@ var DefaultField = ({
|
|
|
32701
32704
|
|
|
32702
32705
|
// components/InputOrGroup/fields/ExternalField/index.tsx
|
|
32703
32706
|
init_react_import();
|
|
32707
|
+
var import_react30 = require("react");
|
|
32704
32708
|
|
|
32705
32709
|
// components/ExternalInput/index.tsx
|
|
32706
32710
|
init_react_import();
|
|
@@ -32708,7 +32712,7 @@ var import_react29 = require("react");
|
|
|
32708
32712
|
|
|
32709
32713
|
// css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css#css-module
|
|
32710
32714
|
init_react_import();
|
|
32711
|
-
var styles_module_default6 = { "ExternalInput": "
|
|
32715
|
+
var styles_module_default6 = { "ExternalInput": "_ExternalInput_z7jih_1", "ExternalInput-actions": "_ExternalInput-actions_z7jih_5", "ExternalInput-button": "_ExternalInput-button_z7jih_9", "ExternalInput-detachButton": "_ExternalInput-detachButton_z7jih_28", "ExternalInput--dataSelected": "_ExternalInput--dataSelected_z7jih_35", "ExternalInputModal": "_ExternalInputModal_z7jih_56", "ExternalInputModal-masthead": "_ExternalInputModal-masthead_z7jih_63", "ExternalInputModal-tableWrapper": "_ExternalInputModal-tableWrapper_z7jih_68", "ExternalInputModal-table": "_ExternalInputModal-table_z7jih_68", "ExternalInputModal-thead": "_ExternalInputModal-thead_z7jih_82", "ExternalInputModal-th": "_ExternalInputModal-th_z7jih_82", "ExternalInputModal-td": "_ExternalInputModal-td_z7jih_96", "ExternalInputModal-tr": "_ExternalInputModal-tr_z7jih_101", "ExternalInputModal-tbody": "_ExternalInputModal-tbody_z7jih_113", "ExternalInputModal--hasData": "_ExternalInputModal--hasData_z7jih_132", "ExternalInputModal-loadingBanner": "_ExternalInputModal-loadingBanner_z7jih_136", "ExternalInputModal--isLoading": "_ExternalInputModal--isLoading_z7jih_144", "ExternalInputModal-noContentBanner": "_ExternalInputModal-noContentBanner_z7jih_148", "ExternalInputModal--loaded": "_ExternalInputModal--loaded_z7jih_152" };
|
|
32712
32716
|
|
|
32713
32717
|
// components/Modal/index.tsx
|
|
32714
32718
|
init_react_import();
|
|
@@ -32748,7 +32752,7 @@ init_react_import();
|
|
|
32748
32752
|
|
|
32749
32753
|
// css-module:/home/runner/work/puck/puck/packages/core/components/Heading/styles.module.css#css-module
|
|
32750
32754
|
init_react_import();
|
|
32751
|
-
var styles_module_default8 = { "Heading": "
|
|
32755
|
+
var styles_module_default8 = { "Heading": "_Heading_1bvy5_1", "Heading--xxxxl": "_Heading--xxxxl_1bvy5_13", "Heading--xxxl": "_Heading--xxxl_1bvy5_19", "Heading--xxl": "_Heading--xxl_1bvy5_23", "Heading--xl": "_Heading--xl_1bvy5_27", "Heading--l": "_Heading--l_1bvy5_31", "Heading--m": "_Heading--m_1bvy5_35", "Heading--s": "_Heading--s_1bvy5_39", "Heading--xs": "_Heading--xs_1bvy5_43" };
|
|
32752
32756
|
|
|
32753
32757
|
// components/Heading/index.tsx
|
|
32754
32758
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
@@ -32767,17 +32771,21 @@ var Heading = ({ children, rank, size = "m" }) => {
|
|
|
32767
32771
|
};
|
|
32768
32772
|
|
|
32769
32773
|
// components/ExternalInput/index.tsx
|
|
32774
|
+
var import_react_spinners4 = require("react-spinners");
|
|
32770
32775
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
32771
32776
|
var getClassName10 = get_class_name_factory_default("ExternalInput", styles_module_default6);
|
|
32777
|
+
var getClassNameModal = get_class_name_factory_default("ExternalInputModal", styles_module_default6);
|
|
32778
|
+
var dataCache = {};
|
|
32772
32779
|
var ExternalInput = ({
|
|
32773
32780
|
field,
|
|
32774
32781
|
onChange,
|
|
32775
|
-
value = null
|
|
32782
|
+
value = null,
|
|
32783
|
+
name
|
|
32776
32784
|
}) => {
|
|
32777
|
-
const { mapProp = (val) => val } = field
|
|
32785
|
+
const { mapProp = (val) => val } = field || {};
|
|
32778
32786
|
const [data, setData] = (0, import_react29.useState)([]);
|
|
32779
32787
|
const [isOpen, setOpen] = (0, import_react29.useState)(false);
|
|
32780
|
-
const [
|
|
32788
|
+
const [isLoading, setIsLoading] = (0, import_react29.useState)(true);
|
|
32781
32789
|
const keys = (0, import_react29.useMemo)(() => {
|
|
32782
32790
|
const validKeys = /* @__PURE__ */ new Set();
|
|
32783
32791
|
for (const item of data) {
|
|
@@ -32791,22 +32799,19 @@ var ExternalInput = ({
|
|
|
32791
32799
|
}, [data]);
|
|
32792
32800
|
(0, import_react29.useEffect)(() => {
|
|
32793
32801
|
(() => __async(void 0, null, function* () {
|
|
32794
|
-
|
|
32795
|
-
|
|
32796
|
-
|
|
32797
|
-
|
|
32798
|
-
|
|
32802
|
+
const listData = dataCache[name] || (yield field.fetchList());
|
|
32803
|
+
if (listData) {
|
|
32804
|
+
setData(listData);
|
|
32805
|
+
setIsLoading(false);
|
|
32806
|
+
dataCache[name] = listData;
|
|
32799
32807
|
}
|
|
32800
32808
|
}))();
|
|
32801
|
-
}, [
|
|
32802
|
-
if (!field.adaptor) {
|
|
32803
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { children: "Incorrectly configured" });
|
|
32804
|
-
}
|
|
32809
|
+
}, []);
|
|
32805
32810
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
32806
32811
|
"div",
|
|
32807
32812
|
{
|
|
32808
32813
|
className: getClassName10({
|
|
32809
|
-
|
|
32814
|
+
dataSelected: !!value,
|
|
32810
32815
|
modalVisible: isOpen
|
|
32811
32816
|
}),
|
|
32812
32817
|
children: [
|
|
@@ -32816,48 +32821,64 @@ var ExternalInput = ({
|
|
|
32816
32821
|
{
|
|
32817
32822
|
onClick: () => setOpen(true),
|
|
32818
32823
|
className: getClassName10("button"),
|
|
32819
|
-
children:
|
|
32824
|
+
children: value ? field.getItemSummary ? field.getItemSummary(value) : "External item" : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
32820
32825
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(link_default, { size: "16" }),
|
|
32821
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.
|
|
32822
|
-
"Select from ",
|
|
32823
|
-
field.adaptor.name
|
|
32824
|
-
] })
|
|
32826
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: field.placeholder })
|
|
32825
32827
|
] })
|
|
32826
32828
|
}
|
|
32827
32829
|
),
|
|
32828
|
-
|
|
32830
|
+
value && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
32829
32831
|
"button",
|
|
32830
32832
|
{
|
|
32831
32833
|
className: getClassName10("detachButton"),
|
|
32832
32834
|
onClick: () => {
|
|
32833
|
-
setSelectedData(null);
|
|
32834
32835
|
onChange(null);
|
|
32835
32836
|
},
|
|
32836
32837
|
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(unlock_default, { size: 16 })
|
|
32837
32838
|
}
|
|
32838
32839
|
)
|
|
32839
32840
|
] }),
|
|
32840
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.
|
|
32841
|
-
|
|
32842
|
-
|
|
32843
|
-
|
|
32844
|
-
|
|
32845
|
-
|
|
32846
|
-
|
|
32847
|
-
|
|
32848
|
-
|
|
32849
|
-
|
|
32850
|
-
|
|
32851
|
-
|
|
32852
|
-
|
|
32841
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Modal, { onClose: () => setOpen(false), isOpen, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
32842
|
+
"div",
|
|
32843
|
+
{
|
|
32844
|
+
className: getClassNameModal({
|
|
32845
|
+
isLoading,
|
|
32846
|
+
loaded: !isLoading,
|
|
32847
|
+
hasData: !!data
|
|
32848
|
+
}),
|
|
32849
|
+
children: [
|
|
32850
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassNameModal("masthead"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Heading, { rank: 2, size: "xxl", children: "Select content" }) }),
|
|
32851
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassNameModal("tableWrapper"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("table", { className: getClassNameModal("table"), children: [
|
|
32852
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("thead", { className: getClassNameModal("thead"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("tr", { className: getClassNameModal("tr"), children: keys.map((key) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
32853
|
+
"th",
|
|
32854
|
+
{
|
|
32855
|
+
className: getClassNameModal("th"),
|
|
32856
|
+
style: { textAlign: "left" },
|
|
32857
|
+
children: key
|
|
32853
32858
|
},
|
|
32854
|
-
|
|
32855
|
-
},
|
|
32856
|
-
i
|
|
32857
|
-
|
|
32858
|
-
|
|
32859
|
-
|
|
32860
|
-
|
|
32859
|
+
key
|
|
32860
|
+
)) }) }),
|
|
32861
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("tbody", { className: getClassNameModal("tbody"), children: data.map((item, i) => {
|
|
32862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
32863
|
+
"tr",
|
|
32864
|
+
{
|
|
32865
|
+
style: { whiteSpace: "nowrap" },
|
|
32866
|
+
className: getClassNameModal("tr"),
|
|
32867
|
+
onClick: (e) => {
|
|
32868
|
+
onChange(mapProp(item));
|
|
32869
|
+
setOpen(false);
|
|
32870
|
+
},
|
|
32871
|
+
children: keys.map((key) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("td", { className: getClassNameModal("td"), children: item[key] }, key))
|
|
32872
|
+
},
|
|
32873
|
+
i
|
|
32874
|
+
);
|
|
32875
|
+
}) })
|
|
32876
|
+
] }) }),
|
|
32877
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassNameModal("noContentBanner"), children: "No content" }),
|
|
32878
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: getClassNameModal("loadingBanner"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react_spinners4.ClipLoader, { size: 24 }) })
|
|
32879
|
+
]
|
|
32880
|
+
}
|
|
32881
|
+
) })
|
|
32861
32882
|
]
|
|
32862
32883
|
}
|
|
32863
32884
|
);
|
|
@@ -32872,7 +32893,17 @@ var ExternalField = ({
|
|
|
32872
32893
|
name,
|
|
32873
32894
|
label
|
|
32874
32895
|
}) => {
|
|
32875
|
-
|
|
32896
|
+
var _a, _b, _c;
|
|
32897
|
+
const validField = field;
|
|
32898
|
+
const deprecatedField = field;
|
|
32899
|
+
(0, import_react30.useEffect)(() => {
|
|
32900
|
+
if (deprecatedField.adaptor) {
|
|
32901
|
+
console.error(
|
|
32902
|
+
"Warning: The `adaptor` API is deprecated. Please use updated APIs on the `external` field instead. This will be a breaking change in a future release."
|
|
32903
|
+
);
|
|
32904
|
+
}
|
|
32905
|
+
}, []);
|
|
32906
|
+
if (field.type !== "external") {
|
|
32876
32907
|
return null;
|
|
32877
32908
|
}
|
|
32878
32909
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
@@ -32881,7 +32912,24 @@ var ExternalField = ({
|
|
|
32881
32912
|
label: label || name,
|
|
32882
32913
|
icon: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(link_default, { size: 16 }),
|
|
32883
32914
|
el: "div",
|
|
32884
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
32915
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
32916
|
+
ExternalInput,
|
|
32917
|
+
{
|
|
32918
|
+
name,
|
|
32919
|
+
field: __spreadProps(__spreadValues({}, validField), {
|
|
32920
|
+
// DEPRECATED
|
|
32921
|
+
placeholder: ((_a = deprecatedField.adaptor) == null ? void 0 : _a.name) ? `Select from ${deprecatedField.adaptor.name}` : validField.placeholder,
|
|
32922
|
+
mapProp: ((_b = deprecatedField.adaptor) == null ? void 0 : _b.mapProp) || validField.mapProp,
|
|
32923
|
+
fetchList: ((_c = deprecatedField.adaptor) == null ? void 0 : _c.fetchList) ? () => __async(void 0, null, function* () {
|
|
32924
|
+
return yield deprecatedField.adaptor.fetchList(
|
|
32925
|
+
deprecatedField.adaptorParams
|
|
32926
|
+
);
|
|
32927
|
+
}) : validField.fetchList
|
|
32928
|
+
}),
|
|
32929
|
+
onChange,
|
|
32930
|
+
value
|
|
32931
|
+
}
|
|
32932
|
+
)
|
|
32885
32933
|
}
|
|
32886
32934
|
);
|
|
32887
32935
|
};
|
|
@@ -33021,6 +33069,7 @@ var TextareaField = ({
|
|
|
33021
33069
|
};
|
|
33022
33070
|
|
|
33023
33071
|
// components/InputOrGroup/index.tsx
|
|
33072
|
+
var import_use_debounce2 = require("use-debounce");
|
|
33024
33073
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
33025
33074
|
var getClassName14 = get_class_name_factory_default("Input", styles_module_default3);
|
|
33026
33075
|
var FieldLabel = ({
|
|
@@ -33061,36 +33110,52 @@ var FieldLabelInternal = ({
|
|
|
33061
33110
|
}
|
|
33062
33111
|
);
|
|
33063
33112
|
};
|
|
33064
|
-
var InputOrGroup = (
|
|
33065
|
-
|
|
33113
|
+
var InputOrGroup = (_a) => {
|
|
33114
|
+
var _b = _a, { onChange } = _b, props = __objRest(_b, ["onChange"]);
|
|
33115
|
+
const { name, field, value, readOnly } = props;
|
|
33116
|
+
const [localValue, setLocalValue] = (0, import_react31.useState)(value);
|
|
33117
|
+
const [localValueDb] = (0, import_use_debounce2.useDebounce)(localValue, 50, { leading: true });
|
|
33118
|
+
(0, import_react31.useEffect)(() => {
|
|
33119
|
+
if (value !== localValueDb) {
|
|
33120
|
+
onChange(localValueDb);
|
|
33121
|
+
}
|
|
33122
|
+
}, [localValueDb]);
|
|
33123
|
+
const onChangeLocal = (0, import_react31.useCallback)((val) => {
|
|
33124
|
+
setLocalValue(val);
|
|
33125
|
+
}, []);
|
|
33126
|
+
(0, import_react31.useEffect)(() => {
|
|
33127
|
+
setLocalValue(value);
|
|
33128
|
+
}, [value]);
|
|
33129
|
+
const localProps = {
|
|
33130
|
+
value: localValue,
|
|
33131
|
+
onChange: onChangeLocal
|
|
33132
|
+
};
|
|
33066
33133
|
if (field.type === "array") {
|
|
33067
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ArrayField, __spreadValues({}, props));
|
|
33134
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ArrayField, __spreadValues(__spreadValues({}, props), localProps));
|
|
33068
33135
|
}
|
|
33069
33136
|
if (field.type === "external") {
|
|
33070
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ExternalField, __spreadValues({}, props));
|
|
33137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ExternalField, __spreadValues(__spreadValues({}, props), localProps));
|
|
33071
33138
|
}
|
|
33072
33139
|
if (field.type === "select") {
|
|
33073
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SelectField, __spreadValues({}, props));
|
|
33140
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SelectField, __spreadValues(__spreadValues({}, props), localProps));
|
|
33074
33141
|
}
|
|
33075
33142
|
if (field.type === "textarea") {
|
|
33076
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TextareaField, __spreadValues({}, props));
|
|
33143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TextareaField, __spreadValues(__spreadValues({}, props), localProps));
|
|
33077
33144
|
}
|
|
33078
33145
|
if (field.type === "radio") {
|
|
33079
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(RadioField, __spreadValues({}, props));
|
|
33146
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(RadioField, __spreadValues(__spreadValues({}, props), localProps));
|
|
33080
33147
|
}
|
|
33081
33148
|
if (field.type === "custom") {
|
|
33082
33149
|
if (!field.render) {
|
|
33083
33150
|
return null;
|
|
33084
33151
|
}
|
|
33085
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: getClassName14(), children: field.render({
|
|
33152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: getClassName14(), children: field.render(__spreadValues({
|
|
33086
33153
|
field,
|
|
33087
33154
|
name,
|
|
33088
|
-
value,
|
|
33089
|
-
onChange,
|
|
33090
33155
|
readOnly
|
|
33091
|
-
}) });
|
|
33156
|
+
}, localProps)) });
|
|
33092
33157
|
}
|
|
33093
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DefaultField, __spreadValues({}, props));
|
|
33158
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DefaultField, __spreadValues(__spreadValues({}, props), localProps));
|
|
33094
33159
|
};
|
|
33095
33160
|
|
|
33096
33161
|
// components/ComponentList/index.tsx
|
|
@@ -33187,10 +33252,10 @@ ComponentList.Item = ComponentListItem;
|
|
|
33187
33252
|
|
|
33188
33253
|
// lib/use-placeholder-style.ts
|
|
33189
33254
|
init_react_import();
|
|
33190
|
-
var
|
|
33255
|
+
var import_react32 = require("react");
|
|
33191
33256
|
var usePlaceholderStyle = () => {
|
|
33192
33257
|
const queryAttr = "data-rbd-drag-handle-draggable-id";
|
|
33193
|
-
const [placeholderStyle, setPlaceholderStyle] = (0,
|
|
33258
|
+
const [placeholderStyle, setPlaceholderStyle] = (0, import_react32.useState)();
|
|
33194
33259
|
const onDragStartOrUpdate = (draggedItem) => {
|
|
33195
33260
|
var _a;
|
|
33196
33261
|
const draggableId = draggedItem.draggableId;
|
|
@@ -33242,7 +33307,7 @@ var styles_module_default10 = { "SidebarSection": "_SidebarSection_r7dv3_1", "Si
|
|
|
33242
33307
|
|
|
33243
33308
|
// lib/use-breadcrumbs.ts
|
|
33244
33309
|
init_react_import();
|
|
33245
|
-
var
|
|
33310
|
+
var import_react33 = require("react");
|
|
33246
33311
|
var convertPathDataToBreadcrumbs = (selectedItem, pathData, data) => {
|
|
33247
33312
|
const id = selectedItem ? selectedItem == null ? void 0 : selectedItem.props.id : "";
|
|
33248
33313
|
const currentPathData = pathData && id && pathData[id] ? __spreadValues({}, pathData[id]) : { label: "Page", path: [] };
|
|
@@ -33292,8 +33357,8 @@ var useBreadcrumbs = (renderCount) => {
|
|
|
33292
33357
|
state: { data },
|
|
33293
33358
|
selectedItem
|
|
33294
33359
|
} = useAppContext();
|
|
33295
|
-
const dzContext = (0,
|
|
33296
|
-
return (0,
|
|
33360
|
+
const dzContext = (0, import_react33.useContext)(dropZoneContext);
|
|
33361
|
+
return (0, import_react33.useMemo)(() => {
|
|
33297
33362
|
const breadcrumbs = convertPathDataToBreadcrumbs(
|
|
33298
33363
|
selectedItem,
|
|
33299
33364
|
dzContext == null ? void 0 : dzContext.pathData,
|
|
@@ -33307,7 +33372,7 @@ var useBreadcrumbs = (renderCount) => {
|
|
|
33307
33372
|
};
|
|
33308
33373
|
|
|
33309
33374
|
// components/SidebarSection/index.tsx
|
|
33310
|
-
var
|
|
33375
|
+
var import_react_spinners5 = require("react-spinners");
|
|
33311
33376
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
33312
33377
|
var getClassName16 = get_class_name_factory_default("SidebarSection", styles_module_default10);
|
|
33313
33378
|
var SidebarSection = ({
|
|
@@ -33336,7 +33401,7 @@ var SidebarSection = ({
|
|
|
33336
33401
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName16("heading"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Heading, { rank: 2, size: "xs", children: title }) })
|
|
33337
33402
|
] }) }),
|
|
33338
33403
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName16("content"), children }),
|
|
33339
|
-
isLoading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName16("loadingOverlay"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
33404
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: getClassName16("loadingOverlay"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_spinners5.ClipLoader, {}) })
|
|
33340
33405
|
] });
|
|
33341
33406
|
};
|
|
33342
33407
|
|
|
@@ -33345,21 +33410,21 @@ init_react_import();
|
|
|
33345
33410
|
|
|
33346
33411
|
// lib/use-puck-history.ts
|
|
33347
33412
|
init_react_import();
|
|
33348
|
-
var
|
|
33413
|
+
var import_react35 = require("react");
|
|
33349
33414
|
|
|
33350
33415
|
// lib/use-action-history.ts
|
|
33351
33416
|
init_react_import();
|
|
33352
|
-
var
|
|
33417
|
+
var import_react34 = require("react");
|
|
33353
33418
|
var EMPTY_HISTORY_INDEX = -1;
|
|
33354
33419
|
function useActionHistory() {
|
|
33355
|
-
const [histories, setHistories] = (0,
|
|
33356
|
-
const [currentHistoryIndex, setCurrentHistoryIndex] = (0,
|
|
33420
|
+
const [histories, setHistories] = (0, import_react34.useState)([]);
|
|
33421
|
+
const [currentHistoryIndex, setCurrentHistoryIndex] = (0, import_react34.useState)(EMPTY_HISTORY_INDEX);
|
|
33357
33422
|
const currentHistory = histories[currentHistoryIndex];
|
|
33358
33423
|
const canRewind = currentHistoryIndex > EMPTY_HISTORY_INDEX;
|
|
33359
33424
|
const canForward = currentHistoryIndex < histories.length - 1;
|
|
33360
33425
|
const record = (params) => {
|
|
33361
33426
|
const history = __spreadValues({
|
|
33362
|
-
id:
|
|
33427
|
+
id: generateId("history")
|
|
33363
33428
|
}, params);
|
|
33364
33429
|
setHistories((prev) => [
|
|
33365
33430
|
...prev.slice(0, currentHistoryIndex + 1),
|
|
@@ -33393,7 +33458,7 @@ function useActionHistory() {
|
|
|
33393
33458
|
// lib/use-puck-history.ts
|
|
33394
33459
|
var import_react_hotkeys_hook = require("react-hotkeys-hook");
|
|
33395
33460
|
var import_event_emitter = __toESM(require("event-emitter"));
|
|
33396
|
-
var
|
|
33461
|
+
var import_use_debounce3 = require("use-debounce");
|
|
33397
33462
|
var DEBOUNCE_TIME = 250;
|
|
33398
33463
|
var RECORD_DIFF = "RECORD_DIFF";
|
|
33399
33464
|
var historyEmitter = (0, import_event_emitter.default)();
|
|
@@ -33423,8 +33488,8 @@ function usePuckHistory({
|
|
|
33423
33488
|
(0, import_react_hotkeys_hook.useHotkeys)("meta+z", rewind, { preventDefault: true });
|
|
33424
33489
|
(0, import_react_hotkeys_hook.useHotkeys)("meta+shift+z", forward, { preventDefault: true });
|
|
33425
33490
|
(0, import_react_hotkeys_hook.useHotkeys)("meta+y", forward, { preventDefault: true });
|
|
33426
|
-
const [snapshot] = (0,
|
|
33427
|
-
const handleRecordDiff = (0,
|
|
33491
|
+
const [snapshot] = (0, import_use_debounce3.useDebounce)(appState, DEBOUNCE_TIME);
|
|
33492
|
+
const handleRecordDiff = (0, import_use_debounce3.useDebouncedCallback)((newAppState) => {
|
|
33428
33493
|
return _recordHistory({
|
|
33429
33494
|
snapshot,
|
|
33430
33495
|
newSnapshot: newAppState,
|
|
@@ -33432,7 +33497,7 @@ function usePuckHistory({
|
|
|
33432
33497
|
dispatch
|
|
33433
33498
|
});
|
|
33434
33499
|
}, DEBOUNCE_TIME);
|
|
33435
|
-
(0,
|
|
33500
|
+
(0, import_react35.useEffect)(() => {
|
|
33436
33501
|
historyEmitter.on(RECORD_DIFF, handleRecordDiff);
|
|
33437
33502
|
return () => {
|
|
33438
33503
|
historyEmitter.off(RECORD_DIFF, handleRecordDiff);
|
|
@@ -33534,6 +33599,23 @@ var zoneCache = {};
|
|
|
33534
33599
|
var addToZoneCache = (key, data) => {
|
|
33535
33600
|
zoneCache[key] = data;
|
|
33536
33601
|
};
|
|
33602
|
+
var replaceAction = (data, action) => {
|
|
33603
|
+
if (action.destinationZone === rootDroppableId) {
|
|
33604
|
+
return __spreadProps(__spreadValues({}, data), {
|
|
33605
|
+
content: replace(data.content, action.destinationIndex, action.data)
|
|
33606
|
+
});
|
|
33607
|
+
}
|
|
33608
|
+
const newData = setupZone(data, action.destinationZone);
|
|
33609
|
+
return __spreadProps(__spreadValues({}, newData), {
|
|
33610
|
+
zones: __spreadProps(__spreadValues({}, newData.zones), {
|
|
33611
|
+
[action.destinationZone]: replace(
|
|
33612
|
+
newData.zones[action.destinationZone],
|
|
33613
|
+
action.destinationIndex,
|
|
33614
|
+
action.data
|
|
33615
|
+
)
|
|
33616
|
+
})
|
|
33617
|
+
});
|
|
33618
|
+
};
|
|
33537
33619
|
var reduceData = (data, action, config) => {
|
|
33538
33620
|
if (action.type === "insert") {
|
|
33539
33621
|
const emptyComponentData = {
|
|
@@ -33660,21 +33742,7 @@ var reduceData = (data, action, config) => {
|
|
|
33660
33742
|
});
|
|
33661
33743
|
}
|
|
33662
33744
|
if (action.type === "replace") {
|
|
33663
|
-
|
|
33664
|
-
return __spreadProps(__spreadValues({}, data), {
|
|
33665
|
-
content: replace(data.content, action.destinationIndex, action.data)
|
|
33666
|
-
});
|
|
33667
|
-
}
|
|
33668
|
-
const newData = setupZone(data, action.destinationZone);
|
|
33669
|
-
return __spreadProps(__spreadValues({}, newData), {
|
|
33670
|
-
zones: __spreadProps(__spreadValues({}, newData.zones), {
|
|
33671
|
-
[action.destinationZone]: replace(
|
|
33672
|
-
newData.zones[action.destinationZone],
|
|
33673
|
-
action.destinationIndex,
|
|
33674
|
-
action.data
|
|
33675
|
-
)
|
|
33676
|
-
})
|
|
33677
|
-
});
|
|
33745
|
+
return replaceAction(data, action);
|
|
33678
33746
|
}
|
|
33679
33747
|
if (action.type === "remove") {
|
|
33680
33748
|
const item = getItem({ index: action.index, zone: action.zone }, data);
|
|
@@ -33785,7 +33853,7 @@ var scrollIntoView = (el) => {
|
|
|
33785
33853
|
};
|
|
33786
33854
|
|
|
33787
33855
|
// components/LayerTree/index.tsx
|
|
33788
|
-
var
|
|
33856
|
+
var import_react36 = require("react");
|
|
33789
33857
|
|
|
33790
33858
|
// lib/find-zones-for-area.ts
|
|
33791
33859
|
init_react_import();
|
|
@@ -33823,7 +33891,7 @@ var LayerTree = ({
|
|
|
33823
33891
|
label
|
|
33824
33892
|
}) => {
|
|
33825
33893
|
const zones = data.zones || {};
|
|
33826
|
-
const ctx = (0,
|
|
33894
|
+
const ctx = (0, import_react36.useContext)(dropZoneContext);
|
|
33827
33895
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
33828
33896
|
label && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: getClassName17("zoneTitle"), children: [
|
|
33829
33897
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: getClassName17("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(layers_default, { size: "16" }) }),
|
|
@@ -33948,11 +34016,11 @@ var flushZones = (appState) => {
|
|
|
33948
34016
|
|
|
33949
34017
|
// lib/use-component-list.tsx
|
|
33950
34018
|
init_react_import();
|
|
33951
|
-
var
|
|
34019
|
+
var import_react37 = require("react");
|
|
33952
34020
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
33953
34021
|
var useComponentList = (config, ui) => {
|
|
33954
|
-
const [componentList, setComponentList] = (0,
|
|
33955
|
-
(0,
|
|
34022
|
+
const [componentList, setComponentList] = (0, import_react37.useState)();
|
|
34023
|
+
(0, import_react37.useEffect)(() => {
|
|
33956
34024
|
var _a, _b, _c;
|
|
33957
34025
|
if (Object.keys(ui.componentList).length > 0) {
|
|
33958
34026
|
const matchedComponents = [];
|
|
@@ -34018,56 +34086,64 @@ var useComponentList = (config, ui) => {
|
|
|
34018
34086
|
|
|
34019
34087
|
// lib/use-resolved-data.ts
|
|
34020
34088
|
init_react_import();
|
|
34021
|
-
var
|
|
34089
|
+
var import_react38 = require("react");
|
|
34022
34090
|
|
|
34023
|
-
// lib/resolve-
|
|
34091
|
+
// lib/resolve-component-data.ts
|
|
34024
34092
|
init_react_import();
|
|
34025
34093
|
var cache = { lastChange: {} };
|
|
34026
|
-
var
|
|
34094
|
+
var resolveAllComponentData = (content, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
|
|
34027
34095
|
return yield Promise.all(
|
|
34028
34096
|
content.map((item) => __async(void 0, null, function* () {
|
|
34029
|
-
|
|
34030
|
-
|
|
34031
|
-
|
|
34032
|
-
|
|
34033
|
-
|
|
34034
|
-
|
|
34035
|
-
if (cache.lastChange[item.props.id]) {
|
|
34036
|
-
const { item: oldItem, resolved } = cache.lastChange[item.props.id];
|
|
34037
|
-
if (oldItem === item) {
|
|
34038
|
-
return resolved;
|
|
34039
|
-
}
|
|
34040
|
-
Object.keys(item.props).forEach((propName) => {
|
|
34041
|
-
if (oldItem.props[propName] === item.props[propName]) {
|
|
34042
|
-
changed[propName] = false;
|
|
34043
|
-
}
|
|
34044
|
-
});
|
|
34045
|
-
}
|
|
34046
|
-
if (onResolveStart) {
|
|
34047
|
-
onResolveStart(item);
|
|
34048
|
-
}
|
|
34049
|
-
const { props: resolvedProps, readOnly = {} } = yield configForItem.resolveData(item, { changed });
|
|
34050
|
-
const { readOnly: existingReadOnly = {} } = item || {};
|
|
34051
|
-
const newReadOnly = __spreadValues(__spreadValues({}, existingReadOnly), readOnly);
|
|
34052
|
-
const resolvedItem = __spreadProps(__spreadValues({}, item), {
|
|
34053
|
-
props: __spreadValues(__spreadValues({}, item.props), resolvedProps)
|
|
34054
|
-
});
|
|
34055
|
-
if (Object.keys(newReadOnly).length) {
|
|
34056
|
-
resolvedItem.readOnly = newReadOnly;
|
|
34057
|
-
}
|
|
34058
|
-
cache.lastChange[item.props.id] = {
|
|
34059
|
-
item,
|
|
34060
|
-
resolved: resolvedItem
|
|
34061
|
-
};
|
|
34062
|
-
if (onResolveEnd) {
|
|
34063
|
-
onResolveEnd(resolvedItem);
|
|
34064
|
-
}
|
|
34065
|
-
return resolvedItem;
|
|
34066
|
-
}
|
|
34067
|
-
return item;
|
|
34097
|
+
return yield resolveComponentData(
|
|
34098
|
+
item,
|
|
34099
|
+
config,
|
|
34100
|
+
onResolveStart,
|
|
34101
|
+
onResolveEnd
|
|
34102
|
+
);
|
|
34068
34103
|
}))
|
|
34069
34104
|
);
|
|
34070
34105
|
});
|
|
34106
|
+
var resolveComponentData = (item, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
|
|
34107
|
+
const configForItem = config.components[item.type];
|
|
34108
|
+
if (configForItem.resolveData) {
|
|
34109
|
+
let changed = Object.keys(item.props).reduce(
|
|
34110
|
+
(acc, item2) => __spreadProps(__spreadValues({}, acc), { [item2]: true }),
|
|
34111
|
+
{}
|
|
34112
|
+
);
|
|
34113
|
+
if (cache.lastChange[item.props.id]) {
|
|
34114
|
+
const { item: oldItem, resolved } = cache.lastChange[item.props.id];
|
|
34115
|
+
if (oldItem === item) {
|
|
34116
|
+
return resolved;
|
|
34117
|
+
}
|
|
34118
|
+
Object.keys(item.props).forEach((propName) => {
|
|
34119
|
+
if (oldItem.props[propName] === item.props[propName]) {
|
|
34120
|
+
changed[propName] = false;
|
|
34121
|
+
}
|
|
34122
|
+
});
|
|
34123
|
+
}
|
|
34124
|
+
if (onResolveStart) {
|
|
34125
|
+
onResolveStart(item);
|
|
34126
|
+
}
|
|
34127
|
+
const { props: resolvedProps, readOnly = {} } = yield configForItem.resolveData(item, { changed });
|
|
34128
|
+
const { readOnly: existingReadOnly = {} } = item || {};
|
|
34129
|
+
const newReadOnly = __spreadValues(__spreadValues({}, existingReadOnly), readOnly);
|
|
34130
|
+
const resolvedItem = __spreadProps(__spreadValues({}, item), {
|
|
34131
|
+
props: __spreadValues(__spreadValues({}, item.props), resolvedProps)
|
|
34132
|
+
});
|
|
34133
|
+
if (Object.keys(newReadOnly).length) {
|
|
34134
|
+
resolvedItem.readOnly = newReadOnly;
|
|
34135
|
+
}
|
|
34136
|
+
cache.lastChange[item.props.id] = {
|
|
34137
|
+
item,
|
|
34138
|
+
resolved: resolvedItem
|
|
34139
|
+
};
|
|
34140
|
+
if (onResolveEnd) {
|
|
34141
|
+
onResolveEnd(resolvedItem);
|
|
34142
|
+
}
|
|
34143
|
+
return resolvedItem;
|
|
34144
|
+
}
|
|
34145
|
+
return item;
|
|
34146
|
+
});
|
|
34071
34147
|
|
|
34072
34148
|
// lib/apply-dynamic-props.ts
|
|
34073
34149
|
init_react_import();
|
|
@@ -34125,55 +34201,81 @@ var resolveRootData = (data, config) => __async(void 0, null, function* () {
|
|
|
34125
34201
|
|
|
34126
34202
|
// lib/use-resolved-data.ts
|
|
34127
34203
|
var useResolvedData = (data, config, dispatch) => {
|
|
34128
|
-
const [
|
|
34129
|
-
|
|
34130
|
-
|
|
34131
|
-
|
|
34132
|
-
|
|
34133
|
-
|
|
34134
|
-
|
|
34135
|
-
|
|
34136
|
-
|
|
34137
|
-
|
|
34138
|
-
|
|
34139
|
-
}
|
|
34140
|
-
(
|
|
34204
|
+
const [{ resolverKey, newData }, setResolverState] = (0, import_react38.useState)({
|
|
34205
|
+
resolverKey: 0,
|
|
34206
|
+
newData: data
|
|
34207
|
+
});
|
|
34208
|
+
const [componentState, setComponentState] = (0, import_react38.useState)({});
|
|
34209
|
+
const deferredSetStates = {};
|
|
34210
|
+
const setComponentLoading = (0, import_react38.useCallback)(
|
|
34211
|
+
(id, loading, defer = 0) => {
|
|
34212
|
+
if (deferredSetStates[id]) {
|
|
34213
|
+
clearTimeout(deferredSetStates[id]);
|
|
34214
|
+
delete deferredSetStates[id];
|
|
34215
|
+
}
|
|
34216
|
+
const setLoading = deferredSetStates[id] = setTimeout(() => {
|
|
34141
34217
|
setComponentState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
34142
|
-
[
|
|
34218
|
+
[id]: __spreadProps(__spreadValues({}, prev[id]), { loading })
|
|
34143
34219
|
}));
|
|
34144
|
-
|
|
34145
|
-
|
|
34146
|
-
|
|
34147
|
-
|
|
34148
|
-
|
|
34149
|
-
|
|
34150
|
-
|
|
34151
|
-
|
|
34152
|
-
|
|
34153
|
-
const newDynamicProps = dynamicContent.reduce(
|
|
34154
|
-
(acc, item) => {
|
|
34155
|
-
return __spreadProps(__spreadValues({}, acc), { [item.props.id]: item });
|
|
34156
|
-
},
|
|
34157
|
-
{}
|
|
34158
|
-
);
|
|
34159
|
-
const processed = applyDynamicProps(data, newDynamicProps, dynamicRoot);
|
|
34220
|
+
delete deferredSetStates[id];
|
|
34221
|
+
}, defer);
|
|
34222
|
+
},
|
|
34223
|
+
[]
|
|
34224
|
+
);
|
|
34225
|
+
const runResolvers = () => __async(void 0, null, function* () {
|
|
34226
|
+
const flatContent = Object.keys(newData.zones || {}).reduce((acc, zone) => [...acc, ...newData.zones[zone]], newData.content).filter((item) => !!config.components[item.type].resolveData);
|
|
34227
|
+
const applyIfChange = (dynamicDataMap, dynamicRoot) => {
|
|
34228
|
+
const processed = applyDynamicProps(data, dynamicDataMap, dynamicRoot);
|
|
34160
34229
|
const containsChanges = JSON.stringify(data) !== JSON.stringify(processed);
|
|
34161
34230
|
if (containsChanges) {
|
|
34162
34231
|
dispatch({
|
|
34163
34232
|
type: "setData",
|
|
34164
|
-
data: (prev) => applyDynamicProps(prev,
|
|
34165
|
-
recordHistory:
|
|
34233
|
+
data: (prev) => applyDynamicProps(prev, dynamicDataMap, dynamicRoot),
|
|
34234
|
+
recordHistory: resolverKey > 0
|
|
34166
34235
|
});
|
|
34167
34236
|
}
|
|
34168
|
-
}
|
|
34169
|
-
|
|
34170
|
-
|
|
34237
|
+
};
|
|
34238
|
+
const promises = [];
|
|
34239
|
+
promises.push(
|
|
34240
|
+
(() => __async(void 0, null, function* () {
|
|
34241
|
+
setComponentLoading("puck-root", true, 50);
|
|
34242
|
+
const dynamicRoot = yield resolveRootData(newData, config);
|
|
34243
|
+
applyIfChange({}, dynamicRoot);
|
|
34244
|
+
setComponentLoading("puck-root", false);
|
|
34245
|
+
}))()
|
|
34246
|
+
);
|
|
34247
|
+
flatContent.forEach((item) => {
|
|
34248
|
+
promises.push(
|
|
34249
|
+
(() => __async(void 0, null, function* () {
|
|
34250
|
+
const dynamicData = yield resolveComponentData(
|
|
34251
|
+
item,
|
|
34252
|
+
config,
|
|
34253
|
+
(item2) => {
|
|
34254
|
+
setComponentLoading(item2.props.id, true, 50);
|
|
34255
|
+
},
|
|
34256
|
+
(item2) => {
|
|
34257
|
+
deferredSetStates[item2.props.id];
|
|
34258
|
+
setComponentLoading(item2.props.id, false);
|
|
34259
|
+
}
|
|
34260
|
+
);
|
|
34261
|
+
const dynamicDataMap = { [item.props.id]: dynamicData };
|
|
34262
|
+
applyIfChange(dynamicDataMap);
|
|
34263
|
+
}))()
|
|
34264
|
+
);
|
|
34265
|
+
});
|
|
34266
|
+
yield Promise.all(promises);
|
|
34267
|
+
});
|
|
34268
|
+
(0, import_react38.useEffect)(() => {
|
|
34171
34269
|
runResolvers();
|
|
34172
|
-
}, [
|
|
34270
|
+
}, [resolverKey]);
|
|
34271
|
+
const resolveData = (0, import_react38.useCallback)((newData2 = data) => {
|
|
34272
|
+
setResolverState((curr) => ({
|
|
34273
|
+
resolverKey: curr.resolverKey + 1,
|
|
34274
|
+
newData: newData2
|
|
34275
|
+
}));
|
|
34276
|
+
}, []);
|
|
34173
34277
|
return {
|
|
34174
|
-
resolveData
|
|
34175
|
-
setRunResolversKey((curr) => curr + 1);
|
|
34176
|
-
},
|
|
34278
|
+
resolveData,
|
|
34177
34279
|
componentState
|
|
34178
34280
|
};
|
|
34179
34281
|
};
|
|
@@ -34208,7 +34310,7 @@ function Puck({
|
|
|
34208
34310
|
headerPath
|
|
34209
34311
|
}) {
|
|
34210
34312
|
var _a, _b;
|
|
34211
|
-
const [reducer] = (0,
|
|
34313
|
+
const [reducer] = (0, import_react39.useState)(() => createReducer({ config }));
|
|
34212
34314
|
const initialAppState = __spreadProps(__spreadValues({}, defaultAppState), {
|
|
34213
34315
|
data: initialData,
|
|
34214
34316
|
ui: __spreadProps(__spreadValues({}, defaultAppState.ui), {
|
|
@@ -34228,7 +34330,7 @@ function Puck({
|
|
|
34228
34330
|
) : {}
|
|
34229
34331
|
})
|
|
34230
34332
|
});
|
|
34231
|
-
const [appState, dispatch] = (0,
|
|
34333
|
+
const [appState, dispatch] = (0, import_react39.useReducer)(
|
|
34232
34334
|
reducer,
|
|
34233
34335
|
flushZones(initialAppState)
|
|
34234
34336
|
);
|
|
@@ -34243,7 +34345,7 @@ function Puck({
|
|
|
34243
34345
|
dispatch
|
|
34244
34346
|
});
|
|
34245
34347
|
const { itemSelector, leftSideBarVisible } = ui;
|
|
34246
|
-
const setItemSelector = (0,
|
|
34348
|
+
const setItemSelector = (0, import_react39.useCallback)(
|
|
34247
34349
|
(newItemSelector) => {
|
|
34248
34350
|
dispatch({
|
|
34249
34351
|
type: "setUi",
|
|
@@ -34253,7 +34355,7 @@ function Puck({
|
|
|
34253
34355
|
[]
|
|
34254
34356
|
);
|
|
34255
34357
|
const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
|
|
34256
|
-
const Page = (0,
|
|
34358
|
+
const Page = (0, import_react39.useCallback)(
|
|
34257
34359
|
(pageProps) => {
|
|
34258
34360
|
var _a2, _b2;
|
|
34259
34361
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
@@ -34269,7 +34371,7 @@ function Puck({
|
|
|
34269
34371
|
},
|
|
34270
34372
|
[config.root]
|
|
34271
34373
|
);
|
|
34272
|
-
const PageFieldWrapper = (0,
|
|
34374
|
+
const PageFieldWrapper = (0, import_react39.useCallback)(
|
|
34273
34375
|
(props) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
34274
34376
|
PluginRenderer,
|
|
34275
34377
|
{
|
|
@@ -34282,7 +34384,7 @@ function Puck({
|
|
|
34282
34384
|
),
|
|
34283
34385
|
[]
|
|
34284
34386
|
);
|
|
34285
|
-
const ComponentFieldWrapper = (0,
|
|
34387
|
+
const ComponentFieldWrapper = (0, import_react39.useCallback)(
|
|
34286
34388
|
(props) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
34287
34389
|
PluginRenderer,
|
|
34288
34390
|
{
|
|
@@ -34295,7 +34397,7 @@ function Puck({
|
|
|
34295
34397
|
),
|
|
34296
34398
|
[]
|
|
34297
34399
|
);
|
|
34298
|
-
const ComponentListWrapper = (0,
|
|
34400
|
+
const ComponentListWrapper = (0, import_react39.useCallback)((props) => {
|
|
34299
34401
|
const children = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
34300
34402
|
PluginRenderer,
|
|
34301
34403
|
{
|
|
@@ -34315,18 +34417,18 @@ function Puck({
|
|
|
34315
34417
|
const FieldWrapper = itemSelector ? ComponentFieldWrapper : PageFieldWrapper;
|
|
34316
34418
|
const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
|
|
34317
34419
|
let fields = selectedItem ? ((_b = config.components[selectedItem.type]) == null ? void 0 : _b.fields) || {} : rootFields;
|
|
34318
|
-
(0,
|
|
34420
|
+
(0, import_react39.useEffect)(() => {
|
|
34319
34421
|
if (onChange)
|
|
34320
34422
|
onChange(data);
|
|
34321
34423
|
}, [data]);
|
|
34322
34424
|
const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
|
|
34323
|
-
const [draggedItem, setDraggedItem] = (0,
|
|
34425
|
+
const [draggedItem, setDraggedItem] = (0, import_react39.useState)();
|
|
34324
34426
|
const componentList = useComponentList(config, appState.ui);
|
|
34325
34427
|
const rootProps = data.root.props || data.root;
|
|
34326
|
-
(0,
|
|
34428
|
+
(0, import_react39.useEffect)(() => {
|
|
34327
34429
|
if (Object.keys(data.root).length > 0 && !data.root.props) {
|
|
34328
34430
|
console.error(
|
|
34329
|
-
"Warning: Defining props on `root` is deprecated. Please use `root.props`. This will be a breaking change in a future release
|
|
34431
|
+
"Warning: Defining props on `root` is deprecated. Please use `root.props`. This will be a breaking change in a future release."
|
|
34330
34432
|
);
|
|
34331
34433
|
}
|
|
34332
34434
|
}, []);
|
|
@@ -34678,6 +34780,7 @@ function Puck({
|
|
|
34678
34780
|
children: Object.keys(fields).map((fieldName) => {
|
|
34679
34781
|
const field = fields[fieldName];
|
|
34680
34782
|
const onChange2 = (value) => {
|
|
34783
|
+
var _a3, _b3;
|
|
34681
34784
|
let currentProps;
|
|
34682
34785
|
if (selectedItem) {
|
|
34683
34786
|
currentProps = selectedItem.props;
|
|
@@ -34688,26 +34791,35 @@ function Puck({
|
|
|
34688
34791
|
[fieldName]: value
|
|
34689
34792
|
});
|
|
34690
34793
|
if (itemSelector) {
|
|
34691
|
-
|
|
34794
|
+
const action = {
|
|
34692
34795
|
type: "replace",
|
|
34693
34796
|
destinationIndex: itemSelector.index,
|
|
34694
34797
|
destinationZone: itemSelector.zone || rootDroppableId,
|
|
34695
34798
|
data: __spreadProps(__spreadValues({}, selectedItem), { props: newProps })
|
|
34696
|
-
}
|
|
34697
|
-
|
|
34799
|
+
};
|
|
34800
|
+
if ((_a3 = config.components[selectedItem.type]) == null ? void 0 : _a3.resolveData) {
|
|
34801
|
+
resolveData(replaceAction(data, action));
|
|
34802
|
+
} else {
|
|
34803
|
+
dispatch(action);
|
|
34804
|
+
}
|
|
34698
34805
|
} else {
|
|
34699
34806
|
if (data.root.props) {
|
|
34700
|
-
|
|
34701
|
-
|
|
34702
|
-
|
|
34703
|
-
|
|
34807
|
+
if ((_b3 = config.root) == null ? void 0 : _b3.resolveData) {
|
|
34808
|
+
resolveData(__spreadProps(__spreadValues({}, data), {
|
|
34809
|
+
root: { props: { newProps } }
|
|
34810
|
+
}));
|
|
34811
|
+
} else {
|
|
34812
|
+
dispatch({
|
|
34813
|
+
type: "setData",
|
|
34814
|
+
data: { root: { props: { newProps } } }
|
|
34815
|
+
});
|
|
34816
|
+
}
|
|
34704
34817
|
} else {
|
|
34705
34818
|
dispatch({
|
|
34706
34819
|
type: "setData",
|
|
34707
34820
|
data: { root: newProps }
|
|
34708
34821
|
});
|
|
34709
34822
|
}
|
|
34710
|
-
resolveData();
|
|
34711
34823
|
}
|
|
34712
34824
|
};
|
|
34713
34825
|
if (selectedItem && itemSelector) {
|
|
@@ -34790,7 +34902,7 @@ var resolveAllData = (data, config, onResolveStart, onResolveEnd) => __async(voi
|
|
|
34790
34902
|
const resolvedZones = {};
|
|
34791
34903
|
for (let i = 0; i < zoneKeys.length; i++) {
|
|
34792
34904
|
const zoneKey = zoneKeys[i];
|
|
34793
|
-
resolvedZones[zoneKey] = yield
|
|
34905
|
+
resolvedZones[zoneKey] = yield resolveAllComponentData(
|
|
34794
34906
|
zones[zoneKey],
|
|
34795
34907
|
config,
|
|
34796
34908
|
onResolveStart,
|
|
@@ -34799,7 +34911,7 @@ var resolveAllData = (data, config, onResolveStart, onResolveEnd) => __async(voi
|
|
|
34799
34911
|
}
|
|
34800
34912
|
return __spreadProps(__spreadValues({}, data), {
|
|
34801
34913
|
root: dynamicRoot,
|
|
34802
|
-
content: yield
|
|
34914
|
+
content: yield resolveAllComponentData(
|
|
34803
34915
|
data.content,
|
|
34804
34916
|
config,
|
|
34805
34917
|
onResolveStart,
|