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.
- package/dist/adapter-sqlite/auth.server.d.ts +2 -2
- package/dist/adapter-sqlite/columns.server.js +2 -2
- package/dist/adapter-sqlite/connect.server.d.ts +12 -0
- package/dist/adapter-sqlite/connect.server.js +31 -0
- package/dist/adapter-sqlite/generate-schema/index.server.js +11 -3
- package/dist/adapter-sqlite/generate-schema/root.server.d.ts +13 -4
- package/dist/adapter-sqlite/generate-schema/root.server.js +75 -131
- package/dist/adapter-sqlite/generate-schema/templates.server.d.ts +36 -15
- package/dist/adapter-sqlite/generate-schema/templates.server.js +60 -18
- package/dist/adapter-sqlite/index.server.d.ts +13 -5
- package/dist/adapter-sqlite/index.server.js +9 -6
- package/dist/adapter-sqlite/naming.server.d.ts +6 -8
- package/dist/adapter-sqlite/naming.server.js +22 -4
- package/dist/adapter-sqlite/paths.server.d.ts +10 -0
- package/dist/adapter-sqlite/paths.server.js +131 -0
- package/dist/adapter-sqlite/read.server.d.ts +10 -1
- package/dist/adapter-sqlite/read.server.js +22 -10
- package/dist/adapter-sqlite/rows.server.d.ts +1 -1
- package/dist/adapter-sqlite/select.server.d.ts +19 -0
- package/dist/adapter-sqlite/select.server.js +71 -63
- package/dist/adapter-sqlite/table.server.d.ts +2 -2
- package/dist/adapter-sqlite/transform.server.js +33 -3
- package/dist/adapter-sqlite/types.server.d.ts +10 -3
- package/dist/adapter-sqlite/where.server.d.ts +2 -3
- package/dist/adapter-sqlite/where.server.js +19 -1
- package/dist/core/adapter.d.ts +98 -0
- package/dist/core/auth/better-auth/config.server.d.ts +3 -3
- package/dist/core/auth/better-auth/instance.server.d.ts +6 -6
- package/dist/core/auth/handler/index.server.js +1 -1
- package/dist/core/auth/staff/derive.js +1 -1
- package/dist/core/auth/validate-config.js +3 -5
- package/dist/core/boot.server.d.ts +8 -8
- package/dist/core/config/context.server.d.ts +2 -2
- package/dist/core/config/types.d.ts +43 -5
- package/dist/core/config/validate.server.js +34 -51
- package/dist/core/dev/cli/commands/build.js +21 -6
- package/dist/core/dev/cli/commands/init.server.d.ts +2 -1
- package/dist/core/dev/cli/commands/init.server.js +32 -6
- package/dist/core/dev/cli/index.js +1 -0
- package/dist/core/dev/cli/templates/init.d.ts +6 -1
- package/dist/core/dev/cli/templates/init.js +30 -2
- package/dist/core/dev/cli/util/package-manager.server.d.ts +1 -0
- package/dist/core/dev/cli/util/package-manager.server.js +11 -8
- package/dist/core/dev/cli/util/package.server.d.ts +9 -0
- package/dist/core/dev/cli/util/package.server.js +43 -0
- package/dist/core/dev/codegen/routes/common.server.d.ts +2 -0
- package/dist/core/dev/codegen/routes/common.server.js +7 -3
- package/dist/core/dev/codegen/routes/util.server.d.ts +2 -1
- package/dist/core/dev/codegen/routes/util.server.js +4 -1
- package/dist/core/dev/codegen/types/contributions.server.d.ts +3 -2
- package/dist/core/dev/codegen/types/contributions.server.js +10 -3
- package/dist/core/dev/config-memo.server.js +4 -0
- package/dist/core/dev/vite.server.js +4 -3
- package/dist/core/fields/blank.d.ts +21 -0
- package/dist/core/fields/blank.js +37 -0
- package/dist/core/fields/builders/field-builder.d.ts +53 -0
- package/dist/core/fields/builders/field-builder.js +14 -1
- package/dist/core/fields/builders/form-field-builder.d.ts +8 -0
- package/dist/core/fields/builders/form-field-builder.js +14 -1
- package/dist/core/fields/util.d.ts +9 -2
- package/dist/core/fields/util.js +123 -135
- package/dist/core/fields/walk.d.ts +44 -0
- package/dist/core/fields/walk.js +55 -0
- package/dist/core/handler.server.js +4 -0
- package/dist/core/i18n/context.d.ts +5 -0
- package/dist/core/i18n/context.js +6 -0
- package/dist/core/i18n/en/common.d.ts +71 -0
- package/dist/core/i18n/en/common.js +72 -1
- package/dist/core/i18n/en/fields.d.ts +68 -0
- package/dist/core/i18n/en/fields.js +69 -1
- package/dist/core/i18n/fr/common.d.ts +71 -0
- package/dist/core/i18n/fr/common.js +72 -1
- package/dist/core/i18n/fr/fields.d.ts +68 -0
- package/dist/core/i18n/fr/fields.js +69 -1
- package/dist/core/i18n/index.d.ts +29 -3
- package/dist/core/i18n/index.js +55 -29
- package/dist/core/locale/copy.server.js +3 -3
- package/dist/core/logger.server.js +15 -6
- package/dist/core/pipeline/build-document.server.d.ts +3 -0
- package/dist/core/pipeline/build-document.server.js +10 -7
- package/dist/core/pipeline/config-map/index.d.ts +9 -0
- package/dist/core/pipeline/config-map/index.js +16 -50
- package/dist/core/pipeline/hooks/process-document-fields.server.d.ts +3 -0
- package/dist/core/pipeline/hooks/process-document-fields.server.js +48 -12
- package/dist/core/pipeline/hooks/set-default-values.server.d.ts +1 -0
- package/dist/core/pipeline/hooks/set-default-values.server.js +1 -0
- package/dist/core/pipeline/persist/blocks/extract.server.js +1 -1
- package/dist/core/pipeline/persist/relations/extract.server.js +2 -0
- package/dist/core/pipeline/populate-relations.server.d.ts +27 -0
- package/dist/core/pipeline/populate-relations.server.js +42 -0
- package/dist/core/pipeline/run.server.d.ts +17 -6
- package/dist/core/pipeline/run.server.js +44 -30
- package/dist/core/plugins/cache/module.server.d.ts +1 -1
- package/dist/core/plugins/cache/module.server.js +5 -5
- package/dist/core/prototype/area/api.server.js +1 -2
- package/dist/core/prototype/area/definition.js +1 -10
- package/dist/core/prototype/area/definition.server.js +4 -5
- package/dist/core/prototype/area/hooks.server.js +3 -2
- package/dist/core/prototype/area/operations/find.js +2 -0
- package/dist/core/prototype/blank.d.ts +26 -0
- package/dist/core/prototype/blank.js +22 -0
- package/dist/core/prototype/collection/api.server.d.ts +29 -3
- package/dist/core/prototype/collection/api.server.js +47 -4
- package/dist/core/prototype/collection/definition.js +0 -3
- package/dist/core/prototype/collection/hooks/merge-with-blank.server.d.ts +5 -1
- package/dist/core/prototype/collection/hooks/merge-with-blank.server.js +8 -22
- package/dist/core/prototype/collection/hooks.server.js +11 -5
- package/dist/core/prototype/collection/nested/module.server.js +3 -1
- package/dist/core/prototype/collection/nested/tree.d.ts +12 -0
- package/dist/core/prototype/collection/nested/tree.js +42 -0
- package/dist/core/prototype/collection/operations/duplicate.js +1 -1
- package/dist/core/prototype/collection/operations/find-by-id.js +2 -0
- package/dist/core/prototype/collection/operations/find-by-ids.d.ts +19 -0
- package/dist/core/prototype/collection/operations/find-by-ids.js +54 -0
- package/dist/core/prototype/collection/operations/find.js +21 -27
- package/dist/core/prototype/collection/operations/update-slug-by-id.d.ts +20 -0
- package/dist/core/prototype/collection/operations/update-slug-by-id.js +53 -0
- package/dist/core/prototype/collection/rest/index.server.js +3 -1
- package/dist/core/prototype/collection/rest/update-slug-by-id.server.d.ts +2 -0
- package/dist/core/prototype/collection/rest/update-slug-by-id.server.js +20 -0
- package/dist/core/prototype/collection/thumbnail/find-thumbnail.d.ts +2 -1
- package/dist/core/prototype/collection/thumbnail/find-thumbnail.js +4 -27
- package/dist/core/prototype/collection/thumbnail/hooks/set-document-thumbnail.server.js +1 -1
- package/dist/core/prototype/collection/upload/directories/derive.js +3 -1
- package/dist/core/prototype/collection/upload/disk/delete.server.js +1 -2
- package/dist/core/prototype/define.js +2 -0
- package/dist/core/prototype/shared/metas/fields.js +2 -1
- package/dist/core/prototype/shared/title/find-title.d.ts +2 -1
- package/dist/core/prototype/shared/title/find-title.js +5 -28
- package/dist/core/prototype/shared/title/hooks/set-document-title.server.js +1 -1
- package/dist/core/prototype/shared/url/addresses.server.d.ts +36 -0
- package/dist/core/prototype/shared/url/addresses.server.js +119 -0
- package/dist/core/prototype/shared/url/doc-type.d.ts +6 -0
- package/dist/core/prototype/shared/url/doc-type.js +9 -0
- package/dist/core/prototype/shared/url/format.server.d.ts +27 -0
- package/dist/core/prototype/shared/url/format.server.js +38 -0
- package/dist/core/prototype/shared/url/hooks/create-paths.server.d.ts +2 -0
- package/dist/core/prototype/shared/url/hooks/create-paths.server.js +9 -0
- package/dist/core/prototype/shared/url/hooks/detach-paths.server.d.ts +6 -0
- package/dist/core/prototype/shared/url/hooks/detach-paths.server.js +19 -0
- package/dist/core/prototype/shared/url/hooks/index.server.d.ts +5 -1
- package/dist/core/prototype/shared/url/hooks/index.server.js +5 -1
- package/dist/core/prototype/shared/url/hooks/set-area-url.server.d.ts +2 -0
- package/dist/core/prototype/shared/url/hooks/set-area-url.server.js +8 -0
- package/dist/core/prototype/shared/url/hooks/set-live-url.server.d.ts +5 -0
- package/dist/core/prototype/shared/url/hooks/set-live-url.server.js +19 -0
- package/dist/core/prototype/shared/url/hooks/sync-paths.server.d.ts +8 -0
- package/dist/core/prototype/shared/url/hooks/sync-paths.server.js +38 -0
- package/dist/core/prototype/shared/url/refresh.server.d.ts +36 -0
- package/dist/core/prototype/shared/url/refresh.server.js +58 -0
- package/dist/core/prototype/shared/versions/configure.server.js +3 -0
- package/dist/core/routes/context.server.d.ts +2 -1
- package/dist/fields/blocks/component/AddBlockButton.svelte +48 -137
- package/dist/fields/blocks/component/Block.svelte +153 -117
- package/dist/fields/blocks/component/Block.svelte.d.ts +11 -5
- package/dist/fields/blocks/component/BlockActions.svelte +76 -26
- package/dist/fields/blocks/component/BlockActions.svelte.d.ts +3 -0
- package/dist/fields/blocks/component/Blocks.svelte +248 -91
- package/dist/fields/blocks/component/focus/BlocksFocus.svelte +680 -0
- package/dist/fields/blocks/component/focus/BlocksFocus.svelte.d.ts +7 -0
- package/dist/fields/blocks/component/focus/Layers.svelte +145 -0
- package/dist/fields/blocks/component/focus/Layers.svelte.d.ts +9 -0
- package/dist/fields/blocks/component/focus/LayersList.svelte +304 -0
- package/dist/fields/blocks/component/focus/LayersList.svelte.d.ts +10 -0
- package/dist/fields/blocks/component/focus/Palette.svelte +135 -0
- package/dist/fields/blocks/component/focus/Palette.svelte.d.ts +9 -0
- package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte +77 -0
- package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte.d.ts +10 -0
- package/dist/fields/blocks/component/focus/Renders.svelte +302 -0
- package/dist/fields/blocks/component/focus/Renders.svelte.d.ts +11 -0
- package/dist/fields/blocks/component/focus/Stage.svelte +190 -0
- package/dist/fields/blocks/component/focus/Stage.svelte.d.ts +8 -0
- package/dist/fields/blocks/component/focus/StagePlaceholder.svelte +69 -0
- package/dist/fields/blocks/component/focus/StagePlaceholder.svelte.d.ts +3 -0
- package/dist/fields/blocks/component/focus/focus.svelte.d.ts +140 -0
- package/dist/fields/blocks/component/focus/focus.svelte.js +424 -0
- package/dist/fields/blocks/component/picker/BlockPicker.svelte +88 -0
- package/dist/fields/blocks/component/picker/BlockPicker.svelte.d.ts +10 -0
- package/dist/fields/blocks/component/picker/BlockTile.svelte +121 -0
- package/dist/fields/blocks/component/picker/BlockTile.svelte.d.ts +12 -0
- package/dist/fields/blocks/index.d.ts +49 -7
- package/dist/fields/blocks/index.js +61 -12
- package/dist/fields/checkbox/component/Checkbox.svelte +11 -37
- package/dist/fields/checkbox/component/Checkbox.svelte.d.ts +1 -0
- package/dist/fields/combobox/component/ComboBox.svelte +37 -7
- package/dist/fields/combobox/component/combobox.css +26 -10
- package/dist/fields/date/component/Date.svelte +43 -12
- package/dist/fields/group/component/Group.svelte +110 -41
- package/dist/fields/group/index.d.ts +5 -1
- package/dist/fields/group/index.js +10 -2
- package/dist/fields/link/component/Link.svelte +184 -143
- package/dist/fields/link/component/RessourceInput.svelte +26 -24
- package/dist/fields/link/index.d.ts +2 -1
- package/dist/fields/link/module.server.js +2 -4
- package/dist/fields/number/component/Number.svelte +38 -20
- package/dist/fields/number/component/number.css +22 -20
- package/dist/fields/number/index.d.ts +1 -0
- package/dist/fields/radio/component/Radio.svelte +12 -0
- package/dist/fields/radio/index.js +1 -1
- package/dist/fields/relation/component/Relation.svelte +169 -40
- package/dist/fields/relation/component/RelationInline.svelte +258 -0
- package/dist/fields/relation/component/RelationInline.svelte.d.ts +26 -0
- package/dist/fields/relation/component/default/Default.svelte +210 -100
- package/dist/fields/relation/component/default/Default.svelte.d.ts +14 -1
- package/dist/fields/relation/component/types.d.ts +4 -0
- package/dist/fields/relation/component/upload/Browse.svelte +619 -88
- package/dist/fields/relation/component/upload/Browse.svelte.d.ts +10 -2
- package/dist/fields/relation/component/upload/Create.svelte +41 -0
- package/dist/fields/relation/component/upload/Create.svelte.d.ts +13 -0
- package/dist/fields/relation/component/upload/Upload.svelte +287 -101
- package/dist/fields/relation/component/upload/Upload.svelte.d.ts +6 -1
- package/dist/fields/relation/component/upload/upload.css +5 -81
- package/dist/fields/relation/index.d.ts +1 -41
- package/dist/fields/relation/index.js +0 -67
- package/dist/fields/relation/module.server.js +7 -1
- package/dist/fields/relation/populate.d.ts +8 -0
- package/dist/fields/relation/populate.js +49 -0
- package/dist/fields/relation/util.d.ts +69 -0
- package/dist/fields/relation/util.js +103 -0
- package/dist/fields/relation/value.d.ts +25 -0
- package/dist/fields/relation/value.js +27 -0
- package/dist/fields/rich-text/client.d.ts +2 -5
- package/dist/fields/rich-text/client.js +1 -3
- package/dist/fields/rich-text/component/Cell.svelte +1 -1
- package/dist/fields/rich-text/component/RichText.svelte +12 -80
- package/dist/fields/rich-text/component/RichText.svelte.d.ts +1 -1
- package/dist/fields/rich-text/component/RichTextInline.svelte +28 -0
- package/dist/fields/rich-text/component/RichTextInline.svelte.d.ts +11 -0
- package/dist/fields/rich-text/component/bubble-menu/bubble-menu.css +4 -3
- package/dist/fields/rich-text/component/bubble-menu/bubble-menu.svelte +3 -1
- package/dist/fields/rich-text/component/bubble-menu/icon-button/icon-button.css +2 -2
- package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.css +7 -10
- package/dist/fields/rich-text/component/drag-handle/drag-handle.css +0 -2
- package/dist/fields/rich-text/component/styles/editor.css +111 -0
- package/dist/fields/rich-text/component/styles/field.css +71 -0
- package/dist/fields/rich-text/component/suggestion/suggestion.svelte +41 -56
- package/dist/fields/rich-text/core/build-editor-config.js +1 -1
- package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle-plugin.js +29 -3
- package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.d.ts +1 -0
- package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.js +2 -1
- package/dist/fields/rich-text/core/features/fields/fields.css +2 -3
- package/dist/fields/rich-text/core/features/hr/hr.css +4 -4
- package/dist/fields/rich-text/core/features/link/component/link-selector.css +0 -4
- package/dist/fields/rich-text/core/features/link/component/link-selector.svelte +24 -8
- package/dist/fields/rich-text/core/features/resource/resource-extension.js +3 -3
- package/dist/fields/rich-text/core/features/resource/resource.svelte +21 -7
- package/dist/fields/rich-text/core/features/upload/upload-extension.js +3 -4
- package/dist/fields/rich-text/core/features/upload/upload.svelte +21 -9
- package/dist/fields/rich-text/core/rich-text-editor-core.svelte +103 -0
- package/dist/fields/rich-text/core/rich-text-editor-core.svelte.d.ts +15 -0
- package/dist/fields/rich-text/index.d.ts +0 -17
- package/dist/fields/rich-text/index.js +0 -44
- package/dist/fields/rich-text/json.d.ts +18 -0
- package/dist/fields/rich-text/json.js +44 -0
- package/dist/fields/select/component/Select.svelte +67 -28
- package/dist/fields/slug/component/Slug.svelte +26 -53
- package/dist/fields/slug/index.d.ts +1 -0
- package/dist/fields/slug/index.js +1 -1
- package/dist/fields/tabs/component/Tabs.svelte +28 -22
- package/dist/fields/tabs/index.d.ts +4 -1
- package/dist/fields/tabs/index.js +17 -5
- package/dist/fields/text/index.d.ts +1 -0
- package/dist/fields/textarea/component/TextArea.svelte +28 -13
- package/dist/fields/textarea/index.d.ts +1 -0
- package/dist/fields/time/component/Time.svelte +9 -2
- package/dist/fields/toggle/component/Toggle.svelte +8 -25
- package/dist/fields/toggle/component/Toggle.svelte.d.ts +1 -0
- package/dist/fields/toggle/index.d.ts +1 -0
- package/dist/fields/tree/component/AddItemButton.svelte +18 -5
- package/dist/fields/tree/component/Tree.svelte +48 -19
- package/dist/fields/tree/component/TreeBlock.svelte +318 -104
- package/dist/fields/tree/component/TreeBlockActions.svelte +71 -7
- package/dist/fields/tree/component/TreeBlockActions.svelte.d.ts +4 -0
- package/dist/fields/tree/component/props.d.ts +2 -1
- package/dist/fields/tree/index.d.ts +13 -1
- package/dist/fields/tree/index.js +35 -9
- package/dist/fields/types.d.ts +3 -1
- package/dist/index.d.ts +2 -8
- package/dist/index.js +2 -6
- package/dist/{panel/components/sections/live → live}/Consumer.svelte +2 -2
- package/dist/{panel/components/sections/live → live}/Consumer.svelte.d.ts +1 -1
- package/dist/{panel/components/sections/live → live}/LiveEdit.svelte +3 -3
- package/dist/{panel/components/sections/live → live}/Provider.svelte +1 -1
- package/dist/{panel/context/live.svelte.d.ts → live/context.svelte.d.ts} +1 -1
- package/dist/{panel/context/live.svelte.js → live/context.svelte.js} +3 -74
- package/dist/panel/components/Root.svelte +16 -44
- package/dist/panel/components/Root.svelte.d.ts +1 -1
- package/dist/panel/components/fields/Error.svelte +18 -3
- package/dist/panel/components/fields/FieldsPreview.svelte +30 -17
- package/dist/panel/components/fields/FieldsPreviewTrigger.svelte +25 -3
- package/dist/panel/components/fields/Hint.svelte +51 -8
- package/dist/panel/components/fields/Hint.svelte.d.ts +11 -0
- package/dist/panel/components/fields/Label.svelte +2 -0
- package/dist/panel/components/fields/LabelFor.svelte +7 -2
- package/dist/panel/components/fields/RenderFields.svelte +10 -3
- package/dist/panel/components/fields/fieldset.svelte.d.ts +4 -1
- package/dist/panel/components/fields/fieldset.svelte.js +9 -2
- package/dist/panel/components/fields/index.d.ts +1 -0
- package/dist/panel/components/fields/setting.css +82 -0
- package/dist/panel/components/sections/auth/AuthForm.svelte +25 -26
- package/dist/panel/components/sections/collection/Avatar.svelte +61 -0
- package/dist/panel/components/sections/collection/Avatar.svelte.d.ts +9 -0
- package/dist/panel/components/sections/collection/DocStatus.svelte +28 -0
- package/dist/panel/components/sections/collection/DocStatus.svelte.d.ts +7 -0
- package/dist/panel/components/sections/collection/Empty.svelte +3 -3
- package/dist/panel/components/sections/collection/StatusDot.svelte +7 -5
- package/dist/panel/components/sections/collection/When.svelte +33 -0
- package/dist/panel/components/sections/collection/When.svelte.d.ts +8 -0
- package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte +65 -21
- package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte.d.ts +3 -2
- package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte +45 -162
- package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte.d.ts +3 -2
- package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte +151 -0
- package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte.d.ts +17 -0
- package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte +177 -0
- package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte.d.ts +12 -0
- package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte +75 -0
- package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte.d.ts +8 -0
- package/dist/panel/components/sections/collection/folder/Folder.svelte +18 -3
- package/dist/panel/components/sections/collection/folder/FolderEdit.svelte +26 -18
- package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte +98 -58
- package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte.d.ts +0 -1
- package/dist/panel/components/sections/collection/folder/Folders.svelte +60 -0
- package/dist/panel/components/sections/collection/folder/Folders.svelte.d.ts +7 -0
- package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte +31 -71
- package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte.d.ts +1 -0
- package/dist/panel/components/sections/collection/grid/create-directory-dialog/CreateDirectoryDialog.svelte +5 -3
- package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte +250 -37
- package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte.d.ts +2 -0
- package/dist/panel/components/sections/collection/header/ButtonCreate.svelte +43 -18
- package/dist/panel/components/sections/collection/header/ButtonCreate.svelte.d.ts +6 -4
- package/dist/panel/components/sections/collection/header/DisplayMode.svelte +69 -58
- package/dist/panel/components/sections/collection/header/DisplayMode.svelte.d.ts +0 -1
- package/dist/panel/components/sections/collection/header/FilterMenu.svelte +60 -0
- package/dist/panel/components/sections/collection/header/FilterMenu.svelte.d.ts +14 -0
- package/dist/panel/components/sections/collection/header/SearchInput.svelte +17 -26
- package/dist/panel/components/sections/collection/header/SelectUI.svelte +19 -34
- package/dist/panel/components/sections/collection/list/CollectionList.svelte +99 -68
- package/dist/panel/components/sections/collection/list/columns.d.ts +21 -0
- package/dist/panel/components/sections/collection/list/columns.js +23 -0
- package/dist/panel/components/sections/collection/list/header/Header.svelte +99 -51
- package/dist/panel/components/sections/collection/list/row/Row.svelte +165 -82
- package/dist/panel/components/sections/collection/list/row/Row.svelte.d.ts +4 -0
- package/dist/panel/components/sections/collection/tree/CollectionTree.svelte +92 -44
- package/dist/panel/components/sections/collection/tree/CollectionTree.svelte.d.ts +1 -0
- package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte +139 -43
- package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte.d.ts +2 -0
- package/dist/panel/components/sections/collection/upload-thumb-cell/UploadThumbCell.svelte +1 -1
- package/dist/panel/components/sections/commands/CommandButton.svelte +99 -0
- package/dist/panel/components/sections/commands/CommandButton.svelte.d.ts +10 -0
- package/dist/panel/components/sections/commands/CommandPalette.svelte +275 -0
- package/dist/panel/components/sections/commands/CommandPalette.svelte.d.ts +8 -0
- package/dist/panel/components/sections/commands/Commands.svelte +18 -0
- package/dist/panel/components/sections/commands/Commands.svelte.d.ts +9 -0
- package/dist/panel/components/sections/document/AuthAPIKeyDialog.svelte +23 -7
- package/dist/panel/components/sections/document/AuthFooter.svelte +31 -12
- package/dist/panel/components/sections/document/AutoSaveBanner.svelte +24 -7
- package/dist/panel/components/sections/document/ButtonSave.svelte +32 -21
- package/dist/panel/components/sections/document/ButtonSave.svelte.d.ts +5 -5
- package/dist/panel/components/sections/document/ButtonStatus.svelte +68 -20
- package/dist/panel/components/sections/document/ChangeSlugDialog.svelte +199 -0
- package/dist/panel/components/sections/document/ChangeSlugDialog.svelte.d.ts +10 -0
- package/dist/panel/components/sections/document/CurrentlyEdited.svelte +2 -2
- package/dist/panel/components/sections/document/Document.svelte +96 -65
- package/dist/panel/components/sections/document/DocumentChildren.svelte +175 -0
- package/dist/panel/components/sections/document/DocumentChildren.svelte.d.ts +8 -0
- package/dist/panel/components/sections/document/DocumentUrl.svelte +119 -0
- package/dist/panel/components/sections/document/DocumentUrl.svelte.d.ts +9 -0
- package/dist/panel/components/sections/document/Header.svelte +171 -94
- package/dist/panel/components/sections/document/Settings.svelte +255 -110
- package/dist/panel/components/sections/document/Settings.svelte.d.ts +0 -1
- package/dist/panel/components/sections/document/Versions.svelte +5 -3
- package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte +112 -53
- package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte.d.ts +2 -2
- package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte +74 -41
- package/dist/panel/components/sections/live/LiveFloatingUI.svelte +30 -11
- package/dist/panel/components/sections/live/live-edit-panel.css +2 -2
- package/dist/panel/components/sections/page-layout/Page.svelte +13 -1
- package/dist/panel/components/ui/breadcrumb/BreadCrumb.svelte +55 -27
- package/dist/panel/components/ui/button/button.svelte +81 -54
- package/dist/panel/components/ui/button/index.d.ts +7 -3
- package/dist/panel/components/ui/button/index.js +2 -2
- package/dist/panel/components/ui/calendar/calendar.css +27 -27
- package/dist/panel/components/ui/card/card-description.svelte +1 -1
- package/dist/panel/components/ui/card/card.svelte +21 -4
- package/dist/panel/components/ui/card-document/card-document.svelte +24 -12
- package/dist/panel/components/ui/card-resource/card-resource.svelte +26 -8
- package/dist/panel/components/ui/checkbox/checkbox.css +8 -10
- package/dist/panel/components/ui/checkbox/checkbox.svelte.d.ts +1 -1
- package/dist/panel/components/ui/command/command-dialog.css +28 -4
- package/dist/panel/components/ui/command/command-dialog.svelte +4 -1
- package/dist/panel/components/ui/command/command-dialog.svelte.d.ts +2 -0
- package/dist/panel/components/ui/command/command-empty.css +1 -1
- package/dist/panel/components/ui/command/command-group.css +3 -3
- package/dist/panel/components/ui/command/command-input-select.svelte +3 -3
- package/dist/panel/components/ui/command/command-input.svelte +38 -14
- package/dist/panel/components/ui/command/command-input.svelte.d.ts +6 -1
- package/dist/panel/components/ui/command/command-item.css +2 -2
- package/dist/panel/components/ui/command/command-list.css +1 -1
- package/dist/panel/components/ui/command/command-separator.css +1 -1
- package/dist/panel/components/ui/context-menu/context-menu-item.css +2 -2
- package/dist/panel/components/ui/context-menu/context-menu.css +6 -7
- package/dist/panel/components/ui/dialog/dialog-content.css +8 -10
- package/dist/panel/components/ui/dialog/dialog-content.svelte +19 -0
- package/dist/panel/components/ui/dialog/dialog-description.css +1 -1
- package/dist/panel/components/ui/dialog/dialog-footer.svelte +5 -1
- package/dist/panel/components/ui/dialog/dialog-overlay.css +1 -1
- package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +19 -5
- package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +1 -1
- package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.css +6 -4
- package/dist/panel/components/ui/dropdown-menu/dropdown-menu-item.css +1 -1
- package/dist/panel/components/ui/dropdown-menu/dropdown-menu-radio-item.css +1 -1
- package/dist/panel/components/ui/dropdown-menu/dropdown-menu-separator.css +1 -1
- package/dist/panel/components/ui/input/input.svelte +57 -31
- package/dist/panel/components/ui/kbd/Kbd.svelte +90 -0
- package/dist/panel/components/ui/kbd/Kbd.svelte.d.ts +11 -0
- package/dist/panel/components/ui/kbd/index.d.ts +1 -0
- package/dist/panel/components/ui/kbd/index.js +1 -0
- package/dist/panel/components/ui/label/label.css +5 -3
- package/dist/panel/components/ui/language-switcher/LanguageSwitcher.svelte +27 -15
- package/dist/panel/components/ui/nav/Nav.svelte +180 -110
- package/dist/panel/components/ui/nav/Nav.svelte.d.ts +0 -2
- package/dist/panel/components/ui/nav/NavGroup.svelte +87 -73
- package/dist/panel/components/ui/nav/NavItemButton.svelte +69 -29
- package/dist/panel/components/ui/nav/UserButton.svelte +132 -71
- package/dist/panel/components/ui/page-header/PageHeader.svelte +140 -42
- package/dist/panel/components/ui/page-header/PageHeader.svelte.d.ts +8 -1
- package/dist/panel/components/ui/popover/popover-content.css +4 -3
- package/dist/panel/components/ui/radio-group/radio-group.css +4 -6
- package/dist/panel/components/ui/radio-row-group/radio-row-group.css +19 -7
- package/dist/panel/components/ui/scroll-area/scroll-area.css +2 -2
- package/dist/panel/components/ui/separator/separator.svelte +1 -1
- package/dist/panel/components/ui/sheet/index.d.ts +4 -4
- package/dist/panel/components/ui/sheet/index.js +5 -5
- package/dist/panel/components/ui/sheet/sheet.css +50 -11
- package/dist/panel/components/ui/sonner/sonner.css +11 -8
- package/dist/panel/components/ui/switch/switch.css +13 -18
- package/dist/panel/components/ui/switch/switch.svelte.d.ts +1 -1
- package/dist/panel/components/ui/tabs/tabs.css +44 -35
- package/dist/panel/components/ui/tag/tag.svelte +20 -6
- package/dist/panel/components/ui/tooltip/tooltip-content.svelte +14 -4
- package/dist/panel/components/ui/tree/tree-rows.css +146 -0
- package/dist/panel/context/blocks-ops.d.ts +78 -0
- package/dist/panel/context/blocks-ops.js +170 -0
- package/dist/panel/context/collection.svelte.d.ts +28 -0
- package/dist/panel/context/collection.svelte.js +120 -65
- package/dist/panel/context/commands.svelte.d.ts +80 -0
- package/dist/panel/context/commands.svelte.js +108 -0
- package/dist/panel/context/config.svelte.d.ts +2 -2
- package/dist/panel/context/documentForm.svelte.d.ts +34 -2
- package/dist/panel/context/documentForm.svelte.js +106 -103
- package/dist/panel/context/nav.svelte.d.ts +23 -0
- package/dist/panel/context/nav.svelte.js +56 -0
- package/dist/panel/fonts/Geist-VariableFont_wght.ttf +0 -0
- package/dist/panel/fonts/GeistMono-VariableFont_wght.ttf +0 -0
- package/dist/panel/index.d.ts +7 -4
- package/dist/panel/index.js +11 -5
- package/dist/panel/pages/auth/forgot-password/ForgotPassword.svelte +16 -1
- package/dist/panel/pages/collection/CollectionPage.svelte +236 -61
- package/dist/panel/pages/collection/load.server.js +1 -1
- package/dist/panel/pages/dashboard/Dashboard.svelte +135 -90
- package/dist/panel/pages/dashboard/DashboardCard.svelte +109 -0
- package/dist/panel/pages/dashboard/DashboardCard.svelte.d.ts +14 -0
- package/dist/panel/pages/dashboard/DashboardCollection.svelte +180 -57
- package/dist/panel/pages/dashboard/DashboardCollection.svelte.d.ts +1 -0
- package/dist/panel/pages/dashboard/DashboardRow.svelte +93 -0
- package/dist/panel/pages/dashboard/DashboardRow.svelte.d.ts +16 -0
- package/dist/panel/pages/dashboard/load.server.js +49 -25
- package/dist/panel/pages/dashboard/time.d.ts +19 -0
- package/dist/panel/pages/dashboard/time.js +29 -0
- package/dist/panel/pages/dashboard/types.d.ts +9 -2
- package/dist/panel/pages/live/Live.svelte +53 -50
- package/dist/panel/public.d.ts +4 -0
- package/dist/panel/public.js +6 -0
- package/dist/panel/style/font.css +21 -32
- package/dist/panel/style/index.css +191 -122
- package/dist/panel/style/mixins/index.css +14 -0
- package/dist/panel/style/palette.css +35 -26
- package/dist/panel/style/postcss/size-function.d.ts +4 -0
- package/dist/panel/style/postcss/size-function.js +24 -0
- package/dist/panel/style/radius.css +4 -5
- package/dist/panel/style/scheme.css +111 -0
- package/dist/panel/style/size.css +3 -0
- package/dist/panel/util/Sortable.js +9 -4
- package/dist/panel/util/keys.d.ts +24 -0
- package/dist/panel/util/keys.js +63 -0
- package/dist/panel/util/time.d.ts +12 -0
- package/dist/panel/util/time.js +35 -0
- package/dist/panel/util/upload-file.d.ts +106 -0
- package/dist/panel/util/upload-file.js +165 -0
- package/dist/public.d.ts +13 -0
- package/dist/public.js +12 -0
- package/dist/util/index.d.ts +7 -10
- package/dist/util/index.js +7 -8
- package/dist/util/object.d.ts +10 -0
- package/dist/util/object.js +22 -1
- package/dist/util/string.d.ts +17 -0
- package/dist/util/string.js +23 -0
- package/package.json +12 -8
- package/dist/core/pipeline/config-map/build-tree-map.d.ts +0 -4
- package/dist/core/pipeline/config-map/build-tree-map.js +0 -30
- package/dist/core/prototype/doc.d.ts +0 -31
- package/dist/core/prototype/doc.js +0 -118
- package/dist/core/prototype/shared/url/augment.d.ts +0 -13
- package/dist/core/prototype/shared/url/augment.js +0 -11
- package/dist/core/prototype/shared/url/hooks/populate-url.server.d.ts +0 -4
- package/dist/core/prototype/shared/url/hooks/populate-url.server.js +0 -120
- package/dist/fields/relation/client.d.ts +0 -28
- package/dist/fields/relation/client.js +0 -37
- package/dist/fields/rich-text/component/styles/rich-text.css +0 -183
- package/dist/panel/components/sections/collection/header/Header.svelte +0 -17
- package/dist/panel/components/sections/collection/header/Header.svelte.d.ts +0 -3
- package/dist/panel/components/sections/collection/header/Separator.svelte +0 -8
- package/dist/panel/components/sections/collection/header/Separator.svelte.d.ts +0 -26
- package/dist/panel/components/sections/collection/tree/util.d.ts +0 -12
- package/dist/panel/components/sections/collection/tree/util.js +0 -22
- package/dist/panel/fonts/ChivoMono-Italic-VariableFont_wght.ttf +0 -0
- package/dist/panel/fonts/ChivoMono-VariableFont_wght.ttf +0 -0
- package/dist/panel/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
- package/dist/panel/fonts/Lora-Italic-VariableFont_wght.ttf +0 -0
- package/dist/panel/fonts/Lora-VariableFont_wght.ttf +0 -0
- package/dist/panel/style/shadow.css +0 -10
- package/dist/util/path.d.ts +0 -16
- package/dist/util/path.js +0 -19
- /package/dist/{panel/components/sections/live → live}/LiveEdit.svelte.d.ts +0 -0
- /package/dist/{panel/components/sections/live → live}/Provider.svelte.d.ts +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FormFieldBuilder } from '../../core/fields/builders/form-field-builder.js';
|
|
2
|
-
import { hasProps, isObjectLiteral } from '../../util/object.js';
|
|
3
2
|
import { capitalize } from '../../util/string.js';
|
|
4
3
|
import { ensureRelationExists } from 'rimecms/fields/relation/module';
|
|
5
4
|
import dedent from 'dedent';
|
|
@@ -60,69 +59,3 @@ export class RelationFieldBuilder extends FormFieldBuilder {
|
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
export const relation = (name) => new RelationFieldBuilder(name);
|
|
63
|
-
/**
|
|
64
|
-
* Checks if a relation value is resolved (contains the actual referenced document).
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* // Returns true for a resolved relation
|
|
68
|
-
* isRelationResolved({ title: 'Home Page', _prototype: 'collection', _type: 'pages' });
|
|
69
|
-
*/
|
|
70
|
-
export const isRelationResolved = (value) => {
|
|
71
|
-
return value && isObjectLiteral(value) && hasProps(['title', '_prototype', '_type'], value);
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Checks if a relation value is a reference (contains only the relationTo and documentId).
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* // Returns true for a relation reference
|
|
78
|
-
* isRelationRef({ relationTo: 'pages', documentId: '123' });
|
|
79
|
-
*/
|
|
80
|
-
export const isRelationRef = (value) => typeof value === 'object' &&
|
|
81
|
-
value !== null &&
|
|
82
|
-
typeof value.relationTo === 'string' &&
|
|
83
|
-
typeof value.documentId === 'string';
|
|
84
|
-
/**
|
|
85
|
-
* Checks if a relation value is unresolved (contains only reference information).
|
|
86
|
-
*
|
|
87
|
-
* @example
|
|
88
|
-
* // Returns true for an unresolved relation
|
|
89
|
-
* isRelationUnresolved({ relationTo: 'pages', documentId: '123' });
|
|
90
|
-
*/
|
|
91
|
-
export const isRelationUnresolved = (value) => {
|
|
92
|
-
return value && isObjectLiteral(value) && hasProps(['relationTo', 'documentId'], value);
|
|
93
|
-
};
|
|
94
|
-
/**
|
|
95
|
-
* Resolves a relation reference to the actual document it points to.
|
|
96
|
-
*
|
|
97
|
-
* @example
|
|
98
|
-
* // Resolves a relation reference to the actual document
|
|
99
|
-
* const doc = await resolveRelationRef({ relationTo: 'pages', documentId: '123' });
|
|
100
|
-
*/
|
|
101
|
-
export async function resolveRelationRef(item) {
|
|
102
|
-
if (isRelationRef(item)) {
|
|
103
|
-
return fetch(`api/${item.relationTo}/${item.documentId}`)
|
|
104
|
-
.then((r) => r.json())
|
|
105
|
-
.then((r) => r.doc);
|
|
106
|
-
}
|
|
107
|
-
if (typeof item === 'string') {
|
|
108
|
-
throw new Error(`Cannot resolve relation from a bare id ("${item}") — missing "relationTo". ` +
|
|
109
|
-
`resolveRelationRef only works on populated docs or { relationTo, documentId } objects.`);
|
|
110
|
-
}
|
|
111
|
-
if (isRelationResolved(item)) {
|
|
112
|
-
return item;
|
|
113
|
-
}
|
|
114
|
-
throw new Error(`Unrecognized relation shape: ${JSON.stringify(item)}`);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Resolves a relation field value to the actual documents it points to.
|
|
118
|
-
*
|
|
119
|
-
* @example
|
|
120
|
-
* // Resolves a relation value to the actual documents
|
|
121
|
-
* const docs = await resolveRelation([{ relationTo: 'pages', documentId: '123' }]);
|
|
122
|
-
*/
|
|
123
|
-
export async function resolveRelation(value) {
|
|
124
|
-
if (value === null || value === undefined)
|
|
125
|
-
return value;
|
|
126
|
-
const items = Array.isArray(value) ? value : [value];
|
|
127
|
-
return Promise.all(items.map((item) => resolveRelationRef(item)));
|
|
128
|
-
}
|
|
@@ -9,9 +9,15 @@ import { toKebabCase } from '../../util/string.js';
|
|
|
9
9
|
export const ensureRelationExists = async (value, { config }) => {
|
|
10
10
|
const output = [];
|
|
11
11
|
const retrieveRelation = async (id) => {
|
|
12
|
+
// Forward auth, not the incoming body's headers: Bun's fetch keeps a `content-length` on a
|
|
13
|
+
// bodiless GET (Node's drops it), and the server then waits for a body that never comes.
|
|
14
|
+
const headers = new Headers(getRequestEvent().request.headers);
|
|
15
|
+
for (const name of ['content-length', 'content-type', 'transfer-encoding']) {
|
|
16
|
+
headers.delete(name);
|
|
17
|
+
}
|
|
12
18
|
const [err, response] = await trycatchFetch(`${env.PUBLIC_RIME_URL}/api/${toKebabCase(config.relationTo)}/${id}?${PARAMS.SELECT}=id`, {
|
|
13
19
|
method: 'GET',
|
|
14
|
-
headers
|
|
20
|
+
headers
|
|
15
21
|
});
|
|
16
22
|
if (err)
|
|
17
23
|
return null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relations and resource links resolved at depth 1, the shape the API answers with.
|
|
3
|
+
* A resolved document is returned as is; a relation that cannot be fetched stays a reference.
|
|
4
|
+
*/
|
|
5
|
+
export declare function populate<T>(value: T): Promise<T>;
|
|
6
|
+
export declare namespace populate {
|
|
7
|
+
var clear: () => void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { API_PREFIX } from '../../core/routes/constants.js';
|
|
2
|
+
import { isObjectLiteral } from '../../util/object.js';
|
|
3
|
+
import { toKebabCase } from '../../util/string.js';
|
|
4
|
+
const cache = new Map();
|
|
5
|
+
/** One request per document for the page's life. */
|
|
6
|
+
function fetchDoc(slug, id) {
|
|
7
|
+
const key = `${slug}/${id}`;
|
|
8
|
+
if (!cache.has(key)) {
|
|
9
|
+
const url = `${API_PREFIX}/${toKebabCase(slug)}/${id}?depth=1`;
|
|
10
|
+
cache.set(key, fetch(url)
|
|
11
|
+
.then((response) => response.json())
|
|
12
|
+
.then((response) => response?.doc ?? null)
|
|
13
|
+
.catch((error) => {
|
|
14
|
+
console.error(error);
|
|
15
|
+
return null;
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
return cache.get(key);
|
|
19
|
+
}
|
|
20
|
+
const isLink = (value) => 'value' in value &&
|
|
21
|
+
'target' in value &&
|
|
22
|
+
'type' in value &&
|
|
23
|
+
!['url', 'email', 'tel', 'anchor'].includes(value.type);
|
|
24
|
+
const isRelation = (value) => 'documentId' in value && 'relationTo' in value;
|
|
25
|
+
/**
|
|
26
|
+
* Relations and resource links resolved at depth 1, the shape the API answers with.
|
|
27
|
+
* A resolved document is returned as is; a relation that cannot be fetched stays a reference.
|
|
28
|
+
*/
|
|
29
|
+
export async function populate(value) {
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
return Promise.all(value.map((item) => populate(item)));
|
|
32
|
+
}
|
|
33
|
+
if (!isObjectLiteral(value))
|
|
34
|
+
return value;
|
|
35
|
+
if (isLink(value)) {
|
|
36
|
+
if (!value.type || !value.value)
|
|
37
|
+
return value;
|
|
38
|
+
const doc = await fetchDoc(value.type, value.value);
|
|
39
|
+
return doc?.url ? { ...value, url: doc.url } : value;
|
|
40
|
+
}
|
|
41
|
+
if (isRelation(value)) {
|
|
42
|
+
if ('livePreview' in value)
|
|
43
|
+
return value.livePreview;
|
|
44
|
+
return ((await fetchDoc(value.relationTo, value.documentId)) ?? value);
|
|
45
|
+
}
|
|
46
|
+
const entries = await Promise.all(Object.entries(value).map(async ([key, item]) => [key, await populate(item)]));
|
|
47
|
+
return Object.fromEntries(entries);
|
|
48
|
+
}
|
|
49
|
+
populate.clear = () => cache.clear();
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { RelationRef, RelationValue } from '../types.js';
|
|
2
|
+
import type { Relation } from './index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Checks if a relation field's value is populated with full documents.
|
|
5
|
+
*
|
|
6
|
+
* A relation is considered populated if it is an array of objects that do not
|
|
7
|
+
* contain only the relation identifiers (`id`, `relationTo`, `documentId`).
|
|
8
|
+
* If the value is a string or an array of relation identifier objects,
|
|
9
|
+
* it is considered not populated.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // Returns: false
|
|
13
|
+
* isRelationPopulated('7674e91b-598a-4a72-a5cd-9594736a34dd');
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // Returns: false
|
|
17
|
+
* isRelationPopulated([]);
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* // Returns: false
|
|
21
|
+
* isRelationPopulated([
|
|
22
|
+
* {
|
|
23
|
+
* id: '7674e91b-598a-4a72-a5cd-9594736a34dd',
|
|
24
|
+
* relationTo: 'articles',
|
|
25
|
+
* documentId: 'b674e91b-598a-4a72-a5cd-9594736a34dd'
|
|
26
|
+
* }
|
|
27
|
+
* ]);
|
|
28
|
+
*/
|
|
29
|
+
export declare const isRelationPopulated: <T>(value: RelationValue<T>) => value is T[];
|
|
30
|
+
/**
|
|
31
|
+
* Checks if a relation value is resolved (contains the actual referenced document).
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* // Returns true for a resolved relation
|
|
35
|
+
* isRelationResolved({ title: 'Home Page', _prototype: 'collection', _type: 'pages' });
|
|
36
|
+
*/
|
|
37
|
+
export declare const isRelationResolved: <T>(value: any) => value is T;
|
|
38
|
+
/**
|
|
39
|
+
* Checks if a relation value is a reference (contains only the relationTo and documentId).
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Returns true for a relation reference
|
|
43
|
+
* isRelationRef({ relationTo: 'pages', documentId: '123' });
|
|
44
|
+
*/
|
|
45
|
+
export declare const isRelationRef: (value: unknown) => value is RelationRef;
|
|
46
|
+
/**
|
|
47
|
+
* Checks if a relation value is unresolved (contains only reference information).
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* // Returns true for an unresolved relation
|
|
51
|
+
* isRelationUnresolved({ relationTo: 'pages', documentId: '123' });
|
|
52
|
+
*/
|
|
53
|
+
export declare const isRelationUnresolved: (value: any) => value is Omit<Relation, "path" | "position" | "ownerId">;
|
|
54
|
+
/**
|
|
55
|
+
* Resolves a relation reference to the actual document it points to.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* // Resolves a relation reference to the actual document
|
|
59
|
+
* const doc = await resolveRelationRef({ relationTo: 'pages', documentId: '123' });
|
|
60
|
+
*/
|
|
61
|
+
export declare function resolveRelationRef<T>(item: T | RelationRef | string): Promise<T>;
|
|
62
|
+
/**
|
|
63
|
+
* Resolves a relation field value to the actual documents it points to.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* // Resolves a relation value to the actual documents
|
|
67
|
+
* const docs = await resolveRelation([{ relationTo: 'pages', documentId: '123' }]);
|
|
68
|
+
*/
|
|
69
|
+
export declare function resolveRelation<T>(value: RelationValue<T> | null | undefined): Promise<T[] | null | undefined>;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { hasProps, isObjectLiteral } from '../../util/object.js';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a relation field's value is populated with full documents.
|
|
4
|
+
*
|
|
5
|
+
* A relation is considered populated if it is an array of objects that do not
|
|
6
|
+
* contain only the relation identifiers (`id`, `relationTo`, `documentId`).
|
|
7
|
+
* If the value is a string or an array of relation identifier objects,
|
|
8
|
+
* it is considered not populated.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // Returns: false
|
|
12
|
+
* isRelationPopulated('7674e91b-598a-4a72-a5cd-9594736a34dd');
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // Returns: false
|
|
16
|
+
* isRelationPopulated([]);
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // Returns: false
|
|
20
|
+
* isRelationPopulated([
|
|
21
|
+
* {
|
|
22
|
+
* id: '7674e91b-598a-4a72-a5cd-9594736a34dd',
|
|
23
|
+
* relationTo: 'articles',
|
|
24
|
+
* documentId: 'b674e91b-598a-4a72-a5cd-9594736a34dd'
|
|
25
|
+
* }
|
|
26
|
+
* ]);
|
|
27
|
+
*/
|
|
28
|
+
export const isRelationPopulated = (value) => {
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
if (value.length === 0)
|
|
31
|
+
return false;
|
|
32
|
+
return value.every((v) => {
|
|
33
|
+
return isObjectLiteral(v) && !hasProps(['id', 'relationTo', 'documentId'], v);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return typeof value !== 'string';
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Checks if a relation value is resolved (contains the actual referenced document).
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Returns true for a resolved relation
|
|
43
|
+
* isRelationResolved({ title: 'Home Page', _prototype: 'collection', _type: 'pages' });
|
|
44
|
+
*/
|
|
45
|
+
export const isRelationResolved = (value) => {
|
|
46
|
+
return value && isObjectLiteral(value) && hasProps(['title', '_prototype', '_type'], value);
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Checks if a relation value is a reference (contains only the relationTo and documentId).
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* // Returns true for a relation reference
|
|
53
|
+
* isRelationRef({ relationTo: 'pages', documentId: '123' });
|
|
54
|
+
*/
|
|
55
|
+
export const isRelationRef = (value) => typeof value === 'object' &&
|
|
56
|
+
value !== null &&
|
|
57
|
+
typeof value.relationTo === 'string' &&
|
|
58
|
+
typeof value.documentId === 'string';
|
|
59
|
+
/**
|
|
60
|
+
* Checks if a relation value is unresolved (contains only reference information).
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* // Returns true for an unresolved relation
|
|
64
|
+
* isRelationUnresolved({ relationTo: 'pages', documentId: '123' });
|
|
65
|
+
*/
|
|
66
|
+
export const isRelationUnresolved = (value) => {
|
|
67
|
+
return value && isObjectLiteral(value) && hasProps(['relationTo', 'documentId'], value);
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Resolves a relation reference to the actual document it points to.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* // Resolves a relation reference to the actual document
|
|
74
|
+
* const doc = await resolveRelationRef({ relationTo: 'pages', documentId: '123' });
|
|
75
|
+
*/
|
|
76
|
+
export async function resolveRelationRef(item) {
|
|
77
|
+
if (isRelationRef(item)) {
|
|
78
|
+
return fetch(`api/${item.relationTo}/${item.documentId}`)
|
|
79
|
+
.then((r) => r.json())
|
|
80
|
+
.then((r) => r.doc);
|
|
81
|
+
}
|
|
82
|
+
if (typeof item === 'string') {
|
|
83
|
+
throw new Error(`Cannot resolve relation from a bare id ("${item}") — missing "relationTo". ` +
|
|
84
|
+
`resolveRelationRef only works on populated docs or { relationTo, documentId } objects.`);
|
|
85
|
+
}
|
|
86
|
+
if (isRelationResolved(item)) {
|
|
87
|
+
return item;
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`Unrecognized relation shape: ${JSON.stringify(item)}`);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Resolves a relation field value to the actual documents it points to.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* // Resolves a relation value to the actual documents
|
|
96
|
+
* const docs = await resolveRelation([{ relationTo: 'pages', documentId: '123' }]);
|
|
97
|
+
*/
|
|
98
|
+
export async function resolveRelation(value) {
|
|
99
|
+
if (value === null || value === undefined)
|
|
100
|
+
return value;
|
|
101
|
+
const items = Array.isArray(value) ? value : [value];
|
|
102
|
+
return Promise.all(items.map((item) => resolveRelationRef(item)));
|
|
103
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { GenericDoc } from '../../core/prototype/types.js';
|
|
2
|
+
import type { Relation } from './index.js';
|
|
3
|
+
/** A related document as the field holds it before it is written: its id, and its row if any. */
|
|
4
|
+
export type RelationItem = {
|
|
5
|
+
documentId: string;
|
|
6
|
+
id?: string;
|
|
7
|
+
livePreview?: GenericDoc;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* The value a relation field writes for these documents, in this order.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* toRelationValue([{ documentId: 'a' }, { documentId: 'b', id: 'r1' }], { relationTo: 'medias', path: 'photos' })
|
|
14
|
+
* // [{ relationTo: 'medias', path: 'photos', position: 0, documentId: 'a' },
|
|
15
|
+
* // { id: 'r1', relationTo: 'medias', path: 'photos', position: 1, documentId: 'b' }]
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* `locale` is set on a localized field; `livePreview` rides along in a live-edit form.
|
|
19
|
+
*/
|
|
20
|
+
export declare function toRelationValue(items: RelationItem[], args: {
|
|
21
|
+
relationTo: string;
|
|
22
|
+
path: string;
|
|
23
|
+
locale?: string;
|
|
24
|
+
live?: boolean;
|
|
25
|
+
}): Omit<Relation, 'ownerId'>[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The value a relation field writes for these documents, in this order.
|
|
3
|
+
*
|
|
4
|
+
* ```ts
|
|
5
|
+
* toRelationValue([{ documentId: 'a' }, { documentId: 'b', id: 'r1' }], { relationTo: 'medias', path: 'photos' })
|
|
6
|
+
* // [{ relationTo: 'medias', path: 'photos', position: 0, documentId: 'a' },
|
|
7
|
+
* // { id: 'r1', relationTo: 'medias', path: 'photos', position: 1, documentId: 'b' }]
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* `locale` is set on a localized field; `livePreview` rides along in a live-edit form.
|
|
11
|
+
*/
|
|
12
|
+
export function toRelationValue(items, args) {
|
|
13
|
+
return items.map((item, index) => {
|
|
14
|
+
const relation = {
|
|
15
|
+
id: item.id,
|
|
16
|
+
relationTo: args.relationTo,
|
|
17
|
+
path: args.path,
|
|
18
|
+
position: index,
|
|
19
|
+
documentId: item.documentId
|
|
20
|
+
};
|
|
21
|
+
if (args.locale)
|
|
22
|
+
relation.locale = args.locale;
|
|
23
|
+
if (args.live && item.livePreview)
|
|
24
|
+
relation.livePreview = item.livePreview;
|
|
25
|
+
return relation;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
@@ -5,11 +5,8 @@ import { type LinkFeatureOptions } from './core/features/link/index.js';
|
|
|
5
5
|
import type { ResourceFeatureExtensionOptions } from './core/features/resource/resource-extension.js';
|
|
6
6
|
import type { RichTextResource } from './core/features/resource/types.js';
|
|
7
7
|
import type { UploadFeatureExtensionOptions } from './core/features/upload/upload-extension.js';
|
|
8
|
-
import RenderRichText from './core/render-rich-text.svelte';
|
|
9
8
|
import SvelteNodeViewRenderer from './core/svelte/node-view-renderer.svelte';
|
|
10
9
|
import NodeViewWrapper from './core/svelte/node-view-wrapper.svelte';
|
|
11
|
-
import type { RichTextNodeRenderer, RichTextNodeRendererProps } from './core/types.js';
|
|
12
|
-
import { richTextJSONToText } from './index.js';
|
|
13
10
|
export declare const fields: (args: FieldsFeatureOptions) => import("./core/types.js").RichTextFeature;
|
|
14
11
|
export declare const bold: () => import("./core/types.js").RichTextFeature;
|
|
15
12
|
export declare const bulletList: () => import("./core/types.js").RichTextFeature;
|
|
@@ -22,5 +19,5 @@ export declare const blockquote: () => import("./core/types.js").RichTextFeature
|
|
|
22
19
|
export declare const italic: () => import("./core/types.js").RichTextFeature;
|
|
23
20
|
export declare const upload: (args: UploadFeatureExtensionOptions) => import("./core/types.js").RichTextFeature;
|
|
24
21
|
export declare const resource: (args: ResourceFeatureExtensionOptions) => import("./core/types.js").RichTextFeature;
|
|
25
|
-
export { NodeViewWrapper,
|
|
26
|
-
export type { JSONContent,
|
|
22
|
+
export { NodeViewWrapper, SvelteNodeViewRenderer };
|
|
23
|
+
export type { JSONContent, RichTextResource };
|
|
@@ -10,10 +10,8 @@ import { OrderedListFeature } from './core/features/ordered-list.js';
|
|
|
10
10
|
import { ParagraphFeature } from './core/features/paragraph.js';
|
|
11
11
|
import { ResourceFeature } from './core/features/resource/index.js';
|
|
12
12
|
import { UploadFeature } from './core/features/upload/index.js';
|
|
13
|
-
import RenderRichText from './core/render-rich-text.svelte';
|
|
14
13
|
import SvelteNodeViewRenderer from './core/svelte/node-view-renderer.svelte';
|
|
15
14
|
import NodeViewWrapper from './core/svelte/node-view-wrapper.svelte';
|
|
16
|
-
import { richTextJSONToText } from './index.js';
|
|
17
15
|
export const fields = (args) => FieldsFeature(args);
|
|
18
16
|
export const bold = () => BoldFeature;
|
|
19
17
|
export const bulletList = () => BulletListFeature;
|
|
@@ -26,4 +24,4 @@ export const blockquote = () => BlockquoteFeature;
|
|
|
26
24
|
export const italic = () => ItalicFeature;
|
|
27
25
|
export const upload = (args) => UploadFeature(args);
|
|
28
26
|
export const resource = (args) => ResourceFeature(args);
|
|
29
|
-
export { NodeViewWrapper,
|
|
27
|
+
export { NodeViewWrapper, SvelteNodeViewRenderer };
|
|
@@ -1,61 +1,15 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { fieldset } from '../../../panel/components/fields/fieldset.svelte.js';
|
|
3
3
|
import { Field } from '../../../panel/components/fields/index.js';
|
|
4
|
-
import {
|
|
5
|
-
import { Editor, type JSONContent } from '@tiptap/core';
|
|
6
|
-
import { onMount } from 'svelte';
|
|
7
|
-
import { buildEditorConfig } from '../core/build-editor-config.js';
|
|
4
|
+
import type { JSONContent } from '@tiptap/core';
|
|
8
5
|
import { defaultFeatures } from '../core/features/index.js';
|
|
9
|
-
import
|
|
10
|
-
import { hasSuggestion } from '../util.js';
|
|
11
|
-
import EditorBubbleMenu from './bubble-menu/bubble-menu.svelte';
|
|
12
|
-
import { setRichTextContext } from './context.svelte.js';
|
|
13
|
-
import DragHandler from './drag-handle/drag-handle.svelte';
|
|
6
|
+
import RichTextEditorCore from '../core/rich-text-editor-core.svelte';
|
|
14
7
|
import type { RichTextFieldProps } from './props.js';
|
|
15
|
-
import './styles/
|
|
16
|
-
import Suggestion from './suggestion/suggestion.svelte';
|
|
8
|
+
import './styles/field.css';
|
|
17
9
|
|
|
18
10
|
const { path, config, form, standAlone, class: className }: RichTextFieldProps = $props();
|
|
19
11
|
|
|
20
|
-
let element: HTMLElement;
|
|
21
|
-
const key = $derived(`richtext-${path}`);
|
|
22
|
-
|
|
23
|
-
let editor = $state<Editor>();
|
|
24
|
-
let features = $state<RichTextFeature[]>([]);
|
|
25
12
|
const field = $derived(form.useField<JSONContent>(path, config));
|
|
26
|
-
const instanceId = random.randomId(8);
|
|
27
|
-
|
|
28
|
-
const ctx = setRichTextContext(instanceId);
|
|
29
|
-
|
|
30
|
-
const withSuggestion = $derived(hasSuggestion(config.get.features || defaultFeatures));
|
|
31
|
-
|
|
32
|
-
onMount(() => {
|
|
33
|
-
// Build editor configuration
|
|
34
|
-
const richTextEditorConfig = buildEditorConfig({
|
|
35
|
-
features: config.get.features || defaultFeatures
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
features = richTextEditorConfig.features;
|
|
39
|
-
editor = new Editor({
|
|
40
|
-
...richTextEditorConfig.tiptap,
|
|
41
|
-
element,
|
|
42
|
-
editable: field.editable
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
if (field.value?.content) {
|
|
46
|
-
try {
|
|
47
|
-
editor.commands.setContent(field.value.content);
|
|
48
|
-
} catch (err) {
|
|
49
|
-
editor.commands.setContent('');
|
|
50
|
-
console.log(err);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Update field value when editor content changes
|
|
55
|
-
editor.on('update', ({ editor }) => {
|
|
56
|
-
field.value = editor.getJSON();
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
13
|
</script>
|
|
60
14
|
|
|
61
15
|
<fieldset
|
|
@@ -67,25 +21,15 @@
|
|
|
67
21
|
|
|
68
22
|
<Field.Error error={field.error} />
|
|
69
23
|
|
|
70
|
-
<
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
{#if withSuggestion}
|
|
81
|
-
<Suggestion {editor} {features} />
|
|
82
|
-
{/if}
|
|
83
|
-
|
|
84
|
-
{#key key}
|
|
85
|
-
<EditorBubbleMenu {features} {editor} {path} context={ctx} />
|
|
86
|
-
{/key}
|
|
87
|
-
{/if}
|
|
88
|
-
</div>
|
|
24
|
+
<RichTextEditorCore
|
|
25
|
+
{path}
|
|
26
|
+
features={config.get.features || defaultFeatures}
|
|
27
|
+
value={field.value}
|
|
28
|
+
editable={field.editable}
|
|
29
|
+
error={!!field.error}
|
|
30
|
+
class={className}
|
|
31
|
+
onUpdate={(json) => (field.value = json)}
|
|
32
|
+
/>
|
|
89
33
|
|
|
90
34
|
{#if !standAlone}
|
|
91
35
|
<Field.Hint {config} />
|
|
@@ -93,18 +37,6 @@
|
|
|
93
37
|
</fieldset>
|
|
94
38
|
|
|
95
39
|
<style>
|
|
96
|
-
.rz-rich-text__editor-wrapper {
|
|
97
|
-
position: relative;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.rz-field-rich-text {
|
|
101
|
-
:global {
|
|
102
|
-
.ProseMirror-gapcursor:after {
|
|
103
|
-
border-top: 1px solid hsl(var(--rz-color-fg));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
40
|
.rz-field-rich-text__label-box {
|
|
109
41
|
display: flex;
|
|
110
42
|
align-items: center;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RichTextFieldProps } from './props.js';
|
|
2
|
-
import './styles/
|
|
2
|
+
import './styles/field.css';
|
|
3
3
|
declare const RichText: import("svelte").Component<RichTextFieldProps, {}, "">;
|
|
4
4
|
type RichText = ReturnType<typeof RichText>;
|
|
5
5
|
export default RichText;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { DocumentFormContext } from '../../../panel/context/documentForm.svelte.js';
|
|
3
|
+
import type { JSONContent } from '@tiptap/core';
|
|
4
|
+
import { defaultFeatures } from '../core/features/index.js';
|
|
5
|
+
import RichTextEditorCore from '../core/rich-text-editor-core.svelte';
|
|
6
|
+
import type { RichTextFieldBuilder } from '../index.js';
|
|
7
|
+
|
|
8
|
+
type Props = {
|
|
9
|
+
path: string;
|
|
10
|
+
config: RichTextFieldBuilder;
|
|
11
|
+
form: DocumentFormContext;
|
|
12
|
+
class?: string;
|
|
13
|
+
};
|
|
14
|
+
const { path, config, form, class: className }: Props = $props();
|
|
15
|
+
|
|
16
|
+
const field = $derived(form.useField<JSONContent>(path, config));
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<!-- A rich text edited where a block render draws it: the editor's controls, no fieldset. -->
|
|
20
|
+
<RichTextEditorCore
|
|
21
|
+
{path}
|
|
22
|
+
features={config.get.features || defaultFeatures}
|
|
23
|
+
value={field.value}
|
|
24
|
+
editable={field.editable}
|
|
25
|
+
error={!!field.error}
|
|
26
|
+
class={className}
|
|
27
|
+
onUpdate={(json) => (field.value = json)}
|
|
28
|
+
/>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DocumentFormContext } from '../../../panel/context/documentForm.svelte.js';
|
|
2
|
+
import type { RichTextFieldBuilder } from '../index.js';
|
|
3
|
+
type Props = {
|
|
4
|
+
path: string;
|
|
5
|
+
config: RichTextFieldBuilder;
|
|
6
|
+
form: DocumentFormContext;
|
|
7
|
+
class?: string;
|
|
8
|
+
};
|
|
9
|
+
declare const RichTextInline: import("svelte").Component<Props, {}, "">;
|
|
10
|
+
type RichTextInline = ReturnType<typeof RichTextInline>;
|
|
11
|
+
export default RichTextInline;
|
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
width: fit-content;
|
|
6
6
|
gap: var(--rz-size-1);
|
|
7
7
|
border-radius: var(--rz-radius-lg);
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
background-color: var(--rz-bg-float);
|
|
9
|
+
box-shadow:
|
|
10
|
+
0 0 0 1px var(--rz-border),
|
|
11
|
+
var(--rz-shadow-float);
|
|
10
12
|
padding: var(--rz-size-1);
|
|
11
|
-
box-shadow: var(--rz-shadow-xl);
|
|
12
13
|
visibility: hidden;
|
|
13
14
|
position: absolute;
|
|
14
15
|
left: -9999px;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import * as random from '../../../../util/random.js';
|
|
2
3
|
import type { Editor } from '@tiptap/core';
|
|
3
4
|
import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';
|
|
4
5
|
import { onDestroy, onMount } from 'svelte';
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
...features.flatMap((feature) => getBubbleMenuItems(feature.nodes || [], feature))
|
|
60
61
|
]);
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
// One key for the menu's life: the path changes when the field moves, the plugin stays.
|
|
64
|
+
const pluginKey = `rz-bubble-menu-${random.randomId(8)}`;
|
|
63
65
|
const updateDelay = 250;
|
|
64
66
|
|
|
65
67
|
const shouldShow = ({ editor }: { editor: Editor }) => {
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
justify-content: center;
|
|
7
7
|
border-radius: var(--rz-radius-lg);
|
|
8
8
|
/* padding: var(--rz-size-2); */
|
|
9
|
-
color:
|
|
9
|
+
color: var(--rz-fg);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
.rz-icon-button__icon--active {
|
|
13
|
-
color:
|
|
13
|
+
color: var(--rz-accent-text);
|
|
14
14
|
opacity: 1;
|
|
15
15
|
}
|