@contentstack/live-preview-utils 3.2.1 → 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.
Files changed (194) hide show
  1. package/README.md +2 -2
  2. package/dist/legacy/index.cjs +1 -1
  3. package/dist/legacy/index.js +1 -1
  4. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  5. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  6. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
  7. package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
  8. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +4 -1
  9. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
  10. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js +4 -1
  11. package/dist/legacy/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
  12. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +24 -13
  13. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  14. package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +2 -0
  15. package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +2 -0
  16. package/dist/legacy/visualBuilder/components/FieldToolbar.js +24 -13
  17. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  18. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +8 -1
  19. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  20. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +8 -1
  21. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  22. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +12 -0
  23. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
  24. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.d.cts +6 -1
  25. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.d.ts +6 -1
  26. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js +7 -0
  27. package/dist/legacy/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
  28. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +4 -2
  29. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  30. package/dist/legacy/visualBuilder/generators/generateOverlay.js +4 -2
  31. package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
  32. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +9 -2
  33. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  34. package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +1 -1
  35. package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +1 -1
  36. package/dist/legacy/visualBuilder/generators/generateToolbar.js +9 -2
  37. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  38. package/dist/legacy/visualBuilder/index.cjs +3 -3
  39. package/dist/legacy/visualBuilder/index.cjs.map +1 -1
  40. package/dist/legacy/visualBuilder/index.d.cts +1 -0
  41. package/dist/legacy/visualBuilder/index.d.ts +1 -0
  42. package/dist/legacy/visualBuilder/index.js +3 -3
  43. package/dist/legacy/visualBuilder/index.js.map +1 -1
  44. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +21 -2
  45. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  46. package/dist/legacy/visualBuilder/listeners/mouseClick.js +21 -2
  47. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  48. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +46 -12
  49. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  50. package/dist/legacy/visualBuilder/listeners/mouseHover.js +46 -12
  51. package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
  52. package/dist/legacy/visualBuilder/utils/createCachedFetch.cjs +58 -0
  53. package/dist/legacy/visualBuilder/utils/createCachedFetch.cjs.map +1 -0
  54. package/dist/legacy/visualBuilder/utils/createCachedFetch.d.cts +12 -0
  55. package/dist/legacy/visualBuilder/utils/createCachedFetch.d.ts +12 -0
  56. package/dist/legacy/visualBuilder/utils/createCachedFetch.js +35 -0
  57. package/dist/legacy/visualBuilder/utils/createCachedFetch.js.map +1 -0
  58. package/dist/legacy/visualBuilder/utils/fieldSchemaMap.cjs +1 -0
  59. package/dist/legacy/visualBuilder/utils/fieldSchemaMap.cjs.map +1 -1
  60. package/dist/legacy/visualBuilder/utils/fieldSchemaMap.js +1 -0
  61. package/dist/legacy/visualBuilder/utils/fieldSchemaMap.js.map +1 -1
  62. package/dist/legacy/visualBuilder/utils/getEntryPermissions.cjs +71 -0
  63. package/dist/legacy/visualBuilder/utils/getEntryPermissions.cjs.map +1 -0
  64. package/dist/legacy/visualBuilder/utils/getEntryPermissions.d.cts +14 -0
  65. package/dist/legacy/visualBuilder/utils/getEntryPermissions.d.ts +14 -0
  66. package/dist/legacy/visualBuilder/utils/getEntryPermissions.js +38 -0
  67. package/dist/legacy/visualBuilder/utils/getEntryPermissions.js.map +1 -0
  68. package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.cjs +36 -0
  69. package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.cjs.map +1 -0
  70. package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.d.cts +12 -0
  71. package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.d.ts +12 -0
  72. package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.js +13 -0
  73. package/dist/legacy/visualBuilder/utils/getEntryPermissionsCached.js.map +1 -0
  74. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs +4 -0
  75. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  76. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js +4 -0
  77. package/dist/legacy/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  78. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +11 -1
  79. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  80. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +11 -1
  81. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  82. package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs +7 -1
  83. package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
  84. package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.cts +4 -2
  85. package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.ts +4 -2
  86. package/dist/legacy/visualBuilder/utils/isFieldDisabled.js +7 -1
  87. package/dist/legacy/visualBuilder/utils/isFieldDisabled.js.map +1 -1
  88. package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs +21 -3
  89. package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
  90. package/dist/legacy/visualBuilder/utils/updateFocussedState.d.cts +1 -1
  91. package/dist/legacy/visualBuilder/utils/updateFocussedState.d.ts +1 -1
  92. package/dist/legacy/visualBuilder/utils/updateFocussedState.js +21 -3
  93. package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
  94. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +10 -1
  95. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  96. package/dist/legacy/visualBuilder/visualBuilder.style.js +10 -1
  97. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  98. package/dist/modern/index.cjs +1 -1
  99. package/dist/modern/index.js +1 -1
  100. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  101. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  102. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
  103. package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
  104. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs +4 -1
  105. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.cjs.map +1 -1
  106. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js +4 -1
  107. package/dist/modern/visualBuilder/components/FieldRevert/FieldRevertComponent.js.map +1 -1
  108. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +24 -13
  109. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  110. package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +2 -0
  111. package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +2 -0
  112. package/dist/modern/visualBuilder/components/FieldToolbar.js +24 -13
  113. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  114. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +8 -1
  115. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  116. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +8 -1
  117. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  118. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs +12 -0
  119. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.cjs.map +1 -1
  120. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.d.cts +6 -1
  121. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.d.ts +6 -1
  122. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js +7 -0
  123. package/dist/modern/visualBuilder/eventManager/useVariantsPostMessageEvent.js.map +1 -1
  124. package/dist/modern/visualBuilder/generators/generateOverlay.cjs +4 -2
  125. package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  126. package/dist/modern/visualBuilder/generators/generateOverlay.js +4 -2
  127. package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
  128. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +9 -2
  129. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  130. package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +1 -1
  131. package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +1 -1
  132. package/dist/modern/visualBuilder/generators/generateToolbar.js +9 -2
  133. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  134. package/dist/modern/visualBuilder/index.cjs +3 -3
  135. package/dist/modern/visualBuilder/index.cjs.map +1 -1
  136. package/dist/modern/visualBuilder/index.d.cts +1 -0
  137. package/dist/modern/visualBuilder/index.d.ts +1 -0
  138. package/dist/modern/visualBuilder/index.js +3 -3
  139. package/dist/modern/visualBuilder/index.js.map +1 -1
  140. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +21 -2
  141. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  142. package/dist/modern/visualBuilder/listeners/mouseClick.js +21 -2
  143. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  144. package/dist/modern/visualBuilder/listeners/mouseHover.cjs +46 -12
  145. package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  146. package/dist/modern/visualBuilder/listeners/mouseHover.js +46 -12
  147. package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
  148. package/dist/modern/visualBuilder/utils/createCachedFetch.cjs +58 -0
  149. package/dist/modern/visualBuilder/utils/createCachedFetch.cjs.map +1 -0
  150. package/dist/modern/visualBuilder/utils/createCachedFetch.d.cts +12 -0
  151. package/dist/modern/visualBuilder/utils/createCachedFetch.d.ts +12 -0
  152. package/dist/modern/visualBuilder/utils/createCachedFetch.js +35 -0
  153. package/dist/modern/visualBuilder/utils/createCachedFetch.js.map +1 -0
  154. package/dist/modern/visualBuilder/utils/fieldSchemaMap.cjs +1 -0
  155. package/dist/modern/visualBuilder/utils/fieldSchemaMap.cjs.map +1 -1
  156. package/dist/modern/visualBuilder/utils/fieldSchemaMap.js +1 -0
  157. package/dist/modern/visualBuilder/utils/fieldSchemaMap.js.map +1 -1
  158. package/dist/modern/visualBuilder/utils/getEntryPermissions.cjs +70 -0
  159. package/dist/modern/visualBuilder/utils/getEntryPermissions.cjs.map +1 -0
  160. package/dist/modern/visualBuilder/utils/getEntryPermissions.d.cts +14 -0
  161. package/dist/modern/visualBuilder/utils/getEntryPermissions.d.ts +14 -0
  162. package/dist/modern/visualBuilder/utils/getEntryPermissions.js +37 -0
  163. package/dist/modern/visualBuilder/utils/getEntryPermissions.js.map +1 -0
  164. package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.cjs +36 -0
  165. package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.cjs.map +1 -0
  166. package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.d.cts +12 -0
  167. package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.d.ts +12 -0
  168. package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.js +13 -0
  169. package/dist/modern/visualBuilder/utils/getEntryPermissionsCached.js.map +1 -0
  170. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs +4 -0
  171. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.cjs.map +1 -1
  172. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js +4 -0
  173. package/dist/modern/visualBuilder/utils/handleFieldMouseDown.js.map +1 -1
  174. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +11 -1
  175. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  176. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +11 -1
  177. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  178. package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs +7 -1
  179. package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
  180. package/dist/modern/visualBuilder/utils/isFieldDisabled.d.cts +4 -2
  181. package/dist/modern/visualBuilder/utils/isFieldDisabled.d.ts +4 -2
  182. package/dist/modern/visualBuilder/utils/isFieldDisabled.js +7 -1
  183. package/dist/modern/visualBuilder/utils/isFieldDisabled.js.map +1 -1
  184. package/dist/modern/visualBuilder/utils/updateFocussedState.cjs +21 -3
  185. package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
  186. package/dist/modern/visualBuilder/utils/updateFocussedState.d.cts +1 -1
  187. package/dist/modern/visualBuilder/utils/updateFocussedState.d.ts +1 -1
  188. package/dist/modern/visualBuilder/utils/updateFocussedState.js +21 -3
  189. package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
  190. package/dist/modern/visualBuilder/visualBuilder.style.cjs +10 -1
  191. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  192. package/dist/modern/visualBuilder/visualBuilder.style.js +10 -1
  193. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  194. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/listeners/mouseHover.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { getCsDataOfElement } from \"../utils/getCsDataOfElement\";\nimport { removeAddInstanceButtons } from \"../utils/multipleElementAddButton\";\nimport { generateCustomCursor } from \"../generators/generateCustomCursor\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport { getFieldType } from \"../utils/getFieldType\";\n\nimport EventListenerHandlerParams from \"./types\";\nimport { VisualBuilder } from \"..\";\nimport { addHoverOutline } from \"../generators/generateHoverOutline\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { VB_EmptyBlockParentClass } from \"../..\";\nimport Config from \"../../configManager/configManager\";\nimport { isCollabThread } from \"../generators/generateThread\";\n\nconst config = Config.get();\nexport interface HandleMouseHoverParams\n extends Pick<\n EventListenerHandlerParams,\n \"event\" | \"overlayWrapper\" | \"visualBuilderContainer\"\n > {\n customCursor: HTMLDivElement | null;\n}\n\nfunction resetCustomCursor(customCursor: HTMLDivElement | null): void {\n if (customCursor) {\n generateCustomCursor({\n fieldType: \"empty\",\n customCursor: customCursor,\n });\n }\n}\n\nfunction collabCustomCursor(customCursor: HTMLDivElement | null): void {\n if (!customCursor) return;\n\n generateCustomCursor({\n fieldType: \"discussion\",\n customCursor: customCursor,\n });\n}\n\nfunction handleCursorPosition(\n event: MouseEvent,\n customCursor: HTMLDivElement | null\n): void {\n if (customCursor) {\n const mouseY = event.clientY;\n const mouseX = event.clientX;\n\n customCursor.style.left = `${mouseX}px`;\n customCursor.style.top = `${mouseY}px`;\n }\n}\n\nfunction addOutline(editableElement: Element, isFieldDisabled?: boolean): void {\n if (!editableElement) return;\n\n addHoverOutline(editableElement as HTMLElement, isFieldDisabled);\n}\n\nfunction hideDefaultCursor(): void {\n if (\n document?.body &&\n !document.body.classList.contains(\n visualBuilderStyles()[\"visual-builder__default-cursor--disabled\"]\n )\n )\n document.body.classList.add(\n visualBuilderStyles()[\"visual-builder__default-cursor--disabled\"]\n );\n}\n\nfunction showDefaultCursor(): void {\n if (\n document?.body &&\n document.body.classList.contains(\n visualBuilderStyles()[\"visual-builder__default-cursor--disabled\"]\n )\n )\n document.body.classList.remove(\n visualBuilderStyles()[\"visual-builder__default-cursor--disabled\"]\n );\n}\n\nexport function hideHoverOutline(\n visualBuilderContainer: HTMLDivElement | null\n): void {\n if (!visualBuilderContainer) {\n return;\n }\n const hoverOutline = visualBuilderContainer.querySelector(\n \".visual-builder__hover-outline\"\n );\n if (!hoverOutline) {\n return;\n }\n hoverOutline.classList.add(\n visualBuilderStyles()[\"visual-builder__hover-outline--hidden\"]\n );\n}\n\nexport function hideCustomCursor(customCursor: HTMLDivElement | null): void {\n showDefaultCursor();\n customCursor?.classList.remove(\"visible\");\n}\n\nexport function showCustomCursor(customCursor: HTMLDivElement | null): void {\n hideDefaultCursor();\n if (\n config.collab.enable &&\n (!config.collab.isFeedbackMode || config.collab.pauseFeedback)\n )\n return;\n customCursor?.classList.add(\"visible\");\n}\n\nfunction isOverlay(target: HTMLElement): boolean {\n return target.classList.contains(\"visual-builder__overlay\");\n}\n\nfunction isContentEditable(target: HTMLElement): boolean {\n if (target.hasAttribute(\"contenteditable\"))\n return target.getAttribute(\"contenteditable\") === \"true\";\n return false;\n}\n\nasync function handleMouseHover(params: HandleMouseHoverParams): Promise<void> {\n throttle(async (params: HandleMouseHoverParams) => {\n const eventDetails = getCsDataOfElement(params.event);\n const eventTarget = params.event.target as HTMLElement | null;\n\n if (config?.collab.enable && config?.collab.pauseFeedback) {\n hideCustomCursor(params.customCursor);\n return;\n }\n if (!eventDetails) {\n if (\n eventTarget &&\n (isOverlay(eventTarget) ||\n isContentEditable(eventTarget) ||\n isCollabThread(eventTarget))\n ) {\n handleCursorPosition(params.event, params.customCursor);\n hideCustomCursor(params.customCursor);\n return;\n }\n if (!config?.collab.enable) {\n resetCustomCursor(params.customCursor);\n }\n removeAddInstanceButtons({\n eventTarget: params.event.target,\n visualBuilderContainer: params.visualBuilderContainer,\n overlayWrapper: params.overlayWrapper,\n });\n handleCursorPosition(params.event, params.customCursor);\n if (config?.collab.enable && config?.collab.isFeedbackMode) {\n showCustomCursor(params.customCursor);\n collabCustomCursor(params.customCursor);\n }\n return;\n }\n\n const { editableElement, fieldMetadata } = eventDetails;\n const { content_type_uid, fieldPath } = fieldMetadata;\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM &&\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM.isSameNode(\n editableElement\n )\n ) {\n hideCustomCursor(params.customCursor);\n return;\n }\n\n if (params.customCursor) {\n const elementUnderCursor = document.elementFromPoint(\n params.event.clientX,\n params.event.clientY\n );\n if (elementUnderCursor) {\n if (\n elementUnderCursor.nodeName === \"A\" ||\n elementUnderCursor.nodeName === \"BUTTON\"\n ) {\n elementUnderCursor.classList.add(\n visualBuilderStyles()[\"visual-builder__no-cursor-style\"]\n );\n }\n }\n\n if (config?.collab.enable && config?.collab.isFeedbackMode) {\n collabCustomCursor(params.customCursor);\n handleCursorPosition(params.event, params.customCursor);\n showCustomCursor(params.customCursor);\n return;\n } else if (\n config?.collab.enable &&\n !config?.collab.isFeedbackMode\n ) {\n hideCustomCursor(params.customCursor);\n return;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value\n .previousHoveredTargetDOM !== editableElement\n ) {\n resetCustomCursor(params.customCursor);\n removeAddInstanceButtons({\n eventTarget: params.event.target,\n visualBuilderContainer: params.visualBuilderContainer,\n overlayWrapper: params.overlayWrapper,\n });\n }\n\n if (!FieldSchemaMap.hasFieldSchema(content_type_uid, fieldPath)) {\n generateCustomCursor({\n fieldType: \"loading\",\n customCursor: params.customCursor,\n });\n }\n\n /**\n * We called it seperately inside the code block to ensure that\n * the code will not wait for the promise to resolve.\n * If we get a cache miss, we will send a message to the iframe\n * without blocking the code.\n */\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(\n (fieldSchema) => {\n if (!fieldSchema) return;\n if (!params.customCursor) return;\n const { isDisabled: fieldDisabled } = isFieldDisabled(\n fieldSchema,\n eventDetails\n );\n const fieldType = getFieldType(fieldSchema);\n generateCustomCursor({\n fieldType,\n customCursor: params.customCursor,\n fieldDisabled,\n });\n }\n );\n\n handleCursorPosition(params.event, params.customCursor);\n showCustomCursor(params.customCursor);\n }\n\n if (\n !editableElement.classList.contains(VB_EmptyBlockParentClass) &&\n !editableElement.classList.contains(\"visual-builder__empty-block\")\n ) {\n addOutline(editableElement);\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(\n (fieldSchema) => {\n if (!fieldSchema) return;\n const { isDisabled: fieldDisabled, reason } =\n isFieldDisabled(fieldSchema, eventDetails);\n addOutline(editableElement, fieldDisabled);\n }\n );\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value\n .previousHoveredTargetDOM === editableElement\n ) {\n return;\n }\n\n VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM =\n editableElement;\n }, 10)(params);\n}\n\nexport default handleMouseHover;\n"],"mappings":"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","names":["isFieldDisabled","params"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/listeners/mouseHover.ts"],"sourcesContent":["import { throttle } from \"lodash-es\";\nimport { getCsDataOfElement } from \"../utils/getCsDataOfElement\";\nimport { removeAddInstanceButtons } from \"../utils/multipleElementAddButton\";\nimport { generateCustomCursor } from \"../generators/generateCustomCursor\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport { getFieldType } from \"../utils/getFieldType\";\n\nimport EventListenerHandlerParams from \"./types\";\nimport { VisualBuilder } from \"..\";\nimport { addHoverOutline } from \"../generators/generateHoverOutline\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { VB_EmptyBlockParentClass } from \"../..\";\nimport Config from \"../../configManager/configManager\";\nimport { isCollabThread } from \"../generators/generateThread\";\nimport { getEntryPermissionsCached } from \"../utils/getEntryPermissionsCached\";\nimport { EntryPermissions } from \"../utils/getEntryPermissions\";\n\nconst config = Config.get();\nexport interface HandleMouseHoverParams\n extends Pick<\n EventListenerHandlerParams,\n \"event\" | \"overlayWrapper\" | \"visualBuilderContainer\"\n > {\n customCursor: HTMLDivElement | null;\n}\n\nfunction resetCustomCursor(customCursor: HTMLDivElement | null): void {\n if (customCursor) {\n generateCustomCursor({\n fieldType: \"empty\",\n customCursor: customCursor,\n });\n }\n}\n\nfunction collabCustomCursor(customCursor: HTMLDivElement | null): void {\n if (!customCursor) return;\n\n generateCustomCursor({\n fieldType: \"discussion\",\n customCursor: customCursor,\n });\n}\n\nfunction handleCursorPosition(\n event: MouseEvent,\n customCursor: HTMLDivElement | null\n): void {\n if (customCursor) {\n const mouseY = event.clientY;\n const mouseX = event.clientX;\n\n customCursor.style.left = `${mouseX}px`;\n customCursor.style.top = `${mouseY}px`;\n }\n}\n\nfunction addOutline(editableElement: Element, isFieldDisabled?: boolean): void {\n if (!editableElement) return;\n\n addHoverOutline(editableElement as HTMLElement, isFieldDisabled);\n}\n\nfunction hideDefaultCursor(): void {\n if (\n document?.body &&\n !document.body.classList.contains(\n visualBuilderStyles()[\"visual-builder__default-cursor--disabled\"]\n )\n )\n document.body.classList.add(\n visualBuilderStyles()[\"visual-builder__default-cursor--disabled\"]\n );\n}\n\nfunction showDefaultCursor(): void {\n if (\n document?.body &&\n document.body.classList.contains(\n visualBuilderStyles()[\"visual-builder__default-cursor--disabled\"]\n )\n )\n document.body.classList.remove(\n visualBuilderStyles()[\"visual-builder__default-cursor--disabled\"]\n );\n}\n\nexport function hideHoverOutline(\n visualBuilderContainer: HTMLDivElement | null\n): void {\n if (!visualBuilderContainer) {\n return;\n }\n const hoverOutline = visualBuilderContainer.querySelector(\n \".visual-builder__hover-outline\"\n );\n if (!hoverOutline) {\n return;\n }\n hoverOutline.classList.add(\n visualBuilderStyles()[\"visual-builder__hover-outline--hidden\"]\n );\n}\n\nexport function hideCustomCursor(customCursor: HTMLDivElement | null): void {\n showDefaultCursor();\n customCursor?.classList.remove(\"visible\");\n}\n\nexport function showCustomCursor(customCursor: HTMLDivElement | null): void {\n hideDefaultCursor();\n if (\n config.collab.enable &&\n (!config.collab.isFeedbackMode || config.collab.pauseFeedback)\n )\n return;\n customCursor?.classList.add(\"visible\");\n}\n\nfunction isOverlay(target: HTMLElement): boolean {\n return target.classList.contains(\"visual-builder__overlay\");\n}\n\nfunction isContentEditable(target: HTMLElement): boolean {\n if (target.hasAttribute(\"contenteditable\"))\n return target.getAttribute(\"contenteditable\") === \"true\";\n return false;\n}\n\nasync function handleMouseHover(params: HandleMouseHoverParams): Promise<void> {\n throttle(async (params: HandleMouseHoverParams) => {\n const eventDetails = getCsDataOfElement(params.event);\n const eventTarget = params.event.target as HTMLElement | null;\n\n if (config?.collab.enable && config?.collab.pauseFeedback) {\n hideCustomCursor(params.customCursor);\n return;\n }\n if (!eventDetails) {\n if (\n eventTarget &&\n (isOverlay(eventTarget) ||\n isContentEditable(eventTarget) ||\n isCollabThread(eventTarget))\n ) {\n handleCursorPosition(params.event, params.customCursor);\n hideCustomCursor(params.customCursor);\n return;\n }\n if (!config?.collab.enable) {\n resetCustomCursor(params.customCursor);\n }\n removeAddInstanceButtons({\n eventTarget: params.event.target,\n visualBuilderContainer: params.visualBuilderContainer,\n overlayWrapper: params.overlayWrapper,\n });\n handleCursorPosition(params.event, params.customCursor);\n if (config?.collab.enable && config?.collab.isFeedbackMode) {\n showCustomCursor(params.customCursor);\n collabCustomCursor(params.customCursor);\n }\n return;\n }\n\n const { editableElement, fieldMetadata } = eventDetails;\n const { content_type_uid, fieldPath } = fieldMetadata;\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM &&\n VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM.isSameNode(\n editableElement\n )\n ) {\n hideCustomCursor(params.customCursor);\n return;\n }\n\n if (params.customCursor) {\n const elementUnderCursor = document.elementFromPoint(\n params.event.clientX,\n params.event.clientY\n );\n if (elementUnderCursor) {\n if (\n elementUnderCursor.nodeName === \"A\" ||\n elementUnderCursor.nodeName === \"BUTTON\"\n ) {\n elementUnderCursor.classList.add(\n visualBuilderStyles()[\"visual-builder__no-cursor-style\"]\n );\n }\n }\n\n if (config?.collab.enable && config?.collab.isFeedbackMode) {\n collabCustomCursor(params.customCursor);\n handleCursorPosition(params.event, params.customCursor);\n showCustomCursor(params.customCursor);\n return;\n } else if (\n config?.collab.enable &&\n !config?.collab.isFeedbackMode\n ) {\n hideCustomCursor(params.customCursor);\n return;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value\n .previousHoveredTargetDOM !== editableElement\n ) {\n resetCustomCursor(params.customCursor);\n removeAddInstanceButtons({\n eventTarget: params.event.target,\n visualBuilderContainer: params.visualBuilderContainer,\n overlayWrapper: params.overlayWrapper,\n });\n }\n\n if (!FieldSchemaMap.hasFieldSchema(content_type_uid, fieldPath)) {\n generateCustomCursor({\n fieldType: \"loading\",\n customCursor: params.customCursor,\n });\n }\n\n /**\n * We called it seperately inside the code block to ensure that\n * the code will not wait for the promise to resolve.\n * If we get a cache miss, we will send a message to the iframe\n * without blocking the code.\n */\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(\n (fieldSchema) => {\n if (!fieldSchema) return;\n\n let entryAcl: EntryPermissions | undefined;\n getEntryPermissionsCached({\n entryUid: fieldMetadata.entry_uid,\n contentTypeUid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n })\n .then((data) => {\n entryAcl = data;\n })\n .catch((error) => {\n console.error(\n \"[Visual Builder] Error retrieving entry permissions:\",\n error\n );\n })\n .finally(() => {\n if (!params.customCursor) return;\n const { isDisabled: fieldDisabled } =\n isFieldDisabled(\n fieldSchema,\n eventDetails,\n entryAcl\n );\n const fieldType = getFieldType(fieldSchema);\n generateCustomCursor({\n fieldType,\n customCursor: params.customCursor,\n fieldDisabled,\n });\n });\n }\n );\n\n handleCursorPosition(params.event, params.customCursor);\n showCustomCursor(params.customCursor);\n }\n\n if (\n !editableElement.classList.contains(VB_EmptyBlockParentClass) &&\n !editableElement.classList.contains(\"visual-builder__empty-block\")\n ) {\n addOutline(editableElement);\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(\n (fieldSchema) => {\n let entryAcl: EntryPermissions | undefined;\n if (!fieldSchema) return;\n getEntryPermissionsCached({\n entryUid: fieldMetadata.entry_uid,\n contentTypeUid: fieldMetadata.content_type_uid,\n locale: fieldMetadata.locale,\n })\n .then((data) => {\n entryAcl = data;\n })\n .catch((error) => {\n console.error(\n \"[Visual Builder] Error retrieving entry permissions:\",\n error\n );\n })\n .finally(() => {\n const { isDisabled: fieldDisabled } =\n isFieldDisabled(\n fieldSchema,\n eventDetails,\n entryAcl\n );\n addOutline(editableElement, fieldDisabled);\n });\n }\n );\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value\n .previousHoveredTargetDOM === editableElement\n ) {\n return;\n }\n\n VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM =\n editableElement;\n }, 10)(params);\n}\n\nexport default handleMouseHover;\n"],"mappings":"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","names":["isFieldDisabled","params"]}
@@ -0,0 +1,58 @@
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/createCachedFetch.ts
21
+ var createCachedFetch_exports = {};
22
+ __export(createCachedFetch_exports, {
23
+ createCachedFetch: () => createCachedFetch
24
+ });
25
+ module.exports = __toCommonJS(createCachedFetch_exports);
26
+ function createCachedFetch(fetchFn, uidResolver = (...args) => JSON.stringify(args)) {
27
+ const cache = /* @__PURE__ */ new Map();
28
+ const pendingPromises = /* @__PURE__ */ new Map();
29
+ async function cachedFetch(...args) {
30
+ const uid = uidResolver(...args);
31
+ if (cache.has(uid)) {
32
+ return cache.get(uid);
33
+ }
34
+ if (pendingPromises.has(uid)) {
35
+ return pendingPromises.get(uid);
36
+ }
37
+ const promise = fetchFn(...args).then((data) => {
38
+ cache.set(uid, data);
39
+ pendingPromises.delete(uid);
40
+ return data;
41
+ }).catch((error) => {
42
+ pendingPromises.delete(uid);
43
+ throw error;
44
+ });
45
+ pendingPromises.set(uid, promise);
46
+ return promise;
47
+ }
48
+ cachedFetch.clearCache = () => {
49
+ cache.clear();
50
+ pendingPromises.clear();
51
+ };
52
+ return cachedFetch;
53
+ }
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ createCachedFetch
57
+ });
58
+ //# sourceMappingURL=createCachedFetch.cjs.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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;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":[]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Creates a cached async fetch function with support for any number of arguments
3
+ * @param fetchFn - The async function to cache
4
+ * @param uidResolver - Function that generates a unique ID from the arguments passed to fetchFn
5
+ * @returns A cached version of the fetch function with the same signature
6
+ */
7
+ declare function createCachedFetch<TArgs extends any[], TResult>(fetchFn: (...args: TArgs) => Promise<TResult>, uidResolver?: (...args: TArgs) => string): {
8
+ (...args: TArgs): Promise<TResult>;
9
+ clearCache: () => void;
10
+ };
11
+
12
+ export { createCachedFetch };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Creates a cached async fetch function with support for any number of arguments
3
+ * @param fetchFn - The async function to cache
4
+ * @param uidResolver - Function that generates a unique ID from the arguments passed to fetchFn
5
+ * @returns A cached version of the fetch function with the same signature
6
+ */
7
+ declare function createCachedFetch<TArgs extends any[], TResult>(fetchFn: (...args: TArgs) => Promise<TResult>, uidResolver?: (...args: TArgs) => string): {
8
+ (...args: TArgs): Promise<TResult>;
9
+ clearCache: () => void;
10
+ };
11
+
12
+ export { createCachedFetch };
@@ -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":[]}
@@ -93,6 +93,7 @@ var _FieldSchemaMap = class _FieldSchemaMap {
93
93
  */
94
94
  static clear() {
95
95
  _FieldSchemaMap.fieldSchema = {};
96
+ _FieldSchemaMap.fieldSchemaPromise = {};
96
97
  }
97
98
  };
98
99
  _FieldSchemaMap.fieldSchema = {};
@@ -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;AA1BpE;AA2BQ,QAAI,GAAC,qBAAe,uBAAf,mBAAoC,oBAAmB;AACxD,sBAAe,mBAAmB,gBAAgB,KAC9C,qCAAAA,YAAA,mBAA0B;AAAA,QACtB,kDAA+B;AAAA,QAC/B;AAAA,UACI,gBAAgB;AAAA,QACpB;AAAA;AAAA,IAEZ;AACA,WAAO,gBAAe,mBAAmB,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eACT,gBACA,WACwB;AA/ChC;AAgDQ,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,6BAAM,gBAAgB;AACtB,sBAAe,YAAY,cAAc,IAAI,KAAK;AAAA,IACtD;AAEA,aAAO,8DAAgB,gBAAhB,mBAA8B,oBAA9B,mBAAgD,eAAc;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,EAClC;AACJ;AAjFa,gBACM,cAEX,CAAC;AAHI,gBAKM,qBAEX,CAAC;AAPF,IAAM,iBAAN;","names":["visualBuilderPostMessage"]}
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;AA1BpE;AA2BQ,QAAI,GAAC,qBAAe,uBAAf,mBAAoC,oBAAmB;AACxD,sBAAe,mBAAmB,gBAAgB,KAC9C,qCAAAA,YAAA,mBAA0B;AAAA,QACtB,kDAA+B;AAAA,QAC/B;AAAA,UACI,gBAAgB;AAAA,QACpB;AAAA;AAAA,IAEZ;AACA,WAAO,gBAAe,mBAAmB,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eACT,gBACA,WACwB;AA/ChC;AAgDQ,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,6BAAM,gBAAgB;AACtB,sBAAe,YAAY,cAAc,IAAI,KAAK;AAAA,IACtD;AAEA,aAAO,8DAAgB,gBAAhB,mBAA8B,oBAA9B,mBAAgD,eAAc;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"]}
@@ -61,6 +61,7 @@ var _FieldSchemaMap = class _FieldSchemaMap {
61
61
  */
62
62
  static clear() {
63
63
  _FieldSchemaMap.fieldSchema = {};
64
+ _FieldSchemaMap.fieldSchemaPromise = {};
64
65
  }
65
66
  };
66
67
  _FieldSchemaMap.fieldSchema = {};
@@ -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;AA1BpE;AA2BQ,QAAI,GAAC,qBAAe,uBAAf,mBAAoC,oBAAmB;AACxD,sBAAe,mBAAmB,gBAAgB,KAC9C,qDAA0B;AAAA,QACtB,+BAA+B;AAAA,QAC/B;AAAA,UACI,gBAAgB;AAAA,QACpB;AAAA;AAAA,IAEZ;AACA,WAAO,gBAAe,mBAAmB,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eACT,gBACA,WACwB;AA/ChC;AAgDQ,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,6BAAM,gBAAgB;AACtB,sBAAe,YAAY,cAAc,IAAI,KAAK;AAAA,IACtD;AAEA,aAAO,8DAAgB,gBAAhB,mBAA8B,oBAA9B,mBAAgD,eAAc;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,EAClC;AACJ;AAjFa,gBACM,cAEX,CAAC;AAHI,gBAKM,qBAEX,CAAC;AAPF,IAAM,iBAAN;","names":[]}
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;AA1BpE;AA2BQ,QAAI,GAAC,qBAAe,uBAAf,mBAAoC,oBAAmB;AACxD,sBAAe,mBAAmB,gBAAgB,KAC9C,qDAA0B;AAAA,QACtB,+BAA+B;AAAA,QAC/B;AAAA,UACI,gBAAgB;AAAA,QACpB;AAAA;AAAA,IAEZ;AACA,WAAO,gBAAe,mBAAmB,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,eACT,gBACA,WACwB;AA/ChC;AAgDQ,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,6BAAM,gBAAgB;AACtB,sBAAe,YAAY,cAAc,IAAI,KAAK;AAAA,IACtD;AAEA,aAAO,8DAAgB,gBAAhB,mBAA8B,oBAA9B,mBAAgD,eAAc;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,71 @@
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
+ var _a;
43
+ try {
44
+ const permissions = await ((_a = import_visualBuilderPostMessage.default) == null ? void 0 : _a.send(
45
+ "get-permissions",
46
+ {
47
+ type: "entry",
48
+ entryUid,
49
+ contentTypeUid,
50
+ locale
51
+ }
52
+ ));
53
+ if (permissions) {
54
+ return permissions;
55
+ }
56
+ } catch (error) {
57
+ console.debug("[Visual Builder] Error fetching permissions", error);
58
+ }
59
+ return {
60
+ create: true,
61
+ read: true,
62
+ update: true,
63
+ delete: true,
64
+ publish: true
65
+ };
66
+ }
67
+ // Annotate the CommonJS export names for ESM import in node:
68
+ 0 && (module.exports = {
69
+ getEntryPermissions
70
+ });
71
+ //# 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;AAlBH;AAmBI,MAAI;AACA,UAAM,cACF,QAAM,qCAAAA,YAAA,mBAA0B;AAAA,MAC5B;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA;AAER,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,38 @@
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
+ var _a;
11
+ try {
12
+ const permissions = await ((_a = visualBuilderPostMessage) == null ? void 0 : _a.send(
13
+ "get-permissions",
14
+ {
15
+ type: "entry",
16
+ entryUid,
17
+ contentTypeUid,
18
+ locale
19
+ }
20
+ ));
21
+ if (permissions) {
22
+ return permissions;
23
+ }
24
+ } catch (error) {
25
+ console.debug("[Visual Builder] Error fetching permissions", error);
26
+ }
27
+ return {
28
+ create: true,
29
+ read: true,
30
+ update: true,
31
+ delete: true,
32
+ publish: true
33
+ };
34
+ }
35
+ export {
36
+ getEntryPermissions
37
+ };
38
+ //# 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;AAlBH;AAmBI,MAAI;AACA,UAAM,cACF,QAAM,qDAA0B;AAAA,MAC5B;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA;AAER,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
  }
@@ -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 (\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;AAE7B,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,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;AAjF/D;AAkFI,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,eAAa,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,gBAAe;AAAA,IACjE,aAAW,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,cAAa;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":[]}
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;AAzF/D;AA0FI,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,eAAa,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,gBAAe;AAAA,IACjE,aAAW,YAAO,aAAa,MAApB,mBAAuB,WAAW,GAAG,cAAa;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
  }