@contentstack/live-preview-utils 3.2.4 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/README.md +1 -1
  2. package/dist/legacy/index.d.cts +1 -1
  3. package/dist/legacy/index.d.ts +1 -1
  4. package/dist/legacy/light-sdk.cjs +1 -1
  5. package/dist/legacy/light-sdk.js +1 -1
  6. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  7. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  8. package/dist/legacy/livePreview/live-preview.cjs +6 -2
  9. package/dist/legacy/livePreview/live-preview.cjs.map +1 -1
  10. package/dist/legacy/livePreview/live-preview.js +6 -2
  11. package/dist/legacy/livePreview/live-preview.js.map +1 -1
  12. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
  13. package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
  14. package/dist/legacy/utils/index.cjs +10 -0
  15. package/dist/legacy/utils/index.cjs.map +1 -1
  16. package/dist/legacy/utils/index.d.cts +2 -1
  17. package/dist/legacy/utils/index.d.ts +2 -1
  18. package/dist/legacy/utils/index.js +9 -0
  19. package/dist/legacy/utils/index.js.map +1 -1
  20. package/dist/legacy/visualBuilder/components/Tooltip.cjs +167 -0
  21. package/dist/legacy/visualBuilder/components/Tooltip.cjs.map +1 -0
  22. package/dist/legacy/visualBuilder/components/Tooltip.d.cts +26 -0
  23. package/dist/legacy/visualBuilder/components/Tooltip.d.ts +26 -0
  24. package/dist/legacy/visualBuilder/components/Tooltip.js +140 -0
  25. package/dist/legacy/visualBuilder/components/Tooltip.js.map +1 -0
  26. package/dist/legacy/visualBuilder/components/VisualBuilder.cjs +4 -0
  27. package/dist/legacy/visualBuilder/components/VisualBuilder.cjs.map +1 -1
  28. package/dist/legacy/visualBuilder/components/VisualBuilder.d.cts +1 -1
  29. package/dist/legacy/visualBuilder/components/VisualBuilder.d.ts +1 -1
  30. package/dist/legacy/visualBuilder/components/VisualBuilder.js +4 -0
  31. package/dist/legacy/visualBuilder/components/VisualBuilder.js.map +1 -1
  32. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +115 -15
  33. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  34. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +117 -17
  35. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  36. package/dist/legacy/visualBuilder/components/icons/index.cjs +44 -0
  37. package/dist/legacy/visualBuilder/components/icons/index.cjs.map +1 -1
  38. package/dist/legacy/visualBuilder/components/icons/index.d.cts +3 -1
  39. package/dist/legacy/visualBuilder/components/icons/index.d.ts +3 -1
  40. package/dist/legacy/visualBuilder/components/icons/index.js +32 -0
  41. package/dist/legacy/visualBuilder/components/icons/index.js.map +1 -1
  42. package/dist/legacy/visualBuilder/components/index.cjs +3 -1
  43. package/dist/legacy/visualBuilder/components/index.cjs.map +1 -1
  44. package/dist/legacy/visualBuilder/components/index.js +3 -1
  45. package/dist/legacy/visualBuilder/components/index.js.map +1 -1
  46. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +1 -0
  47. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  48. package/dist/legacy/visualBuilder/generators/generateOverlay.js +1 -0
  49. package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
  50. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.cjs +10 -6
  51. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.cjs.map +1 -1
  52. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.d.cts +2 -3
  53. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.d.ts +2 -3
  54. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.js +10 -6
  55. package/dist/legacy/visualBuilder/generators/generateStartEditingButton.js.map +1 -1
  56. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +43 -10
  57. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  58. package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +11 -4
  59. package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +11 -4
  60. package/dist/legacy/visualBuilder/generators/generateToolbar.js +41 -9
  61. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  62. package/dist/legacy/visualBuilder/index.cjs +7 -3
  63. package/dist/legacy/visualBuilder/index.cjs.map +1 -1
  64. package/dist/legacy/visualBuilder/index.d.cts +2 -0
  65. package/dist/legacy/visualBuilder/index.d.ts +2 -0
  66. package/dist/legacy/visualBuilder/index.js +7 -3
  67. package/dist/legacy/visualBuilder/index.js.map +1 -1
  68. package/dist/legacy/visualBuilder/listeners/index.cjs +3 -1
  69. package/dist/legacy/visualBuilder/listeners/index.cjs.map +1 -1
  70. package/dist/legacy/visualBuilder/listeners/index.js +3 -1
  71. package/dist/legacy/visualBuilder/listeners/index.js.map +1 -1
  72. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +7 -3
  73. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  74. package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +4 -1
  75. package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +4 -1
  76. package/dist/legacy/visualBuilder/listeners/mouseClick.js +5 -2
  77. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  78. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +183 -133
  79. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  80. package/dist/legacy/visualBuilder/listeners/mouseHover.d.cts +5 -3
  81. package/dist/legacy/visualBuilder/listeners/mouseHover.d.ts +5 -3
  82. package/dist/legacy/visualBuilder/listeners/mouseHover.js +182 -133
  83. package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
  84. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs +58 -0
  85. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs.map +1 -0
  86. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.cts +18 -0
  87. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.ts +18 -0
  88. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.js +25 -0
  89. package/dist/legacy/visualBuilder/utils/getPsuedoEditableEssentialStyles.js.map +1 -0
  90. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.cjs +4 -8
  91. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.cjs.map +1 -1
  92. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.js +4 -8
  93. package/dist/legacy/visualBuilder/utils/getPsuedoEditableStylesElement.js.map +1 -1
  94. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +2 -23
  95. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  96. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +2 -13
  97. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  98. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +2 -0
  99. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  100. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
  101. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
  102. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +2 -0
  103. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  104. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +66 -1
  105. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  106. package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +7 -0
  107. package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +7 -0
  108. package/dist/legacy/visualBuilder/visualBuilder.style.js +66 -1
  109. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  110. package/dist/modern/light-sdk.cjs +1 -1
  111. package/dist/modern/light-sdk.js +1 -1
  112. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  113. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  114. package/dist/modern/livePreview/live-preview.cjs +6 -2
  115. package/dist/modern/livePreview/live-preview.cjs.map +1 -1
  116. package/dist/modern/livePreview/live-preview.js +6 -2
  117. package/dist/modern/livePreview/live-preview.js.map +1 -1
  118. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
  119. package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
  120. package/dist/modern/utils/index.cjs +10 -0
  121. package/dist/modern/utils/index.cjs.map +1 -1
  122. package/dist/modern/utils/index.d.cts +2 -1
  123. package/dist/modern/utils/index.d.ts +2 -1
  124. package/dist/modern/utils/index.js +9 -0
  125. package/dist/modern/utils/index.js.map +1 -1
  126. package/dist/modern/visualBuilder/components/Tooltip.cjs +167 -0
  127. package/dist/modern/visualBuilder/components/Tooltip.cjs.map +1 -0
  128. package/dist/modern/visualBuilder/components/Tooltip.d.cts +26 -0
  129. package/dist/modern/visualBuilder/components/Tooltip.d.ts +26 -0
  130. package/dist/modern/visualBuilder/components/Tooltip.js +140 -0
  131. package/dist/modern/visualBuilder/components/Tooltip.js.map +1 -0
  132. package/dist/modern/visualBuilder/components/VisualBuilder.cjs +4 -0
  133. package/dist/modern/visualBuilder/components/VisualBuilder.cjs.map +1 -1
  134. package/dist/modern/visualBuilder/components/VisualBuilder.d.cts +1 -1
  135. package/dist/modern/visualBuilder/components/VisualBuilder.d.ts +1 -1
  136. package/dist/modern/visualBuilder/components/VisualBuilder.js +4 -0
  137. package/dist/modern/visualBuilder/components/VisualBuilder.js.map +1 -1
  138. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +113 -15
  139. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  140. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +115 -17
  141. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  142. package/dist/modern/visualBuilder/components/icons/index.cjs +44 -0
  143. package/dist/modern/visualBuilder/components/icons/index.cjs.map +1 -1
  144. package/dist/modern/visualBuilder/components/icons/index.d.cts +3 -1
  145. package/dist/modern/visualBuilder/components/icons/index.d.ts +3 -1
  146. package/dist/modern/visualBuilder/components/icons/index.js +32 -0
  147. package/dist/modern/visualBuilder/components/icons/index.js.map +1 -1
  148. package/dist/modern/visualBuilder/components/index.cjs +3 -1
  149. package/dist/modern/visualBuilder/components/index.cjs.map +1 -1
  150. package/dist/modern/visualBuilder/components/index.js +3 -1
  151. package/dist/modern/visualBuilder/components/index.js.map +1 -1
  152. package/dist/modern/visualBuilder/generators/generateOverlay.cjs +1 -0
  153. package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  154. package/dist/modern/visualBuilder/generators/generateOverlay.js +1 -0
  155. package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
  156. package/dist/modern/visualBuilder/generators/generateStartEditingButton.cjs +10 -6
  157. package/dist/modern/visualBuilder/generators/generateStartEditingButton.cjs.map +1 -1
  158. package/dist/modern/visualBuilder/generators/generateStartEditingButton.d.cts +2 -3
  159. package/dist/modern/visualBuilder/generators/generateStartEditingButton.d.ts +2 -3
  160. package/dist/modern/visualBuilder/generators/generateStartEditingButton.js +10 -6
  161. package/dist/modern/visualBuilder/generators/generateStartEditingButton.js.map +1 -1
  162. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +42 -10
  163. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  164. package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +11 -4
  165. package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +11 -4
  166. package/dist/modern/visualBuilder/generators/generateToolbar.js +40 -9
  167. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  168. package/dist/modern/visualBuilder/index.cjs +7 -3
  169. package/dist/modern/visualBuilder/index.cjs.map +1 -1
  170. package/dist/modern/visualBuilder/index.d.cts +2 -0
  171. package/dist/modern/visualBuilder/index.d.ts +2 -0
  172. package/dist/modern/visualBuilder/index.js +7 -3
  173. package/dist/modern/visualBuilder/index.js.map +1 -1
  174. package/dist/modern/visualBuilder/listeners/index.cjs +3 -1
  175. package/dist/modern/visualBuilder/listeners/index.cjs.map +1 -1
  176. package/dist/modern/visualBuilder/listeners/index.js +3 -1
  177. package/dist/modern/visualBuilder/listeners/index.js.map +1 -1
  178. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +7 -3
  179. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  180. package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +4 -1
  181. package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +4 -1
  182. package/dist/modern/visualBuilder/listeners/mouseClick.js +5 -2
  183. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  184. package/dist/modern/visualBuilder/listeners/mouseHover.cjs +183 -133
  185. package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  186. package/dist/modern/visualBuilder/listeners/mouseHover.d.cts +5 -3
  187. package/dist/modern/visualBuilder/listeners/mouseHover.d.ts +5 -3
  188. package/dist/modern/visualBuilder/listeners/mouseHover.js +182 -133
  189. package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
  190. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs +58 -0
  191. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.cjs.map +1 -0
  192. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.cts +18 -0
  193. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.d.ts +18 -0
  194. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.js +25 -0
  195. package/dist/modern/visualBuilder/utils/getPsuedoEditableEssentialStyles.js.map +1 -0
  196. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.cjs +4 -8
  197. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.cjs.map +1 -1
  198. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.js +4 -8
  199. package/dist/modern/visualBuilder/utils/getPsuedoEditableStylesElement.js.map +1 -1
  200. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +2 -22
  201. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  202. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +2 -12
  203. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  204. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +2 -0
  205. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  206. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
  207. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
  208. package/dist/modern/visualBuilder/utils/types/postMessage.types.js +2 -0
  209. package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  210. package/dist/modern/visualBuilder/visualBuilder.style.cjs +66 -1
  211. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  212. package/dist/modern/visualBuilder/visualBuilder.style.d.cts +7 -0
  213. package/dist/modern/visualBuilder/visualBuilder.style.d.ts +7 -0
  214. package/dist/modern/visualBuilder/visualBuilder.style.js +66 -1
  215. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  216. package/package.json +2 -1
@@ -1,7 +1,7 @@
1
1
  import "../../chunk-5WRI5ZAA.js";
2
2
 
3
3
  // src/visualBuilder/listeners/mouseHover.ts
4
- import { throttle } from "lodash-es";
4
+ import { debounce, throttle } from "lodash-es";
5
5
  import { getCsDataOfElement } from "../utils/getCsDataOfElement.js";
6
6
  import { removeAddInstanceButtons } from "../utils/multipleElementAddButton.js";
7
7
  import { generateCustomCursor } from "../generators/generateCustomCursor.js";
@@ -15,6 +15,7 @@ import { VB_EmptyBlockParentClass } from "../../index.js";
15
15
  import Config from "../../configManager/configManager.js";
16
16
  import { isCollabThread } from "../generators/generateThread.js";
17
17
  import { getEntryPermissionsCached } from "../utils/getEntryPermissionsCached.js";
18
+ import { appendFieldPathDropdown } from "../generators/generateToolbar.js";
18
19
  var config = Config.get();
19
20
  function resetCustomCursor(customCursor) {
20
21
  if (customCursor) {
@@ -39,10 +40,41 @@ function handleCursorPosition(event, customCursor) {
39
40
  customCursor.style.top = `${mouseY}px`;
40
41
  }
41
42
  }
42
- function addOutline(editableElement, isFieldDisabled2) {
43
+ function addOutline(params) {
44
+ if (!params) {
45
+ return;
46
+ }
47
+ const { editableElement, eventDetails, content_type_uid, fieldPath, fieldMetadata, fieldDisabled } = params;
43
48
  if (!editableElement) return;
44
- addHoverOutline(editableElement, isFieldDisabled2);
49
+ addHoverOutline(editableElement, fieldDisabled);
50
+ FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(
51
+ (fieldSchema) => {
52
+ let entryAcl;
53
+ if (!fieldSchema) return;
54
+ getEntryPermissionsCached({
55
+ entryUid: fieldMetadata.entry_uid,
56
+ contentTypeUid: fieldMetadata.content_type_uid,
57
+ locale: fieldMetadata.locale
58
+ }).then((data) => {
59
+ entryAcl = data;
60
+ }).catch((error) => {
61
+ console.error(
62
+ "[Visual Builder] Error retrieving entry permissions:",
63
+ error
64
+ );
65
+ }).finally(() => {
66
+ const { isDisabled: fieldDisabled2 } = isFieldDisabled(
67
+ fieldSchema,
68
+ eventDetails,
69
+ entryAcl
70
+ );
71
+ addHoverOutline(editableElement, fieldDisabled2);
72
+ });
73
+ }
74
+ );
45
75
  }
76
+ var debouncedAddOutline = debounce(addOutline, 50, { trailing: true });
77
+ var showOutline = (params) => debouncedAddOutline(params);
46
78
  function hideDefaultCursor() {
47
79
  if (document?.body && !document.body.classList.contains(
48
80
  visualBuilderStyles()["visual-builder__default-cursor--disabled"]
@@ -83,6 +115,16 @@ function showCustomCursor(customCursor) {
83
115
  return;
84
116
  customCursor?.classList.add("visible");
85
117
  }
118
+ var debouncedRenderHoverToolbar = debounce(async (params) => {
119
+ const eventDetails = getCsDataOfElement(params.event);
120
+ if (!eventDetails || !params.overlayWrapper || !params.visualBuilderContainer || !params.focusedToolbar) {
121
+ return;
122
+ }
123
+ appendFieldPathDropdown(eventDetails, params.focusedToolbar, {
124
+ isHover: true
125
+ });
126
+ }, 50, { trailing: true });
127
+ var showHoverToolbar = async (params) => await debouncedRenderHoverToolbar(params);
86
128
  function isOverlay(target) {
87
129
  return target.classList.contains("visual-builder__overlay");
88
130
  }
@@ -91,151 +133,158 @@ function isContentEditable(target) {
91
133
  return target.getAttribute("contenteditable") === "true";
92
134
  return false;
93
135
  }
94
- async function handleMouseHover(params) {
95
- throttle(async (params2) => {
96
- const eventDetails = getCsDataOfElement(params2.event);
97
- const eventTarget = params2.event.target;
98
- if (config?.collab.enable && config?.collab.pauseFeedback) {
99
- hideCustomCursor(params2.customCursor);
136
+ function isFieldPathDropdown(target) {
137
+ return target.classList.contains("visual-builder__focused-toolbar__field-label-wrapper") || target.classList.contains("visual-builder__focused-toolbar__field-label-wrapper__current-field");
138
+ }
139
+ var throttledMouseHover = throttle(async (params) => {
140
+ const eventDetails = getCsDataOfElement(params.event);
141
+ const eventTarget = params.event.target;
142
+ if (config?.collab.enable && config?.collab.pauseFeedback) {
143
+ hideCustomCursor(params.customCursor);
144
+ return;
145
+ }
146
+ if (!eventDetails) {
147
+ if (eventTarget && (isOverlay(eventTarget) || isContentEditable(eventTarget) || isCollabThread(eventTarget))) {
148
+ handleCursorPosition(params.event, params.customCursor);
149
+ hideCustomCursor(params.customCursor);
100
150
  return;
101
151
  }
102
- if (!eventDetails) {
103
- if (eventTarget && (isOverlay(eventTarget) || isContentEditable(eventTarget) || isCollabThread(eventTarget))) {
104
- handleCursorPosition(params2.event, params2.customCursor);
105
- hideCustomCursor(params2.customCursor);
106
- return;
107
- }
108
- if (!config?.collab.enable) {
109
- resetCustomCursor(params2.customCursor);
110
- }
111
- removeAddInstanceButtons({
112
- eventTarget: params2.event.target,
113
- visualBuilderContainer: params2.visualBuilderContainer,
114
- overlayWrapper: params2.overlayWrapper
152
+ if (eventTarget && isFieldPathDropdown(eventTarget)) {
153
+ params.customCursor && hideCustomCursor(params.customCursor);
154
+ showOutline();
155
+ showHoverToolbar({
156
+ event: params.event,
157
+ overlayWrapper: params.overlayWrapper,
158
+ visualBuilderContainer: params.visualBuilderContainer,
159
+ previousSelectedEditableDOM: VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM,
160
+ focusedToolbar: params.focusedToolbar,
161
+ resizeObserver: params.resizeObserver
115
162
  });
116
- handleCursorPosition(params2.event, params2.customCursor);
117
- if (config?.collab.enable && config?.collab.isFeedbackMode) {
118
- showCustomCursor(params2.customCursor);
119
- collabCustomCursor(params2.customCursor);
163
+ }
164
+ if (!config?.collab.enable) {
165
+ resetCustomCursor(params.customCursor);
166
+ }
167
+ removeAddInstanceButtons({
168
+ eventTarget: params.event.target,
169
+ visualBuilderContainer: params.visualBuilderContainer,
170
+ overlayWrapper: params.overlayWrapper
171
+ });
172
+ handleCursorPosition(params.event, params.customCursor);
173
+ if (config?.collab.enable && config?.collab.isFeedbackMode) {
174
+ showCustomCursor(params.customCursor);
175
+ collabCustomCursor(params.customCursor);
176
+ }
177
+ return;
178
+ }
179
+ const { editableElement, fieldMetadata } = eventDetails;
180
+ const { content_type_uid, fieldPath } = fieldMetadata;
181
+ if (VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM && VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM.isSameNode(
182
+ editableElement
183
+ )) {
184
+ hideCustomCursor(params.customCursor);
185
+ return;
186
+ }
187
+ if (params.customCursor) {
188
+ const elementUnderCursor = document.elementFromPoint(
189
+ params.event.clientX,
190
+ params.event.clientY
191
+ );
192
+ if (elementUnderCursor) {
193
+ if (elementUnderCursor.nodeName === "A" || elementUnderCursor.nodeName === "BUTTON") {
194
+ elementUnderCursor.classList.add(
195
+ visualBuilderStyles()["visual-builder__no-cursor-style"]
196
+ );
120
197
  }
121
- return;
122
198
  }
123
- const { editableElement, fieldMetadata } = eventDetails;
124
- const { content_type_uid, fieldPath } = fieldMetadata;
125
- if (VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM && VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM.isSameNode(
126
- editableElement
127
- )) {
128
- hideCustomCursor(params2.customCursor);
199
+ if (config?.collab.enable && config?.collab.isFeedbackMode) {
200
+ collabCustomCursor(params.customCursor);
201
+ handleCursorPosition(params.event, params.customCursor);
202
+ showCustomCursor(params.customCursor);
203
+ return;
204
+ } else if (config?.collab.enable && !config?.collab.isFeedbackMode) {
205
+ hideCustomCursor(params.customCursor);
129
206
  return;
130
207
  }
131
- if (params2.customCursor) {
132
- const elementUnderCursor = document.elementFromPoint(
133
- params2.event.clientX,
134
- params2.event.clientY
135
- );
136
- if (elementUnderCursor) {
137
- if (elementUnderCursor.nodeName === "A" || elementUnderCursor.nodeName === "BUTTON") {
138
- elementUnderCursor.classList.add(
139
- visualBuilderStyles()["visual-builder__no-cursor-style"]
208
+ if (VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM !== editableElement) {
209
+ resetCustomCursor(params.customCursor);
210
+ removeAddInstanceButtons({
211
+ eventTarget: params.event.target,
212
+ visualBuilderContainer: params.visualBuilderContainer,
213
+ overlayWrapper: params.overlayWrapper
214
+ });
215
+ }
216
+ if (!FieldSchemaMap.hasFieldSchema(content_type_uid, fieldPath)) {
217
+ generateCustomCursor({
218
+ fieldType: "loading",
219
+ customCursor: params.customCursor
220
+ });
221
+ }
222
+ FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(
223
+ (fieldSchema) => {
224
+ if (!fieldSchema) return;
225
+ let entryAcl;
226
+ getEntryPermissionsCached({
227
+ entryUid: fieldMetadata.entry_uid,
228
+ contentTypeUid: fieldMetadata.content_type_uid,
229
+ locale: fieldMetadata.locale
230
+ }).then((data) => {
231
+ entryAcl = data;
232
+ }).catch((error) => {
233
+ console.error(
234
+ "[Visual Builder] Error retrieving entry permissions:",
235
+ error
140
236
  );
141
- }
142
- }
143
- if (config?.collab.enable && config?.collab.isFeedbackMode) {
144
- collabCustomCursor(params2.customCursor);
145
- handleCursorPosition(params2.event, params2.customCursor);
146
- showCustomCursor(params2.customCursor);
147
- return;
148
- } else if (config?.collab.enable && !config?.collab.isFeedbackMode) {
149
- hideCustomCursor(params2.customCursor);
150
- return;
151
- }
152
- if (VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM !== editableElement) {
153
- resetCustomCursor(params2.customCursor);
154
- removeAddInstanceButtons({
155
- eventTarget: params2.event.target,
156
- visualBuilderContainer: params2.visualBuilderContainer,
157
- overlayWrapper: params2.overlayWrapper
158
- });
159
- }
160
- if (!FieldSchemaMap.hasFieldSchema(content_type_uid, fieldPath)) {
161
- generateCustomCursor({
162
- fieldType: "loading",
163
- customCursor: params2.customCursor
237
+ }).finally(() => {
238
+ if (!params.customCursor) return;
239
+ const { isDisabled: fieldDisabled } = isFieldDisabled(
240
+ fieldSchema,
241
+ eventDetails,
242
+ entryAcl
243
+ );
244
+ const fieldType = getFieldType(fieldSchema);
245
+ generateCustomCursor({
246
+ fieldType,
247
+ customCursor: params.customCursor,
248
+ fieldDisabled
249
+ });
164
250
  });
165
251
  }
166
- FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(
167
- (fieldSchema) => {
168
- if (!fieldSchema) return;
169
- let entryAcl;
170
- getEntryPermissionsCached({
171
- entryUid: fieldMetadata.entry_uid,
172
- contentTypeUid: fieldMetadata.content_type_uid,
173
- locale: fieldMetadata.locale
174
- }).then((data) => {
175
- entryAcl = data;
176
- }).catch((error) => {
177
- console.error(
178
- "[Visual Builder] Error retrieving entry permissions:",
179
- error
180
- );
181
- }).finally(() => {
182
- if (!params2.customCursor) return;
183
- const { isDisabled: fieldDisabled } = isFieldDisabled(
184
- fieldSchema,
185
- eventDetails,
186
- entryAcl
187
- );
188
- const fieldType = getFieldType(fieldSchema);
189
- generateCustomCursor({
190
- fieldType,
191
- customCursor: params2.customCursor,
192
- fieldDisabled
193
- });
194
- });
195
- }
196
- );
197
- handleCursorPosition(params2.event, params2.customCursor);
198
- showCustomCursor(params2.customCursor);
199
- }
200
- if (!editableElement.classList.contains(VB_EmptyBlockParentClass) && !editableElement.classList.contains("visual-builder__empty-block")) {
201
- addOutline(editableElement);
202
- FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(
203
- (fieldSchema) => {
204
- let entryAcl;
205
- if (!fieldSchema) return;
206
- getEntryPermissionsCached({
207
- entryUid: fieldMetadata.entry_uid,
208
- contentTypeUid: fieldMetadata.content_type_uid,
209
- locale: fieldMetadata.locale
210
- }).then((data) => {
211
- entryAcl = data;
212
- }).catch((error) => {
213
- console.error(
214
- "[Visual Builder] Error retrieving entry permissions:",
215
- error
216
- );
217
- }).finally(() => {
218
- const { isDisabled: fieldDisabled } = isFieldDisabled(
219
- fieldSchema,
220
- eventDetails,
221
- entryAcl
222
- );
223
- addOutline(editableElement, fieldDisabled);
224
- });
225
- }
226
- );
227
- }
228
- if (VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM === editableElement) {
229
- return;
252
+ );
253
+ handleCursorPosition(params.event, params.customCursor);
254
+ showCustomCursor(params.customCursor);
255
+ }
256
+ if (!editableElement.classList.contains(VB_EmptyBlockParentClass) && !editableElement.classList.contains("visual-builder__empty-block")) {
257
+ showOutline({
258
+ editableElement,
259
+ eventDetails,
260
+ content_type_uid,
261
+ fieldPath,
262
+ fieldMetadata
263
+ });
264
+ const isFocussed = VisualBuilder.VisualBuilderGlobalState.value.isFocussed;
265
+ if (!isFocussed) {
266
+ showHoverToolbar({
267
+ event: params.event,
268
+ overlayWrapper: params.overlayWrapper,
269
+ visualBuilderContainer: params.visualBuilderContainer,
270
+ previousSelectedEditableDOM: VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM,
271
+ focusedToolbar: params.focusedToolbar,
272
+ resizeObserver: params.resizeObserver
273
+ });
230
274
  }
231
- VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM = editableElement;
232
- }, 10)(params);
233
- }
275
+ }
276
+ if (VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM === editableElement) {
277
+ return;
278
+ }
279
+ VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM = editableElement;
280
+ }, 10);
281
+ var handleMouseHover = async (params) => await throttledMouseHover(params);
234
282
  var mouseHover_default = handleMouseHover;
235
283
  export {
236
284
  mouseHover_default as default,
237
285
  hideCustomCursor,
238
286
  hideHoverOutline,
239
- showCustomCursor
287
+ showCustomCursor,
288
+ showHoverToolbar
240
289
  };
241
290
  //# sourceMappingURL=mouseHover.js.map
@@ -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\";\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"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/listeners/mouseHover.ts"],"sourcesContent":["import { debounce, 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\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { HandleBuilderInteractionParams } from \"./mouseClick\";\nimport { appendFieldPathDropdown, removeFieldToolbar } from \"../generators/generateToolbar\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\n\nconst config = Config.get();\nexport interface HandleMouseHoverParams\n extends Pick<\n EventListenerHandlerParams,\n \"event\" | \"overlayWrapper\" | \"visualBuilderContainer\" | \"focusedToolbar\" | \"resizeObserver\"\n > {\n customCursor: HTMLDivElement | null;\n}\n\ninterface AddOutlineParams {\n editableElement: Element;\n eventDetails: VisualBuilderCslpEventDetails;\n content_type_uid: string;\n fieldPath: string;\n fieldDisabled?: boolean;\n fieldMetadata: CslpData;\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(params?: AddOutlineParams): void {\n if(!params) {\n return;\n }\n const { editableElement, eventDetails, content_type_uid, fieldPath, fieldMetadata, fieldDisabled } = params;\n if (!editableElement) return;\n addHoverOutline(editableElement as HTMLElement, fieldDisabled);\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 addHoverOutline(editableElement, fieldDisabled);\n });\n }\n );\n}\n\nconst debouncedAddOutline = debounce(addOutline, 50, { trailing: true });\nconst showOutline = (params?: AddOutlineParams): void => debouncedAddOutline(params);\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\nconst debouncedRenderHoverToolbar = debounce(async (params: HandleBuilderInteractionParams) => {\n const eventDetails = getCsDataOfElement(params.event);\n if (\n !eventDetails ||\n !params.overlayWrapper ||\n !params.visualBuilderContainer ||\n !params.focusedToolbar\n ) {\n return;\n }\n\n appendFieldPathDropdown(eventDetails, params.focusedToolbar, {\n isHover: true\n });\n}, 50, { trailing: true });\n\nexport const showHoverToolbar = async (params: HandleBuilderInteractionParams) => await debouncedRenderHoverToolbar(params);\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\nfunction isFieldPathDropdown(target: HTMLElement): boolean {\n return target.classList.contains(\"visual-builder__focused-toolbar__field-label-wrapper\") || target.classList.contains(\"visual-builder__focused-toolbar__field-label-wrapper__current-field\");\n}\n\nconst throttledMouseHover = 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(\n eventTarget &&\n isFieldPathDropdown(eventTarget)\n ) {\n params.customCursor && hideCustomCursor(params.customCursor);\n showOutline();\n showHoverToolbar({\n event: params.event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\n });\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 showOutline({\n editableElement,\n eventDetails,\n content_type_uid,\n fieldPath,\n fieldMetadata,\n });\n const isFocussed= VisualBuilder.VisualBuilderGlobalState.value.isFocussed;\n if(!isFocussed) {\n showHoverToolbar({\n event: params.event,\n overlayWrapper: params.overlayWrapper,\n visualBuilderContainer: params.visualBuilderContainer,\n previousSelectedEditableDOM:\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM,\n focusedToolbar: params.focusedToolbar,\n resizeObserver: params.resizeObserver,\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);\n\nconst handleMouseHover = async (params: HandleMouseHoverParams): Promise<void> => await throttledMouseHover(params);\n\nexport default handleMouseHover;\n"],"mappings":"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","names":["fieldDisabled"]}
@@ -0,0 +1,58 @@
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/getPsuedoEditableEssentialStyles.ts
31
+ var getPsuedoEditableEssentialStyles_exports = {};
32
+ __export(getPsuedoEditableEssentialStyles_exports, {
33
+ getPsuedoEditableEssentialStyles: () => getPsuedoEditableEssentialStyles
34
+ });
35
+ module.exports = __toCommonJS(getPsuedoEditableEssentialStyles_exports);
36
+ var import_getCamelCaseStyles = __toESM(require("./getCamelCaseStyles.cjs"), 1);
37
+ function getPsuedoEditableEssentialStyles({
38
+ rect,
39
+ camelCase
40
+ }) {
41
+ const overrides = {
42
+ position: "absolute",
43
+ top: `${rect.top + window.scrollY}px`,
44
+ left: `${rect.left + window.scrollX}px`,
45
+ height: "auto",
46
+ "min-height": `${Math.abs(rect.height)}px`,
47
+ "white-space": "normal",
48
+ "text-transform": "none",
49
+ "text-wrap-mode": "wrap",
50
+ "text-overflow": "visible"
51
+ };
52
+ return camelCase ? (0, import_getCamelCaseStyles.default)(overrides) : overrides;
53
+ }
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ getPsuedoEditableEssentialStyles
57
+ });
58
+ //# sourceMappingURL=getPsuedoEditableEssentialStyles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/getPsuedoEditableEssentialStyles.ts"],"sourcesContent":["import getCamelCaseStyles from \"./getCamelCaseStyles\";\n\nexport function getPsuedoEditableEssentialStyles({\n rect,\n camelCase,\n}: {\n rect: DOMRect;\n camelCase: boolean | undefined;\n}) {\n const overrides = {\n position: \"absolute\",\n top: `${rect.top + window.scrollY}px`,\n left: `${rect.left + window.scrollX}px`,\n height: \"auto\",\n \"min-height\": `${Math.abs(rect.height)}px`,\n \"white-space\": \"normal\",\n \"text-transform\": \"none\",\n \"text-wrap-mode\": \"wrap\",\n \"text-overflow\": \"visible\",\n };\n return camelCase ? getCamelCaseStyles(overrides) : overrides;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAA+B;AAExB,SAAS,iCAAiC;AAAA,EAC7C;AAAA,EACA;AACJ,GAGG;AACC,QAAM,YAAY;AAAA,IACd,UAAU;AAAA,IACV,KAAK,GAAG,KAAK,MAAM,OAAO,OAAO;AAAA,IACjC,MAAM,GAAG,KAAK,OAAO,OAAO,OAAO;AAAA,IACnC,QAAQ;AAAA,IACR,cAAc,GAAG,KAAK,IAAI,KAAK,MAAM,CAAC;AAAA,IACtC,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,EACrB;AACA,SAAO,gBAAY,0BAAAA,SAAmB,SAAS,IAAI;AACvD;","names":["getCamelCaseStyles"]}
@@ -0,0 +1,18 @@
1
+ declare function getPsuedoEditableEssentialStyles({ rect, camelCase, }: {
2
+ rect: DOMRect;
3
+ camelCase: boolean | undefined;
4
+ }): {
5
+ [key: string]: string;
6
+ } | {
7
+ position: string;
8
+ top: string;
9
+ left: string;
10
+ height: string;
11
+ "min-height": string;
12
+ "white-space": string;
13
+ "text-transform": string;
14
+ "text-wrap-mode": string;
15
+ "text-overflow": string;
16
+ };
17
+
18
+ export { getPsuedoEditableEssentialStyles };
@@ -0,0 +1,18 @@
1
+ declare function getPsuedoEditableEssentialStyles({ rect, camelCase, }: {
2
+ rect: DOMRect;
3
+ camelCase: boolean | undefined;
4
+ }): {
5
+ [key: string]: string;
6
+ } | {
7
+ position: string;
8
+ top: string;
9
+ left: string;
10
+ height: string;
11
+ "min-height": string;
12
+ "white-space": string;
13
+ "text-transform": string;
14
+ "text-wrap-mode": string;
15
+ "text-overflow": string;
16
+ };
17
+
18
+ export { getPsuedoEditableEssentialStyles };
@@ -0,0 +1,25 @@
1
+ import "../../chunk-5WRI5ZAA.js";
2
+
3
+ // src/visualBuilder/utils/getPsuedoEditableEssentialStyles.ts
4
+ import getCamelCaseStyles from "./getCamelCaseStyles.js";
5
+ function getPsuedoEditableEssentialStyles({
6
+ rect,
7
+ camelCase
8
+ }) {
9
+ const overrides = {
10
+ position: "absolute",
11
+ top: `${rect.top + window.scrollY}px`,
12
+ left: `${rect.left + window.scrollX}px`,
13
+ height: "auto",
14
+ "min-height": `${Math.abs(rect.height)}px`,
15
+ "white-space": "normal",
16
+ "text-transform": "none",
17
+ "text-wrap-mode": "wrap",
18
+ "text-overflow": "visible"
19
+ };
20
+ return camelCase ? getCamelCaseStyles(overrides) : overrides;
21
+ }
22
+ export {
23
+ getPsuedoEditableEssentialStyles
24
+ };
25
+ //# sourceMappingURL=getPsuedoEditableEssentialStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/getPsuedoEditableEssentialStyles.ts"],"sourcesContent":["import getCamelCaseStyles from \"./getCamelCaseStyles\";\n\nexport function getPsuedoEditableEssentialStyles({\n rect,\n camelCase,\n}: {\n rect: DOMRect;\n camelCase: boolean | undefined;\n}) {\n const overrides = {\n position: \"absolute\",\n top: `${rect.top + window.scrollY}px`,\n left: `${rect.left + window.scrollX}px`,\n height: \"auto\",\n \"min-height\": `${Math.abs(rect.height)}px`,\n \"white-space\": \"normal\",\n \"text-transform\": \"none\",\n \"text-wrap-mode\": \"wrap\",\n \"text-overflow\": \"visible\",\n };\n return camelCase ? getCamelCaseStyles(overrides) : overrides;\n}\n"],"mappings":";;;AAAA,OAAO,wBAAwB;AAExB,SAAS,iCAAiC;AAAA,EAC7C;AAAA,EACA;AACJ,GAGG;AACC,QAAM,YAAY;AAAA,IACd,UAAU;AAAA,IACV,KAAK,GAAG,KAAK,MAAM,OAAO,OAAO;AAAA,IACjC,MAAM,GAAG,KAAK,OAAO,OAAO,OAAO;AAAA,IACnC,QAAQ;AAAA,IACR,cAAc,GAAG,KAAK,IAAI,KAAK,MAAM,CAAC;AAAA,IACtC,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,EACrB;AACA,SAAO,YAAY,mBAAmB,SAAS,IAAI;AACvD;","names":[]}
@@ -34,20 +34,16 @@ __export(getPsuedoEditableStylesElement_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(getPsuedoEditableStylesElement_exports);
36
36
  var import_getCamelCaseStyles = __toESM(require("./getCamelCaseStyles.cjs"), 1);
37
+ var import_getPsuedoEditableEssentialStyles = require("./getPsuedoEditableEssentialStyles.cjs");
37
38
  var import_getStyleOfAnElement = __toESM(require("./getStyleOfAnElement.cjs"), 1);
38
39
  function getPsuedoEditableElementStyles(psuedoEditableElement, camelCase) {
39
40
  let styles = (0, import_getStyleOfAnElement.default)(psuedoEditableElement);
41
+ const rect = psuedoEditableElement.getBoundingClientRect();
40
42
  if (camelCase) {
41
43
  styles = (0, import_getCamelCaseStyles.default)(styles);
42
44
  }
43
- const rect = psuedoEditableElement.getBoundingClientRect();
44
- styles.position = "absolute";
45
- styles.top = `${rect.top + window.scrollY}px`;
46
- styles.left = `${rect.left + window.scrollX}px`;
47
- styles.height = "auto";
48
- styles.whiteSpace = "pre-line";
49
- styles.textTransform = "none";
50
- return styles;
45
+ const overrides = (0, import_getPsuedoEditableEssentialStyles.getPsuedoEditableEssentialStyles)({ rect, camelCase });
46
+ return { ...styles, ...overrides };
51
47
  }
52
48
  // Annotate the CommonJS export names for ESM import in node:
53
49
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/getPsuedoEditableStylesElement.ts"],"sourcesContent":["import getCamelCaseStyles from \"./getCamelCaseStyles\";\nimport getStyleOfAnElement from \"./getStyleOfAnElement\";\n\nexport function getPsuedoEditableElementStyles(\n psuedoEditableElement: HTMLElement,\n camelCase?: boolean\n): { [key: string]: string } {\n let styles = getStyleOfAnElement(psuedoEditableElement);\n if (camelCase) {\n styles = getCamelCaseStyles(styles);\n }\n // Get the offsetTop and offsetLeft of the editable element and set the position of the pseudo editable element\n // The pseudo editable element is positioned absolutely at the same location as the editable element\n const rect = psuedoEditableElement.getBoundingClientRect();\n\n styles.position = \"absolute\";\n styles.top = `${rect.top + window.scrollY}px`;\n styles.left = `${rect.left + window.scrollX}px`;\n // setting height to auto so that the element can grow based on the content\n // and the resize observer can detect the change in height\n styles.height = \"auto\";\n styles.whiteSpace = \"pre-line\";\n styles.textTransform = \"none\";\n\n return styles;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAA+B;AAC/B,iCAAgC;AAEzB,SAAS,+BACZ,uBACA,WACyB;AACzB,MAAI,aAAS,2BAAAA,SAAoB,qBAAqB;AACtD,MAAI,WAAW;AACX,iBAAS,0BAAAC,SAAmB,MAAM;AAAA,EACtC;AAGA,QAAM,OAAO,sBAAsB,sBAAsB;AAEzD,SAAO,WAAW;AAClB,SAAO,MAAM,GAAG,KAAK,MAAM,OAAO,OAAO;AACzC,SAAO,OAAO,GAAG,KAAK,OAAO,OAAO,OAAO;AAG3C,SAAO,SAAS;AAChB,SAAO,aAAa;AACpB,SAAO,gBAAgB;AAEvB,SAAO;AACX;","names":["getStyleOfAnElement","getCamelCaseStyles"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/getPsuedoEditableStylesElement.ts"],"sourcesContent":["import getCamelCaseStyles from \"./getCamelCaseStyles\";\nimport { getPsuedoEditableEssentialStyles } from \"./getPsuedoEditableEssentialStyles\";\nimport getStyleOfAnElement from \"./getStyleOfAnElement\";\n\nexport function getPsuedoEditableElementStyles(\n psuedoEditableElement: HTMLElement,\n camelCase?: boolean\n): { [key: string]: string } {\n let styles = getStyleOfAnElement(psuedoEditableElement);\n // Get the offsetTop and offsetLeft of the editable element and set the position of the pseudo editable element\n // The pseudo editable element is positioned absolutely at the same location as the editable element\n const rect = psuedoEditableElement.getBoundingClientRect();\n\n if (camelCase) {\n styles = getCamelCaseStyles(styles);\n }\n const overrides = getPsuedoEditableEssentialStyles({ rect, camelCase });\n return { ...styles, ...overrides };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAA+B;AAC/B,8CAAiD;AACjD,iCAAgC;AAEzB,SAAS,+BACZ,uBACA,WACyB;AACzB,MAAI,aAAS,2BAAAA,SAAoB,qBAAqB;AAGtD,QAAM,OAAO,sBAAsB,sBAAsB;AAEzD,MAAI,WAAW;AACX,iBAAS,0BAAAC,SAAmB,MAAM;AAAA,EACtC;AACA,QAAM,gBAAY,0EAAiC,EAAE,MAAM,UAAU,CAAC;AACtE,SAAO,EAAE,GAAG,QAAQ,GAAG,UAAU;AACrC;","names":["getStyleOfAnElement","getCamelCaseStyles"]}