@pantheon-systems/puck-css 0.4.4 → 0.5.0

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.
Files changed (200) hide show
  1. package/dist/auth/P1AuthProvider.d.ts +1 -0
  2. package/dist/auth/P1AuthProvider.d.ts.map +1 -1
  3. package/dist/auth/P1AuthProvider.js +9 -0
  4. package/dist/auth/P1AuthProvider.js.map +1 -1
  5. package/dist/auth/index.d.ts +1 -1
  6. package/dist/auth/index.d.ts.map +1 -1
  7. package/dist/auth/index.js +1 -1
  8. package/dist/auth/index.js.map +1 -1
  9. package/dist/core/types.d.ts +31 -4
  10. package/dist/core/types.d.ts.map +1 -1
  11. package/dist/data/dal/init.d.ts +7 -0
  12. package/dist/data/dal/init.d.ts.map +1 -1
  13. package/dist/data/dal/init.js +32 -0
  14. package/dist/data/dal/init.js.map +1 -1
  15. package/dist/data/dal/p1-store.d.ts +2 -0
  16. package/dist/data/dal/p1-store.d.ts.map +1 -1
  17. package/dist/data/dal/p1-store.js +14 -10
  18. package/dist/data/dal/p1-store.js.map +1 -1
  19. package/dist/data/page-store.d.ts +4 -3
  20. package/dist/data/page-store.d.ts.map +1 -1
  21. package/dist/data/page-store.js +6 -6
  22. package/dist/data/page-store.js.map +1 -1
  23. package/dist/data/paths.js +1 -1
  24. package/dist/data/paths.js.map +1 -1
  25. package/dist/editor/P1PuckProvider.d.ts.map +1 -1
  26. package/dist/editor/P1PuckProvider.js +102 -17
  27. package/dist/editor/P1PuckProvider.js.map +1 -1
  28. package/dist/editor/plugin/P1Plugin.d.ts +12 -2
  29. package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
  30. package/dist/editor/plugin/P1Plugin.js +30 -9
  31. package/dist/editor/plugin/P1Plugin.js.map +1 -1
  32. package/dist/editor/plugin/createP1Overrides.d.ts +7 -0
  33. package/dist/editor/plugin/createP1Overrides.d.ts.map +1 -1
  34. package/dist/editor/plugin/createP1Overrides.js +72 -2
  35. package/dist/editor/plugin/createP1Overrides.js.map +1 -1
  36. package/dist/editor/useDocuments.d.ts +1 -0
  37. package/dist/editor/useDocuments.d.ts.map +1 -1
  38. package/dist/editor/useDocuments.js +15 -2
  39. package/dist/editor/useDocuments.js.map +1 -1
  40. package/dist/editor/useP1Editor.d.ts.map +1 -1
  41. package/dist/editor/useP1Editor.js +41 -23
  42. package/dist/editor/useP1Editor.js.map +1 -1
  43. package/dist/editor/useP1Plugin.d.ts +3 -1
  44. package/dist/editor/useP1Plugin.d.ts.map +1 -1
  45. package/dist/editor/useP1Plugin.js +2 -0
  46. package/dist/editor/useP1Plugin.js.map +1 -1
  47. package/dist/features/content-type-templates/editor/useTemplateScaffold.d.ts +3 -7
  48. package/dist/features/content-type-templates/editor/useTemplateScaffold.d.ts.map +1 -1
  49. package/dist/features/content-type-templates/editor/useTemplateScaffold.js +6 -14
  50. package/dist/features/content-type-templates/editor/useTemplateScaffold.js.map +1 -1
  51. package/dist/features/content-type-templates/hooks/useTemplateList.d.ts +3 -3
  52. package/dist/features/content-type-templates/hooks/useTemplateList.d.ts.map +1 -1
  53. package/dist/features/content-type-templates/hooks/useTemplateList.js +5 -3
  54. package/dist/features/content-type-templates/hooks/useTemplateList.js.map +1 -1
  55. package/dist/features/content-type-templates/index.d.ts +1 -1
  56. package/dist/features/content-type-templates/index.d.ts.map +1 -1
  57. package/dist/features/content-type-templates/index.js.map +1 -1
  58. package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts +8 -3
  59. package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts.map +1 -1
  60. package/dist/features/content-type-templates/permissions/createPuckPermissions.js +18 -27
  61. package/dist/features/content-type-templates/permissions/createPuckPermissions.js.map +1 -1
  62. package/dist/features/content-type-templates/stores/template-store.d.ts +4 -4
  63. package/dist/features/content-type-templates/stores/template-store.d.ts.map +1 -1
  64. package/dist/features/content-type-templates/stores/template-store.js +33 -10
  65. package/dist/features/content-type-templates/stores/template-store.js.map +1 -1
  66. package/dist/features/content-type-templates/types.d.ts +1 -88
  67. package/dist/features/content-type-templates/types.d.ts.map +1 -1
  68. package/dist/features/content-type-templates/ui/ActionBarPinButton.d.ts.map +1 -1
  69. package/dist/features/content-type-templates/ui/ActionBarPinButton.js +16 -34
  70. package/dist/features/content-type-templates/ui/ActionBarPinButton.js.map +1 -1
  71. package/dist/features/content-type-templates/ui/TemplateDetailsPanel.d.ts +24 -0
  72. package/dist/features/content-type-templates/ui/TemplateDetailsPanel.d.ts.map +1 -0
  73. package/dist/features/content-type-templates/ui/TemplateDetailsPanel.js +124 -0
  74. package/dist/features/content-type-templates/ui/TemplateDetailsPanel.js.map +1 -0
  75. package/dist/features/content-type-templates/ui/TemplateSelector.d.ts +2 -2
  76. package/dist/features/content-type-templates/ui/TemplateSelector.d.ts.map +1 -1
  77. package/dist/features/content-type-templates/validation/structural-validation.d.ts.map +1 -1
  78. package/dist/features/content-type-templates/validation/structural-validation.js +7 -4
  79. package/dist/features/content-type-templates/validation/structural-validation.js.map +1 -1
  80. package/dist/index.d.ts +3 -4
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +2 -3
  83. package/dist/index.js.map +1 -1
  84. package/dist/p1/editor/connect/connect-field-modal.d.ts.map +1 -1
  85. package/dist/p1/editor/connect/connect-field-modal.js +1 -1
  86. package/dist/p1/editor/connect/connect-field-modal.js.map +1 -1
  87. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.d.ts.map +1 -1
  88. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js +91 -29
  89. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js.map +1 -1
  90. package/dist/p1/pages/index.d.ts +0 -10
  91. package/dist/p1/pages/index.d.ts.map +1 -1
  92. package/dist/p1/pages/index.js +0 -10
  93. package/dist/p1/pages/index.js.map +1 -1
  94. package/dist/pds/components/CreatePageModal.d.ts +109 -0
  95. package/dist/pds/components/CreatePageModal.d.ts.map +1 -0
  96. package/dist/pds/components/CreatePageModal.js +527 -0
  97. package/dist/pds/components/CreatePageModal.js.map +1 -0
  98. package/dist/pds/components/CreatePageModal.module.css +745 -0
  99. package/dist/pds/components/DocStateBadge.js +1 -1
  100. package/dist/pds/components/DocStateBadge.js.map +1 -1
  101. package/dist/pds/components/P1EditorHeader.d.ts +17 -5
  102. package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
  103. package/dist/pds/components/P1EditorHeader.js +32 -6
  104. package/dist/pds/components/P1EditorHeader.js.map +1 -1
  105. package/dist/pds/components/P1EditorSubheader.d.ts +7 -1
  106. package/dist/pds/components/P1EditorSubheader.d.ts.map +1 -1
  107. package/dist/pds/components/P1EditorSubheader.js +2 -2
  108. package/dist/pds/components/P1EditorSubheader.js.map +1 -1
  109. package/dist/pds/components/PageNavigator.d.ts +15 -4
  110. package/dist/pds/components/PageNavigator.d.ts.map +1 -1
  111. package/dist/pds/components/PageNavigator.js +23 -5
  112. package/dist/pds/components/PageNavigator.js.map +1 -1
  113. package/dist/pds/components/PageNavigator.module.css +29 -0
  114. package/dist/pds/components/WizardQuestion.d.ts +29 -0
  115. package/dist/pds/components/WizardQuestion.d.ts.map +1 -0
  116. package/dist/pds/components/WizardQuestion.js +57 -0
  117. package/dist/pds/components/WizardQuestion.js.map +1 -0
  118. package/dist/pds/utils/deriveLiveDocState.d.ts +18 -0
  119. package/dist/pds/utils/deriveLiveDocState.d.ts.map +1 -0
  120. package/dist/pds/utils/deriveLiveDocState.js +20 -0
  121. package/dist/pds/utils/deriveLiveDocState.js.map +1 -0
  122. package/dist/server.d.ts +1 -2
  123. package/dist/server.d.ts.map +1 -1
  124. package/dist/server.js +1 -3
  125. package/dist/server.js.map +1 -1
  126. package/package.json +4 -2
  127. package/src/pds/theme/PuckEditorTheme.css +3 -1
  128. package/src/pds/theme/PuckEditorTheme.test.ts +4 -3
  129. package/dist/features/content-type-templates/editor/useTemplateEditor.d.ts +0 -20
  130. package/dist/features/content-type-templates/editor/useTemplateEditor.d.ts.map +0 -1
  131. package/dist/features/content-type-templates/editor/useTemplateEditor.js +0 -62
  132. package/dist/features/content-type-templates/editor/useTemplateEditor.js.map +0 -1
  133. package/dist/features/content-type-templates/ui/TemplateManagerOverlay.d.ts +0 -18
  134. package/dist/features/content-type-templates/ui/TemplateManagerOverlay.d.ts.map +0 -1
  135. package/dist/features/content-type-templates/ui/TemplateManagerOverlay.js +0 -167
  136. package/dist/features/content-type-templates/ui/TemplateManagerOverlay.js.map +0 -1
  137. package/dist/features/content-type-templates/ui/TemplatePinPanel.d.ts +0 -18
  138. package/dist/features/content-type-templates/ui/TemplatePinPanel.d.ts.map +0 -1
  139. package/dist/features/content-type-templates/ui/TemplatePinPanel.js +0 -11
  140. package/dist/features/content-type-templates/ui/TemplatePinPanel.js.map +0 -1
  141. package/dist/features/content-type-templates/ui/dataToTemplate.d.ts +0 -25
  142. package/dist/features/content-type-templates/ui/dataToTemplate.d.ts.map +0 -1
  143. package/dist/features/content-type-templates/ui/dataToTemplate.js +0 -37
  144. package/dist/features/content-type-templates/ui/dataToTemplate.js.map +0 -1
  145. package/dist/p1/editor/json-tree.d.ts +0 -6
  146. package/dist/p1/editor/json-tree.d.ts.map +0 -1
  147. package/dist/p1/editor/json-tree.js +0 -64
  148. package/dist/p1/editor/json-tree.js.map +0 -1
  149. package/dist/p1/pages/add-override-for-template.d.ts +0 -4
  150. package/dist/p1/pages/add-override-for-template.d.ts.map +0 -1
  151. package/dist/p1/pages/add-override-for-template.js +0 -47
  152. package/dist/p1/pages/add-override-for-template.js.map +0 -1
  153. package/dist/p1/pages/conflict-resolution-panel.d.ts +0 -17
  154. package/dist/p1/pages/conflict-resolution-panel.d.ts.map +0 -1
  155. package/dist/p1/pages/conflict-resolution-panel.js +0 -74
  156. package/dist/p1/pages/conflict-resolution-panel.js.map +0 -1
  157. package/dist/p1/pages/content-type-template-list.d.ts +0 -7
  158. package/dist/p1/pages/content-type-template-list.d.ts.map +0 -1
  159. package/dist/p1/pages/content-type-template-list.js +0 -108
  160. package/dist/p1/pages/content-type-template-list.js.map +0 -1
  161. package/dist/p1/pages/create-content-type-form.d.ts +0 -7
  162. package/dist/p1/pages/create-content-type-form.d.ts.map +0 -1
  163. package/dist/p1/pages/create-content-type-form.js +0 -102
  164. package/dist/p1/pages/create-content-type-form.js.map +0 -1
  165. package/dist/p1/pages/create-page-form.d.ts +0 -9
  166. package/dist/p1/pages/create-page-form.d.ts.map +0 -1
  167. package/dist/p1/pages/create-page-form.js +0 -87
  168. package/dist/p1/pages/create-page-form.js.map +0 -1
  169. package/dist/p1/pages/create-template-form.d.ts +0 -7
  170. package/dist/p1/pages/create-template-form.d.ts.map +0 -1
  171. package/dist/p1/pages/create-template-form.js +0 -82
  172. package/dist/p1/pages/create-template-form.js.map +0 -1
  173. package/dist/p1/pages/delete-row-button.d.ts +0 -7
  174. package/dist/p1/pages/delete-row-button.d.ts.map +0 -1
  175. package/dist/p1/pages/delete-row-button.js +0 -23
  176. package/dist/p1/pages/delete-row-button.js.map +0 -1
  177. package/dist/p1/pages/hooks.d.ts +0 -10
  178. package/dist/p1/pages/hooks.d.ts.map +0 -1
  179. package/dist/p1/pages/hooks.js +0 -66
  180. package/dist/p1/pages/hooks.js.map +0 -1
  181. package/dist/p1/pages/migration-conflict-queue.d.ts +0 -8
  182. package/dist/p1/pages/migration-conflict-queue.d.ts.map +0 -1
  183. package/dist/p1/pages/migration-conflict-queue.js +0 -62
  184. package/dist/p1/pages/migration-conflict-queue.js.map +0 -1
  185. package/dist/p1/pages/migration-preview-panel.d.ts +0 -12
  186. package/dist/p1/pages/migration-preview-panel.d.ts.map +0 -1
  187. package/dist/p1/pages/migration-preview-panel.js +0 -157
  188. package/dist/p1/pages/migration-preview-panel.js.map +0 -1
  189. package/dist/p1/pages/migration-status-panel.d.ts +0 -7
  190. package/dist/p1/pages/migration-status-panel.d.ts.map +0 -1
  191. package/dist/p1/pages/migration-status-panel.js +0 -198
  192. package/dist/p1/pages/migration-status-panel.js.map +0 -1
  193. package/dist/p1/pages/structure-page.d.ts +0 -2
  194. package/dist/p1/pages/structure-page.d.ts.map +0 -1
  195. package/dist/p1/pages/structure-page.js +0 -103
  196. package/dist/p1/pages/structure-page.js.map +0 -1
  197. package/dist/p1/pages/structure-tabs.d.ts +0 -11
  198. package/dist/p1/pages/structure-tabs.d.ts.map +0 -1
  199. package/dist/p1/pages/structure-tabs.js +0 -45
  200. package/dist/p1/pages/structure-tabs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useP1Plugin.js","sourceRoot":"","sources":["../../src/editor/useP1Plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useP1Plugin.js","sourceRoot":"","sources":["../../src/editor/useP1Plugin.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,8 @@ import type { Template } from '../types.js';
8
8
  /**
9
9
  * Create Puck data from a template.
10
10
  *
11
- * Deep-clones the template component skeleton with unique IDs.
11
+ * Copies each content item with a shallow spread of its props and a fresh
12
+ * component ID (durable ids across template-to-page are PCC-3358).
12
13
  */
13
- export declare function scaffoldFromTemplate(template: Template & {
14
- content?: Array<{
15
- type: string;
16
- props: Record<string, unknown>;
17
- }>;
18
- }): Data;
14
+ export declare function scaffoldFromTemplate(template: Pick<Template, 'content'>): Data;
19
15
  //# sourceMappingURL=useTemplateScaffold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTemplateScaffold.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/editor/useTemplateScaffold.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAS5C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,IAAI,CAqBrI"}
1
+ {"version":3,"file":"useTemplateScaffold.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/editor/useTemplateScaffold.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAS5C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI,CAW9E"}
@@ -12,22 +12,14 @@ function generateComponentId() {
12
12
  /**
13
13
  * Create Puck data from a template.
14
14
  *
15
- * Deep-clones the template component skeleton with unique IDs.
15
+ * Copies each content item with a shallow spread of its props and a fresh
16
+ * component ID (durable ids across template-to-page are PCC-3358).
16
17
  */
17
18
  export function scaffoldFromTemplate(template) {
18
- // Prefer the Puck content array (from the template's snapshot) which has
19
- // full component data. Fall back to the components metadata array.
20
- const sourceContent = template.content ?? [];
21
- const sourceComponents = template.components ?? [];
22
- const content = sourceContent.length > 0
23
- ? sourceContent.map((item) => ({
24
- type: item.type,
25
- props: { ...item.props, id: generateComponentId() },
26
- }))
27
- : sourceComponents.map((component) => ({
28
- type: component.type,
29
- props: { ...component.defaultProps, id: generateComponentId() },
30
- }));
19
+ const content = (template.content ?? []).map((item) => ({
20
+ type: item.type,
21
+ props: { ...item.props, id: generateComponentId() },
22
+ }));
31
23
  return {
32
24
  root: { props: {} },
33
25
  content,
@@ -1 +1 @@
1
- {"version":3,"file":"useTemplateScaffold.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/editor/useTemplateScaffold.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,SAAS,mBAAmB;IAC1B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA0F;IAC7H,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,aAAa,GAAI,QAAkF,CAAC,OAAO,IAAI,EAAE,CAAC;IACxH,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;IAEnD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;QACtC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE;SACpD,CAAC,CAAC;QACL,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,EAAE,GAAG,SAAS,CAAC,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE;SAChE,CAAC,CAAC,CAAC;IAER,OAAO;QACL,IAAI,EAAE,EAAE,KAAK,EAAE,EAA6B,EAAE;QAC9C,OAAO;QACP,KAAK,EAAE,EAAE;KACF,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"useTemplateScaffold.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/editor/useTemplateScaffold.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,SAAS,mBAAmB;IAC1B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAmC;IACtE,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE;KACpD,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,IAAI,EAAE,EAAE,KAAK,EAAE,EAA6B,EAAE;QAC9C,OAAO;QACP,KAAK,EAAE,EAAE;KACF,CAAC;AACZ,CAAC"}
@@ -4,10 +4,10 @@
4
4
  * Fetches and manages the list of templates for a site/branch.
5
5
  */
6
6
  import type { P1Client } from '@pantheon-systems/css-client';
7
- import type { Template } from '../types.js';
7
+ import type { TemplateSummary } from '../types.js';
8
8
  export interface UseTemplateListReturn {
9
- /** List of templates */
10
- templates: Template[];
9
+ /** List of templates (metadata summaries; no component data) */
10
+ templates: TemplateSummary[];
11
11
  /** Whether templates are currently being fetched */
12
12
  loading: boolean;
13
13
  /** Error that occurred during fetch, if any */
@@ -1 +1 @@
1
- {"version":3,"file":"useTemplateList.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/hooks/useTemplateList.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,wBAAwB;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,qBAAqB,CA4CvB"}
1
+ {"version":3,"file":"useTemplateList.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/hooks/useTemplateList.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,qBAAqB,CA8CvB"}
@@ -31,12 +31,14 @@ export function useTemplateList(client, siteId, branchId) {
31
31
  const [loading, setLoading] = useState(true);
32
32
  const [error, setError] = useState(null);
33
33
  const fetchTemplates = useCallback(async (signal) => {
34
+ if (!client.templates) {
35
+ setTemplates([]);
36
+ setLoading(false);
37
+ return;
38
+ }
34
39
  try {
35
40
  setLoading(true);
36
41
  setError(null);
37
- if (!client.templates) {
38
- throw new Error('Templates endpoint not available on client');
39
- }
40
42
  const result = await client.templates.list(siteId, branchId);
41
43
  if (!signal?.aborted) {
42
44
  setTemplates(result);
@@ -1 +1 @@
1
- {"version":3,"file":"useTemplateList.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/hooks/useTemplateList.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAezD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAgB,EAChB,MAAc,EACd,QAAgB;IAEhB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,MAAoB,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,YAAY,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,UAAU,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,0BAA0B;IAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO;QACL,SAAS;QACT,OAAO;QACP,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useTemplateList.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/hooks/useTemplateList.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAezD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAgB,EAChB,MAAc,EACd,QAAgB;IAEhB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAoB,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,MAAoB,EAAE,EAAE;QAChE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,YAAY,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,UAAU,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,0BAA0B;IAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO;QACL,SAAS;QACT,OAAO;QACP,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Feature-gated via enableContentTypeTemplates flag (default: true).
8
8
  */
9
- export type { ContentRole, TemplateMetadata, TemplateComponent, Template, TemplateBinding, CreateTemplateParams, UpdateTemplateParams, TemplateDocument, } from './types.js';
9
+ export type { ContentRole, TemplateMetadata, TemplateContentItem, TemplateRootProps, Template, TemplateSummary, TemplateBinding, CreateTemplateParams, UpdateTemplateParams, } from './types.js';
10
10
  export type { TemplateStore } from './stores/index.js';
11
11
  export { createInMemoryTemplateStore, createApiTemplateStore } from './stores/index.js';
12
12
  export type { ComponentPermissions } from './permissions/role-permissions.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/content-type-templates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAExF,YAAY,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACxH,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/content-type-templates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAExF,YAAY,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACxH,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/content-type-templates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/content-type-templates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Creates a resolvePermissions function for Puck that enforces template constraints.
5
5
  */
6
- import type { Template, ContentRole } from '../types.js';
6
+ import type { Template, TemplateSummary, ContentRole } from '../types.js';
7
7
  /**
8
8
  * Puck permission flags for a component.
9
9
  */
@@ -38,6 +38,10 @@ export type PuckPermissionResolver = (item: PuckItem, appState: PuckAppState) =>
38
38
  /**
39
39
  * Create a Puck permissions resolver based on template and user role.
40
40
  *
41
+ * A component type counts as pinned when the template's content has an
42
+ * instance whose id maps to `true` in `root.props._pinMap`. Pages correlate
43
+ * to the template by component type (durable per-instance ids are PCC-3358).
44
+ *
41
45
  * Permission logic:
42
46
  * - **Pinned components**: drag=false, delete=false for all roles
43
47
  * - **Non-pinned components**:
@@ -48,7 +52,8 @@ export type PuckPermissionResolver = (item: PuckItem, appState: PuckAppState) =>
48
52
  * - Junior Editor: no structural permissions
49
53
  * - **Historical versions**: all structural permissions false for all roles
50
54
  *
51
- * @param template - Template this document is bound to (null for blank pages)
55
+ * @param template - Template this document is bound to (null for blank pages;
56
+ * a metadata-only summary carries no pins)
52
57
  * @param role - User's content role
53
58
  * @param isHistoricalVersion - Whether viewing a historical version (read-only)
54
59
  * @returns Permission resolver function for Puck
@@ -64,5 +69,5 @@ export type PuckPermissionResolver = (item: PuckItem, appState: PuckAppState) =>
64
69
  * />
65
70
  * ```
66
71
  */
67
- export declare function createPuckPermissions(template: Template | null, role: ContentRole, isHistoricalVersion: boolean): PuckPermissionResolver;
72
+ export declare function createPuckPermissions(template: Template | TemplateSummary | null, role: ContentRole, isHistoricalVersion: boolean): PuckPermissionResolver;
68
73
  //# sourceMappingURL=createPuckPermissions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createPuckPermissions.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/permissions/createPuckPermissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,iCAAiC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,2BAA2B;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,YAAY,KACnB,eAAe,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,IAAI,EAAE,WAAW,EACjB,mBAAmB,EAAE,OAAO,GAC3B,sBAAsB,CA4DxB"}
1
+ {"version":3,"file":"createPuckPermissions.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/permissions/createPuckPermissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,iCAAiC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,2BAA2B;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,YAAY,KACnB,eAAe,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI,EAC3C,IAAI,EAAE,WAAW,EACjB,mBAAmB,EAAE,OAAO,GAC3B,sBAAsB,CA4CxB"}
@@ -6,6 +6,10 @@
6
6
  /**
7
7
  * Create a Puck permissions resolver based on template and user role.
8
8
  *
9
+ * A component type counts as pinned when the template's content has an
10
+ * instance whose id maps to `true` in `root.props._pinMap`. Pages correlate
11
+ * to the template by component type (durable per-instance ids are PCC-3358).
12
+ *
9
13
  * Permission logic:
10
14
  * - **Pinned components**: drag=false, delete=false for all roles
11
15
  * - **Non-pinned components**:
@@ -16,7 +20,8 @@
16
20
  * - Junior Editor: no structural permissions
17
21
  * - **Historical versions**: all structural permissions false for all roles
18
22
  *
19
- * @param template - Template this document is bound to (null for blank pages)
23
+ * @param template - Template this document is bound to (null for blank pages;
24
+ * a metadata-only summary carries no pins)
20
25
  * @param role - User's content role
21
26
  * @param isHistoricalVersion - Whether viewing a historical version (read-only)
22
27
  * @returns Permission resolver function for Puck
@@ -33,6 +38,15 @@
33
38
  * ```
34
39
  */
35
40
  export function createPuckPermissions(template, role, isHistoricalVersion) {
41
+ const pinnedTypes = new Set();
42
+ if (template && 'content' in template) {
43
+ const pinMap = template.root?.props?._pinMap ?? {};
44
+ for (const item of template.content ?? []) {
45
+ if (pinMap[item.props.id] === true) {
46
+ pinnedTypes.add(item.type);
47
+ }
48
+ }
49
+ }
36
50
  return (item) => {
37
51
  // Historical versions: all structural permissions false
38
52
  if (isHistoricalVersion) {
@@ -45,39 +59,16 @@ export function createPuckPermissions(template, role, isHistoricalVersion) {
45
59
  };
46
60
  }
47
61
  const juniorEditorRestricted = role === 'junior-editor';
48
- // No template or template without components
49
- if (!template || !template.components) {
50
- return {
51
- edit: true,
52
- drag: !juniorEditorRestricted,
53
- delete: !juniorEditorRestricted,
54
- insert: !juniorEditorRestricted,
55
- duplicate: !juniorEditorRestricted,
56
- };
57
- }
58
- // Find component in template
59
- const templateComponent = template.components.find((c) => c.type === item.type);
60
- // Component not in template (user added it)
61
- if (!templateComponent) {
62
- return {
63
- edit: true,
64
- drag: !juniorEditorRestricted,
65
- delete: !juniorEditorRestricted,
66
- insert: !juniorEditorRestricted,
67
- duplicate: !juniorEditorRestricted,
68
- };
69
- }
70
62
  // Pinned component: locked for all roles
71
- if (templateComponent.pinned) {
63
+ if (pinnedTypes.has(item.type)) {
72
64
  return {
73
65
  edit: true,
74
66
  drag: false,
75
67
  delete: false,
76
- insert: juniorEditorRestricted ? false : true,
77
- duplicate: juniorEditorRestricted ? false : true,
68
+ insert: !juniorEditorRestricted,
69
+ duplicate: !juniorEditorRestricted,
78
70
  };
79
71
  }
80
- // Non-pinned component in template
81
72
  return {
82
73
  edit: true,
83
74
  drag: !juniorEditorRestricted,
@@ -1 +1 @@
1
- {"version":3,"file":"createPuckPermissions.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/permissions/createPuckPermissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2CH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAyB,EACzB,IAAiB,EACjB,mBAA4B;IAE5B,OAAO,CAAC,IAAc,EAAmB,EAAE;QACzC,wDAAwD;QACxD,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO;gBACL,IAAI,EAAE,IAAI,EAAE,yCAAyC;gBACrD,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QAED,MAAM,sBAAsB,GAAG,IAAI,KAAK,eAAe,CAAC;QAExD,6CAA6C;QAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtC,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,CAAC,sBAAsB;gBAC7B,MAAM,EAAE,CAAC,sBAAsB;gBAC/B,MAAM,EAAE,CAAC,sBAAsB;gBAC/B,SAAS,EAAE,CAAC,sBAAsB;aACnC,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhF,4CAA4C;QAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,CAAC,sBAAsB;gBAC7B,MAAM,EAAE,CAAC,sBAAsB;gBAC/B,MAAM,EAAE,CAAC,sBAAsB;gBAC/B,SAAS,EAAE,CAAC,sBAAsB;aACnC,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAC7C,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;aACjD,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,OAAO;YACL,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,CAAC,sBAAsB;YAC7B,MAAM,EAAE,CAAC,sBAAsB;YAC/B,MAAM,EAAE,CAAC,sBAAsB;YAC/B,SAAS,EAAE,CAAC,sBAAsB;SACnC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"createPuckPermissions.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/permissions/createPuckPermissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2CH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA2C,EAC3C,IAAiB,EACjB,mBAA4B;IAE5B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;QACnD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBACnC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAc,EAAmB,EAAE;QACzC,wDAAwD;QACxD,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO;gBACL,IAAI,EAAE,IAAI,EAAE,yCAAyC;gBACrD,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QAED,MAAM,sBAAsB,GAAG,IAAI,KAAK,eAAe,CAAC;QAExD,yCAAyC;QACzC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,sBAAsB;gBAC/B,SAAS,EAAE,CAAC,sBAAsB;aACnC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,CAAC,sBAAsB;YAC7B,MAAM,EAAE,CAAC,sBAAsB;YAC/B,MAAM,EAAE,CAAC,sBAAsB;YAC/B,SAAS,EAAE,CAAC,sBAAsB;SACnC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Defines the contract for template storage and retrieval.
5
5
  * Implementations can use localStorage, CSS documents, or backend API.
6
6
  */
7
- import type { Template, TemplateBinding, CreateTemplateParams, UpdateTemplateParams } from '../types.js';
7
+ import type { Template, TemplateSummary, TemplateBinding, CreateTemplateParams, UpdateTemplateParams } from '../types.js';
8
8
  /**
9
9
  * Template store interface for CRUD operations and bindings.
10
10
  */
@@ -18,11 +18,11 @@ export interface TemplateStore {
18
18
  */
19
19
  get(id: string): Promise<Template | undefined>;
20
20
  /**
21
- * List all templates.
21
+ * List all templates as metadata summaries.
22
22
  */
23
- list(): Promise<Template[]>;
23
+ list(): Promise<TemplateSummary[]>;
24
24
  /**
25
- * Update an existing template.
25
+ * Update a template's metadata.
26
26
  * Increments the version number.
27
27
  */
28
28
  update(id: string, params: UpdateTemplateParams): Promise<Template>;
@@ -1 +1 @@
1
- {"version":3,"file":"template-store.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/stores/template-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExD;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAE/C;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE5B;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEpE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAErE;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3F;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE7D;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AASD;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,aAAa,CA+E3D"}
1
+ {"version":3,"file":"template-store.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/stores/template-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExD;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAE/C;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEnC;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEpE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAErE;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3F;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE7D;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AASD;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,aAAa,CAsG3D"}
@@ -22,13 +22,21 @@ export function createInMemoryTemplateStore() {
22
22
  const template = {
23
23
  id: generateId(),
24
24
  name: params.name,
25
- label: params.label,
26
- description: params.description,
27
- defaultUrlPattern: params.defaultUrlPattern,
28
25
  version: 1,
29
- components: params.components,
30
- createdAt: now,
31
26
  updatedAt: now,
27
+ content: [],
28
+ root: {
29
+ props: {
30
+ _template: {
31
+ label: params.label,
32
+ description: params.description,
33
+ defaultUrlPattern: params.defaultUrlPattern,
34
+ deprecated: false,
35
+ },
36
+ _pinMap: {},
37
+ },
38
+ },
39
+ zones: {},
32
40
  };
33
41
  templates.set(template.id, template);
34
42
  return template;
@@ -37,19 +45,34 @@ export function createInMemoryTemplateStore() {
37
45
  return templates.get(id);
38
46
  },
39
47
  async list() {
40
- return Array.from(templates.values());
48
+ return Array.from(templates.values()).map((t) => ({
49
+ id: t.id,
50
+ name: t.name,
51
+ version: t.version,
52
+ updatedAt: t.updatedAt,
53
+ ...t.root.props._template,
54
+ }));
41
55
  },
42
56
  async update(id, params) {
43
57
  const existing = templates.get(id);
44
58
  if (!existing) {
45
59
  throw new Error('Template not found');
46
60
  }
61
+ const meta = existing.root.props._template;
47
62
  const updated = {
48
63
  ...existing,
49
- label: params.label ?? existing.label,
50
- description: params.description ?? existing.description,
51
- defaultUrlPattern: params.defaultUrlPattern ?? existing.defaultUrlPattern,
52
- components: params.components ?? existing.components,
64
+ root: {
65
+ ...existing.root,
66
+ props: {
67
+ ...existing.root.props,
68
+ _template: {
69
+ label: params.label ?? meta.label,
70
+ description: params.description ?? meta.description,
71
+ defaultUrlPattern: params.defaultUrlPattern ?? meta.defaultUrlPattern,
72
+ deprecated: params.deprecated ?? meta.deprecated,
73
+ },
74
+ },
75
+ },
53
76
  version: existing.version + 1,
54
77
  updatedAt: new Date().toISOString(),
55
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"template-store.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/stores/template-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-store.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/stores/template-store.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@
3
3
  *
4
4
  * TypeScript types and interfaces for the content type templates feature.
5
5
  */
6
- import type { Data } from '@puckeditor/core';
7
6
  /**
8
7
  * User role for content editing.
9
8
  *
@@ -12,57 +11,7 @@ import type { Data } from '@puckeditor/core';
12
11
  * - junior-editor: View/edit props only, no structural changes
13
12
  */
14
13
  export type ContentRole = 'admin' | 'editor' | 'junior-editor';
15
- /**
16
- * Template metadata stored in root.props._templateMeta.
17
- */
18
- export interface TemplateMetadata {
19
- /** Unique template name (kebab-case identifier) */
20
- name: string;
21
- /** Human-readable label */
22
- label: string;
23
- /** Optional description */
24
- description?: string;
25
- /** Optional default URL pattern for documents created from this template */
26
- defaultUrlPattern?: string;
27
- /** Template version number (incremented on each save) */
28
- version: number;
29
- }
30
- /**
31
- * A component in the template skeleton with pinned status.
32
- */
33
- export interface TemplateComponent {
34
- /** Component type (e.g., "HeadingBlock", "TextBlock") */
35
- type: string;
36
- /** Whether this component is pinned (locked position) */
37
- pinned: boolean;
38
- /** Default props for this component */
39
- defaultProps: Record<string, unknown>;
40
- }
41
- /**
42
- * A complete template definition.
43
- */
44
- export interface Template {
45
- /** Unique template ID */
46
- id: string;
47
- /** Template name (kebab-case identifier) */
48
- name: string;
49
- /** Human-readable label */
50
- label: string;
51
- /** Optional description */
52
- description?: string;
53
- /** Optional default URL pattern */
54
- defaultUrlPattern?: string;
55
- /** Template version number */
56
- version: number;
57
- /** Whether this template is deprecated */
58
- deprecated?: boolean;
59
- /** Component skeleton */
60
- components: TemplateComponent[];
61
- /** Creation timestamp (not returned by all endpoints) */
62
- createdAt?: string;
63
- /** Last update timestamp */
64
- updatedAt: string;
65
- }
14
+ export type { Template, TemplateSummary, TemplateMetadata, TemplateContentItem, TemplateRootProps, CreateTemplateParams, UpdateTemplateParams, } from '@pantheon-systems/css-client';
66
15
  /**
67
16
  * Document-to-template binding.
68
17
  * Stored in documents table columns (template_id, template_version).
@@ -75,40 +24,4 @@ export interface TemplateBinding {
75
24
  /** Template version this document was created from or migrated to */
76
25
  templateVersion: number;
77
26
  }
78
- /**
79
- * Parameters for creating a template.
80
- */
81
- export interface CreateTemplateParams {
82
- /** Template name (kebab-case identifier) */
83
- name: string;
84
- /** Human-readable label */
85
- label: string;
86
- /** Optional description */
87
- description?: string;
88
- /** Optional default URL pattern */
89
- defaultUrlPattern?: string;
90
- /** Initial component skeleton */
91
- components: TemplateComponent[];
92
- }
93
- /**
94
- * Parameters for updating a template.
95
- */
96
- export interface UpdateTemplateParams {
97
- /** Updated label */
98
- label?: string;
99
- /** Updated description */
100
- description?: string;
101
- /** Updated default URL pattern */
102
- defaultUrlPattern?: string;
103
- /** Updated component skeleton */
104
- components?: TemplateComponent[];
105
- }
106
- /**
107
- * Template with full Puck data for editing.
108
- * Used when editing a template document in the editor.
109
- */
110
- export interface TemplateDocument extends Template {
111
- /** Full Puck data structure */
112
- data: Data;
113
- }
114
27
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/content-type-templates/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IAEd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IAEb,yDAAyD;IACzD,MAAM,EAAE,OAAO,CAAC;IAEhB,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IAEX,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IAEd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAEhB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,yBAAyB;IACzB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAEhC,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IAEnB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IAEnB,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IAEd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,iCAAiC;IACjC,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,iCAAiC;IACjC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAChD,+BAA+B;IAC/B,IAAI,EAAE,IAAI,CAAC;CACZ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/content-type-templates/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;AAE/D,YAAY,EACV,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAEtC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IAEnB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IAEnB,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBarPinButton.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/ui/ActionBarPinButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAiCrD,wBAAgB,kBAAkB,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAqF9D"}
1
+ {"version":3,"file":"ActionBarPinButton.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/ui/ActionBarPinButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAmC3C,wBAAgB,kBAAkB,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CA2D9D"}
@@ -1,12 +1,15 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useCallback, useState } from 'react';
2
+ import { useCallback } from 'react';
3
3
  import { ActionBar, createUsePuck, usePuck } from '@puckeditor/core';
4
4
  import { Icon } from '@pantheon-systems/pds-toolkit-react';
5
5
  import { useP1PuckOptional } from '../../../core/P1PuckContext.js';
6
6
  const usePuckState = createUsePuck();
7
+ /**
8
+ * Resolve the template being edited in template mode (document path
9
+ * `_registry/templates/<name>`). Pinning is a template-authoring capability,
10
+ * so ordinary pages (including template-bound ones) resolve to null.
11
+ */
7
12
  function resolveTemplate(css) {
8
- if (css.currentTemplate)
9
- return css.currentTemplate;
10
13
  const path = css.currentDocument?.path;
11
14
  if (!path)
12
15
  return null;
@@ -18,16 +21,15 @@ function resolveTemplate(css) {
18
21
  export function ActionBarPinButton() {
19
22
  const css = useP1PuckOptional();
20
23
  const selectedItem = usePuckState((s) => s.selectedItem);
21
- const content = usePuckState((s) => s.appState?.data?.content);
22
24
  const rootProps = usePuckState((s) => s.appState?.data?.root?.props);
23
- const { dispatch, refreshPermissions } = usePuck();
24
- const [toggling, setToggling] = useState(false);
25
+ const { dispatch } = usePuck();
25
26
  const template = css ? resolveTemplate(css) : null;
26
27
  const pinMap = rootProps?._pinMap ?? {};
27
- const handleTogglePin = useCallback(async () => {
28
- if (!css || !template || !selectedItem || !content || toggling)
28
+ // Pin state lives in the document's root props (_pinMap) and persists
29
+ // through the normal document autosave.
30
+ const handleTogglePin = useCallback(() => {
31
+ if (!css || !template || !selectedItem || css.isViewingHistoricalVersion)
29
32
  return;
30
- setToggling(true);
31
33
  const compId = selectedItem.props.id;
32
34
  const newPinned = !pinMap[compId];
33
35
  const updatedPinMap = { ...pinMap, [compId]: newPinned };
@@ -44,34 +46,14 @@ export function ActionBarPinButton() {
44
46
  },
45
47
  }),
46
48
  });
47
- // Puck caches resolvePermissions results per component instance and only
48
- // re-resolves when the component's own data changes. Since _pinMap lives
49
- // in root props, toggling it doesn't invalidate per-component caches.
50
- // Force a full re-resolution so the updated pinMap is respected immediately.
51
- void refreshPermissions();
52
- const updatedComponents = content.map((c) => {
53
- const existing = template.components?.find((tc) => tc.type === c.type);
54
- return {
55
- type: c.type,
56
- pinned: updatedPinMap[c.props.id] ?? false,
57
- defaultProps: existing?.defaultProps ?? {},
58
- };
59
- });
60
- try {
61
- await css.client.templates.update(css.siteId, css.branchId, template.id, {
62
- components: updatedComponents,
63
- });
64
- await css.refreshTemplates();
65
- }
66
- finally {
67
- setToggling(false);
68
- }
69
- }, [css, template, selectedItem, content, pinMap, dispatch, refreshPermissions, toggling]);
70
- if (!css || !template || !selectedItem || !content) {
49
+ }, [css, template, selectedItem, pinMap, dispatch]);
50
+ if (!css || !template || !selectedItem) {
71
51
  return null;
72
52
  }
73
53
  const isAdmin = css.userRole === 'admin';
74
54
  const isPinned = pinMap[selectedItem.props.id] ?? false;
75
- return (_jsx(ActionBar.Action, { label: isPinned ? 'Unpin component' : 'Pin component', onClick: handleTogglePin, active: isPinned, disabled: toggling || !isAdmin, children: _jsx(Icon, { iconName: isPinned ? 'lock' : 'lockOpen', iconSize: "s", "aria-hidden": "true" }) }));
55
+ return (_jsx(ActionBar.Action, { label: isPinned ? 'Unpin component' : 'Pin component', onClick: handleTogglePin, active: isPinned,
56
+ // Historical versions are read-only; a toggle there would never persist.
57
+ disabled: !isAdmin || css.isViewingHistoricalVersion, children: _jsx(Icon, { iconName: isPinned ? 'lock' : 'lockOpen', iconSize: "s", "aria-hidden": "true" }) }));
76
58
  }
77
59
  //# sourceMappingURL=ActionBarPinButton.js.map