rimecms 0.33.0 → 1.0.1

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 (526) hide show
  1. package/dist/adapter-sqlite/auth.server.d.ts +2 -2
  2. package/dist/adapter-sqlite/columns.server.js +2 -2
  3. package/dist/adapter-sqlite/connect.server.d.ts +12 -0
  4. package/dist/adapter-sqlite/connect.server.js +31 -0
  5. package/dist/adapter-sqlite/generate-schema/index.server.js +11 -3
  6. package/dist/adapter-sqlite/generate-schema/root.server.d.ts +13 -4
  7. package/dist/adapter-sqlite/generate-schema/root.server.js +75 -131
  8. package/dist/adapter-sqlite/generate-schema/templates.server.d.ts +36 -15
  9. package/dist/adapter-sqlite/generate-schema/templates.server.js +60 -18
  10. package/dist/adapter-sqlite/index.server.d.ts +13 -5
  11. package/dist/adapter-sqlite/index.server.js +9 -6
  12. package/dist/adapter-sqlite/naming.server.d.ts +6 -8
  13. package/dist/adapter-sqlite/naming.server.js +22 -4
  14. package/dist/adapter-sqlite/paths.server.d.ts +10 -0
  15. package/dist/adapter-sqlite/paths.server.js +131 -0
  16. package/dist/adapter-sqlite/read.server.d.ts +10 -1
  17. package/dist/adapter-sqlite/read.server.js +22 -10
  18. package/dist/adapter-sqlite/rows.server.d.ts +1 -1
  19. package/dist/adapter-sqlite/select.server.d.ts +19 -0
  20. package/dist/adapter-sqlite/select.server.js +71 -63
  21. package/dist/adapter-sqlite/table.server.d.ts +2 -2
  22. package/dist/adapter-sqlite/transform.server.js +33 -3
  23. package/dist/adapter-sqlite/types.server.d.ts +10 -3
  24. package/dist/adapter-sqlite/where.server.d.ts +2 -3
  25. package/dist/adapter-sqlite/where.server.js +19 -1
  26. package/dist/core/adapter.d.ts +98 -0
  27. package/dist/core/auth/better-auth/config.server.d.ts +3 -3
  28. package/dist/core/auth/better-auth/instance.server.d.ts +6 -6
  29. package/dist/core/auth/handler/index.server.js +1 -1
  30. package/dist/core/auth/staff/derive.js +1 -1
  31. package/dist/core/auth/validate-config.js +3 -5
  32. package/dist/core/boot.server.d.ts +8 -8
  33. package/dist/core/config/context.server.d.ts +2 -2
  34. package/dist/core/config/types.d.ts +43 -5
  35. package/dist/core/config/validate.server.js +34 -51
  36. package/dist/core/dev/cli/commands/build.js +21 -6
  37. package/dist/core/dev/cli/commands/init.server.d.ts +2 -1
  38. package/dist/core/dev/cli/commands/init.server.js +32 -6
  39. package/dist/core/dev/cli/index.js +1 -0
  40. package/dist/core/dev/cli/templates/init.d.ts +6 -1
  41. package/dist/core/dev/cli/templates/init.js +30 -2
  42. package/dist/core/dev/cli/util/package-manager.server.d.ts +1 -0
  43. package/dist/core/dev/cli/util/package-manager.server.js +11 -8
  44. package/dist/core/dev/cli/util/package.server.d.ts +9 -0
  45. package/dist/core/dev/cli/util/package.server.js +43 -0
  46. package/dist/core/dev/codegen/routes/common.server.d.ts +2 -0
  47. package/dist/core/dev/codegen/routes/common.server.js +7 -3
  48. package/dist/core/dev/codegen/routes/util.server.d.ts +2 -1
  49. package/dist/core/dev/codegen/routes/util.server.js +4 -1
  50. package/dist/core/dev/codegen/types/contributions.server.d.ts +3 -2
  51. package/dist/core/dev/codegen/types/contributions.server.js +10 -3
  52. package/dist/core/dev/config-memo.server.js +4 -0
  53. package/dist/core/dev/vite.server.js +4 -3
  54. package/dist/core/fields/blank.d.ts +21 -0
  55. package/dist/core/fields/blank.js +37 -0
  56. package/dist/core/fields/builders/field-builder.d.ts +53 -0
  57. package/dist/core/fields/builders/field-builder.js +14 -1
  58. package/dist/core/fields/builders/form-field-builder.d.ts +8 -0
  59. package/dist/core/fields/builders/form-field-builder.js +14 -1
  60. package/dist/core/fields/util.d.ts +9 -2
  61. package/dist/core/fields/util.js +123 -135
  62. package/dist/core/fields/walk.d.ts +44 -0
  63. package/dist/core/fields/walk.js +55 -0
  64. package/dist/core/handler.server.js +4 -0
  65. package/dist/core/i18n/context.d.ts +5 -0
  66. package/dist/core/i18n/context.js +6 -0
  67. package/dist/core/i18n/en/common.d.ts +71 -0
  68. package/dist/core/i18n/en/common.js +72 -1
  69. package/dist/core/i18n/en/fields.d.ts +68 -0
  70. package/dist/core/i18n/en/fields.js +69 -1
  71. package/dist/core/i18n/fr/common.d.ts +71 -0
  72. package/dist/core/i18n/fr/common.js +72 -1
  73. package/dist/core/i18n/fr/fields.d.ts +68 -0
  74. package/dist/core/i18n/fr/fields.js +69 -1
  75. package/dist/core/i18n/index.d.ts +29 -3
  76. package/dist/core/i18n/index.js +55 -29
  77. package/dist/core/locale/copy.server.js +3 -3
  78. package/dist/core/logger.server.js +15 -6
  79. package/dist/core/pipeline/build-document.server.d.ts +3 -0
  80. package/dist/core/pipeline/build-document.server.js +10 -7
  81. package/dist/core/pipeline/config-map/index.d.ts +9 -0
  82. package/dist/core/pipeline/config-map/index.js +16 -50
  83. package/dist/core/pipeline/hooks/process-document-fields.server.d.ts +3 -0
  84. package/dist/core/pipeline/hooks/process-document-fields.server.js +48 -12
  85. package/dist/core/pipeline/hooks/set-default-values.server.d.ts +1 -0
  86. package/dist/core/pipeline/hooks/set-default-values.server.js +1 -0
  87. package/dist/core/pipeline/persist/blocks/extract.server.js +1 -1
  88. package/dist/core/pipeline/persist/relations/extract.server.js +2 -0
  89. package/dist/core/pipeline/populate-relations.server.d.ts +27 -0
  90. package/dist/core/pipeline/populate-relations.server.js +42 -0
  91. package/dist/core/pipeline/run.server.d.ts +17 -6
  92. package/dist/core/pipeline/run.server.js +44 -30
  93. package/dist/core/plugins/cache/module.server.d.ts +1 -1
  94. package/dist/core/plugins/cache/module.server.js +5 -5
  95. package/dist/core/prototype/area/api.server.js +1 -2
  96. package/dist/core/prototype/area/definition.js +1 -10
  97. package/dist/core/prototype/area/definition.server.js +4 -5
  98. package/dist/core/prototype/area/hooks.server.js +3 -2
  99. package/dist/core/prototype/area/operations/find.js +2 -0
  100. package/dist/core/prototype/blank.d.ts +26 -0
  101. package/dist/core/prototype/blank.js +22 -0
  102. package/dist/core/prototype/collection/api.server.d.ts +29 -3
  103. package/dist/core/prototype/collection/api.server.js +47 -4
  104. package/dist/core/prototype/collection/definition.js +0 -3
  105. package/dist/core/prototype/collection/hooks/merge-with-blank.server.d.ts +5 -1
  106. package/dist/core/prototype/collection/hooks/merge-with-blank.server.js +8 -22
  107. package/dist/core/prototype/collection/hooks.server.js +11 -5
  108. package/dist/core/prototype/collection/nested/module.server.js +3 -1
  109. package/dist/core/prototype/collection/nested/tree.d.ts +12 -0
  110. package/dist/core/prototype/collection/nested/tree.js +42 -0
  111. package/dist/core/prototype/collection/operations/duplicate.js +1 -1
  112. package/dist/core/prototype/collection/operations/find-by-id.js +2 -0
  113. package/dist/core/prototype/collection/operations/find-by-ids.d.ts +19 -0
  114. package/dist/core/prototype/collection/operations/find-by-ids.js +54 -0
  115. package/dist/core/prototype/collection/operations/find.js +21 -27
  116. package/dist/core/prototype/collection/operations/update-slug-by-id.d.ts +20 -0
  117. package/dist/core/prototype/collection/operations/update-slug-by-id.js +53 -0
  118. package/dist/core/prototype/collection/rest/index.server.js +3 -1
  119. package/dist/core/prototype/collection/rest/update-slug-by-id.server.d.ts +2 -0
  120. package/dist/core/prototype/collection/rest/update-slug-by-id.server.js +20 -0
  121. package/dist/core/prototype/collection/thumbnail/find-thumbnail.d.ts +2 -1
  122. package/dist/core/prototype/collection/thumbnail/find-thumbnail.js +4 -27
  123. package/dist/core/prototype/collection/thumbnail/hooks/set-document-thumbnail.server.js +1 -1
  124. package/dist/core/prototype/collection/upload/directories/derive.js +3 -1
  125. package/dist/core/prototype/collection/upload/disk/delete.server.js +1 -2
  126. package/dist/core/prototype/define.js +2 -0
  127. package/dist/core/prototype/shared/metas/fields.js +2 -1
  128. package/dist/core/prototype/shared/title/find-title.d.ts +2 -1
  129. package/dist/core/prototype/shared/title/find-title.js +5 -28
  130. package/dist/core/prototype/shared/title/hooks/set-document-title.server.js +1 -1
  131. package/dist/core/prototype/shared/url/addresses.server.d.ts +36 -0
  132. package/dist/core/prototype/shared/url/addresses.server.js +119 -0
  133. package/dist/core/prototype/shared/url/doc-type.d.ts +6 -0
  134. package/dist/core/prototype/shared/url/doc-type.js +9 -0
  135. package/dist/core/prototype/shared/url/format.server.d.ts +27 -0
  136. package/dist/core/prototype/shared/url/format.server.js +38 -0
  137. package/dist/core/prototype/shared/url/hooks/create-paths.server.d.ts +2 -0
  138. package/dist/core/prototype/shared/url/hooks/create-paths.server.js +9 -0
  139. package/dist/core/prototype/shared/url/hooks/detach-paths.server.d.ts +6 -0
  140. package/dist/core/prototype/shared/url/hooks/detach-paths.server.js +19 -0
  141. package/dist/core/prototype/shared/url/hooks/index.server.d.ts +5 -1
  142. package/dist/core/prototype/shared/url/hooks/index.server.js +5 -1
  143. package/dist/core/prototype/shared/url/hooks/set-area-url.server.d.ts +2 -0
  144. package/dist/core/prototype/shared/url/hooks/set-area-url.server.js +8 -0
  145. package/dist/core/prototype/shared/url/hooks/set-live-url.server.d.ts +5 -0
  146. package/dist/core/prototype/shared/url/hooks/set-live-url.server.js +19 -0
  147. package/dist/core/prototype/shared/url/hooks/sync-paths.server.d.ts +8 -0
  148. package/dist/core/prototype/shared/url/hooks/sync-paths.server.js +38 -0
  149. package/dist/core/prototype/shared/url/refresh.server.d.ts +36 -0
  150. package/dist/core/prototype/shared/url/refresh.server.js +58 -0
  151. package/dist/core/prototype/shared/versions/configure.server.js +3 -0
  152. package/dist/core/routes/context.server.d.ts +2 -1
  153. package/dist/fields/blocks/component/AddBlockButton.svelte +48 -137
  154. package/dist/fields/blocks/component/Block.svelte +153 -117
  155. package/dist/fields/blocks/component/Block.svelte.d.ts +11 -5
  156. package/dist/fields/blocks/component/BlockActions.svelte +76 -26
  157. package/dist/fields/blocks/component/BlockActions.svelte.d.ts +3 -0
  158. package/dist/fields/blocks/component/Blocks.svelte +248 -91
  159. package/dist/fields/blocks/component/focus/BlocksFocus.svelte +680 -0
  160. package/dist/fields/blocks/component/focus/BlocksFocus.svelte.d.ts +7 -0
  161. package/dist/fields/blocks/component/focus/Layers.svelte +145 -0
  162. package/dist/fields/blocks/component/focus/Layers.svelte.d.ts +9 -0
  163. package/dist/fields/blocks/component/focus/LayersList.svelte +304 -0
  164. package/dist/fields/blocks/component/focus/LayersList.svelte.d.ts +10 -0
  165. package/dist/fields/blocks/component/focus/Palette.svelte +135 -0
  166. package/dist/fields/blocks/component/focus/Palette.svelte.d.ts +9 -0
  167. package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte +77 -0
  168. package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte.d.ts +10 -0
  169. package/dist/fields/blocks/component/focus/Renders.svelte +302 -0
  170. package/dist/fields/blocks/component/focus/Renders.svelte.d.ts +11 -0
  171. package/dist/fields/blocks/component/focus/Stage.svelte +190 -0
  172. package/dist/fields/blocks/component/focus/Stage.svelte.d.ts +8 -0
  173. package/dist/fields/blocks/component/focus/StagePlaceholder.svelte +69 -0
  174. package/dist/fields/blocks/component/focus/StagePlaceholder.svelte.d.ts +3 -0
  175. package/dist/fields/blocks/component/focus/focus.svelte.d.ts +140 -0
  176. package/dist/fields/blocks/component/focus/focus.svelte.js +424 -0
  177. package/dist/fields/blocks/component/picker/BlockPicker.svelte +88 -0
  178. package/dist/fields/blocks/component/picker/BlockPicker.svelte.d.ts +10 -0
  179. package/dist/fields/blocks/component/picker/BlockTile.svelte +121 -0
  180. package/dist/fields/blocks/component/picker/BlockTile.svelte.d.ts +12 -0
  181. package/dist/fields/blocks/index.d.ts +49 -7
  182. package/dist/fields/blocks/index.js +61 -12
  183. package/dist/fields/checkbox/component/Checkbox.svelte +11 -37
  184. package/dist/fields/checkbox/component/Checkbox.svelte.d.ts +1 -0
  185. package/dist/fields/combobox/component/ComboBox.svelte +37 -7
  186. package/dist/fields/combobox/component/combobox.css +26 -10
  187. package/dist/fields/date/component/Date.svelte +43 -12
  188. package/dist/fields/group/component/Group.svelte +110 -41
  189. package/dist/fields/group/index.d.ts +5 -1
  190. package/dist/fields/group/index.js +10 -2
  191. package/dist/fields/link/component/Link.svelte +184 -143
  192. package/dist/fields/link/component/RessourceInput.svelte +26 -24
  193. package/dist/fields/link/index.d.ts +2 -1
  194. package/dist/fields/link/module.server.js +2 -4
  195. package/dist/fields/number/component/Number.svelte +38 -20
  196. package/dist/fields/number/component/number.css +22 -20
  197. package/dist/fields/number/index.d.ts +1 -0
  198. package/dist/fields/radio/component/Radio.svelte +12 -0
  199. package/dist/fields/radio/index.js +1 -1
  200. package/dist/fields/relation/component/Relation.svelte +169 -40
  201. package/dist/fields/relation/component/RelationInline.svelte +258 -0
  202. package/dist/fields/relation/component/RelationInline.svelte.d.ts +26 -0
  203. package/dist/fields/relation/component/default/Default.svelte +210 -100
  204. package/dist/fields/relation/component/default/Default.svelte.d.ts +14 -1
  205. package/dist/fields/relation/component/types.d.ts +4 -0
  206. package/dist/fields/relation/component/upload/Browse.svelte +619 -88
  207. package/dist/fields/relation/component/upload/Browse.svelte.d.ts +10 -2
  208. package/dist/fields/relation/component/upload/Create.svelte +41 -0
  209. package/dist/fields/relation/component/upload/Create.svelte.d.ts +13 -0
  210. package/dist/fields/relation/component/upload/Upload.svelte +287 -101
  211. package/dist/fields/relation/component/upload/Upload.svelte.d.ts +6 -1
  212. package/dist/fields/relation/component/upload/upload.css +5 -81
  213. package/dist/fields/relation/index.d.ts +1 -41
  214. package/dist/fields/relation/index.js +0 -67
  215. package/dist/fields/relation/module.server.js +7 -1
  216. package/dist/fields/relation/populate.d.ts +8 -0
  217. package/dist/fields/relation/populate.js +49 -0
  218. package/dist/fields/relation/util.d.ts +69 -0
  219. package/dist/fields/relation/util.js +103 -0
  220. package/dist/fields/relation/value.d.ts +25 -0
  221. package/dist/fields/relation/value.js +27 -0
  222. package/dist/fields/rich-text/client.d.ts +2 -5
  223. package/dist/fields/rich-text/client.js +1 -3
  224. package/dist/fields/rich-text/component/Cell.svelte +1 -1
  225. package/dist/fields/rich-text/component/RichText.svelte +12 -80
  226. package/dist/fields/rich-text/component/RichText.svelte.d.ts +1 -1
  227. package/dist/fields/rich-text/component/RichTextInline.svelte +28 -0
  228. package/dist/fields/rich-text/component/RichTextInline.svelte.d.ts +11 -0
  229. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.css +4 -3
  230. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.svelte +3 -1
  231. package/dist/fields/rich-text/component/bubble-menu/icon-button/icon-button.css +2 -2
  232. package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.css +7 -10
  233. package/dist/fields/rich-text/component/drag-handle/drag-handle.css +0 -2
  234. package/dist/fields/rich-text/component/styles/editor.css +111 -0
  235. package/dist/fields/rich-text/component/styles/field.css +71 -0
  236. package/dist/fields/rich-text/component/suggestion/suggestion.svelte +41 -56
  237. package/dist/fields/rich-text/core/build-editor-config.js +1 -1
  238. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle-plugin.js +29 -3
  239. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.d.ts +1 -0
  240. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.js +2 -1
  241. package/dist/fields/rich-text/core/features/fields/fields.css +2 -3
  242. package/dist/fields/rich-text/core/features/hr/hr.css +4 -4
  243. package/dist/fields/rich-text/core/features/link/component/link-selector.css +0 -4
  244. package/dist/fields/rich-text/core/features/link/component/link-selector.svelte +24 -8
  245. package/dist/fields/rich-text/core/features/resource/resource-extension.js +3 -3
  246. package/dist/fields/rich-text/core/features/resource/resource.svelte +21 -7
  247. package/dist/fields/rich-text/core/features/upload/upload-extension.js +3 -4
  248. package/dist/fields/rich-text/core/features/upload/upload.svelte +21 -9
  249. package/dist/fields/rich-text/core/rich-text-editor-core.svelte +103 -0
  250. package/dist/fields/rich-text/core/rich-text-editor-core.svelte.d.ts +15 -0
  251. package/dist/fields/rich-text/index.d.ts +0 -17
  252. package/dist/fields/rich-text/index.js +0 -44
  253. package/dist/fields/rich-text/json.d.ts +18 -0
  254. package/dist/fields/rich-text/json.js +44 -0
  255. package/dist/fields/select/component/Select.svelte +67 -28
  256. package/dist/fields/slug/component/Slug.svelte +26 -53
  257. package/dist/fields/slug/index.d.ts +1 -0
  258. package/dist/fields/slug/index.js +1 -1
  259. package/dist/fields/tabs/component/Tabs.svelte +28 -22
  260. package/dist/fields/tabs/index.d.ts +4 -1
  261. package/dist/fields/tabs/index.js +17 -5
  262. package/dist/fields/text/index.d.ts +1 -0
  263. package/dist/fields/textarea/component/TextArea.svelte +28 -13
  264. package/dist/fields/textarea/index.d.ts +1 -0
  265. package/dist/fields/time/component/Time.svelte +9 -2
  266. package/dist/fields/toggle/component/Toggle.svelte +8 -25
  267. package/dist/fields/toggle/component/Toggle.svelte.d.ts +1 -0
  268. package/dist/fields/toggle/index.d.ts +1 -0
  269. package/dist/fields/tree/component/AddItemButton.svelte +18 -5
  270. package/dist/fields/tree/component/Tree.svelte +48 -19
  271. package/dist/fields/tree/component/TreeBlock.svelte +318 -104
  272. package/dist/fields/tree/component/TreeBlockActions.svelte +71 -7
  273. package/dist/fields/tree/component/TreeBlockActions.svelte.d.ts +4 -0
  274. package/dist/fields/tree/component/props.d.ts +2 -1
  275. package/dist/fields/tree/index.d.ts +13 -1
  276. package/dist/fields/tree/index.js +35 -9
  277. package/dist/fields/types.d.ts +3 -1
  278. package/dist/index.d.ts +2 -8
  279. package/dist/index.js +2 -6
  280. package/dist/{panel/components/sections/live → live}/Consumer.svelte +2 -2
  281. package/dist/{panel/components/sections/live → live}/Consumer.svelte.d.ts +1 -1
  282. package/dist/{panel/components/sections/live → live}/LiveEdit.svelte +3 -3
  283. package/dist/{panel/components/sections/live → live}/Provider.svelte +1 -1
  284. package/dist/{panel/context/live.svelte.d.ts → live/context.svelte.d.ts} +1 -1
  285. package/dist/{panel/context/live.svelte.js → live/context.svelte.js} +3 -74
  286. package/dist/panel/components/Root.svelte +16 -44
  287. package/dist/panel/components/Root.svelte.d.ts +1 -1
  288. package/dist/panel/components/fields/Error.svelte +18 -3
  289. package/dist/panel/components/fields/FieldsPreview.svelte +30 -17
  290. package/dist/panel/components/fields/FieldsPreviewTrigger.svelte +25 -3
  291. package/dist/panel/components/fields/Hint.svelte +51 -8
  292. package/dist/panel/components/fields/Hint.svelte.d.ts +11 -0
  293. package/dist/panel/components/fields/Label.svelte +2 -0
  294. package/dist/panel/components/fields/LabelFor.svelte +7 -2
  295. package/dist/panel/components/fields/RenderFields.svelte +10 -3
  296. package/dist/panel/components/fields/fieldset.svelte.d.ts +4 -1
  297. package/dist/panel/components/fields/fieldset.svelte.js +9 -2
  298. package/dist/panel/components/fields/index.d.ts +1 -0
  299. package/dist/panel/components/fields/setting.css +82 -0
  300. package/dist/panel/components/sections/auth/AuthForm.svelte +25 -26
  301. package/dist/panel/components/sections/collection/Avatar.svelte +61 -0
  302. package/dist/panel/components/sections/collection/Avatar.svelte.d.ts +9 -0
  303. package/dist/panel/components/sections/collection/DocStatus.svelte +28 -0
  304. package/dist/panel/components/sections/collection/DocStatus.svelte.d.ts +7 -0
  305. package/dist/panel/components/sections/collection/Empty.svelte +3 -3
  306. package/dist/panel/components/sections/collection/StatusDot.svelte +7 -5
  307. package/dist/panel/components/sections/collection/When.svelte +33 -0
  308. package/dist/panel/components/sections/collection/When.svelte.d.ts +8 -0
  309. package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte +65 -21
  310. package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte.d.ts +3 -2
  311. package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte +45 -162
  312. package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte.d.ts +3 -2
  313. package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte +151 -0
  314. package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte.d.ts +17 -0
  315. package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte +177 -0
  316. package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte.d.ts +12 -0
  317. package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte +75 -0
  318. package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte.d.ts +8 -0
  319. package/dist/panel/components/sections/collection/folder/Folder.svelte +18 -3
  320. package/dist/panel/components/sections/collection/folder/FolderEdit.svelte +26 -18
  321. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte +98 -58
  322. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte.d.ts +0 -1
  323. package/dist/panel/components/sections/collection/folder/Folders.svelte +60 -0
  324. package/dist/panel/components/sections/collection/folder/Folders.svelte.d.ts +7 -0
  325. package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte +31 -71
  326. package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte.d.ts +1 -0
  327. package/dist/panel/components/sections/collection/grid/create-directory-dialog/CreateDirectoryDialog.svelte +5 -3
  328. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte +250 -37
  329. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte.d.ts +2 -0
  330. package/dist/panel/components/sections/collection/header/ButtonCreate.svelte +43 -18
  331. package/dist/panel/components/sections/collection/header/ButtonCreate.svelte.d.ts +6 -4
  332. package/dist/panel/components/sections/collection/header/DisplayMode.svelte +69 -58
  333. package/dist/panel/components/sections/collection/header/DisplayMode.svelte.d.ts +0 -1
  334. package/dist/panel/components/sections/collection/header/FilterMenu.svelte +60 -0
  335. package/dist/panel/components/sections/collection/header/FilterMenu.svelte.d.ts +14 -0
  336. package/dist/panel/components/sections/collection/header/SearchInput.svelte +17 -26
  337. package/dist/panel/components/sections/collection/header/SelectUI.svelte +19 -34
  338. package/dist/panel/components/sections/collection/list/CollectionList.svelte +99 -68
  339. package/dist/panel/components/sections/collection/list/columns.d.ts +21 -0
  340. package/dist/panel/components/sections/collection/list/columns.js +23 -0
  341. package/dist/panel/components/sections/collection/list/header/Header.svelte +99 -51
  342. package/dist/panel/components/sections/collection/list/row/Row.svelte +165 -82
  343. package/dist/panel/components/sections/collection/list/row/Row.svelte.d.ts +4 -0
  344. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte +92 -44
  345. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte.d.ts +1 -0
  346. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte +139 -43
  347. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte.d.ts +2 -0
  348. package/dist/panel/components/sections/collection/upload-thumb-cell/UploadThumbCell.svelte +1 -1
  349. package/dist/panel/components/sections/commands/CommandButton.svelte +99 -0
  350. package/dist/panel/components/sections/commands/CommandButton.svelte.d.ts +10 -0
  351. package/dist/panel/components/sections/commands/CommandPalette.svelte +275 -0
  352. package/dist/panel/components/sections/commands/CommandPalette.svelte.d.ts +8 -0
  353. package/dist/panel/components/sections/commands/Commands.svelte +18 -0
  354. package/dist/panel/components/sections/commands/Commands.svelte.d.ts +9 -0
  355. package/dist/panel/components/sections/document/AuthAPIKeyDialog.svelte +23 -7
  356. package/dist/panel/components/sections/document/AuthFooter.svelte +31 -12
  357. package/dist/panel/components/sections/document/AutoSaveBanner.svelte +24 -7
  358. package/dist/panel/components/sections/document/ButtonSave.svelte +32 -21
  359. package/dist/panel/components/sections/document/ButtonSave.svelte.d.ts +5 -5
  360. package/dist/panel/components/sections/document/ButtonStatus.svelte +68 -20
  361. package/dist/panel/components/sections/document/ChangeSlugDialog.svelte +199 -0
  362. package/dist/panel/components/sections/document/ChangeSlugDialog.svelte.d.ts +10 -0
  363. package/dist/panel/components/sections/document/CurrentlyEdited.svelte +2 -2
  364. package/dist/panel/components/sections/document/Document.svelte +96 -65
  365. package/dist/panel/components/sections/document/DocumentChildren.svelte +175 -0
  366. package/dist/panel/components/sections/document/DocumentChildren.svelte.d.ts +8 -0
  367. package/dist/panel/components/sections/document/DocumentUrl.svelte +119 -0
  368. package/dist/panel/components/sections/document/DocumentUrl.svelte.d.ts +9 -0
  369. package/dist/panel/components/sections/document/Header.svelte +171 -94
  370. package/dist/panel/components/sections/document/Settings.svelte +255 -110
  371. package/dist/panel/components/sections/document/Settings.svelte.d.ts +0 -1
  372. package/dist/panel/components/sections/document/Versions.svelte +5 -3
  373. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte +112 -53
  374. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte.d.ts +2 -2
  375. package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte +74 -41
  376. package/dist/panel/components/sections/live/LiveFloatingUI.svelte +30 -11
  377. package/dist/panel/components/sections/live/live-edit-panel.css +2 -2
  378. package/dist/panel/components/sections/page-layout/Page.svelte +13 -1
  379. package/dist/panel/components/ui/breadcrumb/BreadCrumb.svelte +55 -27
  380. package/dist/panel/components/ui/button/button.svelte +81 -54
  381. package/dist/panel/components/ui/button/index.d.ts +7 -3
  382. package/dist/panel/components/ui/button/index.js +2 -2
  383. package/dist/panel/components/ui/calendar/calendar.css +27 -27
  384. package/dist/panel/components/ui/card/card-description.svelte +1 -1
  385. package/dist/panel/components/ui/card/card.svelte +21 -4
  386. package/dist/panel/components/ui/card-document/card-document.svelte +24 -12
  387. package/dist/panel/components/ui/card-resource/card-resource.svelte +26 -8
  388. package/dist/panel/components/ui/checkbox/checkbox.css +8 -10
  389. package/dist/panel/components/ui/checkbox/checkbox.svelte.d.ts +1 -1
  390. package/dist/panel/components/ui/command/command-dialog.css +28 -4
  391. package/dist/panel/components/ui/command/command-dialog.svelte +4 -1
  392. package/dist/panel/components/ui/command/command-dialog.svelte.d.ts +2 -0
  393. package/dist/panel/components/ui/command/command-empty.css +1 -1
  394. package/dist/panel/components/ui/command/command-group.css +3 -3
  395. package/dist/panel/components/ui/command/command-input-select.svelte +3 -3
  396. package/dist/panel/components/ui/command/command-input.svelte +38 -14
  397. package/dist/panel/components/ui/command/command-input.svelte.d.ts +6 -1
  398. package/dist/panel/components/ui/command/command-item.css +2 -2
  399. package/dist/panel/components/ui/command/command-list.css +1 -1
  400. package/dist/panel/components/ui/command/command-separator.css +1 -1
  401. package/dist/panel/components/ui/context-menu/context-menu-item.css +2 -2
  402. package/dist/panel/components/ui/context-menu/context-menu.css +6 -7
  403. package/dist/panel/components/ui/dialog/dialog-content.css +8 -10
  404. package/dist/panel/components/ui/dialog/dialog-content.svelte +19 -0
  405. package/dist/panel/components/ui/dialog/dialog-description.css +1 -1
  406. package/dist/panel/components/ui/dialog/dialog-footer.svelte +5 -1
  407. package/dist/panel/components/ui/dialog/dialog-overlay.css +1 -1
  408. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +19 -5
  409. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +1 -1
  410. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.css +6 -4
  411. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-item.css +1 -1
  412. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-radio-item.css +1 -1
  413. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-separator.css +1 -1
  414. package/dist/panel/components/ui/input/input.svelte +57 -31
  415. package/dist/panel/components/ui/kbd/Kbd.svelte +90 -0
  416. package/dist/panel/components/ui/kbd/Kbd.svelte.d.ts +11 -0
  417. package/dist/panel/components/ui/kbd/index.d.ts +1 -0
  418. package/dist/panel/components/ui/kbd/index.js +1 -0
  419. package/dist/panel/components/ui/label/label.css +5 -3
  420. package/dist/panel/components/ui/language-switcher/LanguageSwitcher.svelte +27 -15
  421. package/dist/panel/components/ui/nav/Nav.svelte +180 -110
  422. package/dist/panel/components/ui/nav/Nav.svelte.d.ts +0 -2
  423. package/dist/panel/components/ui/nav/NavGroup.svelte +87 -73
  424. package/dist/panel/components/ui/nav/NavItemButton.svelte +69 -29
  425. package/dist/panel/components/ui/nav/UserButton.svelte +132 -71
  426. package/dist/panel/components/ui/page-header/PageHeader.svelte +140 -42
  427. package/dist/panel/components/ui/page-header/PageHeader.svelte.d.ts +8 -1
  428. package/dist/panel/components/ui/popover/popover-content.css +4 -3
  429. package/dist/panel/components/ui/radio-group/radio-group.css +4 -6
  430. package/dist/panel/components/ui/radio-row-group/radio-row-group.css +19 -7
  431. package/dist/panel/components/ui/scroll-area/scroll-area.css +2 -2
  432. package/dist/panel/components/ui/separator/separator.svelte +1 -1
  433. package/dist/panel/components/ui/sheet/index.d.ts +4 -4
  434. package/dist/panel/components/ui/sheet/index.js +5 -5
  435. package/dist/panel/components/ui/sheet/sheet.css +50 -11
  436. package/dist/panel/components/ui/sonner/sonner.css +11 -8
  437. package/dist/panel/components/ui/switch/switch.css +13 -18
  438. package/dist/panel/components/ui/switch/switch.svelte.d.ts +1 -1
  439. package/dist/panel/components/ui/tabs/tabs.css +44 -35
  440. package/dist/panel/components/ui/tag/tag.svelte +20 -6
  441. package/dist/panel/components/ui/tooltip/tooltip-content.svelte +14 -4
  442. package/dist/panel/components/ui/tree/tree-rows.css +146 -0
  443. package/dist/panel/context/blocks-ops.d.ts +78 -0
  444. package/dist/panel/context/blocks-ops.js +170 -0
  445. package/dist/panel/context/collection.svelte.d.ts +28 -0
  446. package/dist/panel/context/collection.svelte.js +120 -65
  447. package/dist/panel/context/commands.svelte.d.ts +80 -0
  448. package/dist/panel/context/commands.svelte.js +108 -0
  449. package/dist/panel/context/config.svelte.d.ts +2 -2
  450. package/dist/panel/context/documentForm.svelte.d.ts +34 -2
  451. package/dist/panel/context/documentForm.svelte.js +106 -103
  452. package/dist/panel/context/nav.svelte.d.ts +23 -0
  453. package/dist/panel/context/nav.svelte.js +56 -0
  454. package/dist/panel/fonts/Geist-VariableFont_wght.ttf +0 -0
  455. package/dist/panel/fonts/GeistMono-VariableFont_wght.ttf +0 -0
  456. package/dist/panel/index.d.ts +7 -4
  457. package/dist/panel/index.js +11 -5
  458. package/dist/panel/pages/auth/forgot-password/ForgotPassword.svelte +16 -1
  459. package/dist/panel/pages/collection/CollectionPage.svelte +236 -61
  460. package/dist/panel/pages/collection/load.server.js +1 -1
  461. package/dist/panel/pages/dashboard/Dashboard.svelte +135 -90
  462. package/dist/panel/pages/dashboard/DashboardCard.svelte +109 -0
  463. package/dist/panel/pages/dashboard/DashboardCard.svelte.d.ts +14 -0
  464. package/dist/panel/pages/dashboard/DashboardCollection.svelte +180 -57
  465. package/dist/panel/pages/dashboard/DashboardCollection.svelte.d.ts +1 -0
  466. package/dist/panel/pages/dashboard/DashboardRow.svelte +93 -0
  467. package/dist/panel/pages/dashboard/DashboardRow.svelte.d.ts +16 -0
  468. package/dist/panel/pages/dashboard/load.server.js +49 -25
  469. package/dist/panel/pages/dashboard/time.d.ts +19 -0
  470. package/dist/panel/pages/dashboard/time.js +29 -0
  471. package/dist/panel/pages/dashboard/types.d.ts +9 -2
  472. package/dist/panel/pages/live/Live.svelte +53 -50
  473. package/dist/panel/public.d.ts +4 -0
  474. package/dist/panel/public.js +6 -0
  475. package/dist/panel/style/font.css +21 -32
  476. package/dist/panel/style/index.css +191 -122
  477. package/dist/panel/style/mixins/index.css +14 -0
  478. package/dist/panel/style/palette.css +35 -26
  479. package/dist/panel/style/postcss/size-function.d.ts +4 -0
  480. package/dist/panel/style/postcss/size-function.js +24 -0
  481. package/dist/panel/style/radius.css +4 -5
  482. package/dist/panel/style/scheme.css +111 -0
  483. package/dist/panel/style/size.css +3 -0
  484. package/dist/panel/util/Sortable.js +9 -4
  485. package/dist/panel/util/keys.d.ts +24 -0
  486. package/dist/panel/util/keys.js +63 -0
  487. package/dist/panel/util/time.d.ts +12 -0
  488. package/dist/panel/util/time.js +35 -0
  489. package/dist/panel/util/upload-file.d.ts +106 -0
  490. package/dist/panel/util/upload-file.js +165 -0
  491. package/dist/public.d.ts +13 -0
  492. package/dist/public.js +12 -0
  493. package/dist/util/index.d.ts +7 -10
  494. package/dist/util/index.js +7 -8
  495. package/dist/util/object.d.ts +10 -0
  496. package/dist/util/object.js +22 -1
  497. package/dist/util/string.d.ts +17 -0
  498. package/dist/util/string.js +23 -0
  499. package/package.json +12 -8
  500. package/dist/core/pipeline/config-map/build-tree-map.d.ts +0 -4
  501. package/dist/core/pipeline/config-map/build-tree-map.js +0 -30
  502. package/dist/core/prototype/doc.d.ts +0 -31
  503. package/dist/core/prototype/doc.js +0 -118
  504. package/dist/core/prototype/shared/url/augment.d.ts +0 -13
  505. package/dist/core/prototype/shared/url/augment.js +0 -11
  506. package/dist/core/prototype/shared/url/hooks/populate-url.server.d.ts +0 -4
  507. package/dist/core/prototype/shared/url/hooks/populate-url.server.js +0 -120
  508. package/dist/fields/relation/client.d.ts +0 -28
  509. package/dist/fields/relation/client.js +0 -37
  510. package/dist/fields/rich-text/component/styles/rich-text.css +0 -183
  511. package/dist/panel/components/sections/collection/header/Header.svelte +0 -17
  512. package/dist/panel/components/sections/collection/header/Header.svelte.d.ts +0 -3
  513. package/dist/panel/components/sections/collection/header/Separator.svelte +0 -8
  514. package/dist/panel/components/sections/collection/header/Separator.svelte.d.ts +0 -26
  515. package/dist/panel/components/sections/collection/tree/util.d.ts +0 -12
  516. package/dist/panel/components/sections/collection/tree/util.js +0 -22
  517. package/dist/panel/fonts/ChivoMono-Italic-VariableFont_wght.ttf +0 -0
  518. package/dist/panel/fonts/ChivoMono-VariableFont_wght.ttf +0 -0
  519. package/dist/panel/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
  520. package/dist/panel/fonts/Lora-Italic-VariableFont_wght.ttf +0 -0
  521. package/dist/panel/fonts/Lora-VariableFont_wght.ttf +0 -0
  522. package/dist/panel/style/shadow.css +0 -10
  523. package/dist/util/path.d.ts +0 -16
  524. package/dist/util/path.js +0 -19
  525. /package/dist/{panel/components/sections/live → live}/LiveEdit.svelte.d.ts +0 -0
  526. /package/dist/{panel/components/sections/live → live}/Provider.svelte.d.ts +0 -0
@@ -7,21 +7,21 @@ import { getFieldAtPath } from '../../core/fields/util.js';
7
7
  import { buildConfigMap } from '../../core/pipeline/config-map/index.js';
8
8
  import { AUTO_SAVE_DELAY_MS, VERSIONS_STATUS } from '../../core/prototype/shared/versions/constant.js';
9
9
  import { apiUrl, panelUrl } from '../../core/routes/util.js';
10
- import { isJSONContent, richTextJSONToText } from '../../fields/rich-text/index.js';
10
+ import { isJSONContent, richTextJSONToText } from '../../fields/rich-text/json.js';
11
11
  import { isObjectLiteral, omit } from '../../util/object.js';
12
- import { normalizeFieldPath } from '../../util/path.js';
12
+ import { normalizeFieldPath } from '../../util/string.js';
13
13
  import { randomId } from '../../util/random.js';
14
14
  import cloneDeep from 'clone-deep';
15
15
  import { diff } from 'deep-object-diff';
16
16
  import { flatten } from 'flat';
17
17
  import { getContext, setContext } from 'svelte';
18
- import { SvelteURLSearchParams } from 'svelte/reactivity';
19
18
  import { toast } from 'svelte-sonner';
19
+ import { SvelteURLSearchParams } from 'svelte/reactivity';
20
20
  import { t__ } from '../../core/i18n/index.js';
21
- import { moveItem } from '../../util/array.js';
22
21
  import { getValueAtPath, setValueAtPath } from '../../util/object.js';
23
22
  import { snapshot } from '../../util/state.js';
24
23
  import { getAPIProxyContext } from './api-proxy.svelte.js';
24
+ import { duplicateBlock as duplicateBlockIn, fromClipboard, insertBlock, moveBlock as moveBlockIn, parseBlockPath, readList, rebuildPaths, removeBlock, toClipboard, withBlockTypes, withFreshIds } from './blocks-ops.js';
25
25
  import { setErrorsContext } from './errors.svelte.js';
26
26
  import { getLocaleContext } from './locale.svelte.js';
27
27
  import { getTitleContext } from './title.js';
@@ -100,29 +100,6 @@ function createDocumentFormState({ initial, config, readOnly, key, onNestedDocum
100
100
  return doc && initialTitle ? initialTitle : '[untitled]';
101
101
  }
102
102
  }
103
- const rebuildPaths = (items, basePath, parentPath = basePath) => {
104
- return items.map((item, index) => {
105
- // Clone the item
106
- const newItem = cloneDeep(item);
107
- // If item has a path property, update it with parent path
108
- if ('path' in newItem) {
109
- newItem.path = parentPath;
110
- }
111
- // If item is part of an array, update its position
112
- newItem.position = index;
113
- // Process all properties of the item
114
- Object.keys(newItem).forEach((key) => {
115
- // If property is an array of object, process it recursively
116
- if (Array.isArray(newItem[key]) &&
117
- newItem[key].length &&
118
- isObjectLiteral(newItem[key][0])) {
119
- const newParentPath = `${parentPath}.${index}.${key}`;
120
- newItem[key] = rebuildPaths(newItem[key], basePath, newParentPath);
121
- }
122
- });
123
- return newItem;
124
- });
125
- };
126
103
  function setValue(path, value) {
127
104
  doc = setValueAtPath(path, doc, value);
128
105
  if (onDataChange)
@@ -162,16 +139,25 @@ function createDocumentFormState({ initial, config, readOnly, key, onNestedDocum
162
139
  /** update stamp to rerender */
163
140
  stamp = new Date().getTime().toString();
164
141
  };
165
- const addItem = (emptyFields) => {
166
- let items = [...getItems()];
167
- const itemWithPath = {
142
+ /** A new item at the end of a list: the tree's own, or one inside an item, `links.0._children`. */
143
+ const addItem = (emptyFields, atPath = path) => {
144
+ let items = cloneDeep(snapshot(getItems()));
145
+ let target = items;
146
+ if (atPath !== path) {
147
+ const parent = getValueAtPath(atPath.replace(`${path}.`, '').replace(/\._children$/, ''), items);
148
+ if (!parent)
149
+ return;
150
+ parent._children ??= [];
151
+ target = parent._children;
152
+ }
153
+ target.push({
168
154
  ...emptyFields,
169
155
  id: generateTempId(),
170
- path: path,
171
- position: items.length,
156
+ path: atPath,
157
+ position: target.length,
172
158
  _children: []
173
- };
174
- items = items.toSpliced(items.length, 0, itemWithPath);
159
+ });
160
+ items = rebuildPaths(items, path);
175
161
  assignItemsToDoc(items);
176
162
  };
177
163
  const deleteItem = (atPath, index) => {
@@ -233,78 +219,94 @@ function createDocumentFormState({ initial, config, readOnly, key, onNestedDocum
233
219
  }
234
220
  };
235
221
  }
222
+ /**
223
+ * The block operations, document-wide. Paths are normalized, without `:type`; a list path names
224
+ * the array, `sections` or `sections.0.items`. Every view of the blocks calls these.
225
+ */
226
+ const blocks = {
227
+ list(list) {
228
+ return readList(doc, list);
229
+ },
230
+ /** The `BlocksBuilder` a list path names, read through the document for the block types. */
231
+ builder(list) {
232
+ const field = getFieldAtPath(withBlockTypes(list, doc), documentConfig.fields);
233
+ return field && field.type === 'blocks' ? field : undefined;
234
+ },
235
+ /** Whether the list's block set has this type. */
236
+ accepts(list, type) {
237
+ return !!blocks.builder(list)?.get.blocks.some((block) => block.name === type);
238
+ },
239
+ insert(at, block) {
240
+ const change = insertBlock(doc, at, block);
241
+ apply(change);
242
+ return change.id;
243
+ },
244
+ remove(path) {
245
+ const at = parseBlockPath(path);
246
+ errors.deleteAllThatStartWith(`${at.list}.${at.index}.`);
247
+ apply(removeBlock(doc, path));
248
+ },
249
+ duplicate(path) {
250
+ const change = duplicateBlockIn(doc, path);
251
+ apply(change);
252
+ return change.id;
253
+ },
254
+ move(from, to) {
255
+ apply(moveBlockIn(doc, from, to));
256
+ },
257
+ /** Copies the block to the clipboard, and keeps it here for a browser that refuses to read back. */
258
+ async copy(path) {
259
+ const at = parseBlockPath(path);
260
+ const block = readList(doc, at.list)[at.index];
261
+ if (!block)
262
+ return;
263
+ const data = toClipboard(block);
264
+ clipboard = data;
265
+ try {
266
+ await navigator.clipboard.writeText(JSON.stringify(data));
267
+ }
268
+ catch {
269
+ // The in-memory copy above is what paste reads then.
270
+ }
271
+ },
272
+ /** Pastes the copied block at `at`. `null` when there is none, or the list refuses its type. */
273
+ async paste(at) {
274
+ let data = clipboard;
275
+ try {
276
+ data = fromClipboard(await navigator.clipboard.readText()) ?? data;
277
+ }
278
+ catch {
279
+ // Reading the clipboard needs a permission some browsers never give.
280
+ }
281
+ if (!data || !blocks.accepts(at.list, data.type))
282
+ return null;
283
+ const { id: _id, path: _path, position: _position, ...block } = withFreshIds(data.block);
284
+ return blocks.insert(at, block);
285
+ }
286
+ };
287
+ let clipboard = null;
288
+ function apply(change) {
289
+ if (!change.lists.length)
290
+ return;
291
+ doc = change.doc;
292
+ if (onDataChange) {
293
+ for (const list of change.lists) {
294
+ onDataChange({ path: list, value: snapshot(getValueAtPath(list, doc)) });
295
+ }
296
+ }
297
+ }
298
+ /** One list's view of the operations above, for the inline cards. */
236
299
  function useBlocks(path) {
237
- const generateTempId = () => 'temp-' + new Date().getTime().toString();
238
- const getBlocks = () => {
239
- return cloneDeep(getValueAtPath(path, doc)) || [];
240
- };
241
- const assignBlocksToDoc = (blocks) => {
242
- blocks = rebuildPaths(blocks, path);
243
- doc = setValueAtPath(path, doc, blocks);
244
- if (onDataChange)
245
- onDataChange({ path, value: snapshot(blocks) });
246
- };
300
+ const list = normalizeFieldPath(path);
247
301
  const addBlock = (block) => {
248
- const blockWithPath = {
249
- ...block,
250
- id: generateTempId(),
251
- type: block.type,
252
- path: path,
253
- position: block.position
254
- };
255
- let blocks = [...getBlocks()];
256
- blocks = blocks.toSpliced(block.position, 0, blockWithPath);
257
- assignBlocksToDoc(blocks);
258
- };
259
- const deleteBlock = (index) => {
260
- const blocks = [...getBlocks()]
261
- .filter((_, i) => i !== index)
262
- .map((block, index) => ({ ...block, position: index }));
263
- errors.deleteAllThatStartWith(`${path}.${index}.`);
264
- assignBlocksToDoc(blocks);
265
- };
266
- const moveBlock = (from, to) => {
267
- let blocks = moveItem(getBlocks(), from, to);
268
- blocks = blocks.map((block, index) => ({
269
- ...block,
270
- position: index
271
- }));
272
- assignBlocksToDoc(blocks);
302
+ const { position, ...rest } = block;
303
+ const index = position ?? blocks.list(list).length;
304
+ blocks.insert({ list, index }, rest);
273
305
  };
306
+ const deleteBlock = (index) => blocks.remove(`${list}.${index}`);
307
+ const moveBlock = (from, to) => blocks.move(`${list}.${from}`, { list, index: to });
274
308
  const duplicateBlock = (index) => {
275
- // return;
276
- let blocks = [...getBlocks()];
277
- const cloneBlock = (block) => {
278
- // First deep clone the block so duplicate origin
279
- // is not impacted.
280
- const clone = cloneDeep(block);
281
- // Function to reset all nested id properties
282
- // so nested elements are threated as created elements
283
- const resetIds = (obj) => {
284
- if ('id' in obj) {
285
- obj = { ...obj, id: generateTempId() };
286
- }
287
- for (const key of Object.keys(obj)) {
288
- const value = obj[key];
289
- if (Array.isArray(value) && value.length && isObjectLiteral(value[0])) {
290
- obj = {
291
- ...obj,
292
- [key]: value.map((child) => resetIds(child))
293
- };
294
- }
295
- }
296
- return obj;
297
- };
298
- // set temp-ids for nested elements
299
- return resetIds(clone);
300
- };
301
- const blockCopy = cloneBlock(blocks[index]);
302
- blocks.splice(index + 1, 0, blockCopy);
303
- blocks = blocks.map((block, index) => ({
304
- ...block,
305
- position: index
306
- }));
307
- assignBlocksToDoc(blocks);
309
+ blocks.duplicate(`${list}.${index}`);
308
310
  };
309
311
  return {
310
312
  addBlock,
@@ -312,7 +314,7 @@ function createDocumentFormState({ initial, config, readOnly, key, onNestedDocum
312
314
  moveBlock,
313
315
  duplicateBlock,
314
316
  get blocks() {
315
- return getBlocks();
317
+ return blocks.list(list);
316
318
  }
317
319
  };
318
320
  }
@@ -804,6 +806,7 @@ function createDocumentFormState({ initial, config, readOnly, key, onNestedDocum
804
806
  getValue,
805
807
  useBlocks,
806
808
  useTree,
809
+ blocks,
807
810
  nestedLevel,
808
811
  buildPanelActionUrl,
809
812
  readOnly,
@@ -0,0 +1,23 @@
1
+ export declare const NAV_CTX = "rime.nav";
2
+ /**
3
+ * The panel's navigation: folded or not, and how wide, for whatever lines up with its edge.
4
+ *
5
+ * Folded is the user's choice, kept in the browser across visits, open until they fold it. A
6
+ * narrow window folds it regardless, and gives the choice back when it widens.
7
+ */
8
+ export declare function setNavContext(): {
9
+ readonly collapsed: boolean;
10
+ /** A CSS length: the navigation's width as it stands. */
11
+ readonly width: "var(--rz-size-12)" | "var(--rz-size-60)";
12
+ setCollapsed: (value: boolean) => void;
13
+ toggle: () => void;
14
+ };
15
+ export type NavStore = ReturnType<typeof setNavContext>;
16
+ /** The navigation, or nothing on a page without one: the live edit page. */
17
+ export declare const getNavContext: () => {
18
+ readonly collapsed: boolean;
19
+ /** A CSS length: the navigation's width as it stands. */
20
+ readonly width: "var(--rz-size-12)" | "var(--rz-size-60)";
21
+ setCollapsed: (value: boolean) => void;
22
+ toggle: () => void;
23
+ } | undefined;
@@ -0,0 +1,56 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ export const NAV_CTX = 'rime.nav';
3
+ const STORAGE_KEY = 'rz-panel-collapsed';
4
+ /** Under this width the navigation is folded whatever was chosen. */
5
+ const NARROW_PX = 1024;
6
+ /**
7
+ * The panel's navigation: folded or not, and how wide, for whatever lines up with its edge.
8
+ *
9
+ * Folded is the user's choice, kept in the browser across visits, open until they fold it. A
10
+ * narrow window folds it regardless, and gives the choice back when it widens.
11
+ */
12
+ export function setNavContext() {
13
+ let collapsed = $state(true);
14
+ let chosen = null;
15
+ function setCollapsed(value) {
16
+ collapsed = value;
17
+ chosen = value;
18
+ try {
19
+ localStorage.setItem(STORAGE_KEY, String(value));
20
+ }
21
+ catch {
22
+ // A browser without storage keeps the choice for the visit.
23
+ }
24
+ }
25
+ /** The window's width decides first, the choice second, open by default. */
26
+ function fit() {
27
+ collapsed = window.innerWidth < NARROW_PX ? true : (chosen ?? false);
28
+ }
29
+ $effect(() => {
30
+ try {
31
+ const stored = localStorage.getItem(STORAGE_KEY);
32
+ if (stored !== null)
33
+ chosen = stored === 'true';
34
+ }
35
+ catch {
36
+ // No storage, no remembered choice.
37
+ }
38
+ fit();
39
+ window.addEventListener('resize', fit);
40
+ return () => window.removeEventListener('resize', fit);
41
+ });
42
+ const store = {
43
+ get collapsed() {
44
+ return collapsed;
45
+ },
46
+ /** A CSS length: the navigation's width as it stands. */
47
+ get width() {
48
+ return collapsed ? 'var(--rz-size-12)' : 'var(--rz-size-60)';
49
+ },
50
+ setCollapsed,
51
+ toggle: () => setCollapsed(!collapsed)
52
+ };
53
+ return setContext(NAV_CTX, store);
54
+ }
55
+ /** The navigation, or nothing on a page without one: the live edit page. */
56
+ export const getNavContext = () => getContext(NAV_CTX);
@@ -3,21 +3,23 @@ import type { AutoSaves } from '../core/prototype/shared/versions/types.js';
3
3
  import type { GenericDoc } from '../core/prototype/types.js';
4
4
  import type { Snippet } from 'svelte';
5
5
  import { Field } from './components/fields/index.js';
6
+ import RelationInline from '../fields/relation/component/RelationInline.svelte';
7
+ import RichTextInline from '../fields/rich-text/component/RichTextInline.svelte';
8
+ import RenderFields from './components/fields/RenderFields.svelte';
6
9
  import Panel from './components/Root.svelte';
7
10
  import Doc from './components/sections/document/Document.svelte';
8
11
  import Button from './components/ui/button/button.svelte';
9
12
  import Input from './components/ui/input/input.svelte';
10
13
  import SpinLoader from './components/ui/spin-loader/SpinLoader.svelte';
11
14
  import Area from './pages/area/Area.svelte';
12
- import ForgotPassword from './pages/auth/forgot-password/ForgotPassword.svelte';
13
- import ResetPassword from './pages/auth/reset-password/ResetPassword.svelte';
14
- import SignIn from './pages/auth/sign-in/SignIn.svelte';
15
15
  import CollectionDoc from './pages/collection-document/CollectionDocument.svelte';
16
16
  import Collection from './pages/collection/Collection.svelte';
17
17
  import Dashboard from './pages/dashboard/Dashboard.svelte';
18
18
  import Live from './pages/live/Live.svelte';
19
19
  import type { Route } from './types.js';
20
- export { Area, Button, Collection, CollectionDoc, Dashboard, Doc, Field, ForgotPassword, Input, Live, Panel, ResetPassword, SignIn, SpinLoader };
20
+ import { populate } from '../fields/relation/populate.js';
21
+ import { useCommands } from './context/commands.svelte.js';
22
+ export { Area, Button, Collection, CollectionDoc, Dashboard, Doc, Field, Input, Live, Panel, RelationInline, RenderFields, RichTextInline, SpinLoader, populate, useCommands };
21
23
  export declare const CONTEXT: {
22
24
  COLLECTION: symbol;
23
25
  LIVE: symbol;
@@ -27,6 +29,7 @@ export declare const CONTEXT: {
27
29
  TITLE: string;
28
30
  };
29
31
  export type { DocumentFormContext } from './context/documentForm.svelte.js';
32
+ export type { Command } from './context/commands.svelte.js';
30
33
  export type CollectionProps = {
31
34
  data: {
32
35
  docs: GenericDoc[];
@@ -1,4 +1,7 @@
1
1
  import { Field } from './components/fields/index.js';
2
+ import RelationInline from '../fields/relation/component/RelationInline.svelte';
3
+ import RichTextInline from '../fields/rich-text/component/RichTextInline.svelte';
4
+ import RenderFields from './components/fields/RenderFields.svelte';
2
5
  import Panel from './components/Root.svelte';
3
6
  import Doc from './components/sections/document/Document.svelte';
4
7
  import Button from './components/ui/button/button.svelte';
@@ -6,21 +9,24 @@ import Input from './components/ui/input/input.svelte';
6
9
  import SpinLoader from './components/ui/spin-loader/SpinLoader.svelte';
7
10
  import { API_PROXY } from './context/api-proxy.svelte.js';
8
11
  import { COLLECTION_CTX } from './context/collection.svelte.js';
9
- import { LIVE_KEY } from './context/live.svelte.js';
12
+ import { LIVE_KEY } from '../live/context.svelte.js';
10
13
  import { LOCALE_CTX } from './context/locale.svelte.js';
11
14
  import { USER_CTX } from './context/user.svelte.js';
12
15
  import { TITLE_CTX } from './context/title.js';
13
16
  import Area from './pages/area/Area.svelte';
14
- import ForgotPassword from './pages/auth/forgot-password/ForgotPassword.svelte';
15
- import ResetPassword from './pages/auth/reset-password/ResetPassword.svelte';
16
- import SignIn from './pages/auth/sign-in/SignIn.svelte';
17
17
  import CollectionDoc from './pages/collection-document/CollectionDocument.svelte';
18
18
  import Collection from './pages/collection/Collection.svelte';
19
19
  import Dashboard from './pages/dashboard/Dashboard.svelte';
20
20
  import Live from './pages/live/Live.svelte';
21
+ import { populate } from '../fields/relation/populate.js';
22
+ import { useCommands } from './context/commands.svelte.js';
21
23
  export {
22
24
  // Components
23
- Area, Button, Collection, CollectionDoc, Dashboard, Doc, Field, ForgotPassword, Input, Live, Panel, ResetPassword, SignIn, SpinLoader };
25
+ Area, Button, Collection, CollectionDoc, Dashboard, Doc, Field, Input, Live, Panel, RelationInline, RenderFields, RichTextInline, SpinLoader,
26
+ // A block render's relations, resolved as the API answers them
27
+ populate,
28
+ // The commands a component offers while mounted: palette lines, keys
29
+ useCommands };
24
30
  // Context keys, for a plugin/field that needs to read a context rime's own panel sets
25
31
  export const CONTEXT = {
26
32
  COLLECTION: COLLECTION_CTX,
@@ -52,7 +52,22 @@
52
52
  {/if}
53
53
  </AuthForm>
54
54
 
55
- <style>p {
55
+ <style>/* A level: its fill, a hairline, its shadow. raised, float. */
56
+
57
+ /* A well: an input, a track, a dropzone. Its edge shows on hover. */
58
+
59
+ /* The hover tint, laid over the element's own fill. */
60
+
61
+ /* The picked item of a segmented control. */
62
+
63
+ /* The primary button's face: black on light, white on dark. */
64
+
65
+ /* Keyboard focus on a button, a tab, a link. */
66
+
67
+ /* A focused input: an accent edge and a soft halo. */
68
+
69
+ /* An input with an error. */
70
+ p {
56
71
  font-size: var(--rz-text-lg);
57
72
  font-variation-settings: 'wght' 600;
58
73
  font-weight: 600;