@contentstack/live-preview-utils 3.2.5 → 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 (141) hide show
  1. package/dist/legacy/light-sdk.cjs +1 -1
  2. package/dist/legacy/light-sdk.js +1 -1
  3. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  4. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  5. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
  6. package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
  7. package/dist/legacy/visualBuilder/components/Tooltip.cjs +167 -0
  8. package/dist/legacy/visualBuilder/components/Tooltip.cjs.map +1 -0
  9. package/dist/legacy/visualBuilder/components/Tooltip.d.cts +26 -0
  10. package/dist/legacy/visualBuilder/components/Tooltip.d.ts +26 -0
  11. package/dist/legacy/visualBuilder/components/Tooltip.js +140 -0
  12. package/dist/legacy/visualBuilder/components/Tooltip.js.map +1 -0
  13. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +115 -15
  14. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  15. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +117 -17
  16. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  17. package/dist/legacy/visualBuilder/components/icons/index.cjs +44 -0
  18. package/dist/legacy/visualBuilder/components/icons/index.cjs.map +1 -1
  19. package/dist/legacy/visualBuilder/components/icons/index.d.cts +3 -1
  20. package/dist/legacy/visualBuilder/components/icons/index.d.ts +3 -1
  21. package/dist/legacy/visualBuilder/components/icons/index.js +32 -0
  22. package/dist/legacy/visualBuilder/components/icons/index.js.map +1 -1
  23. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs +1 -0
  24. package/dist/legacy/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  25. package/dist/legacy/visualBuilder/generators/generateOverlay.js +1 -0
  26. package/dist/legacy/visualBuilder/generators/generateOverlay.js.map +1 -1
  27. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +43 -10
  28. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  29. package/dist/legacy/visualBuilder/generators/generateToolbar.d.cts +11 -4
  30. package/dist/legacy/visualBuilder/generators/generateToolbar.d.ts +11 -4
  31. package/dist/legacy/visualBuilder/generators/generateToolbar.js +41 -9
  32. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  33. package/dist/legacy/visualBuilder/index.cjs +6 -2
  34. package/dist/legacy/visualBuilder/index.cjs.map +1 -1
  35. package/dist/legacy/visualBuilder/index.d.cts +2 -0
  36. package/dist/legacy/visualBuilder/index.d.ts +2 -0
  37. package/dist/legacy/visualBuilder/index.js +6 -2
  38. package/dist/legacy/visualBuilder/index.js.map +1 -1
  39. package/dist/legacy/visualBuilder/listeners/index.cjs +3 -1
  40. package/dist/legacy/visualBuilder/listeners/index.cjs.map +1 -1
  41. package/dist/legacy/visualBuilder/listeners/index.js +3 -1
  42. package/dist/legacy/visualBuilder/listeners/index.js.map +1 -1
  43. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +7 -3
  44. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  45. package/dist/legacy/visualBuilder/listeners/mouseClick.d.cts +4 -1
  46. package/dist/legacy/visualBuilder/listeners/mouseClick.d.ts +4 -1
  47. package/dist/legacy/visualBuilder/listeners/mouseClick.js +5 -2
  48. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  49. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +183 -133
  50. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  51. package/dist/legacy/visualBuilder/listeners/mouseHover.d.cts +5 -3
  52. package/dist/legacy/visualBuilder/listeners/mouseHover.d.ts +5 -3
  53. package/dist/legacy/visualBuilder/listeners/mouseHover.js +182 -133
  54. package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
  55. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +2 -23
  56. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  57. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +2 -13
  58. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  59. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +2 -0
  60. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  61. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
  62. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
  63. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +2 -0
  64. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  65. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +66 -1
  66. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  67. package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +7 -0
  68. package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +7 -0
  69. package/dist/legacy/visualBuilder/visualBuilder.style.js +66 -1
  70. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  71. package/dist/modern/light-sdk.cjs +1 -1
  72. package/dist/modern/light-sdk.js +1 -1
  73. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  74. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  75. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
  76. package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
  77. package/dist/modern/visualBuilder/components/Tooltip.cjs +167 -0
  78. package/dist/modern/visualBuilder/components/Tooltip.cjs.map +1 -0
  79. package/dist/modern/visualBuilder/components/Tooltip.d.cts +26 -0
  80. package/dist/modern/visualBuilder/components/Tooltip.d.ts +26 -0
  81. package/dist/modern/visualBuilder/components/Tooltip.js +140 -0
  82. package/dist/modern/visualBuilder/components/Tooltip.js.map +1 -0
  83. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +113 -15
  84. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  85. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +115 -17
  86. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  87. package/dist/modern/visualBuilder/components/icons/index.cjs +44 -0
  88. package/dist/modern/visualBuilder/components/icons/index.cjs.map +1 -1
  89. package/dist/modern/visualBuilder/components/icons/index.d.cts +3 -1
  90. package/dist/modern/visualBuilder/components/icons/index.d.ts +3 -1
  91. package/dist/modern/visualBuilder/components/icons/index.js +32 -0
  92. package/dist/modern/visualBuilder/components/icons/index.js.map +1 -1
  93. package/dist/modern/visualBuilder/generators/generateOverlay.cjs +1 -0
  94. package/dist/modern/visualBuilder/generators/generateOverlay.cjs.map +1 -1
  95. package/dist/modern/visualBuilder/generators/generateOverlay.js +1 -0
  96. package/dist/modern/visualBuilder/generators/generateOverlay.js.map +1 -1
  97. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +42 -10
  98. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  99. package/dist/modern/visualBuilder/generators/generateToolbar.d.cts +11 -4
  100. package/dist/modern/visualBuilder/generators/generateToolbar.d.ts +11 -4
  101. package/dist/modern/visualBuilder/generators/generateToolbar.js +40 -9
  102. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  103. package/dist/modern/visualBuilder/index.cjs +6 -2
  104. package/dist/modern/visualBuilder/index.cjs.map +1 -1
  105. package/dist/modern/visualBuilder/index.d.cts +2 -0
  106. package/dist/modern/visualBuilder/index.d.ts +2 -0
  107. package/dist/modern/visualBuilder/index.js +6 -2
  108. package/dist/modern/visualBuilder/index.js.map +1 -1
  109. package/dist/modern/visualBuilder/listeners/index.cjs +3 -1
  110. package/dist/modern/visualBuilder/listeners/index.cjs.map +1 -1
  111. package/dist/modern/visualBuilder/listeners/index.js +3 -1
  112. package/dist/modern/visualBuilder/listeners/index.js.map +1 -1
  113. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +7 -3
  114. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  115. package/dist/modern/visualBuilder/listeners/mouseClick.d.cts +4 -1
  116. package/dist/modern/visualBuilder/listeners/mouseClick.d.ts +4 -1
  117. package/dist/modern/visualBuilder/listeners/mouseClick.js +5 -2
  118. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  119. package/dist/modern/visualBuilder/listeners/mouseHover.cjs +183 -133
  120. package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  121. package/dist/modern/visualBuilder/listeners/mouseHover.d.cts +5 -3
  122. package/dist/modern/visualBuilder/listeners/mouseHover.d.ts +5 -3
  123. package/dist/modern/visualBuilder/listeners/mouseHover.js +182 -133
  124. package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
  125. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +2 -22
  126. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  127. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +2 -12
  128. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  129. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +2 -0
  130. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  131. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
  132. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
  133. package/dist/modern/visualBuilder/utils/types/postMessage.types.js +2 -0
  134. package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  135. package/dist/modern/visualBuilder/visualBuilder.style.cjs +66 -1
  136. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  137. package/dist/modern/visualBuilder/visualBuilder.style.d.cts +7 -0
  138. package/dist/modern/visualBuilder/visualBuilder.style.d.ts +7 -0
  139. package/dist/modern/visualBuilder/visualBuilder.style.js +66 -1
  140. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  141. package/package.json +2 -1
@@ -33,7 +33,8 @@ __export(mouseHover_exports, {
33
33
  default: () => mouseHover_default,
34
34
  hideCustomCursor: () => hideCustomCursor,
35
35
  hideHoverOutline: () => hideHoverOutline,
36
- showCustomCursor: () => showCustomCursor
36
+ showCustomCursor: () => showCustomCursor,
37
+ showHoverToolbar: () => showHoverToolbar
37
38
  });
38
39
  module.exports = __toCommonJS(mouseHover_exports);
39
40
  var import_lodash_es = require("lodash-es");
@@ -50,6 +51,7 @@ var import__2 = require("../../index.cjs");
50
51
  var import_configManager = __toESM(require("../../configManager/configManager.cjs"), 1);
51
52
  var import_generateThread = require("../generators/generateThread.cjs");
52
53
  var import_getEntryPermissionsCached = require("../utils/getEntryPermissionsCached.cjs");
54
+ var import_generateToolbar = require("../generators/generateToolbar.cjs");
53
55
  var config = import_configManager.default.get();
54
56
  function resetCustomCursor(customCursor) {
55
57
  if (customCursor) {
@@ -74,10 +76,41 @@ function handleCursorPosition(event, customCursor) {
74
76
  customCursor.style.top = `${mouseY}px`;
75
77
  }
76
78
  }
77
- function addOutline(editableElement, isFieldDisabled2) {
79
+ function addOutline(params) {
80
+ if (!params) {
81
+ return;
82
+ }
83
+ const { editableElement, eventDetails, content_type_uid, fieldPath, fieldMetadata, fieldDisabled } = params;
78
84
  if (!editableElement) return;
79
- (0, import_generateHoverOutline.addHoverOutline)(editableElement, isFieldDisabled2);
85
+ (0, import_generateHoverOutline.addHoverOutline)(editableElement, fieldDisabled);
86
+ import_fieldSchemaMap.FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(
87
+ (fieldSchema) => {
88
+ let entryAcl;
89
+ if (!fieldSchema) return;
90
+ (0, import_getEntryPermissionsCached.getEntryPermissionsCached)({
91
+ entryUid: fieldMetadata.entry_uid,
92
+ contentTypeUid: fieldMetadata.content_type_uid,
93
+ locale: fieldMetadata.locale
94
+ }).then((data) => {
95
+ entryAcl = data;
96
+ }).catch((error) => {
97
+ console.error(
98
+ "[Visual Builder] Error retrieving entry permissions:",
99
+ error
100
+ );
101
+ }).finally(() => {
102
+ const { isDisabled: fieldDisabled2 } = (0, import_isFieldDisabled.isFieldDisabled)(
103
+ fieldSchema,
104
+ eventDetails,
105
+ entryAcl
106
+ );
107
+ (0, import_generateHoverOutline.addHoverOutline)(editableElement, fieldDisabled2);
108
+ });
109
+ }
110
+ );
80
111
  }
112
+ var debouncedAddOutline = (0, import_lodash_es.debounce)(addOutline, 50, { trailing: true });
113
+ var showOutline = (params) => debouncedAddOutline(params);
81
114
  function hideDefaultCursor() {
82
115
  if (document?.body && !document.body.classList.contains(
83
116
  (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__default-cursor--disabled"]
@@ -118,6 +151,16 @@ function showCustomCursor(customCursor) {
118
151
  return;
119
152
  customCursor?.classList.add("visible");
120
153
  }
154
+ var debouncedRenderHoverToolbar = (0, import_lodash_es.debounce)(async (params) => {
155
+ const eventDetails = (0, import_getCsDataOfElement.getCsDataOfElement)(params.event);
156
+ if (!eventDetails || !params.overlayWrapper || !params.visualBuilderContainer || !params.focusedToolbar) {
157
+ return;
158
+ }
159
+ (0, import_generateToolbar.appendFieldPathDropdown)(eventDetails, params.focusedToolbar, {
160
+ isHover: true
161
+ });
162
+ }, 50, { trailing: true });
163
+ var showHoverToolbar = async (params) => await debouncedRenderHoverToolbar(params);
121
164
  function isOverlay(target) {
122
165
  return target.classList.contains("visual-builder__overlay");
123
166
  }
@@ -126,151 +169,158 @@ function isContentEditable(target) {
126
169
  return target.getAttribute("contenteditable") === "true";
127
170
  return false;
128
171
  }
129
- async function handleMouseHover(params) {
130
- (0, import_lodash_es.throttle)(async (params2) => {
131
- const eventDetails = (0, import_getCsDataOfElement.getCsDataOfElement)(params2.event);
132
- const eventTarget = params2.event.target;
133
- if (config?.collab.enable && config?.collab.pauseFeedback) {
134
- hideCustomCursor(params2.customCursor);
172
+ function isFieldPathDropdown(target) {
173
+ return target.classList.contains("visual-builder__focused-toolbar__field-label-wrapper") || target.classList.contains("visual-builder__focused-toolbar__field-label-wrapper__current-field");
174
+ }
175
+ var throttledMouseHover = (0, import_lodash_es.throttle)(async (params) => {
176
+ const eventDetails = (0, import_getCsDataOfElement.getCsDataOfElement)(params.event);
177
+ const eventTarget = params.event.target;
178
+ if (config?.collab.enable && config?.collab.pauseFeedback) {
179
+ hideCustomCursor(params.customCursor);
180
+ return;
181
+ }
182
+ if (!eventDetails) {
183
+ if (eventTarget && (isOverlay(eventTarget) || isContentEditable(eventTarget) || (0, import_generateThread.isCollabThread)(eventTarget))) {
184
+ handleCursorPosition(params.event, params.customCursor);
185
+ hideCustomCursor(params.customCursor);
135
186
  return;
136
187
  }
137
- if (!eventDetails) {
138
- if (eventTarget && (isOverlay(eventTarget) || isContentEditable(eventTarget) || (0, import_generateThread.isCollabThread)(eventTarget))) {
139
- handleCursorPosition(params2.event, params2.customCursor);
140
- hideCustomCursor(params2.customCursor);
141
- return;
142
- }
143
- if (!config?.collab.enable) {
144
- resetCustomCursor(params2.customCursor);
145
- }
146
- (0, import_multipleElementAddButton.removeAddInstanceButtons)({
147
- eventTarget: params2.event.target,
148
- visualBuilderContainer: params2.visualBuilderContainer,
149
- overlayWrapper: params2.overlayWrapper
188
+ if (eventTarget && isFieldPathDropdown(eventTarget)) {
189
+ params.customCursor && hideCustomCursor(params.customCursor);
190
+ showOutline();
191
+ showHoverToolbar({
192
+ event: params.event,
193
+ overlayWrapper: params.overlayWrapper,
194
+ visualBuilderContainer: params.visualBuilderContainer,
195
+ previousSelectedEditableDOM: import__.VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM,
196
+ focusedToolbar: params.focusedToolbar,
197
+ resizeObserver: params.resizeObserver
150
198
  });
151
- handleCursorPosition(params2.event, params2.customCursor);
152
- if (config?.collab.enable && config?.collab.isFeedbackMode) {
153
- showCustomCursor(params2.customCursor);
154
- collabCustomCursor(params2.customCursor);
199
+ }
200
+ if (!config?.collab.enable) {
201
+ resetCustomCursor(params.customCursor);
202
+ }
203
+ (0, import_multipleElementAddButton.removeAddInstanceButtons)({
204
+ eventTarget: params.event.target,
205
+ visualBuilderContainer: params.visualBuilderContainer,
206
+ overlayWrapper: params.overlayWrapper
207
+ });
208
+ handleCursorPosition(params.event, params.customCursor);
209
+ if (config?.collab.enable && config?.collab.isFeedbackMode) {
210
+ showCustomCursor(params.customCursor);
211
+ collabCustomCursor(params.customCursor);
212
+ }
213
+ return;
214
+ }
215
+ const { editableElement, fieldMetadata } = eventDetails;
216
+ const { content_type_uid, fieldPath } = fieldMetadata;
217
+ if (import__.VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM && import__.VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM.isSameNode(
218
+ editableElement
219
+ )) {
220
+ hideCustomCursor(params.customCursor);
221
+ return;
222
+ }
223
+ if (params.customCursor) {
224
+ const elementUnderCursor = document.elementFromPoint(
225
+ params.event.clientX,
226
+ params.event.clientY
227
+ );
228
+ if (elementUnderCursor) {
229
+ if (elementUnderCursor.nodeName === "A" || elementUnderCursor.nodeName === "BUTTON") {
230
+ elementUnderCursor.classList.add(
231
+ (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__no-cursor-style"]
232
+ );
155
233
  }
156
- return;
157
234
  }
158
- const { editableElement, fieldMetadata } = eventDetails;
159
- const { content_type_uid, fieldPath } = fieldMetadata;
160
- if (import__.VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM && import__.VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM.isSameNode(
161
- editableElement
162
- )) {
163
- hideCustomCursor(params2.customCursor);
235
+ if (config?.collab.enable && config?.collab.isFeedbackMode) {
236
+ collabCustomCursor(params.customCursor);
237
+ handleCursorPosition(params.event, params.customCursor);
238
+ showCustomCursor(params.customCursor);
239
+ return;
240
+ } else if (config?.collab.enable && !config?.collab.isFeedbackMode) {
241
+ hideCustomCursor(params.customCursor);
164
242
  return;
165
243
  }
166
- if (params2.customCursor) {
167
- const elementUnderCursor = document.elementFromPoint(
168
- params2.event.clientX,
169
- params2.event.clientY
170
- );
171
- if (elementUnderCursor) {
172
- if (elementUnderCursor.nodeName === "A" || elementUnderCursor.nodeName === "BUTTON") {
173
- elementUnderCursor.classList.add(
174
- (0, import_visualBuilder.visualBuilderStyles)()["visual-builder__no-cursor-style"]
244
+ if (import__.VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM !== editableElement) {
245
+ resetCustomCursor(params.customCursor);
246
+ (0, import_multipleElementAddButton.removeAddInstanceButtons)({
247
+ eventTarget: params.event.target,
248
+ visualBuilderContainer: params.visualBuilderContainer,
249
+ overlayWrapper: params.overlayWrapper
250
+ });
251
+ }
252
+ if (!import_fieldSchemaMap.FieldSchemaMap.hasFieldSchema(content_type_uid, fieldPath)) {
253
+ (0, import_generateCustomCursor.generateCustomCursor)({
254
+ fieldType: "loading",
255
+ customCursor: params.customCursor
256
+ });
257
+ }
258
+ import_fieldSchemaMap.FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(
259
+ (fieldSchema) => {
260
+ if (!fieldSchema) return;
261
+ let entryAcl;
262
+ (0, import_getEntryPermissionsCached.getEntryPermissionsCached)({
263
+ entryUid: fieldMetadata.entry_uid,
264
+ contentTypeUid: fieldMetadata.content_type_uid,
265
+ locale: fieldMetadata.locale
266
+ }).then((data) => {
267
+ entryAcl = data;
268
+ }).catch((error) => {
269
+ console.error(
270
+ "[Visual Builder] Error retrieving entry permissions:",
271
+ error
175
272
  );
176
- }
177
- }
178
- if (config?.collab.enable && config?.collab.isFeedbackMode) {
179
- collabCustomCursor(params2.customCursor);
180
- handleCursorPosition(params2.event, params2.customCursor);
181
- showCustomCursor(params2.customCursor);
182
- return;
183
- } else if (config?.collab.enable && !config?.collab.isFeedbackMode) {
184
- hideCustomCursor(params2.customCursor);
185
- return;
186
- }
187
- if (import__.VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM !== editableElement) {
188
- resetCustomCursor(params2.customCursor);
189
- (0, import_multipleElementAddButton.removeAddInstanceButtons)({
190
- eventTarget: params2.event.target,
191
- visualBuilderContainer: params2.visualBuilderContainer,
192
- overlayWrapper: params2.overlayWrapper
193
- });
194
- }
195
- if (!import_fieldSchemaMap.FieldSchemaMap.hasFieldSchema(content_type_uid, fieldPath)) {
196
- (0, import_generateCustomCursor.generateCustomCursor)({
197
- fieldType: "loading",
198
- customCursor: params2.customCursor
273
+ }).finally(() => {
274
+ if (!params.customCursor) return;
275
+ const { isDisabled: fieldDisabled } = (0, import_isFieldDisabled.isFieldDisabled)(
276
+ fieldSchema,
277
+ eventDetails,
278
+ entryAcl
279
+ );
280
+ const fieldType = (0, import_getFieldType.getFieldType)(fieldSchema);
281
+ (0, import_generateCustomCursor.generateCustomCursor)({
282
+ fieldType,
283
+ customCursor: params.customCursor,
284
+ fieldDisabled
285
+ });
199
286
  });
200
287
  }
201
- import_fieldSchemaMap.FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(
202
- (fieldSchema) => {
203
- if (!fieldSchema) return;
204
- let entryAcl;
205
- (0, import_getEntryPermissionsCached.getEntryPermissionsCached)({
206
- entryUid: fieldMetadata.entry_uid,
207
- contentTypeUid: fieldMetadata.content_type_uid,
208
- locale: fieldMetadata.locale
209
- }).then((data) => {
210
- entryAcl = data;
211
- }).catch((error) => {
212
- console.error(
213
- "[Visual Builder] Error retrieving entry permissions:",
214
- error
215
- );
216
- }).finally(() => {
217
- if (!params2.customCursor) return;
218
- const { isDisabled: fieldDisabled } = (0, import_isFieldDisabled.isFieldDisabled)(
219
- fieldSchema,
220
- eventDetails,
221
- entryAcl
222
- );
223
- const fieldType = (0, import_getFieldType.getFieldType)(fieldSchema);
224
- (0, import_generateCustomCursor.generateCustomCursor)({
225
- fieldType,
226
- customCursor: params2.customCursor,
227
- fieldDisabled
228
- });
229
- });
230
- }
231
- );
232
- handleCursorPosition(params2.event, params2.customCursor);
233
- showCustomCursor(params2.customCursor);
234
- }
235
- if (!editableElement.classList.contains(import__2.VB_EmptyBlockParentClass) && !editableElement.classList.contains("visual-builder__empty-block")) {
236
- addOutline(editableElement);
237
- import_fieldSchemaMap.FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath).then(
238
- (fieldSchema) => {
239
- let entryAcl;
240
- if (!fieldSchema) return;
241
- (0, import_getEntryPermissionsCached.getEntryPermissionsCached)({
242
- entryUid: fieldMetadata.entry_uid,
243
- contentTypeUid: fieldMetadata.content_type_uid,
244
- locale: fieldMetadata.locale
245
- }).then((data) => {
246
- entryAcl = data;
247
- }).catch((error) => {
248
- console.error(
249
- "[Visual Builder] Error retrieving entry permissions:",
250
- error
251
- );
252
- }).finally(() => {
253
- const { isDisabled: fieldDisabled } = (0, import_isFieldDisabled.isFieldDisabled)(
254
- fieldSchema,
255
- eventDetails,
256
- entryAcl
257
- );
258
- addOutline(editableElement, fieldDisabled);
259
- });
260
- }
261
- );
262
- }
263
- if (import__.VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM === editableElement) {
264
- return;
288
+ );
289
+ handleCursorPosition(params.event, params.customCursor);
290
+ showCustomCursor(params.customCursor);
291
+ }
292
+ if (!editableElement.classList.contains(import__2.VB_EmptyBlockParentClass) && !editableElement.classList.contains("visual-builder__empty-block")) {
293
+ showOutline({
294
+ editableElement,
295
+ eventDetails,
296
+ content_type_uid,
297
+ fieldPath,
298
+ fieldMetadata
299
+ });
300
+ const isFocussed = import__.VisualBuilder.VisualBuilderGlobalState.value.isFocussed;
301
+ if (!isFocussed) {
302
+ showHoverToolbar({
303
+ event: params.event,
304
+ overlayWrapper: params.overlayWrapper,
305
+ visualBuilderContainer: params.visualBuilderContainer,
306
+ previousSelectedEditableDOM: import__.VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM,
307
+ focusedToolbar: params.focusedToolbar,
308
+ resizeObserver: params.resizeObserver
309
+ });
265
310
  }
266
- import__.VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM = editableElement;
267
- }, 10)(params);
268
- }
311
+ }
312
+ if (import__.VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM === editableElement) {
313
+ return;
314
+ }
315
+ import__.VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM = editableElement;
316
+ }, 10);
317
+ var handleMouseHover = async (params) => await throttledMouseHover(params);
269
318
  var mouseHover_default = handleMouseHover;
270
319
  // Annotate the CommonJS export names for ESM import in node:
271
320
  0 && (module.exports = {
272
321
  hideCustomCursor,
273
322
  hideHoverOutline,
274
- showCustomCursor
323
+ showCustomCursor,
324
+ showHoverToolbar
275
325
  });
276
326
  //# sourceMappingURL=mouseHover.cjs.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":["import__","Config","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":["import__","Config","fieldDisabled"]}
@@ -1,13 +1,15 @@
1
1
  import EventListenerHandlerParams from './types.cjs';
2
+ import { HandleBuilderInteractionParams } from './mouseClick.cjs';
2
3
  import '../types/visualBuilder.types.cjs';
3
4
  import '../../cslp/types/cslp.types.cjs';
4
5
 
5
- interface HandleMouseHoverParams extends Pick<EventListenerHandlerParams, "event" | "overlayWrapper" | "visualBuilderContainer"> {
6
+ interface HandleMouseHoverParams extends Pick<EventListenerHandlerParams, "event" | "overlayWrapper" | "visualBuilderContainer" | "focusedToolbar" | "resizeObserver"> {
6
7
  customCursor: HTMLDivElement | null;
7
8
  }
8
9
  declare function hideHoverOutline(visualBuilderContainer: HTMLDivElement | null): void;
9
10
  declare function hideCustomCursor(customCursor: HTMLDivElement | null): void;
10
11
  declare function showCustomCursor(customCursor: HTMLDivElement | null): void;
11
- declare function handleMouseHover(params: HandleMouseHoverParams): Promise<void>;
12
+ declare const showHoverToolbar: (params: HandleBuilderInteractionParams) => Promise<void | undefined>;
13
+ declare const handleMouseHover: (params: HandleMouseHoverParams) => Promise<void>;
12
14
 
13
- export { type HandleMouseHoverParams, handleMouseHover as default, hideCustomCursor, hideHoverOutline, showCustomCursor };
15
+ export { type HandleMouseHoverParams, handleMouseHover as default, hideCustomCursor, hideHoverOutline, showCustomCursor, showHoverToolbar };
@@ -1,13 +1,15 @@
1
1
  import EventListenerHandlerParams from './types.js';
2
+ import { HandleBuilderInteractionParams } from './mouseClick.js';
2
3
  import '../types/visualBuilder.types.js';
3
4
  import '../../cslp/types/cslp.types.js';
4
5
 
5
- interface HandleMouseHoverParams extends Pick<EventListenerHandlerParams, "event" | "overlayWrapper" | "visualBuilderContainer"> {
6
+ interface HandleMouseHoverParams extends Pick<EventListenerHandlerParams, "event" | "overlayWrapper" | "visualBuilderContainer" | "focusedToolbar" | "resizeObserver"> {
6
7
  customCursor: HTMLDivElement | null;
7
8
  }
8
9
  declare function hideHoverOutline(visualBuilderContainer: HTMLDivElement | null): void;
9
10
  declare function hideCustomCursor(customCursor: HTMLDivElement | null): void;
10
11
  declare function showCustomCursor(customCursor: HTMLDivElement | null): void;
11
- declare function handleMouseHover(params: HandleMouseHoverParams): Promise<void>;
12
+ declare const showHoverToolbar: (params: HandleBuilderInteractionParams) => Promise<void | undefined>;
13
+ declare const handleMouseHover: (params: HandleMouseHoverParams) => Promise<void>;
12
14
 
13
- export { type HandleMouseHoverParams, handleMouseHover as default, hideCustomCursor, hideHoverOutline, showCustomCursor };
15
+ export { type HandleMouseHoverParams, handleMouseHover as default, hideCustomCursor, hideHoverOutline, showCustomCursor, showHoverToolbar };