@contentstack/live-preview-utils 3.3.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/legacy/common/inIframe.cjs +15 -2
- package/dist/legacy/common/inIframe.cjs.map +1 -1
- package/dist/legacy/common/inIframe.d.cts +2 -1
- package/dist/legacy/common/inIframe.d.ts +2 -1
- package/dist/legacy/common/inIframe.js +13 -1
- package/dist/legacy/common/inIframe.js.map +1 -1
- package/dist/legacy/light-sdk.cjs +1 -1
- package/dist/legacy/light-sdk.js +1 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs +1 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/legacy/livePreview/editButton/editButton.js +2 -2
- package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/livePreviewEventManager.cjs +7 -2
- package/dist/legacy/livePreview/eventManager/livePreviewEventManager.cjs.map +1 -1
- package/dist/legacy/livePreview/eventManager/livePreviewEventManager.js +7 -2
- package/dist/legacy/livePreview/eventManager/livePreviewEventManager.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +44 -8
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +47 -9
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.cjs +15 -0
- package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.cjs.map +1 -1
- package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.d.cts +11 -1
- package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.d.ts +11 -1
- package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.js +10 -0
- package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.js.map +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/legacy/utils/addLivePreviewQueryTags.cjs +7 -1
- package/dist/legacy/utils/addLivePreviewQueryTags.cjs.map +1 -1
- package/dist/legacy/utils/addLivePreviewQueryTags.js +7 -1
- package/dist/legacy/utils/addLivePreviewQueryTags.js.map +1 -1
- package/dist/legacy/utils/index.cjs +8 -4
- package/dist/legacy/utils/index.cjs.map +1 -1
- package/dist/legacy/utils/index.js +8 -4
- package/dist/legacy/utils/index.js.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldLocationAppList.cjs +186 -0
- package/dist/legacy/visualBuilder/components/FieldLocationAppList.cjs.map +1 -0
- package/dist/legacy/visualBuilder/components/FieldLocationAppList.d.cts +35 -0
- package/dist/legacy/visualBuilder/components/FieldLocationAppList.d.ts +35 -0
- package/dist/legacy/visualBuilder/components/FieldLocationAppList.js +153 -0
- package/dist/legacy/visualBuilder/components/FieldLocationAppList.js.map +1 -0
- package/dist/legacy/visualBuilder/components/FieldLocationIcon.cjs +125 -0
- package/dist/legacy/visualBuilder/components/FieldLocationIcon.cjs.map +1 -0
- package/dist/legacy/visualBuilder/components/FieldLocationIcon.d.cts +13 -0
- package/dist/legacy/visualBuilder/components/FieldLocationIcon.d.ts +13 -0
- package/dist/legacy/visualBuilder/components/FieldLocationIcon.js +92 -0
- package/dist/legacy/visualBuilder/components/FieldLocationIcon.js.map +1 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +185 -117
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +3 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +3 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.js +186 -118
- package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/components/emptyBlock.cjs +26 -5
- package/dist/legacy/visualBuilder/components/emptyBlock.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/emptyBlock.js +26 -5
- package/dist/legacy/visualBuilder/components/emptyBlock.js.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +6 -4
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +6 -4
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/legacy/visualBuilder/components/icons/EmptyAppIcon.cjs +78 -0
- package/dist/legacy/visualBuilder/components/icons/EmptyAppIcon.cjs.map +1 -0
- package/dist/legacy/visualBuilder/components/icons/EmptyAppIcon.d.cts +9 -0
- package/dist/legacy/visualBuilder/components/icons/EmptyAppIcon.d.ts +9 -0
- package/dist/legacy/visualBuilder/components/icons/EmptyAppIcon.js +53 -0
- package/dist/legacy/visualBuilder/components/icons/EmptyAppIcon.js.map +1 -0
- package/dist/legacy/visualBuilder/components/icons/index.cjs +19 -0
- package/dist/legacy/visualBuilder/components/icons/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/icons/index.d.cts +2 -1
- package/dist/legacy/visualBuilder/components/icons/index.d.ts +2 -1
- package/dist/legacy/visualBuilder/components/icons/index.js +18 -0
- package/dist/legacy/visualBuilder/components/icons/index.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +8 -5
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.js +8 -5
- package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/index.cjs +11 -1
- package/dist/legacy/visualBuilder/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/index.js +11 -1
- package/dist/legacy/visualBuilder/index.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +16 -17
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.js +16 -17
- package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +67 -59
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.js +67 -59
- package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs +72 -0
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.cts +14 -0
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.ts +14 -0
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js +49 -0
- package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.cjs +2 -1
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.js +2 -1
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.cjs +79 -0
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.d.cts +18 -0
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.d.ts +18 -0
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.js +46 -0
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +4 -3
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +4 -3
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs +43 -14
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.cts +3 -12
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.ts +3 -12
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.js +43 -14
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +5 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +6 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +6 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +5 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs +6 -4
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js +6 -4
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs +118 -3
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +18 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +18 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.js +118 -3
- package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
- package/dist/modern/common/inIframe.cjs +15 -2
- package/dist/modern/common/inIframe.cjs.map +1 -1
- package/dist/modern/common/inIframe.d.cts +2 -1
- package/dist/modern/common/inIframe.d.ts +2 -1
- package/dist/modern/common/inIframe.js +13 -1
- package/dist/modern/common/inIframe.js.map +1 -1
- package/dist/modern/light-sdk.cjs +1 -1
- package/dist/modern/light-sdk.js +1 -1
- package/dist/modern/livePreview/editButton/editButton.cjs +1 -1
- package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/modern/livePreview/editButton/editButton.js +2 -2
- package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
- package/dist/modern/livePreview/eventManager/livePreviewEventManager.cjs +7 -2
- package/dist/modern/livePreview/eventManager/livePreviewEventManager.cjs.map +1 -1
- package/dist/modern/livePreview/eventManager/livePreviewEventManager.js +7 -2
- package/dist/modern/livePreview/eventManager/livePreviewEventManager.js.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +43 -8
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +46 -9
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
- package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.cjs +15 -0
- package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.cjs.map +1 -1
- package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.d.cts +11 -1
- package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.d.ts +11 -1
- package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.js +10 -0
- package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.js.map +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/modern/utils/addLivePreviewQueryTags.cjs +7 -1
- package/dist/modern/utils/addLivePreviewQueryTags.cjs.map +1 -1
- package/dist/modern/utils/addLivePreviewQueryTags.js +7 -1
- package/dist/modern/utils/addLivePreviewQueryTags.js.map +1 -1
- package/dist/modern/utils/index.cjs +8 -4
- package/dist/modern/utils/index.cjs.map +1 -1
- package/dist/modern/utils/index.js +8 -4
- package/dist/modern/utils/index.js.map +1 -1
- package/dist/modern/visualBuilder/components/FieldLocationAppList.cjs +185 -0
- package/dist/modern/visualBuilder/components/FieldLocationAppList.cjs.map +1 -0
- package/dist/modern/visualBuilder/components/FieldLocationAppList.d.cts +35 -0
- package/dist/modern/visualBuilder/components/FieldLocationAppList.d.ts +35 -0
- package/dist/modern/visualBuilder/components/FieldLocationAppList.js +152 -0
- package/dist/modern/visualBuilder/components/FieldLocationAppList.js.map +1 -0
- package/dist/modern/visualBuilder/components/FieldLocationIcon.cjs +123 -0
- package/dist/modern/visualBuilder/components/FieldLocationIcon.cjs.map +1 -0
- package/dist/modern/visualBuilder/components/FieldLocationIcon.d.cts +13 -0
- package/dist/modern/visualBuilder/components/FieldLocationIcon.d.ts +13 -0
- package/dist/modern/visualBuilder/components/FieldLocationIcon.js +90 -0
- package/dist/modern/visualBuilder/components/FieldLocationIcon.js.map +1 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs +184 -117
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +3 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +3 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.js +185 -118
- package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/components/emptyBlock.cjs +26 -5
- package/dist/modern/visualBuilder/components/emptyBlock.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/emptyBlock.js +26 -5
- package/dist/modern/visualBuilder/components/emptyBlock.js.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +6 -4
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +6 -4
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/modern/visualBuilder/components/icons/EmptyAppIcon.cjs +78 -0
- package/dist/modern/visualBuilder/components/icons/EmptyAppIcon.cjs.map +1 -0
- package/dist/modern/visualBuilder/components/icons/EmptyAppIcon.d.cts +9 -0
- package/dist/modern/visualBuilder/components/icons/EmptyAppIcon.d.ts +9 -0
- package/dist/modern/visualBuilder/components/icons/EmptyAppIcon.js +53 -0
- package/dist/modern/visualBuilder/components/icons/EmptyAppIcon.js.map +1 -0
- package/dist/modern/visualBuilder/components/icons/index.cjs +19 -0
- package/dist/modern/visualBuilder/components/icons/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/icons/index.d.cts +2 -1
- package/dist/modern/visualBuilder/components/icons/index.d.ts +2 -1
- package/dist/modern/visualBuilder/components/icons/index.js +18 -0
- package/dist/modern/visualBuilder/components/icons/index.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs +8 -5
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.js +8 -5
- package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/index.cjs +10 -0
- package/dist/modern/visualBuilder/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/index.js +10 -0
- package/dist/modern/visualBuilder/index.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs +16 -17
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.js +16 -17
- package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs +67 -59
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.js +67 -59
- package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs +72 -0
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.cts +14 -0
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.ts +14 -0
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js +49 -0
- package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js.map +1 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissions.cjs +2 -1
- package/dist/modern/visualBuilder/utils/getEntryPermissions.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getEntryPermissions.js +2 -1
- package/dist/modern/visualBuilder/utils/getEntryPermissions.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.cjs +78 -0
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.d.cts +18 -0
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.d.ts +18 -0
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.js +45 -0
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.js.map +1 -0
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +4 -3
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js +4 -3
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs +42 -13
- package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.d.cts +3 -12
- package/dist/modern/visualBuilder/utils/isFieldDisabled.d.ts +3 -12
- package/dist/modern/visualBuilder/utils/isFieldDisabled.js +42 -13
- package/dist/modern/visualBuilder/utils/isFieldDisabled.js.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +5 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +6 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +6 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js +5 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs +6 -4
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.js +6 -4
- package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs +118 -3
- package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.d.cts +18 -0
- package/dist/modern/visualBuilder/visualBuilder.style.d.ts +18 -0
- package/dist/modern/visualBuilder/visualBuilder.style.js +118 -3
- package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
import { ISchemaFieldMap } from './types/index.types.js';
|
|
2
2
|
import { FieldDetails } from '../components/FieldToolbar.js';
|
|
3
3
|
import { EntryPermissions } from './getEntryPermissions.js';
|
|
4
|
+
import { WorkflowStageDetails } from './getWorkflowStageDetails.js';
|
|
4
5
|
import '../../cms/types/contentTypeSchema.types.js';
|
|
5
6
|
import '../types/visualBuilder.types.js';
|
|
6
7
|
import '../../cslp/types/cslp.types.js';
|
|
7
8
|
|
|
8
|
-
declare enum DisableReason {
|
|
9
|
-
ReadOnly = "You have only read access to this field",
|
|
10
|
-
LocalizedEntry = "Editing this field is restricted in localized entries",
|
|
11
|
-
UnlinkedVariant = "This field is not editable as it is not linked to the selected variant",
|
|
12
|
-
AudienceMode = "Open an Experience from Audience widget to start editing",
|
|
13
|
-
DisabledVariant = "This field is not editable as it doesn't match the selected variant",
|
|
14
|
-
UnlocalizedVariant = "This field is not editable as it is not localized",
|
|
15
|
-
None = "",
|
|
16
|
-
EntryUpdateRestricted = "You do not have permission to edit this entry"
|
|
17
|
-
}
|
|
18
9
|
interface FieldDisableState {
|
|
19
10
|
isDisabled: boolean;
|
|
20
|
-
reason:
|
|
11
|
+
reason: string;
|
|
21
12
|
}
|
|
22
|
-
declare const isFieldDisabled: (fieldSchemaMap: ISchemaFieldMap, eventFieldDetails: FieldDetails, entryPermissions?: EntryPermissions) => FieldDisableState;
|
|
13
|
+
declare const isFieldDisabled: (fieldSchemaMap: ISchemaFieldMap, eventFieldDetails: FieldDetails, entryPermissions?: EntryPermissions, entryWorkflowStageDetails?: WorkflowStageDetails) => FieldDisableState;
|
|
23
14
|
|
|
24
15
|
export { isFieldDisabled };
|
|
@@ -3,25 +3,49 @@ import "../../chunk-5WRI5ZAA.js";
|
|
|
3
3
|
// src/visualBuilder/utils/isFieldDisabled.ts
|
|
4
4
|
import Config from "../../configManager/configManager.js";
|
|
5
5
|
import { VisualBuilder } from "../index.js";
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
var DisableReason = {
|
|
7
|
+
ReadOnly: "You have only read access to this field",
|
|
8
|
+
LocalizedEntry: "Editing this field is restricted in localized entries",
|
|
9
|
+
UnlinkedVariant: "This field is not editable as it is not linked to the selected variant",
|
|
10
|
+
AudienceMode: "Open an Experience from Audience widget to start editing",
|
|
11
|
+
DisabledVariant: "This field is not editable as it doesn't match the selected variant",
|
|
12
|
+
UnlocalizedVariant: "This field is not editable as it is not localized",
|
|
13
|
+
None: "",
|
|
14
|
+
EntryUpdateRestricted: "You do not have permission to edit this entry",
|
|
15
|
+
WorkflowStagePermission: ({ stageName }) => `You do not have Edit access to this entry on the '${stageName}' workflow stage`,
|
|
16
|
+
EntryUpdateRestrictedRoleAndWorkflowStage: ({
|
|
17
|
+
stageName
|
|
18
|
+
}) => `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`
|
|
19
|
+
};
|
|
20
|
+
var getDisableReason = (flags, params) => {
|
|
21
|
+
if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;
|
|
11
22
|
if (flags.updateRestrictDueToNonLocalizableFields)
|
|
12
|
-
return
|
|
23
|
+
return DisableReason.LocalizedEntry;
|
|
13
24
|
if (flags.updateRestrictDueToUnlocalizedVariant)
|
|
14
|
-
return
|
|
25
|
+
return DisableReason.UnlocalizedVariant;
|
|
15
26
|
if (flags.updateRestrictDueToUnlinkVariant)
|
|
16
|
-
return
|
|
27
|
+
return DisableReason.UnlinkedVariant;
|
|
17
28
|
if (flags.updateRestrictDueToAudienceMode)
|
|
18
|
-
return
|
|
29
|
+
return DisableReason.AudienceMode;
|
|
19
30
|
if (flags.updateRestrictDueToDisabledVariant)
|
|
20
|
-
return
|
|
21
|
-
|
|
31
|
+
return DisableReason.DisabledVariant;
|
|
32
|
+
if (flags.updateRestrictDueToEntryUpdateRestriction && flags.updateRestrictDueToWorkflowStagePermission) {
|
|
33
|
+
return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({
|
|
34
|
+
stageName: (params == null ? void 0 : params.stageName) ? params.stageName : "Unknown"
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (flags.updateRestrictDueToEntryUpdateRestriction) {
|
|
38
|
+
return DisableReason.EntryUpdateRestricted;
|
|
39
|
+
}
|
|
40
|
+
if (flags.updateRestrictDueToWorkflowStagePermission) {
|
|
41
|
+
return DisableReason.WorkflowStagePermission({
|
|
42
|
+
stageName: (params == null ? void 0 : params.stageName) ? params.stageName : "Unknown"
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return DisableReason.None;
|
|
22
46
|
};
|
|
23
|
-
var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
|
|
24
|
-
var _a, _b;
|
|
47
|
+
var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions, entryWorkflowStageDetails) => {
|
|
48
|
+
var _a, _b, _c;
|
|
25
49
|
const { editableElement, fieldMetadata } = eventFieldDetails;
|
|
26
50
|
const masterLocale = Config.get().stackDetails.masterLocale || "en-us";
|
|
27
51
|
const { locale: cmsLocale, variant } = VisualBuilder.VisualBuilderGlobalState.value;
|
|
@@ -44,6 +68,9 @@ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
|
|
|
44
68
|
if (entryPermissions && !entryPermissions.update) {
|
|
45
69
|
flags.updateRestrictDueToEntryUpdateRestriction = true;
|
|
46
70
|
}
|
|
71
|
+
if (entryWorkflowStageDetails && !entryWorkflowStageDetails.permissions.entry.update) {
|
|
72
|
+
flags.updateRestrictDueToWorkflowStagePermission = true;
|
|
73
|
+
}
|
|
47
74
|
if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode && !editableElement.classList.contains("visual-builder__variant-field") && !editableElement.classList.contains("visual-builder__base-field")) {
|
|
48
75
|
if (editableElement.classList.contains(
|
|
49
76
|
"visual-builder__disabled-variant-field"
|
|
@@ -54,7 +81,9 @@ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
|
|
|
54
81
|
}
|
|
55
82
|
}
|
|
56
83
|
const isDisabled = Object.values(flags).some(Boolean);
|
|
57
|
-
const reason = getDisableReason(flags
|
|
84
|
+
const reason = getDisableReason(flags, {
|
|
85
|
+
stageName: (_c = entryWorkflowStageDetails == null ? void 0 : entryWorkflowStageDetails.stage) == null ? void 0 : _c.name
|
|
86
|
+
});
|
|
58
87
|
return { isDisabled, reason };
|
|
59
88
|
};
|
|
60
89
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\nimport { WorkflowStageDetails } from \"./getWorkflowStageDetails\";\n\nconst DisableReason = {\n ReadOnly: \"You have only read access to this field\",\n LocalizedEntry: \"Editing this field is restricted in localized entries\",\n UnlinkedVariant:\n \"This field is not editable as it is not linked to the selected variant\",\n AudienceMode: \"Open an Experience from Audience widget to start editing\",\n DisabledVariant:\n \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant: \"This field is not editable as it is not localized\",\n None: \"\",\n EntryUpdateRestricted: \"You do not have permission to edit this entry\",\n WorkflowStagePermission: ({ stageName }: { stageName: string }) =>\n `You do not have Edit access to this entry on the '${stageName}' workflow stage`,\n EntryUpdateRestrictedRoleAndWorkflowStage: ({\n stageName,\n }: {\n stageName: string;\n }) =>\n `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,\n} as const;\n\ninterface FieldDisableState {\n isDisabled: boolean;\n reason: string;\n}\n\nconst getDisableReason = (\n flags: Record<string, boolean>,\n params?: Record<string, any>\n) => {\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant)\n return DisableReason.UnlinkedVariant;\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n if (\n flags.updateRestrictDueToEntryUpdateRestriction &&\n flags.updateRestrictDueToWorkflowStagePermission\n ) {\n return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToWorkflowStagePermission) {\n return DisableReason.WorkflowStagePermission({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n entryPermissions?: EntryPermissions,\n entryWorkflowStageDetails?: WorkflowStageDetails\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n entryWorkflowStageDetails &&\n !entryWorkflowStageDetails.permissions.entry.update\n ) {\n flags.updateRestrictDueToWorkflowStagePermission = true;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n const reason = getDisableReason(flags, {\n stageName: entryWorkflowStageDetails?.stage?.name,\n });\n\n return { isDisabled, reason };\n};\n"],"mappings":";;;AAAA,OAAO,YAAY;AAEnB,SAAS,qBAAqB;AAK9B,IAAM,gBAAgB;AAAA,EAClB,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,iBACI;AAAA,EACJ,cAAc;AAAA,EACd,iBACI;AAAA,EACJ,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,uBAAuB;AAAA,EACvB,yBAAyB,CAAC,EAAE,UAAU,MAClC,qDAAqD,SAAS;AAAA,EAClE,2CAA2C,CAAC;AAAA,IACxC;AAAA,EACJ,MAGI,gEAAgE,SAAS;AACjF;AAOA,IAAM,mBAAmB,CACrB,OACA,WACC;AACD,MAAI,MAAM,wBAAyB,QAAO,cAAc;AACxD,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MACI,MAAM,6CACN,MAAM,4CACR;AACE,WAAO,cAAc,0CAA0C;AAAA,MAC3D,YAAW,iCAAQ,aAAY,OAAO,YAAY;AAAA,IACtD,CAAC;AAAA,EACL;AACA,MAAI,MAAM,2CAA2C;AACjD,WAAO,cAAc;AAAA,EACzB;AACA,MAAI,MAAM,4CAA4C;AAClD,WAAO,cAAc,wBAAwB;AAAA,MACzC,YAAW,iCAAQ,aAAY,OAAO,YAAY;AAAA,IACtD,CAAC;AAAA,EACL;AACA,SAAO,cAAc;AACzB;AAEO,IAAM,kBAAkB,CAC3B,gBACA,mBACA,kBACA,8BACoB;AAxExB;AAyEI,QAAM,EAAE,iBAAiB,cAAc,IAAI;AAC3C,QAAM,eAAe,OAAO,IAAI,EAAE,aAAa,gBAAgB;AAC/D,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAC/B,cAAc,yBAAyB;AAE3C,QAAM,QAAiC;AAAA,IACnC,yBAAyB;AAAA,OACrB,sDAAgB,mBAAhB,mBAAgC;AAAA,IACpC;AAAA,IACA,kCAAkC;AAAA,OAC9B,sDAAgB,mBAAhB,mBAAgC;AAAA,IACpC;AAAA,IACA,uCAAuC;AAAA,MACnC,WAAW,cAAc,WAAW;AAAA,IACxC;AAAA,IACA,yCAAyC;AAAA,OACrC,iDAAgB,oBACZ,iBAAiB,cAAc;AAAA,IACvC;AAAA,IACA,iCAAiC;AAAA,IACjC,oCAAoC;AAAA,EACxC;AAEA,MAAI,oBAAoB,CAAC,iBAAiB,QAAQ;AAC9C,UAAM,4CAA4C;AAAA,EACtD;AAEA,MACI,6BACA,CAAC,0BAA0B,YAAY,MAAM,QAC/C;AACE,UAAM,6CAA6C;AAAA,EACvD;AAEA,MACI,cAAc,yBAAyB,MAAM,gBAC7C,CAAC,gBAAgB,UAAU,SAAS,+BAA+B,KACnE,CAAC,gBAAgB,UAAU,SAAS,4BAA4B,GAClE;AACE,QACI,gBAAgB,UAAU;AAAA,MACtB;AAAA,IACJ,GACF;AACE,YAAM,qCAAqC;AAAA,IAC/C,OAAO;AACH,YAAM,kCAAkC;AAAA,IAC5C;AAAA,EACJ;AAEA,QAAM,aAAa,OAAO,OAAO,KAAK,EAAE,KAAK,OAAO;AACpD,QAAM,SAAS,iBAAiB,OAAO;AAAA,IACnC,YAAW,4EAA2B,UAA3B,mBAAkC;AAAA,EACjD,CAAC;AAED,SAAO,EAAE,YAAY,OAAO;AAChC;","names":[]}
|
|
@@ -51,6 +51,10 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
|
|
|
51
51
|
VisualBuilderPostMessageEvents2["COLLAB_RESOLVE_THREAD"] = "collab-resolve-thread";
|
|
52
52
|
VisualBuilderPostMessageEvents2["COLLAB_DELETE_THREAD"] = "collab-delete-thread";
|
|
53
53
|
VisualBuilderPostMessageEvents2["COLLAB_MISSING_THREADS"] = "collab-missing-threads";
|
|
54
|
+
VisualBuilderPostMessageEvents2["FIELD_LOCATION_DATA"] = "field-location-data";
|
|
55
|
+
VisualBuilderPostMessageEvents2["FIELD_LOCATION_SELECTED_APP"] = "field-location-selected-app";
|
|
56
|
+
VisualBuilderPostMessageEvents2["GET_PERMISSIONS"] = "get-permissions";
|
|
57
|
+
VisualBuilderPostMessageEvents2["GET_WORKFLOW_STAGE_DETAILS"] = "get-workflow-stage-details";
|
|
54
58
|
VisualBuilderPostMessageEvents2["GET_ALL_ENTRIES_IN_CURRENT_PAGE"] = "get-entries-in-current-page";
|
|
55
59
|
VisualBuilderPostMessageEvents2["HIDE_FOCUS_OVERLAY"] = "hide-focus-overlay";
|
|
56
60
|
VisualBuilderPostMessageEvents2["SHOW_DRAFT_FIELDS"] = "show-draft-fields";
|
|
@@ -73,6 +77,7 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
|
|
|
73
77
|
VisualBuilderPostMessageEvents2["COLLAB_THREADS_REMOVE"] = "collab-threads-remove";
|
|
74
78
|
VisualBuilderPostMessageEvents2["COLLAB_THREAD_REOPEN"] = "collab-thread-reopen";
|
|
75
79
|
VisualBuilderPostMessageEvents2["COLLAB_THREAD_HIGHLIGHT"] = "collab-thread-highlight";
|
|
80
|
+
VisualBuilderPostMessageEvents2["TOGGLE_SCROLL"] = "toggle-scroll";
|
|
76
81
|
return VisualBuilderPostMessageEvents2;
|
|
77
82
|
})(VisualBuilderPostMessageEvents || {});
|
|
78
83
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n FIELD_LOCATION_DATA = \"field-location-data\",\n FIELD_LOCATION_SELECTED_APP = \"field-location-selected-app\",\n GET_PERMISSIONS = \"get-permissions\",\n GET_WORKFLOW_STAGE_DETAILS = \"get-workflow-stage-details\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n TOGGLE_SCROLL = \"toggle-scroll\",\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,gCAA6B;AAG7B,EAAAA,gCAAA,qCAAkC;AAClC,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,+BAA4B;AAC5B,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,mBAAgB;AAxDR,SAAAA;AAAA,GAAA;","names":["VisualBuilderPostMessageEvents"]}
|
|
@@ -26,6 +26,10 @@ declare enum VisualBuilderPostMessageEvents {
|
|
|
26
26
|
COLLAB_RESOLVE_THREAD = "collab-resolve-thread",
|
|
27
27
|
COLLAB_DELETE_THREAD = "collab-delete-thread",
|
|
28
28
|
COLLAB_MISSING_THREADS = "collab-missing-threads",
|
|
29
|
+
FIELD_LOCATION_DATA = "field-location-data",
|
|
30
|
+
FIELD_LOCATION_SELECTED_APP = "field-location-selected-app",
|
|
31
|
+
GET_PERMISSIONS = "get-permissions",
|
|
32
|
+
GET_WORKFLOW_STAGE_DETAILS = "get-workflow-stage-details",
|
|
29
33
|
GET_ALL_ENTRIES_IN_CURRENT_PAGE = "get-entries-in-current-page",
|
|
30
34
|
HIDE_FOCUS_OVERLAY = "hide-focus-overlay",
|
|
31
35
|
SHOW_DRAFT_FIELDS = "show-draft-fields",
|
|
@@ -47,7 +51,8 @@ declare enum VisualBuilderPostMessageEvents {
|
|
|
47
51
|
COLLAB_DISABLE = "collab-disable",
|
|
48
52
|
COLLAB_THREADS_REMOVE = "collab-threads-remove",
|
|
49
53
|
COLLAB_THREAD_REOPEN = "collab-thread-reopen",
|
|
50
|
-
COLLAB_THREAD_HIGHLIGHT = "collab-thread-highlight"
|
|
54
|
+
COLLAB_THREAD_HIGHLIGHT = "collab-thread-highlight",
|
|
55
|
+
TOGGLE_SCROLL = "toggle-scroll"
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
export { VisualBuilderPostMessageEvents };
|
|
@@ -26,6 +26,10 @@ declare enum VisualBuilderPostMessageEvents {
|
|
|
26
26
|
COLLAB_RESOLVE_THREAD = "collab-resolve-thread",
|
|
27
27
|
COLLAB_DELETE_THREAD = "collab-delete-thread",
|
|
28
28
|
COLLAB_MISSING_THREADS = "collab-missing-threads",
|
|
29
|
+
FIELD_LOCATION_DATA = "field-location-data",
|
|
30
|
+
FIELD_LOCATION_SELECTED_APP = "field-location-selected-app",
|
|
31
|
+
GET_PERMISSIONS = "get-permissions",
|
|
32
|
+
GET_WORKFLOW_STAGE_DETAILS = "get-workflow-stage-details",
|
|
29
33
|
GET_ALL_ENTRIES_IN_CURRENT_PAGE = "get-entries-in-current-page",
|
|
30
34
|
HIDE_FOCUS_OVERLAY = "hide-focus-overlay",
|
|
31
35
|
SHOW_DRAFT_FIELDS = "show-draft-fields",
|
|
@@ -47,7 +51,8 @@ declare enum VisualBuilderPostMessageEvents {
|
|
|
47
51
|
COLLAB_DISABLE = "collab-disable",
|
|
48
52
|
COLLAB_THREADS_REMOVE = "collab-threads-remove",
|
|
49
53
|
COLLAB_THREAD_REOPEN = "collab-thread-reopen",
|
|
50
|
-
COLLAB_THREAD_HIGHLIGHT = "collab-thread-highlight"
|
|
54
|
+
COLLAB_THREAD_HIGHLIGHT = "collab-thread-highlight",
|
|
55
|
+
TOGGLE_SCROLL = "toggle-scroll"
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
export { VisualBuilderPostMessageEvents };
|
|
@@ -29,6 +29,10 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
|
|
|
29
29
|
VisualBuilderPostMessageEvents2["COLLAB_RESOLVE_THREAD"] = "collab-resolve-thread";
|
|
30
30
|
VisualBuilderPostMessageEvents2["COLLAB_DELETE_THREAD"] = "collab-delete-thread";
|
|
31
31
|
VisualBuilderPostMessageEvents2["COLLAB_MISSING_THREADS"] = "collab-missing-threads";
|
|
32
|
+
VisualBuilderPostMessageEvents2["FIELD_LOCATION_DATA"] = "field-location-data";
|
|
33
|
+
VisualBuilderPostMessageEvents2["FIELD_LOCATION_SELECTED_APP"] = "field-location-selected-app";
|
|
34
|
+
VisualBuilderPostMessageEvents2["GET_PERMISSIONS"] = "get-permissions";
|
|
35
|
+
VisualBuilderPostMessageEvents2["GET_WORKFLOW_STAGE_DETAILS"] = "get-workflow-stage-details";
|
|
32
36
|
VisualBuilderPostMessageEvents2["GET_ALL_ENTRIES_IN_CURRENT_PAGE"] = "get-entries-in-current-page";
|
|
33
37
|
VisualBuilderPostMessageEvents2["HIDE_FOCUS_OVERLAY"] = "hide-focus-overlay";
|
|
34
38
|
VisualBuilderPostMessageEvents2["SHOW_DRAFT_FIELDS"] = "show-draft-fields";
|
|
@@ -51,6 +55,7 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
|
|
|
51
55
|
VisualBuilderPostMessageEvents2["COLLAB_THREADS_REMOVE"] = "collab-threads-remove";
|
|
52
56
|
VisualBuilderPostMessageEvents2["COLLAB_THREAD_REOPEN"] = "collab-thread-reopen";
|
|
53
57
|
VisualBuilderPostMessageEvents2["COLLAB_THREAD_HIGHLIGHT"] = "collab-thread-highlight";
|
|
58
|
+
VisualBuilderPostMessageEvents2["TOGGLE_SCROLL"] = "toggle-scroll";
|
|
54
59
|
return VisualBuilderPostMessageEvents2;
|
|
55
60
|
})(VisualBuilderPostMessageEvents || {});
|
|
56
61
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n}"],"mappings":";;;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n FIELD_LOCATION_DATA = \"field-location-data\",\n FIELD_LOCATION_SELECTED_APP = \"field-location-selected-app\",\n GET_PERMISSIONS = \"get-permissions\",\n GET_WORKFLOW_STAGE_DETAILS = \"get-workflow-stage-details\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n TOGGLE_SCROLL = \"toggle-scroll\",\n}\n"],"mappings":";;;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,gCAA6B;AAG7B,EAAAA,gCAAA,qCAAkC;AAClC,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,+BAA4B;AAC5B,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,mBAAgB;AAxDR,SAAAA;AAAA,GAAA;","names":["VisualBuilderPostMessageEvents"]}
|
|
@@ -39,12 +39,12 @@ var import_cslp = require("../../cslp/index.cjs");
|
|
|
39
39
|
var import_generateAddInstanceButtons = require("../generators/generateAddInstanceButtons.cjs");
|
|
40
40
|
var import_generateOverlay = require("../generators/generateOverlay.cjs");
|
|
41
41
|
var import_mouseHover = require("../listeners/mouseHover.cjs");
|
|
42
|
-
var import_getEntryPermissionsCached = require("./getEntryPermissionsCached.cjs");
|
|
43
42
|
var import_constants = require("./constants.cjs");
|
|
44
43
|
var import_fieldSchemaMap = require("./fieldSchemaMap.cjs");
|
|
45
44
|
var import_getChildrenDirection = __toESM(require("./getChildrenDirection.cjs"), 1);
|
|
46
45
|
var import_getPsuedoEditableStylesElement = require("./getPsuedoEditableStylesElement.cjs");
|
|
47
46
|
var import_isFieldDisabled = require("./isFieldDisabled.cjs");
|
|
47
|
+
var import_fetchEntryPermissionsAndStageDetails = require("./fetchEntryPermissionsAndStageDetails.cjs");
|
|
48
48
|
function positionToolbar({
|
|
49
49
|
focusedToolbar,
|
|
50
50
|
selectedElementDimension
|
|
@@ -108,15 +108,17 @@ async function updateFocussedState({
|
|
|
108
108
|
fieldMetadata.content_type_uid,
|
|
109
109
|
fieldMetadata.fieldPath
|
|
110
110
|
);
|
|
111
|
-
const entryAcl = await (0,
|
|
111
|
+
const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } = await (0, import_fetchEntryPermissionsAndStageDetails.fetchEntryPermissionsAndStageDetails)({
|
|
112
112
|
entryUid: fieldMetadata.entry_uid,
|
|
113
113
|
contentTypeUid: fieldMetadata.content_type_uid,
|
|
114
|
-
locale: fieldMetadata.locale
|
|
114
|
+
locale: fieldMetadata.locale,
|
|
115
|
+
variantUid: fieldMetadata.variant
|
|
115
116
|
});
|
|
116
117
|
const { isDisabled } = (0, import_isFieldDisabled.isFieldDisabled)(
|
|
117
118
|
fieldSchema,
|
|
118
119
|
{ editableElement, fieldMetadata },
|
|
119
|
-
entryAcl
|
|
120
|
+
entryAcl,
|
|
121
|
+
entryWorkflowStageDetails
|
|
120
122
|
);
|
|
121
123
|
(0, import_generateOverlay.addFocusOverlay)(previousSelectedEditableDOM, overlayWrapper, isDisabled);
|
|
122
124
|
const psuedoEditableElement = visualBuilderContainer.querySelector(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/updateFocussedState.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { extractDetailsFromCslp } from \"../../cslp\";\nimport { getAddInstanceButtons } from \"../generators/generateAddInstanceButtons\";\nimport {\n addFocusOverlay,\n hideFocusOverlay,\n} from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { getEntryPermissionsCached } from \"./getEntryPermissionsCached\";\nimport {\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { getPsuedoEditableElementStyles } from \"./getPsuedoEditableStylesElement\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\n\ninterface ToolbarPositionParams {\n focusedToolbar: HTMLElement | null;\n selectedElementDimension: DOMRect;\n}\n/**\n * Adjust the position of the field toolbar instead of clearing the innerhtml fo the focused toolbar.\n * By doing this, can avoid the re-rendering of the focus field toolbar.\n */\nfunction positionToolbar({\n focusedToolbar,\n selectedElementDimension,\n}: ToolbarPositionParams): void {\n if (focusedToolbar) {\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - selectedElementDimension.left;\n const distanceFromTop =\n selectedElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n\n // Adjust top position based on the available space\n const adjustedDistanceFromTop =\n selectedElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop +\n selectedElementDimension.height +\n TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n selectedElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n // Handle right-edge overflow\n if (\n targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER &&\n (focusedToolbar.style.justifyContent !== \"flex-end\" ||\n focusedToolbar.style.left !==\n `${selectedElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX}px`)\n ) {\n focusedToolbar.style.justifyContent = \"flex-end\";\n focusedToolbar.style.left = `${selectedElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX}px`;\n } else if (\n focusedToolbar.style.justifyContent !== \"flex-start\" ||\n focusedToolbar.style.left !== `${adjustedDistanceFromLeft}px`\n ) {\n focusedToolbar.style.justifyContent = \"flex-start\"; // Default\n focusedToolbar.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n // Adjust top position if necessary\n if (focusedToolbar.style.top !== `${adjustedDistanceFromTop}px`) {\n focusedToolbar.style.top = `${adjustedDistanceFromTop}px`;\n }\n }\n}\n\n/**\n * This function can be used to re-draw/update the focussed state of an element.\n * The focussed state includes the overlay, psuedo-editable, toolbar, and multiple\n * instance add buttons. It is similar to handleBuilderInteraction but it does not\n * create new elements, it just updates the existing ones whenever possible.\n * NOTE: breakdown this function into multiple functions when the need arises\n */\nexport async function updateFocussedState({\n editableElement,\n visualBuilderContainer,\n overlayWrapper,\n focusedToolbar,\n resizeObserver,\n}: {\n editableElement: HTMLElement | null;\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver | null;\n}): Promise<void> {\n let previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (\n !visualBuilderContainer ||\n !editableElement ||\n !previousSelectedEditableDOM ||\n !overlayWrapper\n ) {\n return;\n }\n\n // prefer data-cslp-unique-id when available else use data-cslp.\n // unique ID is added on click when multiple elements with same\n // data-cslp are found.\n const previousSelectedElementCslp =\n editableElement?.getAttribute(\"data-cslp\") || \"\";\n const previousSelectedElementCslpUniqueId =\n previousSelectedEditableDOM?.getAttribute(\"data-cslp-unique-id\");\n const newPreviousSelectedElement =\n document.querySelector(\n `[data-cslp-unique-id=\"${previousSelectedElementCslpUniqueId}\"]`\n ) ||\n document.querySelector(`[data-cslp=\"${previousSelectedElementCslp}\"]`);\n if (!newPreviousSelectedElement && resizeObserver) {\n hideFocusOverlay({\n visualBuilderOverlayWrapper: overlayWrapper,\n focusedToolbar,\n visualBuilderContainer,\n resizeObserver,\n noTrigger: true,\n });\n return;\n }\n if (newPreviousSelectedElement !== previousSelectedEditableDOM) {\n previousSelectedEditableDOM = newPreviousSelectedElement as HTMLElement;\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n previousSelectedEditableDOM;\n }\n\n const cslp = editableElement?.getAttribute(\"data-cslp\") || \"\";\n const fieldMetadata = extractDetailsFromCslp(cslp);\n\n hideHoverOutline(visualBuilderContainer);\n\n // in every case, this function will bring cached values\n // and this should be quick\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n const entryAcl = await getEntryPermissionsCached({\n entryUid: fieldMetadata.entry_uid,\n contentTypeUid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n });\n const { isDisabled } = isFieldDisabled(\n fieldSchema,\n { editableElement, fieldMetadata },\n entryAcl\n );\n addFocusOverlay(previousSelectedEditableDOM, overlayWrapper, isDisabled);\n\n // update psuedo editable element if present\n const psuedoEditableElement = visualBuilderContainer.querySelector(\n \".visual-builder__pseudo-editable-element\"\n ) as HTMLElement;\n if (psuedoEditableElement) {\n const styles = getPsuedoEditableElementStyles(editableElement);\n const styleString = Object.entries(styles).reduce(\n (acc, [key, value]) => {\n return `${acc}${key}:${value};`;\n },\n \"\"\n );\n psuedoEditableElement.style.cssText = styleString;\n // since we are copying styles from the editableEl\n // it will now have a visibility of hidden, which we added\n // when creating the pseudo editable element, so make the psuedo visible\n psuedoEditableElement.style.visibility = \"visible\";\n }\n\n const targetElementDimension = editableElement.getBoundingClientRect();\n if (targetElementDimension.width && targetElementDimension.height) {\n const selectedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!selectedElement) return;\n // position the focused tool bar\n positionToolbar({\n focusedToolbar: focusedToolbar,\n selectedElementDimension: selectedElement.getBoundingClientRect(),\n });\n }\n\n // re-add multiple instance add buttons\n const buttons = getAddInstanceButtons(visualBuilderContainer);\n const parentCslpValue =\n fieldMetadata.multipleFieldMetadata?.parentDetails?.parentCslpValue;\n if (\n buttons &&\n parentCslpValue &&\n buttons.length > 1 &&\n buttons[0] &&\n buttons[1]\n ) {\n const [previousButton, nextButton] = buttons;\n const direction = getChildrenDirection(\n editableElement,\n parentCslpValue\n );\n const targetDOMDimension = editableElement.getBoundingClientRect();\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else if (direction === \"vertical\") {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n }\n}\n\n/**\n * This function is used to resize/reposition focus overlay and toolbar due to a\n * mutation in the DOM or due to changes in a different field (other than the focussed field).\n */\nexport function updateFocussedStateOnMutation(\n focusOverlayWrapper: HTMLDivElement | null,\n focusedToolbar: HTMLDivElement | null,\n visualBuilderContainer: HTMLDivElement | null,\n resizeObserver: ResizeObserver | null\n) {\n if (!focusOverlayWrapper) return;\n\n let selectedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (!selectedElement) return;\n\n const selectedElementCslp = selectedElement?.getAttribute(\"data-cslp\");\n const selectedElementCslpUniqueId = selectedElement?.getAttribute(\n \"data-cslp-unique-id\"\n );\n const newSelectedElement =\n document.querySelector(\n `[data-cslp-unique-id=\"${selectedElementCslpUniqueId}\"]`\n ) || document.querySelector(`[data-cslp=\"${selectedElementCslp}\"]`);\n if (!newSelectedElement && resizeObserver) {\n hideFocusOverlay({\n visualBuilderOverlayWrapper: focusOverlayWrapper,\n focusedToolbar,\n visualBuilderContainer,\n resizeObserver,\n noTrigger: true,\n });\n return;\n }\n\n if (newSelectedElement !== selectedElement) {\n selectedElement = newSelectedElement as HTMLElement;\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n selectedElement;\n }\n\n const selectedElementDimension = selectedElement.getBoundingClientRect();\n\n /**\n * Update the focus outline if it exists.\n */\n const focusOutline = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--outline\"\n );\n\n if (focusOutline) {\n const focusOutlineDimension = focusOutline.getBoundingClientRect();\n if (!isSameRect(selectedElementDimension, focusOutlineDimension)) {\n focusOutline.style.top = `${selectedElementDimension.top + window.scrollY}px`;\n focusOutline.style.left = `${selectedElementDimension.left}px`;\n focusOutline.style.width = `${selectedElementDimension.width}px`;\n focusOutline.style.height = `${selectedElementDimension.height}px`;\n }\n }\n\n /**\n * Update the focus overlays if they exists.\n */\n\n const focusedOverlayTop = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--top\"\n );\n const focusedOverlayBottom =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--bottom\"\n );\n const focusedOverlayLeft =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--left\"\n );\n const focusedOverlayRight =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--right\"\n );\n\n const distanceFromTop = selectedElementDimension.top + window.scrollY;\n\n if (focusedOverlayTop) {\n const dimension = focusedOverlayTop.getBoundingClientRect();\n if (dimension.height !== distanceFromTop) {\n focusedOverlayTop.style.height = `calc(${distanceFromTop}px)`;\n }\n }\n\n if (focusedOverlayBottom) {\n const dimension = focusedOverlayBottom.getBoundingClientRect();\n if (\n dimension.top !== selectedElementDimension.bottom ||\n dimension.height !==\n window.document.body.scrollHeight -\n selectedElementDimension.bottom -\n window.scrollY\n ) {\n focusedOverlayBottom.style.top = `${\n selectedElementDimension.bottom + window.scrollY\n }px`;\n focusedOverlayBottom.style.height = `${\n window.document.body.scrollHeight -\n selectedElementDimension.bottom -\n window.scrollY\n }px`;\n }\n }\n\n if (focusedOverlayLeft) {\n const dimension = focusedOverlayLeft.getBoundingClientRect();\n if (\n dimension.top + window.scrollY !== distanceFromTop ||\n dimension.height !== selectedElementDimension.height ||\n dimension.width !== selectedElementDimension.left\n ) {\n focusedOverlayLeft.style.top = `${distanceFromTop}px`;\n focusedOverlayLeft.style.height = `${selectedElementDimension.height}px`;\n focusedOverlayLeft.style.width = `${selectedElementDimension.left}px`;\n }\n }\n\n if (focusedOverlayRight) {\n const dimension = focusedOverlayRight.getBoundingClientRect();\n if (\n dimension.left !== selectedElementDimension.right ||\n dimension.top + window.scrollY !== distanceFromTop ||\n dimension.height !== selectedElementDimension.height ||\n dimension.width !==\n document.documentElement.clientWidth -\n selectedElementDimension.right\n ) {\n focusedOverlayRight.style.left = `${selectedElementDimension.right}px`;\n focusedOverlayRight.style.top = `${distanceFromTop}px`;\n focusedOverlayRight.style.height = `${selectedElementDimension.height}px`;\n focusedOverlayRight.style.width = `${\n document.documentElement.clientWidth -\n selectedElementDimension.right\n }px`;\n }\n }\n\n /**\n * Update the focus toolbar if it exists.\n */\n\n if (focusedToolbar) {\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - selectedElementDimension.left;\n const distanceFromTop =\n selectedElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n selectedElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop +\n selectedElementDimension.height +\n TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n selectedElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n if (\n targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER &&\n (focusedToolbar.style.justifyContent !== \"flex-end\" ||\n focusedToolbar.style.left !==\n `${\n selectedElementDimension.right +\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`)\n ) {\n // Overflow / Cutoff on right edge\n focusedToolbar.style.justifyContent = \"flex-end\";\n focusedToolbar.style.left = `${\n selectedElementDimension.right +\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else if (\n focusedToolbar.style.justifyContent !== \"flex-start\" ||\n focusedToolbar.style.left !== `${adjustedDistanceFromLeft}px`\n ) {\n focusedToolbar.style.justifyContent = \"flex-start\"; // default\n focusedToolbar.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n if (focusedToolbar.style.top !== `${adjustedDistanceFromTop}px`) {\n focusedToolbar.style.top = `${adjustedDistanceFromTop}px`;\n }\n }\n\n /**\n * Update the pseudo-editable if it exists.\n */\n\n if (visualBuilderContainer) {\n const psuedoEditableElement = visualBuilderContainer.querySelector(\n \".visual-builder__pseudo-editable-element\"\n ) as HTMLElement;\n const editableElement = selectedElement as HTMLElement;\n const styles = getPsuedoEditableElementStyles(editableElement);\n const styleString = Object.entries(styles).reduce(\n (acc, [key, value]) => {\n return `${acc}${key}:${value};`;\n },\n \"\"\n );\n if (\n psuedoEditableElement &&\n (psuedoEditableElement.style.cssText !== styleString ||\n psuedoEditableElement.style.visibility !== \"visible\")\n ) {\n psuedoEditableElement.style.cssText = styleString;\n // since we are copying styles from the editableEl\n // it will now have a visibility of hidden, which we added\n // when creating the pseudo editable element, so make the psuedo visible\n psuedoEditableElement.style.visibility = \"visible\";\n }\n }\n}\n\nfunction isSameRect(rect1: DOMRect, rect2: DOMRect) {\n return (\n rect1.top === rect2.top &&\n rect1.left === rect2.left &&\n rect1.width === rect2.width &&\n rect1.height === rect2.height\n );\n}\n"],"mappings":"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","names":["getChildrenDirection","distanceFromTop"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/updateFocussedState.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { extractDetailsFromCslp } from \"../../cslp\";\nimport { getAddInstanceButtons } from \"../generators/generateAddInstanceButtons\";\nimport {\n addFocusOverlay,\n hideFocusOverlay,\n} from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport {\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { getPsuedoEditableElementStyles } from \"./getPsuedoEditableStylesElement\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\nimport { fetchEntryPermissionsAndStageDetails } from \"./fetchEntryPermissionsAndStageDetails\";\n\ninterface ToolbarPositionParams {\n focusedToolbar: HTMLElement | null;\n selectedElementDimension: DOMRect;\n}\n/**\n * Adjust the position of the field toolbar instead of clearing the innerhtml fo the focused toolbar.\n * By doing this, can avoid the re-rendering of the focus field toolbar.\n */\nfunction positionToolbar({\n focusedToolbar,\n selectedElementDimension,\n}: ToolbarPositionParams): void {\n if (focusedToolbar) {\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - selectedElementDimension.left;\n const distanceFromTop =\n selectedElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n\n // Adjust top position based on the available space\n const adjustedDistanceFromTop =\n selectedElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop +\n selectedElementDimension.height +\n TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n selectedElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n // Handle right-edge overflow\n if (\n targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER &&\n (focusedToolbar.style.justifyContent !== \"flex-end\" ||\n focusedToolbar.style.left !==\n `${selectedElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX}px`)\n ) {\n focusedToolbar.style.justifyContent = \"flex-end\";\n focusedToolbar.style.left = `${selectedElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX}px`;\n } else if (\n focusedToolbar.style.justifyContent !== \"flex-start\" ||\n focusedToolbar.style.left !== `${adjustedDistanceFromLeft}px`\n ) {\n focusedToolbar.style.justifyContent = \"flex-start\"; // Default\n focusedToolbar.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n // Adjust top position if necessary\n if (focusedToolbar.style.top !== `${adjustedDistanceFromTop}px`) {\n focusedToolbar.style.top = `${adjustedDistanceFromTop}px`;\n }\n }\n}\n\n/**\n * This function can be used to re-draw/update the focussed state of an element.\n * The focussed state includes the overlay, psuedo-editable, toolbar, and multiple\n * instance add buttons. It is similar to handleBuilderInteraction but it does not\n * create new elements, it just updates the existing ones whenever possible.\n * NOTE: breakdown this function into multiple functions when the need arises\n */\nexport async function updateFocussedState({\n editableElement,\n visualBuilderContainer,\n overlayWrapper,\n focusedToolbar,\n resizeObserver,\n}: {\n editableElement: HTMLElement | null;\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver | null;\n}): Promise<void> {\n let previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (\n !visualBuilderContainer ||\n !editableElement ||\n !previousSelectedEditableDOM ||\n !overlayWrapper\n ) {\n return;\n }\n\n // prefer data-cslp-unique-id when available else use data-cslp.\n // unique ID is added on click when multiple elements with same\n // data-cslp are found.\n const previousSelectedElementCslp =\n editableElement?.getAttribute(\"data-cslp\") || \"\";\n const previousSelectedElementCslpUniqueId =\n previousSelectedEditableDOM?.getAttribute(\"data-cslp-unique-id\");\n const newPreviousSelectedElement =\n document.querySelector(\n `[data-cslp-unique-id=\"${previousSelectedElementCslpUniqueId}\"]`\n ) ||\n document.querySelector(`[data-cslp=\"${previousSelectedElementCslp}\"]`);\n if (!newPreviousSelectedElement && resizeObserver) {\n hideFocusOverlay({\n visualBuilderOverlayWrapper: overlayWrapper,\n focusedToolbar,\n visualBuilderContainer,\n resizeObserver,\n noTrigger: true,\n });\n return;\n }\n if (newPreviousSelectedElement !== previousSelectedEditableDOM) {\n previousSelectedEditableDOM = newPreviousSelectedElement as HTMLElement;\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n previousSelectedEditableDOM;\n }\n\n const cslp = editableElement?.getAttribute(\"data-cslp\") || \"\";\n const fieldMetadata = extractDetailsFromCslp(cslp);\n\n hideHoverOutline(visualBuilderContainer);\n\n // in every case, this function will bring cached values\n // and this should be quick\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: fieldMetadata.entry_uid,\n contentTypeUid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n variantUid: fieldMetadata.variant,\n });\n const { isDisabled } = isFieldDisabled(\n fieldSchema,\n { editableElement, fieldMetadata },\n entryAcl,\n entryWorkflowStageDetails\n );\n addFocusOverlay(previousSelectedEditableDOM, overlayWrapper, isDisabled);\n\n // update psuedo editable element if present\n const psuedoEditableElement = visualBuilderContainer.querySelector(\n \".visual-builder__pseudo-editable-element\"\n ) as HTMLElement;\n if (psuedoEditableElement) {\n const styles = getPsuedoEditableElementStyles(editableElement);\n const styleString = Object.entries(styles).reduce(\n (acc, [key, value]) => {\n return `${acc}${key}:${value};`;\n },\n \"\"\n );\n psuedoEditableElement.style.cssText = styleString;\n // since we are copying styles from the editableEl\n // it will now have a visibility of hidden, which we added\n // when creating the pseudo editable element, so make the psuedo visible\n psuedoEditableElement.style.visibility = \"visible\";\n }\n\n const targetElementDimension = editableElement.getBoundingClientRect();\n if (targetElementDimension.width && targetElementDimension.height) {\n const selectedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!selectedElement) return;\n // position the focused tool bar\n positionToolbar({\n focusedToolbar: focusedToolbar,\n selectedElementDimension: selectedElement.getBoundingClientRect(),\n });\n }\n\n // re-add multiple instance add buttons\n const buttons = getAddInstanceButtons(visualBuilderContainer);\n const parentCslpValue =\n fieldMetadata.multipleFieldMetadata?.parentDetails?.parentCslpValue;\n if (\n buttons &&\n parentCslpValue &&\n buttons.length > 1 &&\n buttons[0] &&\n buttons[1]\n ) {\n const [previousButton, nextButton] = buttons;\n const direction = getChildrenDirection(\n editableElement,\n parentCslpValue\n );\n const targetDOMDimension = editableElement.getBoundingClientRect();\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else if (direction === \"vertical\") {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n }\n}\n\n/**\n * This function is used to resize/reposition focus overlay and toolbar due to a\n * mutation in the DOM or due to changes in a different field (other than the focussed field).\n */\nexport function updateFocussedStateOnMutation(\n focusOverlayWrapper: HTMLDivElement | null,\n focusedToolbar: HTMLDivElement | null,\n visualBuilderContainer: HTMLDivElement | null,\n resizeObserver: ResizeObserver | null\n) {\n if (!focusOverlayWrapper) return;\n\n let selectedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (!selectedElement) return;\n\n const selectedElementCslp = selectedElement?.getAttribute(\"data-cslp\");\n const selectedElementCslpUniqueId = selectedElement?.getAttribute(\n \"data-cslp-unique-id\"\n );\n const newSelectedElement =\n document.querySelector(\n `[data-cslp-unique-id=\"${selectedElementCslpUniqueId}\"]`\n ) || document.querySelector(`[data-cslp=\"${selectedElementCslp}\"]`);\n if (!newSelectedElement && resizeObserver) {\n hideFocusOverlay({\n visualBuilderOverlayWrapper: focusOverlayWrapper,\n focusedToolbar,\n visualBuilderContainer,\n resizeObserver,\n noTrigger: true,\n });\n return;\n }\n\n if (newSelectedElement !== selectedElement) {\n selectedElement = newSelectedElement as HTMLElement;\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n selectedElement;\n }\n\n const selectedElementDimension = selectedElement.getBoundingClientRect();\n\n /**\n * Update the focus outline if it exists.\n */\n const focusOutline = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--outline\"\n );\n\n if (focusOutline) {\n const focusOutlineDimension = focusOutline.getBoundingClientRect();\n if (!isSameRect(selectedElementDimension, focusOutlineDimension)) {\n focusOutline.style.top = `${selectedElementDimension.top + window.scrollY}px`;\n focusOutline.style.left = `${selectedElementDimension.left}px`;\n focusOutline.style.width = `${selectedElementDimension.width}px`;\n focusOutline.style.height = `${selectedElementDimension.height}px`;\n }\n }\n\n /**\n * Update the focus overlays if they exists.\n */\n\n const focusedOverlayTop = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--top\"\n );\n const focusedOverlayBottom =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--bottom\"\n );\n const focusedOverlayLeft =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--left\"\n );\n const focusedOverlayRight =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--right\"\n );\n\n const distanceFromTop = selectedElementDimension.top + window.scrollY;\n\n if (focusedOverlayTop) {\n const dimension = focusedOverlayTop.getBoundingClientRect();\n if (dimension.height !== distanceFromTop) {\n focusedOverlayTop.style.height = `calc(${distanceFromTop}px)`;\n }\n }\n\n if (focusedOverlayBottom) {\n const dimension = focusedOverlayBottom.getBoundingClientRect();\n if (\n dimension.top !== selectedElementDimension.bottom ||\n dimension.height !==\n window.document.body.scrollHeight -\n selectedElementDimension.bottom -\n window.scrollY\n ) {\n focusedOverlayBottom.style.top = `${\n selectedElementDimension.bottom + window.scrollY\n }px`;\n focusedOverlayBottom.style.height = `${\n window.document.body.scrollHeight -\n selectedElementDimension.bottom -\n window.scrollY\n }px`;\n }\n }\n\n if (focusedOverlayLeft) {\n const dimension = focusedOverlayLeft.getBoundingClientRect();\n if (\n dimension.top + window.scrollY !== distanceFromTop ||\n dimension.height !== selectedElementDimension.height ||\n dimension.width !== selectedElementDimension.left\n ) {\n focusedOverlayLeft.style.top = `${distanceFromTop}px`;\n focusedOverlayLeft.style.height = `${selectedElementDimension.height}px`;\n focusedOverlayLeft.style.width = `${selectedElementDimension.left}px`;\n }\n }\n\n if (focusedOverlayRight) {\n const dimension = focusedOverlayRight.getBoundingClientRect();\n if (\n dimension.left !== selectedElementDimension.right ||\n dimension.top + window.scrollY !== distanceFromTop ||\n dimension.height !== selectedElementDimension.height ||\n dimension.width !==\n document.documentElement.clientWidth -\n selectedElementDimension.right\n ) {\n focusedOverlayRight.style.left = `${selectedElementDimension.right}px`;\n focusedOverlayRight.style.top = `${distanceFromTop}px`;\n focusedOverlayRight.style.height = `${selectedElementDimension.height}px`;\n focusedOverlayRight.style.width = `${\n document.documentElement.clientWidth -\n selectedElementDimension.right\n }px`;\n }\n }\n\n /**\n * Update the focus toolbar if it exists.\n */\n\n if (focusedToolbar) {\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - selectedElementDimension.left;\n const distanceFromTop =\n selectedElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n selectedElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop +\n selectedElementDimension.height +\n TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n selectedElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n if (\n targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER &&\n (focusedToolbar.style.justifyContent !== \"flex-end\" ||\n focusedToolbar.style.left !==\n `${\n selectedElementDimension.right +\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`)\n ) {\n // Overflow / Cutoff on right edge\n focusedToolbar.style.justifyContent = \"flex-end\";\n focusedToolbar.style.left = `${\n selectedElementDimension.right +\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else if (\n focusedToolbar.style.justifyContent !== \"flex-start\" ||\n focusedToolbar.style.left !== `${adjustedDistanceFromLeft}px`\n ) {\n focusedToolbar.style.justifyContent = \"flex-start\"; // default\n focusedToolbar.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n if (focusedToolbar.style.top !== `${adjustedDistanceFromTop}px`) {\n focusedToolbar.style.top = `${adjustedDistanceFromTop}px`;\n }\n }\n\n /**\n * Update the pseudo-editable if it exists.\n */\n\n if (visualBuilderContainer) {\n const psuedoEditableElement = visualBuilderContainer.querySelector(\n \".visual-builder__pseudo-editable-element\"\n ) as HTMLElement;\n const editableElement = selectedElement as HTMLElement;\n const styles = getPsuedoEditableElementStyles(editableElement);\n const styleString = Object.entries(styles).reduce(\n (acc, [key, value]) => {\n return `${acc}${key}:${value};`;\n },\n \"\"\n );\n if (\n psuedoEditableElement &&\n (psuedoEditableElement.style.cssText !== styleString ||\n psuedoEditableElement.style.visibility !== \"visible\")\n ) {\n psuedoEditableElement.style.cssText = styleString;\n // since we are copying styles from the editableEl\n // it will now have a visibility of hidden, which we added\n // when creating the pseudo editable element, so make the psuedo visible\n psuedoEditableElement.style.visibility = \"visible\";\n }\n }\n}\n\nfunction isSameRect(rect1: DOMRect, rect2: DOMRect) {\n return (\n rect1.top === rect2.top &&\n rect1.left === rect2.left &&\n rect1.width === rect2.width &&\n rect1.height === rect2.height\n );\n}\n"],"mappings":"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","names":["getChildrenDirection","distanceFromTop"]}
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
hideFocusOverlay
|
|
10
10
|
} from "../generators/generateOverlay.js";
|
|
11
11
|
import { hideHoverOutline } from "../listeners/mouseHover.js";
|
|
12
|
-
import { getEntryPermissionsCached } from "./getEntryPermissionsCached.js";
|
|
13
12
|
import {
|
|
14
13
|
LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,
|
|
15
14
|
RIGHT_EDGE_BUFFER,
|
|
@@ -20,6 +19,7 @@ import { FieldSchemaMap } from "./fieldSchemaMap.js";
|
|
|
20
19
|
import getChildrenDirection from "./getChildrenDirection.js";
|
|
21
20
|
import { getPsuedoEditableElementStyles } from "./getPsuedoEditableStylesElement.js";
|
|
22
21
|
import { isFieldDisabled } from "./isFieldDisabled.js";
|
|
22
|
+
import { fetchEntryPermissionsAndStageDetails } from "./fetchEntryPermissionsAndStageDetails.js";
|
|
23
23
|
function positionToolbar({
|
|
24
24
|
focusedToolbar,
|
|
25
25
|
selectedElementDimension
|
|
@@ -83,15 +83,17 @@ async function updateFocussedState({
|
|
|
83
83
|
fieldMetadata.content_type_uid,
|
|
84
84
|
fieldMetadata.fieldPath
|
|
85
85
|
);
|
|
86
|
-
const entryAcl = await
|
|
86
|
+
const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } = await fetchEntryPermissionsAndStageDetails({
|
|
87
87
|
entryUid: fieldMetadata.entry_uid,
|
|
88
88
|
contentTypeUid: fieldMetadata.content_type_uid,
|
|
89
|
-
locale: fieldMetadata.locale
|
|
89
|
+
locale: fieldMetadata.locale,
|
|
90
|
+
variantUid: fieldMetadata.variant
|
|
90
91
|
});
|
|
91
92
|
const { isDisabled } = isFieldDisabled(
|
|
92
93
|
fieldSchema,
|
|
93
94
|
{ editableElement, fieldMetadata },
|
|
94
|
-
entryAcl
|
|
95
|
+
entryAcl,
|
|
96
|
+
entryWorkflowStageDetails
|
|
95
97
|
);
|
|
96
98
|
addFocusOverlay(previousSelectedEditableDOM, overlayWrapper, isDisabled);
|
|
97
99
|
const psuedoEditableElement = visualBuilderContainer.querySelector(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/updateFocussedState.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { extractDetailsFromCslp } from \"../../cslp\";\nimport { getAddInstanceButtons } from \"../generators/generateAddInstanceButtons\";\nimport {\n addFocusOverlay,\n hideFocusOverlay,\n} from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport { getEntryPermissionsCached } from \"./getEntryPermissionsCached\";\nimport {\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { getPsuedoEditableElementStyles } from \"./getPsuedoEditableStylesElement\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\n\ninterface ToolbarPositionParams {\n focusedToolbar: HTMLElement | null;\n selectedElementDimension: DOMRect;\n}\n/**\n * Adjust the position of the field toolbar instead of clearing the innerhtml fo the focused toolbar.\n * By doing this, can avoid the re-rendering of the focus field toolbar.\n */\nfunction positionToolbar({\n focusedToolbar,\n selectedElementDimension,\n}: ToolbarPositionParams): void {\n if (focusedToolbar) {\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - selectedElementDimension.left;\n const distanceFromTop =\n selectedElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n\n // Adjust top position based on the available space\n const adjustedDistanceFromTop =\n selectedElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop +\n selectedElementDimension.height +\n TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n selectedElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n // Handle right-edge overflow\n if (\n targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER &&\n (focusedToolbar.style.justifyContent !== \"flex-end\" ||\n focusedToolbar.style.left !==\n `${selectedElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX}px`)\n ) {\n focusedToolbar.style.justifyContent = \"flex-end\";\n focusedToolbar.style.left = `${selectedElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX}px`;\n } else if (\n focusedToolbar.style.justifyContent !== \"flex-start\" ||\n focusedToolbar.style.left !== `${adjustedDistanceFromLeft}px`\n ) {\n focusedToolbar.style.justifyContent = \"flex-start\"; // Default\n focusedToolbar.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n // Adjust top position if necessary\n if (focusedToolbar.style.top !== `${adjustedDistanceFromTop}px`) {\n focusedToolbar.style.top = `${adjustedDistanceFromTop}px`;\n }\n }\n}\n\n/**\n * This function can be used to re-draw/update the focussed state of an element.\n * The focussed state includes the overlay, psuedo-editable, toolbar, and multiple\n * instance add buttons. It is similar to handleBuilderInteraction but it does not\n * create new elements, it just updates the existing ones whenever possible.\n * NOTE: breakdown this function into multiple functions when the need arises\n */\nexport async function updateFocussedState({\n editableElement,\n visualBuilderContainer,\n overlayWrapper,\n focusedToolbar,\n resizeObserver,\n}: {\n editableElement: HTMLElement | null;\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver | null;\n}): Promise<void> {\n let previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (\n !visualBuilderContainer ||\n !editableElement ||\n !previousSelectedEditableDOM ||\n !overlayWrapper\n ) {\n return;\n }\n\n // prefer data-cslp-unique-id when available else use data-cslp.\n // unique ID is added on click when multiple elements with same\n // data-cslp are found.\n const previousSelectedElementCslp =\n editableElement?.getAttribute(\"data-cslp\") || \"\";\n const previousSelectedElementCslpUniqueId =\n previousSelectedEditableDOM?.getAttribute(\"data-cslp-unique-id\");\n const newPreviousSelectedElement =\n document.querySelector(\n `[data-cslp-unique-id=\"${previousSelectedElementCslpUniqueId}\"]`\n ) ||\n document.querySelector(`[data-cslp=\"${previousSelectedElementCslp}\"]`);\n if (!newPreviousSelectedElement && resizeObserver) {\n hideFocusOverlay({\n visualBuilderOverlayWrapper: overlayWrapper,\n focusedToolbar,\n visualBuilderContainer,\n resizeObserver,\n noTrigger: true,\n });\n return;\n }\n if (newPreviousSelectedElement !== previousSelectedEditableDOM) {\n previousSelectedEditableDOM = newPreviousSelectedElement as HTMLElement;\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n previousSelectedEditableDOM;\n }\n\n const cslp = editableElement?.getAttribute(\"data-cslp\") || \"\";\n const fieldMetadata = extractDetailsFromCslp(cslp);\n\n hideHoverOutline(visualBuilderContainer);\n\n // in every case, this function will bring cached values\n // and this should be quick\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n const entryAcl = await getEntryPermissionsCached({\n entryUid: fieldMetadata.entry_uid,\n contentTypeUid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n });\n const { isDisabled } = isFieldDisabled(\n fieldSchema,\n { editableElement, fieldMetadata },\n entryAcl\n );\n addFocusOverlay(previousSelectedEditableDOM, overlayWrapper, isDisabled);\n\n // update psuedo editable element if present\n const psuedoEditableElement = visualBuilderContainer.querySelector(\n \".visual-builder__pseudo-editable-element\"\n ) as HTMLElement;\n if (psuedoEditableElement) {\n const styles = getPsuedoEditableElementStyles(editableElement);\n const styleString = Object.entries(styles).reduce(\n (acc, [key, value]) => {\n return `${acc}${key}:${value};`;\n },\n \"\"\n );\n psuedoEditableElement.style.cssText = styleString;\n // since we are copying styles from the editableEl\n // it will now have a visibility of hidden, which we added\n // when creating the pseudo editable element, so make the psuedo visible\n psuedoEditableElement.style.visibility = \"visible\";\n }\n\n const targetElementDimension = editableElement.getBoundingClientRect();\n if (targetElementDimension.width && targetElementDimension.height) {\n const selectedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!selectedElement) return;\n // position the focused tool bar\n positionToolbar({\n focusedToolbar: focusedToolbar,\n selectedElementDimension: selectedElement.getBoundingClientRect(),\n });\n }\n\n // re-add multiple instance add buttons\n const buttons = getAddInstanceButtons(visualBuilderContainer);\n const parentCslpValue =\n fieldMetadata.multipleFieldMetadata?.parentDetails?.parentCslpValue;\n if (\n buttons &&\n parentCslpValue &&\n buttons.length > 1 &&\n buttons[0] &&\n buttons[1]\n ) {\n const [previousButton, nextButton] = buttons;\n const direction = getChildrenDirection(\n editableElement,\n parentCslpValue\n );\n const targetDOMDimension = editableElement.getBoundingClientRect();\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else if (direction === \"vertical\") {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n }\n}\n\n/**\n * This function is used to resize/reposition focus overlay and toolbar due to a\n * mutation in the DOM or due to changes in a different field (other than the focussed field).\n */\nexport function updateFocussedStateOnMutation(\n focusOverlayWrapper: HTMLDivElement | null,\n focusedToolbar: HTMLDivElement | null,\n visualBuilderContainer: HTMLDivElement | null,\n resizeObserver: ResizeObserver | null\n) {\n if (!focusOverlayWrapper) return;\n\n let selectedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (!selectedElement) return;\n\n const selectedElementCslp = selectedElement?.getAttribute(\"data-cslp\");\n const selectedElementCslpUniqueId = selectedElement?.getAttribute(\n \"data-cslp-unique-id\"\n );\n const newSelectedElement =\n document.querySelector(\n `[data-cslp-unique-id=\"${selectedElementCslpUniqueId}\"]`\n ) || document.querySelector(`[data-cslp=\"${selectedElementCslp}\"]`);\n if (!newSelectedElement && resizeObserver) {\n hideFocusOverlay({\n visualBuilderOverlayWrapper: focusOverlayWrapper,\n focusedToolbar,\n visualBuilderContainer,\n resizeObserver,\n noTrigger: true,\n });\n return;\n }\n\n if (newSelectedElement !== selectedElement) {\n selectedElement = newSelectedElement as HTMLElement;\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n selectedElement;\n }\n\n const selectedElementDimension = selectedElement.getBoundingClientRect();\n\n /**\n * Update the focus outline if it exists.\n */\n const focusOutline = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--outline\"\n );\n\n if (focusOutline) {\n const focusOutlineDimension = focusOutline.getBoundingClientRect();\n if (!isSameRect(selectedElementDimension, focusOutlineDimension)) {\n focusOutline.style.top = `${selectedElementDimension.top + window.scrollY}px`;\n focusOutline.style.left = `${selectedElementDimension.left}px`;\n focusOutline.style.width = `${selectedElementDimension.width}px`;\n focusOutline.style.height = `${selectedElementDimension.height}px`;\n }\n }\n\n /**\n * Update the focus overlays if they exists.\n */\n\n const focusedOverlayTop = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--top\"\n );\n const focusedOverlayBottom =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--bottom\"\n );\n const focusedOverlayLeft =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--left\"\n );\n const focusedOverlayRight =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--right\"\n );\n\n const distanceFromTop = selectedElementDimension.top + window.scrollY;\n\n if (focusedOverlayTop) {\n const dimension = focusedOverlayTop.getBoundingClientRect();\n if (dimension.height !== distanceFromTop) {\n focusedOverlayTop.style.height = `calc(${distanceFromTop}px)`;\n }\n }\n\n if (focusedOverlayBottom) {\n const dimension = focusedOverlayBottom.getBoundingClientRect();\n if (\n dimension.top !== selectedElementDimension.bottom ||\n dimension.height !==\n window.document.body.scrollHeight -\n selectedElementDimension.bottom -\n window.scrollY\n ) {\n focusedOverlayBottom.style.top = `${\n selectedElementDimension.bottom + window.scrollY\n }px`;\n focusedOverlayBottom.style.height = `${\n window.document.body.scrollHeight -\n selectedElementDimension.bottom -\n window.scrollY\n }px`;\n }\n }\n\n if (focusedOverlayLeft) {\n const dimension = focusedOverlayLeft.getBoundingClientRect();\n if (\n dimension.top + window.scrollY !== distanceFromTop ||\n dimension.height !== selectedElementDimension.height ||\n dimension.width !== selectedElementDimension.left\n ) {\n focusedOverlayLeft.style.top = `${distanceFromTop}px`;\n focusedOverlayLeft.style.height = `${selectedElementDimension.height}px`;\n focusedOverlayLeft.style.width = `${selectedElementDimension.left}px`;\n }\n }\n\n if (focusedOverlayRight) {\n const dimension = focusedOverlayRight.getBoundingClientRect();\n if (\n dimension.left !== selectedElementDimension.right ||\n dimension.top + window.scrollY !== distanceFromTop ||\n dimension.height !== selectedElementDimension.height ||\n dimension.width !==\n document.documentElement.clientWidth -\n selectedElementDimension.right\n ) {\n focusedOverlayRight.style.left = `${selectedElementDimension.right}px`;\n focusedOverlayRight.style.top = `${distanceFromTop}px`;\n focusedOverlayRight.style.height = `${selectedElementDimension.height}px`;\n focusedOverlayRight.style.width = `${\n document.documentElement.clientWidth -\n selectedElementDimension.right\n }px`;\n }\n }\n\n /**\n * Update the focus toolbar if it exists.\n */\n\n if (focusedToolbar) {\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - selectedElementDimension.left;\n const distanceFromTop =\n selectedElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n selectedElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop +\n selectedElementDimension.height +\n TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n selectedElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n if (\n targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER &&\n (focusedToolbar.style.justifyContent !== \"flex-end\" ||\n focusedToolbar.style.left !==\n `${\n selectedElementDimension.right +\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`)\n ) {\n // Overflow / Cutoff on right edge\n focusedToolbar.style.justifyContent = \"flex-end\";\n focusedToolbar.style.left = `${\n selectedElementDimension.right +\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else if (\n focusedToolbar.style.justifyContent !== \"flex-start\" ||\n focusedToolbar.style.left !== `${adjustedDistanceFromLeft}px`\n ) {\n focusedToolbar.style.justifyContent = \"flex-start\"; // default\n focusedToolbar.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n if (focusedToolbar.style.top !== `${adjustedDistanceFromTop}px`) {\n focusedToolbar.style.top = `${adjustedDistanceFromTop}px`;\n }\n }\n\n /**\n * Update the pseudo-editable if it exists.\n */\n\n if (visualBuilderContainer) {\n const psuedoEditableElement = visualBuilderContainer.querySelector(\n \".visual-builder__pseudo-editable-element\"\n ) as HTMLElement;\n const editableElement = selectedElement as HTMLElement;\n const styles = getPsuedoEditableElementStyles(editableElement);\n const styleString = Object.entries(styles).reduce(\n (acc, [key, value]) => {\n return `${acc}${key}:${value};`;\n },\n \"\"\n );\n if (\n psuedoEditableElement &&\n (psuedoEditableElement.style.cssText !== styleString ||\n psuedoEditableElement.style.visibility !== \"visible\")\n ) {\n psuedoEditableElement.style.cssText = styleString;\n // since we are copying styles from the editableEl\n // it will now have a visibility of hidden, which we added\n // when creating the pseudo editable element, so make the psuedo visible\n psuedoEditableElement.style.visibility = \"visible\";\n }\n }\n}\n\nfunction isSameRect(rect1: DOMRect, rect2: DOMRect) {\n return (\n rect1.top === rect2.top &&\n rect1.left === rect2.left &&\n rect1.width === rect2.width &&\n rect1.height === rect2.height\n );\n}\n"],"mappings":"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","names":["distanceFromTop"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/updateFocussedState.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { extractDetailsFromCslp } from \"../../cslp\";\nimport { getAddInstanceButtons } from \"../generators/generateAddInstanceButtons\";\nimport {\n addFocusOverlay,\n hideFocusOverlay,\n} from \"../generators/generateOverlay\";\nimport { hideHoverOutline } from \"../listeners/mouseHover\";\nimport {\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX,\n RIGHT_EDGE_BUFFER,\n TOOLBAR_EDGE_BUFFER,\n TOP_EDGE_BUFFER,\n} from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport getChildrenDirection from \"./getChildrenDirection\";\nimport { getPsuedoEditableElementStyles } from \"./getPsuedoEditableStylesElement\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\nimport { fetchEntryPermissionsAndStageDetails } from \"./fetchEntryPermissionsAndStageDetails\";\n\ninterface ToolbarPositionParams {\n focusedToolbar: HTMLElement | null;\n selectedElementDimension: DOMRect;\n}\n/**\n * Adjust the position of the field toolbar instead of clearing the innerhtml fo the focused toolbar.\n * By doing this, can avoid the re-rendering of the focus field toolbar.\n */\nfunction positionToolbar({\n focusedToolbar,\n selectedElementDimension,\n}: ToolbarPositionParams): void {\n if (focusedToolbar) {\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - selectedElementDimension.left;\n const distanceFromTop =\n selectedElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n\n // Adjust top position based on the available space\n const adjustedDistanceFromTop =\n selectedElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop +\n selectedElementDimension.height +\n TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n selectedElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n // Handle right-edge overflow\n if (\n targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER &&\n (focusedToolbar.style.justifyContent !== \"flex-end\" ||\n focusedToolbar.style.left !==\n `${selectedElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX}px`)\n ) {\n focusedToolbar.style.justifyContent = \"flex-end\";\n focusedToolbar.style.left = `${selectedElementDimension.right + LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX}px`;\n } else if (\n focusedToolbar.style.justifyContent !== \"flex-start\" ||\n focusedToolbar.style.left !== `${adjustedDistanceFromLeft}px`\n ) {\n focusedToolbar.style.justifyContent = \"flex-start\"; // Default\n focusedToolbar.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n // Adjust top position if necessary\n if (focusedToolbar.style.top !== `${adjustedDistanceFromTop}px`) {\n focusedToolbar.style.top = `${adjustedDistanceFromTop}px`;\n }\n }\n}\n\n/**\n * This function can be used to re-draw/update the focussed state of an element.\n * The focussed state includes the overlay, psuedo-editable, toolbar, and multiple\n * instance add buttons. It is similar to handleBuilderInteraction but it does not\n * create new elements, it just updates the existing ones whenever possible.\n * NOTE: breakdown this function into multiple functions when the need arises\n */\nexport async function updateFocussedState({\n editableElement,\n visualBuilderContainer,\n overlayWrapper,\n focusedToolbar,\n resizeObserver,\n}: {\n editableElement: HTMLElement | null;\n visualBuilderContainer: HTMLDivElement | null;\n overlayWrapper: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver | null;\n}): Promise<void> {\n let previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (\n !visualBuilderContainer ||\n !editableElement ||\n !previousSelectedEditableDOM ||\n !overlayWrapper\n ) {\n return;\n }\n\n // prefer data-cslp-unique-id when available else use data-cslp.\n // unique ID is added on click when multiple elements with same\n // data-cslp are found.\n const previousSelectedElementCslp =\n editableElement?.getAttribute(\"data-cslp\") || \"\";\n const previousSelectedElementCslpUniqueId =\n previousSelectedEditableDOM?.getAttribute(\"data-cslp-unique-id\");\n const newPreviousSelectedElement =\n document.querySelector(\n `[data-cslp-unique-id=\"${previousSelectedElementCslpUniqueId}\"]`\n ) ||\n document.querySelector(`[data-cslp=\"${previousSelectedElementCslp}\"]`);\n if (!newPreviousSelectedElement && resizeObserver) {\n hideFocusOverlay({\n visualBuilderOverlayWrapper: overlayWrapper,\n focusedToolbar,\n visualBuilderContainer,\n resizeObserver,\n noTrigger: true,\n });\n return;\n }\n if (newPreviousSelectedElement !== previousSelectedEditableDOM) {\n previousSelectedEditableDOM = newPreviousSelectedElement as HTMLElement;\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n previousSelectedEditableDOM;\n }\n\n const cslp = editableElement?.getAttribute(\"data-cslp\") || \"\";\n const fieldMetadata = extractDetailsFromCslp(cslp);\n\n hideHoverOutline(visualBuilderContainer);\n\n // in every case, this function will bring cached values\n // and this should be quick\n const fieldSchema = await FieldSchemaMap.getFieldSchema(\n fieldMetadata.content_type_uid,\n fieldMetadata.fieldPath\n );\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: fieldMetadata.entry_uid,\n contentTypeUid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n variantUid: fieldMetadata.variant,\n });\n const { isDisabled } = isFieldDisabled(\n fieldSchema,\n { editableElement, fieldMetadata },\n entryAcl,\n entryWorkflowStageDetails\n );\n addFocusOverlay(previousSelectedEditableDOM, overlayWrapper, isDisabled);\n\n // update psuedo editable element if present\n const psuedoEditableElement = visualBuilderContainer.querySelector(\n \".visual-builder__pseudo-editable-element\"\n ) as HTMLElement;\n if (psuedoEditableElement) {\n const styles = getPsuedoEditableElementStyles(editableElement);\n const styleString = Object.entries(styles).reduce(\n (acc, [key, value]) => {\n return `${acc}${key}:${value};`;\n },\n \"\"\n );\n psuedoEditableElement.style.cssText = styleString;\n // since we are copying styles from the editableEl\n // it will now have a visibility of hidden, which we added\n // when creating the pseudo editable element, so make the psuedo visible\n psuedoEditableElement.style.visibility = \"visible\";\n }\n\n const targetElementDimension = editableElement.getBoundingClientRect();\n if (targetElementDimension.width && targetElementDimension.height) {\n const selectedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n\n if (!selectedElement) return;\n // position the focused tool bar\n positionToolbar({\n focusedToolbar: focusedToolbar,\n selectedElementDimension: selectedElement.getBoundingClientRect(),\n });\n }\n\n // re-add multiple instance add buttons\n const buttons = getAddInstanceButtons(visualBuilderContainer);\n const parentCslpValue =\n fieldMetadata.multipleFieldMetadata?.parentDetails?.parentCslpValue;\n if (\n buttons &&\n parentCslpValue &&\n buttons.length > 1 &&\n buttons[0] &&\n buttons[1]\n ) {\n const [previousButton, nextButton] = buttons;\n const direction = getChildrenDirection(\n editableElement,\n parentCslpValue\n );\n const targetDOMDimension = editableElement.getBoundingClientRect();\n\n if (direction === \"horizontal\") {\n const middleHeight =\n targetDOMDimension.top +\n (targetDOMDimension.bottom - targetDOMDimension.top) / 2 +\n window.scrollY;\n previousButton.style.left = `${targetDOMDimension.left}px`;\n previousButton.style.top = `${middleHeight}px`;\n\n nextButton.style.left = `${targetDOMDimension.right}px`;\n nextButton.style.top = `${middleHeight}px`;\n } else if (direction === \"vertical\") {\n const middleWidth =\n targetDOMDimension.left +\n (targetDOMDimension.right - targetDOMDimension.left) / 2;\n previousButton.style.left = `${middleWidth}px`;\n previousButton.style.top = `${\n targetDOMDimension.top + window.scrollY\n }px`;\n\n nextButton.style.left = `${middleWidth}px`;\n nextButton.style.top = `${\n targetDOMDimension.bottom + window.scrollY\n }px`;\n }\n }\n}\n\n/**\n * This function is used to resize/reposition focus overlay and toolbar due to a\n * mutation in the DOM or due to changes in a different field (other than the focussed field).\n */\nexport function updateFocussedStateOnMutation(\n focusOverlayWrapper: HTMLDivElement | null,\n focusedToolbar: HTMLDivElement | null,\n visualBuilderContainer: HTMLDivElement | null,\n resizeObserver: ResizeObserver | null\n) {\n if (!focusOverlayWrapper) return;\n\n let selectedElement =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (!selectedElement) return;\n\n const selectedElementCslp = selectedElement?.getAttribute(\"data-cslp\");\n const selectedElementCslpUniqueId = selectedElement?.getAttribute(\n \"data-cslp-unique-id\"\n );\n const newSelectedElement =\n document.querySelector(\n `[data-cslp-unique-id=\"${selectedElementCslpUniqueId}\"]`\n ) || document.querySelector(`[data-cslp=\"${selectedElementCslp}\"]`);\n if (!newSelectedElement && resizeObserver) {\n hideFocusOverlay({\n visualBuilderOverlayWrapper: focusOverlayWrapper,\n focusedToolbar,\n visualBuilderContainer,\n resizeObserver,\n noTrigger: true,\n });\n return;\n }\n\n if (newSelectedElement !== selectedElement) {\n selectedElement = newSelectedElement as HTMLElement;\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM =\n selectedElement;\n }\n\n const selectedElementDimension = selectedElement.getBoundingClientRect();\n\n /**\n * Update the focus outline if it exists.\n */\n const focusOutline = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--outline\"\n );\n\n if (focusOutline) {\n const focusOutlineDimension = focusOutline.getBoundingClientRect();\n if (!isSameRect(selectedElementDimension, focusOutlineDimension)) {\n focusOutline.style.top = `${selectedElementDimension.top + window.scrollY}px`;\n focusOutline.style.left = `${selectedElementDimension.left}px`;\n focusOutline.style.width = `${selectedElementDimension.width}px`;\n focusOutline.style.height = `${selectedElementDimension.height}px`;\n }\n }\n\n /**\n * Update the focus overlays if they exists.\n */\n\n const focusedOverlayTop = focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--top\"\n );\n const focusedOverlayBottom =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--bottom\"\n );\n const focusedOverlayLeft =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--left\"\n );\n const focusedOverlayRight =\n focusOverlayWrapper.querySelector<HTMLDivElement>(\n \".visual-builder__overlay--right\"\n );\n\n const distanceFromTop = selectedElementDimension.top + window.scrollY;\n\n if (focusedOverlayTop) {\n const dimension = focusedOverlayTop.getBoundingClientRect();\n if (dimension.height !== distanceFromTop) {\n focusedOverlayTop.style.height = `calc(${distanceFromTop}px)`;\n }\n }\n\n if (focusedOverlayBottom) {\n const dimension = focusedOverlayBottom.getBoundingClientRect();\n if (\n dimension.top !== selectedElementDimension.bottom ||\n dimension.height !==\n window.document.body.scrollHeight -\n selectedElementDimension.bottom -\n window.scrollY\n ) {\n focusedOverlayBottom.style.top = `${\n selectedElementDimension.bottom + window.scrollY\n }px`;\n focusedOverlayBottom.style.height = `${\n window.document.body.scrollHeight -\n selectedElementDimension.bottom -\n window.scrollY\n }px`;\n }\n }\n\n if (focusedOverlayLeft) {\n const dimension = focusedOverlayLeft.getBoundingClientRect();\n if (\n dimension.top + window.scrollY !== distanceFromTop ||\n dimension.height !== selectedElementDimension.height ||\n dimension.width !== selectedElementDimension.left\n ) {\n focusedOverlayLeft.style.top = `${distanceFromTop}px`;\n focusedOverlayLeft.style.height = `${selectedElementDimension.height}px`;\n focusedOverlayLeft.style.width = `${selectedElementDimension.left}px`;\n }\n }\n\n if (focusedOverlayRight) {\n const dimension = focusedOverlayRight.getBoundingClientRect();\n if (\n dimension.left !== selectedElementDimension.right ||\n dimension.top + window.scrollY !== distanceFromTop ||\n dimension.height !== selectedElementDimension.height ||\n dimension.width !==\n document.documentElement.clientWidth -\n selectedElementDimension.right\n ) {\n focusedOverlayRight.style.left = `${selectedElementDimension.right}px`;\n focusedOverlayRight.style.top = `${distanceFromTop}px`;\n focusedOverlayRight.style.height = `${selectedElementDimension.height}px`;\n focusedOverlayRight.style.width = `${\n document.documentElement.clientWidth -\n selectedElementDimension.right\n }px`;\n }\n }\n\n /**\n * Update the focus toolbar if it exists.\n */\n\n if (focusedToolbar) {\n const targetElementRightEdgeOffset =\n window.scrollX + window.innerWidth - selectedElementDimension.left;\n const distanceFromTop =\n selectedElementDimension.top + window.scrollY - TOOLBAR_EDGE_BUFFER;\n // Position the toolbar at the top unless there's insufficient space or scrolling up is not possible (topmost element targetted).\n const adjustedDistanceFromTop =\n selectedElementDimension.top + window.scrollY < TOP_EDGE_BUFFER\n ? distanceFromTop +\n selectedElementDimension.height +\n TOP_EDGE_BUFFER\n : distanceFromTop;\n\n const distanceFromLeft =\n selectedElementDimension.left - LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX;\n const adjustedDistanceFromLeft = Math.max(\n distanceFromLeft,\n TOOLBAR_EDGE_BUFFER\n );\n\n if (\n targetElementRightEdgeOffset < RIGHT_EDGE_BUFFER &&\n (focusedToolbar.style.justifyContent !== \"flex-end\" ||\n focusedToolbar.style.left !==\n `${\n selectedElementDimension.right +\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`)\n ) {\n // Overflow / Cutoff on right edge\n focusedToolbar.style.justifyContent = \"flex-end\";\n focusedToolbar.style.left = `${\n selectedElementDimension.right +\n LIVE_PREVIEW_OUTLINE_WIDTH_IN_PX\n }px`;\n } else if (\n focusedToolbar.style.justifyContent !== \"flex-start\" ||\n focusedToolbar.style.left !== `${adjustedDistanceFromLeft}px`\n ) {\n focusedToolbar.style.justifyContent = \"flex-start\"; // default\n focusedToolbar.style.left = `${adjustedDistanceFromLeft}px`;\n }\n\n if (focusedToolbar.style.top !== `${adjustedDistanceFromTop}px`) {\n focusedToolbar.style.top = `${adjustedDistanceFromTop}px`;\n }\n }\n\n /**\n * Update the pseudo-editable if it exists.\n */\n\n if (visualBuilderContainer) {\n const psuedoEditableElement = visualBuilderContainer.querySelector(\n \".visual-builder__pseudo-editable-element\"\n ) as HTMLElement;\n const editableElement = selectedElement as HTMLElement;\n const styles = getPsuedoEditableElementStyles(editableElement);\n const styleString = Object.entries(styles).reduce(\n (acc, [key, value]) => {\n return `${acc}${key}:${value};`;\n },\n \"\"\n );\n if (\n psuedoEditableElement &&\n (psuedoEditableElement.style.cssText !== styleString ||\n psuedoEditableElement.style.visibility !== \"visible\")\n ) {\n psuedoEditableElement.style.cssText = styleString;\n // since we are copying styles from the editableEl\n // it will now have a visibility of hidden, which we added\n // when creating the pseudo editable element, so make the psuedo visible\n psuedoEditableElement.style.visibility = \"visible\";\n }\n }\n}\n\nfunction isSameRect(rect1: DOMRect, rect2: DOMRect) {\n return (\n rect1.top === rect2.top &&\n rect1.left === rect2.left &&\n rect1.width === rect2.width &&\n rect1.height === rect2.height\n );\n}\n"],"mappings":"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","names":["distanceFromTop"]}
|