@contentstack/live-preview-utils 3.4.0 → 4.0.1

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 (210) hide show
  1. package/README.md +1 -1
  2. package/dist/legacy/common/inIframe.cjs +15 -2
  3. package/dist/legacy/common/inIframe.cjs.map +1 -1
  4. package/dist/legacy/common/inIframe.d.cts +2 -1
  5. package/dist/legacy/common/inIframe.d.ts +2 -1
  6. package/dist/legacy/common/inIframe.js +13 -1
  7. package/dist/legacy/common/inIframe.js.map +1 -1
  8. package/dist/legacy/light-sdk.cjs +1 -1
  9. package/dist/legacy/light-sdk.js +1 -1
  10. package/dist/legacy/livePreview/editButton/editButton.cjs +1 -1
  11. package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
  12. package/dist/legacy/livePreview/editButton/editButton.js +2 -2
  13. package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
  14. package/dist/legacy/livePreview/eventManager/livePreviewEventManager.cjs +7 -2
  15. package/dist/legacy/livePreview/eventManager/livePreviewEventManager.cjs.map +1 -1
  16. package/dist/legacy/livePreview/eventManager/livePreviewEventManager.js +7 -2
  17. package/dist/legacy/livePreview/eventManager/livePreviewEventManager.js.map +1 -1
  18. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +44 -8
  19. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
  20. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +46 -8
  21. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
  22. package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.cjs +15 -0
  23. package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.cjs.map +1 -1
  24. package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.d.cts +11 -1
  25. package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.d.ts +11 -1
  26. package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.js +10 -0
  27. package/dist/legacy/livePreview/eventManager/types/livePreviewPostMessageEvent.type.js.map +1 -1
  28. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
  29. package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
  30. package/dist/legacy/utils/index.cjs +10 -0
  31. package/dist/legacy/utils/index.cjs.map +1 -1
  32. package/dist/legacy/utils/index.d.cts +2 -1
  33. package/dist/legacy/utils/index.d.ts +2 -1
  34. package/dist/legacy/utils/index.js +9 -0
  35. package/dist/legacy/utils/index.js.map +1 -1
  36. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs +4 -2
  37. package/dist/legacy/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  38. package/dist/legacy/visualBuilder/components/FieldToolbar.d.cts +3 -1
  39. package/dist/legacy/visualBuilder/components/FieldToolbar.d.ts +3 -1
  40. package/dist/legacy/visualBuilder/components/FieldToolbar.js +4 -2
  41. package/dist/legacy/visualBuilder/components/FieldToolbar.js.map +1 -1
  42. package/dist/legacy/visualBuilder/components/VisualBuilder.cjs +3 -1
  43. package/dist/legacy/visualBuilder/components/VisualBuilder.cjs.map +1 -1
  44. package/dist/legacy/visualBuilder/components/VisualBuilder.js +4 -2
  45. package/dist/legacy/visualBuilder/components/VisualBuilder.js.map +1 -1
  46. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +6 -4
  47. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  48. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +6 -4
  49. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  50. package/dist/legacy/visualBuilder/components/index.cjs +2 -1
  51. package/dist/legacy/visualBuilder/components/index.cjs.map +1 -1
  52. package/dist/legacy/visualBuilder/components/index.js +3 -2
  53. package/dist/legacy/visualBuilder/components/index.js.map +1 -1
  54. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs +6 -4
  55. package/dist/legacy/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  56. package/dist/legacy/visualBuilder/generators/generateToolbar.js +6 -4
  57. package/dist/legacy/visualBuilder/generators/generateToolbar.js.map +1 -1
  58. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs +16 -17
  59. package/dist/legacy/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  60. package/dist/legacy/visualBuilder/listeners/mouseClick.js +16 -17
  61. package/dist/legacy/visualBuilder/listeners/mouseClick.js.map +1 -1
  62. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs +63 -58
  63. package/dist/legacy/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  64. package/dist/legacy/visualBuilder/listeners/mouseHover.js +63 -58
  65. package/dist/legacy/visualBuilder/listeners/mouseHover.js.map +1 -1
  66. package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs +72 -0
  67. package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs.map +1 -0
  68. package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.cts +14 -0
  69. package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.ts +14 -0
  70. package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js +49 -0
  71. package/dist/legacy/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js.map +1 -0
  72. package/dist/legacy/visualBuilder/utils/getEntryPermissions.cjs +2 -1
  73. package/dist/legacy/visualBuilder/utils/getEntryPermissions.cjs.map +1 -1
  74. package/dist/legacy/visualBuilder/utils/getEntryPermissions.js +2 -1
  75. package/dist/legacy/visualBuilder/utils/getEntryPermissions.js.map +1 -1
  76. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.cjs +79 -0
  77. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.cjs.map +1 -0
  78. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.d.cts +18 -0
  79. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.d.ts +18 -0
  80. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.js +46 -0
  81. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.js.map +1 -0
  82. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs +4 -3
  83. package/dist/legacy/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  84. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js +4 -3
  85. package/dist/legacy/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  86. package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs +43 -14
  87. package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
  88. package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.cts +3 -12
  89. package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.ts +3 -12
  90. package/dist/legacy/visualBuilder/utils/isFieldDisabled.js +43 -14
  91. package/dist/legacy/visualBuilder/utils/isFieldDisabled.js.map +1 -1
  92. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +2 -0
  93. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  94. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
  95. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
  96. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +2 -0
  97. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  98. package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs +6 -4
  99. package/dist/legacy/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
  100. package/dist/legacy/visualBuilder/utils/updateFocussedState.js +6 -4
  101. package/dist/legacy/visualBuilder/utils/updateFocussedState.js.map +1 -1
  102. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +3 -3
  103. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  104. package/dist/legacy/visualBuilder/visualBuilder.style.js +3 -3
  105. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  106. package/dist/modern/common/inIframe.cjs +15 -2
  107. package/dist/modern/common/inIframe.cjs.map +1 -1
  108. package/dist/modern/common/inIframe.d.cts +2 -1
  109. package/dist/modern/common/inIframe.d.ts +2 -1
  110. package/dist/modern/common/inIframe.js +13 -1
  111. package/dist/modern/common/inIframe.js.map +1 -1
  112. package/dist/modern/light-sdk.cjs +1 -1
  113. package/dist/modern/light-sdk.js +1 -1
  114. package/dist/modern/livePreview/editButton/editButton.cjs +1 -1
  115. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  116. package/dist/modern/livePreview/editButton/editButton.js +2 -2
  117. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  118. package/dist/modern/livePreview/eventManager/livePreviewEventManager.cjs +7 -2
  119. package/dist/modern/livePreview/eventManager/livePreviewEventManager.cjs.map +1 -1
  120. package/dist/modern/livePreview/eventManager/livePreviewEventManager.js +7 -2
  121. package/dist/modern/livePreview/eventManager/livePreviewEventManager.js.map +1 -1
  122. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +43 -8
  123. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs.map +1 -1
  124. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +45 -8
  125. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js.map +1 -1
  126. package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.cjs +15 -0
  127. package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.cjs.map +1 -1
  128. package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.d.cts +11 -1
  129. package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.d.ts +11 -1
  130. package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.js +10 -0
  131. package/dist/modern/livePreview/eventManager/types/livePreviewPostMessageEvent.type.js.map +1 -1
  132. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
  133. package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
  134. package/dist/modern/utils/index.cjs +10 -0
  135. package/dist/modern/utils/index.cjs.map +1 -1
  136. package/dist/modern/utils/index.d.cts +2 -1
  137. package/dist/modern/utils/index.d.ts +2 -1
  138. package/dist/modern/utils/index.js +9 -0
  139. package/dist/modern/utils/index.js.map +1 -1
  140. package/dist/modern/visualBuilder/components/FieldToolbar.cjs +4 -2
  141. package/dist/modern/visualBuilder/components/FieldToolbar.cjs.map +1 -1
  142. package/dist/modern/visualBuilder/components/FieldToolbar.d.cts +3 -1
  143. package/dist/modern/visualBuilder/components/FieldToolbar.d.ts +3 -1
  144. package/dist/modern/visualBuilder/components/FieldToolbar.js +4 -2
  145. package/dist/modern/visualBuilder/components/FieldToolbar.js.map +1 -1
  146. package/dist/modern/visualBuilder/components/VisualBuilder.cjs +3 -1
  147. package/dist/modern/visualBuilder/components/VisualBuilder.cjs.map +1 -1
  148. package/dist/modern/visualBuilder/components/VisualBuilder.js +4 -2
  149. package/dist/modern/visualBuilder/components/VisualBuilder.js.map +1 -1
  150. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +6 -4
  151. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  152. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +6 -4
  153. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  154. package/dist/modern/visualBuilder/components/index.cjs +2 -1
  155. package/dist/modern/visualBuilder/components/index.cjs.map +1 -1
  156. package/dist/modern/visualBuilder/components/index.js +3 -2
  157. package/dist/modern/visualBuilder/components/index.js.map +1 -1
  158. package/dist/modern/visualBuilder/generators/generateToolbar.cjs +6 -4
  159. package/dist/modern/visualBuilder/generators/generateToolbar.cjs.map +1 -1
  160. package/dist/modern/visualBuilder/generators/generateToolbar.js +6 -4
  161. package/dist/modern/visualBuilder/generators/generateToolbar.js.map +1 -1
  162. package/dist/modern/visualBuilder/listeners/mouseClick.cjs +16 -17
  163. package/dist/modern/visualBuilder/listeners/mouseClick.cjs.map +1 -1
  164. package/dist/modern/visualBuilder/listeners/mouseClick.js +16 -17
  165. package/dist/modern/visualBuilder/listeners/mouseClick.js.map +1 -1
  166. package/dist/modern/visualBuilder/listeners/mouseHover.cjs +63 -58
  167. package/dist/modern/visualBuilder/listeners/mouseHover.cjs.map +1 -1
  168. package/dist/modern/visualBuilder/listeners/mouseHover.js +63 -58
  169. package/dist/modern/visualBuilder/listeners/mouseHover.js.map +1 -1
  170. package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs +72 -0
  171. package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.cjs.map +1 -0
  172. package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.cts +14 -0
  173. package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.d.ts +14 -0
  174. package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js +49 -0
  175. package/dist/modern/visualBuilder/utils/fetchEntryPermissionsAndStageDetails.js.map +1 -0
  176. package/dist/modern/visualBuilder/utils/getEntryPermissions.cjs +2 -1
  177. package/dist/modern/visualBuilder/utils/getEntryPermissions.cjs.map +1 -1
  178. package/dist/modern/visualBuilder/utils/getEntryPermissions.js +2 -1
  179. package/dist/modern/visualBuilder/utils/getEntryPermissions.js.map +1 -1
  180. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.cjs +78 -0
  181. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.cjs.map +1 -0
  182. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.d.cts +18 -0
  183. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.d.ts +18 -0
  184. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.js +45 -0
  185. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.js.map +1 -0
  186. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs +4 -3
  187. package/dist/modern/visualBuilder/utils/handleIndividualFields.cjs.map +1 -1
  188. package/dist/modern/visualBuilder/utils/handleIndividualFields.js +4 -3
  189. package/dist/modern/visualBuilder/utils/handleIndividualFields.js.map +1 -1
  190. package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs +42 -13
  191. package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
  192. package/dist/modern/visualBuilder/utils/isFieldDisabled.d.cts +3 -12
  193. package/dist/modern/visualBuilder/utils/isFieldDisabled.d.ts +3 -12
  194. package/dist/modern/visualBuilder/utils/isFieldDisabled.js +42 -13
  195. package/dist/modern/visualBuilder/utils/isFieldDisabled.js.map +1 -1
  196. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +2 -0
  197. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  198. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +2 -0
  199. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +2 -0
  200. package/dist/modern/visualBuilder/utils/types/postMessage.types.js +2 -0
  201. package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  202. package/dist/modern/visualBuilder/utils/updateFocussedState.cjs +6 -4
  203. package/dist/modern/visualBuilder/utils/updateFocussedState.cjs.map +1 -1
  204. package/dist/modern/visualBuilder/utils/updateFocussedState.js +6 -4
  205. package/dist/modern/visualBuilder/utils/updateFocussedState.js.map +1 -1
  206. package/dist/modern/visualBuilder/visualBuilder.style.cjs +3 -3
  207. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  208. package/dist/modern/visualBuilder/visualBuilder.style.js +3 -3
  209. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  210. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/getWorkflowStageDetails.ts"],"sourcesContent":["import { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\n\nexport async function getWorkflowStageDetails({\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n}: {\n entryUid: string;\n contentTypeUid: string;\n locale: string;\n variantUid?: string | undefined;\n}): Promise<WorkflowStageDetails> {\n try {\n const result =\n await visualBuilderPostMessage?.send<WorkflowStageDetails>(\n VisualBuilderPostMessageEvents.GET_WORKFLOW_STAGE_DETAILS,\n {\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n }\n );\n if (result) {\n return result;\n }\n } catch (e) {\n console.debug(\n \"[Visual Builder] Error fetching workflow stage details\",\n e\n );\n }\n // allow editing when things go wrong,\n return {\n stage: {\n name: \"Unknown\",\n },\n permissions: {\n entry: {\n update: true,\n },\n },\n };\n}\n\nexport interface WorkflowStageDetails {\n stage:\n | {\n name: string;\n }\n | undefined;\n permissions: {\n entry: {\n update: boolean;\n };\n };\n}\n"],"mappings":";;;AAAA,SAAS,sCAAsC;AAC/C,OAAO,8BAA8B;AAErC,eAAsB,wBAAwB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAKkC;AAC9B,MAAI;AACA,UAAM,SACF,MAAM,0BAA0B;AAAA,MAC5B,+BAA+B;AAAA,MAC/B;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACJ,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AAAA,EACJ,SAAS,GAAG;AACR,YAAQ;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,OAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,IACA,aAAa;AAAA,MACT,OAAO;AAAA,QACH,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AACJ;","names":[]}
@@ -35,8 +35,8 @@ var import_multipleElementAddButton = require("./multipleElementAddButton.cjs");
35
35
  var import_isFieldMultiple = require("./isFieldMultiple.cjs");
36
36
  var import_handleInlineEditableField = require("./handleInlineEditableField.cjs");
37
37
  var import_pasteAsPlainText = require("./pasteAsPlainText.cjs");
38
- var import_getEntryPermissionsCached = require("./getEntryPermissionsCached.cjs");
39
38
  var import_generateToolbar = require("../generators/generateToolbar.cjs");
39
+ var import_fetchEntryPermissionsAndStageDetails = require("./fetchEntryPermissionsAndStageDetails.cjs");
40
40
  async function handleIndividualFields(eventDetails, elements) {
41
41
  const { fieldMetadata, editableElement } = eventDetails;
42
42
  const { visualBuilderContainer, lastEditedField, resizeObserver } = elements;
@@ -55,7 +55,7 @@ async function handleIndividualFields(eventDetails, elements) {
55
55
  )
56
56
  ]);
57
57
  const fieldType = (0, import_getFieldType.getFieldType)(fieldSchema);
58
- const entryAcl = await (0, import_getEntryPermissionsCached.getEntryPermissionsCached)({
58
+ const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } = await (0, import_fetchEntryPermissionsAndStageDetails.fetchEntryPermissionsAndStageDetails)({
59
59
  entryUid: entry_uid,
60
60
  contentTypeUid: content_type_uid,
61
61
  locale
@@ -63,7 +63,8 @@ async function handleIndividualFields(eventDetails, elements) {
63
63
  const { isDisabled: disabled } = (0, import_isFieldDisabled.isFieldDisabled)(
64
64
  fieldSchema,
65
65
  eventDetails,
66
- entryAcl
66
+ entryAcl,
67
+ entryWorkflowStageDetails
67
68
  );
68
69
  editableElement.setAttribute(
69
70
  import_constants.VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/handleIndividualFields.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY } from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport { getFieldData } from \"./getFieldData\";\nimport { getFieldType } from \"./getFieldType\";\nimport { handleFieldInput, handleFieldKeyDown } from \"./handleFieldMouseDown\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\nimport {\n handleAddButtonsForMultiple,\n removeAddInstanceButtons,\n} from \"./multipleElementAddButton\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { handleInlineEditableField } from \"./handleInlineEditableField\";\nimport { VisualBuilderEditContext } from \"./types/index.types\";\nimport { pasteAsPlainText } from \"./pasteAsPlainText\";\nimport { getEntryPermissionsCached } from \"./getEntryPermissionsCached\";\nimport { removeFieldToolbar } from \"../generators/generateToolbar\";\n\n/**\n * It handles all the fields based on their data type and its \"multiple\" property.\n * @param eventDetails The event details object that contain cslp and field metadata.\n * @param elements The elements object that contain the visual builder wrapper.\n */\nexport async function handleIndividualFields(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: VisualBuilderEditContext\n): Promise<void> {\n const { fieldMetadata, editableElement } = eventDetails;\n const { visualBuilderContainer, lastEditedField, resizeObserver } =\n elements;\n const {\n content_type_uid,\n entry_uid,\n locale,\n fieldPath,\n fieldPathWithIndex,\n } = fieldMetadata;\n\n const [fieldSchema, expectedFieldData] = await Promise.all([\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath),\n getFieldData(\n { content_type_uid, entry_uid, locale },\n fieldPathWithIndex\n ),\n ]);\n\n const fieldType = getFieldType(fieldSchema);\n\n const entryAcl = await getEntryPermissionsCached({\n entryUid: entry_uid,\n contentTypeUid: content_type_uid,\n locale,\n });\n const { isDisabled: disabled } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n entryAcl\n );\n\n editableElement.setAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n fieldType\n );\n\n if (isFieldMultiple(fieldSchema)) {\n if (lastEditedField !== editableElement) {\n const addButtonLabel =\n fieldSchema.data_type === \"blocks\"\n ? // ? `Add ${fieldSchema.display_name ?? \"Modular Block\"}`\n \"Add Section\"\n : undefined;\n\n handleAddButtonsForMultiple(\n eventDetails,\n {\n editableElement: eventDetails.editableElement,\n visualBuilderContainer: visualBuilderContainer,\n resizeObserver: resizeObserver,\n },\n {\n fieldSchema,\n expectedFieldData,\n disabled,\n label: addButtonLabel,\n }\n );\n }\n }\n\n if (disabled) {\n return;\n }\n handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement: editableElement as HTMLElement,\n elements,\n });\n}\n\nexport function cleanIndividualFieldResidual(elements: {\n overlayWrapper: HTMLDivElement;\n visualBuilderContainer: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}): void {\n const { overlayWrapper, visualBuilderContainer, focusedToolbar } = elements;\n\n removeAddInstanceButtons(\n {\n eventTarget: null,\n visualBuilderContainer: visualBuilderContainer,\n overlayWrapper: overlayWrapper,\n },\n true\n );\n\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (previousSelectedEditableDOM) {\n previousSelectedEditableDOM.removeAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n );\n previousSelectedEditableDOM.removeAttribute(\"contenteditable\");\n previousSelectedEditableDOM.removeEventListener(\n \"input\",\n handleFieldInput\n );\n previousSelectedEditableDOM.removeEventListener(\n \"keydown\",\n handleFieldKeyDown\n );\n\n previousSelectedEditableDOM.removeEventListener(\n \"paste\",\n pasteAsPlainText\n );\n // Note - this happens in two places, 1. hideOverlay and 2. here\n // TODO maybe see all usages of both functions and try to do it in one place\n elements.resizeObserver.unobserve(previousSelectedEditableDOM);\n }\n\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \".visual-builder__pseudo-editable-element\"\n );\n if (pseudoEditableElement) {\n elements.resizeObserver.unobserve(pseudoEditableElement);\n pseudoEditableElement.removeEventListener(\"paste\", pasteAsPlainText);\n pseudoEditableElement.remove();\n if (previousSelectedEditableDOM) {\n (previousSelectedEditableDOM as HTMLElement).style.removeProperty(\n \"visibility\"\n );\n }\n }\n\n if (focusedToolbar) {\n removeFieldToolbar(focusedToolbar);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAE9B,uBAAwD;AACxD,4BAA+B;AAC/B,0BAA6B;AAC7B,0BAA6B;AAC7B,kCAAqD;AACrD,6BAAgC;AAChC,sCAGO;AACP,6BAAgC;AAChC,uCAA0C;AAE1C,8BAAiC;AACjC,uCAA0C;AAC1C,6BAAmC;AAOnC,eAAsB,uBAClB,cACA,UACa;AACb,QAAM,EAAE,eAAe,gBAAgB,IAAI;AAC3C,QAAM,EAAE,wBAAwB,iBAAiB,eAAe,IAC5D;AACJ,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI;AAEJ,QAAM,CAAC,aAAa,iBAAiB,IAAI,MAAM,QAAQ,IAAI;AAAA,IACvD,qCAAe,eAAe,kBAAkB,SAAS;AAAA,QACzD;AAAA,MACI,EAAE,kBAAkB,WAAW,OAAO;AAAA,MACtC;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,gBAAY,kCAAa,WAAW;AAE1C,QAAM,WAAW,UAAM,4DAA0B;AAAA,IAC7C,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB;AAAA,EACJ,CAAC;AACD,QAAM,EAAE,YAAY,SAAS,QAAI;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,kBAAgB;AAAA,IACZ;AAAA,IACA;AAAA,EACJ;AAEA,UAAI,wCAAgB,WAAW,GAAG;AAC9B,QAAI,oBAAoB,iBAAiB;AACrC,YAAM,iBACF,YAAY,cAAc;AAAA;AAAA,QAEpB;AAAA,UACA;AAEV;AAAA,QACI;AAAA,QACA;AAAA,UACI,iBAAiB,aAAa;AAAA,UAC9B;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,UAAU;AACV;AAAA,EACJ;AACA,kEAA0B;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AAEO,SAAS,6BAA6B,UAKpC;AACL,QAAM,EAAE,gBAAgB,wBAAwB,eAAe,IAAI;AAEnE;AAAA,IACI;AAAA,MACI,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,8BACF,uBAAc,yBAAyB,MAClC;AACT,MAAI,6BAA6B;AAC7B,gCAA4B;AAAA,MACxB;AAAA,IACJ;AACA,gCAA4B,gBAAgB,iBAAiB;AAC7D,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AACA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAEA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAGA,aAAS,eAAe,UAAU,2BAA2B;AAAA,EACjE;AAEA,QAAM,wBAAwB,wBAAwB;AAAA,IAClD;AAAA,EACJ;AACA,MAAI,uBAAuB;AACvB,aAAS,eAAe,UAAU,qBAAqB;AACvD,0BAAsB,oBAAoB,SAAS,wCAAgB;AACnE,0BAAsB,OAAO;AAC7B,QAAI,6BAA6B;AAC7B,MAAC,4BAA4C,MAAM;AAAA,QAC/C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,gBAAgB;AAChB,mDAAmB,cAAc;AAAA,EACrC;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/handleIndividualFields.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY } from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport { getFieldData } from \"./getFieldData\";\nimport { getFieldType } from \"./getFieldType\";\nimport { handleFieldInput, handleFieldKeyDown } from \"./handleFieldMouseDown\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\nimport {\n handleAddButtonsForMultiple,\n removeAddInstanceButtons,\n} from \"./multipleElementAddButton\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { handleInlineEditableField } from \"./handleInlineEditableField\";\nimport { VisualBuilderEditContext } from \"./types/index.types\";\nimport { pasteAsPlainText } from \"./pasteAsPlainText\";\nimport { removeFieldToolbar } from \"../generators/generateToolbar\";\nimport { fetchEntryPermissionsAndStageDetails } from \"./fetchEntryPermissionsAndStageDetails\";\n\n/**\n * It handles all the fields based on their data type and its \"multiple\" property.\n * @param eventDetails The event details object that contain cslp and field metadata.\n * @param elements The elements object that contain the visual builder wrapper.\n */\nexport async function handleIndividualFields(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: VisualBuilderEditContext\n): Promise<void> {\n const { fieldMetadata, editableElement } = eventDetails;\n const { visualBuilderContainer, lastEditedField, resizeObserver } =\n elements;\n const {\n content_type_uid,\n entry_uid,\n locale,\n fieldPath,\n fieldPathWithIndex,\n } = fieldMetadata;\n\n const [fieldSchema, expectedFieldData] = await Promise.all([\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath),\n getFieldData(\n { content_type_uid, entry_uid, locale },\n fieldPathWithIndex\n ),\n ]);\n\n const fieldType = getFieldType(fieldSchema);\n\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: entry_uid,\n contentTypeUid: content_type_uid,\n locale,\n });\n const { isDisabled: disabled } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n entryAcl,\n entryWorkflowStageDetails\n );\n\n editableElement.setAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n fieldType\n );\n\n if (isFieldMultiple(fieldSchema)) {\n if (lastEditedField !== editableElement) {\n const addButtonLabel =\n fieldSchema.data_type === \"blocks\"\n ? // ? `Add ${fieldSchema.display_name ?? \"Modular Block\"}`\n \"Add Section\"\n : undefined;\n\n handleAddButtonsForMultiple(\n eventDetails,\n {\n editableElement: eventDetails.editableElement,\n visualBuilderContainer: visualBuilderContainer,\n resizeObserver: resizeObserver,\n },\n {\n fieldSchema,\n expectedFieldData,\n disabled,\n label: addButtonLabel,\n }\n );\n }\n }\n\n if (disabled) {\n return;\n }\n handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement: editableElement as HTMLElement,\n elements,\n });\n}\n\nexport function cleanIndividualFieldResidual(elements: {\n overlayWrapper: HTMLDivElement;\n visualBuilderContainer: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}): void {\n const { overlayWrapper, visualBuilderContainer, focusedToolbar } = elements;\n\n removeAddInstanceButtons(\n {\n eventTarget: null,\n visualBuilderContainer: visualBuilderContainer,\n overlayWrapper: overlayWrapper,\n },\n true\n );\n\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (previousSelectedEditableDOM) {\n previousSelectedEditableDOM.removeAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n );\n previousSelectedEditableDOM.removeAttribute(\"contenteditable\");\n previousSelectedEditableDOM.removeEventListener(\n \"input\",\n handleFieldInput\n );\n previousSelectedEditableDOM.removeEventListener(\n \"keydown\",\n handleFieldKeyDown\n );\n\n previousSelectedEditableDOM.removeEventListener(\n \"paste\",\n pasteAsPlainText\n );\n // Note - this happens in two places, 1. hideOverlay and 2. here\n // TODO maybe see all usages of both functions and try to do it in one place\n elements.resizeObserver.unobserve(previousSelectedEditableDOM);\n }\n\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \".visual-builder__pseudo-editable-element\"\n );\n if (pseudoEditableElement) {\n elements.resizeObserver.unobserve(pseudoEditableElement);\n pseudoEditableElement.removeEventListener(\"paste\", pasteAsPlainText);\n pseudoEditableElement.remove();\n if (previousSelectedEditableDOM) {\n (previousSelectedEditableDOM as HTMLElement).style.removeProperty(\n \"visibility\"\n );\n }\n }\n\n if (focusedToolbar) {\n removeFieldToolbar(focusedToolbar);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA8B;AAE9B,uBAAwD;AACxD,4BAA+B;AAC/B,0BAA6B;AAC7B,0BAA6B;AAC7B,kCAAqD;AACrD,6BAAgC;AAChC,sCAGO;AACP,6BAAgC;AAChC,uCAA0C;AAE1C,8BAAiC;AACjC,6BAAmC;AACnC,kDAAqD;AAOrD,eAAsB,uBAClB,cACA,UACa;AACb,QAAM,EAAE,eAAe,gBAAgB,IAAI;AAC3C,QAAM,EAAE,wBAAwB,iBAAiB,eAAe,IAC5D;AACJ,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI;AAEJ,QAAM,CAAC,aAAa,iBAAiB,IAAI,MAAM,QAAQ,IAAI;AAAA,IACvD,qCAAe,eAAe,kBAAkB,SAAS;AAAA,QACzD;AAAA,MACI,EAAE,kBAAkB,WAAW,OAAO;AAAA,MACtC;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,gBAAY,kCAAa,WAAW;AAE1C,QAAM,EAAE,KAAK,UAAU,eAAe,0BAA0B,IAC5D,UAAM,kFAAqC;AAAA,IACvC,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB;AAAA,EACJ,CAAC;AACL,QAAM,EAAE,YAAY,SAAS,QAAI;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,kBAAgB;AAAA,IACZ;AAAA,IACA;AAAA,EACJ;AAEA,UAAI,wCAAgB,WAAW,GAAG;AAC9B,QAAI,oBAAoB,iBAAiB;AACrC,YAAM,iBACF,YAAY,cAAc;AAAA;AAAA,QAEpB;AAAA,UACA;AAEV;AAAA,QACI;AAAA,QACA;AAAA,UACI,iBAAiB,aAAa;AAAA,UAC9B;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,UAAU;AACV;AAAA,EACJ;AACA,kEAA0B;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AAEO,SAAS,6BAA6B,UAKpC;AACL,QAAM,EAAE,gBAAgB,wBAAwB,eAAe,IAAI;AAEnE;AAAA,IACI;AAAA,MACI,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,8BACF,uBAAc,yBAAyB,MAClC;AACT,MAAI,6BAA6B;AAC7B,gCAA4B;AAAA,MACxB;AAAA,IACJ;AACA,gCAA4B,gBAAgB,iBAAiB;AAC7D,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AACA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAEA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAGA,aAAS,eAAe,UAAU,2BAA2B;AAAA,EACjE;AAEA,QAAM,wBAAwB,wBAAwB;AAAA,IAClD;AAAA,EACJ;AACA,MAAI,uBAAuB;AACvB,aAAS,eAAe,UAAU,qBAAqB;AACvD,0BAAsB,oBAAoB,SAAS,wCAAgB;AACnE,0BAAsB,OAAO;AAC7B,QAAI,6BAA6B;AAC7B,MAAC,4BAA4C,MAAM;AAAA,QAC/C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,gBAAgB;AAChB,mDAAmB,cAAc;AAAA,EACrC;AACJ;","names":[]}
@@ -15,8 +15,8 @@ import {
15
15
  import { isFieldMultiple } from "./isFieldMultiple.js";
16
16
  import { handleInlineEditableField } from "./handleInlineEditableField.js";
17
17
  import { pasteAsPlainText } from "./pasteAsPlainText.js";
18
- import { getEntryPermissionsCached } from "./getEntryPermissionsCached.js";
19
18
  import { removeFieldToolbar } from "../generators/generateToolbar.js";
19
+ import { fetchEntryPermissionsAndStageDetails } from "./fetchEntryPermissionsAndStageDetails.js";
20
20
  async function handleIndividualFields(eventDetails, elements) {
21
21
  const { fieldMetadata, editableElement } = eventDetails;
22
22
  const { visualBuilderContainer, lastEditedField, resizeObserver } = elements;
@@ -35,7 +35,7 @@ async function handleIndividualFields(eventDetails, elements) {
35
35
  )
36
36
  ]);
37
37
  const fieldType = getFieldType(fieldSchema);
38
- const entryAcl = await getEntryPermissionsCached({
38
+ const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } = await fetchEntryPermissionsAndStageDetails({
39
39
  entryUid: entry_uid,
40
40
  contentTypeUid: content_type_uid,
41
41
  locale
@@ -43,7 +43,8 @@ async function handleIndividualFields(eventDetails, elements) {
43
43
  const { isDisabled: disabled } = isFieldDisabled(
44
44
  fieldSchema,
45
45
  eventDetails,
46
- entryAcl
46
+ entryAcl,
47
+ entryWorkflowStageDetails
47
48
  );
48
49
  editableElement.setAttribute(
49
50
  VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/handleIndividualFields.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY } from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport { getFieldData } from \"./getFieldData\";\nimport { getFieldType } from \"./getFieldType\";\nimport { handleFieldInput, handleFieldKeyDown } from \"./handleFieldMouseDown\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\nimport {\n handleAddButtonsForMultiple,\n removeAddInstanceButtons,\n} from \"./multipleElementAddButton\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { handleInlineEditableField } from \"./handleInlineEditableField\";\nimport { VisualBuilderEditContext } from \"./types/index.types\";\nimport { pasteAsPlainText } from \"./pasteAsPlainText\";\nimport { getEntryPermissionsCached } from \"./getEntryPermissionsCached\";\nimport { removeFieldToolbar } from \"../generators/generateToolbar\";\n\n/**\n * It handles all the fields based on their data type and its \"multiple\" property.\n * @param eventDetails The event details object that contain cslp and field metadata.\n * @param elements The elements object that contain the visual builder wrapper.\n */\nexport async function handleIndividualFields(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: VisualBuilderEditContext\n): Promise<void> {\n const { fieldMetadata, editableElement } = eventDetails;\n const { visualBuilderContainer, lastEditedField, resizeObserver } =\n elements;\n const {\n content_type_uid,\n entry_uid,\n locale,\n fieldPath,\n fieldPathWithIndex,\n } = fieldMetadata;\n\n const [fieldSchema, expectedFieldData] = await Promise.all([\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath),\n getFieldData(\n { content_type_uid, entry_uid, locale },\n fieldPathWithIndex\n ),\n ]);\n\n const fieldType = getFieldType(fieldSchema);\n\n const entryAcl = await getEntryPermissionsCached({\n entryUid: entry_uid,\n contentTypeUid: content_type_uid,\n locale,\n });\n const { isDisabled: disabled } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n entryAcl\n );\n\n editableElement.setAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n fieldType\n );\n\n if (isFieldMultiple(fieldSchema)) {\n if (lastEditedField !== editableElement) {\n const addButtonLabel =\n fieldSchema.data_type === \"blocks\"\n ? // ? `Add ${fieldSchema.display_name ?? \"Modular Block\"}`\n \"Add Section\"\n : undefined;\n\n handleAddButtonsForMultiple(\n eventDetails,\n {\n editableElement: eventDetails.editableElement,\n visualBuilderContainer: visualBuilderContainer,\n resizeObserver: resizeObserver,\n },\n {\n fieldSchema,\n expectedFieldData,\n disabled,\n label: addButtonLabel,\n }\n );\n }\n }\n\n if (disabled) {\n return;\n }\n handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement: editableElement as HTMLElement,\n elements,\n });\n}\n\nexport function cleanIndividualFieldResidual(elements: {\n overlayWrapper: HTMLDivElement;\n visualBuilderContainer: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}): void {\n const { overlayWrapper, visualBuilderContainer, focusedToolbar } = elements;\n\n removeAddInstanceButtons(\n {\n eventTarget: null,\n visualBuilderContainer: visualBuilderContainer,\n overlayWrapper: overlayWrapper,\n },\n true\n );\n\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (previousSelectedEditableDOM) {\n previousSelectedEditableDOM.removeAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n );\n previousSelectedEditableDOM.removeAttribute(\"contenteditable\");\n previousSelectedEditableDOM.removeEventListener(\n \"input\",\n handleFieldInput\n );\n previousSelectedEditableDOM.removeEventListener(\n \"keydown\",\n handleFieldKeyDown\n );\n\n previousSelectedEditableDOM.removeEventListener(\n \"paste\",\n pasteAsPlainText\n );\n // Note - this happens in two places, 1. hideOverlay and 2. here\n // TODO maybe see all usages of both functions and try to do it in one place\n elements.resizeObserver.unobserve(previousSelectedEditableDOM);\n }\n\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \".visual-builder__pseudo-editable-element\"\n );\n if (pseudoEditableElement) {\n elements.resizeObserver.unobserve(pseudoEditableElement);\n pseudoEditableElement.removeEventListener(\"paste\", pasteAsPlainText);\n pseudoEditableElement.remove();\n if (previousSelectedEditableDOM) {\n (previousSelectedEditableDOM as HTMLElement).style.removeProperty(\n \"visibility\"\n );\n }\n }\n\n if (focusedToolbar) {\n removeFieldToolbar(focusedToolbar);\n }\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAE9B,SAAS,+CAA+C;AACxD,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB,0BAA0B;AACrD,SAAS,uBAAuB;AAChC;AAAA,EACI;AAAA,EACA;AAAA,OACG;AACP,SAAS,uBAAuB;AAChC,SAAS,iCAAiC;AAE1C,SAAS,wBAAwB;AACjC,SAAS,iCAAiC;AAC1C,SAAS,0BAA0B;AAOnC,eAAsB,uBAClB,cACA,UACa;AACb,QAAM,EAAE,eAAe,gBAAgB,IAAI;AAC3C,QAAM,EAAE,wBAAwB,iBAAiB,eAAe,IAC5D;AACJ,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI;AAEJ,QAAM,CAAC,aAAa,iBAAiB,IAAI,MAAM,QAAQ,IAAI;AAAA,IACvD,eAAe,eAAe,kBAAkB,SAAS;AAAA,IACzD;AAAA,MACI,EAAE,kBAAkB,WAAW,OAAO;AAAA,MACtC;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,YAAY,aAAa,WAAW;AAE1C,QAAM,WAAW,MAAM,0BAA0B;AAAA,IAC7C,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB;AAAA,EACJ,CAAC;AACD,QAAM,EAAE,YAAY,SAAS,IAAI;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,kBAAgB;AAAA,IACZ;AAAA,IACA;AAAA,EACJ;AAEA,MAAI,gBAAgB,WAAW,GAAG;AAC9B,QAAI,oBAAoB,iBAAiB;AACrC,YAAM,iBACF,YAAY,cAAc;AAAA;AAAA,QAEpB;AAAA,UACA;AAEV;AAAA,QACI;AAAA,QACA;AAAA,UACI,iBAAiB,aAAa;AAAA,UAC9B;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,UAAU;AACV;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AAEO,SAAS,6BAA6B,UAKpC;AACL,QAAM,EAAE,gBAAgB,wBAAwB,eAAe,IAAI;AAEnE;AAAA,IACI;AAAA,MACI,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,8BACF,cAAc,yBAAyB,MAClC;AACT,MAAI,6BAA6B;AAC7B,gCAA4B;AAAA,MACxB;AAAA,IACJ;AACA,gCAA4B,gBAAgB,iBAAiB;AAC7D,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AACA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAEA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAGA,aAAS,eAAe,UAAU,2BAA2B;AAAA,EACjE;AAEA,QAAM,wBAAwB,wBAAwB;AAAA,IAClD;AAAA,EACJ;AACA,MAAI,uBAAuB;AACvB,aAAS,eAAe,UAAU,qBAAqB;AACvD,0BAAsB,oBAAoB,SAAS,gBAAgB;AACnE,0BAAsB,OAAO;AAC7B,QAAI,6BAA6B;AAC7B,MAAC,4BAA4C,MAAM;AAAA,QAC/C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,gBAAgB;AAChB,uBAAmB,cAAc;AAAA,EACrC;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/handleIndividualFields.ts"],"sourcesContent":["import { VisualBuilder } from \"..\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY } from \"./constants\";\nimport { FieldSchemaMap } from \"./fieldSchemaMap\";\nimport { getFieldData } from \"./getFieldData\";\nimport { getFieldType } from \"./getFieldType\";\nimport { handleFieldInput, handleFieldKeyDown } from \"./handleFieldMouseDown\";\nimport { isFieldDisabled } from \"./isFieldDisabled\";\nimport {\n handleAddButtonsForMultiple,\n removeAddInstanceButtons,\n} from \"./multipleElementAddButton\";\nimport { isFieldMultiple } from \"./isFieldMultiple\";\nimport { handleInlineEditableField } from \"./handleInlineEditableField\";\nimport { VisualBuilderEditContext } from \"./types/index.types\";\nimport { pasteAsPlainText } from \"./pasteAsPlainText\";\nimport { removeFieldToolbar } from \"../generators/generateToolbar\";\nimport { fetchEntryPermissionsAndStageDetails } from \"./fetchEntryPermissionsAndStageDetails\";\n\n/**\n * It handles all the fields based on their data type and its \"multiple\" property.\n * @param eventDetails The event details object that contain cslp and field metadata.\n * @param elements The elements object that contain the visual builder wrapper.\n */\nexport async function handleIndividualFields(\n eventDetails: VisualBuilderCslpEventDetails,\n elements: VisualBuilderEditContext\n): Promise<void> {\n const { fieldMetadata, editableElement } = eventDetails;\n const { visualBuilderContainer, lastEditedField, resizeObserver } =\n elements;\n const {\n content_type_uid,\n entry_uid,\n locale,\n fieldPath,\n fieldPathWithIndex,\n } = fieldMetadata;\n\n const [fieldSchema, expectedFieldData] = await Promise.all([\n FieldSchemaMap.getFieldSchema(content_type_uid, fieldPath),\n getFieldData(\n { content_type_uid, entry_uid, locale },\n fieldPathWithIndex\n ),\n ]);\n\n const fieldType = getFieldType(fieldSchema);\n\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: entry_uid,\n contentTypeUid: content_type_uid,\n locale,\n });\n const { isDisabled: disabled } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n entryAcl,\n entryWorkflowStageDetails\n );\n\n editableElement.setAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY,\n fieldType\n );\n\n if (isFieldMultiple(fieldSchema)) {\n if (lastEditedField !== editableElement) {\n const addButtonLabel =\n fieldSchema.data_type === \"blocks\"\n ? // ? `Add ${fieldSchema.display_name ?? \"Modular Block\"}`\n \"Add Section\"\n : undefined;\n\n handleAddButtonsForMultiple(\n eventDetails,\n {\n editableElement: eventDetails.editableElement,\n visualBuilderContainer: visualBuilderContainer,\n resizeObserver: resizeObserver,\n },\n {\n fieldSchema,\n expectedFieldData,\n disabled,\n label: addButtonLabel,\n }\n );\n }\n }\n\n if (disabled) {\n return;\n }\n handleInlineEditableField({\n fieldType,\n fieldSchema,\n fieldMetadata,\n expectedFieldData,\n editableElement: editableElement as HTMLElement,\n elements,\n });\n}\n\nexport function cleanIndividualFieldResidual(elements: {\n overlayWrapper: HTMLDivElement;\n visualBuilderContainer: HTMLDivElement | null;\n focusedToolbar: HTMLDivElement | null;\n resizeObserver: ResizeObserver;\n}): void {\n const { overlayWrapper, visualBuilderContainer, focusedToolbar } = elements;\n\n removeAddInstanceButtons(\n {\n eventTarget: null,\n visualBuilderContainer: visualBuilderContainer,\n overlayWrapper: overlayWrapper,\n },\n true\n );\n\n const previousSelectedEditableDOM =\n VisualBuilder.VisualBuilderGlobalState.value\n .previousSelectedEditableDOM;\n if (previousSelectedEditableDOM) {\n previousSelectedEditableDOM.removeAttribute(\n VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY\n );\n previousSelectedEditableDOM.removeAttribute(\"contenteditable\");\n previousSelectedEditableDOM.removeEventListener(\n \"input\",\n handleFieldInput\n );\n previousSelectedEditableDOM.removeEventListener(\n \"keydown\",\n handleFieldKeyDown\n );\n\n previousSelectedEditableDOM.removeEventListener(\n \"paste\",\n pasteAsPlainText\n );\n // Note - this happens in two places, 1. hideOverlay and 2. here\n // TODO maybe see all usages of both functions and try to do it in one place\n elements.resizeObserver.unobserve(previousSelectedEditableDOM);\n }\n\n const pseudoEditableElement = visualBuilderContainer?.querySelector(\n \".visual-builder__pseudo-editable-element\"\n );\n if (pseudoEditableElement) {\n elements.resizeObserver.unobserve(pseudoEditableElement);\n pseudoEditableElement.removeEventListener(\"paste\", pasteAsPlainText);\n pseudoEditableElement.remove();\n if (previousSelectedEditableDOM) {\n (previousSelectedEditableDOM as HTMLElement).style.removeProperty(\n \"visibility\"\n );\n }\n }\n\n if (focusedToolbar) {\n removeFieldToolbar(focusedToolbar);\n }\n}\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAE9B,SAAS,+CAA+C;AACxD,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB,0BAA0B;AACrD,SAAS,uBAAuB;AAChC;AAAA,EACI;AAAA,EACA;AAAA,OACG;AACP,SAAS,uBAAuB;AAChC,SAAS,iCAAiC;AAE1C,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,4CAA4C;AAOrD,eAAsB,uBAClB,cACA,UACa;AACb,QAAM,EAAE,eAAe,gBAAgB,IAAI;AAC3C,QAAM,EAAE,wBAAwB,iBAAiB,eAAe,IAC5D;AACJ,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI;AAEJ,QAAM,CAAC,aAAa,iBAAiB,IAAI,MAAM,QAAQ,IAAI;AAAA,IACvD,eAAe,eAAe,kBAAkB,SAAS;AAAA,IACzD;AAAA,MACI,EAAE,kBAAkB,WAAW,OAAO;AAAA,MACtC;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,QAAM,YAAY,aAAa,WAAW;AAE1C,QAAM,EAAE,KAAK,UAAU,eAAe,0BAA0B,IAC5D,MAAM,qCAAqC;AAAA,IACvC,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB;AAAA,EACJ,CAAC;AACL,QAAM,EAAE,YAAY,SAAS,IAAI;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,kBAAgB;AAAA,IACZ;AAAA,IACA;AAAA,EACJ;AAEA,MAAI,gBAAgB,WAAW,GAAG;AAC9B,QAAI,oBAAoB,iBAAiB;AACrC,YAAM,iBACF,YAAY,cAAc;AAAA;AAAA,QAEpB;AAAA,UACA;AAEV;AAAA,QACI;AAAA,QACA;AAAA,UACI,iBAAiB,aAAa;AAAA,UAC9B;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,UAAU;AACV;AAAA,EACJ;AACA,4BAA0B;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AAEO,SAAS,6BAA6B,UAKpC;AACL,QAAM,EAAE,gBAAgB,wBAAwB,eAAe,IAAI;AAEnE;AAAA,IACI;AAAA,MACI,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,8BACF,cAAc,yBAAyB,MAClC;AACT,MAAI,6BAA6B;AAC7B,gCAA4B;AAAA,MACxB;AAAA,IACJ;AACA,gCAA4B,gBAAgB,iBAAiB;AAC7D,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AACA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAEA,gCAA4B;AAAA,MACxB;AAAA,MACA;AAAA,IACJ;AAGA,aAAS,eAAe,UAAU,2BAA2B;AAAA,EACjE;AAEA,QAAM,wBAAwB,wBAAwB;AAAA,IAClD;AAAA,EACJ;AACA,MAAI,uBAAuB;AACvB,aAAS,eAAe,UAAU,qBAAqB;AACvD,0BAAsB,oBAAoB,SAAS,gBAAgB;AACnE,0BAAsB,OAAO;AAC7B,QAAI,6BAA6B;AAC7B,MAAC,4BAA4C,MAAM;AAAA,QAC/C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,gBAAgB;AAChB,uBAAmB,cAAc;AAAA,EACrC;AACJ;","names":[]}
@@ -35,24 +35,48 @@ __export(isFieldDisabled_exports, {
35
35
  module.exports = __toCommonJS(isFieldDisabled_exports);
36
36
  var import_configManager = __toESM(require("../../configManager/configManager.cjs"), 1);
37
37
  var import__ = require("../index.cjs");
38
- var getDisableReason = (flags) => {
39
- if (flags.updateRestrictDueToEntryUpdateRestriction) {
40
- return "You do not have permission to edit this entry" /* EntryUpdateRestricted */;
41
- }
42
- if (flags.updateRestrictDueToRole) return "You have only read access to this field" /* ReadOnly */;
38
+ var DisableReason = {
39
+ ReadOnly: "You have only read access to this field",
40
+ LocalizedEntry: "Editing this field is restricted in localized entries",
41
+ UnlinkedVariant: "This field is not editable as it is not linked to the selected variant",
42
+ AudienceMode: "Open an Experience from Audience widget to start editing",
43
+ DisabledVariant: "This field is not editable as it doesn't match the selected variant",
44
+ UnlocalizedVariant: "This field is not editable as it is not localized",
45
+ None: "",
46
+ EntryUpdateRestricted: "You do not have permission to edit this entry",
47
+ WorkflowStagePermission: ({ stageName }) => `You do not have Edit access to this entry on the '${stageName}' workflow stage`,
48
+ EntryUpdateRestrictedRoleAndWorkflowStage: ({
49
+ stageName
50
+ }) => `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`
51
+ };
52
+ var getDisableReason = (flags, params) => {
53
+ if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;
43
54
  if (flags.updateRestrictDueToNonLocalizableFields)
44
- return "Editing this field is restricted in localized entries" /* LocalizedEntry */;
55
+ return DisableReason.LocalizedEntry;
45
56
  if (flags.updateRestrictDueToUnlocalizedVariant)
46
- return "This field is not editable as it is not localized" /* UnlocalizedVariant */;
57
+ return DisableReason.UnlocalizedVariant;
47
58
  if (flags.updateRestrictDueToUnlinkVariant)
48
- return "This field is not editable as it is not linked to the selected variant" /* UnlinkedVariant */;
59
+ return DisableReason.UnlinkedVariant;
49
60
  if (flags.updateRestrictDueToAudienceMode)
50
- return "Open an Experience from Audience widget to start editing" /* AudienceMode */;
61
+ return DisableReason.AudienceMode;
51
62
  if (flags.updateRestrictDueToDisabledVariant)
52
- return "This field is not editable as it doesn't match the selected variant" /* DisabledVariant */;
53
- return "" /* None */;
63
+ return DisableReason.DisabledVariant;
64
+ if (flags.updateRestrictDueToEntryUpdateRestriction && flags.updateRestrictDueToWorkflowStagePermission) {
65
+ return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({
66
+ stageName: params?.stageName ? params.stageName : "Unknown"
67
+ });
68
+ }
69
+ if (flags.updateRestrictDueToEntryUpdateRestriction) {
70
+ return DisableReason.EntryUpdateRestricted;
71
+ }
72
+ if (flags.updateRestrictDueToWorkflowStagePermission) {
73
+ return DisableReason.WorkflowStagePermission({
74
+ stageName: params?.stageName ? params.stageName : "Unknown"
75
+ });
76
+ }
77
+ return DisableReason.None;
54
78
  };
55
- var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
79
+ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions, entryWorkflowStageDetails) => {
56
80
  const { editableElement, fieldMetadata } = eventFieldDetails;
57
81
  const masterLocale = import_configManager.default.get().stackDetails.masterLocale || "en-us";
58
82
  const { locale: cmsLocale, variant } = import__.VisualBuilder.VisualBuilderGlobalState.value;
@@ -75,6 +99,9 @@ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
75
99
  if (entryPermissions && !entryPermissions.update) {
76
100
  flags.updateRestrictDueToEntryUpdateRestriction = true;
77
101
  }
102
+ if (entryWorkflowStageDetails && !entryWorkflowStageDetails.permissions.entry.update) {
103
+ flags.updateRestrictDueToWorkflowStagePermission = true;
104
+ }
78
105
  if (import__.VisualBuilder.VisualBuilderGlobalState.value.audienceMode && !editableElement.classList.contains("visual-builder__variant-field") && !editableElement.classList.contains("visual-builder__base-field")) {
79
106
  if (editableElement.classList.contains(
80
107
  "visual-builder__disabled-variant-field"
@@ -85,7 +112,9 @@ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
85
112
  }
86
113
  }
87
114
  const isDisabled = Object.values(flags).some(Boolean);
88
- const reason = getDisableReason(flags);
115
+ const reason = getDisableReason(flags, {
116
+ stageName: entryWorkflowStageDetails?.stage?.name
117
+ });
89
118
  return { isDisabled, reason };
90
119
  };
91
120
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\n\nenum DisableReason {\n ReadOnly = \"You have only read access to this field\",\n LocalizedEntry = \"Editing this field is restricted in localized entries\",\n UnlinkedVariant = \"This field is not editable as it is not linked to the selected variant\",\n AudienceMode = \"Open an Experience from Audience widget to start editing\",\n DisabledVariant = \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant = \"This field is not editable as it is not localized\",\n None = \"\",\n EntryUpdateRestricted = \"You do not have permission to edit this entry\",\n}\n\ninterface FieldDisableState {\n isDisabled: boolean;\n reason: DisableReason;\n}\n\nconst getDisableReason = (flags: Record<string, boolean>): DisableReason => {\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant)\n return DisableReason.UnlinkedVariant;\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n entryPermissions?: EntryPermissions\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n const reason = getDisableReason(flags);\n\n return { isDisabled, reason };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,2BAAmB;AAEnB,eAA8B;AAoB9B,IAAM,mBAAmB,CAAC,UAAkD;AACxE,MAAI,MAAM,2CAA2C;AACjD,WAAO;AAAA,EACX;AACA,MAAI,MAAM,wBAAyB,QAAO;AAC1C,MAAI,MAAM;AACN,WAAO;AACX,MAAI,MAAM;AACN,WAAO;AACX,MAAI,MAAM;AACN,WAAO;AACX,MAAI,MAAM;AACN,WAAO;AACX,MAAI,MAAM;AACN,WAAO;AACX,SAAO;AACX;AAEO,IAAM,kBAAkB,CAC3B,gBACA,mBACA,qBACoB;AACpB,QAAM,EAAE,iBAAiB,cAAc,IAAI;AAC3C,QAAM,eAAe,qBAAAA,QAAO,IAAI,EAAE,aAAa,gBAAgB;AAC/D,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAC/B,uBAAc,yBAAyB;AAE3C,QAAM,QAAiC;AAAA,IACnC,yBAAyB;AAAA,MACrB,gBAAgB,gBAAgB;AAAA,IACpC;AAAA,IACA,kCAAkC;AAAA,MAC9B,gBAAgB,gBAAgB;AAAA,IACpC;AAAA,IACA,uCAAuC;AAAA,MACnC,WAAW,cAAc,WAAW;AAAA,IACxC;AAAA,IACA,yCAAyC;AAAA,MACrC,gBAAgB,mBACZ,iBAAiB,cAAc;AAAA,IACvC;AAAA,IACA,iCAAiC;AAAA,IACjC,oCAAoC;AAAA,EACxC;AAEA,MAAI,oBAAoB,CAAC,iBAAiB,QAAQ;AAC9C,UAAM,4CAA4C;AAAA,EACtD;AAEA,MACI,uBAAc,yBAAyB,MAAM,gBAC7C,CAAC,gBAAgB,UAAU,SAAS,+BAA+B,KACnE,CAAC,gBAAgB,UAAU,SAAS,4BAA4B,GAClE;AACE,QACI,gBAAgB,UAAU;AAAA,MACtB;AAAA,IACJ,GACF;AACE,YAAM,qCAAqC;AAAA,IAC/C,OAAO;AACH,YAAM,kCAAkC;AAAA,IAC5C;AAAA,EACJ;AAEA,QAAM,aAAa,OAAO,OAAO,KAAK,EAAE,KAAK,OAAO;AACpD,QAAM,SAAS,iBAAiB,KAAK;AAErC,SAAO,EAAE,YAAY,OAAO;AAChC;","names":["Config"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\nimport { WorkflowStageDetails } from \"./getWorkflowStageDetails\";\n\nconst DisableReason = {\n ReadOnly: \"You have only read access to this field\",\n LocalizedEntry: \"Editing this field is restricted in localized entries\",\n UnlinkedVariant:\n \"This field is not editable as it is not linked to the selected variant\",\n AudienceMode: \"Open an Experience from Audience widget to start editing\",\n DisabledVariant:\n \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant: \"This field is not editable as it is not localized\",\n None: \"\",\n EntryUpdateRestricted: \"You do not have permission to edit this entry\",\n WorkflowStagePermission: ({ stageName }: { stageName: string }) =>\n `You do not have Edit access to this entry on the '${stageName}' workflow stage`,\n EntryUpdateRestrictedRoleAndWorkflowStage: ({\n stageName,\n }: {\n stageName: string;\n }) =>\n `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,\n} as const;\n\ninterface FieldDisableState {\n isDisabled: boolean;\n reason: string;\n}\n\nconst getDisableReason = (\n flags: Record<string, boolean>,\n params?: Record<string, any>\n) => {\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant)\n return DisableReason.UnlinkedVariant;\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n if (\n flags.updateRestrictDueToEntryUpdateRestriction &&\n flags.updateRestrictDueToWorkflowStagePermission\n ) {\n return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToWorkflowStagePermission) {\n return DisableReason.WorkflowStagePermission({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n entryPermissions?: EntryPermissions,\n entryWorkflowStageDetails?: WorkflowStageDetails\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n entryWorkflowStageDetails &&\n !entryWorkflowStageDetails.permissions.entry.update\n ) {\n flags.updateRestrictDueToWorkflowStagePermission = true;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n const reason = getDisableReason(flags, {\n stageName: entryWorkflowStageDetails?.stage?.name,\n });\n\n return { isDisabled, reason };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAmB;AAEnB,eAA8B;AAK9B,IAAM,gBAAgB;AAAA,EAClB,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,iBACI;AAAA,EACJ,cAAc;AAAA,EACd,iBACI;AAAA,EACJ,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,uBAAuB;AAAA,EACvB,yBAAyB,CAAC,EAAE,UAAU,MAClC,qDAAqD,SAAS;AAAA,EAClE,2CAA2C,CAAC;AAAA,IACxC;AAAA,EACJ,MAGI,gEAAgE,SAAS;AACjF;AAOA,IAAM,mBAAmB,CACrB,OACA,WACC;AACD,MAAI,MAAM,wBAAyB,QAAO,cAAc;AACxD,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MACI,MAAM,6CACN,MAAM,4CACR;AACE,WAAO,cAAc,0CAA0C;AAAA,MAC3D,WAAW,QAAQ,YAAY,OAAO,YAAY;AAAA,IACtD,CAAC;AAAA,EACL;AACA,MAAI,MAAM,2CAA2C;AACjD,WAAO,cAAc;AAAA,EACzB;AACA,MAAI,MAAM,4CAA4C;AAClD,WAAO,cAAc,wBAAwB;AAAA,MACzC,WAAW,QAAQ,YAAY,OAAO,YAAY;AAAA,IACtD,CAAC;AAAA,EACL;AACA,SAAO,cAAc;AACzB;AAEO,IAAM,kBAAkB,CAC3B,gBACA,mBACA,kBACA,8BACoB;AACpB,QAAM,EAAE,iBAAiB,cAAc,IAAI;AAC3C,QAAM,eAAe,qBAAAA,QAAO,IAAI,EAAE,aAAa,gBAAgB;AAC/D,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAC/B,uBAAc,yBAAyB;AAE3C,QAAM,QAAiC;AAAA,IACnC,yBAAyB;AAAA,MACrB,gBAAgB,gBAAgB;AAAA,IACpC;AAAA,IACA,kCAAkC;AAAA,MAC9B,gBAAgB,gBAAgB;AAAA,IACpC;AAAA,IACA,uCAAuC;AAAA,MACnC,WAAW,cAAc,WAAW;AAAA,IACxC;AAAA,IACA,yCAAyC;AAAA,MACrC,gBAAgB,mBACZ,iBAAiB,cAAc;AAAA,IACvC;AAAA,IACA,iCAAiC;AAAA,IACjC,oCAAoC;AAAA,EACxC;AAEA,MAAI,oBAAoB,CAAC,iBAAiB,QAAQ;AAC9C,UAAM,4CAA4C;AAAA,EACtD;AAEA,MACI,6BACA,CAAC,0BAA0B,YAAY,MAAM,QAC/C;AACE,UAAM,6CAA6C;AAAA,EACvD;AAEA,MACI,uBAAc,yBAAyB,MAAM,gBAC7C,CAAC,gBAAgB,UAAU,SAAS,+BAA+B,KACnE,CAAC,gBAAgB,UAAU,SAAS,4BAA4B,GAClE;AACE,QACI,gBAAgB,UAAU;AAAA,MACtB;AAAA,IACJ,GACF;AACE,YAAM,qCAAqC;AAAA,IAC/C,OAAO;AACH,YAAM,kCAAkC;AAAA,IAC5C;AAAA,EACJ;AAEA,QAAM,aAAa,OAAO,OAAO,KAAK,EAAE,KAAK,OAAO;AACpD,QAAM,SAAS,iBAAiB,OAAO;AAAA,IACnC,WAAW,2BAA2B,OAAO;AAAA,EACjD,CAAC;AAED,SAAO,EAAE,YAAY,OAAO;AAChC;","names":["Config"]}
@@ -1,24 +1,15 @@
1
1
  import { ISchemaFieldMap } from './types/index.types.cjs';
2
2
  import { FieldDetails } from '../components/FieldToolbar.cjs';
3
3
  import { EntryPermissions } from './getEntryPermissions.cjs';
4
+ import { WorkflowStageDetails } from './getWorkflowStageDetails.cjs';
4
5
  import '../../cms/types/contentTypeSchema.types.cjs';
5
6
  import '../types/visualBuilder.types.cjs';
6
7
  import '../../cslp/types/cslp.types.cjs';
7
8
 
8
- declare enum DisableReason {
9
- ReadOnly = "You have only read access to this field",
10
- LocalizedEntry = "Editing this field is restricted in localized entries",
11
- UnlinkedVariant = "This field is not editable as it is not linked to the selected variant",
12
- AudienceMode = "Open an Experience from Audience widget to start editing",
13
- DisabledVariant = "This field is not editable as it doesn't match the selected variant",
14
- UnlocalizedVariant = "This field is not editable as it is not localized",
15
- None = "",
16
- EntryUpdateRestricted = "You do not have permission to edit this entry"
17
- }
18
9
  interface FieldDisableState {
19
10
  isDisabled: boolean;
20
- reason: DisableReason;
11
+ reason: string;
21
12
  }
22
- declare const isFieldDisabled: (fieldSchemaMap: ISchemaFieldMap, eventFieldDetails: FieldDetails, entryPermissions?: EntryPermissions) => FieldDisableState;
13
+ declare const isFieldDisabled: (fieldSchemaMap: ISchemaFieldMap, eventFieldDetails: FieldDetails, entryPermissions?: EntryPermissions, entryWorkflowStageDetails?: WorkflowStageDetails) => FieldDisableState;
23
14
 
24
15
  export { isFieldDisabled };
@@ -1,24 +1,15 @@
1
1
  import { ISchemaFieldMap } from './types/index.types.js';
2
2
  import { FieldDetails } from '../components/FieldToolbar.js';
3
3
  import { EntryPermissions } from './getEntryPermissions.js';
4
+ import { WorkflowStageDetails } from './getWorkflowStageDetails.js';
4
5
  import '../../cms/types/contentTypeSchema.types.js';
5
6
  import '../types/visualBuilder.types.js';
6
7
  import '../../cslp/types/cslp.types.js';
7
8
 
8
- declare enum DisableReason {
9
- ReadOnly = "You have only read access to this field",
10
- LocalizedEntry = "Editing this field is restricted in localized entries",
11
- UnlinkedVariant = "This field is not editable as it is not linked to the selected variant",
12
- AudienceMode = "Open an Experience from Audience widget to start editing",
13
- DisabledVariant = "This field is not editable as it doesn't match the selected variant",
14
- UnlocalizedVariant = "This field is not editable as it is not localized",
15
- None = "",
16
- EntryUpdateRestricted = "You do not have permission to edit this entry"
17
- }
18
9
  interface FieldDisableState {
19
10
  isDisabled: boolean;
20
- reason: DisableReason;
11
+ reason: string;
21
12
  }
22
- declare const isFieldDisabled: (fieldSchemaMap: ISchemaFieldMap, eventFieldDetails: FieldDetails, entryPermissions?: EntryPermissions) => FieldDisableState;
13
+ declare const isFieldDisabled: (fieldSchemaMap: ISchemaFieldMap, eventFieldDetails: FieldDetails, entryPermissions?: EntryPermissions, entryWorkflowStageDetails?: WorkflowStageDetails) => FieldDisableState;
23
14
 
24
15
  export { isFieldDisabled };
@@ -3,24 +3,48 @@ import "../../chunk-5WRI5ZAA.js";
3
3
  // src/visualBuilder/utils/isFieldDisabled.ts
4
4
  import Config from "../../configManager/configManager.js";
5
5
  import { VisualBuilder } from "../index.js";
6
- var getDisableReason = (flags) => {
7
- if (flags.updateRestrictDueToEntryUpdateRestriction) {
8
- return "You do not have permission to edit this entry" /* EntryUpdateRestricted */;
9
- }
10
- if (flags.updateRestrictDueToRole) return "You have only read access to this field" /* ReadOnly */;
6
+ var DisableReason = {
7
+ ReadOnly: "You have only read access to this field",
8
+ LocalizedEntry: "Editing this field is restricted in localized entries",
9
+ UnlinkedVariant: "This field is not editable as it is not linked to the selected variant",
10
+ AudienceMode: "Open an Experience from Audience widget to start editing",
11
+ DisabledVariant: "This field is not editable as it doesn't match the selected variant",
12
+ UnlocalizedVariant: "This field is not editable as it is not localized",
13
+ None: "",
14
+ EntryUpdateRestricted: "You do not have permission to edit this entry",
15
+ WorkflowStagePermission: ({ stageName }) => `You do not have Edit access to this entry on the '${stageName}' workflow stage`,
16
+ EntryUpdateRestrictedRoleAndWorkflowStage: ({
17
+ stageName
18
+ }) => `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`
19
+ };
20
+ var getDisableReason = (flags, params) => {
21
+ if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;
11
22
  if (flags.updateRestrictDueToNonLocalizableFields)
12
- return "Editing this field is restricted in localized entries" /* LocalizedEntry */;
23
+ return DisableReason.LocalizedEntry;
13
24
  if (flags.updateRestrictDueToUnlocalizedVariant)
14
- return "This field is not editable as it is not localized" /* UnlocalizedVariant */;
25
+ return DisableReason.UnlocalizedVariant;
15
26
  if (flags.updateRestrictDueToUnlinkVariant)
16
- return "This field is not editable as it is not linked to the selected variant" /* UnlinkedVariant */;
27
+ return DisableReason.UnlinkedVariant;
17
28
  if (flags.updateRestrictDueToAudienceMode)
18
- return "Open an Experience from Audience widget to start editing" /* AudienceMode */;
29
+ return DisableReason.AudienceMode;
19
30
  if (flags.updateRestrictDueToDisabledVariant)
20
- return "This field is not editable as it doesn't match the selected variant" /* DisabledVariant */;
21
- return "" /* None */;
31
+ return DisableReason.DisabledVariant;
32
+ if (flags.updateRestrictDueToEntryUpdateRestriction && flags.updateRestrictDueToWorkflowStagePermission) {
33
+ return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({
34
+ stageName: params?.stageName ? params.stageName : "Unknown"
35
+ });
36
+ }
37
+ if (flags.updateRestrictDueToEntryUpdateRestriction) {
38
+ return DisableReason.EntryUpdateRestricted;
39
+ }
40
+ if (flags.updateRestrictDueToWorkflowStagePermission) {
41
+ return DisableReason.WorkflowStagePermission({
42
+ stageName: params?.stageName ? params.stageName : "Unknown"
43
+ });
44
+ }
45
+ return DisableReason.None;
22
46
  };
23
- var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
47
+ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions, entryWorkflowStageDetails) => {
24
48
  const { editableElement, fieldMetadata } = eventFieldDetails;
25
49
  const masterLocale = Config.get().stackDetails.masterLocale || "en-us";
26
50
  const { locale: cmsLocale, variant } = VisualBuilder.VisualBuilderGlobalState.value;
@@ -43,6 +67,9 @@ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
43
67
  if (entryPermissions && !entryPermissions.update) {
44
68
  flags.updateRestrictDueToEntryUpdateRestriction = true;
45
69
  }
70
+ if (entryWorkflowStageDetails && !entryWorkflowStageDetails.permissions.entry.update) {
71
+ flags.updateRestrictDueToWorkflowStagePermission = true;
72
+ }
46
73
  if (VisualBuilder.VisualBuilderGlobalState.value.audienceMode && !editableElement.classList.contains("visual-builder__variant-field") && !editableElement.classList.contains("visual-builder__base-field")) {
47
74
  if (editableElement.classList.contains(
48
75
  "visual-builder__disabled-variant-field"
@@ -53,7 +80,9 @@ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, entryPermissions) => {
53
80
  }
54
81
  }
55
82
  const isDisabled = Object.values(flags).some(Boolean);
56
- const reason = getDisableReason(flags);
83
+ const reason = getDisableReason(flags, {
84
+ stageName: entryWorkflowStageDetails?.stage?.name
85
+ });
57
86
  return { isDisabled, reason };
58
87
  };
59
88
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\n\nenum DisableReason {\n ReadOnly = \"You have only read access to this field\",\n LocalizedEntry = \"Editing this field is restricted in localized entries\",\n UnlinkedVariant = \"This field is not editable as it is not linked to the selected variant\",\n AudienceMode = \"Open an Experience from Audience widget to start editing\",\n DisabledVariant = \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant = \"This field is not editable as it is not localized\",\n None = \"\",\n EntryUpdateRestricted = \"You do not have permission to edit this entry\",\n}\n\ninterface FieldDisableState {\n isDisabled: boolean;\n reason: DisableReason;\n}\n\nconst getDisableReason = (flags: Record<string, boolean>): DisableReason => {\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant)\n return DisableReason.UnlinkedVariant;\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n entryPermissions?: EntryPermissions\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n const reason = getDisableReason(flags);\n\n return { isDisabled, reason };\n};\n"],"mappings":";;;AACA,OAAO,YAAY;AAEnB,SAAS,qBAAqB;AAoB9B,IAAM,mBAAmB,CAAC,UAAkD;AACxE,MAAI,MAAM,2CAA2C;AACjD,WAAO;AAAA,EACX;AACA,MAAI,MAAM,wBAAyB,QAAO;AAC1C,MAAI,MAAM;AACN,WAAO;AACX,MAAI,MAAM;AACN,WAAO;AACX,MAAI,MAAM;AACN,WAAO;AACX,MAAI,MAAM;AACN,WAAO;AACX,MAAI,MAAM;AACN,WAAO;AACX,SAAO;AACX;AAEO,IAAM,kBAAkB,CAC3B,gBACA,mBACA,qBACoB;AACpB,QAAM,EAAE,iBAAiB,cAAc,IAAI;AAC3C,QAAM,eAAe,OAAO,IAAI,EAAE,aAAa,gBAAgB;AAC/D,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAC/B,cAAc,yBAAyB;AAE3C,QAAM,QAAiC;AAAA,IACnC,yBAAyB;AAAA,MACrB,gBAAgB,gBAAgB;AAAA,IACpC;AAAA,IACA,kCAAkC;AAAA,MAC9B,gBAAgB,gBAAgB;AAAA,IACpC;AAAA,IACA,uCAAuC;AAAA,MACnC,WAAW,cAAc,WAAW;AAAA,IACxC;AAAA,IACA,yCAAyC;AAAA,MACrC,gBAAgB,mBACZ,iBAAiB,cAAc;AAAA,IACvC;AAAA,IACA,iCAAiC;AAAA,IACjC,oCAAoC;AAAA,EACxC;AAEA,MAAI,oBAAoB,CAAC,iBAAiB,QAAQ;AAC9C,UAAM,4CAA4C;AAAA,EACtD;AAEA,MACI,cAAc,yBAAyB,MAAM,gBAC7C,CAAC,gBAAgB,UAAU,SAAS,+BAA+B,KACnE,CAAC,gBAAgB,UAAU,SAAS,4BAA4B,GAClE;AACE,QACI,gBAAgB,UAAU;AAAA,MACtB;AAAA,IACJ,GACF;AACE,YAAM,qCAAqC;AAAA,IAC/C,OAAO;AACH,YAAM,kCAAkC;AAAA,IAC5C;AAAA,EACJ;AAEA,QAAM,aAAa,OAAO,OAAO,KAAK,EAAE,KAAK,OAAO;AACpD,QAAM,SAAS,iBAAiB,KAAK;AAErC,SAAO,EAAE,YAAY,OAAO;AAChC;","names":[]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\nimport { WorkflowStageDetails } from \"./getWorkflowStageDetails\";\n\nconst DisableReason = {\n ReadOnly: \"You have only read access to this field\",\n LocalizedEntry: \"Editing this field is restricted in localized entries\",\n UnlinkedVariant:\n \"This field is not editable as it is not linked to the selected variant\",\n AudienceMode: \"Open an Experience from Audience widget to start editing\",\n DisabledVariant:\n \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant: \"This field is not editable as it is not localized\",\n None: \"\",\n EntryUpdateRestricted: \"You do not have permission to edit this entry\",\n WorkflowStagePermission: ({ stageName }: { stageName: string }) =>\n `You do not have Edit access to this entry on the '${stageName}' workflow stage`,\n EntryUpdateRestrictedRoleAndWorkflowStage: ({\n stageName,\n }: {\n stageName: string;\n }) =>\n `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,\n} as const;\n\ninterface FieldDisableState {\n isDisabled: boolean;\n reason: string;\n}\n\nconst getDisableReason = (\n flags: Record<string, boolean>,\n params?: Record<string, any>\n) => {\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant)\n return DisableReason.UnlinkedVariant;\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n if (\n flags.updateRestrictDueToEntryUpdateRestriction &&\n flags.updateRestrictDueToWorkflowStagePermission\n ) {\n return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToWorkflowStagePermission) {\n return DisableReason.WorkflowStagePermission({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n entryPermissions?: EntryPermissions,\n entryWorkflowStageDetails?: WorkflowStageDetails\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n entryWorkflowStageDetails &&\n !entryWorkflowStageDetails.permissions.entry.update\n ) {\n flags.updateRestrictDueToWorkflowStagePermission = true;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n const reason = getDisableReason(flags, {\n stageName: entryWorkflowStageDetails?.stage?.name,\n });\n\n return { isDisabled, reason };\n};\n"],"mappings":";;;AAAA,OAAO,YAAY;AAEnB,SAAS,qBAAqB;AAK9B,IAAM,gBAAgB;AAAA,EAClB,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,iBACI;AAAA,EACJ,cAAc;AAAA,EACd,iBACI;AAAA,EACJ,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,uBAAuB;AAAA,EACvB,yBAAyB,CAAC,EAAE,UAAU,MAClC,qDAAqD,SAAS;AAAA,EAClE,2CAA2C,CAAC;AAAA,IACxC;AAAA,EACJ,MAGI,gEAAgE,SAAS;AACjF;AAOA,IAAM,mBAAmB,CACrB,OACA,WACC;AACD,MAAI,MAAM,wBAAyB,QAAO,cAAc;AACxD,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MAAI,MAAM;AACN,WAAO,cAAc;AACzB,MACI,MAAM,6CACN,MAAM,4CACR;AACE,WAAO,cAAc,0CAA0C;AAAA,MAC3D,WAAW,QAAQ,YAAY,OAAO,YAAY;AAAA,IACtD,CAAC;AAAA,EACL;AACA,MAAI,MAAM,2CAA2C;AACjD,WAAO,cAAc;AAAA,EACzB;AACA,MAAI,MAAM,4CAA4C;AAClD,WAAO,cAAc,wBAAwB;AAAA,MACzC,WAAW,QAAQ,YAAY,OAAO,YAAY;AAAA,IACtD,CAAC;AAAA,EACL;AACA,SAAO,cAAc;AACzB;AAEO,IAAM,kBAAkB,CAC3B,gBACA,mBACA,kBACA,8BACoB;AACpB,QAAM,EAAE,iBAAiB,cAAc,IAAI;AAC3C,QAAM,eAAe,OAAO,IAAI,EAAE,aAAa,gBAAgB;AAC/D,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAC/B,cAAc,yBAAyB;AAE3C,QAAM,QAAiC;AAAA,IACnC,yBAAyB;AAAA,MACrB,gBAAgB,gBAAgB;AAAA,IACpC;AAAA,IACA,kCAAkC;AAAA,MAC9B,gBAAgB,gBAAgB;AAAA,IACpC;AAAA,IACA,uCAAuC;AAAA,MACnC,WAAW,cAAc,WAAW;AAAA,IACxC;AAAA,IACA,yCAAyC;AAAA,MACrC,gBAAgB,mBACZ,iBAAiB,cAAc;AAAA,IACvC;AAAA,IACA,iCAAiC;AAAA,IACjC,oCAAoC;AAAA,EACxC;AAEA,MAAI,oBAAoB,CAAC,iBAAiB,QAAQ;AAC9C,UAAM,4CAA4C;AAAA,EACtD;AAEA,MACI,6BACA,CAAC,0BAA0B,YAAY,MAAM,QAC/C;AACE,UAAM,6CAA6C;AAAA,EACvD;AAEA,MACI,cAAc,yBAAyB,MAAM,gBAC7C,CAAC,gBAAgB,UAAU,SAAS,+BAA+B,KACnE,CAAC,gBAAgB,UAAU,SAAS,4BAA4B,GAClE;AACE,QACI,gBAAgB,UAAU;AAAA,MACtB;AAAA,IACJ,GACF;AACE,YAAM,qCAAqC;AAAA,IAC/C,OAAO;AACH,YAAM,kCAAkC;AAAA,IAC5C;AAAA,EACJ;AAEA,QAAM,aAAa,OAAO,OAAO,KAAK,EAAE,KAAK,OAAO;AACpD,QAAM,SAAS,iBAAiB,OAAO;AAAA,IACnC,WAAW,2BAA2B,OAAO;AAAA,EACjD,CAAC;AAED,SAAO,EAAE,YAAY,OAAO;AAChC;","names":[]}
@@ -53,6 +53,8 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
53
53
  VisualBuilderPostMessageEvents2["COLLAB_MISSING_THREADS"] = "collab-missing-threads";
54
54
  VisualBuilderPostMessageEvents2["FIELD_LOCATION_DATA"] = "field-location-data";
55
55
  VisualBuilderPostMessageEvents2["FIELD_LOCATION_SELECTED_APP"] = "field-location-selected-app";
56
+ VisualBuilderPostMessageEvents2["GET_PERMISSIONS"] = "get-permissions";
57
+ VisualBuilderPostMessageEvents2["GET_WORKFLOW_STAGE_DETAILS"] = "get-workflow-stage-details";
56
58
  VisualBuilderPostMessageEvents2["GET_ALL_ENTRIES_IN_CURRENT_PAGE"] = "get-entries-in-current-page";
57
59
  VisualBuilderPostMessageEvents2["HIDE_FOCUS_OVERLAY"] = "hide-focus-overlay";
58
60
  VisualBuilderPostMessageEvents2["SHOW_DRAFT_FIELDS"] = "show-draft-fields";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n FIELD_LOCATION_DATA = \"field-location-data\",\n FIELD_LOCATION_SELECTED_APP = \"field-location-selected-app\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n TOGGLE_SCROLL = \"toggle-scroll\",\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,iCAA8B;AAG9B,EAAAA,gCAAA,qCAAkC;AAClC,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,+BAA4B;AAC5B,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,mBAAgB;AAtDR,SAAAA;AAAA,GAAA;","names":["VisualBuilderPostMessageEvents"]}
1
+ {"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n FIELD_LOCATION_DATA = \"field-location-data\",\n FIELD_LOCATION_SELECTED_APP = \"field-location-selected-app\",\n GET_PERMISSIONS = \"get-permissions\",\n GET_WORKFLOW_STAGE_DETAILS = \"get-workflow-stage-details\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n TOGGLE_SCROLL = \"toggle-scroll\",\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,gCAA6B;AAG7B,EAAAA,gCAAA,qCAAkC;AAClC,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,+BAA4B;AAC5B,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,mBAAgB;AAxDR,SAAAA;AAAA,GAAA;","names":["VisualBuilderPostMessageEvents"]}
@@ -28,6 +28,8 @@ declare enum VisualBuilderPostMessageEvents {
28
28
  COLLAB_MISSING_THREADS = "collab-missing-threads",
29
29
  FIELD_LOCATION_DATA = "field-location-data",
30
30
  FIELD_LOCATION_SELECTED_APP = "field-location-selected-app",
31
+ GET_PERMISSIONS = "get-permissions",
32
+ GET_WORKFLOW_STAGE_DETAILS = "get-workflow-stage-details",
31
33
  GET_ALL_ENTRIES_IN_CURRENT_PAGE = "get-entries-in-current-page",
32
34
  HIDE_FOCUS_OVERLAY = "hide-focus-overlay",
33
35
  SHOW_DRAFT_FIELDS = "show-draft-fields",
@@ -28,6 +28,8 @@ declare enum VisualBuilderPostMessageEvents {
28
28
  COLLAB_MISSING_THREADS = "collab-missing-threads",
29
29
  FIELD_LOCATION_DATA = "field-location-data",
30
30
  FIELD_LOCATION_SELECTED_APP = "field-location-selected-app",
31
+ GET_PERMISSIONS = "get-permissions",
32
+ GET_WORKFLOW_STAGE_DETAILS = "get-workflow-stage-details",
31
33
  GET_ALL_ENTRIES_IN_CURRENT_PAGE = "get-entries-in-current-page",
32
34
  HIDE_FOCUS_OVERLAY = "hide-focus-overlay",
33
35
  SHOW_DRAFT_FIELDS = "show-draft-fields",
@@ -31,6 +31,8 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
31
31
  VisualBuilderPostMessageEvents2["COLLAB_MISSING_THREADS"] = "collab-missing-threads";
32
32
  VisualBuilderPostMessageEvents2["FIELD_LOCATION_DATA"] = "field-location-data";
33
33
  VisualBuilderPostMessageEvents2["FIELD_LOCATION_SELECTED_APP"] = "field-location-selected-app";
34
+ VisualBuilderPostMessageEvents2["GET_PERMISSIONS"] = "get-permissions";
35
+ VisualBuilderPostMessageEvents2["GET_WORKFLOW_STAGE_DETAILS"] = "get-workflow-stage-details";
34
36
  VisualBuilderPostMessageEvents2["GET_ALL_ENTRIES_IN_CURRENT_PAGE"] = "get-entries-in-current-page";
35
37
  VisualBuilderPostMessageEvents2["HIDE_FOCUS_OVERLAY"] = "hide-focus-overlay";
36
38
  VisualBuilderPostMessageEvents2["SHOW_DRAFT_FIELDS"] = "show-draft-fields";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n FIELD_LOCATION_DATA = \"field-location-data\",\n FIELD_LOCATION_SELECTED_APP = \"field-location-selected-app\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n TOGGLE_SCROLL = \"toggle-scroll\",\n}\n"],"mappings":";;;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,iCAA8B;AAG9B,EAAAA,gCAAA,qCAAkC;AAClC,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,+BAA4B;AAC5B,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,mBAAgB;AAtDR,SAAAA;AAAA,GAAA;","names":["VisualBuilderPostMessageEvents"]}
1
+ {"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n FIELD_LOCATION_DATA = \"field-location-data\",\n FIELD_LOCATION_SELECTED_APP = \"field-location-selected-app\",\n GET_PERMISSIONS = \"get-permissions\",\n GET_WORKFLOW_STAGE_DETAILS = \"get-workflow-stage-details\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n TOGGLE_SCROLL = \"toggle-scroll\",\n}\n"],"mappings":";;;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,gCAA6B;AAG7B,EAAAA,gCAAA,qCAAkC;AAClC,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,+BAA4B;AAC5B,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,mBAAgB;AAxDR,SAAAA;AAAA,GAAA;","names":["VisualBuilderPostMessageEvents"]}
@@ -39,12 +39,12 @@ var import_cslp = require("../../cslp/index.cjs");
39
39
  var import_generateAddInstanceButtons = require("../generators/generateAddInstanceButtons.cjs");
40
40
  var import_generateOverlay = require("../generators/generateOverlay.cjs");
41
41
  var import_mouseHover = require("../listeners/mouseHover.cjs");
42
- var import_getEntryPermissionsCached = require("./getEntryPermissionsCached.cjs");
43
42
  var import_constants = require("./constants.cjs");
44
43
  var import_fieldSchemaMap = require("./fieldSchemaMap.cjs");
45
44
  var import_getChildrenDirection = __toESM(require("./getChildrenDirection.cjs"), 1);
46
45
  var import_getPsuedoEditableStylesElement = require("./getPsuedoEditableStylesElement.cjs");
47
46
  var import_isFieldDisabled = require("./isFieldDisabled.cjs");
47
+ var import_fetchEntryPermissionsAndStageDetails = require("./fetchEntryPermissionsAndStageDetails.cjs");
48
48
  function positionToolbar({
49
49
  focusedToolbar,
50
50
  selectedElementDimension
@@ -107,15 +107,17 @@ async function updateFocussedState({
107
107
  fieldMetadata.content_type_uid,
108
108
  fieldMetadata.fieldPath
109
109
  );
110
- const entryAcl = await (0, import_getEntryPermissionsCached.getEntryPermissionsCached)({
110
+ const { acl: entryAcl, workflowStage: entryWorkflowStageDetails } = await (0, import_fetchEntryPermissionsAndStageDetails.fetchEntryPermissionsAndStageDetails)({
111
111
  entryUid: fieldMetadata.entry_uid,
112
112
  contentTypeUid: fieldMetadata.content_type_uid,
113
- locale: fieldMetadata.locale
113
+ locale: fieldMetadata.locale,
114
+ variantUid: fieldMetadata.variant
114
115
  });
115
116
  const { isDisabled } = (0, import_isFieldDisabled.isFieldDisabled)(
116
117
  fieldSchema,
117
118
  { editableElement, fieldMetadata },
118
- entryAcl
119
+ entryAcl,
120
+ entryWorkflowStageDetails
119
121
  );
120
122
  (0, import_generateOverlay.addFocusOverlay)(previousSelectedEditableDOM, overlayWrapper, isDisabled);
121
123
  const psuedoEditableElement = visualBuilderContainer.querySelector(