@measured/puck 0.16.0-canary.cad95b8 → 0.16.0-canary.df1366f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Config-DCrYvDkL.d.ts → Config-CkVFT1_w.d.ts} +6 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +88 -33
- package/dist/rsc.d.ts +1 -1
- package/package.json +1 -1
@@ -184,6 +184,12 @@ type ComponentConfig<ComponentProps extends DefaultComponentProps = DefaultCompo
|
|
184
184
|
props?: Partial<ComponentProps>;
|
185
185
|
readOnly?: Partial<Record<keyof ComponentProps, boolean>>;
|
186
186
|
};
|
187
|
+
resolvePermissions?: (data: DataShape, params: {
|
188
|
+
changed: Partial<Record<keyof ComponentProps, boolean>>;
|
189
|
+
lastPermissions: Partial<Permissions> | undefined;
|
190
|
+
initialPermissions: Partial<Permissions>;
|
191
|
+
appState: AppState;
|
192
|
+
}) => Partial<Permissions>;
|
187
193
|
};
|
188
194
|
type Category<ComponentName> = {
|
189
195
|
components?: ComponentName[];
|
package/dist/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import { U as UiState, D as Data, A as AppState, I as ItemSelector, F as Field, a as FieldProps, C as Config, b as DropZoneProps, P as Permissions, V as Viewports, c as DefaultComponentProps, d as DefaultRootProps, M as MappedItem, R as RootData, e as RootDataWithProps, f as ComponentData } from './Config-
|
2
|
-
export { r as Adaptor, q as ArrayField, m as ArrayState, B as BaseData, n as BaseField, j as ComponentConfig, g as Content, t as CustomField, s as ExternalField, E as ExternalFieldWithAdaptor, u as Fields, l as ItemWithId, N as NumberField, O as ObjectField, h as PuckComponent, i as PuckContext, p as RadioField, k as RootDataWithoutProps, S as SelectField, T as TextField, o as TextareaField } from './Config-
|
1
|
+
import { U as UiState, D as Data, A as AppState, I as ItemSelector, F as Field, a as FieldProps, C as Config, b as DropZoneProps, P as Permissions, V as Viewports, c as DefaultComponentProps, d as DefaultRootProps, M as MappedItem, R as RootData, e as RootDataWithProps, f as ComponentData } from './Config-CkVFT1_w.js';
|
2
|
+
export { r as Adaptor, q as ArrayField, m as ArrayState, B as BaseData, n as BaseField, j as ComponentConfig, g as Content, t as CustomField, s as ExternalField, E as ExternalFieldWithAdaptor, u as Fields, l as ItemWithId, N as NumberField, O as ObjectField, h as PuckComponent, i as PuckContext, p as RadioField, k as RootDataWithoutProps, S as SelectField, T as TextField, o as TextareaField } from './Config-CkVFT1_w.js';
|
3
3
|
import * as react from 'react';
|
4
4
|
import { ReactNode, ReactElement, SyntheticEvent, CSSProperties } from 'react';
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
@@ -107,6 +107,10 @@ type Overrides = OverridesGeneric<{
|
|
107
107
|
children: ReactNode;
|
108
108
|
name: string;
|
109
109
|
}>;
|
110
|
+
iframe: RenderFunc<{
|
111
|
+
children: ReactNode;
|
112
|
+
document?: Document;
|
113
|
+
}>;
|
110
114
|
outline: RenderFunc;
|
111
115
|
puck: RenderFunc;
|
112
116
|
}>;
|
package/dist/index.js
CHANGED
@@ -30539,18 +30539,77 @@ var useLoadedOverrides = ({
|
|
30539
30539
|
|
30540
30540
|
// lib/get-permissions.ts
|
30541
30541
|
init_react_import();
|
30542
|
+
|
30543
|
+
// lib/get-changed.ts
|
30544
|
+
init_react_import();
|
30545
|
+
var getChanged = (newItem, oldItem) => {
|
30546
|
+
return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
|
30547
|
+
const newItemProps = (newItem == null ? void 0 : newItem.props) || {};
|
30548
|
+
const oldItemProps = (oldItem == null ? void 0 : oldItem.props) || {};
|
30549
|
+
return __spreadProps(__spreadValues({}, acc), {
|
30550
|
+
[item]: oldItemProps[item] !== newItemProps[item]
|
30551
|
+
});
|
30552
|
+
}, {}) : {};
|
30553
|
+
};
|
30554
|
+
|
30555
|
+
// lib/resolve-permissions.ts
|
30556
|
+
init_react_import();
|
30557
|
+
var resolvePermissions = ({
|
30558
|
+
selectedItem,
|
30559
|
+
config,
|
30560
|
+
changed,
|
30561
|
+
lastPermissions,
|
30562
|
+
initialPermissions,
|
30563
|
+
appState
|
30564
|
+
}) => {
|
30565
|
+
const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
|
30566
|
+
if (selectedItem && (componentConfig == null ? void 0 : componentConfig.resolvePermissions)) {
|
30567
|
+
return componentConfig.resolvePermissions(selectedItem, {
|
30568
|
+
changed,
|
30569
|
+
lastPermissions,
|
30570
|
+
initialPermissions,
|
30571
|
+
appState
|
30572
|
+
});
|
30573
|
+
}
|
30574
|
+
return {};
|
30575
|
+
};
|
30576
|
+
|
30577
|
+
// lib/get-permissions.ts
|
30578
|
+
var cache = { lastPermissions: {}, lastSelected: {} };
|
30542
30579
|
var getPermissions = ({
|
30543
30580
|
selectedItem,
|
30544
30581
|
type,
|
30545
30582
|
globalPermissions,
|
30546
|
-
config
|
30583
|
+
config,
|
30584
|
+
appState
|
30547
30585
|
}) => {
|
30548
30586
|
const componentType = type || selectedItem && selectedItem.type || "";
|
30587
|
+
const componentId = selectedItem && selectedItem.props.id || "";
|
30549
30588
|
let componentPermissions = getInitialPermissions({
|
30550
30589
|
componentType,
|
30551
30590
|
config,
|
30552
30591
|
globalPermissions
|
30553
30592
|
});
|
30593
|
+
const changed = getChanged(selectedItem, cache.lastSelected);
|
30594
|
+
if (Object.values(changed).some((el) => el === true)) {
|
30595
|
+
const resolvedPermissions = resolvePermissions({
|
30596
|
+
selectedItem,
|
30597
|
+
config,
|
30598
|
+
changed,
|
30599
|
+
lastPermissions: cache.lastPermissions[componentId] || componentPermissions,
|
30600
|
+
initialPermissions: componentPermissions,
|
30601
|
+
appState
|
30602
|
+
});
|
30603
|
+
if (resolvedPermissions !== void 0) {
|
30604
|
+
componentPermissions = __spreadValues(__spreadValues({}, componentPermissions), resolvedPermissions);
|
30605
|
+
}
|
30606
|
+
cache.lastSelected = selectedItem;
|
30607
|
+
cache.lastPermissions[componentId] = componentPermissions;
|
30608
|
+
return componentPermissions;
|
30609
|
+
}
|
30610
|
+
if (Object.keys(componentId && cache.lastPermissions[componentId]).length !== 0) {
|
30611
|
+
componentPermissions = cache.lastPermissions[componentId];
|
30612
|
+
}
|
30554
30613
|
return componentPermissions;
|
30555
30614
|
};
|
30556
30615
|
var getInitialPermissions = ({
|
@@ -30602,7 +30661,8 @@ var DraggableComponent = ({
|
|
30602
30661
|
plugins,
|
30603
30662
|
selectedItem,
|
30604
30663
|
config,
|
30605
|
-
globalPermissions
|
30664
|
+
globalPermissions,
|
30665
|
+
state
|
30606
30666
|
} = useAppContext();
|
30607
30667
|
const isModifierHeld = useModifierHeld("Alt");
|
30608
30668
|
const El = status !== "LOADING" ? import_dnd4.Draggable : DefaultDraggable;
|
@@ -30624,7 +30684,8 @@ var DraggableComponent = ({
|
|
30624
30684
|
const permissions = selectedItem && getPermissions({
|
30625
30685
|
selectedItem,
|
30626
30686
|
globalPermissions: globalPermissions || {},
|
30627
|
-
config
|
30687
|
+
config,
|
30688
|
+
appState: state
|
30628
30689
|
});
|
30629
30690
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
30630
30691
|
El,
|
@@ -30979,7 +31040,8 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
|
|
30979
31040
|
appContext2.state.data
|
30980
31041
|
),
|
30981
31042
|
config: appContext2.config,
|
30982
|
-
globalPermissions: appContext2.globalPermissions || {}
|
31043
|
+
globalPermissions: appContext2.globalPermissions || {},
|
31044
|
+
appState: appContext2.state
|
30983
31045
|
}).drag;
|
30984
31046
|
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
30985
31047
|
"div",
|
@@ -31689,21 +31751,7 @@ var import_react20 = require("react");
|
|
31689
31751
|
|
31690
31752
|
// lib/resolve-component-data.ts
|
31691
31753
|
init_react_import();
|
31692
|
-
|
31693
|
-
// lib/get-changed.ts
|
31694
|
-
init_react_import();
|
31695
|
-
var getChanged = (newItem, oldItem) => {
|
31696
|
-
return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
|
31697
|
-
const newItemProps = (newItem == null ? void 0 : newItem.props) || {};
|
31698
|
-
const oldItemProps = (oldItem == null ? void 0 : oldItem.props) || {};
|
31699
|
-
return __spreadProps(__spreadValues({}, acc), {
|
31700
|
-
[item]: oldItemProps[item] !== newItemProps[item]
|
31701
|
-
});
|
31702
|
-
}, {}) : {};
|
31703
|
-
};
|
31704
|
-
|
31705
|
-
// lib/resolve-component-data.ts
|
31706
|
-
var cache = { lastChange: {} };
|
31754
|
+
var cache2 = { lastChange: {} };
|
31707
31755
|
var resolveAllComponentData = (content, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
|
31708
31756
|
return yield Promise.all(
|
31709
31757
|
content.map((item) => __async(void 0, null, function* () {
|
@@ -31719,7 +31767,7 @@ var resolveAllComponentData = (content, config, onResolveStart, onResolveEnd) =>
|
|
31719
31767
|
var resolveComponentData = (item, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
|
31720
31768
|
const configForItem = config.components[item.type];
|
31721
31769
|
if (configForItem.resolveData) {
|
31722
|
-
const { item: oldItem = {}, resolved = {} } =
|
31770
|
+
const { item: oldItem = {}, resolved = {} } = cache2.lastChange[item.props.id] || {};
|
31723
31771
|
if (item && item === oldItem) {
|
31724
31772
|
return resolved;
|
31725
31773
|
}
|
@@ -31736,7 +31784,7 @@ var resolveComponentData = (item, config, onResolveStart, onResolveEnd) => __asy
|
|
31736
31784
|
if (Object.keys(newReadOnly).length) {
|
31737
31785
|
resolvedItem.readOnly = newReadOnly;
|
31738
31786
|
}
|
31739
|
-
|
31787
|
+
cache2.lastChange[item.props.id] = {
|
31740
31788
|
item,
|
31741
31789
|
resolved: resolvedItem
|
31742
31790
|
};
|
@@ -31768,20 +31816,20 @@ var applyDynamicProps = (data, dynamicProps, rootData) => {
|
|
31768
31816
|
|
31769
31817
|
// lib/resolve-root-data.ts
|
31770
31818
|
init_react_import();
|
31771
|
-
var
|
31819
|
+
var cache3 = {};
|
31772
31820
|
var resolveRootData = (data, config) => __async(void 0, null, function* () {
|
31773
31821
|
var _a, _b, _c, _d, _e;
|
31774
31822
|
if (((_a = config.root) == null ? void 0 : _a.resolveData) && data.root.props) {
|
31775
|
-
if (((_b =
|
31776
|
-
return
|
31823
|
+
if (((_b = cache3.lastChange) == null ? void 0 : _b.original) === data.root) {
|
31824
|
+
return cache3.lastChange.resolved;
|
31777
31825
|
}
|
31778
|
-
const changed = getChanged(data.root, (_c =
|
31826
|
+
const changed = getChanged(data.root, (_c = cache3.lastChange) == null ? void 0 : _c.original);
|
31779
31827
|
const rootWithProps = data.root;
|
31780
31828
|
const resolvedRoot = yield (_e = config.root) == null ? void 0 : _e.resolveData(rootWithProps, {
|
31781
31829
|
changed,
|
31782
|
-
lastData: ((_d =
|
31830
|
+
lastData: ((_d = cache3.lastChange) == null ? void 0 : _d.original) || {}
|
31783
31831
|
});
|
31784
|
-
|
31832
|
+
cache3.lastChange = {
|
31785
31833
|
original: data.root,
|
31786
31834
|
resolved: resolvedRoot
|
31787
31835
|
};
|
@@ -32116,7 +32164,8 @@ var Fields = () => {
|
|
32116
32164
|
const { edit } = getPermissions({
|
32117
32165
|
selectedItem,
|
32118
32166
|
config,
|
32119
|
-
globalPermissions: globalPermissions || {}
|
32167
|
+
globalPermissions: globalPermissions || {},
|
32168
|
+
appState: state
|
32120
32169
|
});
|
32121
32170
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
32122
32171
|
AutoFieldPrivate,
|
@@ -32174,11 +32223,12 @@ var ComponentListItem = ({
|
|
32174
32223
|
label,
|
32175
32224
|
index
|
32176
32225
|
}) => {
|
32177
|
-
const { overrides, config, globalPermissions } = useAppContext();
|
32226
|
+
const { overrides, config, globalPermissions, state } = useAppContext();
|
32178
32227
|
const canInsert = getPermissions({
|
32179
32228
|
type: name,
|
32180
32229
|
config,
|
32181
|
-
globalPermissions: globalPermissions || {}
|
32230
|
+
globalPermissions: globalPermissions || {},
|
32231
|
+
appState: state
|
32182
32232
|
}).insert;
|
32183
32233
|
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
32184
32234
|
Drawer.Item,
|
@@ -32540,10 +32590,11 @@ init_react_import();
|
|
32540
32590
|
var styles_module_default18 = { "PuckPreview": "_PuckPreview_rxwlr_1", "PuckPreview-frame": "_PuckPreview-frame_rxwlr_5" };
|
32541
32591
|
|
32542
32592
|
// components/Puck/components/Preview/index.tsx
|
32593
|
+
var import_react_frame_component2 = require("react-frame-component");
|
32543
32594
|
var import_jsx_runtime33 = require("react/jsx-runtime");
|
32544
32595
|
var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
|
32545
32596
|
var Preview = ({ id = "puck-preview" }) => {
|
32546
|
-
const { config, dispatch, state, setStatus, iframe } = useAppContext();
|
32597
|
+
const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
|
32547
32598
|
const Page = (0, import_react25.useCallback)(
|
32548
32599
|
(pageProps) => {
|
32549
32600
|
var _a, _b;
|
@@ -32557,6 +32608,7 @@ var Preview = ({ id = "puck-preview" }) => {
|
|
32557
32608
|
},
|
32558
32609
|
[config.root]
|
32559
32610
|
);
|
32611
|
+
const Frame2 = (0, import_react25.useMemo)(() => overrides.iframe || "div", [overrides]);
|
32560
32612
|
const rootProps = state.data.root.props || state.data.root;
|
32561
32613
|
const ref = (0, import_react25.useRef)(null);
|
32562
32614
|
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
@@ -32577,7 +32629,9 @@ var Preview = ({ id = "puck-preview" }) => {
|
|
32577
32629
|
onStylesLoaded: () => {
|
32578
32630
|
setStatus("READY");
|
32579
32631
|
},
|
32580
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
32632
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react_frame_component2.FrameContextConsumer, { children: ({ document: document2 }) => {
|
32633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Frame2, { document: document2, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Page, __spreadProps(__spreadValues({ dispatch, state }, rootProps), { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(DropZone, { zone: rootDroppableId }) })) });
|
32634
|
+
} })
|
32581
32635
|
}
|
32582
32636
|
) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { id: "preview-frame", className: getClassName23("frame"), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Page, __spreadProps(__spreadValues({ dispatch, state }, rootProps), { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(DropZone, { zone: rootDroppableId }) })) })
|
32583
32637
|
}
|
@@ -33953,7 +34007,8 @@ var usePuck = () => {
|
|
33953
34007
|
selectedItem: item || currentItem,
|
33954
34008
|
type,
|
33955
34009
|
globalPermissions: globalPermissions || {},
|
33956
|
-
config
|
34010
|
+
config,
|
34011
|
+
appState
|
33957
34012
|
});
|
33958
34013
|
},
|
33959
34014
|
history: {
|
package/dist/rsc.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
2
|
-
import { C as Config, D as Data } from './Config-
|
2
|
+
import { C as Config, D as Data } from './Config-CkVFT1_w.js';
|
3
3
|
import 'react';
|
4
4
|
|
5
5
|
declare function Render<UserConfig extends Config = Config>({ config, data, }: {
|
package/package.json
CHANGED