@contentstack/live-preview-utils 3.2.0 → 3.2.2
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 +2 -2
- package/dist/legacy/index.cjs +2 -2
- package/dist/legacy/index.cjs.map +1 -1
- package/dist/legacy/index.js +2 -2
- package/dist/legacy/index.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/legacy/logger/logger.cjs +1 -1
- package/dist/legacy/logger/logger.cjs.map +1 -1
- package/dist/legacy/logger/logger.js +1 -1
- package/dist/legacy/logger/logger.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/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +4 -1
- package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js +4 -1
- package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +24 -13
- package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +2 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +2 -0
- package/dist/legacy/visualBuilder/components/FieldToolbar.js +24 -13
- package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +8 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +8 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +12 -0
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.d.cts +6 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.d.ts +6 -1
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js +7 -0
- package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +4 -2
- package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateOverlay.js +4 -2
- package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +9 -2
- package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +1 -1
- package/dist/legacy/visualBuilder/generators/generateToolbar.js +9 -2
- package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/legacy/visualBuilder/index.cjs +3 -3
- package/dist/legacy/visualBuilder/index.cjs.map +1 -1
- package/dist/legacy/visualBuilder/index.d.cts +1 -0
- package/dist/legacy/visualBuilder/index.d.ts +1 -0
- package/dist/legacy/visualBuilder/index.js +3 -3
- package/dist/legacy/visualBuilder/index.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +33 -2
- package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseClick.js +33 -2
- package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +46 -12
- package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/legacy/visualBuilder/listeners/mouseHover.js +46 -12
- package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/collabUtils.cjs +3 -2
- package/dist/legacy/visualBuilder/utils/collabUtils.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/collabUtils.js +3 -2
- package/dist/legacy/visualBuilder/utils/collabUtils.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/createCachedFetch.cjs +58 -0
- package/dist/legacy/visualBuilder/utils/createCachedFetch.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/createCachedFetch.d.cts +12 -0
- package/dist/legacy/visualBuilder/utils/createCachedFetch.d.ts +12 -0
- package/dist/legacy/visualBuilder/utils/createCachedFetch.js +35 -0
- package/dist/legacy/visualBuilder/utils/createCachedFetch.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.cjs +1 -0
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.js +1 -0
- package/dist/legacy/visualBuilder/utils/fieldSchemaMap.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.cjs +71 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.d.cts +14 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.d.ts +14 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.js +38 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissions.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.cjs +36 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.cjs.map +1 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.d.cts +12 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.d.ts +12 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.js +13 -0
- package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.js.map +1 -0
- package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs +8 -1
- package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js +8 -1
- package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +11 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +11 -1
- package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs +7 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.cts +4 -2
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.ts +4 -2
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.js +7 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs +30 -9
- package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.d.cts +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.d.ts +1 -1
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js +30 -9
- package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs +10 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.js +10 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
- package/dist/modern/index.cjs +2 -2
- package/dist/modern/index.cjs.map +1 -1
- package/dist/modern/index.js +2 -2
- package/dist/modern/index.js.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/modern/logger/logger.cjs +1 -1
- package/dist/modern/logger/logger.cjs.map +1 -1
- package/dist/modern/logger/logger.js +1 -1
- package/dist/modern/logger/logger.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/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +4 -1
- package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js +4 -1
- package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs +24 -13
- package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +2 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +2 -0
- package/dist/modern/visualBuilder/components/FieldToolbar.js +24 -13
- package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +8 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +8 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +12 -0
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.d.cts +6 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.d.ts +6 -1
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js +7 -0
- package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs +4 -2
- package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateOverlay.js +4 -2
- package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs +9 -2
- package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +1 -1
- package/dist/modern/visualBuilder/generators/generateToolbar.js +9 -2
- package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
- package/dist/modern/visualBuilder/index.cjs +3 -3
- package/dist/modern/visualBuilder/index.cjs.map +1 -1
- package/dist/modern/visualBuilder/index.d.cts +1 -0
- package/dist/modern/visualBuilder/index.d.ts +1 -0
- package/dist/modern/visualBuilder/index.js +3 -3
- package/dist/modern/visualBuilder/index.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs +33 -2
- package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseClick.js +33 -2
- package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs +46 -12
- package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
- package/dist/modern/visualBuilder/listeners/mouseHover.js +46 -12
- package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
- package/dist/modern/visualBuilder/utils/collabUtils.cjs +3 -2
- package/dist/modern/visualBuilder/utils/collabUtils.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/collabUtils.js +3 -2
- package/dist/modern/visualBuilder/utils/collabUtils.js.map +1 -1
- package/dist/modern/visualBuilder/utils/createCachedFetch.cjs +58 -0
- package/dist/modern/visualBuilder/utils/createCachedFetch.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/createCachedFetch.d.cts +12 -0
- package/dist/modern/visualBuilder/utils/createCachedFetch.d.ts +12 -0
- package/dist/modern/visualBuilder/utils/createCachedFetch.js +35 -0
- package/dist/modern/visualBuilder/utils/createCachedFetch.js.map +1 -0
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.cjs +1 -0
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.js +1 -0
- package/dist/modern/visualBuilder/utils/fieldSchemaMap.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getEntryPermissions.cjs +70 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissions.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissions.d.cts +14 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissions.d.ts +14 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissions.js +37 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissions.js.map +1 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.cjs +36 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.cjs.map +1 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.d.cts +12 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.d.ts +12 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.js +13 -0
- package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.js.map +1 -0
- package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs +8 -1
- package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js +8 -1
- package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +11 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js +11 -1
- package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs +7 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.d.cts +4 -2
- package/dist/modern/visualBuilder/utils/isFieldDisabled.d.ts +4 -2
- package/dist/modern/visualBuilder/utils/isFieldDisabled.js +7 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.js.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs +30 -9
- package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.d.cts +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.d.ts +1 -1
- package/dist/modern/visualBuilder/utils/updateFocussedState.js +30 -9
- package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs +10 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.js +10 -1
- package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import "../../chunk-5WRI5ZAA.js";
|
|
2
|
+
|
|
3
|
+
// src/visualBuilder/utils/createCachedFetch.ts
|
|
4
|
+
function createCachedFetch(fetchFn, uidResolver = (...args) => JSON.stringify(args)) {
|
|
5
|
+
const cache = /* @__PURE__ */ new Map();
|
|
6
|
+
const pendingPromises = /* @__PURE__ */ new Map();
|
|
7
|
+
async function cachedFetch(...args) {
|
|
8
|
+
const uid = uidResolver(...args);
|
|
9
|
+
if (cache.has(uid)) {
|
|
10
|
+
return cache.get(uid);
|
|
11
|
+
}
|
|
12
|
+
if (pendingPromises.has(uid)) {
|
|
13
|
+
return pendingPromises.get(uid);
|
|
14
|
+
}
|
|
15
|
+
const promise = fetchFn(...args).then((data) => {
|
|
16
|
+
cache.set(uid, data);
|
|
17
|
+
pendingPromises.delete(uid);
|
|
18
|
+
return data;
|
|
19
|
+
}).catch((error) => {
|
|
20
|
+
pendingPromises.delete(uid);
|
|
21
|
+
throw error;
|
|
22
|
+
});
|
|
23
|
+
pendingPromises.set(uid, promise);
|
|
24
|
+
return promise;
|
|
25
|
+
}
|
|
26
|
+
cachedFetch.clearCache = () => {
|
|
27
|
+
cache.clear();
|
|
28
|
+
pendingPromises.clear();
|
|
29
|
+
};
|
|
30
|
+
return cachedFetch;
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
createCachedFetch
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=createCachedFetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/createCachedFetch.ts"],"sourcesContent":["/**\n * Creates a cached async fetch function with support for any number of arguments\n * @param fetchFn - The async function to cache\n * @param uidResolver - Function that generates a unique ID from the arguments passed to fetchFn\n * @returns A cached version of the fetch function with the same signature\n */\nexport function createCachedFetch<TArgs extends any[], TResult>(\n fetchFn: (...args: TArgs) => Promise<TResult>,\n uidResolver: (...args: TArgs) => string = (...args) => JSON.stringify(args)\n): {\n (...args: TArgs): Promise<TResult>;\n clearCache: () => void;\n} {\n // Cache storage\n const cache = new Map<string, TResult>();\n // Track in-flight requests\n const pendingPromises = new Map<string, Promise<TResult>>();\n\n /**\n * The cached fetch function\n * @param args - Arguments to pass to the original fetch function\n * @returns Promise that resolves with the data\n */\n async function cachedFetch(...args: TArgs): Promise<TResult> {\n // Generate unique ID for these arguments\n const uid = uidResolver(...args);\n\n // Return cached value if available\n if (cache.has(uid)) {\n return cache.get(uid)!;\n }\n\n // Return existing promise if request is already in progress\n if (pendingPromises.has(uid)) {\n return pendingPromises.get(uid)!;\n }\n\n // Create new promise for this request\n const promise = fetchFn(...args)\n .then((data) => {\n // Store result in cache\n cache.set(uid, data);\n // Remove from pending\n pendingPromises.delete(uid);\n return data;\n })\n .catch((error) => {\n // Clean up on error\n pendingPromises.delete(uid);\n throw error;\n });\n\n // Store the promise\n pendingPromises.set(uid, promise);\n return promise;\n }\n\n // Add clearCache method to the function\n cachedFetch.clearCache = () => {\n cache.clear();\n pendingPromises.clear();\n };\n\n return cachedFetch;\n}\n"],"mappings":";;;AAMO,SAAS,kBACZ,SACA,cAA0C,IAAI,SAAS,KAAK,UAAU,IAAI,GAI5E;AAEE,QAAM,QAAQ,oBAAI,IAAqB;AAEvC,QAAM,kBAAkB,oBAAI,IAA8B;AAO1D,iBAAe,eAAe,MAA+B;AAEzD,UAAM,MAAM,YAAY,GAAG,IAAI;AAG/B,QAAI,MAAM,IAAI,GAAG,GAAG;AAChB,aAAO,MAAM,IAAI,GAAG;AAAA,IACxB;AAGA,QAAI,gBAAgB,IAAI,GAAG,GAAG;AAC1B,aAAO,gBAAgB,IAAI,GAAG;AAAA,IAClC;AAGA,UAAM,UAAU,QAAQ,GAAG,IAAI,EAC1B,KAAK,CAAC,SAAS;AAEZ,YAAM,IAAI,KAAK,IAAI;AAEnB,sBAAgB,OAAO,GAAG;AAC1B,aAAO;AAAA,IACX,CAAC,EACA,MAAM,CAAC,UAAU;AAEd,sBAAgB,OAAO,GAAG;AAC1B,YAAM;AAAA,IACV,CAAC;AAGL,oBAAgB,IAAI,KAAK,OAAO;AAChC,WAAO;AAAA,EACX;AAGA,cAAY,aAAa,MAAM;AAC3B,UAAM,MAAM;AACZ,oBAAgB,MAAM;AAAA,EAC1B;AAEA,SAAO;AACX;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/fieldSchemaMap.ts"],"sourcesContent":["import { has, isEqual } from \"lodash-es\";\nimport {\n ISchemaFieldMap,\n ISchemaIndividualFieldMap,\n} from \"./types/index.types\";\n\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\n\ninterface IFieldSchemaMapResponse {\n fieldSchemaMap: ISchemaIndividualFieldMap;\n}\n/**\n * Represents a cache for field schemas. Field schemas are\n * used to easily get the field schema based on the field\n * Cslp.\n */\nexport class FieldSchemaMap {\n private static fieldSchema: {\n [contentTypeUid: string]: ISchemaIndividualFieldMap;\n } = {};\n\n private static fieldSchemaPromise: {\n [contentTypeUid: string]: Promise<IFieldSchemaMapResponse> | undefined;\n } = {};\n\n private static async fetchFieldSchema(content_type_uid: string) {\n if (!FieldSchemaMap.fieldSchemaPromise?.[content_type_uid]) {\n FieldSchemaMap.fieldSchemaPromise[content_type_uid] =\n visualBuilderPostMessage?.send<IFieldSchemaMapResponse>(\n VisualBuilderPostMessageEvents.GET_FIELD_SCHEMA,\n {\n contentTypeUid: content_type_uid,\n }\n );\n }\n return FieldSchemaMap.fieldSchemaPromise[content_type_uid];\n }\n /**\n * Retrieves the schema field map for a given content type and field Cslp.\n * @param contentTypeUid - The unique identifier of the content type.\n * @param fieldCslp - The Cslp of the field.\n * @returns The schema field map.\n */\n static async getFieldSchema(\n contentTypeUid: string,\n fieldCslp: string\n ): Promise<ISchemaFieldMap> {\n if (FieldSchemaMap.hasFieldSchema(contentTypeUid, fieldCslp)) {\n return Promise.resolve(\n FieldSchemaMap.fieldSchema[contentTypeUid][fieldCslp]\n );\n }\n\n const data = await FieldSchemaMap.fetchFieldSchema(contentTypeUid);\n\n if (data?.fieldSchemaMap) {\n FieldSchemaMap.fieldSchema[contentTypeUid] = data.fieldSchemaMap;\n }\n\n return FieldSchemaMap?.fieldSchema?.[contentTypeUid]?.[fieldCslp] || null;\n }\n\n static hasFieldSchema(contentTypeUid: string, fieldCslp: string): boolean {\n return has(FieldSchemaMap.fieldSchema, [contentTypeUid, fieldCslp]);\n }\n\n /**\n * Checks if two field schemas are equal.\n * @param firstFieldSchema - The first field schema to compare.\n * @param secondFieldSchema - The second field schema to compare.\n * @returns True if the field schemas are equal, false otherwise.\n */\n static areFieldSchemaEqual(\n firstFieldSchema: ISchemaFieldMap,\n secondFieldSchema: ISchemaFieldMap\n ): boolean {\n return isEqual(firstFieldSchema, secondFieldSchema);\n }\n\n /**\n * Sets the field schema for a given content type.\n * @param contentTypeUid The unique identifier of the content type.\n * @param fieldSchemaMap The map of individual field schemas.\n */\n static setFieldSchema(\n contentTypeUid: string,\n fieldSchemaMap: ISchemaIndividualFieldMap\n ): void {\n FieldSchemaMap.fieldSchema[contentTypeUid] = fieldSchemaMap;\n }\n\n /**\n * Clears the field schema cache.\n */\n static clear(): void {\n FieldSchemaMap.fieldSchema = {};\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA6B;AAM7B,sCAAqC;AACrC,yBAA+C;AAUxC,IAAM,kBAAN,MAAM,gBAAe;AAAA,EASxB,aAAqB,iBAAiB,kBAA0B;AAC5D,QAAI,CAAC,gBAAe,qBAAqB,gBAAgB,GAAG;AACxD,sBAAe,mBAAmB,gBAAgB,IAC9C,gCAAAA,SAA0B;AAAA,QACtB,kDAA+B;AAAA,QAC/B;AAAA,UACI,gBAAgB;AAAA,QACpB;AAAA,MACJ;AAAA,IACR;AACA,WAAO,gBAAe,mBAAmB,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eACT,gBACA,WACwB;AACxB,QAAI,gBAAe,eAAe,gBAAgB,SAAS,GAAG;AAC1D,aAAO,QAAQ;AAAA,QACX,gBAAe,YAAY,cAAc,EAAE,SAAS;AAAA,MACxD;AAAA,IACJ;AAEA,UAAM,OAAO,MAAM,gBAAe,iBAAiB,cAAc;AAEjE,QAAI,MAAM,gBAAgB;AACtB,sBAAe,YAAY,cAAc,IAAI,KAAK;AAAA,IACtD;AAEA,WAAO,iBAAgB,cAAc,cAAc,IAAI,SAAS,KAAK;AAAA,EACzE;AAAA,EAEA,OAAO,eAAe,gBAAwB,WAA4B;AACtE,eAAO,sBAAI,gBAAe,aAAa,CAAC,gBAAgB,SAAS,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,oBACH,kBACA,mBACO;AACP,eAAO,0BAAQ,kBAAkB,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,eACH,gBACA,gBACI;AACJ,oBAAe,YAAY,cAAc,IAAI;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,QAAc;AACjB,oBAAe,cAAc,CAAC;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/fieldSchemaMap.ts"],"sourcesContent":["import { has, isEqual } from \"lodash-es\";\nimport {\n ISchemaFieldMap,\n ISchemaIndividualFieldMap,\n} from \"./types/index.types\";\n\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\n\ninterface IFieldSchemaMapResponse {\n fieldSchemaMap: ISchemaIndividualFieldMap;\n}\n/**\n * Represents a cache for field schemas. Field schemas are\n * used to easily get the field schema based on the field\n * Cslp.\n */\nexport class FieldSchemaMap {\n private static fieldSchema: {\n [contentTypeUid: string]: ISchemaIndividualFieldMap;\n } = {};\n\n private static fieldSchemaPromise: {\n [contentTypeUid: string]: Promise<IFieldSchemaMapResponse> | undefined;\n } = {};\n\n private static async fetchFieldSchema(content_type_uid: string) {\n if (!FieldSchemaMap.fieldSchemaPromise?.[content_type_uid]) {\n FieldSchemaMap.fieldSchemaPromise[content_type_uid] =\n visualBuilderPostMessage?.send<IFieldSchemaMapResponse>(\n VisualBuilderPostMessageEvents.GET_FIELD_SCHEMA,\n {\n contentTypeUid: content_type_uid,\n }\n );\n }\n return FieldSchemaMap.fieldSchemaPromise[content_type_uid];\n }\n /**\n * Retrieves the schema field map for a given content type and field Cslp.\n * @param contentTypeUid - The unique identifier of the content type.\n * @param fieldCslp - The Cslp of the field.\n * @returns The schema field map.\n */\n static async getFieldSchema(\n contentTypeUid: string,\n fieldCslp: string\n ): Promise<ISchemaFieldMap> {\n if (FieldSchemaMap.hasFieldSchema(contentTypeUid, fieldCslp)) {\n return Promise.resolve(\n FieldSchemaMap.fieldSchema[contentTypeUid][fieldCslp]\n );\n }\n\n const data = await FieldSchemaMap.fetchFieldSchema(contentTypeUid);\n\n if (data?.fieldSchemaMap) {\n FieldSchemaMap.fieldSchema[contentTypeUid] = data.fieldSchemaMap;\n }\n\n return FieldSchemaMap?.fieldSchema?.[contentTypeUid]?.[fieldCslp] || null;\n }\n\n static hasFieldSchema(contentTypeUid: string, fieldCslp: string): boolean {\n return has(FieldSchemaMap.fieldSchema, [contentTypeUid, fieldCslp]);\n }\n\n /**\n * Checks if two field schemas are equal.\n * @param firstFieldSchema - The first field schema to compare.\n * @param secondFieldSchema - The second field schema to compare.\n * @returns True if the field schemas are equal, false otherwise.\n */\n static areFieldSchemaEqual(\n firstFieldSchema: ISchemaFieldMap,\n secondFieldSchema: ISchemaFieldMap\n ): boolean {\n return isEqual(firstFieldSchema, secondFieldSchema);\n }\n\n /**\n * Sets the field schema for a given content type.\n * @param contentTypeUid The unique identifier of the content type.\n * @param fieldSchemaMap The map of individual field schemas.\n */\n static setFieldSchema(\n contentTypeUid: string,\n fieldSchemaMap: ISchemaIndividualFieldMap\n ): void {\n FieldSchemaMap.fieldSchema[contentTypeUid] = fieldSchemaMap;\n }\n\n /**\n * Clears the field schema cache.\n */\n static clear(): void {\n FieldSchemaMap.fieldSchema = {};\n FieldSchemaMap.fieldSchemaPromise = {};\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA6B;AAM7B,sCAAqC;AACrC,yBAA+C;AAUxC,IAAM,kBAAN,MAAM,gBAAe;AAAA,EASxB,aAAqB,iBAAiB,kBAA0B;AAC5D,QAAI,CAAC,gBAAe,qBAAqB,gBAAgB,GAAG;AACxD,sBAAe,mBAAmB,gBAAgB,IAC9C,gCAAAA,SAA0B;AAAA,QACtB,kDAA+B;AAAA,QAC/B;AAAA,UACI,gBAAgB;AAAA,QACpB;AAAA,MACJ;AAAA,IACR;AACA,WAAO,gBAAe,mBAAmB,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eACT,gBACA,WACwB;AACxB,QAAI,gBAAe,eAAe,gBAAgB,SAAS,GAAG;AAC1D,aAAO,QAAQ;AAAA,QACX,gBAAe,YAAY,cAAc,EAAE,SAAS;AAAA,MACxD;AAAA,IACJ;AAEA,UAAM,OAAO,MAAM,gBAAe,iBAAiB,cAAc;AAEjE,QAAI,MAAM,gBAAgB;AACtB,sBAAe,YAAY,cAAc,IAAI,KAAK;AAAA,IACtD;AAEA,WAAO,iBAAgB,cAAc,cAAc,IAAI,SAAS,KAAK;AAAA,EACzE;AAAA,EAEA,OAAO,eAAe,gBAAwB,WAA4B;AACtE,eAAO,sBAAI,gBAAe,aAAa,CAAC,gBAAgB,SAAS,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,oBACH,kBACA,mBACO;AACP,eAAO,0BAAQ,kBAAkB,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,eACH,gBACA,gBACI;AACJ,oBAAe,YAAY,cAAc,IAAI;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,QAAc;AACjB,oBAAe,cAAc,CAAC;AAC9B,oBAAe,qBAAqB,CAAC;AAAA,EACzC;AACJ;AAlFa,gBACM,cAEX,CAAC;AAHI,gBAKM,qBAEX,CAAC;AAPF,IAAM,iBAAN;","names":["visualBuilderPostMessage"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/fieldSchemaMap.ts"],"sourcesContent":["import { has, isEqual } from \"lodash-es\";\nimport {\n ISchemaFieldMap,\n ISchemaIndividualFieldMap,\n} from \"./types/index.types\";\n\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\n\ninterface IFieldSchemaMapResponse {\n fieldSchemaMap: ISchemaIndividualFieldMap;\n}\n/**\n * Represents a cache for field schemas. Field schemas are\n * used to easily get the field schema based on the field\n * Cslp.\n */\nexport class FieldSchemaMap {\n private static fieldSchema: {\n [contentTypeUid: string]: ISchemaIndividualFieldMap;\n } = {};\n\n private static fieldSchemaPromise: {\n [contentTypeUid: string]: Promise<IFieldSchemaMapResponse> | undefined;\n } = {};\n\n private static async fetchFieldSchema(content_type_uid: string) {\n if (!FieldSchemaMap.fieldSchemaPromise?.[content_type_uid]) {\n FieldSchemaMap.fieldSchemaPromise[content_type_uid] =\n visualBuilderPostMessage?.send<IFieldSchemaMapResponse>(\n VisualBuilderPostMessageEvents.GET_FIELD_SCHEMA,\n {\n contentTypeUid: content_type_uid,\n }\n );\n }\n return FieldSchemaMap.fieldSchemaPromise[content_type_uid];\n }\n /**\n * Retrieves the schema field map for a given content type and field Cslp.\n * @param contentTypeUid - The unique identifier of the content type.\n * @param fieldCslp - The Cslp of the field.\n * @returns The schema field map.\n */\n static async getFieldSchema(\n contentTypeUid: string,\n fieldCslp: string\n ): Promise<ISchemaFieldMap> {\n if (FieldSchemaMap.hasFieldSchema(contentTypeUid, fieldCslp)) {\n return Promise.resolve(\n FieldSchemaMap.fieldSchema[contentTypeUid][fieldCslp]\n );\n }\n\n const data = await FieldSchemaMap.fetchFieldSchema(contentTypeUid);\n\n if (data?.fieldSchemaMap) {\n FieldSchemaMap.fieldSchema[contentTypeUid] = data.fieldSchemaMap;\n }\n\n return FieldSchemaMap?.fieldSchema?.[contentTypeUid]?.[fieldCslp] || null;\n }\n\n static hasFieldSchema(contentTypeUid: string, fieldCslp: string): boolean {\n return has(FieldSchemaMap.fieldSchema, [contentTypeUid, fieldCslp]);\n }\n\n /**\n * Checks if two field schemas are equal.\n * @param firstFieldSchema - The first field schema to compare.\n * @param secondFieldSchema - The second field schema to compare.\n * @returns True if the field schemas are equal, false otherwise.\n */\n static areFieldSchemaEqual(\n firstFieldSchema: ISchemaFieldMap,\n secondFieldSchema: ISchemaFieldMap\n ): boolean {\n return isEqual(firstFieldSchema, secondFieldSchema);\n }\n\n /**\n * Sets the field schema for a given content type.\n * @param contentTypeUid The unique identifier of the content type.\n * @param fieldSchemaMap The map of individual field schemas.\n */\n static setFieldSchema(\n contentTypeUid: string,\n fieldSchemaMap: ISchemaIndividualFieldMap\n ): void {\n FieldSchemaMap.fieldSchema[contentTypeUid] = fieldSchemaMap;\n }\n\n /**\n * Clears the field schema cache.\n */\n static clear(): void {\n FieldSchemaMap.fieldSchema = {};\n }\n}\n"],"mappings":";;;AAAA,SAAS,KAAK,eAAe;AAM7B,OAAO,8BAA8B;AACrC,SAAS,sCAAsC;AAUxC,IAAM,kBAAN,MAAM,gBAAe;AAAA,EASxB,aAAqB,iBAAiB,kBAA0B;AAC5D,QAAI,CAAC,gBAAe,qBAAqB,gBAAgB,GAAG;AACxD,sBAAe,mBAAmB,gBAAgB,IAC9C,0BAA0B;AAAA,QACtB,+BAA+B;AAAA,QAC/B;AAAA,UACI,gBAAgB;AAAA,QACpB;AAAA,MACJ;AAAA,IACR;AACA,WAAO,gBAAe,mBAAmB,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eACT,gBACA,WACwB;AACxB,QAAI,gBAAe,eAAe,gBAAgB,SAAS,GAAG;AAC1D,aAAO,QAAQ;AAAA,QACX,gBAAe,YAAY,cAAc,EAAE,SAAS;AAAA,MACxD;AAAA,IACJ;AAEA,UAAM,OAAO,MAAM,gBAAe,iBAAiB,cAAc;AAEjE,QAAI,MAAM,gBAAgB;AACtB,sBAAe,YAAY,cAAc,IAAI,KAAK;AAAA,IACtD;AAEA,WAAO,iBAAgB,cAAc,cAAc,IAAI,SAAS,KAAK;AAAA,EACzE;AAAA,EAEA,OAAO,eAAe,gBAAwB,WAA4B;AACtE,WAAO,IAAI,gBAAe,aAAa,CAAC,gBAAgB,SAAS,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,oBACH,kBACA,mBACO;AACP,WAAO,QAAQ,kBAAkB,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,eACH,gBACA,gBACI;AACJ,oBAAe,YAAY,cAAc,IAAI;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,QAAc;AACjB,oBAAe,cAAc,CAAC;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/fieldSchemaMap.ts"],"sourcesContent":["import { has, isEqual } from \"lodash-es\";\nimport {\n ISchemaFieldMap,\n ISchemaIndividualFieldMap,\n} from \"./types/index.types\";\n\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\n\ninterface IFieldSchemaMapResponse {\n fieldSchemaMap: ISchemaIndividualFieldMap;\n}\n/**\n * Represents a cache for field schemas. Field schemas are\n * used to easily get the field schema based on the field\n * Cslp.\n */\nexport class FieldSchemaMap {\n private static fieldSchema: {\n [contentTypeUid: string]: ISchemaIndividualFieldMap;\n } = {};\n\n private static fieldSchemaPromise: {\n [contentTypeUid: string]: Promise<IFieldSchemaMapResponse> | undefined;\n } = {};\n\n private static async fetchFieldSchema(content_type_uid: string) {\n if (!FieldSchemaMap.fieldSchemaPromise?.[content_type_uid]) {\n FieldSchemaMap.fieldSchemaPromise[content_type_uid] =\n visualBuilderPostMessage?.send<IFieldSchemaMapResponse>(\n VisualBuilderPostMessageEvents.GET_FIELD_SCHEMA,\n {\n contentTypeUid: content_type_uid,\n }\n );\n }\n return FieldSchemaMap.fieldSchemaPromise[content_type_uid];\n }\n /**\n * Retrieves the schema field map for a given content type and field Cslp.\n * @param contentTypeUid - The unique identifier of the content type.\n * @param fieldCslp - The Cslp of the field.\n * @returns The schema field map.\n */\n static async getFieldSchema(\n contentTypeUid: string,\n fieldCslp: string\n ): Promise<ISchemaFieldMap> {\n if (FieldSchemaMap.hasFieldSchema(contentTypeUid, fieldCslp)) {\n return Promise.resolve(\n FieldSchemaMap.fieldSchema[contentTypeUid][fieldCslp]\n );\n }\n\n const data = await FieldSchemaMap.fetchFieldSchema(contentTypeUid);\n\n if (data?.fieldSchemaMap) {\n FieldSchemaMap.fieldSchema[contentTypeUid] = data.fieldSchemaMap;\n }\n\n return FieldSchemaMap?.fieldSchema?.[contentTypeUid]?.[fieldCslp] || null;\n }\n\n static hasFieldSchema(contentTypeUid: string, fieldCslp: string): boolean {\n return has(FieldSchemaMap.fieldSchema, [contentTypeUid, fieldCslp]);\n }\n\n /**\n * Checks if two field schemas are equal.\n * @param firstFieldSchema - The first field schema to compare.\n * @param secondFieldSchema - The second field schema to compare.\n * @returns True if the field schemas are equal, false otherwise.\n */\n static areFieldSchemaEqual(\n firstFieldSchema: ISchemaFieldMap,\n secondFieldSchema: ISchemaFieldMap\n ): boolean {\n return isEqual(firstFieldSchema, secondFieldSchema);\n }\n\n /**\n * Sets the field schema for a given content type.\n * @param contentTypeUid The unique identifier of the content type.\n * @param fieldSchemaMap The map of individual field schemas.\n */\n static setFieldSchema(\n contentTypeUid: string,\n fieldSchemaMap: ISchemaIndividualFieldMap\n ): void {\n FieldSchemaMap.fieldSchema[contentTypeUid] = fieldSchemaMap;\n }\n\n /**\n * Clears the field schema cache.\n */\n static clear(): void {\n FieldSchemaMap.fieldSchema = {};\n FieldSchemaMap.fieldSchemaPromise = {};\n }\n}\n"],"mappings":";;;AAAA,SAAS,KAAK,eAAe;AAM7B,OAAO,8BAA8B;AACrC,SAAS,sCAAsC;AAUxC,IAAM,kBAAN,MAAM,gBAAe;AAAA,EASxB,aAAqB,iBAAiB,kBAA0B;AAC5D,QAAI,CAAC,gBAAe,qBAAqB,gBAAgB,GAAG;AACxD,sBAAe,mBAAmB,gBAAgB,IAC9C,0BAA0B;AAAA,QACtB,+BAA+B;AAAA,QAC/B;AAAA,UACI,gBAAgB;AAAA,QACpB;AAAA,MACJ;AAAA,IACR;AACA,WAAO,gBAAe,mBAAmB,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eACT,gBACA,WACwB;AACxB,QAAI,gBAAe,eAAe,gBAAgB,SAAS,GAAG;AAC1D,aAAO,QAAQ;AAAA,QACX,gBAAe,YAAY,cAAc,EAAE,SAAS;AAAA,MACxD;AAAA,IACJ;AAEA,UAAM,OAAO,MAAM,gBAAe,iBAAiB,cAAc;AAEjE,QAAI,MAAM,gBAAgB;AACtB,sBAAe,YAAY,cAAc,IAAI,KAAK;AAAA,IACtD;AAEA,WAAO,iBAAgB,cAAc,cAAc,IAAI,SAAS,KAAK;AAAA,EACzE;AAAA,EAEA,OAAO,eAAe,gBAAwB,WAA4B;AACtE,WAAO,IAAI,gBAAe,aAAa,CAAC,gBAAgB,SAAS,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,oBACH,kBACA,mBACO;AACP,WAAO,QAAQ,kBAAkB,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,eACH,gBACA,gBACI;AACJ,oBAAe,YAAY,cAAc,IAAI;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,QAAc;AACjB,oBAAe,cAAc,CAAC;AAC9B,oBAAe,qBAAqB,CAAC;AAAA,EACzC;AACJ;AAlFa,gBACM,cAEX,CAAC;AAHI,gBAKM,qBAEX,CAAC;AAPF,IAAM,iBAAN;","names":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/visualBuilder/utils/getEntryPermissions.ts
|
|
31
|
+
var getEntryPermissions_exports = {};
|
|
32
|
+
__export(getEntryPermissions_exports, {
|
|
33
|
+
getEntryPermissions: () => getEntryPermissions
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(getEntryPermissions_exports);
|
|
36
|
+
var import_visualBuilderPostMessage = __toESM(require("./visualBuilderPostMessage.cjs"), 1);
|
|
37
|
+
async function getEntryPermissions({
|
|
38
|
+
entryUid,
|
|
39
|
+
contentTypeUid,
|
|
40
|
+
locale
|
|
41
|
+
}) {
|
|
42
|
+
try {
|
|
43
|
+
const permissions = await import_visualBuilderPostMessage.default?.send(
|
|
44
|
+
"get-permissions",
|
|
45
|
+
{
|
|
46
|
+
type: "entry",
|
|
47
|
+
entryUid,
|
|
48
|
+
contentTypeUid,
|
|
49
|
+
locale
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
if (permissions) {
|
|
53
|
+
return permissions;
|
|
54
|
+
}
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.debug("[Visual Builder] Error fetching permissions", error);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
create: true,
|
|
60
|
+
read: true,
|
|
61
|
+
update: true,
|
|
62
|
+
delete: true,
|
|
63
|
+
publish: true
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
67
|
+
0 && (module.exports = {
|
|
68
|
+
getEntryPermissions
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=getEntryPermissions.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/getEntryPermissions.ts"],"sourcesContent":["import visualBuilderPostMessage from \"./visualBuilderPostMessage\";\n\nexport interface EntryPermissions {\n create: boolean;\n read: boolean;\n update: boolean;\n delete: boolean;\n publish: boolean;\n}\n\nexport async function getEntryPermissions({\n entryUid,\n contentTypeUid,\n locale,\n}: {\n entryUid: string;\n contentTypeUid: string;\n locale: string;\n}) {\n try {\n const permissions =\n await visualBuilderPostMessage?.send<EntryPermissions>(\n \"get-permissions\",\n {\n type: \"entry\",\n entryUid,\n contentTypeUid,\n locale,\n }\n );\n if (permissions) {\n return permissions;\n }\n } catch (error) {\n console.debug(\"[Visual Builder] Error fetching permissions\", error);\n }\n // allow editing when things go wrong,\n // e.g. when no permissions are received\n return {\n create: true,\n read: true,\n update: true,\n delete: true,\n publish: true,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAAqC;AAUrC,eAAsB,oBAAoB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACJ,GAIG;AACC,MAAI;AACA,UAAM,cACF,MAAM,gCAAAA,SAA0B;AAAA,MAC5B;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACJ,QAAI,aAAa;AACb,aAAO;AAAA,IACX;AAAA,EACJ,SAAS,OAAO;AACZ,YAAQ,MAAM,+CAA+C,KAAK;AAAA,EACtE;AAGA,SAAO;AAAA,IACH,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,EACb;AACJ;","names":["visualBuilderPostMessage"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface EntryPermissions {
|
|
2
|
+
create: boolean;
|
|
3
|
+
read: boolean;
|
|
4
|
+
update: boolean;
|
|
5
|
+
delete: boolean;
|
|
6
|
+
publish: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare function getEntryPermissions({ entryUid, contentTypeUid, locale, }: {
|
|
9
|
+
entryUid: string;
|
|
10
|
+
contentTypeUid: string;
|
|
11
|
+
locale: string;
|
|
12
|
+
}): Promise<EntryPermissions>;
|
|
13
|
+
|
|
14
|
+
export { type EntryPermissions, getEntryPermissions };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface EntryPermissions {
|
|
2
|
+
create: boolean;
|
|
3
|
+
read: boolean;
|
|
4
|
+
update: boolean;
|
|
5
|
+
delete: boolean;
|
|
6
|
+
publish: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare function getEntryPermissions({ entryUid, contentTypeUid, locale, }: {
|
|
9
|
+
entryUid: string;
|
|
10
|
+
contentTypeUid: string;
|
|
11
|
+
locale: string;
|
|
12
|
+
}): Promise<EntryPermissions>;
|
|
13
|
+
|
|
14
|
+
export { type EntryPermissions, getEntryPermissions };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import "../../chunk-5WRI5ZAA.js";
|
|
2
|
+
|
|
3
|
+
// src/visualBuilder/utils/getEntryPermissions.ts
|
|
4
|
+
import visualBuilderPostMessage from "./visualBuilderPostMessage.js";
|
|
5
|
+
async function getEntryPermissions({
|
|
6
|
+
entryUid,
|
|
7
|
+
contentTypeUid,
|
|
8
|
+
locale
|
|
9
|
+
}) {
|
|
10
|
+
try {
|
|
11
|
+
const permissions = await visualBuilderPostMessage?.send(
|
|
12
|
+
"get-permissions",
|
|
13
|
+
{
|
|
14
|
+
type: "entry",
|
|
15
|
+
entryUid,
|
|
16
|
+
contentTypeUid,
|
|
17
|
+
locale
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
if (permissions) {
|
|
21
|
+
return permissions;
|
|
22
|
+
}
|
|
23
|
+
} catch (error) {
|
|
24
|
+
console.debug("[Visual Builder] Error fetching permissions", error);
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
create: true,
|
|
28
|
+
read: true,
|
|
29
|
+
update: true,
|
|
30
|
+
delete: true,
|
|
31
|
+
publish: true
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
getEntryPermissions
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=getEntryPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/getEntryPermissions.ts"],"sourcesContent":["import visualBuilderPostMessage from \"./visualBuilderPostMessage\";\n\nexport interface EntryPermissions {\n create: boolean;\n read: boolean;\n update: boolean;\n delete: boolean;\n publish: boolean;\n}\n\nexport async function getEntryPermissions({\n entryUid,\n contentTypeUid,\n locale,\n}: {\n entryUid: string;\n contentTypeUid: string;\n locale: string;\n}) {\n try {\n const permissions =\n await visualBuilderPostMessage?.send<EntryPermissions>(\n \"get-permissions\",\n {\n type: \"entry\",\n entryUid,\n contentTypeUid,\n locale,\n }\n );\n if (permissions) {\n return permissions;\n }\n } catch (error) {\n console.debug(\"[Visual Builder] Error fetching permissions\", error);\n }\n // allow editing when things go wrong,\n // e.g. when no permissions are received\n return {\n create: true,\n read: true,\n update: true,\n delete: true,\n publish: true,\n };\n}\n"],"mappings":";;;AAAA,OAAO,8BAA8B;AAUrC,eAAsB,oBAAoB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACJ,GAIG;AACC,MAAI;AACA,UAAM,cACF,MAAM,0BAA0B;AAAA,MAC5B;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACJ,QAAI,aAAa;AACb,aAAO;AAAA,IACX;AAAA,EACJ,SAAS,OAAO;AACZ,YAAQ,MAAM,+CAA+C,KAAK;AAAA,EACtE;AAGA,SAAO;AAAA,IACH,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,EACb;AACJ;","names":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/visualBuilder/utils/getEntryPermissionsCached.ts
|
|
21
|
+
var getEntryPermissionsCached_exports = {};
|
|
22
|
+
__export(getEntryPermissionsCached_exports, {
|
|
23
|
+
getEntryPermissionsCached: () => getEntryPermissionsCached
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(getEntryPermissionsCached_exports);
|
|
26
|
+
var import_getEntryPermissions = require("./getEntryPermissions.cjs");
|
|
27
|
+
var import_createCachedFetch = require("./createCachedFetch.cjs");
|
|
28
|
+
var getEntryPermissionsCached = (0, import_createCachedFetch.createCachedFetch)(
|
|
29
|
+
import_getEntryPermissions.getEntryPermissions,
|
|
30
|
+
({ entryUid, contentTypeUid, locale }) => `${entryUid}.${contentTypeUid}.${locale}`
|
|
31
|
+
);
|
|
32
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
+
0 && (module.exports = {
|
|
34
|
+
getEntryPermissionsCached
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=getEntryPermissionsCached.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/getEntryPermissionsCached.ts"],"sourcesContent":["import { getEntryPermissions } from \"./getEntryPermissions\";\nimport { createCachedFetch } from \"./createCachedFetch\";\n\nexport const getEntryPermissionsCached = createCachedFetch(\n getEntryPermissions,\n ({ entryUid, contentTypeUid, locale }) =>\n `${entryUid}.${contentTypeUid}.${locale}`\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAAoC;AACpC,+BAAkC;AAE3B,IAAM,gCAA4B;AAAA,EACrC;AAAA,EACA,CAAC,EAAE,UAAU,gBAAgB,OAAO,MAChC,GAAG,QAAQ,IAAI,cAAc,IAAI,MAAM;AAC/C;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EntryPermissions } from './getEntryPermissions.cjs';
|
|
2
|
+
|
|
3
|
+
declare const getEntryPermissionsCached: {
|
|
4
|
+
(args_0: {
|
|
5
|
+
entryUid: string;
|
|
6
|
+
contentTypeUid: string;
|
|
7
|
+
locale: string;
|
|
8
|
+
}): Promise<EntryPermissions>;
|
|
9
|
+
clearCache: () => void;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { getEntryPermissionsCached };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EntryPermissions } from './getEntryPermissions.js';
|
|
2
|
+
|
|
3
|
+
declare const getEntryPermissionsCached: {
|
|
4
|
+
(args_0: {
|
|
5
|
+
entryUid: string;
|
|
6
|
+
contentTypeUid: string;
|
|
7
|
+
locale: string;
|
|
8
|
+
}): Promise<EntryPermissions>;
|
|
9
|
+
clearCache: () => void;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { getEntryPermissionsCached };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import "../../chunk-5WRI5ZAA.js";
|
|
2
|
+
|
|
3
|
+
// src/visualBuilder/utils/getEntryPermissionsCached.ts
|
|
4
|
+
import { getEntryPermissions } from "./getEntryPermissions.js";
|
|
5
|
+
import { createCachedFetch } from "./createCachedFetch.js";
|
|
6
|
+
var getEntryPermissionsCached = createCachedFetch(
|
|
7
|
+
getEntryPermissions,
|
|
8
|
+
({ entryUid, contentTypeUid, locale }) => `${entryUid}.${contentTypeUid}.${locale}`
|
|
9
|
+
);
|
|
10
|
+
export {
|
|
11
|
+
getEntryPermissionsCached
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=getEntryPermissionsCached.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/getEntryPermissionsCached.ts"],"sourcesContent":["import { getEntryPermissions } from \"./getEntryPermissions\";\nimport { createCachedFetch } from \"./createCachedFetch\";\n\nexport const getEntryPermissionsCached = createCachedFetch(\n getEntryPermissions,\n ({ entryUid, contentTypeUid, locale }) =>\n `${entryUid}.${contentTypeUid}.${locale}`\n);\n"],"mappings":";;;AAAA,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAE3B,IAAM,4BAA4B;AAAA,EACrC;AAAA,EACA,CAAC,EAAE,UAAU,gBAAgB,OAAO,MAChC,GAAG,QAAQ,IAAI,cAAc,IAAI,MAAM;AAC/C;","names":[]}
|
|
@@ -30,6 +30,7 @@ var import_constants = require("./constants.cjs");
|
|
|
30
30
|
var import_types = require("./types/index.types.cjs");
|
|
31
31
|
var import_postMessage = require("./types/postMessage.types.cjs");
|
|
32
32
|
var import_insertSpaceAtCursor = require("./insertSpaceAtCursor.cjs");
|
|
33
|
+
var import__ = require("../index.cjs");
|
|
33
34
|
function handleFieldInput(e) {
|
|
34
35
|
const event = e;
|
|
35
36
|
const targetElement = event.target;
|
|
@@ -37,6 +38,9 @@ function handleFieldInput(e) {
|
|
|
37
38
|
import_constants.VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
|
|
38
39
|
);
|
|
39
40
|
if (event.type === "input" && import_constants.ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) {
|
|
41
|
+
if (!import__.VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput) {
|
|
42
|
+
import__.VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput = true;
|
|
43
|
+
}
|
|
40
44
|
throttledFieldSync();
|
|
41
45
|
}
|
|
42
46
|
}
|
|
@@ -60,7 +64,9 @@ function handleFieldKeyDown(e) {
|
|
|
60
64
|
const fieldType = targetElement.getAttribute(
|
|
61
65
|
import_constants.VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
|
|
62
66
|
);
|
|
63
|
-
if (
|
|
67
|
+
if (event.composedPath().some(
|
|
68
|
+
(element) => element instanceof Element && element.tagName === "BUTTON"
|
|
69
|
+
)) {
|
|
64
70
|
handleKeyDownOnButton(event);
|
|
65
71
|
}
|
|
66
72
|
if (fieldType === import_types.FieldDataType.NUMBER) {
|
|
@@ -73,6 +79,7 @@ function handleKeyDownOnButton(e) {
|
|
|
73
79
|
if (e.code === "Space" && e.target) {
|
|
74
80
|
e.preventDefault();
|
|
75
81
|
(0, import_insertSpaceAtCursor.insertSpaceAtCursor)(e.target);
|
|
82
|
+
throttledFieldSync();
|
|
76
83
|
}
|
|
77
84
|
}
|
|
78
85
|
function handleSingleLineFieldKeyDown(e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/handleFieldMouseDown.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { sendFieldEvent } from \"../generators/generateOverlay\";\nimport {\n ALLOWED_INLINE_EDITABLE_FIELD,\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n numericInputRegex,\n} from \"./constants\";\nimport { FieldDataType } from \"./types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport { insertSpaceAtCursor } from \"./insertSpaceAtCursor\";\n\nexport function handleFieldInput(e: Event): void {\n const event = e as InputEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n if (\n event.type === \"input\" &&\n ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)\n ) {\n throttledFieldSync();\n }\n}\nconst throttledFieldSync = throttle(() => {\n try {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n ) as HTMLElement;\n if (!visualBuilderContainer) return;\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.SYNC_FIELD,\n });\n } catch (error) {\n console.error(\"Error in throttledFieldSync\", error);\n }\n}, 300);\n\nexport function handleFieldKeyDown(e: Event): void {\n const event = e as KeyboardEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n\n if (
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/handleFieldMouseDown.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { sendFieldEvent } from \"../generators/generateOverlay\";\nimport {\n ALLOWED_INLINE_EDITABLE_FIELD,\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n numericInputRegex,\n} from \"./constants\";\nimport { FieldDataType } from \"./types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport { insertSpaceAtCursor } from \"./insertSpaceAtCursor\";\nimport { VisualBuilder } from \"..\";\n\nexport function handleFieldInput(e: Event): void {\n const event = e as InputEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n if (\n event.type === \"input\" &&\n ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)\n ) {\n if (\n !VisualBuilder.VisualBuilderGlobalState.value\n .focusFieldReceivedInput\n ) {\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput =\n true;\n }\n throttledFieldSync();\n }\n}\nconst throttledFieldSync = throttle(() => {\n try {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n ) as HTMLElement;\n if (!visualBuilderContainer) return;\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.SYNC_FIELD,\n });\n } catch (error) {\n console.error(\"Error in throttledFieldSync\", error);\n }\n}, 300);\n\nexport function handleFieldKeyDown(e: Event): void {\n const event = e as KeyboardEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n\n if (\n event\n .composedPath()\n .some(\n (element) =>\n element instanceof Element && element.tagName === \"BUTTON\"\n )\n ) {\n // custom space handling when a button is involved\n handleKeyDownOnButton(event);\n }\n if (fieldType === FieldDataType.NUMBER) {\n handleNumericFieldKeyDown(event);\n } else if (fieldType === FieldDataType.SINGLELINE) {\n handleSingleLineFieldKeyDown(event);\n }\n}\n\n// spaces do not work inside a button content-editable\n// this adds a space and moves the cursor ahead, the\n// button press event is also prevented, finally syncs the field\nfunction handleKeyDownOnButton(e: KeyboardEvent) {\n if (e.code === \"Space\" && e.target) {\n e.preventDefault();\n insertSpaceAtCursor(e.target as HTMLElement);\n throttledFieldSync();\n }\n}\n\nfunction handleSingleLineFieldKeyDown(e: KeyboardEvent) {\n if (e.code === \"Enter\") {\n e.preventDefault();\n }\n}\n\nfunction handleNumericFieldKeyDown(event: KeyboardEvent): void {\n const targetElement = event.target as HTMLElement;\n\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"Enter\",\n \"End\",\n \"Home\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n ];\n\n if (\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n allowedKeys.includes(event.code)\n ) {\n // Allow Ctrl, Cmd, Alt, and special keys\n return;\n }\n\n if (event.code.includes(\"Digit\")) {\n return;\n }\n\n const nonNumericAllowedCharacters = [\"-\", \".\", \"e\", \"E\"];\n\n if (!nonNumericAllowedCharacters.includes(event.key)) {\n event.preventDefault();\n return;\n }\n\n const selection = {\n startOffset: window.getSelection()?.getRangeAt(0).startOffset || 0,\n endOffset: window.getSelection()?.getRangeAt(0).endOffset || 0,\n };\n\n const existingInput = targetElement.textContent || \"\";\n const currentOutputArr = existingInput.split(\"\");\n currentOutputArr.splice(\n selection.startOffset,\n selection.endOffset - selection.startOffset,\n event.key\n );\n const currentInput = currentOutputArr.join(\"\");\n\n if (!numericInputRegex.test(currentInput)) {\n event.preventDefault();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyB;AACzB,6BAA+B;AAC/B,uBAIO;AACP,mBAA8B;AAC9B,yBAA+C;AAC/C,iCAAoC;AACpC,eAA8B;AAEvB,SAAS,iBAAiB,GAAgB;AAC7C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AACA,MACI,MAAM,SAAS,WACf,+CAA8B,SAAS,SAA0B,GACnE;AACE,QACI,CAAC,uBAAc,yBAAyB,MACnC,yBACP;AACE,6BAAc,yBAAyB,MAAM,0BACzC;AAAA,IACR;AACA,uBAAmB;AAAA,EACvB;AACJ;AACA,IAAM,yBAAqB,2BAAS,MAAM;AACtC,MAAI;AACA,UAAM,yBAAyB,SAAS;AAAA,MACpC;AAAA,IACJ;AACA,QAAI,CAAC,uBAAwB;AAC7B,+CAAe;AAAA,MACX;AAAA,MACA,WAAW,kDAA+B;AAAA,IAC9C,CAAC;AAAA,EACL,SAAS,OAAO;AACZ,YAAQ,MAAM,+BAA+B,KAAK;AAAA,EACtD;AACJ,GAAG,GAAG;AAEC,SAAS,mBAAmB,GAAgB;AAC/C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AAEA,MACI,MACK,aAAa,EACb;AAAA,IACG,CAAC,YACG,mBAAmB,WAAW,QAAQ,YAAY;AAAA,EAC1D,GACN;AAEE,0BAAsB,KAAK;AAAA,EAC/B;AACA,MAAI,cAAc,2BAAc,QAAQ;AACpC,8BAA0B,KAAK;AAAA,EACnC,WAAW,cAAc,2BAAc,YAAY;AAC/C,iCAA6B,KAAK;AAAA,EACtC;AACJ;AAKA,SAAS,sBAAsB,GAAkB;AAC7C,MAAI,EAAE,SAAS,WAAW,EAAE,QAAQ;AAChC,MAAE,eAAe;AACjB,wDAAoB,EAAE,MAAqB;AAC3C,uBAAmB;AAAA,EACvB;AACJ;AAEA,SAAS,6BAA6B,GAAkB;AACpD,MAAI,EAAE,SAAS,SAAS;AACpB,MAAE,eAAe;AAAA,EACrB;AACJ;AAEA,SAAS,0BAA0B,OAA4B;AAC3D,QAAM,gBAAgB,MAAM;AAE5B,QAAM,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,MACI,MAAM,WACN,MAAM,WACN,MAAM,UACN,YAAY,SAAS,MAAM,IAAI,GACjC;AAEE;AAAA,EACJ;AAEA,MAAI,MAAM,KAAK,SAAS,OAAO,GAAG;AAC9B;AAAA,EACJ;AAEA,QAAM,8BAA8B,CAAC,KAAK,KAAK,KAAK,GAAG;AAEvD,MAAI,CAAC,4BAA4B,SAAS,MAAM,GAAG,GAAG;AAClD,UAAM,eAAe;AACrB;AAAA,EACJ;AAEA,QAAM,YAAY;AAAA,IACd,aAAa,OAAO,aAAa,GAAG,WAAW,CAAC,EAAE,eAAe;AAAA,IACjE,WAAW,OAAO,aAAa,GAAG,WAAW,CAAC,EAAE,aAAa;AAAA,EACjE;AAEA,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,mBAAmB,cAAc,MAAM,EAAE;AAC/C,mBAAiB;AAAA,IACb,UAAU;AAAA,IACV,UAAU,YAAY,UAAU;AAAA,IAChC,MAAM;AAAA,EACV;AACA,QAAM,eAAe,iBAAiB,KAAK,EAAE;AAE7C,MAAI,CAAC,mCAAkB,KAAK,YAAY,GAAG;AACvC,UAAM,eAAe;AAAA,EACzB;AACJ;","names":[]}
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
import { FieldDataType } from "./types/index.types.js";
|
|
12
12
|
import { VisualBuilderPostMessageEvents } from "./types/postMessage.types.js";
|
|
13
13
|
import { insertSpaceAtCursor } from "./insertSpaceAtCursor.js";
|
|
14
|
+
import { VisualBuilder } from "../index.js";
|
|
14
15
|
function handleFieldInput(e) {
|
|
15
16
|
const event = e;
|
|
16
17
|
const targetElement = event.target;
|
|
@@ -18,6 +19,9 @@ function handleFieldInput(e) {
|
|
|
18
19
|
VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
|
|
19
20
|
);
|
|
20
21
|
if (event.type === "input" && ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) {
|
|
22
|
+
if (!VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput) {
|
|
23
|
+
VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput = true;
|
|
24
|
+
}
|
|
21
25
|
throttledFieldSync();
|
|
22
26
|
}
|
|
23
27
|
}
|
|
@@ -41,7 +45,9 @@ function handleFieldKeyDown(e) {
|
|
|
41
45
|
const fieldType = targetElement.getAttribute(
|
|
42
46
|
VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
|
|
43
47
|
);
|
|
44
|
-
if (
|
|
48
|
+
if (event.composedPath().some(
|
|
49
|
+
(element) => element instanceof Element && element.tagName === "BUTTON"
|
|
50
|
+
)) {
|
|
45
51
|
handleKeyDownOnButton(event);
|
|
46
52
|
}
|
|
47
53
|
if (fieldType === FieldDataType.NUMBER) {
|
|
@@ -54,6 +60,7 @@ function handleKeyDownOnButton(e) {
|
|
|
54
60
|
if (e.code === "Space" && e.target) {
|
|
55
61
|
e.preventDefault();
|
|
56
62
|
insertSpaceAtCursor(e.target);
|
|
63
|
+
throttledFieldSync();
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
66
|
function handleSingleLineFieldKeyDown(e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/handleFieldMouseDown.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { sendFieldEvent } from \"../generators/generateOverlay\";\nimport {\n ALLOWED_INLINE_EDITABLE_FIELD,\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n numericInputRegex,\n} from \"./constants\";\nimport { FieldDataType } from \"./types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport { insertSpaceAtCursor } from \"./insertSpaceAtCursor\";\n\nexport function handleFieldInput(e: Event): void {\n const event = e as InputEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n if (\n event.type === \"input\" &&\n ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)\n ) {\n throttledFieldSync();\n }\n}\nconst throttledFieldSync = throttle(() => {\n try {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n ) as HTMLElement;\n if (!visualBuilderContainer) return;\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.SYNC_FIELD,\n });\n } catch (error) {\n console.error(\"Error in throttledFieldSync\", error);\n }\n}, 300);\n\nexport function handleFieldKeyDown(e: Event): void {\n const event = e as KeyboardEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n\n if (
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/handleFieldMouseDown.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { sendFieldEvent } from \"../generators/generateOverlay\";\nimport {\n ALLOWED_INLINE_EDITABLE_FIELD,\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n numericInputRegex,\n} from \"./constants\";\nimport { FieldDataType } from \"./types/index.types\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport { insertSpaceAtCursor } from \"./insertSpaceAtCursor\";\nimport { VisualBuilder } from \"..\";\n\nexport function handleFieldInput(e: Event): void {\n const event = e as InputEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n if (\n event.type === \"input\" &&\n ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)\n ) {\n if (\n !VisualBuilder.VisualBuilderGlobalState.value\n .focusFieldReceivedInput\n ) {\n VisualBuilder.VisualBuilderGlobalState.value.focusFieldReceivedInput =\n true;\n }\n throttledFieldSync();\n }\n}\nconst throttledFieldSync = throttle(() => {\n try {\n const visualBuilderContainer = document.querySelector(\n \".visual-builder__container\"\n ) as HTMLElement;\n if (!visualBuilderContainer) return;\n sendFieldEvent({\n visualBuilderContainer,\n eventType: VisualBuilderPostMessageEvents.SYNC_FIELD,\n });\n } catch (error) {\n console.error(\"Error in throttledFieldSync\", error);\n }\n}, 300);\n\nexport function handleFieldKeyDown(e: Event): void {\n const event = e as KeyboardEvent;\n const targetElement = event.target as HTMLElement;\n const fieldType = targetElement.getAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n ) as FieldDataType | null;\n\n if (\n event\n .composedPath()\n .some(\n (element) =>\n element instanceof Element && element.tagName === \"BUTTON\"\n )\n ) {\n // custom space handling when a button is involved\n handleKeyDownOnButton(event);\n }\n if (fieldType === FieldDataType.NUMBER) {\n handleNumericFieldKeyDown(event);\n } else if (fieldType === FieldDataType.SINGLELINE) {\n handleSingleLineFieldKeyDown(event);\n }\n}\n\n// spaces do not work inside a button content-editable\n// this adds a space and moves the cursor ahead, the\n// button press event is also prevented, finally syncs the field\nfunction handleKeyDownOnButton(e: KeyboardEvent) {\n if (e.code === \"Space\" && e.target) {\n e.preventDefault();\n insertSpaceAtCursor(e.target as HTMLElement);\n throttledFieldSync();\n }\n}\n\nfunction handleSingleLineFieldKeyDown(e: KeyboardEvent) {\n if (e.code === \"Enter\") {\n e.preventDefault();\n }\n}\n\nfunction handleNumericFieldKeyDown(event: KeyboardEvent): void {\n const targetElement = event.target as HTMLElement;\n\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"Enter\",\n \"End\",\n \"Home\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n ];\n\n if (\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n allowedKeys.includes(event.code)\n ) {\n // Allow Ctrl, Cmd, Alt, and special keys\n return;\n }\n\n if (event.code.includes(\"Digit\")) {\n return;\n }\n\n const nonNumericAllowedCharacters = [\"-\", \".\", \"e\", \"E\"];\n\n if (!nonNumericAllowedCharacters.includes(event.key)) {\n event.preventDefault();\n return;\n }\n\n const selection = {\n startOffset: window.getSelection()?.getRangeAt(0).startOffset || 0,\n endOffset: window.getSelection()?.getRangeAt(0).endOffset || 0,\n };\n\n const existingInput = targetElement.textContent || \"\";\n const currentOutputArr = existingInput.split(\"\");\n currentOutputArr.splice(\n selection.startOffset,\n selection.endOffset - selection.startOffset,\n event.key\n );\n const currentInput = currentOutputArr.join(\"\");\n\n if (!numericInputRegex.test(currentInput)) {\n event.preventDefault();\n }\n}\n"],"mappings":";;;AAAA,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAC/B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,qBAAqB;AAC9B,SAAS,sCAAsC;AAC/C,SAAS,2BAA2B;AACpC,SAAS,qBAAqB;AAEvB,SAAS,iBAAiB,GAAgB;AAC7C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AACA,MACI,MAAM,SAAS,WACf,8BAA8B,SAAS,SAA0B,GACnE;AACE,QACI,CAAC,cAAc,yBAAyB,MACnC,yBACP;AACE,oBAAc,yBAAyB,MAAM,0BACzC;AAAA,IACR;AACA,uBAAmB;AAAA,EACvB;AACJ;AACA,IAAM,qBAAqB,SAAS,MAAM;AACtC,MAAI;AACA,UAAM,yBAAyB,SAAS;AAAA,MACpC;AAAA,IACJ;AACA,QAAI,CAAC,uBAAwB;AAC7B,mBAAe;AAAA,MACX;AAAA,MACA,WAAW,+BAA+B;AAAA,IAC9C,CAAC;AAAA,EACL,SAAS,OAAO;AACZ,YAAQ,MAAM,+BAA+B,KAAK;AAAA,EACtD;AACJ,GAAG,GAAG;AAEC,SAAS,mBAAmB,GAAgB;AAC/C,QAAM,QAAQ;AACd,QAAM,gBAAgB,MAAM;AAC5B,QAAM,YAAY,cAAc;AAAA,IAC5B;AAAA,EACJ;AAEA,MACI,MACK,aAAa,EACb;AAAA,IACG,CAAC,YACG,mBAAmB,WAAW,QAAQ,YAAY;AAAA,EAC1D,GACN;AAEE,0BAAsB,KAAK;AAAA,EAC/B;AACA,MAAI,cAAc,cAAc,QAAQ;AACpC,8BAA0B,KAAK;AAAA,EACnC,WAAW,cAAc,cAAc,YAAY;AAC/C,iCAA6B,KAAK;AAAA,EACtC;AACJ;AAKA,SAAS,sBAAsB,GAAkB;AAC7C,MAAI,EAAE,SAAS,WAAW,EAAE,QAAQ;AAChC,MAAE,eAAe;AACjB,wBAAoB,EAAE,MAAqB;AAC3C,uBAAmB;AAAA,EACvB;AACJ;AAEA,SAAS,6BAA6B,GAAkB;AACpD,MAAI,EAAE,SAAS,SAAS;AACpB,MAAE,eAAe;AAAA,EACrB;AACJ;AAEA,SAAS,0BAA0B,OAA4B;AAC3D,QAAM,gBAAgB,MAAM;AAE5B,QAAM,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,MACI,MAAM,WACN,MAAM,WACN,MAAM,UACN,YAAY,SAAS,MAAM,IAAI,GACjC;AAEE;AAAA,EACJ;AAEA,MAAI,MAAM,KAAK,SAAS,OAAO,GAAG;AAC9B;AAAA,EACJ;AAEA,QAAM,8BAA8B,CAAC,KAAK,KAAK,KAAK,GAAG;AAEvD,MAAI,CAAC,4BAA4B,SAAS,MAAM,GAAG,GAAG;AAClD,UAAM,eAAe;AACrB;AAAA,EACJ;AAEA,QAAM,YAAY;AAAA,IACd,aAAa,OAAO,aAAa,GAAG,WAAW,CAAC,EAAE,eAAe;AAAA,IACjE,WAAW,OAAO,aAAa,GAAG,WAAW,CAAC,EAAE,aAAa;AAAA,EACjE;AAEA,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,mBAAmB,cAAc,MAAM,EAAE;AAC/C,mBAAiB;AAAA,IACb,UAAU;AAAA,IACV,UAAU,YAAY,UAAU;AAAA,IAChC,MAAM;AAAA,EACV;AACA,QAAM,eAAe,iBAAiB,KAAK,EAAE;AAE7C,MAAI,CAAC,kBAAkB,KAAK,YAAY,GAAG;AACvC,UAAM,eAAe;AAAA,EACzB;AACJ;","names":[]}
|
|
@@ -47,6 +47,7 @@ var import_visualBuilderPostMessage = __toESM(require("./visualBuilderPostMessag
|
|
|
47
47
|
var import_isFieldMultiple = require("./isFieldMultiple.cjs");
|
|
48
48
|
var import_handleInlineEditableField = require("./handleInlineEditableField.cjs");
|
|
49
49
|
var import_pasteAsPlainText = require("./pasteAsPlainText.cjs");
|
|
50
|
+
var import_getEntryPermissionsCached = require("./getEntryPermissionsCached.cjs");
|
|
50
51
|
async function handleIndividualFields(eventDetails, elements) {
|
|
51
52
|
const { fieldMetadata, editableElement } = eventDetails;
|
|
52
53
|
const { visualBuilderContainer, lastEditedField, resizeObserver } = elements;
|
|
@@ -65,7 +66,16 @@ async function handleIndividualFields(eventDetails, elements) {
|
|
|
65
66
|
)
|
|
66
67
|
]);
|
|
67
68
|
const fieldType = (0, import_getFieldType.getFieldType)(fieldSchema);
|
|
68
|
-
const
|
|
69
|
+
const entryAcl = await (0, import_getEntryPermissionsCached.getEntryPermissionsCached)({
|
|
70
|
+
entryUid: entry_uid,
|
|
71
|
+
contentTypeUid: content_type_uid,
|
|
72
|
+
locale
|
|
73
|
+
});
|
|
74
|
+
const { isDisabled: disabled } = (0, import_isFieldDisabled.isFieldDisabled)(
|
|
75
|
+
fieldSchema,
|
|
76
|
+
eventDetails,
|
|
77
|
+
entryAcl
|
|
78
|
+
);
|
|
69
79
|
editableElement.setAttribute(
|
|
70
80
|
import_constants.VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,
|
|
71
81
|
fieldType
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/handleIndividualFields.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY } from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport { getFieldData } from \"./getFieldData\";\nimport { getFieldType } from \"./getFieldType\";\nimport { handleFieldInput, handleFieldKeyDown } from \"./handleFieldMouseDown\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\nimport {\n handleAddButtonsForMultiple,\n removeAddInstanceButtons,\n} from \"./multipleElementAddButton\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { handleInlineEditableField } from \"./handleInlineEditableField\";\nimport { VisualBuilderEditContext } from \"./types/index.types\";\nimport { pasteAsPlainText } from \"./pasteAsPlainText\";\n\n/**\n * It handles all the fields based on their data type and its \"multiple\" property.\n * @param eventDetails The event details object that contain cslp and field metadata.\n * @param elements The elements object that contain the visual builder wrapper.\n */\nexport async function handleIndividualFields(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: VisualBuilderEditContext\n): Promise<void> {\n const { fieldMetadata, editableElement } = eventDetails;\n const { visualBuilderContainer, lastEditedField, resizeObserver } =\n elements;\n const {\n content_type_uid,\n entry_uid,\n locale,\n fieldPath,\n fieldPathWithIndex,\n } = fieldMetadata;\n\n const [fieldSchema, expectedFieldData] = await Promise.all([\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath),\n getFieldData(\n { content_type_uid, entry_uid, locale },\n fieldPathWithIndex\n ),\n ]);\n\n const fieldType = getFieldType(fieldSchema);\n\n const { isDisabled: disabled } = isFieldDisabled(fieldSchema
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/handleIndividualFields.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY } from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport { getFieldData } from \"./getFieldData\";\nimport { getFieldType } from \"./getFieldType\";\nimport { handleFieldInput, handleFieldKeyDown } from \"./handleFieldMouseDown\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\nimport {\n handleAddButtonsForMultiple,\n removeAddInstanceButtons,\n} from \"./multipleElementAddButton\";\nimport { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { handleInlineEditableField } from \"./handleInlineEditableField\";\nimport { VisualBuilderEditContext } from \"./types/index.types\";\nimport { pasteAsPlainText } from \"./pasteAsPlainText\";\nimport { getEntryPermissionsCached } from \"./getEntryPermissionsCached\";\n\n/**\n * It handles all the fields based on their data type and its \"multiple\" property.\n * @param eventDetails The event details object that contain cslp and field metadata.\n * @param elements The elements object that contain the visual builder wrapper.\n */\nexport async function handleIndividualFields(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: VisualBuilderEditContext\n): Promise<void> {\n const { fieldMetadata, editableElement } = eventDetails;\n const { visualBuilderContainer, lastEditedField, resizeObserver } =\n elements;\n const {\n content_type_uid,\n entry_uid,\n locale,\n fieldPath,\n fieldPathWithIndex,\n } = fieldMetadata;\n\n const [fieldSchema, expectedFieldData] = await Promise.all([\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath),\n getFieldData(\n { content_type_uid, entry_uid, locale },\n fieldPathWithIndex\n ),\n ]);\n\n const fieldType = getFieldType(fieldSchema);\n\n const entryAcl = await getEntryPermissionsCached({\n entryUid: entry_uid,\n contentTypeUid: content_type_uid,\n locale,\n });\n const { isDisabled: disabled } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n entryAcl\n );\n\n editableElement.setAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n fieldType\n );\n\n if (isFieldMultiple(fieldSchema)) {\n if (lastEditedField !== editableElement) {\n const addButtonLabel =\n fieldSchema.data_type === \"blocks\"\n ? // ? `Add ${fieldSchema.display_name ?? \"Modular Block\"}`\n \"Add Section\"\n : undefined;\n\n handleAddButtonsForMultiple(\n eventDetails,\n {\n editableElement: eventDetails.editableElement,\n visualBuilderContainer: visualBuilderContainer,\n resizeObserver: resizeObserver,\n },\n {\n fieldSchema,\n expectedFieldData,\n disabled,\n label: addButtonLabel,\n }\n );\n }\n }\n\n if (disabled) {\n return;\n }\n handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement: editableElement as HTMLElement,\n elements,\n });\n}\n\nexport function cleanIndividualFieldResidual(elements: {\n overlayWrapper: HTMLDivElement;\n visualBuilderContainer: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}): void {\n const { overlayWrapper, visualBuilderContainer, focusedToolbar } = elements;\n\n removeAddInstanceButtons(\n {\n eventTarget: null,\n visualBuilderContainer: visualBuilderContainer,\n overlayWrapper: overlayWrapper,\n },\n true\n );\n\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (previousSelectedEditableDOM) {\n previousSelectedEditableDOM.removeAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n );\n previousSelectedEditableDOM.removeAttribute(\"contenteditable\");\n previousSelectedEditableDOM.removeEventListener(\n \"input\",\n handleFieldInput\n );\n previousSelectedEditableDOM.removeEventListener(\n \"keydown\",\n handleFieldKeyDown\n );\n\n previousSelectedEditableDOM.removeEventListener(\n \"paste\",\n pasteAsPlainText\n );\n // Note - this happens in two places, 1. hideOverlay and 2. here\n // TODO maybe see all usages of both functions and try to do it in one place\n elements.resizeObserver.unobserve(previousSelectedEditableDOM);\n }\n\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \".visual-builder__pseudo-editable-element\"\n );\n if (pseudoEditableElement) {\n elements.resizeObserver.unobserve(pseudoEditableElement);\n pseudoEditableElement.removeEventListener(\"paste\", pasteAsPlainText);\n pseudoEditableElement.remove();\n if (previousSelectedEditableDOM) {\n (previousSelectedEditableDOM as HTMLElement).style.removeProperty(\n \"visibility\"\n );\n }\n }\n\n if (focusedToolbar) {\n focusedToolbar.innerHTML = \"\";\n const toolbarEvents = [\n VisualBuilderPostMessageEvents.DELETE_INSTANCE,\n VisualBuilderPostMessageEvents.UPDATE_DISCUSSION_ID,\n ];\n toolbarEvents.forEach((event) => {\n //@ts-expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.\n if (visualBuilderPostMessage?.requestMessageHandlers?.has(event)) {\n //@ts-expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.\n visualBuilderPostMessage?.unregisterEvent?.(event);\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAE9B,uBAAwD;AACxD,4BAA+B;AAC/B,0BAA6B;AAC7B,0BAA6B;AAC7B,kCAAqD;AACrD,6BAAgC;AAChC,sCAGO;AACP,yBAA+C;AAC/C,sCAAqC;AACrC,6BAAgC;AAChC,uCAA0C;AAE1C,8BAAiC;AACjC,uCAA0C;AAO1C,eAAsB,uBAClB,cACA,UACa;AACb,QAAM,EAAE,eAAe,gBAAgB,IAAI;AAC3C,QAAM,EAAE,wBAAwB,iBAAiB,eAAe,IAC5D;AACJ,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI;AAEJ,QAAM,CAAC,aAAa,iBAAiB,IAAI,MAAM,QAAQ,IAAI;AAAA,IACvD,qCAAe,eAAe,kBAAkB,SAAS;AAAA,QACzD;AAAA,MACI,EAAE,kBAAkB,WAAW,OAAO;AAAA,MACtC;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,gBAAY,kCAAa,WAAW;AAE1C,QAAM,WAAW,UAAM,4DAA0B;AAAA,IAC7C,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB;AAAA,EACJ,CAAC;AACD,QAAM,EAAE,YAAY,SAAS,QAAI;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,kBAAgB;AAAA,IACZ;AAAA,IACA;AAAA,EACJ;AAEA,UAAI,wCAAgB,WAAW,GAAG;AAC9B,QAAI,oBAAoB,iBAAiB;AACrC,YAAM,iBACF,YAAY,cAAc;AAAA;AAAA,QAEpB;AAAA,UACA;AAEV;AAAA,QACI;AAAA,QACA;AAAA,UACI,iBAAiB,aAAa;AAAA,UAC9B;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,UAAU;AACV;AAAA,EACJ;AACA,kEAA0B;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AAEO,SAAS,6BAA6B,UAKpC;AACL,QAAM,EAAE,gBAAgB,wBAAwB,eAAe,IAAI;AAEnE;AAAA,IACI;AAAA,MACI,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,8BACF,uBAAc,yBAAyB,MAClC;AACT,MAAI,6BAA6B;AAC7B,gCAA4B;AAAA,MACxB;AAAA,IACJ;AACA,gCAA4B,gBAAgB,iBAAiB;AAC7D,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AACA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAEA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAGA,aAAS,eAAe,UAAU,2BAA2B;AAAA,EACjE;AAEA,QAAM,wBAAwB,wBAAwB;AAAA,IAClD;AAAA,EACJ;AACA,MAAI,uBAAuB;AACvB,aAAS,eAAe,UAAU,qBAAqB;AACvD,0BAAsB,oBAAoB,SAAS,wCAAgB;AACnE,0BAAsB,OAAO;AAC7B,QAAI,6BAA6B;AAC7B,MAAC,4BAA4C,MAAM;AAAA,QAC/C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,gBAAgB;AAChB,mBAAe,YAAY;AAC3B,UAAM,gBAAgB;AAAA,MAClB,kDAA+B;AAAA,MAC/B,kDAA+B;AAAA,IACnC;AACA,kBAAc,QAAQ,CAAC,UAAU;AAE7B,UAAI,gCAAAA,SAA0B,wBAAwB,IAAI,KAAK,GAAG;AAE9D,wCAAAA,SAA0B,kBAAkB,KAAK;AAAA,MACrD;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;","names":["visualBuilderPostMessage"]}
|
|
@@ -17,6 +17,7 @@ import visualBuilderPostMessage from "./visualBuilderPostMessage.js";
|
|
|
17
17
|
import { isFieldMultiple } from "./isFieldMultiple.js";
|
|
18
18
|
import { handleInlineEditableField } from "./handleInlineEditableField.js";
|
|
19
19
|
import { pasteAsPlainText } from "./pasteAsPlainText.js";
|
|
20
|
+
import { getEntryPermissionsCached } from "./getEntryPermissionsCached.js";
|
|
20
21
|
async function handleIndividualFields(eventDetails, elements) {
|
|
21
22
|
const { fieldMetadata, editableElement } = eventDetails;
|
|
22
23
|
const { visualBuilderContainer, lastEditedField, resizeObserver } = elements;
|
|
@@ -35,7 +36,16 @@ async function handleIndividualFields(eventDetails, elements) {
|
|
|
35
36
|
)
|
|
36
37
|
]);
|
|
37
38
|
const fieldType = getFieldType(fieldSchema);
|
|
38
|
-
const
|
|
39
|
+
const entryAcl = await getEntryPermissionsCached({
|
|
40
|
+
entryUid: entry_uid,
|
|
41
|
+
contentTypeUid: content_type_uid,
|
|
42
|
+
locale
|
|
43
|
+
});
|
|
44
|
+
const { isDisabled: disabled } = isFieldDisabled(
|
|
45
|
+
fieldSchema,
|
|
46
|
+
eventDetails,
|
|
47
|
+
entryAcl
|
|
48
|
+
);
|
|
39
49
|
editableElement.setAttribute(
|
|
40
50
|
VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,
|
|
41
51
|
fieldType
|