@blokkli/editor 2.0.0-alpha.13 → 2.0.0-alpha.15
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/module.d.mts +1 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +4873 -1167
- package/dist/modules/drupal/graphql/base/fragment.ParagraphsBlokkliConfigInput.graphql +31 -0
- package/dist/modules/drupal/graphql/base/fragment.blokkliProps.graphql +1 -0
- package/dist/modules/drupal/graphql/base/fragment.paragraphsBlokkliEditState.graphql +5 -0
- package/dist/modules/drupal/graphql/base/query.pbEntityConfig.graphql +5 -0
- package/dist/modules/drupal/graphql/features/publishNew.graphql +1 -4
- package/dist/modules/drupal/graphql/features/scheduler.graphql +31 -0
- package/dist/modules/drupal/graphql/features/transform.graphql +9 -1
- package/dist/modules/drupal/graphql/features/transform_host.graphql +38 -0
- package/dist/modules/drupal/graphql/mutations/update_host_options.graphql +15 -0
- package/dist/modules/drupal/index.d.mts +1 -1
- package/dist/modules/drupal/index.mjs +37 -7
- package/dist/modules/drupal/runtime/adapter/index.js +140 -5
- package/dist/runtime/adapter/index.d.ts +90 -1
- package/dist/runtime/blokkliPlugins/AddAction/index.vue +27 -3
- package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue +65 -0
- package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue.d.ts +26 -0
- package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +3 -0
- package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +3 -2
- package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +3 -3
- package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +49 -11
- package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue.d.ts +29 -15
- package/dist/runtime/blokkliPlugins/MenuButton/index.vue.d.ts +2 -2
- package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +6 -7
- package/dist/runtime/blokkliPlugins/Sidebar/index.vue +2 -9
- package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +1 -1
- package/dist/runtime/blokkliPlugins/ViewOption/index.vue +6 -3
- package/dist/runtime/blokkliPlugins/index.d.ts +8 -7
- package/dist/runtime/blokkliPlugins/index.js +15 -13
- package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -1
- package/dist/runtime/components/BlokkliProvider.vue +1 -0
- package/dist/runtime/components/BlokkliProvider.vue.d.ts +1 -0
- package/dist/runtime/components/Edit/Actions/index.vue +39 -67
- package/dist/runtime/components/Edit/AddListItem/index.vue +2 -5
- package/dist/runtime/components/Edit/AddListItem/index.vue.d.ts +1 -1
- package/dist/runtime/components/Edit/AddListItemIcon/index.vue +19 -0
- package/dist/runtime/components/Edit/AddListItemIcon/index.vue.d.ts +15 -0
- package/dist/runtime/components/Edit/AppMenu/index.vue +5 -5
- package/dist/runtime/components/Edit/Dialog/index.vue +5 -1
- package/dist/runtime/components/Edit/Dialog/index.vue.d.ts +1 -1
- package/dist/runtime/components/Edit/DiffViewer/State.vue +276 -0
- package/dist/runtime/components/Edit/DiffViewer/State.vue.d.ts +16 -0
- package/dist/runtime/components/Edit/DragInteractions/index.vue +35 -6
- package/dist/runtime/components/Edit/EditProvider.vue +46 -35
- package/dist/runtime/components/Edit/Features/AddList/index.vue +15 -25
- package/dist/runtime/components/Edit/Features/Analyze/Overlay/fragment.glsl +58 -0
- package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue +168 -0
- package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue.d.ts +9 -0
- package/dist/runtime/components/Edit/Features/Analyze/Overlay/vertex.glsl +72 -0
- package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue +159 -0
- package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue.d.ts +7 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue +100 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue.d.ts +6 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue +56 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue.d.ts +3 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue +87 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue.d.ts +7 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue +101 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue.d.ts +8 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue +18 -0
- package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue.d.ts +8 -0
- package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue +92 -0
- package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue.d.ts +17 -0
- package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue +77 -0
- package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue.d.ts +6 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.d.ts +12 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.js +75 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.d.ts +4 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.js +5 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.d.ts +32 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.js +45 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.d.ts +5 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.js +95 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.d.ts +3 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.js +13 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.d.ts +2 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.js +2 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.d.ts +2 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.js +165 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.d.ts +44 -0
- package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.js +0 -0
- package/dist/runtime/components/Edit/Features/Analyze/helper.d.ts +5 -0
- package/dist/runtime/components/Edit/Features/Analyze/helper.js +28 -0
- package/dist/runtime/components/Edit/Features/Analyze/index.vue +44 -0
- package/dist/runtime/components/Edit/Features/Anchors/Renderer.vue +136 -0
- package/dist/runtime/components/Edit/Features/Anchors/index.vue +32 -0
- package/dist/runtime/components/Edit/Features/Anchors/index.vue.d.ts +2 -0
- package/dist/runtime/components/Edit/Features/Artboard/Overview/index.vue +25 -13
- package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue +296 -0
- package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue.d.ts +7 -0
- package/dist/runtime/components/Edit/Features/Artboard/index.vue +10 -245
- package/dist/runtime/components/Edit/Features/Assistant/index.vue +3 -2
- package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +4 -4
- package/dist/runtime/components/Edit/Features/Clipboard/index.vue +161 -28
- package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +16 -4
- package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue.d.ts +0 -1
- package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +4 -53
- package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +3 -2
- package/dist/runtime/components/Edit/Features/Conversions/index.vue +12 -14
- package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +14 -0
- package/dist/runtime/components/Edit/Features/Debug/index.vue +27 -24
- package/dist/runtime/components/Edit/Features/Diff/DiffView/index.vue +13 -190
- package/dist/runtime/components/Edit/Features/Diff/index.vue +2 -2
- package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +4 -4
- package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +1 -1
- package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +35 -71
- package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +1 -1
- package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +62 -48
- package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +3 -3
- package/dist/runtime/components/Edit/Features/EditForm/index.vue +3 -3
- package/dist/runtime/components/Edit/Features/EditableField/index.vue +6 -2
- package/dist/runtime/components/Edit/Features/EditableMask/index.vue +3 -20
- package/dist/runtime/components/Edit/Features/EntityTitle/index.vue +33 -1
- package/dist/runtime/components/Edit/Features/Fragments/index.vue +3 -2
- package/dist/runtime/components/Edit/Features/History/index.vue +35 -12
- package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +6 -2
- package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +3 -2
- package/dist/runtime/components/Edit/Features/Library/index.vue +11 -9
- package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +5 -8
- package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +1 -1
- package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +9 -4
- package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +1 -1
- package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +8 -14
- package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +3 -2
- package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue.d.ts +2 -0
- package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +9 -3
- package/dist/runtime/components/Edit/Features/Options/Form/Item.vue.d.ts +0 -1
- package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +37 -19
- package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue.d.ts +8 -2
- package/dist/runtime/components/Edit/Features/Options/Form/index.vue +81 -37
- package/dist/runtime/components/Edit/Features/Options/Form/index.vue.d.ts +5 -5
- package/dist/runtime/components/Edit/Features/Options/index.vue +30 -6
- package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +3 -3
- package/dist/runtime/components/Edit/Features/Publish/Dialog/Item.vue +41 -14
- package/dist/runtime/components/Edit/Features/Publish/Dialog/Item.vue.d.ts +2 -0
- package/dist/runtime/components/Edit/Features/Publish/Dialog/PublishOption.vue +47 -0
- package/dist/runtime/components/Edit/Features/Publish/Dialog/PublishOption.vue.d.ts +19 -0
- package/dist/runtime/components/Edit/Features/Publish/Dialog/ScheduleDate.vue +183 -0
- package/dist/runtime/components/Edit/Features/Publish/Dialog/ScheduleDate.vue.d.ts +13 -0
- package/dist/runtime/components/Edit/Features/Publish/Dialog/Summary.vue +83 -0
- package/dist/runtime/components/Edit/Features/Publish/Dialog/Summary.vue.d.ts +9 -0
- package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue +381 -128
- package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue.d.ts +3 -14
- package/dist/runtime/components/Edit/Features/Publish/index.vue +37 -22
- package/dist/runtime/components/Edit/Features/Revert/index.vue +3 -3
- package/dist/runtime/components/Edit/Features/Search/index.vue +3 -2
- package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue +54 -0
- package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue.d.ts +14 -0
- package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue +120 -0
- package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue.d.ts +15 -0
- package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue +459 -0
- package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue.d.ts +6 -0
- package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +14 -9
- package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +32 -11
- package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +1 -1
- package/dist/runtime/components/Edit/Features/Selection/index.vue +76 -7
- package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +12 -17
- package/dist/runtime/components/Edit/Features/Settings/index.vue +11 -25
- package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +5 -1
- package/dist/runtime/components/Edit/Features/Theme/index.vue +2 -1
- package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +3 -2
- package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue +198 -0
- package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue.d.ts +13 -0
- package/dist/runtime/components/Edit/Features/Transform/index.vue +155 -44
- package/dist/runtime/components/Edit/Form/Datepicker/index.vue +198 -0
- package/dist/runtime/components/Edit/Form/Datepicker/index.vue.d.ts +15 -0
- package/dist/runtime/components/Edit/Form/Radio/index.vue +33 -0
- package/dist/runtime/components/Edit/Form/Radio/index.vue.d.ts +20 -0
- package/dist/runtime/components/Edit/Form/RadioTabs/index.vue +37 -0
- package/dist/runtime/components/Edit/Form/RadioTabs/index.vue.d.ts +22 -0
- package/dist/runtime/components/Edit/Form/Select/index.vue +29 -0
- package/dist/runtime/components/Edit/Form/Select/index.vue.d.ts +20 -0
- package/dist/runtime/components/Edit/Form/Text/index.vue +33 -0
- package/dist/runtime/components/Edit/Form/Text/index.vue.d.ts +19 -0
- package/dist/runtime/components/Edit/Form/Textarea/index.vue +13 -6
- package/dist/runtime/components/Edit/Form/Textarea/index.vue.d.ts +4 -0
- package/dist/runtime/components/Edit/FormOverlay/index.vue +1 -1
- package/dist/runtime/components/Edit/Indicators/index.vue +123 -0
- package/dist/runtime/components/Edit/Indicators/index.vue.d.ts +2 -0
- package/dist/runtime/components/Edit/ItemIcon/index.vue +2 -1
- package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue +66 -0
- package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue.d.ts +7 -0
- package/dist/runtime/components/Edit/Konami/Game/blokkli.png +0 -0
- package/dist/runtime/components/Edit/Konami/Game/charmap.d.ts +2 -0
- package/dist/runtime/components/Edit/Konami/Game/charmap.js +168 -0
- package/dist/runtime/components/Edit/Konami/Game/index.vue +752 -0
- package/dist/runtime/components/Edit/Konami/Game/index.vue.d.ts +6 -0
- package/dist/runtime/components/Edit/Konami/Game/textRendering.d.ts +8 -0
- package/dist/runtime/components/Edit/Konami/Game/textRendering.js +138 -0
- package/dist/runtime/components/Edit/Konami/Game/useIconRendering.d.ts +9 -0
- package/dist/runtime/components/Edit/Konami/Game/useIconRendering.js +130 -0
- package/dist/runtime/components/Edit/Konami/index.vue +44 -0
- package/dist/runtime/components/Edit/Konami/index.vue.d.ts +2 -0
- package/dist/runtime/components/Edit/Loading/index.vue +6 -2
- package/dist/runtime/components/Edit/Loading/index.vue.d.ts +2 -0
- package/dist/runtime/components/Edit/Messages/index.vue +8 -3
- package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue +17 -0
- package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue.d.ts +11 -0
- package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue +37 -0
- package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue.d.ts +11 -0
- package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue +43 -0
- package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue.d.ts +11 -0
- package/dist/runtime/components/Edit/PluginConfigForm/index.vue +57 -0
- package/dist/runtime/components/Edit/PluginConfigForm/index.vue.d.ts +16 -0
- package/dist/runtime/components/Edit/PreviewProvider.vue +3 -4
- package/dist/runtime/components/Edit/RelativeTime/index.vue +3 -2
- package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +8 -3
- package/dist/runtime/components/Edit/SystemRequirements/index.vue +3 -3
- package/dist/runtime/components/Edit/Toolbar/index.vue +3 -2
- package/dist/runtime/components/Edit/Transition/index.vue +41 -0
- package/dist/runtime/components/Edit/Transition/index.vue.d.ts +19 -0
- package/dist/runtime/components/Edit/index.d.ts +24 -15
- package/dist/runtime/components/Edit/index.js +46 -28
- package/dist/runtime/composables/defineBlokkli.js +7 -3
- package/dist/runtime/composables/defineBlokkliFeature.d.ts +4 -7
- package/dist/runtime/composables/defineBlokkliProvider.d.ts +11 -0
- package/dist/runtime/composables/defineBlokkliProvider.js +46 -0
- package/dist/runtime/composables/useBlokkliHelper.js +1 -1
- package/dist/runtime/constants/index.d.ts +3 -0
- package/dist/runtime/constants/index.js +3 -0
- package/dist/runtime/css/output.css +1 -1
- package/dist/runtime/helpers/addElementClasses.d.ts +2 -0
- package/dist/runtime/helpers/addElementClasses.js +24 -0
- package/dist/runtime/helpers/animationProvider.d.ts +4 -2
- package/dist/runtime/helpers/animationProvider.js +7 -2
- package/dist/runtime/helpers/bundles/index.d.ts +1 -0
- package/dist/runtime/helpers/bundles/index.js +4 -0
- package/dist/runtime/helpers/composables/useStickyToolbar.d.ts +20 -0
- package/dist/runtime/helpers/composables/useStickyToolbar.js +215 -0
- package/dist/runtime/helpers/definitionProvider.d.ts +2 -1
- package/dist/runtime/helpers/definitionProvider.js +17 -0
- package/dist/runtime/helpers/domProvider.d.ts +2 -1
- package/dist/runtime/helpers/domProvider.js +89 -43
- package/dist/runtime/helpers/dropTargets/index.d.ts +6 -0
- package/dist/runtime/helpers/dropTargets/index.js +49 -0
- package/dist/runtime/helpers/eventBus.d.ts +1 -1
- package/dist/runtime/helpers/eventBus.js +2 -2
- package/dist/runtime/helpers/index.d.ts +10 -1
- package/dist/runtime/helpers/index.js +57 -0
- package/dist/runtime/helpers/indicatorsProvider.d.ts +10 -0
- package/dist/runtime/helpers/indicatorsProvider.js +23 -0
- package/dist/runtime/helpers/keyboardProvider.d.ts +2 -0
- package/dist/runtime/helpers/keyboardProvider.js +17 -1
- package/dist/runtime/helpers/pluginProvider.d.ts +10 -0
- package/dist/runtime/helpers/pluginProvider.js +33 -0
- package/dist/runtime/helpers/renderCycle.d.ts +1 -0
- package/dist/runtime/helpers/renderCycle.js +10 -0
- package/dist/runtime/helpers/runtimeHelpers/index.js +14 -11
- package/dist/runtime/helpers/selectionProvider.d.ts +16 -0
- package/dist/runtime/helpers/selectionProvider.js +47 -35
- package/dist/runtime/helpers/stateProvider.d.ts +7 -2
- package/dist/runtime/helpers/stateProvider.js +89 -14
- package/dist/runtime/helpers/storageProvider.d.ts +4 -3
- package/dist/runtime/helpers/storageProvider.js +56 -3
- package/dist/runtime/helpers/symbols.d.ts +1 -0
- package/dist/runtime/helpers/symbols.js +1 -0
- package/dist/runtime/helpers/textProvider.js +6 -0
- package/dist/runtime/helpers/themeProvider.d.ts +2 -0
- package/dist/runtime/helpers/themeProvider.js +4 -1
- package/dist/runtime/helpers/transform.js +1 -3
- package/dist/runtime/helpers/uiProvider.d.ts +9 -2
- package/dist/runtime/helpers/uiProvider.js +72 -47
- package/dist/runtime/helpers/useTransitionedValue.d.ts +18 -0
- package/dist/runtime/helpers/useTransitionedValue.js +57 -0
- package/dist/runtime/icons/anchor.svg +1 -0
- package/dist/runtime/icons/arrow-left.svg +1 -1
- package/dist/runtime/icons/arrow-right.svg +1 -1
- package/dist/runtime/icons/arrow-top-right.svg +1 -0
- package/dist/runtime/icons/calendar-clock.svg +1 -0
- package/dist/runtime/icons/chart.svg +1 -0
- package/dist/runtime/icons/copy.svg +1 -0
- package/dist/runtime/icons/cursor-move.svg +1 -1
- package/dist/runtime/icons/diff.svg +1 -1
- package/dist/runtime/icons/eye-off.svg +1 -0
- package/dist/runtime/icons/eye.svg +1 -1
- package/dist/runtime/icons/info.svg +1 -1
- package/dist/runtime/icons/link.svg +1 -0
- package/dist/runtime/icons/speedometer.svg +1 -0
- package/dist/runtime/types/blokkOptions.d.ts +8 -0
- package/dist/runtime/types/index.d.ts +172 -6
- package/dist/runtime/types/theme.d.ts +2 -1
- package/dist/shared/{editor.gz_ac6uT.d.mts → editor.CKsrTpc1.d.mts} +1 -1
- package/package.json +20 -5
- package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +0 -22
- package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +0 -41
- /package/dist/runtime/components/Edit/Features/{FieldAreas/Overlay → Analyze}/index.vue.d.ts +0 -0
- /package/dist/runtime/components/Edit/Features/{FieldAreas/index.vue.d.ts → Anchors/Renderer.vue.d.ts} +0 -0
|
@@ -5,13 +5,28 @@ import {
|
|
|
5
5
|
readonly,
|
|
6
6
|
provide
|
|
7
7
|
} from "vue";
|
|
8
|
-
import { refreshNuxtData } from "nuxt/app";
|
|
8
|
+
import { refreshNuxtData, useState } from "nuxt/app";
|
|
9
9
|
import { INJECT_MUTATED_FIELDS_MAP } from "./symbols.js";
|
|
10
10
|
import onBlokkliEvent from "./composables/onBlokkliEvent.js";
|
|
11
11
|
import { falsy, getFieldKey } from "#blokkli/helpers";
|
|
12
12
|
import { eventBus, emitMessage } from "#blokkli/helpers/eventBus";
|
|
13
13
|
import { nextTick } from "#imports";
|
|
14
|
-
|
|
14
|
+
import { addElementClasses } from "./addElementClasses.js";
|
|
15
|
+
const HOST_OPTION_KEY = "HOST";
|
|
16
|
+
function mapPublishOptions(context) {
|
|
17
|
+
return {
|
|
18
|
+
canPublish: !!context?.publishOptions?.canPublish,
|
|
19
|
+
isRevisionable: !!context?.publishOptions?.isRevisionable,
|
|
20
|
+
hasRevisionLogMessage: !!context?.publishOptions?.hasRevisionLogMessage,
|
|
21
|
+
canSchedule: !!context?.publishOptions?.canSchedule,
|
|
22
|
+
lastChanged: context?.publishOptions?.lastChanged ?? null,
|
|
23
|
+
publishOn: context?.publishOptions?.publishOn ?? null,
|
|
24
|
+
revisionLogMessage: context?.publishOptions?.revisionLogMessage ?? null
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export default async function(adapter, context, $t, providerKey) {
|
|
28
|
+
let _mappedState = null;
|
|
29
|
+
const overrideHostOptions = useState("options:" + providerKey);
|
|
15
30
|
const stateLoaded = ref(false);
|
|
16
31
|
const stateLoadError = ref(false);
|
|
17
32
|
const owner = ref(null);
|
|
@@ -23,6 +38,15 @@ export default async function(adapter, context, $t) {
|
|
|
23
38
|
const mutations = ref([]);
|
|
24
39
|
const violations = ref([]);
|
|
25
40
|
const mutatedEntity = ref(null);
|
|
41
|
+
const publishOptions = ref({
|
|
42
|
+
canPublish: false,
|
|
43
|
+
isRevisionable: false,
|
|
44
|
+
hasRevisionLogMessage: false,
|
|
45
|
+
lastChanged: null,
|
|
46
|
+
canSchedule: false,
|
|
47
|
+
publishOn: null,
|
|
48
|
+
revisionLogMessage: null
|
|
49
|
+
});
|
|
26
50
|
const currentMutationIndex = ref(-1);
|
|
27
51
|
const isLoading = ref(false);
|
|
28
52
|
const entity = ref({
|
|
@@ -32,9 +56,10 @@ export default async function(adapter, context, $t) {
|
|
|
32
56
|
});
|
|
33
57
|
let fieldBlockCount = {};
|
|
34
58
|
const blockBundleCount = ref({});
|
|
35
|
-
const fieldListItemMap =
|
|
59
|
+
const fieldListItemMap = /* @__PURE__ */ new Map();
|
|
60
|
+
let bundleToUuids = {};
|
|
36
61
|
function getFieldListItem(uuid) {
|
|
37
|
-
const fieldKey = fieldListItemMap
|
|
62
|
+
const fieldKey = fieldListItemMap.get(uuid);
|
|
38
63
|
if (!fieldKey) {
|
|
39
64
|
return;
|
|
40
65
|
}
|
|
@@ -45,7 +70,7 @@ export default async function(adapter, context, $t) {
|
|
|
45
70
|
return field.list.find((v) => v.uuid === uuid);
|
|
46
71
|
}
|
|
47
72
|
function getFieldListForBlock(uuid) {
|
|
48
|
-
const fieldKey = fieldListItemMap
|
|
73
|
+
const fieldKey = fieldListItemMap.get(uuid);
|
|
49
74
|
if (!fieldKey) {
|
|
50
75
|
return;
|
|
51
76
|
}
|
|
@@ -58,17 +83,35 @@ export default async function(adapter, context, $t) {
|
|
|
58
83
|
availableLanguages: [],
|
|
59
84
|
translations: []
|
|
60
85
|
});
|
|
61
|
-
function
|
|
86
|
+
function updatePublishOptions(newPublishOptions) {
|
|
87
|
+
publishOptions.value.canPublish = newPublishOptions.canPublish;
|
|
88
|
+
publishOptions.value.isRevisionable = newPublishOptions.isRevisionable;
|
|
89
|
+
publishOptions.value.hasRevisionLogMessage = newPublishOptions.hasRevisionLogMessage;
|
|
90
|
+
publishOptions.value.lastChanged = newPublishOptions.lastChanged;
|
|
91
|
+
publishOptions.value.canSchedule = newPublishOptions.canSchedule;
|
|
92
|
+
publishOptions.value.publishOn = newPublishOptions.publishOn;
|
|
93
|
+
publishOptions.value.revisionLogMessage = newPublishOptions.revisionLogMessage;
|
|
94
|
+
}
|
|
95
|
+
function setContext(context2, override) {
|
|
96
|
+
if (!override) {
|
|
97
|
+
_mappedState = context2 ?? null;
|
|
98
|
+
}
|
|
62
99
|
const options = context2?.mutatedState?.mutatedOptions || {};
|
|
63
100
|
const optionKeys = Object.keys(options);
|
|
64
101
|
for (let i = 0; i < optionKeys.length; i++) {
|
|
65
102
|
const key = optionKeys[i];
|
|
66
103
|
const newOptions = options[key];
|
|
67
|
-
const
|
|
68
|
-
if (!
|
|
104
|
+
const existing2 = mutatedOptions[key];
|
|
105
|
+
if (!existing2 || JSON.stringify(existing2) !== JSON.stringify(newOptions)) {
|
|
69
106
|
mutatedOptions[key] = newOptions;
|
|
70
107
|
}
|
|
71
108
|
}
|
|
109
|
+
const hostOptions = context2?.mutatedState?.mutatedHostOptions ?? {};
|
|
110
|
+
const existing = mutatedOptions[HOST_OPTION_KEY];
|
|
111
|
+
if (!existing || JSON.stringify(existing) !== JSON.stringify(hostOptions)) {
|
|
112
|
+
mutatedOptions[HOST_OPTION_KEY] = hostOptions ?? "";
|
|
113
|
+
overrideHostOptions.value = hostOptions;
|
|
114
|
+
}
|
|
72
115
|
mutations.value = context2?.mutations || [];
|
|
73
116
|
violations.value = context2?.mutatedState?.violations || [];
|
|
74
117
|
const currentIndex = context2?.currentIndex;
|
|
@@ -80,6 +123,7 @@ export default async function(adapter, context, $t) {
|
|
|
80
123
|
entity.value.label = context2?.entity?.label;
|
|
81
124
|
entity.value.status = context2?.entity?.status;
|
|
82
125
|
entity.value.bundleLabel = context2?.entity?.bundleLabel || "";
|
|
126
|
+
updatePublishOptions(mapPublishOptions(context2));
|
|
83
127
|
translation.value.isTranslatable = !!context2?.translationState?.isTranslatable;
|
|
84
128
|
translation.value.translations = context2?.translationState?.translations?.filter(falsy) || [];
|
|
85
129
|
translation.value.sourceLanguage = context2?.translationState?.sourceLanguage || "";
|
|
@@ -96,13 +140,15 @@ export default async function(adapter, context, $t) {
|
|
|
96
140
|
mutatedEntity.value = context2?.mutatedEntity;
|
|
97
141
|
const visitedFieldKeys = [];
|
|
98
142
|
const newBlockBundleCount = {};
|
|
143
|
+
fieldListItemMap.clear();
|
|
99
144
|
fieldBlockCount = {};
|
|
145
|
+
bundleToUuids = {};
|
|
100
146
|
for (let i = 0; i < newMutatedFields.length; i++) {
|
|
101
147
|
const field = newMutatedFields[i];
|
|
102
148
|
const key = getFieldKey(field.entityUuid, field.name);
|
|
103
149
|
visitedFieldKeys.push(key);
|
|
104
|
-
const
|
|
105
|
-
if (!
|
|
150
|
+
const existing2 = mutatedFieldsMap[key];
|
|
151
|
+
if (!existing2 || existing2.list.length !== field.list.length || JSON.stringify(existing2.list) !== JSON.stringify(field.list)) {
|
|
106
152
|
mutatedFieldsMap[key] = field;
|
|
107
153
|
}
|
|
108
154
|
for (let j = 0; j < field.list.length; j++) {
|
|
@@ -111,7 +157,11 @@ export default async function(adapter, context, $t) {
|
|
|
111
157
|
newBlockBundleCount[item.bundle] = 0;
|
|
112
158
|
}
|
|
113
159
|
newBlockBundleCount[item.bundle]++;
|
|
114
|
-
fieldListItemMap
|
|
160
|
+
fieldListItemMap.set(item.uuid, key);
|
|
161
|
+
if (!bundleToUuids[item.bundle]) {
|
|
162
|
+
bundleToUuids[item.bundle] = [];
|
|
163
|
+
}
|
|
164
|
+
bundleToUuids[item.bundle].push(item.uuid);
|
|
115
165
|
}
|
|
116
166
|
}
|
|
117
167
|
blockBundleCount.value = newBlockBundleCount;
|
|
@@ -144,13 +194,18 @@ export default async function(adapter, context, $t) {
|
|
|
144
194
|
return count;
|
|
145
195
|
}
|
|
146
196
|
function lockBody() {
|
|
147
|
-
document.body.classList.add("bk-body-loading");
|
|
148
197
|
isLoading.value = true;
|
|
149
198
|
}
|
|
150
199
|
function unlockBody() {
|
|
151
|
-
document.body.classList.remove("bk-body-loading");
|
|
152
200
|
isLoading.value = false;
|
|
153
201
|
}
|
|
202
|
+
function getAllUuids(bundle) {
|
|
203
|
+
if (!bundle) {
|
|
204
|
+
return [...fieldListItemMap.keys()];
|
|
205
|
+
}
|
|
206
|
+
return bundleToUuids[bundle] ?? [];
|
|
207
|
+
}
|
|
208
|
+
addElementClasses(document.body, "bk-body-loading", isLoading);
|
|
154
209
|
const mutateWithLoadingState = async (callback, errorMessage, successMessage) => {
|
|
155
210
|
if (!callback) {
|
|
156
211
|
return true;
|
|
@@ -228,10 +283,27 @@ export default async function(adapter, context, $t) {
|
|
|
228
283
|
const stateAvailable = computed(
|
|
229
284
|
() => stateLoaded.value && !stateLoadError.value
|
|
230
285
|
);
|
|
286
|
+
function getMappedState() {
|
|
287
|
+
if (!_mappedState) {
|
|
288
|
+
throw new Error("Called getMappedState() before a state is available.");
|
|
289
|
+
}
|
|
290
|
+
return _mappedState;
|
|
291
|
+
}
|
|
292
|
+
function setOverrideState(state) {
|
|
293
|
+
setContext(state, true);
|
|
294
|
+
}
|
|
295
|
+
function clearOverrideState() {
|
|
296
|
+
if (!_mappedState) {
|
|
297
|
+
throw new Error("Missing previous state.");
|
|
298
|
+
}
|
|
299
|
+
setContext(_mappedState);
|
|
300
|
+
}
|
|
231
301
|
return {
|
|
232
302
|
stateAvailable,
|
|
303
|
+
getMappedState,
|
|
233
304
|
refreshKey,
|
|
234
305
|
owner: readonly(owner),
|
|
306
|
+
publishOptions: readonly(publishOptions),
|
|
235
307
|
mutatedFields,
|
|
236
308
|
entity,
|
|
237
309
|
mutatedOptions,
|
|
@@ -248,6 +320,9 @@ export default async function(adapter, context, $t) {
|
|
|
248
320
|
getBlockBundleCount,
|
|
249
321
|
getFieldListItem,
|
|
250
322
|
getMutatedField,
|
|
251
|
-
getFieldListForBlock
|
|
323
|
+
getFieldListForBlock,
|
|
324
|
+
getAllUuids,
|
|
325
|
+
setOverrideState,
|
|
326
|
+
clearOverrideState
|
|
252
327
|
};
|
|
253
328
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { type ComputedRef, type WritableComputedRef } from '
|
|
1
|
+
import { type ComputedRef, type WritableComputedRef } from '#imports';
|
|
2
|
+
import type { BlokkliAdapter } from '#blokkli/adapter';
|
|
2
3
|
export type StorageProvider = {
|
|
3
|
-
use: <T>(key: string | ComputedRef<string>, defaultValue: T) => WritableComputedRef<T>;
|
|
4
|
+
use: <T>(key: string | ComputedRef<string>, defaultValue: T, persist?: boolean) => WritableComputedRef<T>;
|
|
4
5
|
clearAll: () => void;
|
|
5
6
|
clear: (key: string) => void;
|
|
6
7
|
};
|
|
@@ -12,4 +13,4 @@ export type StorageProvider = {
|
|
|
12
13
|
* This composable can be used to keep state across page navigations and
|
|
13
14
|
* even after a refresh.
|
|
14
15
|
*/
|
|
15
|
-
export default function (): StorageProvider
|
|
16
|
+
export default function (adapter: BlokkliAdapter<any>): Promise<StorageProvider>;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
onBeforeUnmount,
|
|
4
|
+
ref,
|
|
5
|
+
watch
|
|
6
|
+
} from "#imports";
|
|
2
7
|
import { storageDefaults } from "#blokkli-build/config";
|
|
3
8
|
const PREFIX = "blokkli:";
|
|
4
9
|
const getExisting = (key) => {
|
|
@@ -10,10 +15,53 @@ const getExisting = (key) => {
|
|
|
10
15
|
} catch {
|
|
11
16
|
}
|
|
12
17
|
};
|
|
13
|
-
export default function() {
|
|
18
|
+
export default async function(adapter) {
|
|
14
19
|
const values = ref({});
|
|
15
20
|
const defaults = ref({});
|
|
16
|
-
|
|
21
|
+
let timeout = null;
|
|
22
|
+
const persistableKeys = ref([]);
|
|
23
|
+
onBeforeUnmount(() => {
|
|
24
|
+
if (timeout) {
|
|
25
|
+
window.clearTimeout(timeout);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
const persistedValues = adapter.userSettings ? await adapter.userSettings.load().then((v) => {
|
|
29
|
+
if (typeof v === "object" && v !== null) {
|
|
30
|
+
return JSON.stringify(v);
|
|
31
|
+
}
|
|
32
|
+
return v;
|
|
33
|
+
}) : null;
|
|
34
|
+
if (persistedValues) {
|
|
35
|
+
values.value = JSON.parse(persistedValues);
|
|
36
|
+
}
|
|
37
|
+
const persistableData = computed(() => {
|
|
38
|
+
const mapped = [...persistableKeys.value].sort().reduce((acc, key) => {
|
|
39
|
+
const value = values.value[key];
|
|
40
|
+
if (value !== void 0) {
|
|
41
|
+
acc[key] = value;
|
|
42
|
+
}
|
|
43
|
+
return acc;
|
|
44
|
+
}, {});
|
|
45
|
+
return JSON.stringify(mapped);
|
|
46
|
+
});
|
|
47
|
+
function persistUserSettings() {
|
|
48
|
+
if (timeout) {
|
|
49
|
+
window.clearTimeout(timeout);
|
|
50
|
+
}
|
|
51
|
+
timeout = window.setTimeout(async () => {
|
|
52
|
+
if (!adapter.userSettings) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (persistableData.value === persistedValues) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
await adapter.userSettings.persist(persistableData.value);
|
|
59
|
+
}, 1e3);
|
|
60
|
+
}
|
|
61
|
+
if (adapter.userSettings) {
|
|
62
|
+
watch(persistableData, persistUserSettings);
|
|
63
|
+
}
|
|
64
|
+
const use = (key, providedDefaultValue, persist) => {
|
|
17
65
|
const storageKey = computed(
|
|
18
66
|
() => PREFIX + (typeof key === "string" ? key : key.value)
|
|
19
67
|
);
|
|
@@ -30,6 +78,11 @@ export default function() {
|
|
|
30
78
|
values.value[storageKey.value] = defaultValue;
|
|
31
79
|
}
|
|
32
80
|
}
|
|
81
|
+
if (persist) {
|
|
82
|
+
if (!persistableKeys.value.includes(storageKey.value)) {
|
|
83
|
+
persistableKeys.value.push(storageKey.value);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
33
86
|
return computed({
|
|
34
87
|
get() {
|
|
35
88
|
const v = values.value[storageKey.value];
|
|
@@ -17,6 +17,7 @@ export declare const INJECT_MUTATED_FIELDS_MAP: unique symbol;
|
|
|
17
17
|
export declare const INJECT_ENTITY_CONTEXT: unique symbol;
|
|
18
18
|
export declare const INJECT_PROVIDER_CONTEXT: unique symbol;
|
|
19
19
|
export declare const INJECT_FRAGMENT_CONTEXT: unique symbol;
|
|
20
|
+
export declare const INJECT_PROVIDER_KEY: unique symbol;
|
|
20
21
|
export declare const INJECT_EDIT_FIELD_LIST_COMPONENT: unique symbol;
|
|
21
22
|
export declare const INJECT_EDIT_LOGGER: unique symbol;
|
|
22
23
|
export declare const BK_HIDDEN_GLOBALLY = "bkHiddenGlobally";
|
|
@@ -17,6 +17,7 @@ export const INJECT_MUTATED_FIELDS_MAP = Symbol("blokkli_mutated_fields_map");
|
|
|
17
17
|
export const INJECT_ENTITY_CONTEXT = Symbol("blokkli_entity_context");
|
|
18
18
|
export const INJECT_PROVIDER_CONTEXT = Symbol("blokkli_provider_context");
|
|
19
19
|
export const INJECT_FRAGMENT_CONTEXT = Symbol("blokkli_fragment_context");
|
|
20
|
+
export const INJECT_PROVIDER_KEY = Symbol("blokkli_provider_key");
|
|
20
21
|
export const INJECT_EDIT_FIELD_LIST_COMPONENT = Symbol(
|
|
21
22
|
"blokkli_edit_field_list_component"
|
|
22
23
|
);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { computed } from "vue";
|
|
2
2
|
import { translations } from "#blokkli-build/translations";
|
|
3
3
|
import { defaultLanguage, forceDefaultLanguage } from "#blokkli-build/config";
|
|
4
|
+
const DEBUG_SWISS_GERMAN = false;
|
|
4
5
|
export default function(context) {
|
|
5
6
|
const language = computed(() => {
|
|
6
7
|
if (forceDefaultLanguage) {
|
|
@@ -12,6 +13,11 @@ export default function(context) {
|
|
|
12
13
|
return defaultLanguage;
|
|
13
14
|
});
|
|
14
15
|
const currentTranslations = computed(() => {
|
|
16
|
+
const today = /* @__PURE__ */ new Date();
|
|
17
|
+
const isAprilFirst = today.getMonth() === 3 && today.getDate() === 1;
|
|
18
|
+
if (isAprilFirst && language.value === "de" || DEBUG_SWISS_GERMAN && import.meta.dev) {
|
|
19
|
+
return translations.gsw_CH || translations[language.value] || {};
|
|
20
|
+
}
|
|
15
21
|
return translations[language.value] || {};
|
|
16
22
|
});
|
|
17
23
|
return (key, defaultValue) => {
|
|
@@ -8,6 +8,7 @@ type ThemeMap = {
|
|
|
8
8
|
yellow: Ref<ThemeContextColors>;
|
|
9
9
|
red: Ref<ThemeContextColors>;
|
|
10
10
|
lime: Ref<ThemeContextColors>;
|
|
11
|
+
orange: Ref<ThemeContextColors>;
|
|
11
12
|
};
|
|
12
13
|
export type ThemeProvider = {
|
|
13
14
|
accent: Ref<ThemeColors>;
|
|
@@ -16,6 +17,7 @@ export type ThemeProvider = {
|
|
|
16
17
|
yellow: Ref<ThemeContextColors>;
|
|
17
18
|
red: Ref<ThemeContextColors>;
|
|
18
19
|
lime: Ref<ThemeContextColors>;
|
|
20
|
+
orange: Ref<ThemeContextColors>;
|
|
19
21
|
getDraggableStyle: (el: HTMLElement | SVGElement) => DraggableStyle;
|
|
20
22
|
setColor: <Group extends ThemeColorGroup | ThemeContextColorGroup>(group: Group, shade: Group extends ThemeColorGroup ? ThemeColorShade : ThemeContextColorShade, value: RGB) => void;
|
|
21
23
|
applyTheme: (name: ThemeName | 'custom') => void;
|
|
@@ -12,13 +12,15 @@ export default function() {
|
|
|
12
12
|
const yellow = ref(theme.yellow);
|
|
13
13
|
const red = ref(theme.red);
|
|
14
14
|
const lime = ref(theme.lime);
|
|
15
|
+
const orange = ref(theme.orange);
|
|
15
16
|
const themeMap = {
|
|
16
17
|
accent,
|
|
17
18
|
mono,
|
|
18
19
|
teal,
|
|
19
20
|
yellow,
|
|
20
21
|
red,
|
|
21
|
-
lime
|
|
22
|
+
lime,
|
|
23
|
+
orange
|
|
22
24
|
};
|
|
23
25
|
function getColor(color, key) {
|
|
24
26
|
return themeMap[color].value[key];
|
|
@@ -115,6 +117,7 @@ export default function() {
|
|
|
115
117
|
yellow,
|
|
116
118
|
red,
|
|
117
119
|
lime,
|
|
120
|
+
orange,
|
|
118
121
|
getDraggableStyle: function(el) {
|
|
119
122
|
return dragStyle.getStyle(el, theme.accent[700]);
|
|
120
123
|
},
|
|
@@ -6,9 +6,7 @@ export function filterTransforms(plugins, selectedItems, selectedBundles, allowe
|
|
|
6
6
|
if (plugin.max !== -1 && selectedItems.length > plugin.max) {
|
|
7
7
|
return false;
|
|
8
8
|
}
|
|
9
|
-
const allAllowedInList = plugin.targetBundles.every(
|
|
10
|
-
(bundle) => allowedBundles.includes(bundle)
|
|
11
|
-
);
|
|
9
|
+
const allAllowedInList = !plugin.targetBundles || plugin.targetBundles.every((bundle) => allowedBundles.includes(bundle));
|
|
12
10
|
if (!allAllowedInList) {
|
|
13
11
|
return false;
|
|
14
12
|
}
|
|
@@ -3,6 +3,7 @@ import type { StorageProvider } from './storageProvider.js';
|
|
|
3
3
|
import type { AddListOrientation, Coord, Rectangle, Size } from '#blokkli/types';
|
|
4
4
|
import type { Viewport } from '#blokkli/constants';
|
|
5
5
|
import type { StateProvider } from './stateProvider.js';
|
|
6
|
+
import type { AdapterContext } from '#blokkli/adapter';
|
|
6
7
|
export type UiProvider = {
|
|
7
8
|
rootElement: () => HTMLElement;
|
|
8
9
|
artboardElement: () => HTMLElement;
|
|
@@ -14,9 +15,12 @@ export type UiProvider = {
|
|
|
14
15
|
};
|
|
15
16
|
isMobile: ComputedRef<boolean>;
|
|
16
17
|
isDesktop: ComputedRef<boolean>;
|
|
17
|
-
isArtboard: () => boolean;
|
|
18
18
|
isAnimating: Ref<boolean>;
|
|
19
|
+
isAnalyzing: Ref<boolean>;
|
|
19
20
|
isProxyMode: Ref<boolean>;
|
|
21
|
+
hasDialogOpen: Ref<boolean>;
|
|
22
|
+
hasAddTooltipOpen: Ref<boolean>;
|
|
23
|
+
hasTransformOverlayOpen: Ref<boolean>;
|
|
20
24
|
isTransforming: ComputedRef<boolean>;
|
|
21
25
|
setTransform: (label?: string | null | undefined) => void;
|
|
22
26
|
transformLabel: ComputedRef<string>;
|
|
@@ -35,7 +39,10 @@ export type UiProvider = {
|
|
|
35
39
|
artboardScale: Ref<number>;
|
|
36
40
|
artboardOffset: Ref<Coord>;
|
|
37
41
|
selectionTopLeft: Ref<Coord>;
|
|
42
|
+
interfaceLanguage: ComputedRef<string>;
|
|
43
|
+
locale: ComputedRef<string>;
|
|
44
|
+
formatDate: (date: string | Date, options?: Intl.DateTimeFormatOptions) => string;
|
|
38
45
|
getAbsoluteElementRect: (v: HTMLElement | Rectangle, scale?: number, offset?: Coord) => Rectangle;
|
|
39
46
|
getViewportRelativeRect: (rect: Rectangle, scale?: number, offset?: Coord) => Rectangle;
|
|
40
47
|
};
|
|
41
|
-
export default function (storage: StorageProvider, state: StateProvider): UiProvider;
|
|
48
|
+
export default function (storage: StorageProvider, state: StateProvider, context: ComputedRef<AdapterContext>): UiProvider;
|
|
@@ -2,29 +2,47 @@ import {
|
|
|
2
2
|
onMounted,
|
|
3
3
|
onBeforeUnmount,
|
|
4
4
|
ref,
|
|
5
|
-
computed
|
|
6
|
-
watch
|
|
5
|
+
computed
|
|
7
6
|
} from "vue";
|
|
8
7
|
import { eventBus } from "./eventBus.js";
|
|
9
8
|
import { falsy } from "./index.js";
|
|
10
|
-
|
|
9
|
+
import { addElementClasses } from "./addElementClasses.js";
|
|
10
|
+
import { defaultLanguage, forceDefaultLanguage } from "#blokkli-build/config";
|
|
11
11
|
const CLASS_PROXY_MODE = "bk-is-proxy-mode";
|
|
12
|
-
|
|
12
|
+
const localeMap = {
|
|
13
|
+
de: "de-CH",
|
|
14
|
+
fr: "fr-CH",
|
|
15
|
+
it: "it-CH",
|
|
16
|
+
en: "en-GB"
|
|
17
|
+
};
|
|
18
|
+
export default function(storage, state, context) {
|
|
13
19
|
let cachedRootElement = null;
|
|
14
20
|
let cachedArtboardElement = null;
|
|
15
21
|
let cachedProviderElement = null;
|
|
22
|
+
const interfaceLanguage = computed(() => {
|
|
23
|
+
return forceDefaultLanguage ? defaultLanguage : context.value.language;
|
|
24
|
+
});
|
|
25
|
+
const locale = computed(() => {
|
|
26
|
+
const lang = interfaceLanguage.value;
|
|
27
|
+
return localeMap[lang] || lang;
|
|
28
|
+
});
|
|
16
29
|
const isProxyMode = ref(false);
|
|
17
30
|
const menuIsOpen = ref(false);
|
|
31
|
+
const hasDialogOpen = ref(false);
|
|
32
|
+
const hasAddTooltipOpen = ref(false);
|
|
33
|
+
const hasTransformOverlayOpen = ref(false);
|
|
18
34
|
const isAnimating = ref(false);
|
|
35
|
+
const isAnalyzing = ref(false);
|
|
19
36
|
const transformLabel = ref("");
|
|
20
37
|
const openContextMenu = ref("");
|
|
21
38
|
const selectionTopLeft = ref({ x: 0, y: 0 });
|
|
22
|
-
const useAnimationsSetting = storage.use("useAnimations", true);
|
|
23
|
-
const useAnimations = computed(() => useAnimationsSetting.value);
|
|
24
39
|
const baseSettings = storage.use("feature:settings:settings", {});
|
|
25
40
|
const lowPerformanceMode = computed(
|
|
26
41
|
() => baseSettings.value.lowPerformanceMode
|
|
27
42
|
);
|
|
43
|
+
const useAnimations = computed(
|
|
44
|
+
() => baseSettings.value.useAnimations !== false
|
|
45
|
+
);
|
|
28
46
|
const viewportBlockingRectsMap = ref(
|
|
29
47
|
{}
|
|
30
48
|
);
|
|
@@ -109,16 +127,6 @@ export default function(storage, state) {
|
|
|
109
127
|
eventBus.emit("ui:resized");
|
|
110
128
|
}, 400);
|
|
111
129
|
};
|
|
112
|
-
const isArtboard = () => {
|
|
113
|
-
return document.documentElement.classList.contains(ARTBOARD_CLASS);
|
|
114
|
-
};
|
|
115
|
-
watch(isAnimating, (is) => {
|
|
116
|
-
if (is) {
|
|
117
|
-
document.documentElement.classList.add("bk-is-animating");
|
|
118
|
-
} else {
|
|
119
|
-
document.documentElement.classList.remove("bk-is-animating");
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
130
|
const toolbarHeight = computed(() => {
|
|
123
131
|
if (isMobile.value) {
|
|
124
132
|
return 80;
|
|
@@ -200,35 +208,6 @@ export default function(storage, state) {
|
|
|
200
208
|
height: visibleViewportHeight.value - 20
|
|
201
209
|
};
|
|
202
210
|
});
|
|
203
|
-
function setProxyModeClass() {
|
|
204
|
-
document.documentElement.classList.remove(CLASS_PROXY_MODE);
|
|
205
|
-
if (isProxyMode.value) {
|
|
206
|
-
document.documentElement.classList.add(CLASS_PROXY_MODE);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
watch(isProxyMode, setProxyModeClass);
|
|
210
|
-
onMounted(() => {
|
|
211
|
-
document.documentElement.classList.add("bk-html-root");
|
|
212
|
-
document.body.classList.add("bk-body");
|
|
213
|
-
document.documentElement.classList.add(ARTBOARD_CLASS);
|
|
214
|
-
setProxyModeClass();
|
|
215
|
-
viewportWidth.value = window.innerWidth;
|
|
216
|
-
viewportHeight.value = window.innerHeight;
|
|
217
|
-
window.addEventListener("resize", onResize);
|
|
218
|
-
const artboard = artboardElement();
|
|
219
|
-
resizeObserver.observe(artboard);
|
|
220
|
-
});
|
|
221
|
-
onBeforeUnmount(() => {
|
|
222
|
-
window.removeEventListener("resize", onResize);
|
|
223
|
-
document.documentElement.classList.remove("bk-html-root");
|
|
224
|
-
document.body.classList.remove("bk-body");
|
|
225
|
-
document.documentElement.classList.remove(ARTBOARD_CLASS);
|
|
226
|
-
document.documentElement.classList.remove(CLASS_PROXY_MODE);
|
|
227
|
-
clearTimeout(resizeTimeout);
|
|
228
|
-
const artboard = artboardElement();
|
|
229
|
-
resizeObserver.unobserve(artboard);
|
|
230
|
-
resizeObserver.disconnect();
|
|
231
|
-
});
|
|
232
211
|
const viewport = computed(() => {
|
|
233
212
|
return {
|
|
234
213
|
width: viewportWidth.value,
|
|
@@ -260,6 +239,46 @@ export default function(storage, state) {
|
|
|
260
239
|
function setTransform(label) {
|
|
261
240
|
transformLabel.value = label || "";
|
|
262
241
|
}
|
|
242
|
+
function formatDate(date, options) {
|
|
243
|
+
const dateObj = typeof date === "string" ? new Date(date) : date;
|
|
244
|
+
const defaultOptions = {
|
|
245
|
+
year: "numeric",
|
|
246
|
+
month: "2-digit",
|
|
247
|
+
day: "2-digit",
|
|
248
|
+
hour: "2-digit",
|
|
249
|
+
minute: "2-digit"
|
|
250
|
+
};
|
|
251
|
+
return dateObj.toLocaleString(locale.value, options || defaultOptions);
|
|
252
|
+
}
|
|
253
|
+
addElementClasses(document.documentElement, "bk-is-animating", isAnimating);
|
|
254
|
+
addElementClasses(
|
|
255
|
+
document.documentElement,
|
|
256
|
+
"bk-has-sidebar-left",
|
|
257
|
+
activeSidebarLeft
|
|
258
|
+
);
|
|
259
|
+
addElementClasses(
|
|
260
|
+
document.documentElement,
|
|
261
|
+
"bk-has-sidebar-right",
|
|
262
|
+
activeSidebarRight
|
|
263
|
+
);
|
|
264
|
+
addElementClasses(document.documentElement, ["bk-html-root"]);
|
|
265
|
+
addElementClasses(document.body, "bk-body");
|
|
266
|
+
addElementClasses(document.documentElement, CLASS_PROXY_MODE, isProxyMode);
|
|
267
|
+
addElementClasses(document.documentElement, "bk-is-analyzing", isAnalyzing);
|
|
268
|
+
onMounted(() => {
|
|
269
|
+
viewportWidth.value = window.innerWidth;
|
|
270
|
+
viewportHeight.value = window.innerHeight;
|
|
271
|
+
window.addEventListener("resize", onResize);
|
|
272
|
+
const artboard = artboardElement();
|
|
273
|
+
resizeObserver.observe(artboard);
|
|
274
|
+
});
|
|
275
|
+
onBeforeUnmount(() => {
|
|
276
|
+
window.removeEventListener("resize", onResize);
|
|
277
|
+
clearTimeout(resizeTimeout);
|
|
278
|
+
const artboard = artboardElement();
|
|
279
|
+
resizeObserver.unobserve(artboard);
|
|
280
|
+
resizeObserver.disconnect();
|
|
281
|
+
});
|
|
263
282
|
return {
|
|
264
283
|
menu: {
|
|
265
284
|
isOpen: menuIsOpen,
|
|
@@ -271,8 +290,8 @@ export default function(storage, state) {
|
|
|
271
290
|
providerElement,
|
|
272
291
|
isMobile,
|
|
273
292
|
isDesktop,
|
|
274
|
-
isArtboard,
|
|
275
293
|
isAnimating,
|
|
294
|
+
isAnalyzing,
|
|
276
295
|
isTransforming,
|
|
277
296
|
setTransform,
|
|
278
297
|
transformLabel: computed(() => transformLabel.value),
|
|
@@ -293,6 +312,12 @@ export default function(storage, state) {
|
|
|
293
312
|
selectionTopLeft,
|
|
294
313
|
lowPerformanceMode,
|
|
295
314
|
getAbsoluteElementRect,
|
|
296
|
-
getViewportRelativeRect
|
|
315
|
+
getViewportRelativeRect,
|
|
316
|
+
interfaceLanguage,
|
|
317
|
+
locale,
|
|
318
|
+
formatDate,
|
|
319
|
+
hasDialogOpen,
|
|
320
|
+
hasTransformOverlayOpen,
|
|
321
|
+
hasAddTooltipOpen
|
|
297
322
|
};
|
|
298
323
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { RGB } from '#blokkli/types/theme';
|
|
2
|
+
interface TransitionOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Duration in milliseconds.
|
|
5
|
+
*/
|
|
6
|
+
duration?: number;
|
|
7
|
+
/**
|
|
8
|
+
* The easing method. Defaults to "ease out quad".
|
|
9
|
+
*/
|
|
10
|
+
easing?: (t: number) => number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Creates a computed property from the given callback and transitions between values.
|
|
14
|
+
*
|
|
15
|
+
* Returns a method that, when called, will return the current transitioned value.
|
|
16
|
+
*/
|
|
17
|
+
export declare function useTransitionedValue<T extends RGB | number>(valueCallback: () => T, options?: TransitionOptions): () => T;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { computed, watch } from "vue";
|
|
2
|
+
import { easeOutQuad } from "./easing.js";
|
|
3
|
+
function isRGB(value) {
|
|
4
|
+
return Array.isArray(value) && value.length === 3;
|
|
5
|
+
}
|
|
6
|
+
function lerp(start, end, t) {
|
|
7
|
+
return start + (end - start) * t;
|
|
8
|
+
}
|
|
9
|
+
function interpolateColor(from, to, t) {
|
|
10
|
+
return [
|
|
11
|
+
lerp(from[0], to[0], t),
|
|
12
|
+
lerp(from[1], to[1], t),
|
|
13
|
+
lerp(from[2], to[2], t)
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
function interpolateValue(from, to, t) {
|
|
17
|
+
if (isRGB(from) && isRGB(to)) {
|
|
18
|
+
return interpolateColor(from, to, t);
|
|
19
|
+
} else if (typeof from === "number" && typeof to === "number") {
|
|
20
|
+
return lerp(from, to, t);
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
}
|
|
24
|
+
function cloneValue(value) {
|
|
25
|
+
if (isRGB(value)) {
|
|
26
|
+
return [...value];
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
export function useTransitionedValue(valueCallback, options = {}) {
|
|
31
|
+
const { duration = 300, easing = easeOutQuad } = options;
|
|
32
|
+
const value = computed(valueCallback);
|
|
33
|
+
const initial = value.value;
|
|
34
|
+
let current = cloneValue(initial);
|
|
35
|
+
let target = cloneValue(initial);
|
|
36
|
+
let from = cloneValue(initial);
|
|
37
|
+
let startTime = null;
|
|
38
|
+
watch(value, (newValue) => {
|
|
39
|
+
from = cloneValue(current);
|
|
40
|
+
target = cloneValue(newValue);
|
|
41
|
+
startTime = Date.now();
|
|
42
|
+
});
|
|
43
|
+
return function getCurrentValue() {
|
|
44
|
+
if (startTime !== null) {
|
|
45
|
+
const elapsed = Date.now() - startTime;
|
|
46
|
+
const rawProgress = Math.min(elapsed / duration, 1);
|
|
47
|
+
if (rawProgress >= 1) {
|
|
48
|
+
current = cloneValue(target);
|
|
49
|
+
startTime = null;
|
|
50
|
+
} else {
|
|
51
|
+
const easedProgress = easing(rawProgress);
|
|
52
|
+
current = interpolateValue(from, target, easedProgress);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return current;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2A3 3 0 0 0 9 5A3 3 0 0 0 11 7.83V9H8V11H11V19.92C10.26 19.79 9.5 19.58 8.79 19.27C8.05 18.95 7.4 18.56 6.82 18.09C6.24 17.62 5.78 17.11 5.44 16.55L7 15L3 12V15C3 15.97 3.27 16.88 3.82 17.72C4.37 18.56 5.09 19.31 6 19.95C6.87 20.59 7.84 21.09 8.88 21.45C9.93 21.81 10.97 22 12 22C13.03 22 14.07 21.8 15.12 21.44C16.16 21.08 17.13 20.58 18 19.95C18.92 19.31 19.63 18.57 20.18 17.72C20.73 16.88 21 15.97 21 15V12L17 15L18.56 16.55C18.22 17.11 17.76 17.62 17.18 18.09C16.6 18.56 15.95 18.95 15.21 19.27C14.5 19.58 13.74 19.79 13 19.92V11H16V9H13V7.82A3 3 0 0 0 15 5A3 3 0 0 0 12 2M12 4A1 1 0 0 1 13 5A1 1 0 0 1 12 6A1 1 0 0 1 11 5A1 1 0 0 1 12 4Z" /></svg>
|