@blokkli/editor 2.0.0-alpha.12 → 2.0.0-alpha.14
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 +5 -5
- package/dist/module.mjs +4006 -1164
- 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 +1 -0
- package/dist/modules/drupal/graphql/base/query.pbEntityConfig.graphql +5 -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 +20 -7
- package/dist/modules/drupal/runtime/adapter/index.js +109 -4
- package/dist/runtime/adapter/index.d.ts +54 -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/Sidebar/Detached/index.vue +6 -7
- package/dist/runtime/blokkliPlugins/Sidebar/index.vue +2 -9
- package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +4 -4
- 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 +45 -8
- 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/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/index.vue +1 -0
- package/dist/runtime/components/Edit/Features/Publish/index.vue +3 -2
- 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 +15 -10
- 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/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 +745 -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 +23 -15
- package/dist/runtime/components/Edit/index.js +44 -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/dom/index.d.ts +59 -0
- package/dist/runtime/helpers/dom/index.js +48 -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 +6 -2
- package/dist/runtime/helpers/stateProvider.js +58 -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 +7 -2
- package/dist/runtime/helpers/uiProvider.js +49 -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/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.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 +163 -5
- 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 +55 -38
- 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
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import onBlokkliEvent from "./composables/onBlokkliEvent.js";
|
|
2
2
|
import { computed, ref } from "#imports";
|
|
3
|
-
import {
|
|
4
|
-
findElement,
|
|
5
|
-
buildDraggableItem,
|
|
6
|
-
falsy,
|
|
7
|
-
modulo,
|
|
8
|
-
onlyUnique
|
|
9
|
-
} from "#blokkli/helpers";
|
|
3
|
+
import { falsy, modulo, onlyUnique } from "#blokkli/helpers";
|
|
10
4
|
import { eventBus } from "#blokkli/helpers/eventBus";
|
|
11
5
|
export default function(dom) {
|
|
12
6
|
const selectedUuids = ref([]);
|
|
7
|
+
const hasHostSelected = ref(false);
|
|
13
8
|
const activeFieldKey = ref("");
|
|
14
9
|
const draggingMode = ref(null);
|
|
15
10
|
const editableActive = ref(false);
|
|
16
11
|
const isChangingOptions = ref(false);
|
|
17
12
|
const isMultiSelecting = ref(false);
|
|
18
13
|
const interactionMode = ref("mouse");
|
|
14
|
+
const selectionLocks = ref([]);
|
|
15
|
+
const selectionIsLocked = computed(() => !!selectionLocks.value.length);
|
|
19
16
|
const dragItems = ref([]);
|
|
20
17
|
const dragItemsBundles = computed(
|
|
21
18
|
() => dragItems.value.map((v) => v.itemBundle).filter(falsy)
|
|
@@ -24,34 +21,30 @@ export default function(dom) {
|
|
|
24
21
|
const isDragging = computed(() => !!draggingMode.value);
|
|
25
22
|
const blocks = computed(
|
|
26
23
|
() => selectedUuids.value.map((uuid) => {
|
|
27
|
-
|
|
24
|
+
if (dom.registeredBlockUuids.value.includes(uuid)) {
|
|
25
|
+
return dom.findBlock(uuid);
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
28
|
}).filter(falsy)
|
|
29
29
|
);
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const item = buildDraggableItem(element);
|
|
36
|
-
if (item && item.itemType === "existing") {
|
|
37
|
-
return item;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}).filter(falsy);
|
|
41
|
-
selectedUuids.value = items.map((v) => v.uuid);
|
|
30
|
+
function updateSelectedUuids(uuids, force) {
|
|
31
|
+
if (selectionIsLocked.value && !force) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
selectedUuids.value = uuids;
|
|
42
35
|
}
|
|
43
36
|
function unselectItems() {
|
|
44
37
|
activeFieldKey.value = "";
|
|
45
38
|
if (selectedUuids.value.length === 0) {
|
|
46
39
|
return;
|
|
47
40
|
}
|
|
48
|
-
|
|
41
|
+
updateSelectedUuids([]);
|
|
49
42
|
}
|
|
50
|
-
function onSelect(v) {
|
|
43
|
+
function onSelect(v, force) {
|
|
51
44
|
if (typeof v === "string") {
|
|
52
|
-
|
|
45
|
+
updateSelectedUuids([v], force);
|
|
53
46
|
} else {
|
|
54
|
-
|
|
47
|
+
updateSelectedUuids(v.filter(onlyUnique), force);
|
|
55
48
|
}
|
|
56
49
|
}
|
|
57
50
|
const selectInList = (prev) => {
|
|
@@ -74,15 +67,18 @@ export default function(dom) {
|
|
|
74
67
|
};
|
|
75
68
|
const setActiveFieldKey = (key) => activeFieldKey.value = key;
|
|
76
69
|
onBlokkliEvent("select", onSelect);
|
|
70
|
+
onBlokkliEvent("select:force", (arg) => {
|
|
71
|
+
onSelect(arg, true);
|
|
72
|
+
});
|
|
77
73
|
onBlokkliEvent("select:start", (e) => {
|
|
78
|
-
|
|
74
|
+
updateSelectedUuids((e.uuids || []).filter(onlyUnique));
|
|
79
75
|
isMultiSelecting.value = true;
|
|
80
76
|
interactionMode.value = e.mode;
|
|
81
77
|
activeFieldKey.value = "";
|
|
82
78
|
});
|
|
83
79
|
onBlokkliEvent("select:toggle", (uuid) => {
|
|
84
80
|
if (selectedUuids.value.includes(uuid)) {
|
|
85
|
-
selectedUuids.value
|
|
81
|
+
updateSelectedUuids(selectedUuids.value.filter((v) => v !== uuid));
|
|
86
82
|
} else {
|
|
87
83
|
selectedUuids.value.push(uuid);
|
|
88
84
|
}
|
|
@@ -92,16 +88,11 @@ export default function(dom) {
|
|
|
92
88
|
if (!uuids || uuids.length === 0 && selectedUuids.value.length === 0) {
|
|
93
89
|
return;
|
|
94
90
|
}
|
|
95
|
-
|
|
91
|
+
updateSelectedUuids(uuids);
|
|
96
92
|
});
|
|
97
93
|
onBlokkliEvent("select:previous", () => selectInList(true));
|
|
98
94
|
onBlokkliEvent("select:next", selectInList);
|
|
99
95
|
onBlokkliEvent("setActiveFieldKey", setActiveFieldKey);
|
|
100
|
-
onBlokkliEvent("state:reloaded", () => {
|
|
101
|
-
selectedUuids.value = selectedUuids.value.filter((uuid) => {
|
|
102
|
-
return !!dom.findBlock(uuid);
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
96
|
onBlokkliEvent("dragging:start", (e) => {
|
|
106
97
|
draggingMode.value = e.mode;
|
|
107
98
|
isMultiSelecting.value = false;
|
|
@@ -110,14 +101,20 @@ export default function(dom) {
|
|
|
110
101
|
(v) => v.itemType === "existing"
|
|
111
102
|
);
|
|
112
103
|
if (blocks2.length) {
|
|
113
|
-
|
|
104
|
+
updateSelectedUuids(blocks2.map((v) => v.uuid));
|
|
114
105
|
}
|
|
115
106
|
});
|
|
116
107
|
onBlokkliEvent("dragging:end", () => {
|
|
117
108
|
draggingMode.value = null;
|
|
118
109
|
});
|
|
119
110
|
onBlokkliEvent("select:unselect", () => {
|
|
120
|
-
|
|
111
|
+
updateSelectedUuids([]);
|
|
112
|
+
});
|
|
113
|
+
onBlokkliEvent("select:host", () => {
|
|
114
|
+
hasHostSelected.value = true;
|
|
115
|
+
});
|
|
116
|
+
onBlokkliEvent("select:host:unselect", () => {
|
|
117
|
+
hasHostSelected.value = false;
|
|
121
118
|
});
|
|
122
119
|
onBlokkliEvent("window:clickAway", () => {
|
|
123
120
|
unselectItems();
|
|
@@ -131,9 +128,18 @@ export default function(dom) {
|
|
|
131
128
|
(v) => v.itemType === "existing" || v.itemType === "existing_structure"
|
|
132
129
|
);
|
|
133
130
|
});
|
|
131
|
+
const hasAnythingSelected = computed(() => {
|
|
132
|
+
return hasHostSelected.value || !!selectedUuids.value.length;
|
|
133
|
+
});
|
|
134
134
|
function isBlockSelected(uuid) {
|
|
135
135
|
return uuidsSet.value.has(uuid);
|
|
136
136
|
}
|
|
137
|
+
function lockSelection(key) {
|
|
138
|
+
selectionLocks.value.push(key);
|
|
139
|
+
}
|
|
140
|
+
function unlockSelection(key) {
|
|
141
|
+
selectionLocks.value = selectionLocks.value.filter((v) => v !== key);
|
|
142
|
+
}
|
|
137
143
|
return {
|
|
138
144
|
uuids: selectedUuids,
|
|
139
145
|
blocks,
|
|
@@ -149,6 +155,12 @@ export default function(dom) {
|
|
|
149
155
|
dragItems,
|
|
150
156
|
uuidsSet,
|
|
151
157
|
dragItemsBundles,
|
|
152
|
-
isBlockSelected
|
|
158
|
+
isBlockSelected,
|
|
159
|
+
hasHostSelected: computed(() => {
|
|
160
|
+
return hasHostSelected.value && !selectedUuids.value.length;
|
|
161
|
+
}),
|
|
162
|
+
hasAnythingSelected,
|
|
163
|
+
lockSelection,
|
|
164
|
+
unlockSelection
|
|
153
165
|
};
|
|
154
166
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Ref, type ComputedRef } from 'vue';
|
|
2
2
|
import type { BlokkliAdapter, AdapterContext } from '../adapter/index.js';
|
|
3
|
-
import type { MutatedField, EditEntity, MutatedOptions, TranslationState, MutationItem, Validation, MutateWithLoadingStateFunction, EditMode, FieldListItem } from '#blokkli/types';
|
|
3
|
+
import type { MutatedField, EditEntity, MutatedOptions, TranslationState, MappedState, MutationItem, Validation, MutateWithLoadingStateFunction, EditMode, FieldListItem } from '#blokkli/types';
|
|
4
4
|
import type { TextProvider } from './textProvider.js';
|
|
5
5
|
export type BlokkliOwner = {
|
|
6
6
|
name: string | undefined;
|
|
@@ -33,5 +33,9 @@ export type StateProvider = {
|
|
|
33
33
|
getFieldListItem: (uuid: string) => FieldListItem | undefined;
|
|
34
34
|
getFieldListForBlock: (uuid: string) => MutatedField | undefined;
|
|
35
35
|
getMutatedField: (uuid: string, fieldName: string) => MutatedField | undefined;
|
|
36
|
+
getAllUuids: (bundle?: string) => string[];
|
|
37
|
+
getMappedState: () => MappedState;
|
|
38
|
+
setOverrideState: (state: MappedState) => void;
|
|
39
|
+
clearOverrideState: () => void;
|
|
36
40
|
};
|
|
37
|
-
export default function (adapter: BlokkliAdapter<any>, context: ComputedRef<AdapterContext>, $t: TextProvider): Promise<StateProvider>;
|
|
41
|
+
export default function (adapter: BlokkliAdapter<any>, context: ComputedRef<AdapterContext>, $t: TextProvider, providerKey: string): Promise<StateProvider>;
|
|
@@ -5,13 +5,17 @@ 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
|
+
export default async function(adapter, context, $t, providerKey) {
|
|
17
|
+
let _mappedState = null;
|
|
18
|
+
const overrideHostOptions = useState("options:" + providerKey);
|
|
15
19
|
const stateLoaded = ref(false);
|
|
16
20
|
const stateLoadError = ref(false);
|
|
17
21
|
const owner = ref(null);
|
|
@@ -32,9 +36,10 @@ export default async function(adapter, context, $t) {
|
|
|
32
36
|
});
|
|
33
37
|
let fieldBlockCount = {};
|
|
34
38
|
const blockBundleCount = ref({});
|
|
35
|
-
const fieldListItemMap =
|
|
39
|
+
const fieldListItemMap = /* @__PURE__ */ new Map();
|
|
40
|
+
let bundleToUuids = {};
|
|
36
41
|
function getFieldListItem(uuid) {
|
|
37
|
-
const fieldKey = fieldListItemMap
|
|
42
|
+
const fieldKey = fieldListItemMap.get(uuid);
|
|
38
43
|
if (!fieldKey) {
|
|
39
44
|
return;
|
|
40
45
|
}
|
|
@@ -45,7 +50,7 @@ export default async function(adapter, context, $t) {
|
|
|
45
50
|
return field.list.find((v) => v.uuid === uuid);
|
|
46
51
|
}
|
|
47
52
|
function getFieldListForBlock(uuid) {
|
|
48
|
-
const fieldKey = fieldListItemMap
|
|
53
|
+
const fieldKey = fieldListItemMap.get(uuid);
|
|
49
54
|
if (!fieldKey) {
|
|
50
55
|
return;
|
|
51
56
|
}
|
|
@@ -58,17 +63,26 @@ export default async function(adapter, context, $t) {
|
|
|
58
63
|
availableLanguages: [],
|
|
59
64
|
translations: []
|
|
60
65
|
});
|
|
61
|
-
function setContext(context2) {
|
|
66
|
+
function setContext(context2, override) {
|
|
67
|
+
if (!override) {
|
|
68
|
+
_mappedState = context2 ?? null;
|
|
69
|
+
}
|
|
62
70
|
const options = context2?.mutatedState?.mutatedOptions || {};
|
|
63
71
|
const optionKeys = Object.keys(options);
|
|
64
72
|
for (let i = 0; i < optionKeys.length; i++) {
|
|
65
73
|
const key = optionKeys[i];
|
|
66
74
|
const newOptions = options[key];
|
|
67
|
-
const
|
|
68
|
-
if (!
|
|
75
|
+
const existing2 = mutatedOptions[key];
|
|
76
|
+
if (!existing2 || JSON.stringify(existing2) !== JSON.stringify(newOptions)) {
|
|
69
77
|
mutatedOptions[key] = newOptions;
|
|
70
78
|
}
|
|
71
79
|
}
|
|
80
|
+
const hostOptions = context2?.mutatedState?.mutatedHostOptions ?? {};
|
|
81
|
+
const existing = mutatedOptions[HOST_OPTION_KEY];
|
|
82
|
+
if (!existing || JSON.stringify(existing) !== JSON.stringify(hostOptions)) {
|
|
83
|
+
mutatedOptions[HOST_OPTION_KEY] = hostOptions ?? "";
|
|
84
|
+
overrideHostOptions.value = hostOptions;
|
|
85
|
+
}
|
|
72
86
|
mutations.value = context2?.mutations || [];
|
|
73
87
|
violations.value = context2?.mutatedState?.violations || [];
|
|
74
88
|
const currentIndex = context2?.currentIndex;
|
|
@@ -96,13 +110,15 @@ export default async function(adapter, context, $t) {
|
|
|
96
110
|
mutatedEntity.value = context2?.mutatedEntity;
|
|
97
111
|
const visitedFieldKeys = [];
|
|
98
112
|
const newBlockBundleCount = {};
|
|
113
|
+
fieldListItemMap.clear();
|
|
99
114
|
fieldBlockCount = {};
|
|
115
|
+
bundleToUuids = {};
|
|
100
116
|
for (let i = 0; i < newMutatedFields.length; i++) {
|
|
101
117
|
const field = newMutatedFields[i];
|
|
102
118
|
const key = getFieldKey(field.entityUuid, field.name);
|
|
103
119
|
visitedFieldKeys.push(key);
|
|
104
|
-
const
|
|
105
|
-
if (!
|
|
120
|
+
const existing2 = mutatedFieldsMap[key];
|
|
121
|
+
if (!existing2 || existing2.list.length !== field.list.length || JSON.stringify(existing2.list) !== JSON.stringify(field.list)) {
|
|
106
122
|
mutatedFieldsMap[key] = field;
|
|
107
123
|
}
|
|
108
124
|
for (let j = 0; j < field.list.length; j++) {
|
|
@@ -111,7 +127,11 @@ export default async function(adapter, context, $t) {
|
|
|
111
127
|
newBlockBundleCount[item.bundle] = 0;
|
|
112
128
|
}
|
|
113
129
|
newBlockBundleCount[item.bundle]++;
|
|
114
|
-
fieldListItemMap
|
|
130
|
+
fieldListItemMap.set(item.uuid, key);
|
|
131
|
+
if (!bundleToUuids[item.bundle]) {
|
|
132
|
+
bundleToUuids[item.bundle] = [];
|
|
133
|
+
}
|
|
134
|
+
bundleToUuids[item.bundle].push(item.uuid);
|
|
115
135
|
}
|
|
116
136
|
}
|
|
117
137
|
blockBundleCount.value = newBlockBundleCount;
|
|
@@ -144,13 +164,18 @@ export default async function(adapter, context, $t) {
|
|
|
144
164
|
return count;
|
|
145
165
|
}
|
|
146
166
|
function lockBody() {
|
|
147
|
-
document.body.classList.add("bk-body-loading");
|
|
148
167
|
isLoading.value = true;
|
|
149
168
|
}
|
|
150
169
|
function unlockBody() {
|
|
151
|
-
document.body.classList.remove("bk-body-loading");
|
|
152
170
|
isLoading.value = false;
|
|
153
171
|
}
|
|
172
|
+
function getAllUuids(bundle) {
|
|
173
|
+
if (!bundle) {
|
|
174
|
+
return [...fieldListItemMap.keys()];
|
|
175
|
+
}
|
|
176
|
+
return bundleToUuids[bundle] ?? [];
|
|
177
|
+
}
|
|
178
|
+
addElementClasses(document.body, "bk-body-loading", isLoading);
|
|
154
179
|
const mutateWithLoadingState = async (callback, errorMessage, successMessage) => {
|
|
155
180
|
if (!callback) {
|
|
156
181
|
return true;
|
|
@@ -228,8 +253,24 @@ export default async function(adapter, context, $t) {
|
|
|
228
253
|
const stateAvailable = computed(
|
|
229
254
|
() => stateLoaded.value && !stateLoadError.value
|
|
230
255
|
);
|
|
256
|
+
function getMappedState() {
|
|
257
|
+
if (!_mappedState) {
|
|
258
|
+
throw new Error("Called getMappedState() before a state is available.");
|
|
259
|
+
}
|
|
260
|
+
return _mappedState;
|
|
261
|
+
}
|
|
262
|
+
function setOverrideState(state) {
|
|
263
|
+
setContext(state, true);
|
|
264
|
+
}
|
|
265
|
+
function clearOverrideState() {
|
|
266
|
+
if (!_mappedState) {
|
|
267
|
+
throw new Error("Missing previous state.");
|
|
268
|
+
}
|
|
269
|
+
setContext(_mappedState);
|
|
270
|
+
}
|
|
231
271
|
return {
|
|
232
272
|
stateAvailable,
|
|
273
|
+
getMappedState,
|
|
233
274
|
refreshKey,
|
|
234
275
|
owner: readonly(owner),
|
|
235
276
|
mutatedFields,
|
|
@@ -248,6 +289,9 @@ export default async function(adapter, context, $t) {
|
|
|
248
289
|
getBlockBundleCount,
|
|
249
290
|
getFieldListItem,
|
|
250
291
|
getMutatedField,
|
|
251
|
-
getFieldListForBlock
|
|
292
|
+
getFieldListForBlock,
|
|
293
|
+
getAllUuids,
|
|
294
|
+
setOverrideState,
|
|
295
|
+
clearOverrideState
|
|
252
296
|
};
|
|
253
297
|
}
|
|
@@ -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,8 @@ export type UiProvider = {
|
|
|
35
39
|
artboardScale: Ref<number>;
|
|
36
40
|
artboardOffset: Ref<Coord>;
|
|
37
41
|
selectionTopLeft: Ref<Coord>;
|
|
42
|
+
interfaceLanguage: ComputedRef<string>;
|
|
38
43
|
getAbsoluteElementRect: (v: HTMLElement | Rectangle, scale?: number, offset?: Coord) => Rectangle;
|
|
39
44
|
getViewportRelativeRect: (rect: Rectangle, scale?: number, offset?: Coord) => Rectangle;
|
|
40
45
|
};
|
|
41
|
-
export default function (storage: StorageProvider, state: StateProvider): UiProvider;
|
|
46
|
+
export default function (storage: StorageProvider, state: StateProvider, context: ComputedRef<AdapterContext>): UiProvider;
|