@blokkli/editor 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +64 -0
- package/dist/module.cjs +5 -0
- package/dist/module.d.mts +129 -0
- package/dist/module.d.ts +129 -0
- package/dist/module.json +12 -0
- package/dist/module.mjs +5430 -0
- package/dist/runtime/adapter/drupal/graphql/base.graphql +906 -0
- package/dist/runtime/adapter/drupal/graphql/comments.graphql +56 -0
- package/dist/runtime/adapter/drupal/graphql/fragments.graphql +25 -0
- package/dist/runtime/adapter/drupal/graphql/library.graphql +66 -0
- package/dist/runtime/adapter/drupal/graphql/search.graphql +19 -0
- package/dist/runtime/adapter/drupal/graphql/transform.graphql +27 -0
- package/dist/runtime/adapter/drupal/graphqlMiddleware.d.ts +2 -0
- package/dist/runtime/adapter/drupal/graphqlMiddleware.js +643 -0
- package/dist/runtime/adapter/index.d.ts +352 -0
- package/dist/runtime/adapter/index.js +3 -0
- package/dist/runtime/blokkliPlugins/AddAction/index.vue +87 -0
- package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +95 -0
- package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +49 -0
- package/dist/runtime/blokkliPlugins/DebugOverlay/index.vue +34 -0
- package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +73 -0
- package/dist/runtime/blokkliPlugins/ItemAction/index.vue +132 -0
- package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +42 -0
- package/dist/runtime/blokkliPlugins/MenuButton/index.vue +74 -0
- package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +334 -0
- package/dist/runtime/blokkliPlugins/Sidebar/index.vue +286 -0
- package/dist/runtime/blokkliPlugins/ToolbarButton/index.vue +104 -0
- package/dist/runtime/blokkliPlugins/TourItem/index.vue +45 -0
- package/dist/runtime/blokkliPlugins/ViewOption/index.vue +106 -0
- package/dist/runtime/blokkliPlugins/index.d.ts +12 -0
- package/dist/runtime/blokkliPlugins/index.js +24 -0
- package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -0
- package/dist/runtime/components/Blocks/Fragment/index.vue +24 -0
- package/dist/runtime/components/Blocks/FromLibrary/index.vue +58 -0
- package/dist/runtime/components/BlokkliEditable.vue +73 -0
- package/dist/runtime/components/BlokkliField.vue +157 -0
- package/dist/runtime/components/BlokkliItem.vue +79 -0
- package/dist/runtime/components/BlokkliProvider.vue +160 -0
- package/dist/runtime/components/Edit/Actions/index.vue +263 -0
- package/dist/runtime/components/Edit/AddListItem/index.vue +116 -0
- package/dist/runtime/components/Edit/AnimationCanvas/index.vue +122 -0
- package/dist/runtime/components/Edit/AppMenu/index.vue +60 -0
- package/dist/runtime/components/Edit/BlokkliErrorBoundary.vue +64 -0
- package/dist/runtime/components/Edit/Dialog/index.vue +163 -0
- package/dist/runtime/components/Edit/DragInteractions/index.vue +439 -0
- package/dist/runtime/components/Edit/DraggableList.vue +110 -0
- package/dist/runtime/components/Edit/EditIndicator.vue +82 -0
- package/dist/runtime/components/Edit/EditProvider.vue +213 -0
- package/dist/runtime/components/Edit/Features/AddList/docs.md +4 -0
- package/dist/runtime/components/Edit/Features/AddList/index.vue +205 -0
- package/dist/runtime/components/Edit/Features/Artboard/Manager/Artboard.d.ts +204 -0
- package/dist/runtime/components/Edit/Features/Artboard/Manager/Artboard.js +748 -0
- package/dist/runtime/components/Edit/Features/Artboard/Manager/Scrollbar/index.vue +176 -0
- package/dist/runtime/components/Edit/Features/Artboard/Manager/index.vue +317 -0
- package/dist/runtime/components/Edit/Features/Artboard/index.vue +45 -0
- package/dist/runtime/components/Edit/Features/Assistant/Overlay/ResultMarkup/index.vue +17 -0
- package/dist/runtime/components/Edit/Features/Assistant/Overlay/index.vue +147 -0
- package/dist/runtime/components/Edit/Features/Assistant/docs.md +7 -0
- package/dist/runtime/components/Edit/Features/Assistant/index.vue +68 -0
- package/dist/runtime/components/Edit/Features/BlockAddList/docs.md +15 -0
- package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +440 -0
- package/dist/runtime/components/Edit/Features/Clipboard/List/Item/File.vue +68 -0
- package/dist/runtime/components/Edit/Features/Clipboard/List/Item/Video.vue +56 -0
- package/dist/runtime/components/Edit/Features/Clipboard/List/index.vue +69 -0
- package/dist/runtime/components/Edit/Features/Clipboard/docs.md +16 -0
- package/dist/runtime/components/Edit/Features/Clipboard/index.vue +485 -0
- package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +61 -0
- package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +280 -0
- package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +51 -0
- package/dist/runtime/components/Edit/Features/Comments/AddForm/index.vue +32 -0
- package/dist/runtime/components/Edit/Features/Comments/Comment/index.vue +53 -0
- package/dist/runtime/components/Edit/Features/Comments/Overlay/Item/index.vue +100 -0
- package/dist/runtime/components/Edit/Features/Comments/Overlay/index.vue +133 -0
- package/dist/runtime/components/Edit/Features/Comments/docs.md +13 -0
- package/dist/runtime/components/Edit/Features/Comments/index.vue +110 -0
- package/dist/runtime/components/Edit/Features/Conversions/index.vue +98 -0
- package/dist/runtime/components/Edit/Features/Debug/Rects/index.vue +55 -0
- package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +93 -0
- package/dist/runtime/components/Edit/Features/Debug/docs.md +3 -0
- package/dist/runtime/components/Edit/Features/Debug/index.vue +178 -0
- package/dist/runtime/components/Edit/Features/Delete/index.vue +43 -0
- package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +420 -0
- package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +58 -0
- package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +808 -0
- package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +57 -0
- package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +410 -0
- package/dist/runtime/components/Edit/Features/Duplicate/index.vue +109 -0
- package/dist/runtime/components/Edit/Features/Edit/index.vue +63 -0
- package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +73 -0
- package/dist/runtime/components/Edit/Features/EditForm/index.vue +217 -0
- package/dist/runtime/components/Edit/Features/EditableField/Overlay/Contenteditable/index.vue +42 -0
- package/dist/runtime/components/Edit/Features/EditableField/Overlay/Frame/index.vue +68 -0
- package/dist/runtime/components/Edit/Features/EditableField/Overlay/Plaintext/index.vue +81 -0
- package/dist/runtime/components/Edit/Features/EditableField/Overlay/index.vue +357 -0
- package/dist/runtime/components/Edit/Features/EditableField/index.vue +192 -0
- package/dist/runtime/components/Edit/Features/EditableMask/index.vue +64 -0
- package/dist/runtime/components/Edit/Features/EntityTitle/index.vue +108 -0
- package/dist/runtime/components/Edit/Features/Exit/index.vue +38 -0
- package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +33 -0
- package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +43 -0
- package/dist/runtime/components/Edit/Features/Fragments/Dialog/Item/index.vue +68 -0
- package/dist/runtime/components/Edit/Features/Fragments/Dialog/index.vue +137 -0
- package/dist/runtime/components/Edit/Features/Fragments/docs.md +101 -0
- package/dist/runtime/components/Edit/Features/Fragments/index.vue +86 -0
- package/dist/runtime/components/Edit/Features/Grid/index.vue +40 -0
- package/dist/runtime/components/Edit/Features/Help/Shortcuts/index.vue +71 -0
- package/dist/runtime/components/Edit/Features/Help/index.vue +53 -0
- package/dist/runtime/components/Edit/Features/History/index.vue +263 -0
- package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +140 -0
- package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +92 -0
- package/dist/runtime/components/Edit/Features/Library/EditReusable/index.vue +0 -0
- package/dist/runtime/components/Edit/Features/Library/LibraryDialog/Item/index.vue +73 -0
- package/dist/runtime/components/Edit/Features/Library/LibraryDialog/index.vue +184 -0
- package/dist/runtime/components/Edit/Features/Library/ReusableDialog/index.vue +88 -0
- package/dist/runtime/components/Edit/Features/Library/docs.md +127 -0
- package/dist/runtime/components/Edit/Features/Library/index.vue +184 -0
- package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +184 -0
- package/dist/runtime/components/Edit/Features/MediaLibrary/index.vue +182 -0
- package/dist/runtime/components/Edit/Features/MediaLibrary/types.d.ts +57 -0
- package/dist/runtime/components/Edit/Features/MediaLibrary/types.js +0 -0
- package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +90 -0
- package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +289 -0
- package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +182 -0
- package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +76 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +52 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Checkboxes/index.vue +129 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Color/index.vue +38 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Group.vue +25 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +155 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Number/index.vue +74 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +135 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Range/index.vue +47 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Text/index.vue +38 -0
- package/dist/runtime/components/Edit/Features/Options/Form/index.vue +342 -0
- package/dist/runtime/components/Edit/Features/Options/index.vue +88 -0
- package/dist/runtime/components/Edit/Features/Ownership/index.vue +57 -0
- package/dist/runtime/components/Edit/Features/Preview/index.vue +45 -0
- package/dist/runtime/components/Edit/Features/PreviewGrant/QrCode/index.vue +30 -0
- package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +73 -0
- package/dist/runtime/components/Edit/Features/Publish/index.vue +50 -0
- package/dist/runtime/components/Edit/Features/ResponsivePreview/Frame/index.vue +81 -0
- package/dist/runtime/components/Edit/Features/ResponsivePreview/index.vue +217 -0
- package/dist/runtime/components/Edit/Features/Revert/index.vue +68 -0
- package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Content/index.vue +165 -0
- package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Page/index.vue +211 -0
- package/dist/runtime/components/Edit/Features/Search/Overlay/index.vue +214 -0
- package/dist/runtime/components/Edit/Features/Search/index.vue +79 -0
- package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +99 -0
- package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +144 -0
- package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +85 -0
- package/dist/runtime/components/Edit/Features/Selection/OverlayFallback/index.vue +50 -0
- package/dist/runtime/components/Edit/Features/Selection/index.vue +295 -0
- package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +141 -0
- package/dist/runtime/components/Edit/Features/Settings/Dialog/index.vue +138 -0
- package/dist/runtime/components/Edit/Features/Settings/index.vue +92 -0
- package/dist/runtime/components/Edit/Features/Structure/List/Field/index.vue +181 -0
- package/dist/runtime/components/Edit/Features/Structure/List/Item/index.vue +149 -0
- package/dist/runtime/components/Edit/Features/Structure/List/index.vue +55 -0
- package/dist/runtime/components/Edit/Features/Structure/index.vue +83 -0
- package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +81 -0
- package/dist/runtime/components/Edit/Features/Theme/GeneratedCode/index.vue +24 -0
- package/dist/runtime/components/Edit/Features/Theme/index.vue +122 -0
- package/dist/runtime/components/Edit/Features/TouchActionBar/Bar/index.vue +26 -0
- package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +42 -0
- package/dist/runtime/components/Edit/Features/Tour/Overlay/index.vue +270 -0
- package/dist/runtime/components/Edit/Features/Tour/Popup/index.vue +36 -0
- package/dist/runtime/components/Edit/Features/Tour/docs.md +0 -0
- package/dist/runtime/components/Edit/Features/Tour/index.vue +46 -0
- package/dist/runtime/components/Edit/Features/Transform/docs.md +67 -0
- package/dist/runtime/components/Edit/Features/Transform/index.vue +177 -0
- package/dist/runtime/components/Edit/Features/Translations/Banner/index.vue +50 -0
- package/dist/runtime/components/Edit/Features/Translations/index.vue +193 -0
- package/dist/runtime/components/Edit/Features/Validations/Overlay/Item.vue +50 -0
- package/dist/runtime/components/Edit/Features/Validations/Overlay/index.vue +51 -0
- package/dist/runtime/components/Edit/Features/Validations/SidebarItem/index.vue +50 -0
- package/dist/runtime/components/Edit/Features/Validations/index.vue +70 -0
- package/dist/runtime/components/Edit/Features/index.vue +67 -0
- package/dist/runtime/components/Edit/FormOverlay/Header/index.vue +39 -0
- package/dist/runtime/components/Edit/FormOverlay/index.vue +52 -0
- package/dist/runtime/components/Edit/Highlight/index.vue +94 -0
- package/dist/runtime/components/Edit/Icon/index.vue +21 -0
- package/dist/runtime/components/Edit/ItemIcon/index.vue +27 -0
- package/dist/runtime/components/Edit/Loading/index.vue +19 -0
- package/dist/runtime/components/Edit/Messages/Item/index.vue +107 -0
- package/dist/runtime/components/Edit/Messages/index.vue +37 -0
- package/dist/runtime/components/Edit/PreviewProvider.vue +223 -0
- package/dist/runtime/components/Edit/RelativeTime/index.vue +37 -0
- package/dist/runtime/components/Edit/Resizable/index.vue +90 -0
- package/dist/runtime/components/Edit/ScaleToFit/index.vue +57 -0
- package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +90 -0
- package/dist/runtime/components/Edit/Sortli/index.vue +92 -0
- package/dist/runtime/components/Edit/SystemRequirements/index.vue +91 -0
- package/dist/runtime/components/Edit/Toolbar/index.vue +106 -0
- package/dist/runtime/components/Edit/ViewportBlockingRect/index.vue +75 -0
- package/dist/runtime/components/Edit/index.d.ts +14 -0
- package/dist/runtime/components/Edit/index.js +28 -0
- package/dist/runtime/composables/defineBlokkli.d.ts +6 -0
- package/dist/runtime/composables/defineBlokkli.js +108 -0
- package/dist/runtime/composables/defineBlokkliFeature.d.ts +28 -0
- package/dist/runtime/composables/defineBlokkliFeature.js +62 -0
- package/dist/runtime/composables/defineBlokkliFragment.d.ts +3 -0
- package/dist/runtime/composables/defineBlokkliFragment.js +54 -0
- package/dist/runtime/composables/useBlokkli.d.ts +8 -0
- package/dist/runtime/composables/useBlokkli.js +5 -0
- package/dist/runtime/constants/index.d.ts +4 -0
- package/dist/runtime/constants/index.js +2 -0
- package/dist/runtime/css/output.css +1 -0
- package/dist/runtime/helpers/Artboard/index.d.ts +16 -0
- package/dist/runtime/helpers/Artboard/index.js +20 -0
- package/dist/runtime/helpers/DragStyle/index.d.ts +12 -0
- package/dist/runtime/helpers/DragStyle/index.js +86 -0
- package/dist/runtime/helpers/animationProvider.d.ts +25 -0
- package/dist/runtime/helpers/animationProvider.js +116 -0
- package/dist/runtime/helpers/broadcastProvider.d.ts +7 -0
- package/dist/runtime/helpers/broadcastProvider.js +26 -0
- package/dist/runtime/helpers/commandsProvider.d.ts +9 -0
- package/dist/runtime/helpers/commandsProvider.js +16 -0
- package/dist/runtime/helpers/composables/defineCommands.d.ts +2 -0
- package/dist/runtime/helpers/composables/defineCommands.js +10 -0
- package/dist/runtime/helpers/composables/defineDropAreas.d.ts +2 -0
- package/dist/runtime/helpers/composables/defineDropAreas.js +10 -0
- package/dist/runtime/helpers/composables/defineShortcut.d.ts +2 -0
- package/dist/runtime/helpers/composables/defineShortcut.js +19 -0
- package/dist/runtime/helpers/composables/defineTourItem.d.ts +2 -0
- package/dist/runtime/helpers/composables/defineTourItem.js +10 -0
- package/dist/runtime/helpers/composables/onBlokkliEvent.d.ts +2 -0
- package/dist/runtime/helpers/composables/onBlokkliEvent.js +10 -0
- package/dist/runtime/helpers/composables/useAnimationFrame.d.ts +1 -0
- package/dist/runtime/helpers/composables/useAnimationFrame.js +14 -0
- package/dist/runtime/helpers/composables/useDebugLogger.d.ts +2 -0
- package/dist/runtime/helpers/composables/useDebugLogger.js +5 -0
- package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.d.ts +5 -0
- package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.js +26 -0
- package/dist/runtime/helpers/debugProvider.d.ts +23 -0
- package/dist/runtime/helpers/debugProvider.js +65 -0
- package/dist/runtime/helpers/dom/index.d.ts +5 -0
- package/dist/runtime/helpers/dom/index.js +37 -0
- package/dist/runtime/helpers/domProvider.d.ts +46 -0
- package/dist/runtime/helpers/domProvider.js +446 -0
- package/dist/runtime/helpers/dropAreaProvider.d.ts +9 -0
- package/dist/runtime/helpers/dropAreaProvider.js +22 -0
- package/dist/runtime/helpers/easing.d.ts +3 -0
- package/dist/runtime/helpers/easing.js +16 -0
- package/dist/runtime/helpers/eventBus.d.ts +3 -0
- package/dist/runtime/helpers/eventBus.js +5 -0
- package/dist/runtime/helpers/featuresProvider.d.ts +23 -0
- package/dist/runtime/helpers/featuresProvider.js +16 -0
- package/dist/runtime/helpers/frameEventBus.d.ts +9 -0
- package/dist/runtime/helpers/frameEventBus.js +2 -0
- package/dist/runtime/helpers/index.d.ts +87 -0
- package/dist/runtime/helpers/index.js +467 -0
- package/dist/runtime/helpers/keyboardProvider.d.ts +17 -0
- package/dist/runtime/helpers/keyboardProvider.js +79 -0
- package/dist/runtime/helpers/options.d.ts +2 -0
- package/dist/runtime/helpers/options.js +21 -0
- package/dist/runtime/helpers/runtimeHelpers/index.d.ts +10 -0
- package/dist/runtime/helpers/runtimeHelpers/index.js +35 -0
- package/dist/runtime/helpers/selectionProvider.d.ts +62 -0
- package/dist/runtime/helpers/selectionProvider.js +149 -0
- package/dist/runtime/helpers/stateProvider.d.ts +35 -0
- package/dist/runtime/helpers/stateProvider.js +226 -0
- package/dist/runtime/helpers/storageProvider.d.ts +15 -0
- package/dist/runtime/helpers/storageProvider.js +61 -0
- package/dist/runtime/helpers/symbols.d.ts +16 -0
- package/dist/runtime/helpers/symbols.js +18 -0
- package/dist/runtime/helpers/textProvider.d.ts +4 -0
- package/dist/runtime/helpers/textProvider.js +20 -0
- package/dist/runtime/helpers/themeProvider.d.ts +27 -0
- package/dist/runtime/helpers/themeProvider.js +124 -0
- package/dist/runtime/helpers/tourProvider.d.ts +11 -0
- package/dist/runtime/helpers/tourProvider.js +19 -0
- package/dist/runtime/helpers/transform.d.ts +2 -0
- package/dist/runtime/helpers/transform.js +17 -0
- package/dist/runtime/helpers/typesProvider.d.ts +36 -0
- package/dist/runtime/helpers/typesProvider.js +138 -0
- package/dist/runtime/helpers/uiProvider.d.ts +36 -0
- package/dist/runtime/helpers/uiProvider.js +278 -0
- package/dist/runtime/helpers/webgl/index.d.ts +32 -0
- package/dist/runtime/helpers/webgl/index.js +132 -0
- package/dist/runtime/icons/alert.svg +6 -0
- package/dist/runtime/icons/area.svg +5 -0
- package/dist/runtime/icons/arrow-down.svg +1 -0
- package/dist/runtime/icons/arrow-left.svg +1 -0
- package/dist/runtime/icons/arrow-right.svg +1 -0
- package/dist/runtime/icons/arrow-up.svg +1 -0
- package/dist/runtime/icons/artboard-disabled.svg +9 -0
- package/dist/runtime/icons/artboard-enabled.svg +29 -0
- package/dist/runtime/icons/artboard.svg +1 -0
- package/dist/runtime/icons/bug.svg +1 -0
- package/dist/runtime/icons/button-pointer.svg +1 -0
- package/dist/runtime/icons/caret.svg +12 -0
- package/dist/runtime/icons/cellphone.svg +1 -0
- package/dist/runtime/icons/chat-question.svg +1 -0
- package/dist/runtime/icons/check.svg +1 -0
- package/dist/runtime/icons/checkbox.svg +5 -0
- package/dist/runtime/icons/checks.svg +1 -0
- package/dist/runtime/icons/chevron-left.svg +1 -0
- package/dist/runtime/icons/chevron-right.svg +1 -0
- package/dist/runtime/icons/clipboard.svg +5 -0
- package/dist/runtime/icons/close.svg +5 -0
- package/dist/runtime/icons/cog.svg +5 -0
- package/dist/runtime/icons/command.svg +1 -0
- package/dist/runtime/icons/comment.svg +5 -0
- package/dist/runtime/icons/comment_add.svg +5 -0
- package/dist/runtime/icons/convert.svg +1 -0
- package/dist/runtime/icons/cursor-move.svg +1 -0
- package/dist/runtime/icons/dead.svg +1 -0
- package/dist/runtime/icons/delete.svg +8 -0
- package/dist/runtime/icons/detach.svg +7 -0
- package/dist/runtime/icons/drag.svg +1 -0
- package/dist/runtime/icons/duplicate.svg +12 -0
- package/dist/runtime/icons/edit.svg +8 -0
- package/dist/runtime/icons/exit.svg +6 -0
- package/dist/runtime/icons/expand.svg +1 -0
- package/dist/runtime/icons/file.svg +1 -0
- package/dist/runtime/icons/form.svg +1 -0
- package/dist/runtime/icons/fragment.svg +1 -0
- package/dist/runtime/icons/grid.svg +13 -0
- package/dist/runtime/icons/group.svg +5 -0
- package/dist/runtime/icons/help.svg +1 -0
- package/dist/runtime/icons/history.svg +1 -0
- package/dist/runtime/icons/image.svg +1 -0
- package/dist/runtime/icons/import.svg +5 -0
- package/dist/runtime/icons/laptop.svg +1 -0
- package/dist/runtime/icons/list-view-grid.svg +1 -0
- package/dist/runtime/icons/list-view-horizontal.svg +1 -0
- package/dist/runtime/icons/loader.svg +1 -0
- package/dist/runtime/icons/logo.svg +5 -0
- package/dist/runtime/icons/magnifier.svg +5 -0
- package/dist/runtime/icons/menu.svg +1 -0
- package/dist/runtime/icons/minus.svg +1 -0
- package/dist/runtime/icons/monitor.svg +1 -0
- package/dist/runtime/icons/multi-select.svg +1 -0
- package/dist/runtime/icons/multimedia.svg +1 -0
- package/dist/runtime/icons/opacity.svg +5 -0
- package/dist/runtime/icons/open_in_new.svg +3 -0
- package/dist/runtime/icons/palette.svg +1 -0
- package/dist/runtime/icons/plus-box.svg +1 -0
- package/dist/runtime/icons/plus.svg +1 -0
- package/dist/runtime/icons/preview.svg +5 -0
- package/dist/runtime/icons/publish.svg +12 -0
- package/dist/runtime/icons/puzzle.svg +1 -0
- package/dist/runtime/icons/qrcode.svg +5 -0
- package/dist/runtime/icons/question.svg +5 -0
- package/dist/runtime/icons/redo.svg +12 -0
- package/dist/runtime/icons/resize.svg +1 -0
- package/dist/runtime/icons/reusable.svg +5 -0
- package/dist/runtime/icons/revert.svg +5 -0
- package/dist/runtime/icons/robot.svg +1 -0
- package/dist/runtime/icons/rotate-phone.svg +1 -0
- package/dist/runtime/icons/sad.svg +1 -0
- package/dist/runtime/icons/save.svg +1 -0
- package/dist/runtime/icons/script.svg +1 -0
- package/dist/runtime/icons/scrolltotop.svg +6 -0
- package/dist/runtime/icons/search.svg +1 -0
- package/dist/runtime/icons/selection.svg +5 -0
- package/dist/runtime/icons/spinner.svg +15 -0
- package/dist/runtime/icons/star.svg +1 -0
- package/dist/runtime/icons/swap-horizontal.svg +1 -0
- package/dist/runtime/icons/tablet.svg +1 -0
- package/dist/runtime/icons/textbox.svg +1 -0
- package/dist/runtime/icons/texturebox.svg +5 -0
- package/dist/runtime/icons/tiktok.svg +1 -0
- package/dist/runtime/icons/title.svg +1 -0
- package/dist/runtime/icons/tools.svg +1 -0
- package/dist/runtime/icons/translate.svg +5 -0
- package/dist/runtime/icons/tree.svg +5 -0
- package/dist/runtime/icons/tutor.svg +1 -0
- package/dist/runtime/icons/ui-list-horizontal.svg +19 -0
- package/dist/runtime/icons/ui-list-sidebar.svg +21 -0
- package/dist/runtime/icons/ui-list-vertical.svg +9 -0
- package/dist/runtime/icons/undo.svg +12 -0
- package/dist/runtime/icons/unstar.svg +1 -0
- package/dist/runtime/icons/upload.svg +1 -0
- package/dist/runtime/icons/user.svg +1 -0
- package/dist/runtime/icons/video-outline.svg +1 -0
- package/dist/runtime/icons/vimeo.svg +3 -0
- package/dist/runtime/icons/window-maximize.svg +1 -0
- package/dist/runtime/icons/window-minimize.svg +1 -0
- package/dist/runtime/icons/youtube.svg +3 -0
- package/dist/runtime/plugins/blokkliEditable.d.ts +2 -0
- package/dist/runtime/plugins/blokkliEditable.js +31 -0
- package/dist/runtime/public/Inter.var.woff2 +0 -0
- package/dist/runtime/types/blokkOptions.d.ts +83 -0
- package/dist/runtime/types/blokkOptions.js +0 -0
- package/dist/runtime/types/generatedModuleTypes.d.ts +41 -0
- package/dist/runtime/types/generatedModuleTypes.js +0 -0
- package/dist/runtime/types/index.d.ts +1052 -0
- package/dist/runtime/types/index.js +1 -0
- package/dist/runtime/types/theme.d.ts +33 -0
- package/dist/runtime/types/theme.js +0 -0
- package/dist/types.d.mts +1 -0
- package/dist/types.d.ts +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<Teleport to="body">
|
|
3
|
+
<div
|
|
4
|
+
v-show="activeSidebarLeft && sidebarVisible"
|
|
5
|
+
id="bk-sidebar-content-left"
|
|
6
|
+
class="bk-sidebar bk-is-left"
|
|
7
|
+
:class="{ 'bk-is-hidden': !sidebarVisible }"
|
|
8
|
+
/>
|
|
9
|
+
<div
|
|
10
|
+
v-show="activeSidebarRight"
|
|
11
|
+
id="bk-sidebar-content-right"
|
|
12
|
+
class="bk-sidebar bk-is-right"
|
|
13
|
+
:class="{ 'bk-is-hidden': !sidebarVisible }"
|
|
14
|
+
/>
|
|
15
|
+
|
|
16
|
+
<Transition name="bk-toolbar">
|
|
17
|
+
<div v-show="showToolbar" class="bk bk-top">
|
|
18
|
+
<div
|
|
19
|
+
class="bk-toolbar bk-control"
|
|
20
|
+
@touchstart.stop.passive
|
|
21
|
+
@touchmove.stop.passive
|
|
22
|
+
>
|
|
23
|
+
<div id="bk-toolbar-menu" class="bk-toolbar-area bk-is-menu" />
|
|
24
|
+
<div class="bk-toolbar-container bk-is-sidebar">
|
|
25
|
+
<div
|
|
26
|
+
id="bk-sidebar-tabs-left"
|
|
27
|
+
class="bk-sidebar-container-tabs bk-is-left"
|
|
28
|
+
/>
|
|
29
|
+
</div>
|
|
30
|
+
<div id="bk-toolbar-after-menu" class="bk-toolbar-container" />
|
|
31
|
+
<div id="bk-toolbar-before-title" class="bk-toolbar-container" />
|
|
32
|
+
<div id="bk-toolbar-title" class="bk-toolbar-container" />
|
|
33
|
+
<div id="bk-toolbar-after-title" class="bk-toolbar-container" />
|
|
34
|
+
<div id="bk-toolbar-view-options" class="bk-toolbar-container" />
|
|
35
|
+
<div
|
|
36
|
+
id="bk-toolbar-before-sidebar"
|
|
37
|
+
class="bk-sidebar-container-tabs bk-toolbar-container"
|
|
38
|
+
/>
|
|
39
|
+
</div>
|
|
40
|
+
<div
|
|
41
|
+
class="bk bk-sidebar-tabs"
|
|
42
|
+
:class="{ 'bk-has-sidebar-open': activeSidebarRight }"
|
|
43
|
+
>
|
|
44
|
+
<div id="bk-toolbar-before-sidebar-right" />
|
|
45
|
+
<div
|
|
46
|
+
id="bk-sidebar-tabs-right"
|
|
47
|
+
class="bk-sidebar-container-tabs bk-is-right"
|
|
48
|
+
/>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</Transition>
|
|
52
|
+
</Teleport>
|
|
53
|
+
</template>
|
|
54
|
+
|
|
55
|
+
<script lang="ts" setup>
|
|
56
|
+
import onBlokkliEvent from '#blokkli/helpers/composables/onBlokkliEvent'
|
|
57
|
+
import { onMounted, useBlokkli, onBeforeUnmount, computed } from '#imports'
|
|
58
|
+
|
|
59
|
+
const { ui, selection, storage } = useBlokkli()
|
|
60
|
+
|
|
61
|
+
const showToolbar = computed(
|
|
62
|
+
() =>
|
|
63
|
+
!ui.isMobile.value ||
|
|
64
|
+
(!selection.isDragging.value && !selection.isMultiSelecting.value),
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
const sidebarVisible = computed(() => {
|
|
68
|
+
if (ui.isMobile.value) {
|
|
69
|
+
return !selection.isDragging.value
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return true
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
const activeSidebarLeft = storage.use('sidebar:active:left', '')
|
|
76
|
+
const activeSidebarRight = storage.use('sidebar:active:right', '')
|
|
77
|
+
const focusedSidebar = storage.use('sidebar:focused', '')
|
|
78
|
+
|
|
79
|
+
const emit = defineEmits(['loaded'])
|
|
80
|
+
|
|
81
|
+
const onWindowMouseDown = (e: MouseEvent) => {
|
|
82
|
+
if (
|
|
83
|
+
(e.target instanceof HTMLElement || e.target instanceof SVGElement) &&
|
|
84
|
+
!e.target.closest('.bk-sidebar-detached')
|
|
85
|
+
) {
|
|
86
|
+
focusedSidebar.value = ''
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
onBlokkliEvent('sidebar:close', () => (activeSidebarRight.value = ''))
|
|
91
|
+
|
|
92
|
+
onMounted(() => {
|
|
93
|
+
emit('loaded')
|
|
94
|
+
document.documentElement.addEventListener('mousedown', onWindowMouseDown)
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
onBeforeUnmount(() => {
|
|
98
|
+
document.documentElement.removeEventListener('mousedown', onWindowMouseDown)
|
|
99
|
+
})
|
|
100
|
+
</script>
|
|
101
|
+
|
|
102
|
+
<script lang="ts">
|
|
103
|
+
export default {
|
|
104
|
+
name: 'BlokkliToolbar',
|
|
105
|
+
}
|
|
106
|
+
</script>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div ref="el">
|
|
3
|
+
<slot />
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script setup lang="ts">
|
|
8
|
+
/**
|
|
9
|
+
* A component to wrap viewport blocking elements.
|
|
10
|
+
*
|
|
11
|
+
* A viewport blocking element is one that is either draggable by the user to
|
|
12
|
+
* any location or one that the app renders that blocks the usual viewport.
|
|
13
|
+
*
|
|
14
|
+
* These are registered in the UI provider, where other features can access
|
|
15
|
+
* them to determine the ideal placement for other overlays.
|
|
16
|
+
*
|
|
17
|
+
* This is primarly used for the "actions" bar on selected blocks, which tries
|
|
18
|
+
* to not collide the bar with any of the blocking rectangles.
|
|
19
|
+
*/
|
|
20
|
+
import useAnimationFrame from '#blokkli/helpers/composables/useAnimationFrame'
|
|
21
|
+
import {
|
|
22
|
+
useBlokkli,
|
|
23
|
+
ref,
|
|
24
|
+
computed,
|
|
25
|
+
onMounted,
|
|
26
|
+
onBeforeUnmount,
|
|
27
|
+
watch,
|
|
28
|
+
} from '#imports'
|
|
29
|
+
|
|
30
|
+
const props = defineProps<{
|
|
31
|
+
id: string
|
|
32
|
+
}>()
|
|
33
|
+
|
|
34
|
+
const { ui } = useBlokkli()
|
|
35
|
+
|
|
36
|
+
const x = ref(0)
|
|
37
|
+
const y = ref(0)
|
|
38
|
+
const width = ref(0)
|
|
39
|
+
const height = ref(0)
|
|
40
|
+
|
|
41
|
+
const rect = computed(() => {
|
|
42
|
+
return {
|
|
43
|
+
x: x.value,
|
|
44
|
+
y: y.value,
|
|
45
|
+
width: width.value,
|
|
46
|
+
height: height.value,
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
const el = ref<HTMLDivElement | null>(null)
|
|
51
|
+
|
|
52
|
+
useAnimationFrame(() => {
|
|
53
|
+
if (!el.value) {
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const rect = el.value.getBoundingClientRect()
|
|
58
|
+
x.value = rect.x
|
|
59
|
+
y.value = rect.y
|
|
60
|
+
width.value = rect.width
|
|
61
|
+
height.value = rect.height
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
watch(rect, (v) => {
|
|
65
|
+
ui.setViewportBlockingRectangle(props.id, v)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
onMounted(() => {
|
|
69
|
+
ui.setViewportBlockingRectangle(props.id, rect.value)
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
onBeforeUnmount(() => {
|
|
73
|
+
ui.setViewportBlockingRectangle(props.id)
|
|
74
|
+
})
|
|
75
|
+
</script>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import ItemIcon from './ItemIcon/index.vue.js';
|
|
2
|
+
import ShortcutIndicator from './ShortcutIndicator/index.vue.js';
|
|
3
|
+
import RelativeTime from './RelativeTime/index.vue.js';
|
|
4
|
+
import Resizable from './Resizable/index.vue.js';
|
|
5
|
+
import Icon from './Icon/index.vue.js';
|
|
6
|
+
import DialogModal from './Dialog/index.vue.js';
|
|
7
|
+
import ScaleToFit from './ScaleToFit/index.vue.js';
|
|
8
|
+
import Sortli from './Sortli/index.vue.js';
|
|
9
|
+
import FormOverlay from './FormOverlay/index.vue.js';
|
|
10
|
+
import AddListItem from './AddListItem/index.vue.js';
|
|
11
|
+
import Loading from './Loading/index.vue.js';
|
|
12
|
+
import Highlight from './Highlight/index.vue.js';
|
|
13
|
+
import ViewportBlockingRect from './ViewportBlockingRect/index.vue.js';
|
|
14
|
+
export { ItemIcon, ShortcutIndicator, RelativeTime, Icon, Resizable, DialogModal, ScaleToFit, Sortli, FormOverlay, AddListItem, Loading, Highlight, ViewportBlockingRect, };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import ItemIcon from "./ItemIcon/index.vue";
|
|
2
|
+
import ShortcutIndicator from "./ShortcutIndicator/index.vue";
|
|
3
|
+
import RelativeTime from "./RelativeTime/index.vue";
|
|
4
|
+
import Resizable from "./Resizable/index.vue";
|
|
5
|
+
import Icon from "./Icon/index.vue";
|
|
6
|
+
import DialogModal from "./Dialog/index.vue";
|
|
7
|
+
import ScaleToFit from "./ScaleToFit/index.vue";
|
|
8
|
+
import Sortli from "./Sortli/index.vue";
|
|
9
|
+
import FormOverlay from "./FormOverlay/index.vue";
|
|
10
|
+
import AddListItem from "./AddListItem/index.vue";
|
|
11
|
+
import Loading from "./Loading/index.vue";
|
|
12
|
+
import Highlight from "./Highlight/index.vue";
|
|
13
|
+
import ViewportBlockingRect from "./ViewportBlockingRect/index.vue";
|
|
14
|
+
export {
|
|
15
|
+
ItemIcon,
|
|
16
|
+
ShortcutIndicator,
|
|
17
|
+
RelativeTime,
|
|
18
|
+
Icon,
|
|
19
|
+
Resizable,
|
|
20
|
+
DialogModal,
|
|
21
|
+
ScaleToFit,
|
|
22
|
+
Sortli,
|
|
23
|
+
FormOverlay,
|
|
24
|
+
AddListItem,
|
|
25
|
+
Loading,
|
|
26
|
+
Highlight,
|
|
27
|
+
ViewportBlockingRect
|
|
28
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BlockDefinitionInput, BlockDefinitionOptionsInput, DefineBlokkliContext } from '#blokkli/types';
|
|
2
|
+
import type { GlobalOptionsKey } from '#blokkli/generated-types';
|
|
3
|
+
/**
|
|
4
|
+
* Define a blokkli component.
|
|
5
|
+
*/
|
|
6
|
+
export declare function defineBlokkli<T extends BlockDefinitionOptionsInput = BlockDefinitionOptionsInput, G extends GlobalOptionsKey[] | undefined = undefined>(config: BlockDefinitionInput<T, G>): DefineBlokkliContext<T, G>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import {
|
|
2
|
+
INJECT_BLOCK_ITEM,
|
|
3
|
+
INJECT_EDIT_CONTEXT,
|
|
4
|
+
INJECT_FIELD_LIST_BLOCKS,
|
|
5
|
+
INJECT_FIELD_LIST_TYPE,
|
|
6
|
+
INJECT_REUSABLE_OPTIONS,
|
|
7
|
+
INJECT_PROVIDER_BLOCKS
|
|
8
|
+
} from "../helpers/symbols.js";
|
|
9
|
+
import {
|
|
10
|
+
computed,
|
|
11
|
+
inject,
|
|
12
|
+
getCurrentInstance,
|
|
13
|
+
onMounted,
|
|
14
|
+
onBeforeUnmount
|
|
15
|
+
} from "#imports";
|
|
16
|
+
import { globalOptionsDefaults } from "#blokkli/default-global-options";
|
|
17
|
+
import { getRuntimeOptionValue } from "#blokkli/helpers/runtimeHelpers";
|
|
18
|
+
export function defineBlokkli(config) {
|
|
19
|
+
const optionKeys = [
|
|
20
|
+
...Object.keys(config.options || {}),
|
|
21
|
+
...config.globalOptions || []
|
|
22
|
+
];
|
|
23
|
+
const fieldListType = inject(
|
|
24
|
+
INJECT_FIELD_LIST_TYPE,
|
|
25
|
+
computed(() => "default")
|
|
26
|
+
);
|
|
27
|
+
const siblings = inject(
|
|
28
|
+
INJECT_FIELD_LIST_BLOCKS
|
|
29
|
+
);
|
|
30
|
+
const rootBlocks = inject(
|
|
31
|
+
INJECT_PROVIDER_BLOCKS
|
|
32
|
+
);
|
|
33
|
+
const item = inject(INJECT_BLOCK_ITEM);
|
|
34
|
+
const uuid = item?.value.uuid || "";
|
|
35
|
+
const index = item?.value.index !== void 0 ? item.value.index : computed(() => 0);
|
|
36
|
+
const fromLibraryOptions = inject(
|
|
37
|
+
INJECT_REUSABLE_OPTIONS,
|
|
38
|
+
null
|
|
39
|
+
);
|
|
40
|
+
const editContext = inject(INJECT_EDIT_CONTEXT, null);
|
|
41
|
+
const options = computed(() => {
|
|
42
|
+
if (config.bundle === "from_library" || config.bundle === "blokkli_fragment") {
|
|
43
|
+
return {
|
|
44
|
+
...item?.value.options || {},
|
|
45
|
+
...editContext?.mutatedOptions[uuid] || {}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const result = optionKeys.reduce((acc, key) => {
|
|
49
|
+
if (editContext) {
|
|
50
|
+
const overrideOptions = editContext.mutatedOptions[uuid] || {};
|
|
51
|
+
if (overrideOptions[key] !== void 0) {
|
|
52
|
+
acc[key] = overrideOptions[key];
|
|
53
|
+
return acc;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (fromLibraryOptions && fromLibraryOptions.value[key] !== void 0) {
|
|
57
|
+
acc[key] = fromLibraryOptions.value[key];
|
|
58
|
+
return acc;
|
|
59
|
+
}
|
|
60
|
+
if (item?.value.options && item.value.options[key] !== void 0) {
|
|
61
|
+
acc[key] = item.value.options[key];
|
|
62
|
+
return acc;
|
|
63
|
+
}
|
|
64
|
+
return acc;
|
|
65
|
+
}, {});
|
|
66
|
+
optionKeys.forEach((key) => {
|
|
67
|
+
const definition = config.options?.[key] || globalOptionsDefaults[key];
|
|
68
|
+
if (!definition) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const value = result[key] === void 0 || result[key] === null ? definition.default : result[key];
|
|
72
|
+
result[key] = getRuntimeOptionValue(definition, value);
|
|
73
|
+
});
|
|
74
|
+
return result;
|
|
75
|
+
});
|
|
76
|
+
const parentType = computed(() => item?.value.parentType);
|
|
77
|
+
const isEditing = !!item?.value.isEditing;
|
|
78
|
+
onMounted(() => {
|
|
79
|
+
if (!item?.value || !isEditing || !editContext || !editContext.dom || // Block is already registered by the from_library block.
|
|
80
|
+
fromLibraryOptions || // The defineBlokkliFragment composable registers the block itself.
|
|
81
|
+
config.bundle === "blokkli_fragment") {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const instance = getCurrentInstance();
|
|
85
|
+
editContext.dom.registerBlock(
|
|
86
|
+
uuid,
|
|
87
|
+
instance,
|
|
88
|
+
config.bundle,
|
|
89
|
+
fieldListType.value,
|
|
90
|
+
item.value.parentType
|
|
91
|
+
);
|
|
92
|
+
});
|
|
93
|
+
onBeforeUnmount(() => {
|
|
94
|
+
if (editContext && editContext.dom && uuid && config.bundle !== "blokkli_fragment") {
|
|
95
|
+
editContext.dom.unregisterBlock(uuid);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
uuid,
|
|
100
|
+
index,
|
|
101
|
+
options,
|
|
102
|
+
isEditing,
|
|
103
|
+
parentType,
|
|
104
|
+
fieldListType,
|
|
105
|
+
siblings,
|
|
106
|
+
rootBlocks
|
|
107
|
+
};
|
|
108
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ComputedRef } from '#imports';
|
|
2
|
+
import type { BlokkliAdapter, AdapterMethods } from '#blokkli/adapter';
|
|
3
|
+
import type { FeatureDefinition } from '#blokkli/types';
|
|
4
|
+
import type { ValidFeatureKey } from '#blokkli-runtime/features';
|
|
5
|
+
import type { DebugLogger } from '#blokkli/helpers/debugProvider';
|
|
6
|
+
type SettingType<S> = S extends {
|
|
7
|
+
type: 'checkbox';
|
|
8
|
+
} ? boolean : S extends {
|
|
9
|
+
type: 'radios';
|
|
10
|
+
options: infer O;
|
|
11
|
+
} ? keyof O : S extends {
|
|
12
|
+
type: 'slider';
|
|
13
|
+
default: infer N;
|
|
14
|
+
} ? N : never;
|
|
15
|
+
type SettingsTypes<S> = {
|
|
16
|
+
[P in keyof S]: SettingType<S[P]>;
|
|
17
|
+
};
|
|
18
|
+
type PickRequiredMethods<T, Methods extends AdapterMethods[]> = {
|
|
19
|
+
[K in Methods[number]]: NonNullable<BlokkliAdapter<T>[K]>;
|
|
20
|
+
};
|
|
21
|
+
type CombinedAdapter<T, Methods extends AdapterMethods[]> = PickRequiredMethods<T, Methods> & BlokkliAdapter<T>;
|
|
22
|
+
type DefineBlokkliFeature<T, Methods extends AdapterMethods[], F extends FeatureDefinition<Methods, ValidFeatureKey>> = {
|
|
23
|
+
adapter: CombinedAdapter<T, Methods>;
|
|
24
|
+
settings: ComputedRef<SettingsTypes<F['settings']>>;
|
|
25
|
+
logger: DebugLogger;
|
|
26
|
+
};
|
|
27
|
+
export declare function defineBlokkliFeature<T, Methods extends AdapterMethods[], F extends FeatureDefinition<Methods, ValidFeatureKey>>(feature: F): DefineBlokkliFeature<T, Methods, F>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
useBlokkli,
|
|
4
|
+
onMounted,
|
|
5
|
+
onUnmounted,
|
|
6
|
+
provide
|
|
7
|
+
} from "#imports";
|
|
8
|
+
import { settingsOverride } from "#blokkli/config";
|
|
9
|
+
import { INJECT_EDIT_LOGGER } from "#blokkli/helpers/symbols";
|
|
10
|
+
export function defineBlokkliFeature(feature) {
|
|
11
|
+
const { adapter, storage, features, debug } = useBlokkli();
|
|
12
|
+
const logger = debug.createLogger(feature.label || feature.id);
|
|
13
|
+
const storageKey = computed(() => `feature:${feature.id}:settings`);
|
|
14
|
+
const defaults = Object.entries(feature.settings || {}).reduce((acc, [key, config]) => {
|
|
15
|
+
const overrideKey = `feature:${feature.id}:${key}`;
|
|
16
|
+
const override = settingsOverride[overrideKey];
|
|
17
|
+
if (override && "default" in override && override.default !== void 0) {
|
|
18
|
+
acc[key] = override.default;
|
|
19
|
+
} else if ("default" in config) {
|
|
20
|
+
acc[key] = config.default;
|
|
21
|
+
}
|
|
22
|
+
return acc;
|
|
23
|
+
}, {});
|
|
24
|
+
const settingsStorage = storage.use(storageKey, defaults);
|
|
25
|
+
const settingsEnforced = computed(
|
|
26
|
+
() => Object.keys(feature.settings || {}).reduce(
|
|
27
|
+
(acc, key) => {
|
|
28
|
+
const overrideKey = `feature:${feature.id}:${key}`;
|
|
29
|
+
const override = settingsOverride[overrideKey];
|
|
30
|
+
if (override?.disable) {
|
|
31
|
+
acc[key] = defaults[key];
|
|
32
|
+
}
|
|
33
|
+
return acc;
|
|
34
|
+
},
|
|
35
|
+
{}
|
|
36
|
+
)
|
|
37
|
+
);
|
|
38
|
+
const settings = computed(() => {
|
|
39
|
+
return {
|
|
40
|
+
// Default settings defined by the feature.
|
|
41
|
+
...defaults,
|
|
42
|
+
// Settings altered by the user.
|
|
43
|
+
...settingsStorage.value,
|
|
44
|
+
// Settings always enforced via config.
|
|
45
|
+
...settingsEnforced.value
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
onMounted(() => {
|
|
49
|
+
features.mount(feature);
|
|
50
|
+
logger.log("Feature mounted");
|
|
51
|
+
});
|
|
52
|
+
onUnmounted(() => {
|
|
53
|
+
features.unmount(feature.id);
|
|
54
|
+
logger.log("Feature unmounted");
|
|
55
|
+
});
|
|
56
|
+
provide(INJECT_EDIT_LOGGER, logger);
|
|
57
|
+
return {
|
|
58
|
+
adapter,
|
|
59
|
+
settings,
|
|
60
|
+
logger
|
|
61
|
+
};
|
|
62
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { BlockDefinitionOptionsInput, DefineBlokkliContext, FragmentDefinitionInput } from '#blokkli/types';
|
|
2
|
+
import type { GlobalOptionsKey } from '#blokkli/generated-types';
|
|
3
|
+
export declare function defineBlokkliFragment<T extends BlockDefinitionOptionsInput = BlockDefinitionOptionsInput, G extends GlobalOptionsKey[] | undefined = undefined>(config: FragmentDefinitionInput<T, G>): DefineBlokkliContext<T, G>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
INJECT_EDIT_CONTEXT,
|
|
3
|
+
INJECT_FRAGMENT_CONTEXT
|
|
4
|
+
} from "../helpers/symbols.js";
|
|
5
|
+
import { getRuntimeOptionValue } from "../helpers/runtimeHelpers/index.js";
|
|
6
|
+
import {
|
|
7
|
+
computed,
|
|
8
|
+
getCurrentInstance,
|
|
9
|
+
inject,
|
|
10
|
+
onBeforeUnmount,
|
|
11
|
+
onMounted
|
|
12
|
+
} from "#imports";
|
|
13
|
+
import { globalOptionsDefaults } from "#blokkli/default-global-options";
|
|
14
|
+
export function defineBlokkliFragment(config) {
|
|
15
|
+
const ctx = inject(INJECT_FRAGMENT_CONTEXT);
|
|
16
|
+
const editContext = inject(INJECT_EDIT_CONTEXT, null);
|
|
17
|
+
const optionKeys = [
|
|
18
|
+
...Object.keys(config.options || {}),
|
|
19
|
+
...config.globalOptions || []
|
|
20
|
+
];
|
|
21
|
+
const options = computed(() => {
|
|
22
|
+
const result = optionKeys.reduce((acc, key) => {
|
|
23
|
+
acc[key] = ctx.options.value[key];
|
|
24
|
+
return acc;
|
|
25
|
+
}, {});
|
|
26
|
+
optionKeys.forEach((key) => {
|
|
27
|
+
const definition = config.options?.[key] || globalOptionsDefaults[key];
|
|
28
|
+
if (!definition) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const value = result[key] === void 0 || result[key] === null ? definition.default : result[key];
|
|
32
|
+
result[key] = getRuntimeOptionValue(definition, value);
|
|
33
|
+
});
|
|
34
|
+
return result;
|
|
35
|
+
});
|
|
36
|
+
onMounted(() => {
|
|
37
|
+
if (editContext && editContext.dom) {
|
|
38
|
+
const instance = getCurrentInstance();
|
|
39
|
+
editContext.dom.registerBlock(
|
|
40
|
+
ctx.uuid,
|
|
41
|
+
instance,
|
|
42
|
+
"blokkli_fragment",
|
|
43
|
+
ctx.fieldListType.value,
|
|
44
|
+
ctx.parentType.value
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
onBeforeUnmount(() => {
|
|
49
|
+
if (editContext && ctx.uuid && editContext.dom) {
|
|
50
|
+
editContext.dom.unregisterBlock(ctx.uuid);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return { ...ctx, options };
|
|
54
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BlokkliApp } from '#blokkli/types';
|
|
2
|
+
/**
|
|
3
|
+
* Use the blokkli editor app.
|
|
4
|
+
*
|
|
5
|
+
* The app is only available when the editor is mounted. Calling this
|
|
6
|
+
* composable in normal rendering does not work.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useBlokkli(): BlokkliApp;
|