@pantheon-systems/puck-css 0.7.0 → 0.9.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 (433) hide show
  1. package/dist/agent/useAgentEdit.d.ts.map +1 -1
  2. package/dist/agent/useAgentEdit.js.map +1 -1
  3. package/dist/agent/useAgentTrigger.d.ts.map +1 -1
  4. package/dist/agent/useAgentTrigger.js.map +1 -1
  5. package/dist/auth/AuthGate.d.ts +1 -1
  6. package/dist/auth/AuthGate.d.ts.map +1 -1
  7. package/dist/collaboration/utils/avatarColor.d.ts +2 -8
  8. package/dist/collaboration/utils/avatarColor.d.ts.map +1 -1
  9. package/dist/collaboration/utils/avatarColor.js +4 -31
  10. package/dist/collaboration/utils/avatarColor.js.map +1 -1
  11. package/dist/collaboration/utils/focusHighlightConfig.d.ts.map +1 -1
  12. package/dist/collaboration/utils/focusHighlightConfig.js.map +1 -1
  13. package/dist/collaboration/utils/initials.d.ts +2 -0
  14. package/dist/collaboration/utils/initials.d.ts.map +1 -0
  15. package/dist/collaboration/utils/initials.js +27 -0
  16. package/dist/collaboration/utils/initials.js.map +1 -0
  17. package/dist/collaboration/utils/presenceIdentity.d.ts +29 -0
  18. package/dist/collaboration/utils/presenceIdentity.d.ts.map +1 -0
  19. package/dist/collaboration/utils/presenceIdentity.js +42 -0
  20. package/dist/collaboration/utils/presenceIdentity.js.map +1 -0
  21. package/dist/core/config.d.ts +2 -2
  22. package/dist/core/config.d.ts.map +1 -1
  23. package/dist/core/config.js +1 -1
  24. package/dist/core/config.js.map +1 -1
  25. package/dist/core/types.d.ts +21 -4
  26. package/dist/core/types.d.ts.map +1 -1
  27. package/dist/data/css-queries/css-query-registry.d.ts +11 -0
  28. package/dist/data/css-queries/css-query-registry.d.ts.map +1 -0
  29. package/dist/data/css-queries/css-query-registry.js +28 -0
  30. package/dist/data/css-queries/css-query-registry.js.map +1 -0
  31. package/dist/data/dal/index.d.ts +1 -1
  32. package/dist/data/dal/index.d.ts.map +1 -1
  33. package/dist/data/dal/init.d.ts +5 -0
  34. package/dist/data/dal/init.d.ts.map +1 -1
  35. package/dist/data/dal/init.js +31 -4
  36. package/dist/data/dal/init.js.map +1 -1
  37. package/dist/data/dal/p1-store.d.ts +23 -0
  38. package/dist/data/dal/p1-store.d.ts.map +1 -1
  39. package/dist/data/dal/p1-store.js +14 -1
  40. package/dist/data/dal/p1-store.js.map +1 -1
  41. package/dist/data/page-editor-meta.d.ts.map +1 -1
  42. package/dist/data/page-editor-meta.js +0 -1
  43. package/dist/data/page-editor-meta.js.map +1 -1
  44. package/dist/data/query-provider.d.ts +1 -1
  45. package/dist/data/query-provider.d.ts.map +1 -1
  46. package/dist/data/remote-datasources/fetch-http-json.d.ts.map +1 -1
  47. package/dist/data/remote-datasources/fetch-http-json.js.map +1 -1
  48. package/dist/data/remote-datasources/loader.js +1 -1
  49. package/dist/data/remote-datasources/loader.js.map +1 -1
  50. package/dist/data/resolve-data-templates.d.ts.map +1 -1
  51. package/dist/data/resolve-data-templates.js +26 -4
  52. package/dist/data/resolve-data-templates.js.map +1 -1
  53. package/dist/editor/P1App.d.ts.map +1 -1
  54. package/dist/editor/P1App.js +1 -1
  55. package/dist/editor/P1App.js.map +1 -1
  56. package/dist/editor/P1PuckProvider.d.ts.map +1 -1
  57. package/dist/editor/P1PuckProvider.js +174 -57
  58. package/dist/editor/P1PuckProvider.js.map +1 -1
  59. package/dist/editor/aiPanelStore.d.ts +15 -0
  60. package/dist/editor/aiPanelStore.d.ts.map +1 -0
  61. package/dist/editor/aiPanelStore.js +43 -0
  62. package/dist/editor/aiPanelStore.js.map +1 -0
  63. package/dist/editor/components/CollapsibleFieldSection.d.ts +10 -0
  64. package/dist/editor/components/CollapsibleFieldSection.d.ts.map +1 -0
  65. package/dist/editor/components/CollapsibleFieldSection.js +9 -0
  66. package/dist/editor/components/CollapsibleFieldSection.js.map +1 -0
  67. package/dist/editor/components/CollapsibleSection.module.css +70 -0
  68. package/dist/editor/components/CollapsibleSectionHeader.d.ts +20 -0
  69. package/dist/editor/components/CollapsibleSectionHeader.d.ts.map +1 -0
  70. package/dist/editor/components/CollapsibleSectionHeader.js +10 -0
  71. package/dist/editor/components/CollapsibleSectionHeader.js.map +1 -0
  72. package/dist/editor/components/DraggableRow.d.ts +13 -0
  73. package/dist/editor/components/DraggableRow.d.ts.map +1 -0
  74. package/dist/editor/components/DraggableRow.js +20 -0
  75. package/dist/editor/components/DraggableRow.js.map +1 -0
  76. package/dist/editor/components/FieldHelpText.d.ts +6 -0
  77. package/dist/editor/components/FieldHelpText.d.ts.map +1 -0
  78. package/dist/editor/components/FieldHelpText.js +6 -0
  79. package/dist/editor/components/FieldHelpText.js.map +1 -0
  80. package/dist/editor/components/FieldHelpText.module.css +13 -0
  81. package/dist/editor/components/InspectorTabHeader.d.ts +18 -0
  82. package/dist/editor/components/InspectorTabHeader.d.ts.map +1 -0
  83. package/dist/editor/components/InspectorTabHeader.js +16 -0
  84. package/dist/editor/components/InspectorTabHeader.js.map +1 -0
  85. package/dist/editor/components/OutlinePanel.d.ts +10 -0
  86. package/dist/editor/components/OutlinePanel.d.ts.map +1 -0
  87. package/dist/editor/components/OutlinePanel.js +64 -0
  88. package/dist/editor/components/OutlinePanel.js.map +1 -0
  89. package/dist/editor/components/OutlinePanel.module.css +111 -0
  90. package/dist/editor/components/P1InspectorFields.d.ts +16 -0
  91. package/dist/editor/components/P1InspectorFields.d.ts.map +1 -0
  92. package/dist/editor/components/P1InspectorFields.js +61 -0
  93. package/dist/editor/components/P1InspectorFields.js.map +1 -0
  94. package/dist/editor/components/P1TemplateFields.d.ts +11 -0
  95. package/dist/editor/components/P1TemplateFields.d.ts.map +1 -0
  96. package/dist/editor/components/P1TemplateFields.js +52 -0
  97. package/dist/editor/components/P1TemplateFields.js.map +1 -0
  98. package/dist/editor/components/PanelHeader.d.ts +25 -0
  99. package/dist/editor/components/PanelHeader.d.ts.map +1 -0
  100. package/dist/editor/components/PanelHeader.js +12 -0
  101. package/dist/editor/components/PanelHeader.js.map +1 -0
  102. package/dist/editor/components/PanelHeader.module.css +34 -0
  103. package/dist/editor/components/PanelShell.d.ts +10 -0
  104. package/dist/editor/components/PanelShell.d.ts.map +1 -0
  105. package/dist/editor/components/PanelShell.js +7 -0
  106. package/dist/editor/components/PanelShell.js.map +1 -0
  107. package/dist/editor/components/PanelShell.module.css +15 -0
  108. package/dist/editor/components/PreviewPanelOverlay.d.ts +12 -0
  109. package/dist/editor/components/PreviewPanelOverlay.d.ts.map +1 -0
  110. package/dist/editor/components/PreviewPanelOverlay.js +7 -0
  111. package/dist/editor/components/PreviewPanelOverlay.js.map +1 -0
  112. package/dist/editor/components/PublishedStatusBadge.d.ts +1 -1
  113. package/dist/editor/components/PublishedStatusBadge.d.ts.map +1 -1
  114. package/dist/editor/components/VersionBannerOverride.d.ts +5 -1
  115. package/dist/editor/components/VersionBannerOverride.d.ts.map +1 -1
  116. package/dist/editor/components/VersionBannerOverride.js +24 -7
  117. package/dist/editor/components/VersionBannerOverride.js.map +1 -1
  118. package/dist/editor/components/VersionTimeline.d.ts +20 -0
  119. package/dist/editor/components/VersionTimeline.d.ts.map +1 -0
  120. package/dist/editor/components/VersionTimeline.js +42 -0
  121. package/dist/editor/components/VersionTimeline.js.map +1 -0
  122. package/dist/editor/components/collapsibleSectionContext.d.ts +17 -0
  123. package/dist/editor/components/collapsibleSectionContext.d.ts.map +1 -0
  124. package/dist/editor/components/collapsibleSectionContext.js +13 -0
  125. package/dist/editor/components/collapsibleSectionContext.js.map +1 -0
  126. package/dist/editor/components/componentIconName.d.ts +15 -0
  127. package/dist/editor/components/componentIconName.d.ts.map +1 -0
  128. package/dist/editor/components/componentIconName.js +68 -0
  129. package/dist/editor/components/componentIconName.js.map +1 -0
  130. package/dist/editor/components/connectable.d.ts +1 -1
  131. package/dist/editor/components/connectable.d.ts.map +1 -1
  132. package/dist/editor/components/merge-preview/MergePreviewPanel.d.ts.map +1 -1
  133. package/dist/editor/components/merge-preview/MergePreviewPanel.js.map +1 -1
  134. package/dist/editor/components/merge-preview/MergePreviewRenderer.js +3 -15
  135. package/dist/editor/components/merge-preview/MergePreviewRenderer.js.map +1 -1
  136. package/dist/editor/components/outlineTree.d.ts +68 -0
  137. package/dist/editor/components/outlineTree.d.ts.map +1 -0
  138. package/dist/editor/components/outlineTree.js +72 -0
  139. package/dist/editor/components/outlineTree.js.map +1 -0
  140. package/dist/editor/components/useDragReorder.d.ts +16 -0
  141. package/dist/editor/components/useDragReorder.d.ts.map +1 -0
  142. package/dist/editor/components/useDragReorder.js +35 -0
  143. package/dist/editor/components/useDragReorder.js.map +1 -0
  144. package/dist/editor/index.d.ts +13 -0
  145. package/dist/editor/index.d.ts.map +1 -1
  146. package/dist/editor/index.js +8 -0
  147. package/dist/editor/index.js.map +1 -1
  148. package/dist/editor/plugin/P1Plugin.d.ts +25 -2
  149. package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
  150. package/dist/editor/plugin/P1Plugin.js +147 -63
  151. package/dist/editor/plugin/P1Plugin.js.map +1 -1
  152. package/dist/editor/plugin/context-sync-key.d.ts +30 -0
  153. package/dist/editor/plugin/context-sync-key.d.ts.map +1 -0
  154. package/dist/editor/plugin/context-sync-key.js +36 -0
  155. package/dist/editor/plugin/context-sync-key.js.map +1 -0
  156. package/dist/editor/plugin/createP1Overrides.d.ts +33 -50
  157. package/dist/editor/plugin/createP1Overrides.d.ts.map +1 -1
  158. package/dist/editor/plugin/createP1Overrides.js +54 -112
  159. package/dist/editor/plugin/createP1Overrides.js.map +1 -1
  160. package/dist/editor/plugin/document-sync-plugin.d.ts +35 -0
  161. package/dist/editor/plugin/document-sync-plugin.d.ts.map +1 -0
  162. package/dist/editor/plugin/document-sync-plugin.js +130 -0
  163. package/dist/editor/plugin/document-sync-plugin.js.map +1 -0
  164. package/dist/editor/plugin/fieldGuidance.d.ts +45 -0
  165. package/dist/editor/plugin/fieldGuidance.d.ts.map +1 -0
  166. package/dist/editor/plugin/fieldGuidance.js +24 -0
  167. package/dist/editor/plugin/fieldGuidance.js.map +1 -0
  168. package/dist/editor/plugin/mergePreviewPlugin.d.ts.map +1 -1
  169. package/dist/editor/plugin/mergePreviewPlugin.js.map +1 -1
  170. package/dist/editor/plugin/selectHeaderCollaborators.d.ts +12 -0
  171. package/dist/editor/plugin/selectHeaderCollaborators.d.ts.map +1 -0
  172. package/dist/editor/plugin/selectHeaderCollaborators.js +15 -0
  173. package/dist/editor/plugin/selectHeaderCollaborators.js.map +1 -0
  174. package/dist/editor/thumbnails/LiveThumbnail.d.ts +47 -0
  175. package/dist/editor/thumbnails/LiveThumbnail.d.ts.map +1 -0
  176. package/dist/editor/thumbnails/LiveThumbnail.js +120 -0
  177. package/dist/editor/thumbnails/LiveThumbnail.js.map +1 -0
  178. package/dist/editor/thumbnails/ThumbnailCard.d.ts +37 -0
  179. package/dist/editor/thumbnails/ThumbnailCard.d.ts.map +1 -0
  180. package/dist/editor/thumbnails/ThumbnailCard.js +91 -0
  181. package/dist/editor/thumbnails/ThumbnailCard.js.map +1 -0
  182. package/dist/editor/thumbnails/buildLiveThumbnailDrawer.d.ts +33 -0
  183. package/dist/editor/thumbnails/buildLiveThumbnailDrawer.d.ts.map +1 -0
  184. package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js +79 -0
  185. package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js.map +1 -0
  186. package/dist/editor/thumbnails/humanizeComponentName.d.ts +18 -0
  187. package/dist/editor/thumbnails/humanizeComponentName.d.ts.map +1 -0
  188. package/dist/editor/thumbnails/humanizeComponentName.js +32 -0
  189. package/dist/editor/thumbnails/humanizeComponentName.js.map +1 -0
  190. package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.d.ts +15 -0
  191. package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.d.ts.map +1 -0
  192. package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js +19 -0
  193. package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js.map +1 -0
  194. package/dist/editor/thumbnails/thumbnailCache.d.ts +39 -0
  195. package/dist/editor/thumbnails/thumbnailCache.d.ts.map +1 -0
  196. package/dist/editor/thumbnails/thumbnailCache.js +97 -0
  197. package/dist/editor/thumbnails/thumbnailCache.js.map +1 -0
  198. package/dist/editor/useDocuments.d.ts.map +1 -1
  199. package/dist/editor/useDocuments.js +27 -15
  200. package/dist/editor/useDocuments.js.map +1 -1
  201. package/dist/editor/useP1Editor.d.ts +15 -13
  202. package/dist/editor/useP1Editor.d.ts.map +1 -1
  203. package/dist/editor/useP1Editor.js +97 -20
  204. package/dist/editor/useP1Editor.js.map +1 -1
  205. package/dist/editor/useP1Overrides.d.ts +1 -1
  206. package/dist/editor/useP1Overrides.d.ts.map +1 -1
  207. package/dist/editor/useP1Overrides.js.map +1 -1
  208. package/dist/editor/useP1Plugin.d.ts +20 -2
  209. package/dist/editor/useP1Plugin.d.ts.map +1 -1
  210. package/dist/editor/useP1Plugin.js +5 -0
  211. package/dist/editor/useP1Plugin.js.map +1 -1
  212. package/dist/editor/useRealtime.d.ts +2 -2
  213. package/dist/editor/useRealtime.d.ts.map +1 -1
  214. package/dist/editor/useRealtime.js.map +1 -1
  215. package/dist/editor/utils/componentRegistry.d.ts +4 -4
  216. package/dist/editor/utils/componentRegistry.d.ts.map +1 -1
  217. package/dist/editor/utils/componentRegistry.js +0 -1
  218. package/dist/editor/utils/componentRegistry.js.map +1 -1
  219. package/dist/editor/utils/puckYjsBinding.d.ts.map +1 -1
  220. package/dist/editor/utils/puckYjsBinding.js +6 -4
  221. package/dist/editor/utils/puckYjsBinding.js.map +1 -1
  222. package/dist/editor/utils/restoreDocumentVersion.d.ts +18 -0
  223. package/dist/editor/utils/restoreDocumentVersion.d.ts.map +1 -0
  224. package/dist/editor/utils/restoreDocumentVersion.js +49 -0
  225. package/dist/editor/utils/restoreDocumentVersion.js.map +1 -0
  226. package/dist/editor/utils/sanitizeRichtextDefaults.d.ts +22 -0
  227. package/dist/editor/utils/sanitizeRichtextDefaults.d.ts.map +1 -0
  228. package/dist/editor/utils/sanitizeRichtextDefaults.js +98 -0
  229. package/dist/editor/utils/sanitizeRichtextDefaults.js.map +1 -0
  230. package/dist/editor/utils/snapshotToPuckData.d.ts +11 -0
  231. package/dist/editor/utils/snapshotToPuckData.d.ts.map +1 -0
  232. package/dist/editor/utils/snapshotToPuckData.js +27 -0
  233. package/dist/editor/utils/snapshotToPuckData.js.map +1 -0
  234. package/dist/editor/utils/syncComponentRegistry.d.ts.map +1 -1
  235. package/dist/editor/utils/syncComponentRegistry.js +32 -6
  236. package/dist/editor/utils/syncComponentRegistry.js.map +1 -1
  237. package/dist/editor/utils/templatePath.d.ts +8 -0
  238. package/dist/editor/utils/templatePath.d.ts.map +1 -0
  239. package/dist/editor/utils/templatePath.js +14 -0
  240. package/dist/editor/utils/templatePath.js.map +1 -0
  241. package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts +10 -7
  242. package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts.map +1 -1
  243. package/dist/features/content-type-templates/permissions/createPuckPermissions.js +27 -8
  244. package/dist/features/content-type-templates/permissions/createPuckPermissions.js.map +1 -1
  245. package/dist/features/content-type-templates/stores/template-store-api.d.ts.map +1 -1
  246. package/dist/features/content-type-templates/ui/ActionBarPinButton.d.ts.map +1 -1
  247. package/dist/features/content-type-templates/ui/ActionBarPinButton.js +1 -1
  248. package/dist/features/content-type-templates/ui/ActionBarPinButton.js.map +1 -1
  249. package/dist/features/content-type-templates/validation/structural-validation.d.ts +4 -4
  250. package/dist/features/content-type-templates/validation/structural-validation.d.ts.map +1 -1
  251. package/dist/features/content-type-templates/validation/structural-validation.js +123 -50
  252. package/dist/features/content-type-templates/validation/structural-validation.js.map +1 -1
  253. package/dist/index.d.ts +10 -2
  254. package/dist/index.d.ts.map +1 -1
  255. package/dist/index.js +10 -2
  256. package/dist/index.js.map +1 -1
  257. package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js +1 -3
  258. package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js.map +1 -1
  259. package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js +2 -2
  260. package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js.map +1 -1
  261. package/dist/p1/editor/client.d.ts +1 -1
  262. package/dist/p1/editor/client.d.ts.map +1 -1
  263. package/dist/p1/editor/client.js +3 -3
  264. package/dist/p1/editor/client.js.map +1 -1
  265. package/dist/p1/editor/connect/connect-field-modal.d.ts +1 -1
  266. package/dist/p1/editor/connect/connect-field-modal.d.ts.map +1 -1
  267. package/dist/p1/editor/connect/connect-field-modal.js +2 -2
  268. package/dist/p1/editor/connect/connect-field-modal.js.map +1 -1
  269. package/dist/p1/editor/connect/connect-preview-config.d.ts +1 -1
  270. package/dist/p1/editor/connect/connect-preview-config.d.ts.map +1 -1
  271. package/dist/p1/editor/connect/field-connect-plugin.js +1 -1
  272. package/dist/p1/editor/connect/field-connect-plugin.js.map +1 -1
  273. package/dist/p1/editor/editor-preview-resolve.d.ts +7 -1
  274. package/dist/p1/editor/editor-preview-resolve.d.ts.map +1 -1
  275. package/dist/p1/editor/editor-preview-resolve.js +9 -2
  276. package/dist/p1/editor/editor-preview-resolve.js.map +1 -1
  277. package/dist/p1/editor/{hooks.d.ts → hooks/api-hooks.d.ts} +9 -20
  278. package/dist/p1/editor/hooks/api-hooks.d.ts.map +1 -0
  279. package/dist/p1/editor/{hooks.js → hooks/api-hooks.js} +72 -57
  280. package/dist/p1/editor/hooks/api-hooks.js.map +1 -0
  281. package/dist/p1/editor/hooks/index.d.ts +4 -0
  282. package/dist/p1/editor/hooks/index.d.ts.map +1 -0
  283. package/dist/p1/editor/hooks/index.js +4 -0
  284. package/dist/p1/editor/hooks/index.js.map +1 -0
  285. package/dist/p1/editor/hooks/useEditorContext.d.ts +13 -0
  286. package/dist/p1/editor/hooks/useEditorContext.d.ts.map +1 -0
  287. package/dist/p1/editor/hooks/useEditorContext.js +25 -0
  288. package/dist/p1/editor/hooks/useEditorContext.js.map +1 -0
  289. package/dist/p1/editor/hooks/useP1Plugins.d.ts +3 -0
  290. package/dist/p1/editor/hooks/useP1Plugins.d.ts.map +1 -0
  291. package/dist/p1/editor/hooks/useP1Plugins.js +33 -0
  292. package/dist/p1/editor/hooks/useP1Plugins.js.map +1 -0
  293. package/dist/p1/editor/icons/button-block-icon.d.ts +1 -1
  294. package/dist/p1/editor/icons/button-block-icon.d.ts.map +1 -1
  295. package/dist/p1/editor/icons/default-block-icon.d.ts +1 -1
  296. package/dist/p1/editor/icons/default-block-icon.d.ts.map +1 -1
  297. package/dist/p1/editor/icons/divider-block-icon.d.ts +1 -1
  298. package/dist/p1/editor/icons/divider-block-icon.d.ts.map +1 -1
  299. package/dist/p1/editor/icons/grid-block-icon.d.ts +1 -1
  300. package/dist/p1/editor/icons/grid-block-icon.d.ts.map +1 -1
  301. package/dist/p1/editor/icons/heading-block-icon.d.ts +1 -1
  302. package/dist/p1/editor/icons/heading-block-icon.d.ts.map +1 -1
  303. package/dist/p1/editor/icons/image-block-icon.d.ts +1 -1
  304. package/dist/p1/editor/icons/image-block-icon.d.ts.map +1 -1
  305. package/dist/p1/editor/icons/list-block-icon.d.ts +1 -1
  306. package/dist/p1/editor/icons/list-block-icon.d.ts.map +1 -1
  307. package/dist/p1/editor/icons/paragraph-block-icon.d.ts +1 -1
  308. package/dist/p1/editor/icons/paragraph-block-icon.d.ts.map +1 -1
  309. package/dist/p1/editor/icons/quote-block-icon.d.ts +1 -1
  310. package/dist/p1/editor/icons/quote-block-icon.d.ts.map +1 -1
  311. package/dist/p1/editor/icons/spacer-block-icon.d.ts +1 -1
  312. package/dist/p1/editor/icons/spacer-block-icon.d.ts.map +1 -1
  313. package/dist/p1/editor/index.d.ts +2 -2
  314. package/dist/p1/editor/index.d.ts.map +1 -1
  315. package/dist/p1/editor/index.js +2 -2
  316. package/dist/p1/editor/index.js.map +1 -1
  317. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js +65 -67
  318. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js.map +1 -1
  319. package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.d.ts +4 -4
  320. package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.d.ts.map +1 -1
  321. package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.js.map +1 -1
  322. package/dist/p1/editor/remote-datasources/remote-datasource-manager.d.ts +1 -1
  323. package/dist/p1/editor/remote-datasources/remote-datasource-manager.d.ts.map +1 -1
  324. package/dist/p1/editor/remote-datasources/remote-datasource-manager.js +2 -2
  325. package/dist/p1/editor/remote-datasources/remote-datasource-manager.js.map +1 -1
  326. package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.d.ts +1 -1
  327. package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.d.ts.map +1 -1
  328. package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.js +2 -2
  329. package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.js.map +1 -1
  330. package/dist/p1/editor/template-autocomplete-layer.d.ts +2 -2
  331. package/dist/p1/editor/template-autocomplete-layer.d.ts.map +1 -1
  332. package/dist/p1/editor/template-autocomplete-layer.js +23 -3
  333. package/dist/p1/editor/template-autocomplete-layer.js.map +1 -1
  334. package/dist/p1/pages/render-client.d.ts +1 -1
  335. package/dist/p1/pages/render-client.d.ts.map +1 -1
  336. package/dist/pds/components/AgentChip.d.ts.map +1 -1
  337. package/dist/pds/components/AgentChip.js +1 -2
  338. package/dist/pds/components/AgentChip.js.map +1 -1
  339. package/dist/pds/components/CreatePageModal.d.ts +10 -1
  340. package/dist/pds/components/CreatePageModal.d.ts.map +1 -1
  341. package/dist/pds/components/CreatePageModal.js +29 -9
  342. package/dist/pds/components/CreatePageModal.js.map +1 -1
  343. package/dist/pds/components/CreatePageModal.module.css +34 -0
  344. package/dist/pds/components/DocStateBadge.d.ts +1 -1
  345. package/dist/pds/components/DocStateBadge.d.ts.map +1 -1
  346. package/dist/pds/components/DocStateBadge.js +1 -1
  347. package/dist/pds/components/DocStateBadge.js.map +1 -1
  348. package/dist/pds/components/LoadingMessage.d.ts +16 -0
  349. package/dist/pds/components/LoadingMessage.d.ts.map +1 -0
  350. package/dist/pds/components/LoadingMessage.js +6 -0
  351. package/dist/pds/components/LoadingMessage.js.map +1 -0
  352. package/dist/pds/components/LoadingMessage.module.css +44 -0
  353. package/dist/pds/components/NavIcon.js +1 -1
  354. package/dist/pds/components/NavIcon.js.map +1 -1
  355. package/dist/pds/components/P1EditorHeader.d.ts +10 -2
  356. package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
  357. package/dist/pds/components/P1EditorHeader.js +16 -7
  358. package/dist/pds/components/P1EditorHeader.js.map +1 -1
  359. package/dist/pds/components/P1EditorHeader.module.css +113 -35
  360. package/dist/pds/components/P1EditorSubheader.d.ts +1 -2
  361. package/dist/pds/components/P1EditorSubheader.d.ts.map +1 -1
  362. package/dist/pds/components/P1EditorSubheader.js +10 -21
  363. package/dist/pds/components/P1EditorSubheader.js.map +1 -1
  364. package/dist/pds/components/P1EditorSubheader.module.css +7 -1
  365. package/dist/pds/components/PageNavigator.d.ts.map +1 -1
  366. package/dist/pds/components/PageNavigator.js.map +1 -1
  367. package/dist/pds/components/PresenceStack.d.ts +6 -5
  368. package/dist/pds/components/PresenceStack.d.ts.map +1 -1
  369. package/dist/pds/components/PresenceStack.js +43 -4
  370. package/dist/pds/components/PresenceStack.js.map +1 -1
  371. package/dist/pds/components/PresenceStack.module.css +52 -7
  372. package/dist/pds/components/PublishControl.js +2 -2
  373. package/dist/pds/components/PublishControl.js.map +1 -1
  374. package/dist/pds/components/WorkstreamSwitcher.d.ts +7 -2
  375. package/dist/pds/components/WorkstreamSwitcher.d.ts.map +1 -1
  376. package/dist/pds/components/WorkstreamSwitcher.js +5 -3
  377. package/dist/pds/components/WorkstreamSwitcher.js.map +1 -1
  378. package/dist/pds/index.d.ts +2 -0
  379. package/dist/pds/index.d.ts.map +1 -1
  380. package/dist/pds/index.js +1 -0
  381. package/dist/pds/index.js.map +1 -1
  382. package/dist/pds/theme/pds-core-content.d.ts +1 -1
  383. package/dist/pds/theme/pds-core-content.d.ts.map +1 -1
  384. package/dist/pds/theme/pds-core-content.js +1 -1
  385. package/dist/pds/theme/pds-core-content.js.map +1 -1
  386. package/dist/server.d.ts +4 -1
  387. package/dist/server.d.ts.map +1 -1
  388. package/dist/server.js +4 -1
  389. package/dist/server.js.map +1 -1
  390. package/dist/versioning/components/HistoricalVersionBanner.d.ts +19 -21
  391. package/dist/versioning/components/HistoricalVersionBanner.d.ts.map +1 -1
  392. package/dist/versioning/components/HistoricalVersionBanner.js +7 -19
  393. package/dist/versioning/components/HistoricalVersionBanner.js.map +1 -1
  394. package/dist/versioning/components/ReadOnlyFieldsGuard.d.ts +14 -0
  395. package/dist/versioning/components/ReadOnlyFieldsGuard.d.ts.map +1 -0
  396. package/dist/versioning/components/ReadOnlyFieldsGuard.js +8 -0
  397. package/dist/versioning/components/ReadOnlyFieldsGuard.js.map +1 -0
  398. package/dist/versioning/components/VersionBannerActions.d.ts +15 -0
  399. package/dist/versioning/components/VersionBannerActions.d.ts.map +1 -0
  400. package/dist/versioning/components/VersionBannerActions.js +30 -0
  401. package/dist/versioning/components/VersionBannerActions.js.map +1 -0
  402. package/dist/versioning/components/VersionPublishedBadge.d.ts +1 -1
  403. package/dist/versioning/components/VersionPublishedBadge.d.ts.map +1 -1
  404. package/dist/versioning/components/VersionReadOnlyBanner.d.ts +12 -0
  405. package/dist/versioning/components/VersionReadOnlyBanner.d.ts.map +1 -0
  406. package/dist/versioning/components/VersionReadOnlyBanner.js +5 -0
  407. package/dist/versioning/components/VersionReadOnlyBanner.js.map +1 -0
  408. package/dist/versioning/components/version-compare/VisualVersionCompare.d.ts +2 -2
  409. package/dist/versioning/components/version-compare/VisualVersionCompare.d.ts.map +1 -1
  410. package/dist/versioning/index.d.ts +4 -0
  411. package/dist/versioning/index.d.ts.map +1 -1
  412. package/dist/versioning/index.js +2 -0
  413. package/dist/versioning/index.js.map +1 -1
  414. package/dist/versioning/utils/formatVersionDate.d.ts +15 -0
  415. package/dist/versioning/utils/formatVersionDate.d.ts.map +1 -0
  416. package/dist/versioning/utils/formatVersionDate.js +41 -0
  417. package/dist/versioning/utils/formatVersionDate.js.map +1 -0
  418. package/dist/versioning/utils/versionKind.d.ts +19 -0
  419. package/dist/versioning/utils/versionKind.d.ts.map +1 -0
  420. package/dist/versioning/utils/versionKind.js +30 -0
  421. package/dist/versioning/utils/versionKind.js.map +1 -0
  422. package/package.json +16 -8
  423. package/src/pds/theme/PuckEditorTheme.css +81 -0
  424. package/src/pds/theme/PuckEditorTheme.test.ts +50 -1
  425. package/src/pds/theme/pds-core-content.ts +1 -1
  426. package/src/pds/theme/pds-core.css +1 -1
  427. package/src/styles.css +693 -29
  428. package/dist/features/content-type-templates/editor/useTemplateScaffold.d.ts +0 -15
  429. package/dist/features/content-type-templates/editor/useTemplateScaffold.d.ts.map +0 -1
  430. package/dist/features/content-type-templates/editor/useTemplateScaffold.js +0 -29
  431. package/dist/features/content-type-templates/editor/useTemplateScaffold.js.map +0 -1
  432. package/dist/p1/editor/hooks.d.ts.map +0 -1
  433. package/dist/p1/editor/hooks.js.map +0 -1
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Strip empty-string defaults from richtext fields in a Puck config.
3
+ *
4
+ * Puck merges `defaultProps` underneath stored props on every render, so a
5
+ * block whose stored props omit a richtext key silently renders that key's
6
+ * default. An empty-string default is fatal there: Puck's RichTextRender wraps
7
+ * any non-HTML string as `{type:"text", text: value}`, and prosemirror-model
8
+ * rejects a zero-length text node with `RangeError: Empty text nodes are not
9
+ * allowed` — taking down the whole subtree, since that render path has no error
10
+ * boundary. `undefined` is safe (it normalizes to an empty doc), so dropping
11
+ * the key is strictly better than defaulting to "".
12
+ *
13
+ * Runs over nested object/array fields too, since richtext commonly lives
14
+ * inside array items.
15
+ */
16
+ const DROP = Symbol('drop');
17
+ function sanitizeValue(field, value) {
18
+ if (!field)
19
+ return value;
20
+ if (field.type === 'richtext') {
21
+ return value === '' ? DROP : value;
22
+ }
23
+ if (field.type === 'object' && field.objectFields && isPlainObject(value)) {
24
+ return sanitizeProps(field.objectFields, value);
25
+ }
26
+ if (field.type === 'array' && field.arrayFields && Array.isArray(value)) {
27
+ const itemFields = field.arrayFields;
28
+ // `map` always allocates, so compare item identity to decide whether the
29
+ // array actually changed — otherwise the caller sees a new reference and
30
+ // treats an untouched config as modified.
31
+ let itemChanged = false;
32
+ const next = value.map((item) => {
33
+ if (!isPlainObject(item))
34
+ return item;
35
+ const sanitized = sanitizeProps(itemFields, item);
36
+ if (sanitized !== item)
37
+ itemChanged = true;
38
+ return sanitized;
39
+ });
40
+ return itemChanged ? next : value;
41
+ }
42
+ return value;
43
+ }
44
+ function sanitizeProps(fields, props) {
45
+ let changed = false;
46
+ const next = {};
47
+ for (const [key, value] of Object.entries(props)) {
48
+ const sanitized = sanitizeValue(fields[key], value);
49
+ if (sanitized === DROP) {
50
+ changed = true;
51
+ continue;
52
+ }
53
+ if (sanitized !== value)
54
+ changed = true;
55
+ next[key] = sanitized;
56
+ }
57
+ return changed ? next : props;
58
+ }
59
+ function isPlainObject(value) {
60
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
61
+ }
62
+ function sanitizeComponent(component) {
63
+ const { fields, defaultProps } = component;
64
+ if (!fields || !defaultProps)
65
+ return component;
66
+ const next = sanitizeProps(fields, defaultProps);
67
+ return next === defaultProps ? component : { ...component, defaultProps: next };
68
+ }
69
+ /**
70
+ * Return a config with empty-string richtext defaults removed. Returns the
71
+ * input unchanged (same reference) when there is nothing to strip, so it is
72
+ * safe to call in a render path without breaking Puck's memoization.
73
+ */
74
+ // Generic in T rather than constrained to ConfigLike: Puck's `Config` field
75
+ // unions don't structurally satisfy the loose shape this walks, and callers
76
+ // should get their own config type back untouched.
77
+ export function sanitizeRichtextDefaults(config) {
78
+ const input = config;
79
+ let changed = false;
80
+ const nextComponents = {};
81
+ for (const [name, component] of Object.entries(input.components ?? {})) {
82
+ const next = sanitizeComponent(component);
83
+ if (next !== component)
84
+ changed = true;
85
+ nextComponents[name] = next;
86
+ }
87
+ const nextRoot = input.root ? sanitizeComponent(input.root) : input.root;
88
+ if (nextRoot !== input.root)
89
+ changed = true;
90
+ if (!changed)
91
+ return config;
92
+ return {
93
+ ...input,
94
+ ...(input.components ? { components: nextComponents } : {}),
95
+ ...(nextRoot ? { root: nextRoot } : {}),
96
+ };
97
+ }
98
+ //# sourceMappingURL=sanitizeRichtextDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizeRichtextDefaults.js","sourceRoot":"","sources":["../../../src/editor/utils/sanitizeRichtextDefaults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { PuckData } from "@pantheon-systems/css-client";
2
+ /**
3
+ * Coerce a stored version snapshot into PuckData. Snapshots are typed as
4
+ * objects, but the backend sometimes returns them as a JSON string; parsing
5
+ * here keeps every downstream consumer (currentData, safeData, the Yjs seed,
6
+ * the document-sync store) working with a real object instead of spreading a
7
+ * string character-by-character. Empty or invalid snapshots — including the
8
+ * blank initial version — collapse to blank Puck data.
9
+ */
10
+ export declare function snapshotToPuckData(snapshot: unknown): PuckData;
11
+ //# sourceMappingURL=snapshotToPuckData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshotToPuckData.d.ts","sourceRoot":"","sources":["../../../src/editor/utils/snapshotToPuckData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAI7D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAa9D"}
@@ -0,0 +1,27 @@
1
+ const EMPTY = { content: [], root: { props: {} } };
2
+ /**
3
+ * Coerce a stored version snapshot into PuckData. Snapshots are typed as
4
+ * objects, but the backend sometimes returns them as a JSON string; parsing
5
+ * here keeps every downstream consumer (currentData, safeData, the Yjs seed,
6
+ * the document-sync store) working with a real object instead of spreading a
7
+ * string character-by-character. Empty or invalid snapshots — including the
8
+ * blank initial version — collapse to blank Puck data.
9
+ */
10
+ export function snapshotToPuckData(snapshot) {
11
+ let value = snapshot;
12
+ if (typeof value === "string") {
13
+ try {
14
+ value = JSON.parse(value);
15
+ }
16
+ catch {
17
+ return EMPTY;
18
+ }
19
+ }
20
+ if (!value || typeof value !== "object")
21
+ return EMPTY;
22
+ const data = value;
23
+ if (!data.content && !data.root)
24
+ return EMPTY;
25
+ return data;
26
+ }
27
+ //# sourceMappingURL=snapshotToPuckData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshotToPuckData.js","sourceRoot":"","sources":["../../../src/editor/utils/snapshotToPuckData.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAa,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAiB;IAClD,IAAI,KAAK,GAAY,QAAQ,CAAC;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,IAAI,GAAG,KAA0B,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,IAAgB,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"syncComponentRegistry.d.ts","sourceRoot":"","sources":["../../../src/editor/utils/syncComponentRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AACxD,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,QAAsB,CAAC;AAErE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAYD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,EAAE,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAyM7B"}
1
+ {"version":3,"file":"syncComponentRegistry.d.ts","sourceRoot":"","sources":["../../../src/editor/utils/syncComponentRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AACxD,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,QAAsB,CAAC;AAErE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AA2BD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,EAAE,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAyN7B"}
@@ -26,6 +26,20 @@ export const REGISTRY_VERIFICATION_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hour
26
26
  export function componentPath(name) {
27
27
  return `${COMPONENT_PREFIX}${name}`;
28
28
  }
29
+ /**
30
+ * Comparison key for matching a component name against server state.
31
+ *
32
+ * The server's normalizePath lowercases every document path on write, so a
33
+ * component registered as HeroBlock lists back at _registry/components/heroblock.
34
+ * Every in-memory lookup that matches descriptor names against path-derived
35
+ * names (or index hash keys) must go through this key, or PascalCase components
36
+ * never match their own documents and re-register on every load. Stored
37
+ * formats are unchanged — index hashes stay keyed by original names, and
38
+ * componentPath still sends the original name (the server normalizes it).
39
+ */
40
+ function registryComponentKey(name) {
41
+ return name.toLowerCase();
42
+ }
29
43
  export async function syncComponentRegistry(client, siteId, branchId, descriptors) {
30
44
  // Step 1: List all existing registry documents
31
45
  const existingDocs = (await client.documents.list(siteId, branchId, {
@@ -40,7 +54,19 @@ export async function syncComponentRegistry(client, siteId, branchId, descriptor
40
54
  }
41
55
  else if (doc.path.startsWith(COMPONENT_PREFIX)) {
42
56
  const name = doc.path.slice(COMPONENT_PREFIX.length);
43
- docByName.set(name, doc);
57
+ docByName.set(registryComponentKey(name), doc);
58
+ }
59
+ }
60
+ // Names that collide case-insensitively share one server document (the
61
+ // server lowercases paths) and will silently overwrite each other.
62
+ const namesByKey = new Map();
63
+ for (const descriptor of descriptors) {
64
+ const key = registryComponentKey(descriptor.name);
65
+ namesByKey.set(key, [...(namesByKey.get(key) ?? []), descriptor.name]);
66
+ }
67
+ for (const names of namesByKey.values()) {
68
+ if (names.length > 1) {
69
+ console.warn('[syncComponentRegistry] Component names collide case-insensitively and will share one registry document (last write wins):', names);
44
70
  }
45
71
  }
46
72
  // Step 3: Resolve stored hashes — fast path (from index) or legacy (per-component).
@@ -67,7 +93,7 @@ export async function syncComponentRegistry(client, siteId, branchId, descriptor
67
93
  if (indexSnapshot.hashes !== undefined && typeof indexSnapshot.hashes === 'object' && !verificationIsStale) {
68
94
  for (const [name, hash] of Object.entries(indexSnapshot.hashes)) {
69
95
  if (typeof hash === 'string') {
70
- storedHashByName.set(name, hash);
96
+ storedHashByName.set(registryComponentKey(name), hash);
71
97
  }
72
98
  }
73
99
  gotHashesFromIndex = true;
@@ -114,8 +140,8 @@ export async function syncComponentRegistry(client, siteId, branchId, descriptor
114
140
  let registered = 0;
115
141
  let skipped = 0;
116
142
  await Promise.all(descriptors.map(async (descriptor) => {
117
- const storedHash = storedHashByName.get(descriptor.name);
118
- const existingDoc = docByName.get(descriptor.name);
143
+ const storedHash = storedHashByName.get(registryComponentKey(descriptor.name));
144
+ const existingDoc = docByName.get(registryComponentKey(descriptor.name));
119
145
  // Skip only when the hash is unchanged AND the component document still
120
146
  // exists on this branch. A hash-only check is unsafe: the index can drift
121
147
  // out of sync with on-disk component docs (e.g. a partial historical
@@ -165,8 +191,8 @@ export async function syncComponentRegistry(client, siteId, branchId, descriptor
165
191
  // Detect hash instability: if we got hashes from the index but still had to register
166
192
  // components, log which components had mismatched hashes.
167
193
  if (gotHashesFromIndex && registered > 0) {
168
- const changed = descriptors.filter(d => storedHashByName.get(d.name) !== d.descriptorHash);
169
- console.warn('[syncComponentRegistry] Hash mismatch detected for', changed.length, 'component(s) despite index being present.', 'These components will trigger a full re-registration on every load if their hashes are unstable:', changed.map(d => ({ name: d.name, stored: storedHashByName.get(d.name), computed: d.descriptorHash })));
194
+ const changed = descriptors.filter(d => storedHashByName.get(registryComponentKey(d.name)) !== d.descriptorHash);
195
+ console.warn('[syncComponentRegistry] Hash mismatch detected for', changed.length, 'component(s) despite index being present.', 'These components will trigger a full re-registration on every load if their hashes are unstable:', changed.map(d => ({ name: d.name, stored: storedHashByName.get(registryComponentKey(d.name)), computed: d.descriptorHash })));
170
196
  }
171
197
  // Step 5: Write index when something changed, index doesn't exist yet, OR the existing
172
198
  // index lacks the `hashes` field (legacy format). The third condition promotes legacy
@@ -1 +1 @@
1
- {"version":3,"file":"syncComponentRegistry.js","sourceRoot":"","sources":["../../../src/editor/utils/syncComponentRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncComponentRegistry.js","sourceRoot":"","sources":["../../../src/editor/utils/syncComponentRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { TemplateSummary } from '../../features/content-type-templates/types.js';
2
+ /**
3
+ * Resolve the template being edited from a document path. Templates are stored
4
+ * as documents at `_registry/templates/<name>`; returns the matching template
5
+ * (by name) or null for ordinary pages.
6
+ */
7
+ export declare function templateFromRegistryPath(path: string | undefined | null, templates: TemplateSummary[] | undefined): TemplateSummary | null;
8
+ //# sourceMappingURL=templatePath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templatePath.d.ts","sourceRoot":"","sources":["../../../src/editor/utils/templatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAEtF;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC/B,SAAS,EAAE,eAAe,EAAE,GAAG,SAAS,GACvC,eAAe,GAAG,IAAI,CAKxB"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Resolve the template being edited from a document path. Templates are stored
3
+ * as documents at `_registry/templates/<name>`; returns the matching template
4
+ * (by name) or null for ordinary pages.
5
+ */
6
+ export function templateFromRegistryPath(path, templates) {
7
+ if (!path || !templates)
8
+ return null;
9
+ const match = path.match(/^_registry\/templates\/(.+)$/);
10
+ if (!match)
11
+ return null;
12
+ return templates.find((t) => t.name === match[1]) ?? null;
13
+ }
14
+ //# sourceMappingURL=templatePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templatePath.js","sourceRoot":"","sources":["../../../src/editor/utils/templatePath.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAA+B,EAC/B,SAAwC;IAExC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5D,CAAC"}
@@ -24,23 +24,26 @@ export interface PuckPermissions {
24
24
  */
25
25
  export interface PuckItem {
26
26
  type: string;
27
+ props?: {
28
+ id?: string;
29
+ [key: string]: unknown;
30
+ };
27
31
  }
28
32
  /**
29
33
  * App state passed to resolvePermissions by Puck.
30
34
  */
31
- export interface PuckAppState {
32
- [key: string]: unknown;
33
- }
35
+ export type PuckAppState = Record<string, unknown>;
34
36
  /**
35
37
  * Permission resolver function type for Puck.
36
38
  */
37
- export type PuckPermissionResolver = (item: PuckItem, appState: PuckAppState) => PuckPermissions;
39
+ export type PuckPermissionResolver = (item: PuckItem, appState: unknown) => PuckPermissions;
38
40
  /**
39
41
  * Create a Puck permissions resolver based on template and user role.
40
42
  *
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).
43
+ * A canvas component is pinned when its own `props.id` is a slot id that maps
44
+ * to `true` in `root.props._pinMap` and has a matching component instance in
45
+ * the template's content or zones. A same-typed component with a different id
46
+ * (a local copy or duplicate) is never locked.
44
47
  *
45
48
  * Permission logic:
46
49
  * - **Pinned components**: drag=false, delete=false for all roles
@@ -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,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"}
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;IACb,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,OAAO,KACd,eAAe,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI,EAC3C,IAAI,EAAE,WAAW,EACjB,mBAAmB,EAAE,OAAO,GAC3B,sBAAsB,CA8DxB"}
@@ -6,9 +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).
9
+ * A canvas component is pinned when its own `props.id` is a slot id that maps
10
+ * to `true` in `root.props._pinMap` and has a matching component instance in
11
+ * the template's content or zones. A same-typed component with a different id
12
+ * (a local copy or duplicate) is never locked.
12
13
  *
13
14
  * Permission logic:
14
15
  * - **Pinned components**: drag=false, delete=false for all roles
@@ -38,12 +39,29 @@
38
39
  * ```
39
40
  */
40
41
  export function createPuckPermissions(template, role, isHistoricalVersion) {
41
- const pinnedTypes = new Set();
42
+ const pinnedSlotIds = new Set();
42
43
  if (template && 'content' in template) {
43
44
  const pinMap = template.root?.props?._pinMap ?? {};
45
+ const instanceIds = new Set();
44
46
  for (const item of template.content ?? []) {
45
- if (pinMap[item.props.id] === true) {
46
- pinnedTypes.add(item.type);
47
+ if (typeof item?.props?.id === 'string') {
48
+ instanceIds.add(item.props.id);
49
+ }
50
+ }
51
+ const zones = template.zones ?? {};
52
+ for (const zoneItems of Object.values(zones)) {
53
+ if (Array.isArray(zoneItems)) {
54
+ for (const item of zoneItems) {
55
+ const id = item?.props?.id;
56
+ if (typeof id === 'string') {
57
+ instanceIds.add(id);
58
+ }
59
+ }
60
+ }
61
+ }
62
+ for (const [id, pinned] of Object.entries(pinMap)) {
63
+ if (pinned === true && instanceIds.has(id)) {
64
+ pinnedSlotIds.add(id);
47
65
  }
48
66
  }
49
67
  }
@@ -59,8 +77,9 @@ export function createPuckPermissions(template, role, isHistoricalVersion) {
59
77
  };
60
78
  }
61
79
  const juniorEditorRestricted = role === 'junior-editor';
62
- // Pinned component: locked for all roles
63
- if (pinnedTypes.has(item.type)) {
80
+ // Pinned slot: locked for all roles when the item carries a pinned slot id
81
+ const itemId = item.props?.id;
82
+ if (typeof itemId === 'string' && pinnedSlotIds.has(itemId)) {
64
83
  return {
65
84
  edit: true,
66
85
  drag: false,
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"createPuckPermissions.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/permissions/createPuckPermissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyCH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA2C,EAC3C,IAAiB,EACjB,mBAA4B;IAE5B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,OAAO,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACxC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QACnC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC7B,MAAM,EAAE,GAAI,IAAqC,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC7D,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;wBAC3B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,MAAM,KAAK,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3C,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,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,2EAA2E;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QAC9B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template-store-api.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/stores/template-store-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,aAAa,CAoDf"}
1
+ {"version":3,"file":"template-store-api.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/stores/template-store-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,aAAa,CAoDf"}
@@ -1 +1 @@
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
+ {"version":3,"file":"ActionBarPinButton.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/ui/ActionBarPinButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAiC3C,wBAAgB,kBAAkB,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CA2D9D"}
@@ -54,6 +54,6 @@ export function ActionBarPinButton() {
54
54
  const isPinned = pinMap[selectedItem.props.id] ?? false;
55
55
  return (_jsx(ActionBar.Action, { label: isPinned ? 'Unpin component' : 'Pin component', onClick: handleTogglePin, active: isPinned,
56
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" }) }));
57
+ disabled: !isAdmin || css.isViewingHistoricalVersion, children: _jsx(Icon, { iconName: isPinned ? 'lock' : 'lockOpen', size: "s", "aria-hidden": "true" }) }));
58
58
  }
59
59
  //# sourceMappingURL=ActionBarPinButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBarPinButton.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/ui/ActionBarPinButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionBarPinButton.js","sourceRoot":"","sources":["../../../../src/features/content-type-templates/ui/ActionBarPinButton.tsx"],"names":[],"mappings":"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"}
@@ -20,10 +20,10 @@ export interface ValidationResult {
20
20
  /**
21
21
  * Validate that document data conforms to template structure.
22
22
  *
23
- * A document conforms if:
24
- * - All pinned components from template are present
25
- * - Pinned components appear in the same relative order
26
- * - Extra non-pinned components are allowed
23
+ * Conformance resolves by slot-id membership: every pinned slot must be
24
+ * present somewhere in the document, and the pinned slots that share a list
25
+ * must hold the template's relative order there. Components carrying non-slot
26
+ * ids are allowed anywhere. A template with no pinned slots imposes nothing.
27
27
  */
28
28
  export declare function validateStructure(data: Data, template: Template): ValidationResult;
29
29
  //# sourceMappingURL=structural-validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structural-validation.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/validation/structural-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAC3B,0BAA0B,GAC1B,+BAA+B,GAC/B,qCAAqC,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,CA8DlF"}
1
+ {"version":3,"file":"structural-validation.d.ts","sourceRoot":"","sources":["../../../../src/features/content-type-templates/validation/structural-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAC3B,0BAA0B,GAC1B,+BAA+B,GAC/B,qCAAqC,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AA2JD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,CAgBlF"}