@measured/puck 0.10.0-canary.c276b23 → 0.10.0-canary.e308381

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 CHANGED
@@ -112,7 +112,11 @@ The plugin API follows a React paradigm. Each plugin passed to the Puck editor c
112
112
  - `renderRootFields` (`Component`): Render the root fields
113
113
  - `renderFields` (`Component`): Render the fields for the currently selected component
114
114
 
115
- Each render function receives the `children` prop, which you must render, and the `data` prop, which can be used to read the data model.
115
+ Each render function receives three props:
116
+
117
+ - **children** (`ReactNode`): The normal contents of the root or field. You must render this.
118
+ - **state** (`AppState`): The current application state, including data and UI state
119
+ - **dispatch** (`(action: PuckAction) => void`): The Puck dispatcher, used for making data changes or updating the UI. See the [action definitions](https://github.com/measuredco/puck/blob/main/packages/core/reducer/actions.tsx) for a full reference of available mutations.
116
120
 
117
121
  #### Example
118
122
 
@@ -285,9 +289,19 @@ A `Field` represents a user input field shown in the Puck interface.
285
289
  - **onChange** (`(value: any) => void`): Callback to change the value
286
290
  - **readOnly** (`boolean` | `undefined`): Whether or not the field should be in readOnly mode
287
291
 
292
+ ### `AppState`
293
+
294
+ The `AppState` object stores the puck application state.
295
+
296
+ - **data** (`Data`): The page data currently being rendered
297
+ - **ui** (`object`):
298
+ - **leftSideBarVisible** (boolean): Whether or not the left side bar is visible
299
+ - **itemSelector** (object): An object describing which item is selected
300
+ - **arrayState** (object): An object describing the internal state of array items
301
+
288
302
  ### `Data`
289
303
 
290
- The `Data` object stores the puck state.
304
+ The `Data` object stores the puck page data.
291
305
 
292
306
  - **root** (`object`):
293
307
  - **title** (string): Title of the content, typically used for the page title
package/dist/index.d.ts CHANGED
@@ -250,15 +250,18 @@ declare const IconButton: ({ children, href, onClick, variant, type, disabled, t
250
250
  type Plugin = {
251
251
  renderRootFields?: (props: {
252
252
  children: ReactNode;
253
- data: Data;
253
+ dispatch: (action: PuckAction) => void;
254
+ state: AppState;
254
255
  }) => ReactElement<any>;
255
256
  renderRoot?: (props: {
256
257
  children: ReactNode;
257
- data: Data;
258
+ dispatch: (action: PuckAction) => void;
259
+ state: AppState;
258
260
  }) => ReactElement<any>;
259
261
  renderFields?: (props: {
260
262
  children: ReactNode;
261
- data: Data;
263
+ dispatch: (action: PuckAction) => void;
264
+ state: AppState;
262
265
  }) => ReactElement<any>;
263
266
  };
264
267
 
@@ -270,11 +273,11 @@ declare function Puck({ config, data: initialData, onChange, onPublish, plugins,
270
273
  plugins?: Plugin[];
271
274
  renderHeader?: (props: {
272
275
  children: ReactNode;
273
- data: Data;
274
276
  dispatch: (action: PuckAction) => void;
277
+ state: AppState;
275
278
  }) => ReactElement;
276
279
  renderHeaderActions?: (props: {
277
- data: Data;
280
+ state: AppState;
278
281
  dispatch: (action: PuckAction) => void;
279
282
  }) => ReactElement;
280
283
  headerTitle?: string;
package/dist/index.js CHANGED
@@ -4557,12 +4557,13 @@ var defaultPageFields = {
4557
4557
  };
4558
4558
  var PluginRenderer = ({
4559
4559
  children,
4560
- data,
4560
+ dispatch,
4561
+ state,
4561
4562
  plugins,
4562
4563
  renderMethod
4563
4564
  }) => {
4564
4565
  return plugins.filter((item) => item[renderMethod]).map((item) => item[renderMethod]).reduce(
4565
- (accChildren, Item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Item, { data, children: accChildren }),
4566
+ (accChildren, Item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Item, { dispatch, state, children: accChildren }),
4566
4567
  children
4567
4568
  );
4568
4569
  };
@@ -4610,7 +4611,8 @@ function Puck({
4610
4611
  {
4611
4612
  plugins,
4612
4613
  renderMethod: "renderRoot",
4613
- data: pageProps.data,
4614
+ dispatch: pageProps.dispatch,
4615
+ state: pageProps.state,
4614
4616
  children: ((_a2 = config.root) == null ? void 0 : _a2.render) ? (_b2 = config.root) == null ? void 0 : _b2.render(__spreadProps(__spreadValues({}, pageProps), { editMode: true })) : pageProps.children
4615
4617
  }
4616
4618
  );
@@ -4623,7 +4625,8 @@ function Puck({
4623
4625
  {
4624
4626
  plugins,
4625
4627
  renderMethod: "renderRootFields",
4626
- data: props.data,
4628
+ dispatch: props.dispatch,
4629
+ state: props.state,
4627
4630
  children: props.children
4628
4631
  }
4629
4632
  ),
@@ -4635,7 +4638,8 @@ function Puck({
4635
4638
  {
4636
4639
  plugins,
4637
4640
  renderMethod: "renderFields",
4638
- data: props.data,
4641
+ dispatch: props.dispatch,
4642
+ state: props.state,
4639
4643
  children: props.children
4640
4644
  }
4641
4645
  ),
@@ -4753,8 +4757,8 @@ function Puck({
4753
4757
  children: "Publish"
4754
4758
  }
4755
4759
  ),
4756
- data,
4757
- dispatch
4760
+ dispatch,
4761
+ state: appState
4758
4762
  }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4759
4763
  "div",
4760
4764
  {
@@ -4849,7 +4853,10 @@ function Puck({
4849
4853
  }
4850
4854
  )
4851
4855
  ] }),
4852
- renderHeaderActions && renderHeaderActions({ data, dispatch }),
4856
+ renderHeaderActions && renderHeaderActions({
4857
+ state: appState,
4858
+ dispatch
4859
+ }),
4853
4860
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4854
4861
  Button,
4855
4862
  {
@@ -4940,7 +4947,15 @@ function Puck({
4940
4947
  style: {
4941
4948
  border: "1px solid var(--puck-color-grey-8)"
4942
4949
  },
4943
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Page, __spreadProps(__spreadValues({ data }, data.root), { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: rootDroppableId }) }))
4950
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4951
+ Page,
4952
+ __spreadProps(__spreadValues({
4953
+ dispatch,
4954
+ state: appState
4955
+ }, data.root), {
4956
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DropZone, { zone: rootDroppableId })
4957
+ })
4958
+ )
4944
4959
  }
4945
4960
  )
4946
4961
  }
@@ -4970,7 +4985,7 @@ function Puck({
4970
4985
  flexDirection: "column",
4971
4986
  background: "var(--puck-color-white)"
4972
4987
  },
4973
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(FieldWrapper, { data, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4988
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(FieldWrapper, { dispatch, state: appState, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4974
4989
  SidebarSection,
4975
4990
  {
4976
4991
  noPadding: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@measured/puck",
3
- "version": "0.10.0-canary.c276b23",
3
+ "version": "0.10.0-canary.e308381",
4
4
  "private": false,
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",