@contentstack/live-preview-utils 4.3.0 → 4.4.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 (110) hide show
  1. package/README.md +96 -30
  2. package/dist/legacy/chunk-HZF5SLJ7.js +625 -0
  3. package/dist/legacy/chunk-HZF5SLJ7.js.map +1 -0
  4. package/dist/legacy/index.d.cts +1 -1
  5. package/dist/legacy/index.d.ts +1 -1
  6. package/dist/legacy/light-sdk.cjs +1 -1
  7. package/dist/legacy/light-sdk.cjs.map +1 -1
  8. package/dist/legacy/light-sdk.js +1 -1
  9. package/dist/legacy/light-sdk.js.map +1 -1
  10. package/dist/legacy/livePreview/editButton/editButton.cjs +2 -0
  11. package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
  12. package/dist/legacy/livePreview/editButton/editButton.js +2 -0
  13. package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
  14. package/dist/legacy/livePreview/eventManager/livePreviewEventManager.cjs +172 -432
  15. package/dist/legacy/livePreview/eventManager/livePreviewEventManager.cjs.map +1 -1
  16. package/dist/legacy/livePreview/eventManager/livePreviewEventManager.js +1 -1
  17. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  18. package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  19. package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
  20. package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
  21. package/dist/legacy/timeline/timelinePostMessage/timelinePostMessage.cjs +172 -432
  22. package/dist/legacy/timeline/timelinePostMessage/timelinePostMessage.cjs.map +1 -1
  23. package/dist/legacy/timeline/timelinePostMessage/timelinePostMessage.js +1 -1
  24. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +111 -27
  25. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  26. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +112 -28
  27. package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  28. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.cjs +4 -0
  29. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.cjs.map +1 -1
  30. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.d.cts +8 -1
  31. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.d.ts +8 -1
  32. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.js +4 -0
  33. package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.js.map +1 -1
  34. package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs +41 -6
  35. package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
  36. package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.cts +9 -1
  37. package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.ts +9 -1
  38. package/dist/legacy/visualBuilder/utils/isFieldDisabled.js +41 -6
  39. package/dist/legacy/visualBuilder/utils/isFieldDisabled.js.map +1 -1
  40. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +1 -0
  41. package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  42. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +1 -0
  43. package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +1 -0
  44. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +1 -0
  45. package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  46. package/dist/legacy/visualBuilder/utils/visualBuilderPostMessage.cjs +172 -432
  47. package/dist/legacy/visualBuilder/utils/visualBuilderPostMessage.cjs.map +1 -1
  48. package/dist/legacy/visualBuilder/utils/visualBuilderPostMessage.js +1 -1
  49. package/dist/legacy/visualBuilder/visualBuilder.style.cjs +30 -0
  50. package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
  51. package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +5 -0
  52. package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +5 -0
  53. package/dist/legacy/visualBuilder/visualBuilder.style.js +30 -0
  54. package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
  55. package/dist/modern/chunk-4RUJZCI2.js +625 -0
  56. package/dist/modern/chunk-4RUJZCI2.js.map +1 -0
  57. package/dist/modern/light-sdk.cjs +1 -1
  58. package/dist/modern/light-sdk.cjs.map +1 -1
  59. package/dist/modern/light-sdk.js +1 -1
  60. package/dist/modern/light-sdk.js.map +1 -1
  61. package/dist/modern/livePreview/editButton/editButton.cjs +2 -0
  62. package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
  63. package/dist/modern/livePreview/editButton/editButton.js +2 -0
  64. package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
  65. package/dist/modern/livePreview/eventManager/livePreviewEventManager.cjs +172 -432
  66. package/dist/modern/livePreview/eventManager/livePreviewEventManager.cjs.map +1 -1
  67. package/dist/modern/livePreview/eventManager/livePreviewEventManager.js +1 -1
  68. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
  69. package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
  70. package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
  71. package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
  72. package/dist/modern/timeline/timelinePostMessage/timelinePostMessage.cjs +172 -432
  73. package/dist/modern/timeline/timelinePostMessage/timelinePostMessage.cjs.map +1 -1
  74. package/dist/modern/timeline/timelinePostMessage/timelinePostMessage.js +1 -1
  75. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +110 -27
  76. package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
  77. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +111 -28
  78. package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
  79. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.cjs +4 -0
  80. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.cjs.map +1 -1
  81. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.d.cts +8 -1
  82. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.d.ts +8 -1
  83. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.js +4 -0
  84. package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.js.map +1 -1
  85. package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs +40 -6
  86. package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
  87. package/dist/modern/visualBuilder/utils/isFieldDisabled.d.cts +9 -1
  88. package/dist/modern/visualBuilder/utils/isFieldDisabled.d.ts +9 -1
  89. package/dist/modern/visualBuilder/utils/isFieldDisabled.js +40 -6
  90. package/dist/modern/visualBuilder/utils/isFieldDisabled.js.map +1 -1
  91. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +1 -0
  92. package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
  93. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +1 -0
  94. package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +1 -0
  95. package/dist/modern/visualBuilder/utils/types/postMessage.types.js +1 -0
  96. package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
  97. package/dist/modern/visualBuilder/utils/visualBuilderPostMessage.cjs +172 -432
  98. package/dist/modern/visualBuilder/utils/visualBuilderPostMessage.cjs.map +1 -1
  99. package/dist/modern/visualBuilder/utils/visualBuilderPostMessage.js +1 -1
  100. package/dist/modern/visualBuilder/visualBuilder.style.cjs +30 -0
  101. package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
  102. package/dist/modern/visualBuilder/visualBuilder.style.d.cts +5 -0
  103. package/dist/modern/visualBuilder/visualBuilder.style.d.ts +5 -0
  104. package/dist/modern/visualBuilder/visualBuilder.style.js +30 -0
  105. package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
  106. package/package.json +9 -9
  107. package/dist/legacy/chunk-7SRLYDRL.js +0 -885
  108. package/dist/legacy/chunk-7SRLYDRL.js.map +0 -1
  109. package/dist/modern/chunk-JYE4G3PN.js +0 -885
  110. package/dist/modern/chunk-JYE4G3PN.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/fieldLabelWrapper.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useEffect, useState } from \"preact/compat\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { DisableReason, isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { CaretIcon, CaretRightIcon, InfoIcon } from \"./icons\";\nimport { LoadingIcon } from \"./icons/loading\";\nimport { FieldTypeIconsMap, getFieldIcon } from \"../generators/generateCustomCursor\";\nimport { uniqBy } from \"lodash-es\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { CslpError } from \"./CslpError\";\nimport { hasPostMessageError } from \"../utils/errorHandling\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { ContentTypeIcon } from \"./icons\";\nimport { ToolbarTooltip } from \"./Tooltip\";\nimport { fetchEntryPermissionsAndStageDetails } from \"../utils/fetchEntryPermissionsAndStageDetails\";\nimport { VariantIndicator } from \"./VariantIndicator\";\nimport { handleRevalidateFieldData } from \"../eventManager/useRevalidateFieldDataPostMessageEvent\";\nimport { RESULT_TYPES } from \"../utils/constants\";\n\ninterface ReferenceParentMap {\n [entryUid: string]: {\n contentTypeUid: string;\n contentTypeTitle: string;\n referenceFieldName: string;\n }[]\n}\n\nasync function getFieldDisplayNames(fieldMetadata: CslpData[]) {\n const result = await visualBuilderPostMessage?.send<{\n [k: string]: string;\n }>(VisualBuilderPostMessageEvents.GET_FIELD_DISPLAY_NAMES, fieldMetadata);\n return result;\n}\n\nasync function getContentTypeName(contentTypeUid: string) {\n try {\n const result = await visualBuilderPostMessage?.send<{\n contentTypeName: string;\n }>(VisualBuilderPostMessageEvents.GET_CONTENT_TYPE_NAME, {\n content_type_uid: contentTypeUid,\n });\n return result?.contentTypeName;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting content type name\", e);\n return \"\";\n }\n}\n\nasync function getReferenceParentMap() {\n try {\n const result = await visualBuilderPostMessage?.send<ReferenceParentMap>(VisualBuilderPostMessageEvents.REFERENCE_MAP, {}) ?? {};\n return result;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting reference parent map\", e);\n return {};\n }\n}\n\ninterface FieldLabelWrapperProps {\n fieldMetadata: CslpData;\n eventDetails: VisualBuilderCslpEventDetails;\n parentPaths: string[];\n getParentEditableElement: (cslp: string) => HTMLElement | null;\n}\n\ninterface ICurrentField {\n text: string;\n contentTypeName: string;\n icon: JSX.Element;\n prefixIcon: any;\n disabled: boolean;\n isVariant: boolean;\n isReference: boolean;\n referenceFieldName: string;\n parentContentTypeName: string;\n}\n\nfunction FieldLabelWrapperComponent(\n props: FieldLabelWrapperProps\n): JSX.Element {\n const { eventDetails } = props;\n const [currentField, setCurrentField] = useState<ICurrentField>({\n text: \"\",\n contentTypeName: \"\",\n icon: <CaretIcon />,\n prefixIcon: null,\n disabled: false,\n isVariant: false,\n isReference: false,\n referenceFieldName: \"\",\n parentContentTypeName: \"\",\n });\n const [displayNames, setDisplayNames] = useState<Record<string, string>>(\n {}\n );\n const [dataLoading, setDataLoading] = useState(true);\n const [error, setError] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n function calculateTopOffset(index: number) {\n const height = -30; // from bottom\n const offset = (index + 1) * height;\n return `${offset}px`;\n }\n\n useEffect(() => {\n const fetchData = async () => {\n setDataLoading(true);\n const allPaths = uniqBy(\n [\n props.fieldMetadata,\n ...props.parentPaths\n .filter((path) => path)\n .map((path) => {\n return extractDetailsFromCslp(path);\n }),\n ],\n \"cslpValue\"\n );\n const [displayNames, fieldSchema, contentTypeName, referenceParentMap] = await Promise.all([\n getFieldDisplayNames(allPaths),\n FieldSchemaMap.getFieldSchema(\n props.fieldMetadata.content_type_uid,\n props.fieldMetadata.fieldPath\n ),\n getContentTypeName(\n props.fieldMetadata.content_type_uid\n ),\n getReferenceParentMap()\n ]);\n const entryUid = props.fieldMetadata.entry_uid;\n\n const referenceData = referenceParentMap[entryUid];\n const isReference = !!referenceData;\n\n let referenceFieldName = referenceData ? referenceData[0].referenceFieldName : \"\";\n let parentContentTypeName = referenceData ? referenceData[0].contentTypeTitle : \"\";\n\n if(isReference) {\n const domAncestor = eventDetails.editableElement.closest(`[data-cslp]:not([data-cslp^=\"${props.fieldMetadata.content_type_uid}\"])`);\n if(domAncestor) {\n const domAncestorCslp = domAncestor.getAttribute(\"data-cslp\");\n if (isValidCslp(domAncestorCslp)) {\n const domAncestorDetails = extractDetailsFromCslp(domAncestorCslp);\n const domAncestorContentTypeUid = domAncestorDetails.content_type_uid;\n const domAncestorContentParent = referenceData?.find(data => data.contentTypeUid === domAncestorContentTypeUid);\n if(domAncestorContentParent) {\n referenceFieldName = domAncestorContentParent.referenceFieldName;\n parentContentTypeName = domAncestorContentParent.contentTypeTitle;\n }\n }\n }\n }\n\n if (hasPostMessageError(displayNames) || !fieldSchema) {\n setDataLoading(false);\n setError(true);\n\n return;\n }\n\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid: props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n fieldPathWithIndex: props.fieldMetadata.fieldPathWithIndex,\n });\n const { isDisabled: fieldDisabled, reason } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n resolvedVariantPermissions,\n entryAcl,\n entryWorkflowStageDetails,\n );\n\n const handleLinkVariant = async () => {\n try {\n if (fieldSchema.field_metadata?.canLinkVariant) {\n const result = await visualBuilderPostMessage?.send<{\n type: typeof RESULT_TYPES.SUCCESS | typeof RESULT_TYPES.ERROR;\n message: string;\n }>(\n VisualBuilderPostMessageEvents.OPEN_LINK_VARIANT_MODAL,\n {\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n }\n );\n\n // If the modal was closed or linking failed, do nothing\n if (!result || result.type === RESULT_TYPES.ERROR) {\n return;\n }\n\n // If linking was successful and requires revalidation, revalidate\n if (result.type === RESULT_TYPES.SUCCESS) {\n await handleRevalidateFieldData();\n }\n }\n } catch (error) {\n console.error(\n \"Error in link variant modal flow:\",\n error\n );\n }\n };\n\n const currentFieldDisplayName =\n displayNames?.[props.fieldMetadata.cslpValue] ??\n fieldSchema.display_name;\n\n const hasParentPaths = !!props?.parentPaths?.length;\n const isVariant = props.fieldMetadata.variant ? true : false;\n\n setCurrentField({\n text: currentFieldDisplayName,\n contentTypeName: contentTypeName ?? \"\",\n icon: fieldDisabled ? (\n <div\n className={classNames(\n visualBuilderStyles()[\n \"visual-builder__tooltip--persistent\"\n ]\n )}\n data-tooltip={!reason?.includes(DisableReason.CanLinkVariant)\n ? reason\n : undefined}\n >\n {reason\n .includes(DisableReason.CanLinkVariant) && (\n <div\n className={visualBuilderStyles()[\"visual-builder__custom-tooltip\"]}\n onClick={handleLinkVariant}\n >\n {(() => {\n const [before, after] = reason.split(\n DisableReason.UnderlinedAndClickableWord\n );\n return (\n <>\n {before}\n <span style={{ textDecoration: \"underline\" }}>{DisableReason.UnderlinedAndClickableWord}</span>\n {after}\n </>\n );\n })()}\n </div>\n )}\n <InfoIcon />\n </div>\n ) : hasParentPaths ? (\n <CaretIcon />\n ) : (\n <></>\n ),\n isReference,\n prefixIcon: getFieldIcon(fieldSchema),\n disabled: fieldDisabled,\n referenceFieldName,\n parentContentTypeName,\n isVariant: isVariant,\n });\n\n if (displayNames) {\n setDisplayNames(displayNames);\n }\n if (Object.keys(displayNames || {})?.length === allPaths.length) {\n setDataLoading(false);\n }\n };\n\n try {\n fetchData();\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error fetching field label data\", e);\n }\n }, [props]);\n\n const onParentPathClick = (cslp: string) => {\n const parentElement = props.getParentEditableElement(cslp);\n if (parentElement) {\n // emulate clicking on the parent element\n parentElement.click();\n }\n };\n\n function getCurrentFieldIcon() {\n if (error) {\n return null;\n } else if (dataLoading) {\n return <LoadingIcon />;\n } else {\n return currentField.icon;\n }\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-container\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-container\"\n ]\n )}\n >\n {currentField.isVariant ? <VariantIndicator /> : null}\n <ToolbarTooltip data={{contentTypeName: currentField.parentContentTypeName, referenceFieldName: currentField.referenceFieldName}} disabled={!currentField.isReference || isDropdownOpen}>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper\"\n ],\n {\n \"visual-builder__focused-toolbar--field-disabled\":\n currentField.disabled,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--field-disabled\"\n ]]: currentField.disabled,\n },\n {\n \"field-label-dropdown-open\": isDropdownOpen,\n [visualBuilderStyles()[\"field-label-dropdown-open\"]]:\n isDropdownOpen,\n },\n {\n \"visual-builder__focused-toolbar--variant\":\n currentField.isVariant,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--variant\"\n ]]: currentField.isVariant,\n }\n )}\n onClick={() => setIsDropdownOpen((prev) => !prev)}\n data-testid=\"visual-builder__focused-toolbar__field-label-wrapper\"\n data-hovered-cslp={props.fieldMetadata.cslpValue}\n >\n <button\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field visual-builder__button visual-builder__button--primary visual-builder__button-loader\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--primary\"\n ],\n visualBuilderStyles()[\"visual-builder__button-loader\"],\n error &&\n visualBuilderStyles()[\n \"visual-builder__button-error\"\n ]\n )}\n disabled={dataLoading}\n >\n {\n currentField.isReference && !dataLoading && !error ? \n <div\n className={classNames(\n \"visual-builder__reference-icon-container\",\n visualBuilderStyles()[\"visual-builder__reference-icon-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: FieldTypeIconsMap.reference,\n }}\n data-testid=\"visual-builder__field-icon-caret\"\n />\n <CaretRightIcon />\n </div> : null\n }\n {\n currentField.contentTypeName && !dataLoading && !error ?\n <>\n <ContentTypeIcon />\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__ct-name\"\n >\n {currentField.contentTypeName + \" : \"}\n </div>\n </> : null\n }\n {currentField.prefixIcon ? (\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: currentField.prefixIcon,\n }}\n data-testid=\"visual-builder__field-icon\"\n />\n ) : null}\n {currentField.text ? (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__text\"\n >\n {currentField.text}\n </div>\n ) : null}\n {getCurrentFieldIcon()}\n {error ? <CslpError /> : null}\n </button>\n {props.parentPaths.map((path, index) => (\n <button\n key={path}\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field visual-builder__button visual-builder__button--secondary visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--secondary\"\n ],\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-target-cslp={path}\n style={{ top: calculateTopOffset(index) }}\n onClick={() => onParentPathClick(path)}\n >\n {displayNames[path]}\n </button>\n ))}\n </div>\n </ToolbarTooltip>\n </div>\n );\n}\n\nexport default FieldLabelWrapperComponent;\n"],"mappings":"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","names":["import_icons","visualBuilderPostMessage","displayNames","error","classNames"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/fieldLabelWrapper.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useEffect, useRef, useState } from \"preact/compat\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { DisableReason, isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { CaretIcon, CaretRightIcon, InfoIcon } from \"./icons\";\nimport { LoadingIcon } from \"./icons/loading\";\nimport { FieldTypeIconsMap, getFieldIcon } from \"../generators/generateCustomCursor\";\nimport { uniqBy } from \"lodash-es\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { CslpError } from \"./CslpError\";\nimport { hasPostMessageError } from \"../utils/errorHandling\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { ContentTypeIcon } from \"./icons\";\nimport { ToolbarTooltip } from \"./Tooltip\";\nimport { fetchEntryPermissionsAndStageDetails } from \"../utils/fetchEntryPermissionsAndStageDetails\";\nimport { VariantIndicator } from \"./VariantIndicator\";\nimport { handleRevalidateFieldData } from \"../eventManager/useRevalidateFieldDataPostMessageEvent\";\nimport { RESULT_TYPES } from \"../utils/constants\";\n\ninterface ReferenceParentMap {\n [entryUid: string]: {\n contentTypeUid: string;\n contentTypeTitle: string;\n referenceFieldName: string;\n }[]\n}\n\nasync function getFieldDisplayNames(fieldMetadata: CslpData[]) {\n const result = await visualBuilderPostMessage?.send<{\n [k: string]: string;\n }>(VisualBuilderPostMessageEvents.GET_FIELD_DISPLAY_NAMES, fieldMetadata);\n return result;\n}\n\nasync function getContentTypeName(contentTypeUid: string) {\n try {\n const result = await visualBuilderPostMessage?.send<{\n contentTypeName: string;\n }>(VisualBuilderPostMessageEvents.GET_CONTENT_TYPE_NAME, {\n content_type_uid: contentTypeUid,\n });\n return result?.contentTypeName;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting content type name\", e);\n return \"\";\n }\n}\n\nasync function getReferenceParentMap() {\n try {\n const result = await visualBuilderPostMessage?.send<ReferenceParentMap>(VisualBuilderPostMessageEvents.REFERENCE_MAP, {}) ?? {};\n return result;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting reference parent map\", e);\n return {};\n }\n}\n\ninterface FieldLabelWrapperProps {\n fieldMetadata: CslpData;\n eventDetails: VisualBuilderCslpEventDetails;\n parentPaths: string[];\n getParentEditableElement: (cslp: string) => HTMLElement | null;\n}\n\ninterface ICurrentField {\n text: string;\n contentTypeName: string;\n icon: JSX.Element;\n prefixIcon: any;\n disabled: boolean;\n isVariant: boolean;\n isReference: boolean;\n referenceFieldName: string;\n parentContentTypeName: string;\n}\n\n/** Space needed above the icon for the default (above) tooltip before flipping below. */\nconst TOOLTIP_VIEWPORT_TOP_CLEARANCE_PX = 148;\n\ninterface FieldLabelDisabledIconProps {\n reason: string;\n workflowRequestUi?: \"request\" | \"pending\";\n usePlainDataTooltip: boolean;\n onLinkVariant: () => void;\n onRequestEditAccess: () => void | Promise<void>;\n}\n\nfunction FieldLabelDisabledIcon(\n props: FieldLabelDisabledIconProps\n): JSX.Element {\n const {\n reason,\n workflowRequestUi,\n usePlainDataTooltip,\n onLinkVariant,\n onRequestEditAccess,\n } = props;\n const wrapRef = useRef<HTMLDivElement>(null);\n const [showTooltipBelow, setShowTooltipBelow] = useState(false);\n\n const updateTooltipPlacement = () => {\n const el = wrapRef.current;\n if (!el) return;\n const { top } = el.getBoundingClientRect();\n setShowTooltipBelow(top < TOOLTIP_VIEWPORT_TOP_CLEARANCE_PX);\n };\n\n const customTooltipClass = classNames(\n visualBuilderStyles()[\"visual-builder__custom-tooltip\"],\n showTooltipBelow &&\n visualBuilderStyles()[\"visual-builder__custom-tooltip--below\"]\n );\n\n const workflowAccessTooltipClass = classNames(\n visualBuilderStyles()[\"visual-builder__custom-tooltip\"],\n showTooltipBelow &&\n visualBuilderStyles()[\"visual-builder__custom-tooltip--below\"],\n visualBuilderStyles()[\n \"visual-builder__custom-tooltip--workflow-access\"\n ]\n );\n\n return (\n <div\n ref={wrapRef}\n onMouseEnter={updateTooltipPlacement}\n className={classNames(\n visualBuilderStyles()[\"visual-builder__tooltip--persistent\"],\n showTooltipBelow &&\n visualBuilderStyles()[\n \"visual-builder__tooltip--persistent--below\"\n ]\n )}\n data-tooltip={usePlainDataTooltip ? reason : undefined}\n >\n {reason?.includes(DisableReason.CanLinkVariant) ? (\n <div className={customTooltipClass} onClick={onLinkVariant}>\n {(() => {\n const [before, after] = reason.split(\n DisableReason.UnderlinedAndClickableWord\n );\n return (\n <>\n {before}\n <span style={{ textDecoration: \"underline\" }}>\n {DisableReason.UnderlinedAndClickableWord}\n </span>\n {after}\n </>\n );\n })()}\n </div>\n ) : null}\n {workflowRequestUi === \"request\" && reason ? (\n <div className={workflowAccessTooltipClass}>\n <span>{reason}</span>{\" \"}\n <span\n role=\"button\"\n tabIndex={0}\n style={{\n textDecoration: \"underline\",\n cursor: \"pointer\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n onRequestEditAccess();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onRequestEditAccess();\n }\n }}\n >\n Request Edit Access\n </span>\n </div>\n ) : null}\n {workflowRequestUi === \"pending\" && reason ? (\n <div className={workflowAccessTooltipClass}>{reason}</div>\n ) : null}\n <InfoIcon />\n </div>\n );\n}\n\nfunction FieldLabelWrapperComponent(\n props: FieldLabelWrapperProps\n): JSX.Element {\n const { eventDetails } = props;\n const [currentField, setCurrentField] = useState<ICurrentField>({\n text: \"\",\n contentTypeName: \"\",\n icon: <CaretIcon />,\n prefixIcon: null,\n disabled: false,\n isVariant: false,\n isReference: false,\n referenceFieldName: \"\",\n parentContentTypeName: \"\",\n });\n const [displayNames, setDisplayNames] = useState<Record<string, string>>(\n {}\n );\n const [dataLoading, setDataLoading] = useState(true);\n const [error, setError] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n function calculateTopOffset(index: number) {\n const height = -30; // from bottom\n const offset = (index + 1) * height;\n return `${offset}px`;\n }\n\n useEffect(() => {\n const fetchData = async () => {\n setDataLoading(true);\n const allPaths = uniqBy(\n [\n props.fieldMetadata,\n ...props.parentPaths\n .filter((path) => path)\n .map((path) => {\n return extractDetailsFromCslp(path);\n }),\n ],\n \"cslpValue\"\n );\n const [displayNames, fieldSchema, contentTypeName, referenceParentMap] = await Promise.all([\n getFieldDisplayNames(allPaths),\n FieldSchemaMap.getFieldSchema(\n props.fieldMetadata.content_type_uid,\n props.fieldMetadata.fieldPath\n ),\n getContentTypeName(\n props.fieldMetadata.content_type_uid\n ),\n getReferenceParentMap()\n ]);\n const entryUid = props.fieldMetadata.entry_uid;\n\n const referenceData = referenceParentMap[entryUid];\n const isReference = !!referenceData;\n\n let referenceFieldName = referenceData ? referenceData[0].referenceFieldName : \"\";\n let parentContentTypeName = referenceData ? referenceData[0].contentTypeTitle : \"\";\n\n if(isReference) {\n const domAncestor = eventDetails.editableElement.closest(`[data-cslp]:not([data-cslp^=\"${props.fieldMetadata.content_type_uid}\"])`);\n if(domAncestor) {\n const domAncestorCslp = domAncestor.getAttribute(\"data-cslp\");\n if (isValidCslp(domAncestorCslp)) {\n const domAncestorDetails = extractDetailsFromCslp(domAncestorCslp);\n const domAncestorContentTypeUid = domAncestorDetails.content_type_uid;\n const domAncestorContentParent = referenceData?.find(data => data.contentTypeUid === domAncestorContentTypeUid);\n if(domAncestorContentParent) {\n referenceFieldName = domAncestorContentParent.referenceFieldName;\n parentContentTypeName = domAncestorContentParent.contentTypeTitle;\n }\n }\n }\n }\n\n if (hasPostMessageError(displayNames) || !fieldSchema) {\n setDataLoading(false);\n setError(true);\n\n return;\n }\n\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid: props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n fieldPathWithIndex: props.fieldMetadata.fieldPathWithIndex,\n });\n const {\n isDisabled: fieldDisabled,\n reason,\n workflowRequestUi,\n } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n resolvedVariantPermissions,\n entryAcl,\n entryWorkflowStageDetails,\n );\n const handleRequestEditAccess = async () => {\n try {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REQUEST_EDIT_ACCESS,\n {\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n }\n );\n } catch (error) {\n console.error(\n \"Error opening request edit access flow:\",\n error\n );\n }\n };\n\n const handleLinkVariant = async () => {\n try {\n if (fieldSchema.field_metadata?.canLinkVariant) {\n const result = await visualBuilderPostMessage?.send<{\n type: typeof RESULT_TYPES.SUCCESS | typeof RESULT_TYPES.ERROR;\n message: string;\n }>(\n VisualBuilderPostMessageEvents.OPEN_LINK_VARIANT_MODAL,\n {\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n }\n );\n\n // If the modal was closed or linking failed, do nothing\n if (!result || result.type === RESULT_TYPES.ERROR) {\n return;\n }\n\n // If linking was successful and requires revalidation, revalidate\n if (result.type === RESULT_TYPES.SUCCESS) {\n await handleRevalidateFieldData();\n }\n }\n } catch (error) {\n console.error(\n \"Error in link variant modal flow:\",\n error\n );\n }\n };\n\n const currentFieldDisplayName =\n displayNames?.[props.fieldMetadata.cslpValue] ??\n fieldSchema.display_name;\n\n const hasParentPaths = !!props?.parentPaths?.length;\n const isVariant = props.fieldMetadata.variant ? true : false;\n\n const usePlainDataTooltip =\n reason &&\n !reason.includes(DisableReason.CanLinkVariant) &&\n workflowRequestUi == null;\n\n setCurrentField({\n text: currentFieldDisplayName,\n contentTypeName: contentTypeName ?? \"\",\n icon: fieldDisabled ? (\n <FieldLabelDisabledIcon\n reason={reason}\n {...(workflowRequestUi != null\n ? { workflowRequestUi }\n : {})}\n usePlainDataTooltip={Boolean(usePlainDataTooltip)}\n onLinkVariant={handleLinkVariant}\n onRequestEditAccess={handleRequestEditAccess}\n />\n ) : hasParentPaths ? (\n <CaretIcon />\n ) : (\n <></>\n ),\n isReference,\n prefixIcon: getFieldIcon(fieldSchema),\n disabled: fieldDisabled,\n referenceFieldName,\n parentContentTypeName,\n isVariant: isVariant,\n });\n\n if (displayNames) {\n setDisplayNames(displayNames);\n }\n if (Object.keys(displayNames || {})?.length === allPaths.length) {\n setDataLoading(false);\n }\n };\n\n try {\n fetchData();\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error fetching field label data\", e);\n }\n }, [props]);\n\n const onParentPathClick = (cslp: string) => {\n const parentElement = props.getParentEditableElement(cslp);\n if (parentElement) {\n // emulate clicking on the parent element\n parentElement.click();\n }\n };\n\n function getCurrentFieldIcon() {\n if (error) {\n return null;\n } else if (dataLoading) {\n return <LoadingIcon />;\n } else {\n return currentField.icon;\n }\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-container\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-container\"\n ]\n )}\n >\n {currentField.isVariant ? <VariantIndicator /> : null}\n <ToolbarTooltip data={{contentTypeName: currentField.parentContentTypeName, referenceFieldName: currentField.referenceFieldName}} disabled={!currentField.isReference || isDropdownOpen}>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper\"\n ],\n {\n \"visual-builder__focused-toolbar--field-disabled\":\n currentField.disabled,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--field-disabled\"\n ]]: currentField.disabled,\n },\n {\n \"field-label-dropdown-open\": isDropdownOpen,\n [visualBuilderStyles()[\"field-label-dropdown-open\"]]:\n isDropdownOpen,\n },\n {\n \"visual-builder__focused-toolbar--variant\":\n currentField.isVariant,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--variant\"\n ]]: currentField.isVariant,\n }\n )}\n onClick={() => setIsDropdownOpen((prev) => !prev)}\n data-testid=\"visual-builder__focused-toolbar__field-label-wrapper\"\n data-hovered-cslp={props.fieldMetadata.cslpValue}\n >\n <button\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field visual-builder__button visual-builder__button--primary visual-builder__button-loader\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--primary\"\n ],\n visualBuilderStyles()[\"visual-builder__button-loader\"],\n error &&\n visualBuilderStyles()[\n \"visual-builder__button-error\"\n ]\n )}\n disabled={dataLoading}\n >\n {\n currentField.isReference && !dataLoading && !error ? \n <div\n className={classNames(\n \"visual-builder__reference-icon-container\",\n visualBuilderStyles()[\"visual-builder__reference-icon-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: FieldTypeIconsMap.reference,\n }}\n data-testid=\"visual-builder__field-icon-caret\"\n />\n <CaretRightIcon />\n </div> : null\n }\n {\n currentField.contentTypeName && !dataLoading && !error ?\n <>\n <ContentTypeIcon />\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__ct-name\"\n >\n {currentField.contentTypeName + \" : \"}\n </div>\n </> : null\n }\n {currentField.prefixIcon ? (\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: currentField.prefixIcon,\n }}\n data-testid=\"visual-builder__field-icon\"\n />\n ) : null}\n {currentField.text ? (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__text\"\n >\n {currentField.text}\n </div>\n ) : null}\n {getCurrentFieldIcon()}\n {error ? <CslpError /> : null}\n </button>\n {props.parentPaths.map((path, index) => (\n <button\n key={path}\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field visual-builder__button visual-builder__button--secondary visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--secondary\"\n ],\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-target-cslp={path}\n style={{ top: calculateTopOffset(index) }}\n onClick={() => onParentPathClick(path)}\n >\n {displayNames[path]}\n </button>\n ))}\n </div>\n </ToolbarTooltip>\n </div>\n );\n}\n\nexport default FieldLabelWrapperComponent;\n"],"mappings":"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","names":["import_icons","visualBuilderPostMessage","classNames","displayNames","error"]}
@@ -2,7 +2,7 @@ import "../../chunk-5WRI5ZAA.js";
2
2
 
3
3
  // src/visualBuilder/components/fieldLabelWrapper.tsx
4
4
  import classNames from "classnames";
5
- import { useEffect, useState } from "preact/compat";
5
+ import { useEffect, useRef, useState } from "preact/compat";
6
6
  import { extractDetailsFromCslp, isValidCslp } from "../../cslp/index.js";
7
7
  import { FieldSchemaMap } from "../utils/fieldSchemaMap.js";
8
8
  import { DisableReason, isFieldDisabled } from "../utils/isFieldDisabled.js";
@@ -46,6 +46,85 @@ async function getReferenceParentMap() {
46
46
  return {};
47
47
  }
48
48
  }
49
+ var TOOLTIP_VIEWPORT_TOP_CLEARANCE_PX = 148;
50
+ function FieldLabelDisabledIcon(props) {
51
+ const {
52
+ reason,
53
+ workflowRequestUi,
54
+ usePlainDataTooltip,
55
+ onLinkVariant,
56
+ onRequestEditAccess
57
+ } = props;
58
+ const wrapRef = useRef(null);
59
+ const [showTooltipBelow, setShowTooltipBelow] = useState(false);
60
+ const updateTooltipPlacement = () => {
61
+ const el = wrapRef.current;
62
+ if (!el) return;
63
+ const { top } = el.getBoundingClientRect();
64
+ setShowTooltipBelow(top < TOOLTIP_VIEWPORT_TOP_CLEARANCE_PX);
65
+ };
66
+ const customTooltipClass = classNames(
67
+ visualBuilderStyles()["visual-builder__custom-tooltip"],
68
+ showTooltipBelow && visualBuilderStyles()["visual-builder__custom-tooltip--below"]
69
+ );
70
+ const workflowAccessTooltipClass = classNames(
71
+ visualBuilderStyles()["visual-builder__custom-tooltip"],
72
+ showTooltipBelow && visualBuilderStyles()["visual-builder__custom-tooltip--below"],
73
+ visualBuilderStyles()["visual-builder__custom-tooltip--workflow-access"]
74
+ );
75
+ return /* @__PURE__ */ jsxs(
76
+ "div",
77
+ {
78
+ ref: wrapRef,
79
+ onMouseEnter: updateTooltipPlacement,
80
+ className: classNames(
81
+ visualBuilderStyles()["visual-builder__tooltip--persistent"],
82
+ showTooltipBelow && visualBuilderStyles()["visual-builder__tooltip--persistent--below"]
83
+ ),
84
+ "data-tooltip": usePlainDataTooltip ? reason : void 0,
85
+ children: [
86
+ reason?.includes(DisableReason.CanLinkVariant) ? /* @__PURE__ */ jsx("div", { className: customTooltipClass, onClick: onLinkVariant, children: (() => {
87
+ const [before, after] = reason.split(
88
+ DisableReason.UnderlinedAndClickableWord
89
+ );
90
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
91
+ before,
92
+ /* @__PURE__ */ jsx("span", { style: { textDecoration: "underline" }, children: DisableReason.UnderlinedAndClickableWord }),
93
+ after
94
+ ] });
95
+ })() }) : null,
96
+ workflowRequestUi === "request" && reason ? /* @__PURE__ */ jsxs("div", { className: workflowAccessTooltipClass, children: [
97
+ /* @__PURE__ */ jsx("span", { children: reason }),
98
+ " ",
99
+ /* @__PURE__ */ jsx(
100
+ "span",
101
+ {
102
+ role: "button",
103
+ tabIndex: 0,
104
+ style: {
105
+ textDecoration: "underline",
106
+ cursor: "pointer"
107
+ },
108
+ onClick: (e) => {
109
+ e.stopPropagation();
110
+ onRequestEditAccess();
111
+ },
112
+ onKeyDown: (e) => {
113
+ if (e.key === "Enter" || e.key === " ") {
114
+ e.preventDefault();
115
+ onRequestEditAccess();
116
+ }
117
+ },
118
+ children: "Request Edit Access"
119
+ }
120
+ )
121
+ ] }) : null,
122
+ workflowRequestUi === "pending" && reason ? /* @__PURE__ */ jsx("div", { className: workflowAccessTooltipClass, children: reason }) : null,
123
+ /* @__PURE__ */ jsx(InfoIcon, {})
124
+ ]
125
+ }
126
+ );
127
+ }
49
128
  function FieldLabelWrapperComponent(props) {
50
129
  const { eventDetails } = props;
51
130
  const [currentField, setCurrentField] = useState({
@@ -125,13 +204,35 @@ function FieldLabelWrapperComponent(props) {
125
204
  variantUid: props.fieldMetadata.variant,
126
205
  fieldPathWithIndex: props.fieldMetadata.fieldPathWithIndex
127
206
  });
128
- const { isDisabled: fieldDisabled, reason } = isFieldDisabled(
207
+ const {
208
+ isDisabled: fieldDisabled,
209
+ reason,
210
+ workflowRequestUi
211
+ } = isFieldDisabled(
129
212
  fieldSchema,
130
213
  eventDetails,
131
214
  resolvedVariantPermissions,
132
215
  entryAcl,
133
216
  entryWorkflowStageDetails
134
217
  );
218
+ const handleRequestEditAccess = async () => {
219
+ try {
220
+ await visualBuilderPostMessage?.send(
221
+ VisualBuilderPostMessageEvents.OPEN_REQUEST_EDIT_ACCESS,
222
+ {
223
+ entryUid: props.fieldMetadata.entry_uid,
224
+ contentTypeUid: props.fieldMetadata.content_type_uid,
225
+ locale: props.fieldMetadata.locale,
226
+ variantUid: props.fieldMetadata.variant
227
+ }
228
+ );
229
+ } catch (error2) {
230
+ console.error(
231
+ "Error opening request edit access flow:",
232
+ error2
233
+ );
234
+ }
235
+ };
135
236
  const handleLinkVariant = async () => {
136
237
  try {
137
238
  if (fieldSchema.field_metadata?.canLinkVariant) {
@@ -158,36 +259,18 @@ function FieldLabelWrapperComponent(props) {
158
259
  const currentFieldDisplayName = displayNames2?.[props.fieldMetadata.cslpValue] ?? fieldSchema.display_name;
159
260
  const hasParentPaths = !!props?.parentPaths?.length;
160
261
  const isVariant = props.fieldMetadata.variant ? true : false;
262
+ const usePlainDataTooltip = reason && !reason.includes(DisableReason.CanLinkVariant) && workflowRequestUi == null;
161
263
  setCurrentField({
162
264
  text: currentFieldDisplayName,
163
265
  contentTypeName: contentTypeName ?? "",
164
- icon: fieldDisabled ? /* @__PURE__ */ jsxs(
165
- "div",
266
+ icon: fieldDisabled ? /* @__PURE__ */ jsx(
267
+ FieldLabelDisabledIcon,
166
268
  {
167
- className: classNames(
168
- visualBuilderStyles()["visual-builder__tooltip--persistent"]
169
- ),
170
- "data-tooltip": !reason?.includes(DisableReason.CanLinkVariant) ? reason : void 0,
171
- children: [
172
- reason.includes(DisableReason.CanLinkVariant) && /* @__PURE__ */ jsx(
173
- "div",
174
- {
175
- className: visualBuilderStyles()["visual-builder__custom-tooltip"],
176
- onClick: handleLinkVariant,
177
- children: (() => {
178
- const [before, after] = reason.split(
179
- DisableReason.UnderlinedAndClickableWord
180
- );
181
- return /* @__PURE__ */ jsxs(Fragment, { children: [
182
- before,
183
- /* @__PURE__ */ jsx("span", { style: { textDecoration: "underline" }, children: DisableReason.UnderlinedAndClickableWord }),
184
- after
185
- ] });
186
- })()
187
- }
188
- ),
189
- /* @__PURE__ */ jsx(InfoIcon, {})
190
- ]
269
+ reason,
270
+ ...workflowRequestUi != null ? { workflowRequestUi } : {},
271
+ usePlainDataTooltip: Boolean(usePlainDataTooltip),
272
+ onLinkVariant: handleLinkVariant,
273
+ onRequestEditAccess: handleRequestEditAccess
191
274
  }
192
275
  ) : hasParentPaths ? /* @__PURE__ */ jsx(CaretIcon, {}) : /* @__PURE__ */ jsx(Fragment, {}),
193
276
  isReference,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/visualBuilder/components/fieldLabelWrapper.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useEffect, useState } from \"preact/compat\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { DisableReason, isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { CaretIcon, CaretRightIcon, InfoIcon } from \"./icons\";\nimport { LoadingIcon } from \"./icons/loading\";\nimport { FieldTypeIconsMap, getFieldIcon } from \"../generators/generateCustomCursor\";\nimport { uniqBy } from \"lodash-es\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { CslpError } from \"./CslpError\";\nimport { hasPostMessageError } from \"../utils/errorHandling\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { ContentTypeIcon } from \"./icons\";\nimport { ToolbarTooltip } from \"./Tooltip\";\nimport { fetchEntryPermissionsAndStageDetails } from \"../utils/fetchEntryPermissionsAndStageDetails\";\nimport { VariantIndicator } from \"./VariantIndicator\";\nimport { handleRevalidateFieldData } from \"../eventManager/useRevalidateFieldDataPostMessageEvent\";\nimport { RESULT_TYPES } from \"../utils/constants\";\n\ninterface ReferenceParentMap {\n [entryUid: string]: {\n contentTypeUid: string;\n contentTypeTitle: string;\n referenceFieldName: string;\n }[]\n}\n\nasync function getFieldDisplayNames(fieldMetadata: CslpData[]) {\n const result = await visualBuilderPostMessage?.send<{\n [k: string]: string;\n }>(VisualBuilderPostMessageEvents.GET_FIELD_DISPLAY_NAMES, fieldMetadata);\n return result;\n}\n\nasync function getContentTypeName(contentTypeUid: string) {\n try {\n const result = await visualBuilderPostMessage?.send<{\n contentTypeName: string;\n }>(VisualBuilderPostMessageEvents.GET_CONTENT_TYPE_NAME, {\n content_type_uid: contentTypeUid,\n });\n return result?.contentTypeName;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting content type name\", e);\n return \"\";\n }\n}\n\nasync function getReferenceParentMap() {\n try {\n const result = await visualBuilderPostMessage?.send<ReferenceParentMap>(VisualBuilderPostMessageEvents.REFERENCE_MAP, {}) ?? {};\n return result;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting reference parent map\", e);\n return {};\n }\n}\n\ninterface FieldLabelWrapperProps {\n fieldMetadata: CslpData;\n eventDetails: VisualBuilderCslpEventDetails;\n parentPaths: string[];\n getParentEditableElement: (cslp: string) => HTMLElement | null;\n}\n\ninterface ICurrentField {\n text: string;\n contentTypeName: string;\n icon: JSX.Element;\n prefixIcon: any;\n disabled: boolean;\n isVariant: boolean;\n isReference: boolean;\n referenceFieldName: string;\n parentContentTypeName: string;\n}\n\nfunction FieldLabelWrapperComponent(\n props: FieldLabelWrapperProps\n): JSX.Element {\n const { eventDetails } = props;\n const [currentField, setCurrentField] = useState<ICurrentField>({\n text: \"\",\n contentTypeName: \"\",\n icon: <CaretIcon />,\n prefixIcon: null,\n disabled: false,\n isVariant: false,\n isReference: false,\n referenceFieldName: \"\",\n parentContentTypeName: \"\",\n });\n const [displayNames, setDisplayNames] = useState<Record<string, string>>(\n {}\n );\n const [dataLoading, setDataLoading] = useState(true);\n const [error, setError] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n function calculateTopOffset(index: number) {\n const height = -30; // from bottom\n const offset = (index + 1) * height;\n return `${offset}px`;\n }\n\n useEffect(() => {\n const fetchData = async () => {\n setDataLoading(true);\n const allPaths = uniqBy(\n [\n props.fieldMetadata,\n ...props.parentPaths\n .filter((path) => path)\n .map((path) => {\n return extractDetailsFromCslp(path);\n }),\n ],\n \"cslpValue\"\n );\n const [displayNames, fieldSchema, contentTypeName, referenceParentMap] = await Promise.all([\n getFieldDisplayNames(allPaths),\n FieldSchemaMap.getFieldSchema(\n props.fieldMetadata.content_type_uid,\n props.fieldMetadata.fieldPath\n ),\n getContentTypeName(\n props.fieldMetadata.content_type_uid\n ),\n getReferenceParentMap()\n ]);\n const entryUid = props.fieldMetadata.entry_uid;\n\n const referenceData = referenceParentMap[entryUid];\n const isReference = !!referenceData;\n\n let referenceFieldName = referenceData ? referenceData[0].referenceFieldName : \"\";\n let parentContentTypeName = referenceData ? referenceData[0].contentTypeTitle : \"\";\n\n if(isReference) {\n const domAncestor = eventDetails.editableElement.closest(`[data-cslp]:not([data-cslp^=\"${props.fieldMetadata.content_type_uid}\"])`);\n if(domAncestor) {\n const domAncestorCslp = domAncestor.getAttribute(\"data-cslp\");\n if (isValidCslp(domAncestorCslp)) {\n const domAncestorDetails = extractDetailsFromCslp(domAncestorCslp);\n const domAncestorContentTypeUid = domAncestorDetails.content_type_uid;\n const domAncestorContentParent = referenceData?.find(data => data.contentTypeUid === domAncestorContentTypeUid);\n if(domAncestorContentParent) {\n referenceFieldName = domAncestorContentParent.referenceFieldName;\n parentContentTypeName = domAncestorContentParent.contentTypeTitle;\n }\n }\n }\n }\n\n if (hasPostMessageError(displayNames) || !fieldSchema) {\n setDataLoading(false);\n setError(true);\n\n return;\n }\n\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid: props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n fieldPathWithIndex: props.fieldMetadata.fieldPathWithIndex,\n });\n const { isDisabled: fieldDisabled, reason } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n resolvedVariantPermissions,\n entryAcl,\n entryWorkflowStageDetails,\n );\n\n const handleLinkVariant = async () => {\n try {\n if (fieldSchema.field_metadata?.canLinkVariant) {\n const result = await visualBuilderPostMessage?.send<{\n type: typeof RESULT_TYPES.SUCCESS | typeof RESULT_TYPES.ERROR;\n message: string;\n }>(\n VisualBuilderPostMessageEvents.OPEN_LINK_VARIANT_MODAL,\n {\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n }\n );\n\n // If the modal was closed or linking failed, do nothing\n if (!result || result.type === RESULT_TYPES.ERROR) {\n return;\n }\n\n // If linking was successful and requires revalidation, revalidate\n if (result.type === RESULT_TYPES.SUCCESS) {\n await handleRevalidateFieldData();\n }\n }\n } catch (error) {\n console.error(\n \"Error in link variant modal flow:\",\n error\n );\n }\n };\n\n const currentFieldDisplayName =\n displayNames?.[props.fieldMetadata.cslpValue] ??\n fieldSchema.display_name;\n\n const hasParentPaths = !!props?.parentPaths?.length;\n const isVariant = props.fieldMetadata.variant ? true : false;\n\n setCurrentField({\n text: currentFieldDisplayName,\n contentTypeName: contentTypeName ?? \"\",\n icon: fieldDisabled ? (\n <div\n className={classNames(\n visualBuilderStyles()[\n \"visual-builder__tooltip--persistent\"\n ]\n )}\n data-tooltip={!reason?.includes(DisableReason.CanLinkVariant)\n ? reason\n : undefined}\n >\n {reason\n .includes(DisableReason.CanLinkVariant) && (\n <div\n className={visualBuilderStyles()[\"visual-builder__custom-tooltip\"]}\n onClick={handleLinkVariant}\n >\n {(() => {\n const [before, after] = reason.split(\n DisableReason.UnderlinedAndClickableWord\n );\n return (\n <>\n {before}\n <span style={{ textDecoration: \"underline\" }}>{DisableReason.UnderlinedAndClickableWord}</span>\n {after}\n </>\n );\n })()}\n </div>\n )}\n <InfoIcon />\n </div>\n ) : hasParentPaths ? (\n <CaretIcon />\n ) : (\n <></>\n ),\n isReference,\n prefixIcon: getFieldIcon(fieldSchema),\n disabled: fieldDisabled,\n referenceFieldName,\n parentContentTypeName,\n isVariant: isVariant,\n });\n\n if (displayNames) {\n setDisplayNames(displayNames);\n }\n if (Object.keys(displayNames || {})?.length === allPaths.length) {\n setDataLoading(false);\n }\n };\n\n try {\n fetchData();\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error fetching field label data\", e);\n }\n }, [props]);\n\n const onParentPathClick = (cslp: string) => {\n const parentElement = props.getParentEditableElement(cslp);\n if (parentElement) {\n // emulate clicking on the parent element\n parentElement.click();\n }\n };\n\n function getCurrentFieldIcon() {\n if (error) {\n return null;\n } else if (dataLoading) {\n return <LoadingIcon />;\n } else {\n return currentField.icon;\n }\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-container\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-container\"\n ]\n )}\n >\n {currentField.isVariant ? <VariantIndicator /> : null}\n <ToolbarTooltip data={{contentTypeName: currentField.parentContentTypeName, referenceFieldName: currentField.referenceFieldName}} disabled={!currentField.isReference || isDropdownOpen}>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper\"\n ],\n {\n \"visual-builder__focused-toolbar--field-disabled\":\n currentField.disabled,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--field-disabled\"\n ]]: currentField.disabled,\n },\n {\n \"field-label-dropdown-open\": isDropdownOpen,\n [visualBuilderStyles()[\"field-label-dropdown-open\"]]:\n isDropdownOpen,\n },\n {\n \"visual-builder__focused-toolbar--variant\":\n currentField.isVariant,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--variant\"\n ]]: currentField.isVariant,\n }\n )}\n onClick={() => setIsDropdownOpen((prev) => !prev)}\n data-testid=\"visual-builder__focused-toolbar__field-label-wrapper\"\n data-hovered-cslp={props.fieldMetadata.cslpValue}\n >\n <button\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field visual-builder__button visual-builder__button--primary visual-builder__button-loader\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--primary\"\n ],\n visualBuilderStyles()[\"visual-builder__button-loader\"],\n error &&\n visualBuilderStyles()[\n \"visual-builder__button-error\"\n ]\n )}\n disabled={dataLoading}\n >\n {\n currentField.isReference && !dataLoading && !error ? \n <div\n className={classNames(\n \"visual-builder__reference-icon-container\",\n visualBuilderStyles()[\"visual-builder__reference-icon-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: FieldTypeIconsMap.reference,\n }}\n data-testid=\"visual-builder__field-icon-caret\"\n />\n <CaretRightIcon />\n </div> : null\n }\n {\n currentField.contentTypeName && !dataLoading && !error ?\n <>\n <ContentTypeIcon />\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__ct-name\"\n >\n {currentField.contentTypeName + \" : \"}\n </div>\n </> : null\n }\n {currentField.prefixIcon ? (\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: currentField.prefixIcon,\n }}\n data-testid=\"visual-builder__field-icon\"\n />\n ) : null}\n {currentField.text ? (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__text\"\n >\n {currentField.text}\n </div>\n ) : null}\n {getCurrentFieldIcon()}\n {error ? <CslpError /> : null}\n </button>\n {props.parentPaths.map((path, index) => (\n <button\n key={path}\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field visual-builder__button visual-builder__button--secondary visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--secondary\"\n ],\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-target-cslp={path}\n style={{ top: calculateTopOffset(index) }}\n onClick={() => onParentPathClick(path)}\n >\n {displayNames[path]}\n </button>\n ))}\n </div>\n </ToolbarTooltip>\n </div>\n );\n}\n\nexport default FieldLabelWrapperComponent;\n"],"mappings":"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","names":["displayNames","error"]}
1
+ {"version":3,"sources":["../../../../src/visualBuilder/components/fieldLabelWrapper.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useEffect, useRef, useState } from \"preact/compat\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { DisableReason, isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { CaretIcon, CaretRightIcon, InfoIcon } from \"./icons\";\nimport { LoadingIcon } from \"./icons/loading\";\nimport { FieldTypeIconsMap, getFieldIcon } from \"../generators/generateCustomCursor\";\nimport { uniqBy } from \"lodash-es\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { CslpError } from \"./CslpError\";\nimport { hasPostMessageError } from \"../utils/errorHandling\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { ContentTypeIcon } from \"./icons\";\nimport { ToolbarTooltip } from \"./Tooltip\";\nimport { fetchEntryPermissionsAndStageDetails } from \"../utils/fetchEntryPermissionsAndStageDetails\";\nimport { VariantIndicator } from \"./VariantIndicator\";\nimport { handleRevalidateFieldData } from \"../eventManager/useRevalidateFieldDataPostMessageEvent\";\nimport { RESULT_TYPES } from \"../utils/constants\";\n\ninterface ReferenceParentMap {\n [entryUid: string]: {\n contentTypeUid: string;\n contentTypeTitle: string;\n referenceFieldName: string;\n }[]\n}\n\nasync function getFieldDisplayNames(fieldMetadata: CslpData[]) {\n const result = await visualBuilderPostMessage?.send<{\n [k: string]: string;\n }>(VisualBuilderPostMessageEvents.GET_FIELD_DISPLAY_NAMES, fieldMetadata);\n return result;\n}\n\nasync function getContentTypeName(contentTypeUid: string) {\n try {\n const result = await visualBuilderPostMessage?.send<{\n contentTypeName: string;\n }>(VisualBuilderPostMessageEvents.GET_CONTENT_TYPE_NAME, {\n content_type_uid: contentTypeUid,\n });\n return result?.contentTypeName;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting content type name\", e);\n return \"\";\n }\n}\n\nasync function getReferenceParentMap() {\n try {\n const result = await visualBuilderPostMessage?.send<ReferenceParentMap>(VisualBuilderPostMessageEvents.REFERENCE_MAP, {}) ?? {};\n return result;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting reference parent map\", e);\n return {};\n }\n}\n\ninterface FieldLabelWrapperProps {\n fieldMetadata: CslpData;\n eventDetails: VisualBuilderCslpEventDetails;\n parentPaths: string[];\n getParentEditableElement: (cslp: string) => HTMLElement | null;\n}\n\ninterface ICurrentField {\n text: string;\n contentTypeName: string;\n icon: JSX.Element;\n prefixIcon: any;\n disabled: boolean;\n isVariant: boolean;\n isReference: boolean;\n referenceFieldName: string;\n parentContentTypeName: string;\n}\n\n/** Space needed above the icon for the default (above) tooltip before flipping below. */\nconst TOOLTIP_VIEWPORT_TOP_CLEARANCE_PX = 148;\n\ninterface FieldLabelDisabledIconProps {\n reason: string;\n workflowRequestUi?: \"request\" | \"pending\";\n usePlainDataTooltip: boolean;\n onLinkVariant: () => void;\n onRequestEditAccess: () => void | Promise<void>;\n}\n\nfunction FieldLabelDisabledIcon(\n props: FieldLabelDisabledIconProps\n): JSX.Element {\n const {\n reason,\n workflowRequestUi,\n usePlainDataTooltip,\n onLinkVariant,\n onRequestEditAccess,\n } = props;\n const wrapRef = useRef<HTMLDivElement>(null);\n const [showTooltipBelow, setShowTooltipBelow] = useState(false);\n\n const updateTooltipPlacement = () => {\n const el = wrapRef.current;\n if (!el) return;\n const { top } = el.getBoundingClientRect();\n setShowTooltipBelow(top < TOOLTIP_VIEWPORT_TOP_CLEARANCE_PX);\n };\n\n const customTooltipClass = classNames(\n visualBuilderStyles()[\"visual-builder__custom-tooltip\"],\n showTooltipBelow &&\n visualBuilderStyles()[\"visual-builder__custom-tooltip--below\"]\n );\n\n const workflowAccessTooltipClass = classNames(\n visualBuilderStyles()[\"visual-builder__custom-tooltip\"],\n showTooltipBelow &&\n visualBuilderStyles()[\"visual-builder__custom-tooltip--below\"],\n visualBuilderStyles()[\n \"visual-builder__custom-tooltip--workflow-access\"\n ]\n );\n\n return (\n <div\n ref={wrapRef}\n onMouseEnter={updateTooltipPlacement}\n className={classNames(\n visualBuilderStyles()[\"visual-builder__tooltip--persistent\"],\n showTooltipBelow &&\n visualBuilderStyles()[\n \"visual-builder__tooltip--persistent--below\"\n ]\n )}\n data-tooltip={usePlainDataTooltip ? reason : undefined}\n >\n {reason?.includes(DisableReason.CanLinkVariant) ? (\n <div className={customTooltipClass} onClick={onLinkVariant}>\n {(() => {\n const [before, after] = reason.split(\n DisableReason.UnderlinedAndClickableWord\n );\n return (\n <>\n {before}\n <span style={{ textDecoration: \"underline\" }}>\n {DisableReason.UnderlinedAndClickableWord}\n </span>\n {after}\n </>\n );\n })()}\n </div>\n ) : null}\n {workflowRequestUi === \"request\" && reason ? (\n <div className={workflowAccessTooltipClass}>\n <span>{reason}</span>{\" \"}\n <span\n role=\"button\"\n tabIndex={0}\n style={{\n textDecoration: \"underline\",\n cursor: \"pointer\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n onRequestEditAccess();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onRequestEditAccess();\n }\n }}\n >\n Request Edit Access\n </span>\n </div>\n ) : null}\n {workflowRequestUi === \"pending\" && reason ? (\n <div className={workflowAccessTooltipClass}>{reason}</div>\n ) : null}\n <InfoIcon />\n </div>\n );\n}\n\nfunction FieldLabelWrapperComponent(\n props: FieldLabelWrapperProps\n): JSX.Element {\n const { eventDetails } = props;\n const [currentField, setCurrentField] = useState<ICurrentField>({\n text: \"\",\n contentTypeName: \"\",\n icon: <CaretIcon />,\n prefixIcon: null,\n disabled: false,\n isVariant: false,\n isReference: false,\n referenceFieldName: \"\",\n parentContentTypeName: \"\",\n });\n const [displayNames, setDisplayNames] = useState<Record<string, string>>(\n {}\n );\n const [dataLoading, setDataLoading] = useState(true);\n const [error, setError] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n function calculateTopOffset(index: number) {\n const height = -30; // from bottom\n const offset = (index + 1) * height;\n return `${offset}px`;\n }\n\n useEffect(() => {\n const fetchData = async () => {\n setDataLoading(true);\n const allPaths = uniqBy(\n [\n props.fieldMetadata,\n ...props.parentPaths\n .filter((path) => path)\n .map((path) => {\n return extractDetailsFromCslp(path);\n }),\n ],\n \"cslpValue\"\n );\n const [displayNames, fieldSchema, contentTypeName, referenceParentMap] = await Promise.all([\n getFieldDisplayNames(allPaths),\n FieldSchemaMap.getFieldSchema(\n props.fieldMetadata.content_type_uid,\n props.fieldMetadata.fieldPath\n ),\n getContentTypeName(\n props.fieldMetadata.content_type_uid\n ),\n getReferenceParentMap()\n ]);\n const entryUid = props.fieldMetadata.entry_uid;\n\n const referenceData = referenceParentMap[entryUid];\n const isReference = !!referenceData;\n\n let referenceFieldName = referenceData ? referenceData[0].referenceFieldName : \"\";\n let parentContentTypeName = referenceData ? referenceData[0].contentTypeTitle : \"\";\n\n if(isReference) {\n const domAncestor = eventDetails.editableElement.closest(`[data-cslp]:not([data-cslp^=\"${props.fieldMetadata.content_type_uid}\"])`);\n if(domAncestor) {\n const domAncestorCslp = domAncestor.getAttribute(\"data-cslp\");\n if (isValidCslp(domAncestorCslp)) {\n const domAncestorDetails = extractDetailsFromCslp(domAncestorCslp);\n const domAncestorContentTypeUid = domAncestorDetails.content_type_uid;\n const domAncestorContentParent = referenceData?.find(data => data.contentTypeUid === domAncestorContentTypeUid);\n if(domAncestorContentParent) {\n referenceFieldName = domAncestorContentParent.referenceFieldName;\n parentContentTypeName = domAncestorContentParent.contentTypeTitle;\n }\n }\n }\n }\n\n if (hasPostMessageError(displayNames) || !fieldSchema) {\n setDataLoading(false);\n setError(true);\n\n return;\n }\n\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid: props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n fieldPathWithIndex: props.fieldMetadata.fieldPathWithIndex,\n });\n const {\n isDisabled: fieldDisabled,\n reason,\n workflowRequestUi,\n } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n resolvedVariantPermissions,\n entryAcl,\n entryWorkflowStageDetails,\n );\n const handleRequestEditAccess = async () => {\n try {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REQUEST_EDIT_ACCESS,\n {\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n }\n );\n } catch (error) {\n console.error(\n \"Error opening request edit access flow:\",\n error\n );\n }\n };\n\n const handleLinkVariant = async () => {\n try {\n if (fieldSchema.field_metadata?.canLinkVariant) {\n const result = await visualBuilderPostMessage?.send<{\n type: typeof RESULT_TYPES.SUCCESS | typeof RESULT_TYPES.ERROR;\n message: string;\n }>(\n VisualBuilderPostMessageEvents.OPEN_LINK_VARIANT_MODAL,\n {\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n }\n );\n\n // If the modal was closed or linking failed, do nothing\n if (!result || result.type === RESULT_TYPES.ERROR) {\n return;\n }\n\n // If linking was successful and requires revalidation, revalidate\n if (result.type === RESULT_TYPES.SUCCESS) {\n await handleRevalidateFieldData();\n }\n }\n } catch (error) {\n console.error(\n \"Error in link variant modal flow:\",\n error\n );\n }\n };\n\n const currentFieldDisplayName =\n displayNames?.[props.fieldMetadata.cslpValue] ??\n fieldSchema.display_name;\n\n const hasParentPaths = !!props?.parentPaths?.length;\n const isVariant = props.fieldMetadata.variant ? true : false;\n\n const usePlainDataTooltip =\n reason &&\n !reason.includes(DisableReason.CanLinkVariant) &&\n workflowRequestUi == null;\n\n setCurrentField({\n text: currentFieldDisplayName,\n contentTypeName: contentTypeName ?? \"\",\n icon: fieldDisabled ? (\n <FieldLabelDisabledIcon\n reason={reason}\n {...(workflowRequestUi != null\n ? { workflowRequestUi }\n : {})}\n usePlainDataTooltip={Boolean(usePlainDataTooltip)}\n onLinkVariant={handleLinkVariant}\n onRequestEditAccess={handleRequestEditAccess}\n />\n ) : hasParentPaths ? (\n <CaretIcon />\n ) : (\n <></>\n ),\n isReference,\n prefixIcon: getFieldIcon(fieldSchema),\n disabled: fieldDisabled,\n referenceFieldName,\n parentContentTypeName,\n isVariant: isVariant,\n });\n\n if (displayNames) {\n setDisplayNames(displayNames);\n }\n if (Object.keys(displayNames || {})?.length === allPaths.length) {\n setDataLoading(false);\n }\n };\n\n try {\n fetchData();\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error fetching field label data\", e);\n }\n }, [props]);\n\n const onParentPathClick = (cslp: string) => {\n const parentElement = props.getParentEditableElement(cslp);\n if (parentElement) {\n // emulate clicking on the parent element\n parentElement.click();\n }\n };\n\n function getCurrentFieldIcon() {\n if (error) {\n return null;\n } else if (dataLoading) {\n return <LoadingIcon />;\n } else {\n return currentField.icon;\n }\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-container\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-container\"\n ]\n )}\n >\n {currentField.isVariant ? <VariantIndicator /> : null}\n <ToolbarTooltip data={{contentTypeName: currentField.parentContentTypeName, referenceFieldName: currentField.referenceFieldName}} disabled={!currentField.isReference || isDropdownOpen}>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper\"\n ],\n {\n \"visual-builder__focused-toolbar--field-disabled\":\n currentField.disabled,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--field-disabled\"\n ]]: currentField.disabled,\n },\n {\n \"field-label-dropdown-open\": isDropdownOpen,\n [visualBuilderStyles()[\"field-label-dropdown-open\"]]:\n isDropdownOpen,\n },\n {\n \"visual-builder__focused-toolbar--variant\":\n currentField.isVariant,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--variant\"\n ]]: currentField.isVariant,\n }\n )}\n onClick={() => setIsDropdownOpen((prev) => !prev)}\n data-testid=\"visual-builder__focused-toolbar__field-label-wrapper\"\n data-hovered-cslp={props.fieldMetadata.cslpValue}\n >\n <button\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field visual-builder__button visual-builder__button--primary visual-builder__button-loader\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--primary\"\n ],\n visualBuilderStyles()[\"visual-builder__button-loader\"],\n error &&\n visualBuilderStyles()[\n \"visual-builder__button-error\"\n ]\n )}\n disabled={dataLoading}\n >\n {\n currentField.isReference && !dataLoading && !error ? \n <div\n className={classNames(\n \"visual-builder__reference-icon-container\",\n visualBuilderStyles()[\"visual-builder__reference-icon-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: FieldTypeIconsMap.reference,\n }}\n data-testid=\"visual-builder__field-icon-caret\"\n />\n <CaretRightIcon />\n </div> : null\n }\n {\n currentField.contentTypeName && !dataLoading && !error ?\n <>\n <ContentTypeIcon />\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__ct-name\"\n >\n {currentField.contentTypeName + \" : \"}\n </div>\n </> : null\n }\n {currentField.prefixIcon ? (\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: currentField.prefixIcon,\n }}\n data-testid=\"visual-builder__field-icon\"\n />\n ) : null}\n {currentField.text ? (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__text\"\n >\n {currentField.text}\n </div>\n ) : null}\n {getCurrentFieldIcon()}\n {error ? <CslpError /> : null}\n </button>\n {props.parentPaths.map((path, index) => (\n <button\n key={path}\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field visual-builder__button visual-builder__button--secondary visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--secondary\"\n ],\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-target-cslp={path}\n style={{ top: calculateTopOffset(index) }}\n onClick={() => onParentPathClick(path)}\n >\n {displayNames[path]}\n </button>\n ))}\n </div>\n </ToolbarTooltip>\n </div>\n );\n}\n\nexport default FieldLabelWrapperComponent;\n"],"mappings":"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","names":["displayNames","error"]}
@@ -68,6 +68,10 @@ async function getWorkflowStageDetails({
68
68
  entry: {
69
69
  update: true
70
70
  }
71
+ },
72
+ requestEditAccess: {
73
+ canRequest: false,
74
+ hasPending: false
71
75
  }
72
76
  };
73
77
  }
@@ -1 +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;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA+C;AAC/C,sCAAqC;AAErC,eAAsB,wBAAwB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAKkC;AAC9B,MAAI;AACA,UAAM,SACF,MAAM,gCAAAA,SAA0B;AAAA,MAC5B,kDAA+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":["visualBuilderPostMessage"]}
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 requestEditAccess: {\n canRequest: false,\n hasPending: false,\n },\n };\n}\n\n/** Mirrors visual-editor GET_WORKFLOW_STAGE_DETAILS payload (QuickForm / canvas alignment). */\nexport interface WorkflowStageRequestEditAccess {\n canRequest: boolean;\n hasPending: boolean;\n}\n\nexport interface WorkflowStageDetails {\n stage:\n | {\n name: string;\n }\n | undefined;\n permissions: {\n entry: {\n update: boolean;\n };\n };\n /** Present when returned by visual-editor; omitted in legacy SDK-only fallbacks. */\n requestEditAccess?: WorkflowStageRequestEditAccess;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA+C;AAC/C,sCAAqC;AAErC,eAAsB,wBAAwB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAKkC;AAC9B,MAAI;AACA,UAAM,SACF,MAAM,gCAAAA,SAA0B;AAAA,MAC5B,kDAA+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,IACA,mBAAmB;AAAA,MACf,YAAY;AAAA,MACZ,YAAY;AAAA,IAChB;AAAA,EACJ;AACJ;","names":["visualBuilderPostMessage"]}
@@ -4,6 +4,11 @@ declare function getWorkflowStageDetails({ entryUid, contentTypeUid, locale, var
4
4
  locale: string;
5
5
  variantUid?: string | undefined;
6
6
  }): Promise<WorkflowStageDetails>;
7
+ /** Mirrors visual-editor GET_WORKFLOW_STAGE_DETAILS payload (QuickForm / canvas alignment). */
8
+ interface WorkflowStageRequestEditAccess {
9
+ canRequest: boolean;
10
+ hasPending: boolean;
11
+ }
7
12
  interface WorkflowStageDetails {
8
13
  stage: {
9
14
  name: string;
@@ -13,6 +18,8 @@ interface WorkflowStageDetails {
13
18
  update: boolean;
14
19
  };
15
20
  };
21
+ /** Present when returned by visual-editor; omitted in legacy SDK-only fallbacks. */
22
+ requestEditAccess?: WorkflowStageRequestEditAccess;
16
23
  }
17
24
 
18
- export { type WorkflowStageDetails, getWorkflowStageDetails };
25
+ export { type WorkflowStageDetails, type WorkflowStageRequestEditAccess, getWorkflowStageDetails };
@@ -4,6 +4,11 @@ declare function getWorkflowStageDetails({ entryUid, contentTypeUid, locale, var
4
4
  locale: string;
5
5
  variantUid?: string | undefined;
6
6
  }): Promise<WorkflowStageDetails>;
7
+ /** Mirrors visual-editor GET_WORKFLOW_STAGE_DETAILS payload (QuickForm / canvas alignment). */
8
+ interface WorkflowStageRequestEditAccess {
9
+ canRequest: boolean;
10
+ hasPending: boolean;
11
+ }
7
12
  interface WorkflowStageDetails {
8
13
  stage: {
9
14
  name: string;
@@ -13,6 +18,8 @@ interface WorkflowStageDetails {
13
18
  update: boolean;
14
19
  };
15
20
  };
21
+ /** Present when returned by visual-editor; omitted in legacy SDK-only fallbacks. */
22
+ requestEditAccess?: WorkflowStageRequestEditAccess;
16
23
  }
17
24
 
18
- export { type WorkflowStageDetails, getWorkflowStageDetails };
25
+ export { type WorkflowStageDetails, type WorkflowStageRequestEditAccess, getWorkflowStageDetails };
@@ -36,6 +36,10 @@ async function getWorkflowStageDetails({
36
36
  entry: {
37
37
  update: true
38
38
  }
39
+ },
40
+ requestEditAccess: {
41
+ canRequest: false,
42
+ hasPending: false
39
43
  }
40
44
  };
41
45
  }
@@ -1 +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":[]}
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 requestEditAccess: {\n canRequest: false,\n hasPending: false,\n },\n };\n}\n\n/** Mirrors visual-editor GET_WORKFLOW_STAGE_DETAILS payload (QuickForm / canvas alignment). */\nexport interface WorkflowStageRequestEditAccess {\n canRequest: boolean;\n hasPending: boolean;\n}\n\nexport interface WorkflowStageDetails {\n stage:\n | {\n name: string;\n }\n | undefined;\n permissions: {\n entry: {\n update: boolean;\n };\n };\n /** Present when returned by visual-editor; omitted in legacy SDK-only fallbacks. */\n requestEditAccess?: WorkflowStageRequestEditAccess;\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,IACA,mBAAmB;AAAA,MACf,YAAY;AAAA,MACZ,YAAY;AAAA,IAChB;AAAA,EACJ;AACJ;","names":[]}