@ntbjs/react-components 3.0.0-rc.1 → 3.0.0-rc.3

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 (139) hide show
  1. package/README.md +34 -0
  2. package/build/data/Alert/Alert.js.map +1 -1
  3. package/build/data/Alert/Alert.styled.js.map +1 -1
  4. package/build/data/Badge/Badge.js.map +1 -1
  5. package/build/data/Badge/Badge.styled.js.map +1 -1
  6. package/build/data/Popover/Popover.js.map +1 -1
  7. package/build/data/Popover/Popover.styled.js.map +1 -1
  8. package/build/data/SeverityBadge/SeverityBadge.js.map +1 -1
  9. package/build/data/Tab/Tab.js.map +1 -1
  10. package/build/data/Tab/Tab.styled.js.map +1 -1
  11. package/build/data/Tabs/Tabs.js.map +1 -1
  12. package/build/data/Tabs/Tabs.styled.js.map +1 -1
  13. package/build/data/Tooltip/Tooltip.js.map +1 -1
  14. package/build/data/Tooltip/Tooltip.styled.js.map +1 -1
  15. package/build/data/VerificationStatusIcon/VerificationStatusIcon.js.map +1 -1
  16. package/build/data/VerificationStatusIcon/VerificationStatusIcon.styled.js.map +1 -1
  17. package/build/data/_shared/FloatingArrow.styled.js.map +1 -1
  18. package/build/hooks/useEventListner.js.map +1 -1
  19. package/build/hooks/useFloatingPopover.js.map +1 -1
  20. package/build/hooks/useIsomorphicLayoutEffect.js.map +1 -1
  21. package/build/hooks/useOnClickOutside.js.map +1 -1
  22. package/build/hooks/useTooltipAutoShow.js.map +1 -1
  23. package/build/inputs/ActionButton/ActionButton.js.map +1 -1
  24. package/build/inputs/ActionButton/ActionButton.styled.js.map +1 -1
  25. package/build/inputs/Button/Button.js.map +1 -1
  26. package/build/inputs/Button/Button.styled.js.map +1 -1
  27. package/build/inputs/Checkbox/Checkbox.js.map +1 -1
  28. package/build/inputs/Checkbox/Checkbox.styled.js.map +1 -1
  29. package/build/inputs/CompactAutocompleteSelect/CompactAutocompleteSelect.js.map +1 -1
  30. package/build/inputs/CompactAutocompleteSelect/CompactAutocompleteSelect.styled.js.map +1 -1
  31. package/build/inputs/CompactStarRating/CompactStarRating.js.map +1 -1
  32. package/build/inputs/CompactStarRating/CompactStarRating.styled.js.map +1 -1
  33. package/build/inputs/CompactTextInput/CompactTextInput.js.map +1 -1
  34. package/build/inputs/CompactTextInput/CompactTextInput.styled.js.map +1 -1
  35. package/build/inputs/MultiLevelCheckbox/MultiLevelCheckbox.js.map +1 -1
  36. package/build/inputs/MultiLevelCheckbox/MultiLevelCheckbox.styled.js.map +1 -1
  37. package/build/inputs/MultiLevelCheckbox/types.js.map +1 -1
  38. package/build/inputs/MultiLevelCheckboxSelect/MultiLevelCheckboxSelect.js.map +1 -1
  39. package/build/inputs/MultiLevelCheckboxSelect/MultiLevelCheckboxSelect.styled.js.map +1 -1
  40. package/build/inputs/MultiSelect/MultiSelect.js.map +1 -1
  41. package/build/inputs/MultiSelect/MultiSelect.styled.js.map +1 -1
  42. package/build/inputs/Radio/Radio.js.map +1 -1
  43. package/build/inputs/Radio/Radio.styled.js.map +1 -1
  44. package/build/inputs/Switch/Switch.styled.js.map +1 -1
  45. package/build/inputs/TextArea/TextArea.js.map +1 -1
  46. package/build/inputs/TextArea/TextArea.styled.js.map +1 -1
  47. package/build/inputs/TextInput/TextInput.js.map +1 -1
  48. package/build/inputs/TextInput/TextInput.styled.js.map +1 -1
  49. package/build/layout/InputGroup/InputGroup.js.map +1 -1
  50. package/build/layout/InputGroup/InputGroup.styled.js.map +1 -1
  51. package/build/layout/SectionSeparator/SectionSeparator.js.map +1 -1
  52. package/build/layout/SectionSeparator/SectionSeparator.styled.js.map +1 -1
  53. package/build/styles/utils/colors-export.d.ts +6 -25
  54. package/build/utils/dateTime.js.map +1 -1
  55. package/build/utils/defaultTheme.js.map +1 -1
  56. package/build/utils/getElementRef.js.map +1 -1
  57. package/build/utils/parseTrigger.js.map +1 -1
  58. package/build/widgets/AssetAction/AssetAction.js.map +1 -1
  59. package/build/widgets/AssetAction/AssetAction.styled.js.map +1 -1
  60. package/build/widgets/AssetActionsBase/AssetActionsBase.js.map +1 -1
  61. package/build/widgets/AssetActionsBase/AssetActionsBase.styled.js.map +1 -1
  62. package/build/widgets/AssetGallery/AssetGallery.js.map +1 -1
  63. package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.js.map +1 -1
  64. package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.styled.js.map +1 -1
  65. package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.js.map +1 -1
  66. package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.styled.js.map +1 -1
  67. package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.js.map +1 -1
  68. package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.styled.js.map +1 -1
  69. package/build/widgets/AssetPreview/AssetPreviewTopBar/AssetPreviewTopBar.js.map +1 -1
  70. package/build/widgets/AssetPreview/AssetPreviewTopBar/AssetPreviewTopBar.styled.js.map +1 -1
  71. package/build/widgets/ContextMenu/ContextMenu.js.map +1 -1
  72. package/build/widgets/ContextMenu/ContextMenu.styled.js.map +1 -1
  73. package/build/widgets/ContextMenu/ContextMenuItem/ContextMenuItem.js.map +1 -1
  74. package/build/widgets/ContextMenu/ContextMenuItem/ContextMenuItem.styled.js.map +1 -1
  75. package/build/widgets/ContextMenu/ContextMenuItemsGroup/ContextMenuItemsGroup.js.map +1 -1
  76. package/build/widgets/ContextMenu/ContextMenuItemsGroup/ContextMenuItemsGroup.styled.js.map +1 -1
  77. package/build/widgets/InfoCard/InfoCard.js.map +1 -1
  78. package/build/widgets/InfoCard/InfoCard.styled.js.map +1 -1
  79. package/build/widgets/InstructionSeverityDisplay/InstructionSeverityDisplay.js.map +1 -1
  80. package/build/widgets/InstructionSeverityDisplay/InstructionSeverityDisplay.styled.js.map +1 -1
  81. package/build/widgets/Instructions/Instructions.js.map +1 -1
  82. package/build/widgets/Instructions/Instructions.styled.js.map +1 -1
  83. package/build/widgets/ProgressBar/ProgressBar.js.map +1 -1
  84. package/build/widgets/ProgressBar/ProgressBar.styled.js.map +1 -1
  85. package/build/widgets/SummaryCard/SummaryCard.js.map +1 -1
  86. package/build/widgets/SummaryCard/SummaryCard.styled.js.map +1 -1
  87. package/package.json +8 -1
  88. package/styles/utils/colors-export.d.ts +6 -25
  89. package/types/components/data/Alert/Alert.styled.d.ts +6 -37
  90. package/types/components/data/Badge/Badge.d.ts +1 -9
  91. package/types/components/data/Badge/Badge.styled.d.ts +0 -99
  92. package/types/components/data/Popover/Popover.d.ts +11 -100
  93. package/types/components/data/Tab/Tab.d.ts +1 -14
  94. package/types/components/data/Tabs/Tabs.styled.d.ts +1 -17
  95. package/types/components/data/Tooltip/Tooltip.d.ts +4 -50
  96. package/types/components/data/VerificationStatusIcon/VerificationStatusIcon.styled.d.ts +3 -22
  97. package/types/components/data/_shared/FloatingArrow.styled.d.ts +1 -101
  98. package/types/components/inputs/ActionButton/ActionButton.styled.d.ts +2 -20
  99. package/types/components/inputs/Button/Button.styled.d.ts +0 -42
  100. package/types/components/inputs/Checkbox/Checkbox.d.ts +0 -9
  101. package/types/components/inputs/Checkbox/Checkbox.styled.d.ts +6 -10
  102. package/types/components/inputs/CompactAutocompleteSelect/CompactAutocompleteSelect.styled.d.ts +4 -57
  103. package/types/components/inputs/CompactStarRating/CompactStarRating.styled.d.ts +3 -55
  104. package/types/components/inputs/CompactTextInput/CompactTextInput.styled.d.ts +4 -32
  105. package/types/components/inputs/MultiLevelCheckbox/MultiLevelCheckbox.styled.d.ts +2 -10
  106. package/types/components/inputs/MultiLevelCheckbox/types.d.ts +3 -46
  107. package/types/components/inputs/MultiSelect/MultiSelect.d.ts +0 -57
  108. package/types/components/inputs/MultiSelect/MultiSelect.styled.d.ts +0 -65
  109. package/types/components/inputs/Radio/Radio.styled.d.ts +3 -3
  110. package/types/components/inputs/Switch/Switch.styled.d.ts +3 -7
  111. package/types/components/inputs/TextArea/TextArea.d.ts +0 -4
  112. package/types/components/inputs/TextArea/TextArea.styled.d.ts +5 -7
  113. package/types/components/inputs/TextInput/TextInput.styled.d.ts +1 -1
  114. package/types/components/layout/SectionSeparator/SectionSeparator.styled.d.ts +2 -9
  115. package/types/components/widgets/AssetAction/AssetAction.styled.d.ts +2 -7
  116. package/types/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.d.ts +0 -12
  117. package/types/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.styled.d.ts +7 -55
  118. package/types/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.styled.d.ts +7 -43
  119. package/types/components/widgets/AssetGallery/asset.types.d.ts +31 -148
  120. package/types/components/widgets/AssetPreview/AssetPreviewTopBar/AssetPreviewTopBar.styled.d.ts +6 -20
  121. package/types/components/widgets/ContextMenu/ContextMenu.d.ts +1 -17
  122. package/types/components/widgets/ContextMenu/ContextMenuItem/ContextMenuItem.styled.d.ts +5 -13
  123. package/types/components/widgets/ContextMenu/ContextMenuItemsGroup/ContextMenuItemsGroup.d.ts +0 -18
  124. package/types/components/widgets/InfoCard/InfoCard.styled.d.ts +2 -19
  125. package/types/components/widgets/InstructionSeverityDisplay/InstructionSeverityDisplay.styled.d.ts +9 -19
  126. package/types/components/widgets/Instructions/Instructions.styled.d.ts +2 -14
  127. package/types/components/widgets/ProgressBar/ProgressBar.styled.d.ts +6 -43
  128. package/types/components/widgets/SummaryCard/SummaryCard.styled.d.ts +7 -46
  129. package/types/hooks/useElementSize.d.ts +3 -14
  130. package/types/hooks/useEventListner.d.ts +6 -38
  131. package/types/hooks/useFloatingPopover.d.ts +9 -90
  132. package/types/hooks/useIsomorphicLayoutEffect.d.ts +0 -23
  133. package/types/hooks/useOnClickOutside.d.ts +5 -23
  134. package/types/hooks/useTooltipAutoShow.d.ts +8 -57
  135. package/types/styles/utils/colors-export.d.ts +6 -25
  136. package/types/utils/dateTime.d.ts +2 -7
  137. package/types/utils/defaultTheme.d.ts +13 -92
  138. package/types/utils/getElementRef.d.ts +0 -19
  139. package/types/utils/parseTrigger.d.ts +8 -78
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGalleryBase.js","sources":["../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { throttle } from 'lodash';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport type { Asset } from '../asset.types';\nimport useIsomorphicLayoutEffect from './../../../../hooks/useIsomorphicLayoutEffect';\nimport * as S from './AssetGalleryBase.styled';\nimport AssetGalleryCompactCard from './AssetGalleryCompactCard/AssetGalleryCompactCard';\nimport AssetGalleryGridCard from './AssetGalleryGridCard/AssetGalleryGridCard';\n\ntype AssetGalleryBaseOwnProps = {\n /**\n * An array of assets to display in the gallery.\n */\n assets?: Asset[];\n /**\n * Whether the asset gallery should render the Asset Summary Card on hover.\n */\n activeSummaryCard?: boolean;\n /**\n * Whether the asset gallery should display the Version Count or Verifications on default.\n */\n displayIcon?: string;\n /**\n * The view mode of the gallery.\n */\n viewMode?: 'compact' | 'grid';\n /**\n * The maximum height of thumbnails in the gallery. When the grid is computed the gallery will try\n * to have each row of the gallery as close to the max height as possible.\n */\n thumbnailMaxHeight?: number;\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable?: boolean;\n /**\n * Whether or not the asset gallery should have custom borders on selected asset\n */\n customSelectedBorder?: string[];\n /**\n * An array containing the key of all selected assets\n *\n * NMB-3998: `(string | number)[]`, not the `string[] | number[]` the propTypes codemod\n * produced from `oneOfType([arrayOf(string), arrayOf(number)])`. Calling `.includes()` on\n * a union OF ARRAY TYPES intersects the candidate signatures' parameters, giving\n * `string & number` = `never`, so all three `selectedAssetKeys.includes(...)` reads in\n * this file failed with \"not assignable to parameter of type 'never'\".\n *\n * The union was also the wrong contract, not merely an awkward one. `Asset['key']` is\n * `string | number`, and this array is compared against `asset.key` at lines 585, 659 and\n * 676 — so a gallery whose assets have mixed key types needs a mixed array, which\n * `arrayOf(string) | arrayOf(number)` cannot express. This records what the component\n * does; it is a pure widening, so no existing consumer call site can break.\n */\n selectedAssetKeys: (string | number)[];\n /**\n * Scrollable element to attach event listeners to. Defaults to window.\n */\n scrollElement?: any; // TODO: PropTypes.instanceOf(Element)\n /**\n * The callback function when an asset is selected - returns the selected asset key\n */\n onAssetSelected: (...args: any[]) => any;\n /**\n * The callback function when an asset is unselected - returns the unselected asset key\n */\n onAssetUnselected: (...args: any[]) => any;\n /**\n * Whether or not the asset gallery should have soft selectable asset cards\n */\n softSelectable?: boolean;\n /**\n * A value containing the key of the soft selected asset or null\n */\n softSelectedAssetKey?: string | number;\n /**\n * The callback function when soft selected asset changes - returns the selected asset key or null\n */\n onAssetSoftSelectedChanged: (...args: any[]) => any;\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component?: (...args: any[]) => any;\n /**\n * Optional className\n */\n className?: string;\n /**\n * When true, hides the consent summary footer on grid cards (CardFooter + CardDivider). Default: false.\n */\n hideConsentSummary?: boolean;\n};\n\n/*\n * NMB-3998 §C.2: `props` is spread onto `S.AssetGalleryBase`, so the published type\n * has to admit that target's props too — a closed type here is worse than `any` for the\n * 125 consumer files. Declared members win over the base (`Omit` by `keyof AssetGalleryBaseOwnProps`);\n * a bare `&` would INTERSECT a colliding member instead of overriding it, which narrows\n * it (measured: `rows?: number | string` & `rows?: number`) or empties it to `never`.\n */\ntype Props = Omit<\n React.ComponentPropsWithoutRef<typeof S.AssetGalleryBase>,\n keyof AssetGalleryBaseOwnProps\n> &\n AssetGalleryBaseOwnProps;\nconst AssetGalleryBase = React.forwardRef<any, Props>(function AssetGalleryBase(\n {\n assets: assetsProp,\n activeSummaryCard,\n displayIcon,\n viewMode,\n thumbnailMaxHeight,\n selectable,\n customSelectedBorder,\n selectedAssetKeys,\n onAssetSelected,\n onAssetUnselected,\n softSelectable,\n softSelectedAssetKey,\n scrollElement: scrollElementProp,\n onAssetSoftSelectedChanged,\n component,\n hideConsentSummary,\n ...props\n },\n forwardedRef\n) {\n // Combine forwarded ref and the local ref\n const assetGalleryDOMNode = useRef(undefined);\n const assetGalleryCompactRef = useMergedRefs(forwardedRef, assetGalleryDOMNode);\n\n const assetGalleryWidth = useRef(0);\n const minimumRowAspectRatio = useRef(0);\n\n // Calculated assets\n const calculatedAssets = useRef([]);\n const [assets, setAssets] = useState([]);\n\n // Constants\n const MAXIMUM_ROW_HEIGHT = useMemo(\n () => (viewMode === 'grid' ? 450 : thumbnailMaxHeight),\n [viewMode, thumbnailMaxHeight]\n );\n const SPACE_BETWEEN_ASSETS = 8;\n const SPACE_UNDER_ASSETS = 8;\n const PRIMARY_SCROLL_BUFFER_HEIGHT = 1500;\n const SECONDARY_SCROLL_BUFFER_HEIGHT = 500;\n const GRID_VIEW_MODE_ASSET_MIN_WIDTH = 300;\n const GRID_VIEW_MODE_ASSET_HEIGHT = hideConsentSummary ? 503 : 556;\n const MISSING_WIDTH_PLACEHOLDER = 1920;\n const MISSING_HEIGHT_PLACEHOLDER = 1080;\n\n const isBrowser = typeof window !== 'undefined';\n\n const scrollElement = scrollElementProp || window;\n\n // Scroll position and direction\n const previousYOffset = useRef(isBrowser ? scrollElement.pageYOffset : 0);\n const latestYOffset = useRef(isBrowser ? scrollElement.pageYOffset : 0);\n const scrollDirection = useRef('down');\n\n // Track resize changes and set the current Asset Gallery width\n useIsomorphicLayoutEffect(() => {\n if (!assetGalleryDOMNode.current) return;\n\n const throttledOnResize = throttle(onResize, 1);\n\n const resizeObserver = new ResizeObserver(throttledOnResize);\n\n resizeObserver.observe(assetGalleryDOMNode.current);\n\n function onResize(entries) {\n entries.forEach(entry => {\n // setAssetGalleryWidth(entry.contentRect.width);\n if (assetGalleryWidth.current === entry.contentRect.width) return;\n window.requestAnimationFrame(() => {\n assetGalleryWidth.current = entry.contentRect.width;\n main();\n });\n });\n }\n\n return () => {\n resizeObserver.unobserve(assetGalleryDOMNode.current);\n };\n }, [assetsProp, assetGalleryDOMNode, MAXIMUM_ROW_HEIGHT]);\n\n //Re calculate Asset Gallery when something changes `MAXIMUM_ROW_HEIGHT` or `assetsProp` changes\n useEffect(() => {\n main();\n }, [MAXIMUM_ROW_HEIGHT, assetsProp]);\n\n const main = () => {\n calculateAssetGalleryAspectRatio();\n calculateLayout();\n calculateVisibility();\n };\n\n const calculateAssetGalleryAspectRatio = () => {\n // We don't care to compute the aspect ratio if the width of the gallery is 0\n if (assetGalleryWidth.current > 0) {\n minimumRowAspectRatio.current = calculateAspectRatio(\n assetGalleryWidth.current,\n MAXIMUM_ROW_HEIGHT\n );\n }\n };\n\n // Calculate asset gallery layout\n const calculateLayout = () => {\n // Check for required attributes and omit assets that are missing the attribute\n const assetsWithoutAKey = assetsProp.filter(a => !a.key);\n if (assetsWithoutAKey.length > 0) {\n assetsProp = assetsProp.filter(a => a.key);\n assetsWithoutAKey.forEach(a =>\n console.warn(\n 'Omitted asset from the gallery because it was missing the unique `key` property.',\n a\n )\n );\n }\n\n if (viewMode === 'grid' && assetGalleryWidth.current > 0) {\n // State\n let row = []; // The list of images in the current row.\n let translateX = 0; // The current translateX value that we are at\n let translateY = 0; // The current translateY value that we are at\n const computedAssets = [];\n let lastGroup = null; // The last group that was created\n\n // Calculate how many assets we can put in a row before violating `ASSET_MIN_WIDTH`\n // but we always want minimum of 1 asset in a row\n const desiredAssetCountInRow =\n Math.floor(assetGalleryWidth.current / GRID_VIEW_MODE_ASSET_MIN_WIDTH) || 1;\n\n // Calculate the width of each asset in a row\n const desiredAssetWidth =\n assetGalleryWidth.current / desiredAssetCountInRow -\n SPACE_BETWEEN_ASSETS +\n SPACE_BETWEEN_ASSETS / desiredAssetCountInRow;\n\n assetsProp.forEach((asset, index) => {\n // Create a group label\n if (asset.group && asset.group !== lastGroup) {\n computedAssets.push({\n title: asset.group,\n key: asset.key,\n layout: {\n type: 'groupLabel',\n height: 50,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n lastGroup = asset.group;\n translateY += 50 + SPACE_UNDER_ASSETS;\n }\n\n row.push(asset);\n\n if (\n row.length === desiredAssetCountInRow ||\n index + 1 === assetsProp.length ||\n (assetsProp[index + 1]?.group && assetsProp[index + 1].group !== asset.group)\n ) {\n const rowHeight = GRID_VIEW_MODE_ASSET_HEIGHT;\n\n row.forEach(rowAsset => {\n computedAssets.push({\n ...rowAsset,\n layout: {\n type: 'asset', // Indicates that this is an asset and not a group label\n width: Math.round(desiredAssetWidth),\n height: Math.round(rowHeight),\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n\n translateX += desiredAssetWidth + SPACE_BETWEEN_ASSETS;\n });\n\n row = [];\n translateX = 0;\n translateY += rowHeight + SPACE_UNDER_ASSETS;\n }\n });\n\n calculatedAssets.current = computedAssets;\n } else {\n if (minimumRowAspectRatio.current > 0) {\n // State\n let row = []; // The list of images in the current row.\n let translateX = 0; // The current translateX value that we are at\n let translateY = 0; // The current translateY value that we are at\n let rowAspectRatio = 0; // The aspect ratio of the row we are building\n let lastGroup = null; // The last group that was created\n\n const computedAssets = [];\n\n // Loop through all our images, building them up into rows and computing\n // the working rowAspectRatio.\n assetsProp.forEach((asset, index) => {\n // Create a group label\n if (asset.group && asset.group !== lastGroup) {\n computedAssets.push({\n title: asset.group,\n key: asset.key,\n layout: {\n type: 'groupLabel',\n height: 50,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n lastGroup = asset.group;\n translateY += 50 + SPACE_UNDER_ASSETS;\n }\n\n rowAspectRatio += calculateAspectRatio(\n asset.width || MISSING_WIDTH_PLACEHOLDER,\n asset.height || MISSING_HEIGHT_PLACEHOLDER\n );\n\n row.push(asset);\n\n // End the row if any of the conditions match\n if (\n rowAspectRatio >= minimumRowAspectRatio.current ||\n index + 1 === assetsProp.length ||\n (assetsProp[index + 1]?.group && assetsProp[index + 1].group !== asset.group)\n ) {\n // Make sure that the last row also has a reasonable height\n rowAspectRatio = Math.max(rowAspectRatio, minimumRowAspectRatio.current);\n\n // Compute this row's height.\n const totalDesiredWidthOfImages =\n assetGalleryWidth.current - SPACE_BETWEEN_ASSETS * (row.length - 1);\n const rowHeight = totalDesiredWidthOfImages / rowAspectRatio;\n\n row.forEach(rowAsset => {\n const assetWidth =\n rowHeight *\n calculateAspectRatio(\n rowAsset.width || MISSING_WIDTH_PLACEHOLDER,\n rowAsset.height || MISSING_HEIGHT_PLACEHOLDER\n );\n\n computedAssets.push({\n ...rowAsset,\n layout: {\n type: 'asset', // Indicates that this is an asset an not a group label\n width: Math.round(assetWidth),\n height: Math.round(rowHeight),\n translateX: Math.round(translateX),\n translateY: Math.round(translateY),\n hasHeightAndWidth: Boolean(rowAsset.width && rowAsset.height)\n }\n });\n\n // The next image is `SPACE_BETWEEN_ASSETS` pixels to the right of this image.\n translateX += assetWidth + SPACE_BETWEEN_ASSETS;\n });\n\n // Reset our state variables for next row.\n row = [];\n rowAspectRatio = 0;\n translateY += rowHeight + SPACE_UNDER_ASSETS;\n translateX = 0;\n }\n });\n\n calculatedAssets.current = computedAssets;\n }\n }\n };\n\n // Utility function to calculate the aspect ratio of a width and height\n function calculateAspectRatio(width, height) {\n return width / height;\n }\n\n // Calculate the total height of the gallery\n const totalGalleryHeight = useMemo(() => {\n if (assets.length === 0) {\n return 0;\n }\n\n const lastAsset = assets[assets.length - 1];\n\n if (assets.length < 8) {\n return (lastAsset.layout.translateY + lastAsset.layout.height) * 2;\n }\n\n return lastAsset.layout.translateY + lastAsset.layout.height;\n }, [assets]);\n\n useEffect(() => {\n const throttledOnScroll = throttle(onScroll, 200);\n\n scrollElement.addEventListener('scroll', throttledOnScroll, false);\n return () => scrollElement.removeEventListener('scroll', throttledOnScroll, false);\n }, [assetGalleryDOMNode, calculatedAssets]);\n\n function onScroll() {\n setScrollPositionAndDirection();\n calculateVisibility();\n }\n\n function setScrollPositionAndDirection() {\n const newYOffset = scrollElement.pageYOffset;\n previousYOffset.current = latestYOffset.current;\n latestYOffset.current = newYOffset;\n scrollDirection.current = latestYOffset.current > previousYOffset.current ? 'down' : 'up';\n }\n\n /**\n * +---------------------------+\n * | |\n * | |\n * | |\n * | |\n * + - - - - - - - - - - - - - + -------\n * | | A\n * | Secondary Buffer | SECONDARY_SCROLL_BUFFER_HEIGHT\n * | | V\n * +---------------------------+ -------\n * | | A\n * | | |\n * | | |\n * | Viewport | window.innerHeight\n * | | |\n * | | |\n * | | V\n * +---------------------------+ -------\n * | | A\n * | | |\n * | | |\n * | | |\n * | Primary Buffer | PRIMARY_SCROLL_BUFFER_HEIGHT\n * | | |\n * | | |\n * | | |\n * | | V\n * + - - - - - - - - - - - - - + -------\n * | |\n * | (Scroll direction) |\n * | | |\n * | | |\n * | V |\n * | |\n *\n */\n\n const calculateVisibility = () => {\n if (!assetGalleryDOMNode.current) return;\n\n // Get the top and bottom buffers heights.\n const bufferTop =\n scrollDirection.current === 'up'\n ? PRIMARY_SCROLL_BUFFER_HEIGHT\n : SECONDARY_SCROLL_BUFFER_HEIGHT;\n\n const bufferBottom =\n scrollDirection.current === 'up'\n ? SECONDARY_SCROLL_BUFFER_HEIGHT\n : PRIMARY_SCROLL_BUFFER_HEIGHT;\n\n const containerOffset = getOffsetTop(assetGalleryDOMNode.current);\n const scrollerHeight = scrollElement.innerHeight;\n\n const yOffset = latestYOffset.current;\n\n // This is the top of the top buffer. If the bottom of an image is above\n // this line, it will be removed.\n const minTranslateYPlusHeight = yOffset - containerOffset - bufferTop;\n\n // This is the bottom of the bottom buffer. If the top of an image is\n // below this line, it will be removed.\n const maxTranslateY = yOffset - containerOffset + scrollerHeight + bufferBottom;\n\n const finalizedAssets = calculatedAssets.current.map(asset => {\n if (\n scrollElement.self == window &&\n (asset.layout.translateY + asset.layout.height < minTranslateYPlusHeight ||\n asset.layout.translateY > maxTranslateY)\n ) {\n // Hide Image\n asset.layout.show = false;\n } else {\n // Show Image\n asset.layout.show = true;\n }\n\n return asset;\n });\n\n setAssets(finalizedAssets);\n };\n\n // Utility function that returns the distance from `elem` to the top of the page.\n // This is done by walking up the node tree, getting the offsetTop of each\n // parent node, until the top of the page.\n function getOffsetTop(elem) {\n let offsetTop = 0;\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop;\n }\n elem = elem.offsetParent;\n } while (elem);\n return offsetTop;\n }\n\n const handleKeyPress = useCallback(\n e => {\n function isElementVisible(el) {\n const rect = el.getBoundingClientRect(),\n vWidth = scrollElement.innerWidth || document.documentElement.clientWidth,\n vHeight = scrollElement.innerHeight || document.documentElement.clientHeight,\n efp = function (x, y) {\n return document.elementFromPoint(x, y);\n };\n\n // Return false if it's not in the viewport\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight)\n return false;\n\n // Return true if any of its four corners are visible\n return (\n el.contains(efp(rect.left, rect.top)) ||\n el.contains(efp(rect.right, rect.top)) ||\n el.contains(efp(rect.right, rect.bottom)) ||\n el.contains(efp(rect.left, rect.bottom))\n );\n }\n\n function softSelectFirstVisibleAsset() {\n const visibleAssets = assets.filter(asset => asset.layout.show);\n\n for (let i = 0; i < assetGalleryDOMNode.current.children.length; i++) {\n if (isElementVisible(assetGalleryDOMNode.current.children[i])) {\n onAssetSoftSelectedChanged(visibleAssets[i].key);\n break;\n }\n }\n }\n\n if (assets.length === 0) return;\n\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n if (softSelectedAssetKey === null) {\n softSelectFirstVisibleAsset();\n\n return;\n }\n }\n\n if (e.key === 'ArrowLeft') {\n const previousAssetIndex =\n assets.findIndex(asset => asset.key === softSelectedAssetKey) - 1;\n\n const previousAsset = assets[previousAssetIndex];\n\n if (previousAsset) {\n if (previousAsset.layout.show) {\n onAssetSoftSelectedChanged(previousAsset.key);\n } else {\n softSelectFirstVisibleAsset();\n }\n }\n\n return;\n }\n\n if (e.key === 'ArrowRight') {\n const nextAssetIndex = assets.findIndex(asset => asset.key === softSelectedAssetKey) + 1;\n\n const nextAsset = assets[nextAssetIndex];\n\n if (nextAsset) {\n if (nextAsset.layout.show) {\n onAssetSoftSelectedChanged(nextAsset.key);\n } else {\n softSelectFirstVisibleAsset();\n }\n }\n\n return;\n }\n\n if (e.key === 'Enter') {\n if (softSelectedAssetKey === null) return;\n\n if (selectedAssetKeys.includes(softSelectedAssetKey)) {\n onAssetUnselected(softSelectedAssetKey);\n } else {\n onAssetSelected(softSelectedAssetKey);\n }\n }\n },\n [\n assets,\n softSelectedAssetKey,\n onAssetSoftSelectedChanged,\n selectedAssetKeys,\n assetGalleryCompactRef\n ]\n );\n\n const handleClick = useCallback(() => {\n onAssetSoftSelectedChanged(null);\n }, []);\n\n // Add event listeners for keyboard navigation (soft select)\n useEffect(() => {\n if (softSelectable) {\n document.addEventListener('keydown', handleKeyPress);\n }\n\n return () => document.removeEventListener('keydown', handleKeyPress);\n }, [softSelectable, handleKeyPress]);\n\n useEffect(() => {\n if (softSelectable && softSelectedAssetKey !== null) {\n document.addEventListener('click', handleClick, true);\n }\n\n return () => document.removeEventListener('click', handleClick, true);\n }, [softSelectable, softSelectedAssetKey, handleClick]);\n\n return (\n <>\n <S.AssetGalleryBase\n ref={assetGalleryCompactRef}\n style={{ height: `${totalGalleryHeight}px` }}\n className={props.className}\n {...props}\n >\n {assets.map(\n asset =>\n asset.layout.show && (\n <React.Fragment key={`asset-gallery-${asset.layout.type}-${asset.key}`}>\n {asset.layout.type === 'groupLabel' && (\n <S.GroupLabel\n style={{\n transform: `translate3d(${asset.layout.translateX}px,${asset.layout.translateY}px, 0)`,\n height: `${asset.layout.height}px`\n }}\n >\n {asset.title}\n </S.GroupLabel>\n )}\n\n {asset.layout.type === 'asset' && (\n <S.AssetGalleryCardBase\n style={{\n transform: `translate3d(${asset.layout.translateX}px, ${asset.layout.translateY}px, 0)`,\n width: `${asset.layout.width}px`,\n height: `${asset.layout.height}px`,\n display: 'flex',\n justifyContent: 'center'\n }}\n >\n {viewMode === 'grid' ? (\n <AssetGalleryGridCard\n asset={asset}\n selectable={'selectable' in asset ? asset.selectable : selectable}\n selected={selectedAssetKeys.includes(asset.key)}\n customSelectedBorder={customSelectedBorder}\n extendedSelectMode={Boolean(selectedAssetKeys.length)}\n onAssetSelected={onAssetSelected}\n onAssetUnselected={onAssetUnselected}\n softSelected={softSelectedAssetKey === asset.key}\n component={component}\n hideConsentSummary={hideConsentSummary}\n />\n ) : (\n <AssetGalleryCompactCard\n asset={asset}\n activeSummaryCard={activeSummaryCard}\n displayIcon={displayIcon}\n hasHeightAndWidth={asset.layout.hasHeightAndWidth}\n collapseExtraInfo={asset.layout.width < 90}\n selectable={'selectable' in asset ? asset.selectable : selectable}\n selected={selectedAssetKeys.includes(asset.key)}\n customSelectedBorder={customSelectedBorder}\n extendedSelectMode={Boolean(selectedAssetKeys.length)}\n onAssetSelected={onAssetSelected}\n onAssetUnselected={onAssetUnselected}\n softSelected={softSelectedAssetKey === asset.key}\n component={component}\n />\n )}\n </S.AssetGalleryCardBase>\n )}\n </React.Fragment>\n )\n )}\n </S.AssetGalleryBase>\n </>\n );\n});\n\nexport default AssetGalleryBase;\n"],"names":["AssetGalleryBase","React","forwardRef","assets","assetsProp","activeSummaryCard","displayIcon","viewMode","thumbnailMaxHeight","selectable","customSelectedBorder","selectedAssetKeys","onAssetSelected","onAssetUnselected","softSelectable","softSelectedAssetKey","scrollElement","scrollElementProp","onAssetSoftSelectedChanged","component","hideConsentSummary","props","forwardedRef","assetGalleryDOMNode","useRef","undefined","assetGalleryCompactRef","useMergedRefs","assetGalleryWidth","minimumRowAspectRatio","calculatedAssets","setAssets","useState","MAXIMUM_ROW_HEIGHT","useMemo","SPACE_BETWEEN_ASSETS","SPACE_UNDER_ASSETS","PRIMARY_SCROLL_BUFFER_HEIGHT","SECONDARY_SCROLL_BUFFER_HEIGHT","GRID_VIEW_MODE_ASSET_MIN_WIDTH","GRID_VIEW_MODE_ASSET_HEIGHT","MISSING_WIDTH_PLACEHOLDER","MISSING_HEIGHT_PLACEHOLDER","isBrowser","window","previousYOffset","pageYOffset","latestYOffset","scrollDirection","useIsomorphicLayoutEffect","current","throttledOnResize","throttle","onResize","resizeObserver","ResizeObserver","observe","entries","forEach","entry","contentRect","width","requestAnimationFrame","main","unobserve","useEffect","calculateAssetGalleryAspectRatio","calculateLayout","calculateVisibility","calculateAspectRatio","assetsWithoutAKey","filter","a","key","length","console","warn","row","translateX","translateY","computedAssets","lastGroup","desiredAssetCountInRow","Math","floor","desiredAssetWidth","asset","index","group","push","title","layout","type","height","round","rowHeight","rowAsset","rowAspectRatio","max","totalDesiredWidthOfImages","assetWidth","hasHeightAndWidth","Boolean","totalGalleryHeight","lastAsset","throttledOnScroll","onScroll","addEventListener","removeEventListener","setScrollPositionAndDirection","newYOffset","bufferTop","bufferBottom","containerOffset","getOffsetTop","scrollerHeight","innerHeight","yOffset","minTranslateYPlusHeight","maxTranslateY","finalizedAssets","map","self","show","elem","offsetTop","isNaN","offsetParent","handleKeyPress","useCallback","e","isElementVisible","el","rect","getBoundingClientRect","vWidth","innerWidth","document","documentElement","clientWidth","vHeight","clientHeight","efp","x","y","elementFromPoint","right","bottom","left","top","contains","softSelectFirstVisibleAsset","visibleAssets","i","children","previousAssetIndex","findIndex","previousAsset","nextAssetIndex","nextAsset","includes","handleClick","_jsx","_Fragment","S","ref","style","className","_jsxs","Fragment","transform","display","justifyContent","AssetGalleryGridCard","selected","extendedSelectMode","softSelected","AssetGalleryCompactCard","collapseExtraInfo"],"mappings":";;;;;;;;;;AA2GA,MAAMA,gBAAgB,GAAGC,cAAK,CAACC,UAAU,CAAa,SAASF,gBAAgBA,CAC7E;AACEG,EAAAA,MAAM,EAAEC,UAAU;EAClBC,iBAAiB;EACjBC,WAAW;EACXC,QAAQ;EACRC,kBAAkB;EAClBC,UAAU;EACVC,oBAAoB;EACpBC,iBAAiB;EACjBC,eAAe;EACfC,iBAAiB;EACjBC,cAAc;EACdC,oBAAoB;AACpBC,EAAAA,aAAa,EAAEC,iBAAiB;EAChCC,0BAA0B;EAC1BC,SAAS;EACTC,kBAAkB;EAClB,GAAGC;AACL,CAAC,EACDC,YAAY,EACZ;AAEA,EAAA,MAAMC,mBAAmB,GAAGC,MAAM,CAACC,SAAS,CAAC;AAC7C,EAAA,MAAMC,sBAAsB,GAAGC,aAAa,CAACL,YAAY,EAAEC,mBAAmB,CAAC;AAE/E,EAAA,MAAMK,iBAAiB,GAAGJ,MAAM,CAAC,CAAC,CAAC;AACnC,EAAA,MAAMK,qBAAqB,GAAGL,MAAM,CAAC,CAAC,CAAC;AAGvC,EAAA,MAAMM,gBAAgB,GAAGN,MAAM,CAAC,EAAE,CAAC;EACnC,MAAM,CAACrB,MAAM,EAAE4B,SAAS,CAAC,GAAGC,QAAQ,CAAC,EAAE,CAAC;AAGxC,EAAA,MAAMC,kBAAkB,GAAGC,OAAO,CAChC,MAAO3B,QAAQ,KAAK,MAAM,GAAG,GAAG,GAAGC,kBAAmB,EACtD,CAACD,QAAQ,EAAEC,kBAAkB,CAC/B,CAAC;EACD,MAAM2B,oBAAoB,GAAG,CAAC;EAC9B,MAAMC,kBAAkB,GAAG,CAAC;EAC5B,MAAMC,4BAA4B,GAAG,IAAI;EACzC,MAAMC,8BAA8B,GAAG,GAAG;EAC1C,MAAMC,8BAA8B,GAAG,GAAG;AAC1C,EAAA,MAAMC,2BAA2B,GAAGpB,kBAAkB,GAAG,GAAG,GAAG,GAAG;EAClE,MAAMqB,yBAAyB,GAAG,IAAI;EACtC,MAAMC,0BAA0B,GAAG,IAAI;AAEvC,EAAA,MAAMC,SAAS,GAAG,OAAOC,MAAM,KAAK,WAAW;AAE/C,EAAA,MAAM5B,aAAa,GAAGC,iBAAiB,IAAI2B,MAAM;EAGjD,MAAMC,eAAe,GAAGrB,MAAM,CAACmB,SAAS,GAAG3B,aAAa,CAAC8B,WAAW,GAAG,CAAC,CAAC;EACzE,MAAMC,aAAa,GAAGvB,MAAM,CAACmB,SAAS,GAAG3B,aAAa,CAAC8B,WAAW,GAAG,CAAC,CAAC;AACvE,EAAA,MAAME,eAAe,GAAGxB,MAAM,CAAC,MAAM,CAAC;AAGtCyB,EAAAA,yBAAyB,CAAC,MAAM;AAC9B,IAAA,IAAI,CAAC1B,mBAAmB,CAAC2B,OAAO,EAAE;AAElC,IAAA,MAAMC,iBAAiB,GAAGC,QAAQ,CAACC,QAAQ,EAAE,CAAC,CAAC;AAE/C,IAAA,MAAMC,cAAc,GAAG,IAAIC,cAAc,CAACJ,iBAAiB,CAAC;AAE5DG,IAAAA,cAAc,CAACE,OAAO,CAACjC,mBAAmB,CAAC2B,OAAO,CAAC;IAEnD,SAASG,QAAQA,CAACI,OAAO,EAAE;AACzBA,MAAAA,OAAO,CAACC,OAAO,CAACC,KAAK,IAAI;QAEvB,IAAI/B,iBAAiB,CAACsB,OAAO,KAAKS,KAAK,CAACC,WAAW,CAACC,KAAK,EAAE;QAC3DjB,MAAM,CAACkB,qBAAqB,CAAC,MAAM;AACjClC,UAAAA,iBAAiB,CAACsB,OAAO,GAAGS,KAAK,CAACC,WAAW,CAACC,KAAK;AACnDE,UAAAA,IAAI,EAAE;AACR,QAAA,CAAC,CAAC;AACJ,MAAA,CAAC,CAAC;AACJ,IAAA;AAEA,IAAA,OAAO,MAAM;AACXT,MAAAA,cAAc,CAACU,SAAS,CAACzC,mBAAmB,CAAC2B,OAAO,CAAC;IACvD,CAAC;EACH,CAAC,EAAE,CAAC9C,UAAU,EAAEmB,mBAAmB,EAAEU,kBAAkB,CAAC,CAAC;AAGzDgC,EAAAA,SAAS,CAAC,MAAM;AACdF,IAAAA,IAAI,EAAE;AACR,EAAA,CAAC,EAAE,CAAC9B,kBAAkB,EAAE7B,UAAU,CAAC,CAAC;EAEpC,MAAM2D,IAAI,GAAGA,MAAM;AACjBG,IAAAA,gCAAgC,EAAE;AAClCC,IAAAA,eAAe,EAAE;AACjBC,IAAAA,mBAAmB,EAAE;EACvB,CAAC;EAED,MAAMF,gCAAgC,GAAGA,MAAM;AAE7C,IAAA,IAAItC,iBAAiB,CAACsB,OAAO,GAAG,CAAC,EAAE;MACjCrB,qBAAqB,CAACqB,OAAO,GAAGmB,oBAAoB,CAClDzC,iBAAiB,CAACsB,OAAO,EACzBjB,kBACF,CAAC;AACH,IAAA;EACF,CAAC;EAGD,MAAMkC,eAAe,GAAGA,MAAM;AAE5B,IAAA,MAAMG,iBAAiB,GAAGlE,UAAU,CAACmE,MAAM,CAACC,CAAC,IAAI,CAACA,CAAC,CAACC,GAAG,CAAC;AACxD,IAAA,IAAIH,iBAAiB,CAACI,MAAM,GAAG,CAAC,EAAE;MAChCtE,UAAU,GAAGA,UAAU,CAACmE,MAAM,CAACC,CAAC,IAAIA,CAAC,CAACC,GAAG,CAAC;AAC1CH,MAAAA,iBAAiB,CAACZ,OAAO,CAACc,CAAC,IACzBG,OAAO,CAACC,IAAI,CACV,kFAAkF,EAClFJ,CACF,CACF,CAAC;AACH,IAAA;IAEA,IAAIjE,QAAQ,KAAK,MAAM,IAAIqB,iBAAiB,CAACsB,OAAO,GAAG,CAAC,EAAE;MAExD,IAAI2B,GAAG,GAAG,EAAE;MACZ,IAAIC,UAAU,GAAG,CAAC;MAClB,IAAIC,UAAU,GAAG,CAAC;MAClB,MAAMC,cAAc,GAAG,EAAE;MACzB,IAAIC,SAAS,GAAG,IAAI;AAIpB,MAAA,MAAMC,sBAAsB,GAC1BC,IAAI,CAACC,KAAK,CAACxD,iBAAiB,CAACsB,OAAO,GAAGX,8BAA8B,CAAC,IAAI,CAAC;AAG7E,MAAA,MAAM8C,iBAAiB,GACrBzD,iBAAiB,CAACsB,OAAO,GAAGgC,sBAAsB,GAClD/C,oBAAoB,GACpBA,oBAAoB,GAAG+C,sBAAsB;AAE/C9E,MAAAA,UAAU,CAACsD,OAAO,CAAC,CAAC4B,KAAK,EAAEC,KAAK,KAAK;QAEnC,IAAID,KAAK,CAACE,KAAK,IAAIF,KAAK,CAACE,KAAK,KAAKP,SAAS,EAAE;UAC5CD,cAAc,CAACS,IAAI,CAAC;YAClBC,KAAK,EAAEJ,KAAK,CAACE,KAAK;YAClBf,GAAG,EAAEa,KAAK,CAACb,GAAG;AACdkB,YAAAA,MAAM,EAAE;AACNC,cAAAA,IAAI,EAAE,YAAY;AAClBC,cAAAA,MAAM,EAAE,EAAE;AACVf,cAAAA,UAAU,EAAEK,IAAI,CAACW,KAAK,CAAChB,UAAU,CAAC;AAClCC,cAAAA,UAAU,EAAEI,IAAI,CAACW,KAAK,CAACf,UAAU;AACnC;AACF,WAAC,CAAC;UACFE,SAAS,GAAGK,KAAK,CAACE,KAAK;UACvBT,UAAU,IAAI,EAAE,GAAG3C,kBAAkB;AACvC,QAAA;AAEAyC,QAAAA,GAAG,CAACY,IAAI,CAACH,KAAK,CAAC;AAEf,QAAA,IACET,GAAG,CAACH,MAAM,KAAKQ,sBAAsB,IACrCK,KAAK,GAAG,CAAC,KAAKnF,UAAU,CAACsE,MAAM,IAC9BtE,UAAU,CAACmF,KAAK,GAAG,CAAC,CAAC,EAAEC,KAAK,IAAIpF,UAAU,CAACmF,KAAK,GAAG,CAAC,CAAC,CAACC,KAAK,KAAKF,KAAK,CAACE,KAAM,EAC7E;UACA,MAAMO,SAAS,GAAGvD,2BAA2B;AAE7CqC,UAAAA,GAAG,CAACnB,OAAO,CAACsC,QAAQ,IAAI;YACtBhB,cAAc,CAACS,IAAI,CAAC;AAClB,cAAA,GAAGO,QAAQ;AACXL,cAAAA,MAAM,EAAE;AACNC,gBAAAA,IAAI,EAAE,OAAO;AACb/B,gBAAAA,KAAK,EAAEsB,IAAI,CAACW,KAAK,CAACT,iBAAiB,CAAC;AACpCQ,gBAAAA,MAAM,EAAEV,IAAI,CAACW,KAAK,CAACC,SAAS,CAAC;AAC7BjB,gBAAAA,UAAU,EAAEK,IAAI,CAACW,KAAK,CAAChB,UAAU,CAAC;AAClCC,gBAAAA,UAAU,EAAEI,IAAI,CAACW,KAAK,CAACf,UAAU;AACnC;AACF,aAAC,CAAC;YAEFD,UAAU,IAAIO,iBAAiB,GAAGlD,oBAAoB;AACxD,UAAA,CAAC,CAAC;AAEF0C,UAAAA,GAAG,GAAG,EAAE;AACRC,UAAAA,UAAU,GAAG,CAAC;UACdC,UAAU,IAAIgB,SAAS,GAAG3D,kBAAkB;AAC9C,QAAA;AACF,MAAA,CAAC,CAAC;MAEFN,gBAAgB,CAACoB,OAAO,GAAG8B,cAAc;AAC3C,IAAA,CAAC,MAAM;AACL,MAAA,IAAInD,qBAAqB,CAACqB,OAAO,GAAG,CAAC,EAAE;QAErC,IAAI2B,GAAG,GAAG,EAAE;QACZ,IAAIC,UAAU,GAAG,CAAC;QAClB,IAAIC,UAAU,GAAG,CAAC;QAClB,IAAIkB,cAAc,GAAG,CAAC;QACtB,IAAIhB,SAAS,GAAG,IAAI;QAEpB,MAAMD,cAAc,GAAG,EAAE;AAIzB5E,QAAAA,UAAU,CAACsD,OAAO,CAAC,CAAC4B,KAAK,EAAEC,KAAK,KAAK;UAEnC,IAAID,KAAK,CAACE,KAAK,IAAIF,KAAK,CAACE,KAAK,KAAKP,SAAS,EAAE;YAC5CD,cAAc,CAACS,IAAI,CAAC;cAClBC,KAAK,EAAEJ,KAAK,CAACE,KAAK;cAClBf,GAAG,EAAEa,KAAK,CAACb,GAAG;AACdkB,cAAAA,MAAM,EAAE;AACNC,gBAAAA,IAAI,EAAE,YAAY;AAClBC,gBAAAA,MAAM,EAAE,EAAE;AACVf,gBAAAA,UAAU,EAAEK,IAAI,CAACW,KAAK,CAAChB,UAAU,CAAC;AAClCC,gBAAAA,UAAU,EAAEI,IAAI,CAACW,KAAK,CAACf,UAAU;AACnC;AACF,aAAC,CAAC;YACFE,SAAS,GAAGK,KAAK,CAACE,KAAK;YACvBT,UAAU,IAAI,EAAE,GAAG3C,kBAAkB;AACvC,UAAA;AAEA6D,UAAAA,cAAc,IAAI5B,oBAAoB,CACpCiB,KAAK,CAACzB,KAAK,IAAIpB,yBAAyB,EACxC6C,KAAK,CAACO,MAAM,IAAInD,0BAClB,CAAC;AAEDmC,UAAAA,GAAG,CAACY,IAAI,CAACH,KAAK,CAAC;AAGf,UAAA,IACEW,cAAc,IAAIpE,qBAAqB,CAACqB,OAAO,IAC/CqC,KAAK,GAAG,CAAC,KAAKnF,UAAU,CAACsE,MAAM,IAC9BtE,UAAU,CAACmF,KAAK,GAAG,CAAC,CAAC,EAAEC,KAAK,IAAIpF,UAAU,CAACmF,KAAK,GAAG,CAAC,CAAC,CAACC,KAAK,KAAKF,KAAK,CAACE,KAAM,EAC7E;YAEAS,cAAc,GAAGd,IAAI,CAACe,GAAG,CAACD,cAAc,EAAEpE,qBAAqB,CAACqB,OAAO,CAAC;AAGxE,YAAA,MAAMiD,yBAAyB,GAC7BvE,iBAAiB,CAACsB,OAAO,GAAGf,oBAAoB,IAAI0C,GAAG,CAACH,MAAM,GAAG,CAAC,CAAC;AACrE,YAAA,MAAMqB,SAAS,GAAGI,yBAAyB,GAAGF,cAAc;AAE5DpB,YAAAA,GAAG,CAACnB,OAAO,CAACsC,QAAQ,IAAI;AACtB,cAAA,MAAMI,UAAU,GACdL,SAAS,GACT1B,oBAAoB,CAClB2B,QAAQ,CAACnC,KAAK,IAAIpB,yBAAyB,EAC3CuD,QAAQ,CAACH,MAAM,IAAInD,0BACrB,CAAC;cAEHsC,cAAc,CAACS,IAAI,CAAC;AAClB,gBAAA,GAAGO,QAAQ;AACXL,gBAAAA,MAAM,EAAE;AACNC,kBAAAA,IAAI,EAAE,OAAO;AACb/B,kBAAAA,KAAK,EAAEsB,IAAI,CAACW,KAAK,CAACM,UAAU,CAAC;AAC7BP,kBAAAA,MAAM,EAAEV,IAAI,CAACW,KAAK,CAACC,SAAS,CAAC;AAC7BjB,kBAAAA,UAAU,EAAEK,IAAI,CAACW,KAAK,CAAChB,UAAU,CAAC;AAClCC,kBAAAA,UAAU,EAAEI,IAAI,CAACW,KAAK,CAACf,UAAU,CAAC;kBAClCsB,iBAAiB,EAAEC,OAAO,CAACN,QAAQ,CAACnC,KAAK,IAAImC,QAAQ,CAACH,MAAM;AAC9D;AACF,eAAC,CAAC;cAGFf,UAAU,IAAIsB,UAAU,GAAGjE,oBAAoB;AACjD,YAAA,CAAC,CAAC;AAGF0C,YAAAA,GAAG,GAAG,EAAE;AACRoB,YAAAA,cAAc,GAAG,CAAC;YAClBlB,UAAU,IAAIgB,SAAS,GAAG3D,kBAAkB;AAC5C0C,YAAAA,UAAU,GAAG,CAAC;AAChB,UAAA;AACF,QAAA,CAAC,CAAC;QAEFhD,gBAAgB,CAACoB,OAAO,GAAG8B,cAAc;AAC3C,MAAA;AACF,IAAA;EACF,CAAC;AAGD,EAAA,SAASX,oBAAoBA,CAACR,KAAK,EAAEgC,MAAM,EAAE;IAC3C,OAAOhC,KAAK,GAAGgC,MAAM;AACvB,EAAA;AAGA,EAAA,MAAMU,kBAAkB,GAAGrE,OAAO,CAAC,MAAM;AACvC,IAAA,IAAI/B,MAAM,CAACuE,MAAM,KAAK,CAAC,EAAE;AACvB,MAAA,OAAO,CAAC;AACV,IAAA;IAEA,MAAM8B,SAAS,GAAGrG,MAAM,CAACA,MAAM,CAACuE,MAAM,GAAG,CAAC,CAAC;AAE3C,IAAA,IAAIvE,MAAM,CAACuE,MAAM,GAAG,CAAC,EAAE;AACrB,MAAA,OAAO,CAAC8B,SAAS,CAACb,MAAM,CAACZ,UAAU,GAAGyB,SAAS,CAACb,MAAM,CAACE,MAAM,IAAI,CAAC;AACpE,IAAA;IAEA,OAAOW,SAAS,CAACb,MAAM,CAACZ,UAAU,GAAGyB,SAAS,CAACb,MAAM,CAACE,MAAM;AAC9D,EAAA,CAAC,EAAE,CAAC1F,MAAM,CAAC,CAAC;AAEZ8D,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,MAAMwC,iBAAiB,GAAGrD,QAAQ,CAACsD,QAAQ,EAAE,GAAG,CAAC;IAEjD1F,aAAa,CAAC2F,gBAAgB,CAAC,QAAQ,EAAEF,iBAAiB,EAAE,KAAK,CAAC;IAClE,OAAO,MAAMzF,aAAa,CAAC4F,mBAAmB,CAAC,QAAQ,EAAEH,iBAAiB,EAAE,KAAK,CAAC;AACpF,EAAA,CAAC,EAAE,CAAClF,mBAAmB,EAAEO,gBAAgB,CAAC,CAAC;EAE3C,SAAS4E,QAAQA,GAAG;AAClBG,IAAAA,6BAA6B,EAAE;AAC/BzC,IAAAA,mBAAmB,EAAE;AACvB,EAAA;EAEA,SAASyC,6BAA6BA,GAAG;AACvC,IAAA,MAAMC,UAAU,GAAG9F,aAAa,CAAC8B,WAAW;AAC5CD,IAAAA,eAAe,CAACK,OAAO,GAAGH,aAAa,CAACG,OAAO;IAC/CH,aAAa,CAACG,OAAO,GAAG4D,UAAU;AAClC9D,IAAAA,eAAe,CAACE,OAAO,GAAGH,aAAa,CAACG,OAAO,GAAGL,eAAe,CAACK,OAAO,GAAG,MAAM,GAAG,IAAI;AAC3F,EAAA;EAwCA,MAAMkB,mBAAmB,GAAGA,MAAM;AAChC,IAAA,IAAI,CAAC7C,mBAAmB,CAAC2B,OAAO,EAAE;IAGlC,MAAM6D,SAAS,GACb/D,eAAe,CAACE,OAAO,KAAK,IAAI,GAC5Bb,4BAA4B,GAC5BC,8BAA8B;IAEpC,MAAM0E,YAAY,GAChBhE,eAAe,CAACE,OAAO,KAAK,IAAI,GAC5BZ,8BAA8B,GAC9BD,4BAA4B;AAElC,IAAA,MAAM4E,eAAe,GAAGC,YAAY,CAAC3F,mBAAmB,CAAC2B,OAAO,CAAC;AACjE,IAAA,MAAMiE,cAAc,GAAGnG,aAAa,CAACoG,WAAW;AAEhD,IAAA,MAAMC,OAAO,GAAGtE,aAAa,CAACG,OAAO;AAIrC,IAAA,MAAMoE,uBAAuB,GAAGD,OAAO,GAAGJ,eAAe,GAAGF,SAAS;IAIrE,MAAMQ,aAAa,GAAGF,OAAO,GAAGJ,eAAe,GAAGE,cAAc,GAAGH,YAAY;IAE/E,MAAMQ,eAAe,GAAG1F,gBAAgB,CAACoB,OAAO,CAACuE,GAAG,CAACnC,KAAK,IAAI;AAC5D,MAAA,IACEtE,aAAa,CAAC0G,IAAI,IAAI9E,MAAM,KAC3B0C,KAAK,CAACK,MAAM,CAACZ,UAAU,GAAGO,KAAK,CAACK,MAAM,CAACE,MAAM,GAAGyB,uBAAuB,IACtEhC,KAAK,CAACK,MAAM,CAACZ,UAAU,GAAGwC,aAAa,CAAC,EAC1C;AAEAjC,QAAAA,KAAK,CAACK,MAAM,CAACgC,IAAI,GAAG,KAAK;AAC3B,MAAA,CAAC,MAAM;AAELrC,QAAAA,KAAK,CAACK,MAAM,CAACgC,IAAI,GAAG,IAAI;AAC1B,MAAA;AAEA,MAAA,OAAOrC,KAAK;AACd,IAAA,CAAC,CAAC;IAEFvD,SAAS,CAACyF,eAAe,CAAC;EAC5B,CAAC;EAKD,SAASN,YAAYA,CAACU,IAAI,EAAE;IAC1B,IAAIC,SAAS,GAAG,CAAC;IACjB,GAAG;AACD,MAAA,IAAI,CAACC,KAAK,CAACF,IAAI,CAACC,SAAS,CAAC,EAAE;QAC1BA,SAAS,IAAID,IAAI,CAACC,SAAS;AAC7B,MAAA;MACAD,IAAI,GAAGA,IAAI,CAACG,YAAY;AAC1B,IAAA,CAAC,QAAQH,IAAI;AACb,IAAA,OAAOC,SAAS;AAClB,EAAA;AAEA,EAAA,MAAMG,cAAc,GAAGC,WAAW,CAChCC,CAAC,IAAI;IACH,SAASC,gBAAgBA,CAACC,EAAE,EAAE;AAC5B,MAAA,MAAMC,IAAI,GAAGD,EAAE,CAACE,qBAAqB,EAAE;QACrCC,MAAM,GAAGvH,aAAa,CAACwH,UAAU,IAAIC,QAAQ,CAACC,eAAe,CAACC,WAAW;QACzEC,OAAO,GAAG5H,aAAa,CAACoG,WAAW,IAAIqB,QAAQ,CAACC,eAAe,CAACG,YAAY;AAC5EC,QAAAA,GAAG,GAAG,UAAUC,CAAC,EAAEC,CAAC,EAAE;AACpB,UAAA,OAAOP,QAAQ,CAACQ,gBAAgB,CAACF,CAAC,EAAEC,CAAC,CAAC;QACxC,CAAC;MAGH,IAAIX,IAAI,CAACa,KAAK,GAAG,CAAC,IAAIb,IAAI,CAACc,MAAM,GAAG,CAAC,IAAId,IAAI,CAACe,IAAI,GAAGb,MAAM,IAAIF,IAAI,CAACgB,GAAG,GAAGT,OAAO,EAC/E,OAAO,KAAK;AAGd,MAAA,OACER,EAAE,CAACkB,QAAQ,CAACR,GAAG,CAACT,IAAI,CAACe,IAAI,EAAEf,IAAI,CAACgB,GAAG,CAAC,CAAC,IACrCjB,EAAE,CAACkB,QAAQ,CAACR,GAAG,CAACT,IAAI,CAACa,KAAK,EAAEb,IAAI,CAACgB,GAAG,CAAC,CAAC,IACtCjB,EAAE,CAACkB,QAAQ,CAACR,GAAG,CAACT,IAAI,CAACa,KAAK,EAAEb,IAAI,CAACc,MAAM,CAAC,CAAC,IACzCf,EAAE,CAACkB,QAAQ,CAACR,GAAG,CAACT,IAAI,CAACe,IAAI,EAAEf,IAAI,CAACc,MAAM,CAAC,CAAC;AAE5C,IAAA;IAEA,SAASI,2BAA2BA,GAAG;AACrC,MAAA,MAAMC,aAAa,GAAGrJ,MAAM,CAACoE,MAAM,CAACe,KAAK,IAAIA,KAAK,CAACK,MAAM,CAACgC,IAAI,CAAC;AAE/D,MAAA,KAAK,IAAI8B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlI,mBAAmB,CAAC2B,OAAO,CAACwG,QAAQ,CAAChF,MAAM,EAAE+E,CAAC,EAAE,EAAE;QACpE,IAAItB,gBAAgB,CAAC5G,mBAAmB,CAAC2B,OAAO,CAACwG,QAAQ,CAACD,CAAC,CAAC,CAAC,EAAE;AAC7DvI,UAAAA,0BAA0B,CAACsI,aAAa,CAACC,CAAC,CAAC,CAAChF,GAAG,CAAC;AAChD,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAItE,MAAM,CAACuE,MAAM,KAAK,CAAC,EAAE;IAEzB,IAAIwD,CAAC,CAACzD,GAAG,KAAK,WAAW,IAAIyD,CAAC,CAACzD,GAAG,KAAK,YAAY,EAAE;MACnD,IAAI1D,oBAAoB,KAAK,IAAI,EAAE;AACjCwI,QAAAA,2BAA2B,EAAE;AAE7B,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAIrB,CAAC,CAACzD,GAAG,KAAK,WAAW,EAAE;AACzB,MAAA,MAAMkF,kBAAkB,GACtBxJ,MAAM,CAACyJ,SAAS,CAACtE,KAAK,IAAIA,KAAK,CAACb,GAAG,KAAK1D,oBAAoB,CAAC,GAAG,CAAC;AAEnE,MAAA,MAAM8I,aAAa,GAAG1J,MAAM,CAACwJ,kBAAkB,CAAC;AAEhD,MAAA,IAAIE,aAAa,EAAE;AACjB,QAAA,IAAIA,aAAa,CAAClE,MAAM,CAACgC,IAAI,EAAE;AAC7BzG,UAAAA,0BAA0B,CAAC2I,aAAa,CAACpF,GAAG,CAAC;AAC/C,QAAA,CAAC,MAAM;AACL8E,UAAAA,2BAA2B,EAAE;AAC/B,QAAA;AACF,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,IAAIrB,CAAC,CAACzD,GAAG,KAAK,YAAY,EAAE;AAC1B,MAAA,MAAMqF,cAAc,GAAG3J,MAAM,CAACyJ,SAAS,CAACtE,KAAK,IAAIA,KAAK,CAACb,GAAG,KAAK1D,oBAAoB,CAAC,GAAG,CAAC;AAExF,MAAA,MAAMgJ,SAAS,GAAG5J,MAAM,CAAC2J,cAAc,CAAC;AAExC,MAAA,IAAIC,SAAS,EAAE;AACb,QAAA,IAAIA,SAAS,CAACpE,MAAM,CAACgC,IAAI,EAAE;AACzBzG,UAAAA,0BAA0B,CAAC6I,SAAS,CAACtF,GAAG,CAAC;AAC3C,QAAA,CAAC,MAAM;AACL8E,UAAAA,2BAA2B,EAAE;AAC/B,QAAA;AACF,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,IAAIrB,CAAC,CAACzD,GAAG,KAAK,OAAO,EAAE;MACrB,IAAI1D,oBAAoB,KAAK,IAAI,EAAE;AAEnC,MAAA,IAAIJ,iBAAiB,CAACqJ,QAAQ,CAACjJ,oBAAoB,CAAC,EAAE;QACpDF,iBAAiB,CAACE,oBAAoB,CAAC;AACzC,MAAA,CAAC,MAAM;QACLH,eAAe,CAACG,oBAAoB,CAAC;AACvC,MAAA;AACF,IAAA;AACF,EAAA,CAAC,EACD,CACEZ,MAAM,EACNY,oBAAoB,EACpBG,0BAA0B,EAC1BP,iBAAiB,EACjBe,sBAAsB,CAE1B,CAAC;AAED,EAAA,MAAMuI,WAAW,GAAGhC,WAAW,CAAC,MAAM;IACpC/G,0BAA0B,CAAC,IAAI,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;AAGN+C,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAInD,cAAc,EAAE;AAClB2H,MAAAA,QAAQ,CAAC9B,gBAAgB,CAAC,SAAS,EAAEqB,cAAc,CAAC;AACtD,IAAA;IAEA,OAAO,MAAMS,QAAQ,CAAC7B,mBAAmB,CAAC,SAAS,EAAEoB,cAAc,CAAC;AACtE,EAAA,CAAC,EAAE,CAAClH,cAAc,EAAEkH,cAAc,CAAC,CAAC;AAEpC/D,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAInD,cAAc,IAAIC,oBAAoB,KAAK,IAAI,EAAE;MACnD0H,QAAQ,CAAC9B,gBAAgB,CAAC,OAAO,EAAEsD,WAAW,EAAE,IAAI,CAAC;AACvD,IAAA;IAEA,OAAO,MAAMxB,QAAQ,CAAC7B,mBAAmB,CAAC,OAAO,EAAEqD,WAAW,EAAE,IAAI,CAAC;EACvE,CAAC,EAAE,CAACnJ,cAAc,EAAEC,oBAAoB,EAAEkJ,WAAW,CAAC,CAAC;EAEvD,OACEC,GAAA,CAAAC,QAAA,EAAA;AAAAT,IAAAA,QAAA,EACEQ,GAAA,CAACE,kBAAkB,EAAA;AACjBC,MAAAA,GAAG,EAAE3I,sBAAuB;AAC5B4I,MAAAA,KAAK,EAAE;QAAEzE,MAAM,EAAE,GAAGU,kBAAkB,CAAA,EAAA;OAAO;MAC7CgE,SAAS,EAAElJ,KAAK,CAACkJ,SAAU;AAAA,MAAA,GACvBlJ,KAAK;AAAAqI,MAAAA,QAAA,EAERvJ,MAAM,CAACsH,GAAG,CACTnC,KAAK,IACHA,KAAK,CAACK,MAAM,CAACgC,IAAI,IACf6C,IAAA,CAACvK,cAAK,CAACwK,QAAQ,EAAA;AAAAf,QAAAA,QAAA,EAAA,CACZpE,KAAK,CAACK,MAAM,CAACC,IAAI,KAAK,YAAY,IACjCsE,GAAA,CAACE,UAAY,EAAA;AACXE,UAAAA,KAAK,EAAE;AACLI,YAAAA,SAAS,EAAE,CAAA,YAAA,EAAepF,KAAK,CAACK,MAAM,CAACb,UAAU,CAAA,GAAA,EAAMQ,KAAK,CAACK,MAAM,CAACZ,UAAU,CAAA,MAAA,CAAQ;AACtFc,YAAAA,MAAM,EAAE,CAAA,EAAGP,KAAK,CAACK,MAAM,CAACE,MAAM,CAAA,EAAA;WAC9B;UAAA6D,QAAA,EAEDpE,KAAK,CAACI;AAAK,SACA,CACf,EAEAJ,KAAK,CAACK,MAAM,CAACC,IAAI,KAAK,OAAO,IAC5BsE,GAAA,CAACE,oBAAsB,EAAA;AACrBE,UAAAA,KAAK,EAAE;AACLI,YAAAA,SAAS,EAAE,CAAA,YAAA,EAAepF,KAAK,CAACK,MAAM,CAACb,UAAU,CAAA,IAAA,EAAOQ,KAAK,CAACK,MAAM,CAACZ,UAAU,CAAA,MAAA,CAAQ;AACvFlB,YAAAA,KAAK,EAAE,CAAA,EAAGyB,KAAK,CAACK,MAAM,CAAC9B,KAAK,CAAA,EAAA,CAAI;AAChCgC,YAAAA,MAAM,EAAE,CAAA,EAAGP,KAAK,CAACK,MAAM,CAACE,MAAM,CAAA,EAAA,CAAI;AAClC8E,YAAAA,OAAO,EAAE,MAAM;AACfC,YAAAA,cAAc,EAAE;WAChB;AAAAlB,UAAAA,QAAA,EAEDnJ,QAAQ,KAAK,MAAM,GAClB2J,GAAA,CAACW,oBAAoB,EAAA;AACnBvF,YAAAA,KAAK,EAAEA,KAAM;YACb7E,UAAU,EAAE,YAAY,IAAI6E,KAAK,GAAGA,KAAK,CAAC7E,UAAU,GAAGA,UAAW;YAClEqK,QAAQ,EAAEnK,iBAAiB,CAACqJ,QAAQ,CAAC1E,KAAK,CAACb,GAAG,CAAE;AAChD/D,YAAAA,oBAAoB,EAAEA,oBAAqB;AAC3CqK,YAAAA,kBAAkB,EAAEzE,OAAO,CAAC3F,iBAAiB,CAAC+D,MAAM,CAAE;AACtD9D,YAAAA,eAAe,EAAEA,eAAgB;AACjCC,YAAAA,iBAAiB,EAAEA,iBAAkB;AACrCmK,YAAAA,YAAY,EAAEjK,oBAAoB,KAAKuE,KAAK,CAACb,GAAI;AACjDtD,YAAAA,SAAS,EAAEA,SAAU;AACrBC,YAAAA,kBAAkB,EAAEA;AAAmB,WACxC,CAAC,GAEF8I,GAAA,CAACe,uBAAuB,EAAA;AACtB3F,YAAAA,KAAK,EAAEA,KAAM;AACbjF,YAAAA,iBAAiB,EAAEA,iBAAkB;AACrCC,YAAAA,WAAW,EAAEA,WAAY;AACzB+F,YAAAA,iBAAiB,EAAEf,KAAK,CAACK,MAAM,CAACU,iBAAkB;AAClD6E,YAAAA,iBAAiB,EAAE5F,KAAK,CAACK,MAAM,CAAC9B,KAAK,GAAG,EAAG;YAC3CpD,UAAU,EAAE,YAAY,IAAI6E,KAAK,GAAGA,KAAK,CAAC7E,UAAU,GAAGA,UAAW;YAClEqK,QAAQ,EAAEnK,iBAAiB,CAACqJ,QAAQ,CAAC1E,KAAK,CAACb,GAAG,CAAE;AAChD/D,YAAAA,oBAAoB,EAAEA,oBAAqB;AAC3CqK,YAAAA,kBAAkB,EAAEzE,OAAO,CAAC3F,iBAAiB,CAAC+D,MAAM,CAAE;AACtD9D,YAAAA,eAAe,EAAEA,eAAgB;AACjCC,YAAAA,iBAAiB,EAAEA,iBAAkB;AACrCmK,YAAAA,YAAY,EAAEjK,oBAAoB,KAAKuE,KAAK,CAACb,GAAI;AACjDtD,YAAAA,SAAS,EAAEA;WACZ;AACF,SACqB,CACzB;OAAA,EArDkB,CAAA,cAAA,EAAiBmE,KAAK,CAACK,MAAM,CAACC,IAAI,CAAA,CAAA,EAAIN,KAAK,CAACb,GAAG,CAAA,CAsDpD,CAEtB;KACkB;AAAC,GACrB,CAAC;AAEP,CAAC;;;;"}
1
+ {"version":3,"file":"AssetGalleryBase.js","sources":["../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { throttle } from 'lodash';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport type { Asset } from '../asset.types';\nimport useIsomorphicLayoutEffect from './../../../../hooks/useIsomorphicLayoutEffect';\nimport * as S from './AssetGalleryBase.styled';\nimport AssetGalleryCompactCard from './AssetGalleryCompactCard/AssetGalleryCompactCard';\nimport AssetGalleryGridCard from './AssetGalleryGridCard/AssetGalleryGridCard';\n\ntype AssetGalleryBaseOwnProps = {\n /**\n * An array of assets to display in the gallery.\n */\n assets?: Asset[];\n /**\n * Whether the asset gallery should render the Asset Summary Card on hover.\n */\n activeSummaryCard?: boolean;\n /**\n * Whether the asset gallery should display the Version Count or Verifications on default.\n */\n displayIcon?: string;\n /**\n * The view mode of the gallery.\n */\n viewMode?: 'compact' | 'grid';\n /**\n * The maximum height of thumbnails in the gallery. When the grid is computed the gallery will try\n * to have each row of the gallery as close to the max height as possible.\n */\n thumbnailMaxHeight?: number;\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable?: boolean;\n /**\n * Whether or not the asset gallery should have custom borders on selected asset\n */\n customSelectedBorder?: string[];\n /**\n * An array containing the key of all selected assets\n */\n // (string | number)[] not string[] | number[] — union of array types narrows .includes() params to never.\n selectedAssetKeys: (string | number)[];\n /**\n * Scrollable element to attach event listeners to. Defaults to window.\n */\n scrollElement?: any; // TODO: PropTypes.instanceOf(Element)\n /**\n * The callback function when an asset is selected - returns the selected asset key\n */\n onAssetSelected: (...args: any[]) => any;\n /**\n * The callback function when an asset is unselected - returns the unselected asset key\n */\n onAssetUnselected: (...args: any[]) => any;\n /**\n * Whether or not the asset gallery should have soft selectable asset cards\n */\n softSelectable?: boolean;\n /**\n * A value containing the key of the soft selected asset or null\n */\n softSelectedAssetKey?: string | number;\n /**\n * The callback function when soft selected asset changes - returns the selected asset key or null\n */\n onAssetSoftSelectedChanged: (...args: any[]) => any;\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component?: (...args: any[]) => any;\n /**\n * Optional className\n */\n className?: string;\n /**\n * When true, hides the consent summary footer on grid cards (CardFooter + CardDivider). Default: false.\n */\n hideConsentSummary?: boolean;\n};\n\n// Omit before & — a bare intersection narrows colliding props instead of overriding them.\ntype Props = Omit<\n React.ComponentPropsWithoutRef<typeof S.AssetGalleryBase>,\n keyof AssetGalleryBaseOwnProps\n> &\n AssetGalleryBaseOwnProps;\nconst AssetGalleryBase = React.forwardRef<any, Props>(function AssetGalleryBase(\n {\n assets: assetsProp,\n activeSummaryCard,\n displayIcon,\n viewMode,\n thumbnailMaxHeight,\n selectable,\n customSelectedBorder,\n selectedAssetKeys,\n onAssetSelected,\n onAssetUnselected,\n softSelectable,\n softSelectedAssetKey,\n scrollElement: scrollElementProp,\n onAssetSoftSelectedChanged,\n component,\n hideConsentSummary,\n ...props\n },\n forwardedRef\n) {\n // Combine forwarded ref and the local ref\n const assetGalleryDOMNode = useRef(undefined);\n const assetGalleryCompactRef = useMergedRefs(forwardedRef, assetGalleryDOMNode);\n\n const assetGalleryWidth = useRef(0);\n const minimumRowAspectRatio = useRef(0);\n\n // Calculated assets\n const calculatedAssets = useRef([]);\n const [assets, setAssets] = useState([]);\n\n // Constants\n const MAXIMUM_ROW_HEIGHT = useMemo(\n () => (viewMode === 'grid' ? 450 : thumbnailMaxHeight),\n [viewMode, thumbnailMaxHeight]\n );\n const SPACE_BETWEEN_ASSETS = 8;\n const SPACE_UNDER_ASSETS = 8;\n const PRIMARY_SCROLL_BUFFER_HEIGHT = 1500;\n const SECONDARY_SCROLL_BUFFER_HEIGHT = 500;\n const GRID_VIEW_MODE_ASSET_MIN_WIDTH = 300;\n const GRID_VIEW_MODE_ASSET_HEIGHT = hideConsentSummary ? 503 : 556;\n const MISSING_WIDTH_PLACEHOLDER = 1920;\n const MISSING_HEIGHT_PLACEHOLDER = 1080;\n\n const isBrowser = typeof window !== 'undefined';\n\n const scrollElement = scrollElementProp || window;\n\n // Scroll position and direction\n const previousYOffset = useRef(isBrowser ? scrollElement.pageYOffset : 0);\n const latestYOffset = useRef(isBrowser ? scrollElement.pageYOffset : 0);\n const scrollDirection = useRef('down');\n\n // Track resize changes and set the current Asset Gallery width\n useIsomorphicLayoutEffect(() => {\n if (!assetGalleryDOMNode.current) return;\n\n const throttledOnResize = throttle(onResize, 1);\n\n const resizeObserver = new ResizeObserver(throttledOnResize);\n\n resizeObserver.observe(assetGalleryDOMNode.current);\n\n function onResize(entries) {\n entries.forEach(entry => {\n // setAssetGalleryWidth(entry.contentRect.width);\n if (assetGalleryWidth.current === entry.contentRect.width) return;\n window.requestAnimationFrame(() => {\n assetGalleryWidth.current = entry.contentRect.width;\n main();\n });\n });\n }\n\n return () => {\n resizeObserver.unobserve(assetGalleryDOMNode.current);\n };\n }, [assetsProp, assetGalleryDOMNode, MAXIMUM_ROW_HEIGHT]);\n\n //Re calculate Asset Gallery when something changes `MAXIMUM_ROW_HEIGHT` or `assetsProp` changes\n useEffect(() => {\n main();\n }, [MAXIMUM_ROW_HEIGHT, assetsProp]);\n\n const main = () => {\n calculateAssetGalleryAspectRatio();\n calculateLayout();\n calculateVisibility();\n };\n\n const calculateAssetGalleryAspectRatio = () => {\n // We don't care to compute the aspect ratio if the width of the gallery is 0\n if (assetGalleryWidth.current > 0) {\n minimumRowAspectRatio.current = calculateAspectRatio(\n assetGalleryWidth.current,\n MAXIMUM_ROW_HEIGHT\n );\n }\n };\n\n // Calculate asset gallery layout\n const calculateLayout = () => {\n // Check for required attributes and omit assets that are missing the attribute\n const assetsWithoutAKey = assetsProp.filter(a => !a.key);\n if (assetsWithoutAKey.length > 0) {\n assetsProp = assetsProp.filter(a => a.key);\n assetsWithoutAKey.forEach(a =>\n console.warn(\n 'Omitted asset from the gallery because it was missing the unique `key` property.',\n a\n )\n );\n }\n\n if (viewMode === 'grid' && assetGalleryWidth.current > 0) {\n // State\n let row = []; // The list of images in the current row.\n let translateX = 0; // The current translateX value that we are at\n let translateY = 0; // The current translateY value that we are at\n const computedAssets = [];\n let lastGroup = null; // The last group that was created\n\n // Calculate how many assets we can put in a row before violating `ASSET_MIN_WIDTH`\n // but we always want minimum of 1 asset in a row\n const desiredAssetCountInRow =\n Math.floor(assetGalleryWidth.current / GRID_VIEW_MODE_ASSET_MIN_WIDTH) || 1;\n\n // Calculate the width of each asset in a row\n const desiredAssetWidth =\n assetGalleryWidth.current / desiredAssetCountInRow -\n SPACE_BETWEEN_ASSETS +\n SPACE_BETWEEN_ASSETS / desiredAssetCountInRow;\n\n assetsProp.forEach((asset, index) => {\n // Create a group label\n if (asset.group && asset.group !== lastGroup) {\n computedAssets.push({\n title: asset.group,\n key: asset.key,\n layout: {\n type: 'groupLabel',\n height: 50,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n lastGroup = asset.group;\n translateY += 50 + SPACE_UNDER_ASSETS;\n }\n\n row.push(asset);\n\n if (\n row.length === desiredAssetCountInRow ||\n index + 1 === assetsProp.length ||\n (assetsProp[index + 1]?.group && assetsProp[index + 1].group !== asset.group)\n ) {\n const rowHeight = GRID_VIEW_MODE_ASSET_HEIGHT;\n\n row.forEach(rowAsset => {\n computedAssets.push({\n ...rowAsset,\n layout: {\n type: 'asset', // Indicates that this is an asset and not a group label\n width: Math.round(desiredAssetWidth),\n height: Math.round(rowHeight),\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n\n translateX += desiredAssetWidth + SPACE_BETWEEN_ASSETS;\n });\n\n row = [];\n translateX = 0;\n translateY += rowHeight + SPACE_UNDER_ASSETS;\n }\n });\n\n calculatedAssets.current = computedAssets;\n } else {\n if (minimumRowAspectRatio.current > 0) {\n // State\n let row = []; // The list of images in the current row.\n let translateX = 0; // The current translateX value that we are at\n let translateY = 0; // The current translateY value that we are at\n let rowAspectRatio = 0; // The aspect ratio of the row we are building\n let lastGroup = null; // The last group that was created\n\n const computedAssets = [];\n\n // Loop through all our images, building them up into rows and computing\n // the working rowAspectRatio.\n assetsProp.forEach((asset, index) => {\n // Create a group label\n if (asset.group && asset.group !== lastGroup) {\n computedAssets.push({\n title: asset.group,\n key: asset.key,\n layout: {\n type: 'groupLabel',\n height: 50,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n lastGroup = asset.group;\n translateY += 50 + SPACE_UNDER_ASSETS;\n }\n\n rowAspectRatio += calculateAspectRatio(\n asset.width || MISSING_WIDTH_PLACEHOLDER,\n asset.height || MISSING_HEIGHT_PLACEHOLDER\n );\n\n row.push(asset);\n\n // End the row if any of the conditions match\n if (\n rowAspectRatio >= minimumRowAspectRatio.current ||\n index + 1 === assetsProp.length ||\n (assetsProp[index + 1]?.group && assetsProp[index + 1].group !== asset.group)\n ) {\n // Make sure that the last row also has a reasonable height\n rowAspectRatio = Math.max(rowAspectRatio, minimumRowAspectRatio.current);\n\n // Compute this row's height.\n const totalDesiredWidthOfImages =\n assetGalleryWidth.current - SPACE_BETWEEN_ASSETS * (row.length - 1);\n const rowHeight = totalDesiredWidthOfImages / rowAspectRatio;\n\n row.forEach(rowAsset => {\n const assetWidth =\n rowHeight *\n calculateAspectRatio(\n rowAsset.width || MISSING_WIDTH_PLACEHOLDER,\n rowAsset.height || MISSING_HEIGHT_PLACEHOLDER\n );\n\n computedAssets.push({\n ...rowAsset,\n layout: {\n type: 'asset', // Indicates that this is an asset an not a group label\n width: Math.round(assetWidth),\n height: Math.round(rowHeight),\n translateX: Math.round(translateX),\n translateY: Math.round(translateY),\n hasHeightAndWidth: Boolean(rowAsset.width && rowAsset.height)\n }\n });\n\n // The next image is `SPACE_BETWEEN_ASSETS` pixels to the right of this image.\n translateX += assetWidth + SPACE_BETWEEN_ASSETS;\n });\n\n // Reset our state variables for next row.\n row = [];\n rowAspectRatio = 0;\n translateY += rowHeight + SPACE_UNDER_ASSETS;\n translateX = 0;\n }\n });\n\n calculatedAssets.current = computedAssets;\n }\n }\n };\n\n // Utility function to calculate the aspect ratio of a width and height\n function calculateAspectRatio(width, height) {\n return width / height;\n }\n\n // Calculate the total height of the gallery\n const totalGalleryHeight = useMemo(() => {\n if (assets.length === 0) {\n return 0;\n }\n\n const lastAsset = assets[assets.length - 1];\n\n if (assets.length < 8) {\n return (lastAsset.layout.translateY + lastAsset.layout.height) * 2;\n }\n\n return lastAsset.layout.translateY + lastAsset.layout.height;\n }, [assets]);\n\n useEffect(() => {\n const throttledOnScroll = throttle(onScroll, 200);\n\n scrollElement.addEventListener('scroll', throttledOnScroll, false);\n return () => scrollElement.removeEventListener('scroll', throttledOnScroll, false);\n }, [assetGalleryDOMNode, calculatedAssets]);\n\n function onScroll() {\n setScrollPositionAndDirection();\n calculateVisibility();\n }\n\n function setScrollPositionAndDirection() {\n const newYOffset = scrollElement.pageYOffset;\n previousYOffset.current = latestYOffset.current;\n latestYOffset.current = newYOffset;\n scrollDirection.current = latestYOffset.current > previousYOffset.current ? 'down' : 'up';\n }\n\n /**\n * +---------------------------+\n * | |\n * | |\n * | |\n * | |\n * + - - - - - - - - - - - - - + -------\n * | | A\n * | Secondary Buffer | SECONDARY_SCROLL_BUFFER_HEIGHT\n * | | V\n * +---------------------------+ -------\n * | | A\n * | | |\n * | | |\n * | Viewport | window.innerHeight\n * | | |\n * | | |\n * | | V\n * +---------------------------+ -------\n * | | A\n * | | |\n * | | |\n * | | |\n * | Primary Buffer | PRIMARY_SCROLL_BUFFER_HEIGHT\n * | | |\n * | | |\n * | | |\n * | | V\n * + - - - - - - - - - - - - - + -------\n * | |\n * | (Scroll direction) |\n * | | |\n * | | |\n * | V |\n * | |\n *\n */\n\n const calculateVisibility = () => {\n if (!assetGalleryDOMNode.current) return;\n\n // Get the top and bottom buffers heights.\n const bufferTop =\n scrollDirection.current === 'up'\n ? PRIMARY_SCROLL_BUFFER_HEIGHT\n : SECONDARY_SCROLL_BUFFER_HEIGHT;\n\n const bufferBottom =\n scrollDirection.current === 'up'\n ? SECONDARY_SCROLL_BUFFER_HEIGHT\n : PRIMARY_SCROLL_BUFFER_HEIGHT;\n\n const containerOffset = getOffsetTop(assetGalleryDOMNode.current);\n const scrollerHeight = scrollElement.innerHeight;\n\n const yOffset = latestYOffset.current;\n\n // This is the top of the top buffer. If the bottom of an image is above\n // this line, it will be removed.\n const minTranslateYPlusHeight = yOffset - containerOffset - bufferTop;\n\n // This is the bottom of the bottom buffer. If the top of an image is\n // below this line, it will be removed.\n const maxTranslateY = yOffset - containerOffset + scrollerHeight + bufferBottom;\n\n const finalizedAssets = calculatedAssets.current.map(asset => {\n if (\n scrollElement.self == window &&\n (asset.layout.translateY + asset.layout.height < minTranslateYPlusHeight ||\n asset.layout.translateY > maxTranslateY)\n ) {\n // Hide Image\n asset.layout.show = false;\n } else {\n // Show Image\n asset.layout.show = true;\n }\n\n return asset;\n });\n\n setAssets(finalizedAssets);\n };\n\n // Utility function that returns the distance from `elem` to the top of the page.\n // This is done by walking up the node tree, getting the offsetTop of each\n // parent node, until the top of the page.\n function getOffsetTop(elem) {\n let offsetTop = 0;\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop;\n }\n elem = elem.offsetParent;\n } while (elem);\n return offsetTop;\n }\n\n const handleKeyPress = useCallback(\n e => {\n function isElementVisible(el) {\n const rect = el.getBoundingClientRect(),\n vWidth = scrollElement.innerWidth || document.documentElement.clientWidth,\n vHeight = scrollElement.innerHeight || document.documentElement.clientHeight,\n efp = function (x, y) {\n return document.elementFromPoint(x, y);\n };\n\n // Return false if it's not in the viewport\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight)\n return false;\n\n // Return true if any of its four corners are visible\n return (\n el.contains(efp(rect.left, rect.top)) ||\n el.contains(efp(rect.right, rect.top)) ||\n el.contains(efp(rect.right, rect.bottom)) ||\n el.contains(efp(rect.left, rect.bottom))\n );\n }\n\n function softSelectFirstVisibleAsset() {\n const visibleAssets = assets.filter(asset => asset.layout.show);\n\n for (let i = 0; i < assetGalleryDOMNode.current.children.length; i++) {\n if (isElementVisible(assetGalleryDOMNode.current.children[i])) {\n onAssetSoftSelectedChanged(visibleAssets[i].key);\n break;\n }\n }\n }\n\n if (assets.length === 0) return;\n\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n if (softSelectedAssetKey === null) {\n softSelectFirstVisibleAsset();\n\n return;\n }\n }\n\n if (e.key === 'ArrowLeft') {\n const previousAssetIndex =\n assets.findIndex(asset => asset.key === softSelectedAssetKey) - 1;\n\n const previousAsset = assets[previousAssetIndex];\n\n if (previousAsset) {\n if (previousAsset.layout.show) {\n onAssetSoftSelectedChanged(previousAsset.key);\n } else {\n softSelectFirstVisibleAsset();\n }\n }\n\n return;\n }\n\n if (e.key === 'ArrowRight') {\n const nextAssetIndex = assets.findIndex(asset => asset.key === softSelectedAssetKey) + 1;\n\n const nextAsset = assets[nextAssetIndex];\n\n if (nextAsset) {\n if (nextAsset.layout.show) {\n onAssetSoftSelectedChanged(nextAsset.key);\n } else {\n softSelectFirstVisibleAsset();\n }\n }\n\n return;\n }\n\n if (e.key === 'Enter') {\n if (softSelectedAssetKey === null) return;\n\n if (selectedAssetKeys.includes(softSelectedAssetKey)) {\n onAssetUnselected(softSelectedAssetKey);\n } else {\n onAssetSelected(softSelectedAssetKey);\n }\n }\n },\n [\n assets,\n softSelectedAssetKey,\n onAssetSoftSelectedChanged,\n selectedAssetKeys,\n assetGalleryCompactRef\n ]\n );\n\n const handleClick = useCallback(() => {\n onAssetSoftSelectedChanged(null);\n }, []);\n\n // Add event listeners for keyboard navigation (soft select)\n useEffect(() => {\n if (softSelectable) {\n document.addEventListener('keydown', handleKeyPress);\n }\n\n return () => document.removeEventListener('keydown', handleKeyPress);\n }, [softSelectable, handleKeyPress]);\n\n useEffect(() => {\n if (softSelectable && softSelectedAssetKey !== null) {\n document.addEventListener('click', handleClick, true);\n }\n\n return () => document.removeEventListener('click', handleClick, true);\n }, [softSelectable, softSelectedAssetKey, handleClick]);\n\n return (\n <>\n <S.AssetGalleryBase\n ref={assetGalleryCompactRef}\n style={{ height: `${totalGalleryHeight}px` }}\n className={props.className}\n {...props}\n >\n {assets.map(\n asset =>\n asset.layout.show && (\n <React.Fragment key={`asset-gallery-${asset.layout.type}-${asset.key}`}>\n {asset.layout.type === 'groupLabel' && (\n <S.GroupLabel\n style={{\n transform: `translate3d(${asset.layout.translateX}px,${asset.layout.translateY}px, 0)`,\n height: `${asset.layout.height}px`\n }}\n >\n {asset.title}\n </S.GroupLabel>\n )}\n\n {asset.layout.type === 'asset' && (\n <S.AssetGalleryCardBase\n style={{\n transform: `translate3d(${asset.layout.translateX}px, ${asset.layout.translateY}px, 0)`,\n width: `${asset.layout.width}px`,\n height: `${asset.layout.height}px`,\n display: 'flex',\n justifyContent: 'center'\n }}\n >\n {viewMode === 'grid' ? (\n <AssetGalleryGridCard\n asset={asset}\n selectable={'selectable' in asset ? asset.selectable : selectable}\n selected={selectedAssetKeys.includes(asset.key)}\n customSelectedBorder={customSelectedBorder}\n extendedSelectMode={Boolean(selectedAssetKeys.length)}\n onAssetSelected={onAssetSelected}\n onAssetUnselected={onAssetUnselected}\n softSelected={softSelectedAssetKey === asset.key}\n component={component}\n hideConsentSummary={hideConsentSummary}\n />\n ) : (\n <AssetGalleryCompactCard\n asset={asset}\n activeSummaryCard={activeSummaryCard}\n displayIcon={displayIcon}\n hasHeightAndWidth={asset.layout.hasHeightAndWidth}\n collapseExtraInfo={asset.layout.width < 90}\n selectable={'selectable' in asset ? asset.selectable : selectable}\n selected={selectedAssetKeys.includes(asset.key)}\n customSelectedBorder={customSelectedBorder}\n extendedSelectMode={Boolean(selectedAssetKeys.length)}\n onAssetSelected={onAssetSelected}\n onAssetUnselected={onAssetUnselected}\n softSelected={softSelectedAssetKey === asset.key}\n component={component}\n />\n )}\n </S.AssetGalleryCardBase>\n )}\n </React.Fragment>\n )\n )}\n </S.AssetGalleryBase>\n </>\n );\n});\n\nexport default AssetGalleryBase;\n"],"names":["AssetGalleryBase","React","forwardRef","assets","assetsProp","activeSummaryCard","displayIcon","viewMode","thumbnailMaxHeight","selectable","customSelectedBorder","selectedAssetKeys","onAssetSelected","onAssetUnselected","softSelectable","softSelectedAssetKey","scrollElement","scrollElementProp","onAssetSoftSelectedChanged","component","hideConsentSummary","props","forwardedRef","assetGalleryDOMNode","useRef","undefined","assetGalleryCompactRef","useMergedRefs","assetGalleryWidth","minimumRowAspectRatio","calculatedAssets","setAssets","useState","MAXIMUM_ROW_HEIGHT","useMemo","SPACE_BETWEEN_ASSETS","SPACE_UNDER_ASSETS","PRIMARY_SCROLL_BUFFER_HEIGHT","SECONDARY_SCROLL_BUFFER_HEIGHT","GRID_VIEW_MODE_ASSET_MIN_WIDTH","GRID_VIEW_MODE_ASSET_HEIGHT","MISSING_WIDTH_PLACEHOLDER","MISSING_HEIGHT_PLACEHOLDER","isBrowser","window","previousYOffset","pageYOffset","latestYOffset","scrollDirection","useIsomorphicLayoutEffect","current","throttledOnResize","throttle","onResize","resizeObserver","ResizeObserver","observe","entries","forEach","entry","contentRect","width","requestAnimationFrame","main","unobserve","useEffect","calculateAssetGalleryAspectRatio","calculateLayout","calculateVisibility","calculateAspectRatio","assetsWithoutAKey","filter","a","key","length","console","warn","row","translateX","translateY","computedAssets","lastGroup","desiredAssetCountInRow","Math","floor","desiredAssetWidth","asset","index","group","push","title","layout","type","height","round","rowHeight","rowAsset","rowAspectRatio","max","totalDesiredWidthOfImages","assetWidth","hasHeightAndWidth","Boolean","totalGalleryHeight","lastAsset","throttledOnScroll","onScroll","addEventListener","removeEventListener","setScrollPositionAndDirection","newYOffset","bufferTop","bufferBottom","containerOffset","getOffsetTop","scrollerHeight","innerHeight","yOffset","minTranslateYPlusHeight","maxTranslateY","finalizedAssets","map","self","show","elem","offsetTop","isNaN","offsetParent","handleKeyPress","useCallback","e","isElementVisible","el","rect","getBoundingClientRect","vWidth","innerWidth","document","documentElement","clientWidth","vHeight","clientHeight","efp","x","y","elementFromPoint","right","bottom","left","top","contains","softSelectFirstVisibleAsset","visibleAssets","i","children","previousAssetIndex","findIndex","previousAsset","nextAssetIndex","nextAsset","includes","handleClick","_jsx","_Fragment","S","ref","style","className","_jsxs","Fragment","transform","display","justifyContent","AssetGalleryGridCard","selected","extendedSelectMode","softSelected","AssetGalleryCompactCard","collapseExtraInfo"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGalleryBase.styled.js","sources":["../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.styled.ts"],"sourcesContent":["/*\n * $-transient-prop pattern: rules in\n * `src/components/layout/SectionSeparator/SectionSeparator.styled.ts`, derivation and\n * measurements in `scripts/TS-MIGRATION-PLAYBOOK.md` §J.\n *\n * NO COMPONENT IN THIS FILE READS A PROP, so there is no transient-prop type to declare —\n * rule 2, declare only what is actually passed and read. It reported ZERO errors before\n * this commit, and the one thing left to do is the predicate below.\n */\nimport styled from 'styled-components';\nimport { applyDefaultTheme } from '../../../../utils/defaultTheme';\n\n/*\n * Single-argument, and it stays that way — peer floor `styled-components: >=5.1.0`, and\n * the two majors disagree on the second parameter (v6 `elementToBeCreated`, v5.1\n * `defaultValidatorFn`). A one-parameter function is assignable to both. §J.4.\n *\n * `prop` NEEDS THE ANNOTATION EVEN THOUGH ITS ABSENCE REPORTED NO ERROR. `withConfig`\n * receives this by reference, so it gets no contextual typing and `prop` was an implicit\n * `any` — silent, because `noImplicitAny` is off (+474 errors, see `tsconfig.json`). With\n * `any` there, `prop.startsWith` is unchecked: a typo in the method name would have been a\n * runtime TypeError in the prop filter of every component in the file. A file at zero\n * errors is not the same as a file that is checked.\n */\nconst shouldForwardProp = (prop: string): boolean => {\n return prop !== 'theme' && !prop.startsWith('$');\n};\n\nexport const AssetGalleryBase = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: relative;\n`;\n\nexport const GroupLabel = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n font-family: ${props => props.theme.primaryFontFamily};\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-100'),\n props.theme.getColor('gray-700')\n )}\n display: flex;\n align-items: flex-end;\n position: absolute;\n padding-bottom: 4px;\n box-sizing: border-box;\n`;\n\nexport const AssetGalleryCardBase = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n left: 0;\n margin: 0;\n z-index: 1;\n will-change: transform, width, height;\n\n &:hover {\n z-index: 2;\n }\n`;\n"],"names":["shouldForwardProp","prop","startsWith","AssetGalleryBase","styled","div","withConfig","attrs","applyDefaultTheme","displayName","componentId","GroupLabel","props","theme","primaryFontFamily","themeProp","getColor","AssetGalleryCardBase"],"mappings":";;;AAwBA,MAAMA,iBAAiB,GAAIC,IAAY,IAAc;EACnD,OAAOA,IAAI,KAAK,OAAO,IAAI,CAACA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC;AAClD,CAAC;AAEM,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,GAAG,CACvCC,UAAU,CAAC;AACVN,EAAAA;AACF,CAAC,CAAC,CACDO,KAAK,CAACC,iBAAiB,CAAC,CAAAF,UAAA,CAAA;EAAAG,WAAA,EAAA,0CAAA;EAAAC,WAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,oBAAA,CAAA;AAIpB,MAAMC,UAAU,GAAGP,MAAM,CAACC,GAAG,CACjCC,UAAU,CAAC;AACVN,EAAAA;AACF,CAAC,CAAC,CACDO,KAAK,CAACC,iBAAiB,CAAC,CAAAF,UAAA,CAAA;EAAAG,WAAA,EAAA,oCAAA;EAAAC,WAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,cAAA,EAAA,GAAA,EAAA,gGAAA,CAAA,EACVE,KAAK,IAAIA,KAAK,CAACC,KAAK,CAACC,iBAAiB,EACnDF,KAAK,IACLA,KAAK,CAACC,KAAK,CAACE,SAAS,CACnB,OAAO,EACPH,KAAK,CAACC,KAAK,CAACG,QAAQ,CAAC,UAAU,CAAC,EAChCJ,KAAK,CAACC,KAAK,CAACG,QAAQ,CAAC,UAAU,CACjC,CAAC;AAQE,MAAMC,oBAAoB,GAAGb,MAAM,CAACC,GAAG,CAC3CC,UAAU,CAAC;AACVN,EAAAA;AACF,CAAC,CAAC,CACDO,KAAK,CAACC,iBAAiB,CAAC,CAAAF,UAAA,CAAA;EAAAG,WAAA,EAAA,8CAAA;EAAAC,WAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,0GAAA,CAAA;;;;"}
1
+ {"version":3,"file":"AssetGalleryBase.styled.js","sources":["../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.styled.ts"],"sourcesContent":["// $-prefixed props are transient and never reach the DOM.\n// NO COMPONENT IN THIS FILE READS A PROP, so there is no transient-prop type to declare.\nimport styled from 'styled-components';\nimport { applyDefaultTheme } from '../../../../utils/defaultTheme';\n\n/*\n * Single-argument, and it stays that way — peer floor `styled-components: >=5.1.0`, and\n * the two majors disagree on the second parameter. `prop` needs the annotation because\n * `withConfig` receives this by reference, so it gets no contextual typing.\n */\nconst shouldForwardProp = (prop: string): boolean => {\n return prop !== 'theme' && !prop.startsWith('$');\n};\n\nexport const AssetGalleryBase = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: relative;\n`;\n\nexport const GroupLabel = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n font-family: ${props => props.theme.primaryFontFamily};\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-100'),\n props.theme.getColor('gray-700')\n )}\n display: flex;\n align-items: flex-end;\n position: absolute;\n padding-bottom: 4px;\n box-sizing: border-box;\n`;\n\nexport const AssetGalleryCardBase = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n left: 0;\n margin: 0;\n z-index: 1;\n will-change: transform, width, height;\n\n &:hover {\n z-index: 2;\n }\n`;\n"],"names":["shouldForwardProp","prop","startsWith","AssetGalleryBase","styled","div","withConfig","attrs","applyDefaultTheme","displayName","componentId","GroupLabel","props","theme","primaryFontFamily","themeProp","getColor","AssetGalleryCardBase"],"mappings":";;;AAUA,MAAMA,iBAAiB,GAAIC,IAAY,IAAc;EACnD,OAAOA,IAAI,KAAK,OAAO,IAAI,CAACA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC;AAClD,CAAC;AAEM,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,GAAG,CACvCC,UAAU,CAAC;AACVN,EAAAA;AACF,CAAC,CAAC,CACDO,KAAK,CAACC,iBAAiB,CAAC,CAAAF,UAAA,CAAA;EAAAG,WAAA,EAAA,0CAAA;EAAAC,WAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,oBAAA,CAAA;AAIpB,MAAMC,UAAU,GAAGP,MAAM,CAACC,GAAG,CACjCC,UAAU,CAAC;AACVN,EAAAA;AACF,CAAC,CAAC,CACDO,KAAK,CAACC,iBAAiB,CAAC,CAAAF,UAAA,CAAA;EAAAG,WAAA,EAAA,oCAAA;EAAAC,WAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,cAAA,EAAA,GAAA,EAAA,gGAAA,CAAA,EACVE,KAAK,IAAIA,KAAK,CAACC,KAAK,CAACC,iBAAiB,EACnDF,KAAK,IACLA,KAAK,CAACC,KAAK,CAACE,SAAS,CACnB,OAAO,EACPH,KAAK,CAACC,KAAK,CAACG,QAAQ,CAAC,UAAU,CAAC,EAChCJ,KAAK,CAACC,KAAK,CAACG,QAAQ,CAAC,UAAU,CACjC,CAAC;AAQE,MAAMC,oBAAoB,GAAGb,MAAM,CAACC,GAAG,CAC3CC,UAAU,CAAC;AACVN,EAAAA;AACF,CAAC,CAAC,CACDO,KAAK,CAACC,iBAAiB,CAAC,CAAAF,UAAA,CAAA;EAAAG,WAAA,EAAA,8CAAA;EAAAC,WAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,0GAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGalleryCompactCard.js","sources":["../../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.tsx"],"sourcesContent":["import { get, isFunction, mapKeys, omit } from 'lodash';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n LazyLoadComponent,\n LazyLoadImage,\n trackWindowScroll\n} from 'react-lazy-load-image-component';\nimport 'react-lazy-load-image-component/src/effects/opacity.css';\nimport {\n CheckRectangleIcon,\n HeadsetIcon,\n LayersIcon,\n PlayIcon,\n WarningCircleIcon\n} from '../../../../../icons';\nimport { convertMsToHMS } from '../../../../../utils/dateTime';\nimport { Badge } from '../../../../data';\n\nimport SummaryCard from '../../../SummaryCard/SummaryCard';\nimport type { AssetWithLayout } from '../../asset.types';\nimport * as S from './AssetGalleryCompactCard.styled';\n\nimport {\n useFloating,\n useHover,\n useInteractions,\n useTransitionStyles,\n flip,\n shift,\n arrow,\n autoUpdate,\n offset,\n useDismiss,\n useMergeRefs\n} from '@floating-ui/react';\nimport AssetActionsBase from '../../../AssetActionsBase/AssetActionsBase';\n\n// eslint-disable-next-line react/prop-types\nconst ComputedRootComponent = ({ component, asset, ...props }) => {\n // Omit props we don't need\n const newProps = mapKeys(\n omit(props, [\n 'theme',\n 'extendedSelectMode',\n 'softSelected',\n '$softSelected',\n 'customSelectedBorder',\n '$customSelectedBorder',\n 'hasHeightAndWidth',\n '$hasHeightAndWidth',\n 'collapseExtraInfo',\n '$collapseExtraInfo'\n ]),\n (_, key) => (key === 'innerRef' ? 'ref' : key)\n );\n\n if (component) {\n if (!isFunction(component)) throw Error('Expected a function in component-prop');\n\n if (React.isValidElement(component(asset, newProps.children))) {\n return React.cloneElement(component(asset, newProps.children), omit(newProps, ['children']));\n }\n }\n\n return <S.AssetGalleryCompactCard ref={newProps.ref} {...newProps} />;\n};\n\ntype AssetGalleryCompactCardProps = {\n /**\n * An array of assets to display in the gallery.\n */\n asset: AssetWithLayout;\n /**\n * Tells the asset card that the asset height and width was known\n */\n hasHeightAndWidth?: boolean;\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable?: boolean;\n /**\n * Is the asset selected\n */\n selected?: boolean;\n /**\n * Whether or not the asset gallery should have custom borders on selected asset\n */\n customSelectedBorder?: string[];\n /**\n * Makes the whole asset card into a selectable area\n */\n extendedSelectMode?: boolean;\n /**\n * The callback function when an asset is selected - returns the selected asset key\n */\n onAssetSelected: (...args: any[]) => any;\n /**\n * The callback function when an asset is unselected - returns the unselected asset key\n */\n onAssetUnselected: (...args: any[]) => any;\n /**\n * Is the asset soft selected\n */\n softSelected: boolean;\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component?: (...args: any[]) => any;\n /**\n * Internal prop used by the gallery to determine if the card is in the viewport - This prop is\n * not intended to be used by consumers\n */\n scrollPosition?: number;\n /**\n * If the width of the card is too small to render all the badges\n */\n collapseExtraInfo?: boolean;\n /**\n * Display a tooltip on hover with a summary of info about the asset\n */\n activeSummaryCard?: boolean;\n /**\n * * Display an icon on the card\n */\n displayIcon?: 'dynamic' | 'versions' | 'verifications' | '';\n};\n\nconst AssetGalleryCompactCard = (props: AssetGalleryCompactCardProps) => {\n const {\n asset,\n activeSummaryCard,\n displayIcon,\n selectable,\n hasHeightAndWidth,\n selected,\n customSelectedBorder,\n extendedSelectMode,\n onAssetSelected,\n onAssetUnselected,\n softSelected,\n component,\n scrollPosition,\n collapseExtraInfo\n } = props;\n\n const ARROW_WIDTH = 30;\n const ARROW_HEIGHT = 15;\n const GAP = 8;\n\n const arrowRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n /*\n * NMB-3998: same as AssetAction — `useState('bottom')` widens to `string` and\n * `useFloating`'s `placement` is the closed `Placement` union (TS2322). No setter is\n * destructured, so the literal type is exact. `as const` erases.\n */\n const [placement] = useState('bottom' as const);\n\n const [isOverlayHovered, setIsOverlayHovered] = useState(false);\n const [openedSubActions, updateOpenedSubActions] = useState([]);\n\n const { refs, floatingStyles, context } = useFloating({\n placement,\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({\n element: arrowRef\n })\n ]\n });\n\n const { isMounted, styles } = useTransitionStyles(context, {\n initial: {\n transform: 'translateY(-8px)',\n opacity: 0\n },\n duration: {\n open: 200,\n close: 100\n }\n });\n\n const hover = useHover(context, {\n restMs: 100\n });\n const dismiss = useDismiss(context, {\n referencePress: true,\n ancestorScroll: true,\n windowScroll: true,\n windowBlur: true\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, hover]);\n\n useEffect(() => {\n const newOpenedSubActions = (asset?.actions ?? []).map(() => false);\n updateOpenedSubActions(newOpenedSubActions);\n }, [asset]);\n\n useEffect(() => {\n if (!isOverlayHovered && openedSubActions?.length) {\n updateOpenedSubActions(openedSubActions.map(() => false));\n }\n }, [isOverlayHovered]);\n\n const mouseHasEnteredOverlay = useCallback(() => {\n setIsOverlayHovered(true);\n }, []);\n\n const mouseHasLeftOverlay = useCallback(() => {\n setIsOverlayHovered(false);\n }, []);\n\n const isAnySubActionsOpened = useMemo(() => {\n return openedSubActions.some(isOpened => isOpened);\n }, [openedSubActions]);\n\n function onClick(event) {\n if (extendedSelectMode) {\n return onSelectClick(event);\n }\n\n if (isFunction(asset.onClick)) {\n asset.onClick(event, asset);\n }\n }\n\n function onSelectClick(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (selected) {\n return onAssetUnselected(asset.key);\n }\n\n if (selectable) {\n return onAssetSelected(asset.key);\n }\n }\n\n function onContextMenu(event) {\n event.preventDefault();\n asset.onContextMenu(event);\n }\n\n useEffect(() => {\n if (isFunction(asset.onContextMenu)) {\n if (cardRef.current) {\n cardRef.current.addEventListener('contextmenu', onContextMenu);\n }\n return () => {\n if (cardRef.current) {\n cardRef.current.removeEventListener('contextmenu', onContextMenu);\n }\n };\n }\n }, []);\n\n function onDragstart(event) {\n asset.onDragstart(event);\n }\n\n useEffect(() => {\n if (isFunction(asset.onDragstart)) {\n if (dragRef.current) {\n dragRef.current.addEventListener('dragstart', onDragstart);\n }\n return () => {\n if (dragRef.current) {\n dragRef.current.removeEventListener('dragstart', onDragstart);\n }\n };\n }\n }, []);\n\n const videoPlayerRef = useRef(undefined);\n const cardRef = useRef(undefined);\n const dragRef = useRef(null);\n\n const overlayCompactRef = useMergeRefs([cardRef, refs.setReference]);\n\n function onMouseEnter(event) {\n if (videoPlayerRef.current) {\n const playPromise = videoPlayerRef.current.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n // Playback started!\n })\n .catch(() => {\n // Play was prevented - silently swallow play errors\n });\n }\n }\n\n if (isFunction(asset.onMouseEnter)) {\n asset.onMouseEnter(event, asset);\n }\n }\n\n function onMouseLeave() {\n if (videoPlayerRef.current) {\n videoPlayerRef.current.pause();\n }\n }\n\n const renderPreview = asset => {\n let previewContent = null;\n if (asset?.fileType?.toLowerCase() === 'video') {\n previewContent = (\n <LazyLoadComponent scrollPosition={scrollPosition}>\n <video\n ref={videoPlayerRef}\n loop\n muted\n // style={{ maxHeight: maxHeight }}\n >\n <source src={asset.previewUrl} type=\"video/mp4\" />\n </video>\n </LazyLoadComponent>\n );\n } else if (asset?.fileType?.toLowerCase() === 'audio') {\n previewContent = (\n <LazyLoadComponent scrollPosition={scrollPosition}>\n <div className=\"audio\">\n <HeadsetIcon />\n </div>\n </LazyLoadComponent>\n );\n } else {\n previewContent = (\n <LazyLoadImage\n alt={asset?.title}\n src={asset?.previewUrl}\n height=\"100%\"\n width=\"100%\"\n delayMethod=\"debounce\"\n delayTime={0}\n threshold={1500}\n scrollPosition={scrollPosition}\n />\n );\n }\n\n return (\n <S.Figure $hasHeightAndWidth={hasHeightAndWidth}>\n {previewContent}\n <S.FigureOverlayBackdrop selected={selected} />\n </S.Figure>\n );\n };\n\n // If this asset is soft selected we will scroll it into the viewport if it's outside\n useEffect(() => {\n if (softSelected) {\n cardRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [softSelected]);\n\n const renderVersionsBadge = useCallback(() => {\n if (!asset?.versions) return null;\n\n return (\n <Badge\n badgeIcon={<LayersIcon />}\n badgeContent={asset.versions}\n backgroundColors={['black', 'black']}\n colors={['#f7f8f9', '#f7f8f9']}\n fontSize={12}\n fontWeight={500}\n lineHeight={16}\n verticalPadding={4}\n horizontalPadding={8}\n />\n );\n }, [asset]);\n\n const renderVerificationBadge = useCallback(() => {\n if (!asset?.verifications) return null;\n return asset?.verifications;\n }, [asset]);\n\n /*\n * NMB-3998: the dependency array was MISSING entirely — TS2554 \"Expected 2 arguments,\n * but got 1\". `useCallback` with one argument memoizes nothing: it returns a brand new\n * function on every render, so this was a more expensive `const fn = () => …`. A missing\n * deps array is never deliberate, and the correct array is derivable rather than\n * invented — the free variables are exactly the three read in the body.\n *\n * Behaviour-preserving: the callback's RETURN VALUE is unchanged for any given render,\n * only its referential identity now holds steady. Nothing here is passed to a memoized\n * child or used as an effect dependency, so the rendered DOM is byte-identical; the\n * render and visual gates confirm it.\n */\n const renderdynamicBadge = useCallback(() => {\n if (asset?.verifications) return renderVerificationBadge();\n if (asset?.versions) return renderVersionsBadge();\n return null;\n }, [asset, renderVerificationBadge, renderVersionsBadge]);\n\n const renderBadge = () => {\n switch (displayIcon) {\n case 'versions':\n return renderVersionsBadge();\n case 'verifications':\n return renderVerificationBadge();\n case 'dynamic':\n return renderdynamicBadge();\n default:\n return null;\n }\n };\n\n const renderMediaBadge = useCallback(() => {\n let badgeIcon = null;\n let badgeContent = null;\n\n if (asset?.fileType === 'video') {\n badgeIcon = <PlayIcon />;\n }\n\n if (asset?.duration) {\n badgeContent = convertMsToHMS(asset.duration);\n }\n\n if (!badgeIcon && !badgeContent) return null;\n return (\n <Badge\n badgeIcon={badgeIcon}\n badgeContent={badgeContent}\n backgroundColors={['black', 'black']}\n colors={['#f7f8f9', '#f7f8f9']}\n fontSize={12}\n fontWeight={500}\n lineHeight={16}\n verticalPadding={4}\n horizontalPadding={8}\n minWidth={32}\n height={24}\n />\n );\n }, [asset]);\n\n const renderSummaryCardHeaderLeft = useCallback(() => {\n return (\n <>\n {renderVersionsBadge()}\n {renderMediaBadge()}\n </>\n );\n }, [asset]);\n\n const renderPopoverContent = useCallback(() => {\n return (\n <SummaryCard\n activeSummaryCard={activeSummaryCard}\n title={asset?.title || ''}\n description={asset?.description || ''}\n instructions={asset?.imageRights || ''}\n instructionSeverity={asset?.instructionSeverity}\n instructionLabels={asset?.instructionLabels}\n headerRight={asset?.summary?.headerRight || ''}\n headerLeft={\n <>\n {renderSummaryCardHeaderLeft()}\n {asset?.summary?.headerLeft || ''}\n </>\n }\n footerLeft={asset?.summary?.footerLeft || ''}\n footerRight={asset?.summary?.footerRight || ''}\n width={375}\n view={'compact'}\n />\n );\n }, [asset]);\n\n return (\n <S.AssetGalleryWrapper disabled={asset.disabled}>\n <S.AssetGalleryCompactCard\n as={ComputedRootComponent}\n component={component}\n disabled={asset.disabled}\n asset={asset}\n onClick={onClick}\n extendedSelectMode={extendedSelectMode}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n draggable={asset.draggable}\n innerRef={dragRef}\n selected={selected}\n // ref={refs.setReference}\n {...getReferenceProps()}\n >\n <S.Reference ref={refs.setReference}>\n {asset.previewUrl && renderPreview(asset)}\n </S.Reference>\n\n <S.Overlay\n ref={overlayCompactRef}\n onMouseEnter={mouseHasEnteredOverlay}\n onMouseLeave={mouseHasLeftOverlay}\n style={{ height: '100%' }}\n {...getReferenceProps()}\n >\n <S.OverlayBackdrop $softSelected={softSelected} selected={selected} />\n {(asset?.statusIcon || asset?.actions) && (\n <S.OverlayInfoTopActions>\n {asset.statusIcon && <S.StatusIcon>{asset.statusIcon}</S.StatusIcon>}\n {asset?.actions && (\n <S.VisibleOnHover $hidden={extendedSelectMode}>\n <AssetActionsBase actions={asset.actions} asset={asset} />\n </S.VisibleOnHover>\n )}\n </S.OverlayInfoTopActions>\n )}\n <S.OverlayInfo>\n {isOverlayHovered && !activeSummaryCard && <span>{asset.title}</span>}\n <S.OverlayInfoTop>\n <S.OverlayInfoTopLeft $collapseExtraInfo={collapseExtraInfo}>\n {renderBadge()}\n </S.OverlayInfoTopLeft>\n {asset?.note?.title && !asset.statusIcon && (\n <S.OverlayInfoTopWarning type={asset?.note?.type}>\n <WarningCircleIcon />\n </S.OverlayInfoTopWarning>\n )}\n </S.OverlayInfoTop>\n <S.OverlayInfoBottom>\n {selectable && (\n <S.OverlayInfoBottomSelectButton selected={selected}>\n <CheckRectangleIcon onClick={onSelectClick} />\n </S.OverlayInfoBottomSelectButton>\n )}\n <S.OverlayInfoBottomMediaIcon>{renderMediaBadge()}</S.OverlayInfoBottomMediaIcon>\n </S.OverlayInfoBottom>\n </S.OverlayInfo>\n {asset.completed && <S.OverlayCompleted $softSelected={softSelected} />}\n {asset.hasError && <S.OverlayHasError $softSelected={softSelected} />}\n {selectable && (\n <S.OverlaySelected\n selected={selected}\n $softSelected={softSelected}\n $customSelectedBorder={customSelectedBorder}\n />\n )}\n {isOpen &&\n isOverlayHovered &&\n isMounted &&\n activeSummaryCard &&\n !isAnySubActionsOpened && (\n <div ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n <div style={styles} className=\"floating\">\n {renderPopoverContent()}\n <S.StyledFloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n />\n </div>\n </div>\n )}\n {isOpen &&\n isOverlayHovered &&\n isMounted &&\n activeSummaryCard &&\n !isAnySubActionsOpened && (\n <div ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n <div style={styles} className=\"floating\">\n {renderPopoverContent()}\n <S.StyledFloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n />\n </div>\n </div>\n )}\n </S.Overlay>\n\n {asset.overlay && <S.ConsumerDefinedOverlay>{asset.overlay}</S.ConsumerDefinedOverlay>}\n </S.AssetGalleryCompactCard>\n </S.AssetGalleryWrapper>\n );\n};\n\nexport default trackWindowScroll(\n React.memo(AssetGalleryCompactCard, (prevProps, nextProps) => {\n // The asset card will only re-render if any of the following props change.\n const reactiveProps = [\n 'selectable',\n 'selected',\n 'extendedSelectMode',\n 'softSelected',\n 'asset.previewUrl',\n 'asset.overlay',\n 'asset.statusIcon',\n 'hasHeightAndWidth',\n 'collapseExtraInfo',\n 'asset.imageRights',\n 'asset.instructionSeverity',\n 'asset.description',\n 'asset.title'\n ];\n\n return reactiveProps.every(propKey => get(prevProps, propKey) === get(nextProps, propKey));\n })\n);\n"],"names":["ComputedRootComponent","component","asset","props","newProps","mapKeys","omit","_","key","isFunction","Error","React","isValidElement","children","cloneElement","_jsx","S","ref","AssetGalleryCompactCard","activeSummaryCard","displayIcon","selectable","hasHeightAndWidth","selected","customSelectedBorder","extendedSelectMode","onAssetSelected","onAssetUnselected","softSelected","scrollPosition","collapseExtraInfo","ARROW_WIDTH","ARROW_HEIGHT","GAP","arrowRef","useRef","isOpen","setIsOpen","useState","placement","isOverlayHovered","setIsOverlayHovered","openedSubActions","updateOpenedSubActions","refs","floatingStyles","context","useFloating","open","onOpenChange","whileElementsMounted","autoUpdate","middleware","offset","flip","padding","shift","arrow","element","isMounted","styles","useTransitionStyles","initial","transform","opacity","duration","close","hover","useHover","restMs","dismiss","useDismiss","referencePress","ancestorScroll","windowScroll","windowBlur","getReferenceProps","getFloatingProps","useInteractions","useEffect","newOpenedSubActions","actions","map","length","mouseHasEnteredOverlay","useCallback","mouseHasLeftOverlay","isAnySubActionsOpened","useMemo","some","isOpened","onClick","event","onSelectClick","preventDefault","stopPropagation","onContextMenu","cardRef","current","addEventListener","removeEventListener","onDragstart","dragRef","videoPlayerRef","undefined","overlayCompactRef","useMergeRefs","setReference","onMouseEnter","playPromise","play","then","catch","onMouseLeave","pause","renderPreview","previewContent","fileType","toLowerCase","LazyLoadComponent","loop","muted","src","previewUrl","type","className","HeadsetIcon","LazyLoadImage","alt","title","height","width","delayMethod","delayTime","threshold","_jsxs","$hasHeightAndWidth","scrollIntoView","behavior","block","renderVersionsBadge","versions","Badge","badgeIcon","LayersIcon","badgeContent","backgroundColors","colors","fontSize","fontWeight","lineHeight","verticalPadding","horizontalPadding","renderVerificationBadge","verifications","renderdynamicBadge","renderBadge","renderMediaBadge","PlayIcon","convertMsToHMS","minWidth","renderSummaryCardHeaderLeft","_Fragment","renderPopoverContent","SummaryCard","description","instructions","imageRights","instructionSeverity","instructionLabels","headerRight","summary","headerLeft","footerLeft","footerRight","view","disabled","as","draggable","innerRef","style","$softSelected","statusIcon","$hidden","AssetActionsBase","$collapseExtraInfo","note","WarningCircleIcon","CheckRectangleIcon","completed","hasError","$customSelectedBorder","setFloating","overlay","trackWindowScroll","memo","prevProps","nextProps","reactiveProps","every","propKey","get"],"mappings":"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"}
1
+ {"version":3,"file":"AssetGalleryCompactCard.js","sources":["../../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.tsx"],"sourcesContent":["import { get, isFunction, mapKeys, omit } from 'lodash';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n LazyLoadComponent,\n LazyLoadImage,\n trackWindowScroll\n} from 'react-lazy-load-image-component';\nimport 'react-lazy-load-image-component/src/effects/opacity.css';\nimport {\n CheckRectangleIcon,\n HeadsetIcon,\n LayersIcon,\n PlayIcon,\n WarningCircleIcon\n} from '../../../../../icons';\nimport { convertMsToHMS } from '../../../../../utils/dateTime';\nimport { Badge } from '../../../../data';\n\nimport SummaryCard from '../../../SummaryCard/SummaryCard';\nimport type { AssetWithLayout } from '../../asset.types';\nimport * as S from './AssetGalleryCompactCard.styled';\n\nimport {\n useFloating,\n useHover,\n useInteractions,\n useTransitionStyles,\n flip,\n shift,\n arrow,\n autoUpdate,\n offset,\n useDismiss,\n useMergeRefs\n} from '@floating-ui/react';\nimport AssetActionsBase from '../../../AssetActionsBase/AssetActionsBase';\n\n// eslint-disable-next-line react/prop-types\nconst ComputedRootComponent = ({ component, asset, ...props }) => {\n // Omit props we don't need\n const newProps = mapKeys(\n omit(props, [\n 'theme',\n 'extendedSelectMode',\n 'softSelected',\n '$softSelected',\n 'customSelectedBorder',\n '$customSelectedBorder',\n 'hasHeightAndWidth',\n '$hasHeightAndWidth',\n 'collapseExtraInfo',\n '$collapseExtraInfo'\n ]),\n (_, key) => (key === 'innerRef' ? 'ref' : key)\n );\n\n if (component) {\n if (!isFunction(component)) throw Error('Expected a function in component-prop');\n\n if (React.isValidElement(component(asset, newProps.children))) {\n return React.cloneElement(component(asset, newProps.children), omit(newProps, ['children']));\n }\n }\n\n return <S.AssetGalleryCompactCard ref={newProps.ref} {...newProps} />;\n};\n\ntype AssetGalleryCompactCardProps = {\n /**\n * An array of assets to display in the gallery.\n */\n asset: AssetWithLayout;\n /**\n * Tells the asset card that the asset height and width was known\n */\n hasHeightAndWidth?: boolean;\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable?: boolean;\n /**\n * Is the asset selected\n */\n selected?: boolean;\n /**\n * Whether or not the asset gallery should have custom borders on selected asset\n */\n customSelectedBorder?: string[];\n /**\n * Makes the whole asset card into a selectable area\n */\n extendedSelectMode?: boolean;\n /**\n * The callback function when an asset is selected - returns the selected asset key\n */\n onAssetSelected: (...args: any[]) => any;\n /**\n * The callback function when an asset is unselected - returns the unselected asset key\n */\n onAssetUnselected: (...args: any[]) => any;\n /**\n * Is the asset soft selected\n */\n softSelected: boolean;\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component?: (...args: any[]) => any;\n /**\n * Internal prop used by the gallery to determine if the card is in the viewport - This prop is\n * not intended to be used by consumers\n */\n scrollPosition?: number;\n /**\n * If the width of the card is too small to render all the badges\n */\n collapseExtraInfo?: boolean;\n /**\n * Display a tooltip on hover with a summary of info about the asset\n */\n activeSummaryCard?: boolean;\n /**\n * * Display an icon on the card\n */\n displayIcon?: 'dynamic' | 'versions' | 'verifications' | '';\n};\n\nconst AssetGalleryCompactCard = (props: AssetGalleryCompactCardProps) => {\n const {\n asset,\n activeSummaryCard,\n displayIcon,\n selectable,\n hasHeightAndWidth,\n selected,\n customSelectedBorder,\n extendedSelectMode,\n onAssetSelected,\n onAssetUnselected,\n softSelected,\n component,\n scrollPosition,\n collapseExtraInfo\n } = props;\n\n const ARROW_WIDTH = 30;\n const ARROW_HEIGHT = 15;\n const GAP = 8;\n\n const arrowRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n // as const keeps the literal type; plain 'bottom' widens to string and useFloating wants Placement union.\n const [placement] = useState('bottom' as const);\n\n const [isOverlayHovered, setIsOverlayHovered] = useState(false);\n const [openedSubActions, updateOpenedSubActions] = useState([]);\n\n const { refs, floatingStyles, context } = useFloating({\n placement,\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({\n element: arrowRef\n })\n ]\n });\n\n const { isMounted, styles } = useTransitionStyles(context, {\n initial: {\n transform: 'translateY(-8px)',\n opacity: 0\n },\n duration: {\n open: 200,\n close: 100\n }\n });\n\n const hover = useHover(context, {\n restMs: 100\n });\n const dismiss = useDismiss(context, {\n referencePress: true,\n ancestorScroll: true,\n windowScroll: true,\n windowBlur: true\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, hover]);\n\n useEffect(() => {\n const newOpenedSubActions = (asset?.actions ?? []).map(() => false);\n updateOpenedSubActions(newOpenedSubActions);\n }, [asset]);\n\n useEffect(() => {\n if (!isOverlayHovered && openedSubActions?.length) {\n updateOpenedSubActions(openedSubActions.map(() => false));\n }\n }, [isOverlayHovered]);\n\n const mouseHasEnteredOverlay = useCallback(() => {\n setIsOverlayHovered(true);\n }, []);\n\n const mouseHasLeftOverlay = useCallback(() => {\n setIsOverlayHovered(false);\n }, []);\n\n const isAnySubActionsOpened = useMemo(() => {\n return openedSubActions.some(isOpened => isOpened);\n }, [openedSubActions]);\n\n function onClick(event) {\n if (extendedSelectMode) {\n return onSelectClick(event);\n }\n\n if (isFunction(asset.onClick)) {\n asset.onClick(event, asset);\n }\n }\n\n function onSelectClick(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (selected) {\n return onAssetUnselected(asset.key);\n }\n\n if (selectable) {\n return onAssetSelected(asset.key);\n }\n }\n\n function onContextMenu(event) {\n event.preventDefault();\n asset.onContextMenu(event);\n }\n\n useEffect(() => {\n if (isFunction(asset.onContextMenu)) {\n if (cardRef.current) {\n cardRef.current.addEventListener('contextmenu', onContextMenu);\n }\n return () => {\n if (cardRef.current) {\n cardRef.current.removeEventListener('contextmenu', onContextMenu);\n }\n };\n }\n }, []);\n\n function onDragstart(event) {\n asset.onDragstart(event);\n }\n\n useEffect(() => {\n if (isFunction(asset.onDragstart)) {\n if (dragRef.current) {\n dragRef.current.addEventListener('dragstart', onDragstart);\n }\n return () => {\n if (dragRef.current) {\n dragRef.current.removeEventListener('dragstart', onDragstart);\n }\n };\n }\n }, []);\n\n const videoPlayerRef = useRef(undefined);\n const cardRef = useRef(undefined);\n const dragRef = useRef(null);\n\n const overlayCompactRef = useMergeRefs([cardRef, refs.setReference]);\n\n function onMouseEnter(event) {\n if (videoPlayerRef.current) {\n const playPromise = videoPlayerRef.current.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n // Playback started!\n })\n .catch(() => {\n // Play was prevented - silently swallow play errors\n });\n }\n }\n\n if (isFunction(asset.onMouseEnter)) {\n asset.onMouseEnter(event, asset);\n }\n }\n\n function onMouseLeave() {\n if (videoPlayerRef.current) {\n videoPlayerRef.current.pause();\n }\n }\n\n const renderPreview = asset => {\n let previewContent = null;\n if (asset?.fileType?.toLowerCase() === 'video') {\n previewContent = (\n <LazyLoadComponent scrollPosition={scrollPosition}>\n <video\n ref={videoPlayerRef}\n loop\n muted\n // style={{ maxHeight: maxHeight }}\n >\n <source src={asset.previewUrl} type=\"video/mp4\" />\n </video>\n </LazyLoadComponent>\n );\n } else if (asset?.fileType?.toLowerCase() === 'audio') {\n previewContent = (\n <LazyLoadComponent scrollPosition={scrollPosition}>\n <div className=\"audio\">\n <HeadsetIcon />\n </div>\n </LazyLoadComponent>\n );\n } else {\n previewContent = (\n <LazyLoadImage\n alt={asset?.title}\n src={asset?.previewUrl}\n height=\"100%\"\n width=\"100%\"\n delayMethod=\"debounce\"\n delayTime={0}\n threshold={1500}\n scrollPosition={scrollPosition}\n />\n );\n }\n\n return (\n <S.Figure $hasHeightAndWidth={hasHeightAndWidth}>\n {previewContent}\n <S.FigureOverlayBackdrop selected={selected} />\n </S.Figure>\n );\n };\n\n // If this asset is soft selected we will scroll it into the viewport if it's outside\n useEffect(() => {\n if (softSelected) {\n cardRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [softSelected]);\n\n const renderVersionsBadge = useCallback(() => {\n if (!asset?.versions) return null;\n\n return (\n <Badge\n badgeIcon={<LayersIcon />}\n badgeContent={asset.versions}\n backgroundColors={['black', 'black']}\n colors={['#f7f8f9', '#f7f8f9']}\n fontSize={12}\n fontWeight={500}\n lineHeight={16}\n verticalPadding={4}\n horizontalPadding={8}\n />\n );\n }, [asset]);\n\n const renderVerificationBadge = useCallback(() => {\n if (!asset?.verifications) return null;\n return asset?.verifications;\n }, [asset]);\n\n // Deps array was missing, so this memoized nothing; return value unchanged, only identity is now stable.\n const renderdynamicBadge = useCallback(() => {\n if (asset?.verifications) return renderVerificationBadge();\n if (asset?.versions) return renderVersionsBadge();\n return null;\n }, [asset, renderVerificationBadge, renderVersionsBadge]);\n\n const renderBadge = () => {\n switch (displayIcon) {\n case 'versions':\n return renderVersionsBadge();\n case 'verifications':\n return renderVerificationBadge();\n case 'dynamic':\n return renderdynamicBadge();\n default:\n return null;\n }\n };\n\n const renderMediaBadge = useCallback(() => {\n let badgeIcon = null;\n let badgeContent = null;\n\n if (asset?.fileType === 'video') {\n badgeIcon = <PlayIcon />;\n }\n\n if (asset?.duration) {\n badgeContent = convertMsToHMS(asset.duration);\n }\n\n if (!badgeIcon && !badgeContent) return null;\n return (\n <Badge\n badgeIcon={badgeIcon}\n badgeContent={badgeContent}\n backgroundColors={['black', 'black']}\n colors={['#f7f8f9', '#f7f8f9']}\n fontSize={12}\n fontWeight={500}\n lineHeight={16}\n verticalPadding={4}\n horizontalPadding={8}\n minWidth={32}\n height={24}\n />\n );\n }, [asset]);\n\n const renderSummaryCardHeaderLeft = useCallback(() => {\n return (\n <>\n {renderVersionsBadge()}\n {renderMediaBadge()}\n </>\n );\n }, [asset]);\n\n const renderPopoverContent = useCallback(() => {\n return (\n <SummaryCard\n activeSummaryCard={activeSummaryCard}\n title={asset?.title || ''}\n description={asset?.description || ''}\n instructions={asset?.imageRights || ''}\n instructionSeverity={asset?.instructionSeverity}\n instructionLabels={asset?.instructionLabels}\n headerRight={asset?.summary?.headerRight || ''}\n headerLeft={\n <>\n {renderSummaryCardHeaderLeft()}\n {asset?.summary?.headerLeft || ''}\n </>\n }\n footerLeft={asset?.summary?.footerLeft || ''}\n footerRight={asset?.summary?.footerRight || ''}\n width={375}\n view={'compact'}\n />\n );\n }, [asset]);\n\n return (\n <S.AssetGalleryWrapper disabled={asset.disabled}>\n <S.AssetGalleryCompactCard\n as={ComputedRootComponent}\n component={component}\n disabled={asset.disabled}\n asset={asset}\n onClick={onClick}\n extendedSelectMode={extendedSelectMode}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n draggable={asset.draggable}\n innerRef={dragRef}\n selected={selected}\n // ref={refs.setReference}\n {...getReferenceProps()}\n >\n <S.Reference ref={refs.setReference}>\n {asset.previewUrl && renderPreview(asset)}\n </S.Reference>\n\n <S.Overlay\n ref={overlayCompactRef}\n onMouseEnter={mouseHasEnteredOverlay}\n onMouseLeave={mouseHasLeftOverlay}\n style={{ height: '100%' }}\n {...getReferenceProps()}\n >\n <S.OverlayBackdrop $softSelected={softSelected} selected={selected} />\n {(asset?.statusIcon || asset?.actions) && (\n <S.OverlayInfoTopActions>\n {asset.statusIcon && <S.StatusIcon>{asset.statusIcon}</S.StatusIcon>}\n {asset?.actions && (\n <S.VisibleOnHover $hidden={extendedSelectMode}>\n <AssetActionsBase actions={asset.actions} asset={asset} />\n </S.VisibleOnHover>\n )}\n </S.OverlayInfoTopActions>\n )}\n <S.OverlayInfo>\n {isOverlayHovered && !activeSummaryCard && <span>{asset.title}</span>}\n <S.OverlayInfoTop>\n <S.OverlayInfoTopLeft $collapseExtraInfo={collapseExtraInfo}>\n {renderBadge()}\n </S.OverlayInfoTopLeft>\n {asset?.note?.title && !asset.statusIcon && (\n <S.OverlayInfoTopWarning type={asset?.note?.type}>\n <WarningCircleIcon />\n </S.OverlayInfoTopWarning>\n )}\n </S.OverlayInfoTop>\n <S.OverlayInfoBottom>\n {selectable && (\n <S.OverlayInfoBottomSelectButton selected={selected}>\n <CheckRectangleIcon onClick={onSelectClick} />\n </S.OverlayInfoBottomSelectButton>\n )}\n <S.OverlayInfoBottomMediaIcon>{renderMediaBadge()}</S.OverlayInfoBottomMediaIcon>\n </S.OverlayInfoBottom>\n </S.OverlayInfo>\n {asset.completed && <S.OverlayCompleted $softSelected={softSelected} />}\n {asset.hasError && <S.OverlayHasError $softSelected={softSelected} />}\n {selectable && (\n <S.OverlaySelected\n selected={selected}\n $softSelected={softSelected}\n $customSelectedBorder={customSelectedBorder}\n />\n )}\n {isOpen &&\n isOverlayHovered &&\n isMounted &&\n activeSummaryCard &&\n !isAnySubActionsOpened && (\n <div ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n <div style={styles} className=\"floating\">\n {renderPopoverContent()}\n <S.StyledFloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n />\n </div>\n </div>\n )}\n {isOpen &&\n isOverlayHovered &&\n isMounted &&\n activeSummaryCard &&\n !isAnySubActionsOpened && (\n <div ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n <div style={styles} className=\"floating\">\n {renderPopoverContent()}\n <S.StyledFloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n />\n </div>\n </div>\n )}\n </S.Overlay>\n\n {asset.overlay && <S.ConsumerDefinedOverlay>{asset.overlay}</S.ConsumerDefinedOverlay>}\n </S.AssetGalleryCompactCard>\n </S.AssetGalleryWrapper>\n );\n};\n\nexport default trackWindowScroll(\n React.memo(AssetGalleryCompactCard, (prevProps, nextProps) => {\n // The asset card will only re-render if any of the following props change.\n const reactiveProps = [\n 'selectable',\n 'selected',\n 'extendedSelectMode',\n 'softSelected',\n 'asset.previewUrl',\n 'asset.overlay',\n 'asset.statusIcon',\n 'hasHeightAndWidth',\n 'collapseExtraInfo',\n 'asset.imageRights',\n 'asset.instructionSeverity',\n 'asset.description',\n 'asset.title'\n ];\n\n return reactiveProps.every(propKey => get(prevProps, propKey) === get(nextProps, propKey));\n })\n);\n"],"names":["ComputedRootComponent","component","asset","props","newProps","mapKeys","omit","_","key","isFunction","Error","React","isValidElement","children","cloneElement","_jsx","S","ref","AssetGalleryCompactCard","activeSummaryCard","displayIcon","selectable","hasHeightAndWidth","selected","customSelectedBorder","extendedSelectMode","onAssetSelected","onAssetUnselected","softSelected","scrollPosition","collapseExtraInfo","ARROW_WIDTH","ARROW_HEIGHT","GAP","arrowRef","useRef","isOpen","setIsOpen","useState","placement","isOverlayHovered","setIsOverlayHovered","openedSubActions","updateOpenedSubActions","refs","floatingStyles","context","useFloating","open","onOpenChange","whileElementsMounted","autoUpdate","middleware","offset","flip","padding","shift","arrow","element","isMounted","styles","useTransitionStyles","initial","transform","opacity","duration","close","hover","useHover","restMs","dismiss","useDismiss","referencePress","ancestorScroll","windowScroll","windowBlur","getReferenceProps","getFloatingProps","useInteractions","useEffect","newOpenedSubActions","actions","map","length","mouseHasEnteredOverlay","useCallback","mouseHasLeftOverlay","isAnySubActionsOpened","useMemo","some","isOpened","onClick","event","onSelectClick","preventDefault","stopPropagation","onContextMenu","cardRef","current","addEventListener","removeEventListener","onDragstart","dragRef","videoPlayerRef","undefined","overlayCompactRef","useMergeRefs","setReference","onMouseEnter","playPromise","play","then","catch","onMouseLeave","pause","renderPreview","previewContent","fileType","toLowerCase","LazyLoadComponent","loop","muted","src","previewUrl","type","className","HeadsetIcon","LazyLoadImage","alt","title","height","width","delayMethod","delayTime","threshold","_jsxs","$hasHeightAndWidth","scrollIntoView","behavior","block","renderVersionsBadge","versions","Badge","badgeIcon","LayersIcon","badgeContent","backgroundColors","colors","fontSize","fontWeight","lineHeight","verticalPadding","horizontalPadding","renderVerificationBadge","verifications","renderdynamicBadge","renderBadge","renderMediaBadge","PlayIcon","convertMsToHMS","minWidth","renderSummaryCardHeaderLeft","_Fragment","renderPopoverContent","SummaryCard","description","instructions","imageRights","instructionSeverity","instructionLabels","headerRight","summary","headerLeft","footerLeft","footerRight","view","disabled","as","draggable","innerRef","style","$softSelected","statusIcon","$hidden","AssetActionsBase","$collapseExtraInfo","note","WarningCircleIcon","CheckRectangleIcon","completed","hasError","$customSelectedBorder","setFloating","overlay","trackWindowScroll","memo","prevProps","nextProps","reactiveProps","every","propKey","get"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGalleryCompactCard.styled.js","sources":["../../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.styled.ts"],"sourcesContent":["/*\n * $-transient-prop pattern: rules in\n * `src/components/layout/SectionSeparator/SectionSeparator.styled.ts`, derivation and\n * measurements in `scripts/TS-MIGRATION-PLAYBOOK.md` §J.\n *\n * FOUR OF THIS FILE'S KEYS HAVE NO `$`, so `shouldForwardProp` hands all four to React:\n * `disabled`, `selected`, `extendedSelectMode` and `type`. They are DECLARED, not\n * renamed — §E.4 third case, C10 — and WHAT EACH ONE ACTUALLY DOES DIFFERS, measured\n * against `scripts/r19-harness/baseline.json` and against react-dom@19.2.4 directly:\n *\n * `disabled` reaches the DOM. `disabled=\"\"` is on the wrapper AND the card root in\n * the recorded baseline (`widgets/AssetGalleryCompactCard#disabled`).\n * `type` reaches the DOM as `type=\"error\"` — a string on a `<div>` is rendered.\n * No fixture exercises it (it needs `asset.note.title` and no\n * `statusIcon`), so it is absent from the baseline today.\n * `selected` does NOT reach the DOM: React drops a boolean `selected` on any element\n * that is not an `<option>`, silently. Verified by rendering one.\n * `extendedSelectMode` does NOT reach the DOM twice over: `ComputedRootComponent`\n * `omit`s it before the inner render, and React drops an unrecognised\n * camelCase prop whose value is `true` anyway (with a dev warning).\n *\n * So renaming `disabled` moves the baseline, renaming `type` changes real output that\n * no fixture covers, and renaming the other two changes nothing that is rendered. All\n * four are still behaviour changes and none of them belongs in a type-only commit.\n *\n * `VisibleOnHover` is the only BARE-ROOT chain here (`styled.div<P>` + template), which\n * is the third legal generic slot; the other twelve annotated components have `.attrs()`.\n */\nimport { rgba } from 'polished';\nimport styled, { css } from 'styled-components';\nimport { applyDefaultTheme } from '../../../../../utils/defaultTheme';\nimport { FloatingArrow } from '@floating-ui/react';\n\nimport type { AssetNoteType } from '../../asset.types';\n\n/**\n * `asset.disabled` — `PropTypes.bool` on the asset shape.\n *\n * NO `$`, AND THAT IS A DEFECT — AND THIS IS THE ONE OF THE FOUR THAT IS ALREADY IN\n * THE BASELINE. `shouldForwardProp` forwards every non-`$` prop; React does recognise\n * `disabled` and renders it as a bare boolean attribute even on a `<div>`, so\n * `disabled=\"\"` sits on both the wrapper and the card root in\n * `scripts/r19-harness/baseline.json` under `widgets/AssetGalleryCompactCard#disabled`.\n * Grep it: `disabled=` appears 35 times across that file.\n *\n * The fix is to rename it `$disabled` at both ends, which REMOVES that attribute and\n * therefore MOVES the render baseline — C10 work, §E.4.\n *\n * Hosts: `AssetGalleryWrapper` and `AssetGalleryCompactCard`.\n */\ninterface AssetGalleryDisabledStyleProps {\n disabled?: boolean;\n}\n\n/**\n * The selection-state props, declared once because six components take overlapping\n * subsets of them; each one below `Pick`s exactly what its JSX site passes.\n * `AssetGalleryCompactCard.tsx` is the only caller.\n */\ninterface AssetGallerySelectionStyleProps {\n /**\n * `selected` — `PropTypes.bool`.\n *\n * NO `$`, AND THAT IS A DEFECT — BUT NOT A DOM LEAK, and the difference is worth\n * stating because the obvious guess is wrong. `shouldForwardProp` does forward it to\n * React, but React DROPS a boolean `selected` on anything that is not an `<option>`,\n * silently and with no warning; measured by rendering `<div selected>` through\n * react-dom@19.2.4, and confirmed by `selected=` appearing ZERO times in\n * `scripts/r19-harness/baseline.json`.\n *\n * So the defect is that the prop is unfiltered and the render only stays clean because\n * React cleans up after it. Prefixing it is still the right fix and still a behaviour\n * change to review on its own (C10) — it just would not move the baseline.\n */\n selected?: boolean;\n /** `softSelected` — `PropTypes.bool.isRequired` on the COMPONENT, but optional here: a\n * required declaration produces TS2769 at `<X />` and at `<X {...props} />`. §J.5. */\n $softSelected?: boolean;\n /** `customSelectedBorder` — `PropTypes.arrayOf(PropTypes.string)`, read as\n * `[darkModeColor, lightModeColor]`. `string[]` and not `[string, string]`, because\n * that is what the propTypes say. */\n $customSelectedBorder?: string[];\n}\n\n/**\n * The card root's props. `as={ComputedRootComponent}` is passed alongside these and that\n * wrapper re-renders this same styled component with the leftover props, so both passes\n * see the same shape.\n */\ninterface AssetGalleryCompactCardStyleProps\n extends AssetGalleryDisabledStyleProps,\n Pick<AssetGallerySelectionStyleProps, 'selected'> {\n /**\n * `extendedSelectMode` — `PropTypes.bool`. Makes the whole card a selectable area.\n *\n * NO `$`, AND THAT IS A DEFECT — and it reaches the DOM even less than `selected`\n * does, for two independent reasons. `ComputedRootComponent` explicitly `omit`s this\n * key before re-rendering the card, so the inner pass never sees it; and React drops\n * an unrecognised camelCase prop whose value is `true` anyway, warning \"React does\n * not recognize the `extendedSelectMode` prop on a DOM element\". Both measured.\n * `extendedselectmode` appears ZERO times in the recorded baseline, with the base\n * fixture passing `extendedSelectMode: true`. Declared here, renamed in C10.\n */\n extendedSelectMode?: boolean;\n}\n\n/*\n * Single-argument, and it stays that way — peer floor `styled-components: >=5.1.0`, and\n * the two majors disagree on the second parameter. §J.4. `prop` needs the annotation\n * because `withConfig` takes this by reference, so it gets no contextual typing.\n */\nconst shouldForwardProp = (prop: string): boolean => {\n return prop !== 'theme' && !prop.startsWith('$');\n};\n\nexport const AssetGalleryWrapper = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<AssetGalleryDisabledStyleProps>(applyDefaultTheme)`\n ${props =>\n props.disabled &&\n css`\n cursor: not-allowed;\n `};\n`;\n\nexport const Reference = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n width: 100%;\n height: 100%;\n`;\n\nexport const AssetGalleryCompactCard = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<AssetGalleryCompactCardStyleProps>(applyDefaultTheme)`\n display: block;\n height: 100%;\n padding-left: ${props => (props.selected ? 1 : 0)}px;\n padding-right: ${props => (props.selected ? 1 : 0)}px;\n padding-top: ${props => (props.selected ? 1 : 0)}px;\n box-sizing: border-box;\n cursor: pointer;\n\n ${props =>\n props.theme.themeProp(\n 'background',\n props.theme.getColor('gray-700'),\n props.theme.getColor('gray-300')\n )};\n\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-100'),\n props.theme.getColor('gray-700')\n )};\n\n ${props =>\n props.disabled &&\n css`\n pointer-events: none;\n opacity: 0.4;\n `};\n\n ${props =>\n props.extendedSelectMode &&\n css`\n cursor: pointer;\n `}\n video {\n width: 100%;\n height: 100%;\n }\n\n .audio {\n display: flex;\n justify-content: center;\n svg {\n width: 25%;\n }\n }\n`;\n\n/* `hasHeightAndWidth` — `PropTypes.bool`; picks `object-fit: cover` over `contain`. */\nexport const Figure = styled.figure\n .withConfig({\n shouldForwardProp\n })\n .attrs<{ $hasHeightAndWidth?: boolean }>(applyDefaultTheme)`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n position: relative;\n margin: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n .lazy-load-image-background {\n display: block !important;\n }\n\n img {\n display: block;\n height: 100%;\n width: 100%;\n ${props =>\n props.$hasHeightAndWidth\n ? css`\n object-fit: cover;\n `\n : css`\n object-fit: contain;\n `}\n }\n`;\n\nexport const FigureOverlayBackdrop = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<AssetGallerySelectionStyleProps, 'selected'>>(applyDefaultTheme)`\n position: absolute;\n inset: 0;\n opacity: ${props => (props.selected ? 0.6 : 0)};\n background-color: ${props => (props.selected ? '#ACCEF7' : 'transparent')};\n`;\n\nexport const Overlay = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n`;\n\nexport const OverlayBackdrop = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<\n AssetGallerySelectionStyleProps,\n 'selected' | '$softSelected'\n >>(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0;\n transition: opacity 220ms;\n\n ${props =>\n !props.selected\n ? css`\n background: radial-gradient(\n ellipse at center,\n rgba(0, 0, 0, 0.3) 27%,\n rgba(0, 0, 0, 0.5) 60%,\n rgba(0, 0, 0, 0.7) 90%\n );\n `\n : null}\n ${props =>\n (props.selected || props.$softSelected) &&\n css`\n opacity: 1;\n `}\n ${Overlay}:hover & {\n opacity: 1;\n }\n`;\n\nexport const OverlayInfo = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 15px 50px 10px 12px;\n color: ${props => props.theme.getColor('gray-100')};\n & span {\n overflow: hidden;\n word-wrap: break-word;\n }\n`;\n\nexport const OverlayCompleted = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<AssetGallerySelectionStyleProps, '$softSelected'>>(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border: 3px solid;\n ${props => {\n if (props.$softSelected) return null;\n\n return props.theme.themeProp(\n 'border-color',\n props.theme.getColor('emerald-500'),\n rgba(props.theme.getColor('emerald-500'), 0.7)\n );\n }};\n`;\n\nexport const OverlayHasError = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<AssetGallerySelectionStyleProps, '$softSelected'>>(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border: 3px solid;\n ${props => {\n if (props.$softSelected) return null;\n return props.theme.themeProp(\n 'border-color',\n props.theme.getColor('red-600'),\n rgba(props.theme.getColor('red-500'), 0.7)\n );\n }}\n`;\n\nexport const OverlaySelected = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<AssetGallerySelectionStyleProps>(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border-style: solid;\n border-width: 3px;\n\n ${props => {\n if (props.$softSelected) {\n return props.theme.themeProp(\n 'border-color',\n rgba(props.theme.getColor('gray-100'), 0.5),\n rgba(props.theme.getColor('gray-700'), 0.5)\n );\n }\n\n if (props.selected) {\n if (props.$customSelectedBorder) {\n return props.theme.themeProp(\n 'border-color',\n props.$customSelectedBorder[0],\n props.$customSelectedBorder[1]\n );\n } else {\n return props.theme.themeProp(\n 'border-color',\n props.theme.getColor('gray-100'),\n props.theme.getColor('gray-700')\n );\n }\n }\n\n return props.theme.themeProp('border-color', 'transparent', 'transparent');\n }};\n`;\n\nexport const OverlayInfoTop = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n padding: 8px;\n display: flex;\n`;\n\nexport const OverlayInfoTopActions = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n right: 0;\n padding: 4px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n transition: opacity 220ms;\n z-index: 99999;\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-300'),\n props.theme.getColor('gray-700')\n )}\n\n opacity: 1;\n`;\n\nexport const StatusIcon = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n margin: 4px auto 6px auto;\n pointer-events: none;\n border-radius: 50%;\n width: 28px;\n height: 28px;\n box-shadow: 0px 3px 6px ${props => rgba(props.theme.getColor('black'), 0.16)};\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n/*\n * THE BARE-ROOT SLOT. No `.withConfig()` and no `.attrs()`, so neither of the other two\n * positions exists and the generic goes on the root itself — the third legal form in\n * §J.1. That is legal here precisely because no property access follows the\n * instantiation; `styled.div<P>.withConfig(…)` would be TS1477.\n *\n * `$hidden` is `extendedSelectMode` carried across as a transient prop. Without the\n * declaration the read is TS2551, \"did you mean 'hidden'?\" — `hidden` IS a real HTML\n * attribute and the two names differ by one character, which is exactly the class of\n * mistake an `any`-typed props bag hides.\n */\nexport const VisibleOnHover = styled.div<{ $hidden?: boolean }>`\n opacity: 0;\n transition: opacity 220ms;\n ${Overlay}:hover & {\n opacity: 1;\n }\n visibility: ${props => (props.$hidden ? 'hidden' : 'visible')};\n`;\n\n/* `collapseExtraInfo` — `PropTypes.bool`; hides the badge slot when the card is narrow. */\nexport const OverlayInfoTopLeft = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<{ $collapseExtraInfo?: boolean }>(applyDefaultTheme)`\n opacity: 1;\n display: ${props => (props?.$collapseExtraInfo ? 'none' : 'block')};\n\n ${Overlay}:hover & {\n opacity: 0;\n }\n`;\n\n/*\n * `type` HAS NO `$`, AND THAT IS A DEFECT — declared, not fixed.\n *\n * `AssetGalleryCompactCard.tsx` passes `type={asset?.note?.type}` and\n * `shouldForwardProp` forwards it. Unlike `selected` this one DOES reach the DOM — a\n * string-valued `type` renders on a `<div>` — so real consumers have `type=\"error\"` on\n * the note glyph. It is nevertheless absent from `scripts/r19-harness/baseline.json`,\n * because rendering the glyph needs `asset.note.title` AND no `asset.statusIcon` and no\n * fixture arranges that. So prefixing it changes rendered output WITHOUT moving the\n * baseline — still a behaviour change, still C10, and a fixture gap worth recording.\n *\n * The value type is `AssetNoteType` from `asset.types.ts` rather than `string`: it is a\n * closed 3-member union, so a comparison against a value outside it is TS2367 instead of\n * a branch that never fires (§J.6). Only 'error' has its own styling here.\n */\nexport const OverlayInfoTopWarning = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<{ type?: AssetNoteType }>(applyDefaultTheme)`\n margin-left: auto;\n height: 24px;\n width: 24px;\n border-radius: 50%;\n box-sizing: border-box;\n padding: ${props => (props.type === 'error' ? 0 : '3px 4px')};\n background-color: ${props =>\n props.type === 'error' ? props.theme.getColor('red-500') : props.theme.getColor('gray-100')};\n opacity: 1;\n\n svg {\n width: 100%;\n color: ${props =>\n props.type === 'error' ? props.theme.getColor('gray-100') : props.theme.getColor('gray-700')};\n }\n\n ${Overlay}:hover & {\n opacity: 0;\n }\n`;\n\nexport const OverlayInfoBottom = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n padding: 8px;\n display: flex;\n`;\n\nexport const OverlayInfoBottomSelectButton = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<AssetGallerySelectionStyleProps, 'selected'>>(applyDefaultTheme)`\n opacity: ${props => (props.selected ? 1 : 0)};\n flex-shrink: 0;\n cursor: pointer;\n transition: opacity 220ms;\n height: 24px;\n\n > svg {\n width: 24px;\n height: 24px;\n transition: opacity 120ms;\n opacity: ${props => (props.selected ? 1 : 0.5)};\n }\n\n ${Overlay}:hover & {\n opacity: 1;\n }\n`;\n\nexport const OverlayInfoBottomMediaIcon = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n margin-left: auto;\n opacity: 1;\n\n ${Overlay}:hover & {\n opacity: 0;\n }\n`;\n\nexport const ConsumerDefinedOverlay = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n`;\n\nexport const Fragment = styled.div`\n margin: 4px;\n`;\n\nexport const ActionTitle = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n ${props =>\n props.theme.themeProp(\n 'background',\n props.theme.getColor('gray-700'),\n props.theme.getColor('white')\n )}\n padding: 4px 8px;\n border-radius: 4px;\n`;\n\nexport const StyledFloatingArrow = styled(FloatingArrow)\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n ${props =>\n props.theme.themeProp('fill', props.theme.getColor('gray-700'), props.theme.getColor('white'))}\n`;\n"],"names":["shouldForwardProp","prop","startsWith","AssetGalleryWrapper","styled","div","withConfig","attrs","applyDefaultTheme","displayName","componentId","props","disabled","css","Reference","AssetGalleryCompactCard","selected","theme","themeProp","getColor","extendedSelectMode","Figure","figure","$hasHeightAndWidth","FigureOverlayBackdrop","Overlay","OverlayBackdrop","$softSelected","OverlayInfo","OverlayCompleted","rgba","OverlayHasError","OverlaySelected","$customSelectedBorder","OverlayInfoTop","OverlayInfoTopActions","StatusIcon","VisibleOnHover","$hidden","OverlayInfoTopLeft","$collapseExtraInfo","OverlayInfoTopWarning","type","OverlayInfoBottom","OverlayInfoBottomSelectButton","OverlayInfoBottomMediaIcon","ConsumerDefinedOverlay","StyledFloatingArrow","FloatingArrow"],"mappings":"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"}
1
+ {"version":3,"file":"AssetGalleryCompactCard.styled.js","sources":["../../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.styled.ts"],"sourcesContent":["/* Four keys lack `$`: disabled (reaches DOM), type (unmeasured), selected (React drops), extendedSelectMode (omitted + dropped). Deferred to C10. */\nimport { rgba } from 'polished';\nimport styled, { css } from 'styled-components';\nimport { applyDefaultTheme } from '../../../../../utils/defaultTheme';\nimport { FloatingArrow } from '@floating-ui/react';\n\nimport type { AssetNoteType } from '../../asset.types';\n\n/** NO `$` is a defect but already in baseline (`disabled=\"\"` on wrapper and card). Deferred to C10. */\ninterface AssetGalleryDisabledStyleProps {\n disabled?: boolean;\n}\n\n/** Selection-state props used across multiple components. AssetGalleryCompactCard.tsx is the only caller. */\ninterface AssetGallerySelectionStyleProps {\n /** NO `$` is a defect but not a DOM leak: React drops boolean `selected` on non-`<option>` elements. Deferred to C10. */\n selected?: boolean;\n /** Optional here to avoid TS2769 at call sites, though required on the component itself. */\n $softSelected?: boolean;\n /** Read as `[darkModeColor, lightModeColor]`; `string[]` not `[string, string]` to match propTypes. */\n $customSelectedBorder?: string[];\n}\n\n/** Card root props (both passes see the same shape via ComputedRootComponent). */\ninterface AssetGalleryCompactCardStyleProps\n extends AssetGalleryDisabledStyleProps,\n Pick<AssetGallerySelectionStyleProps, 'selected'> {\n /** NO `$` is a defect but not a DOM leak: ComputedRootComponent omits it and React drops camelCase props. Deferred to C10. */\n extendedSelectMode?: boolean;\n}\n\n/* `prop` needs annotation because withConfig takes it by reference (no contextual typing). */\nconst shouldForwardProp = (prop: string): boolean => {\n return prop !== 'theme' && !prop.startsWith('$');\n};\n\nexport const AssetGalleryWrapper = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<AssetGalleryDisabledStyleProps>(applyDefaultTheme)`\n ${props =>\n props.disabled &&\n css`\n cursor: not-allowed;\n `};\n`;\n\nexport const Reference = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n width: 100%;\n height: 100%;\n`;\n\nexport const AssetGalleryCompactCard = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<AssetGalleryCompactCardStyleProps>(applyDefaultTheme)`\n display: block;\n height: 100%;\n padding-left: ${props => (props.selected ? 1 : 0)}px;\n padding-right: ${props => (props.selected ? 1 : 0)}px;\n padding-top: ${props => (props.selected ? 1 : 0)}px;\n box-sizing: border-box;\n cursor: pointer;\n\n ${props =>\n props.theme.themeProp(\n 'background',\n props.theme.getColor('gray-700'),\n props.theme.getColor('gray-300')\n )};\n\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-100'),\n props.theme.getColor('gray-700')\n )};\n\n ${props =>\n props.disabled &&\n css`\n pointer-events: none;\n opacity: 0.4;\n `};\n\n ${props =>\n props.extendedSelectMode &&\n css`\n cursor: pointer;\n `}\n video {\n width: 100%;\n height: 100%;\n }\n\n .audio {\n display: flex;\n justify-content: center;\n svg {\n width: 25%;\n }\n }\n`;\n\n/* `hasHeightAndWidth` — `PropTypes.bool`; picks `object-fit: cover` over `contain`. */\nexport const Figure = styled.figure\n .withConfig({\n shouldForwardProp\n })\n .attrs<{ $hasHeightAndWidth?: boolean }>(applyDefaultTheme)`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n position: relative;\n margin: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n .lazy-load-image-background {\n display: block !important;\n }\n\n img {\n display: block;\n height: 100%;\n width: 100%;\n ${props =>\n props.$hasHeightAndWidth\n ? css`\n object-fit: cover;\n `\n : css`\n object-fit: contain;\n `}\n }\n`;\n\nexport const FigureOverlayBackdrop = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<AssetGallerySelectionStyleProps, 'selected'>>(applyDefaultTheme)`\n position: absolute;\n inset: 0;\n opacity: ${props => (props.selected ? 0.6 : 0)};\n background-color: ${props => (props.selected ? '#ACCEF7' : 'transparent')};\n`;\n\nexport const Overlay = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n`;\n\nexport const OverlayBackdrop = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<\n AssetGallerySelectionStyleProps,\n 'selected' | '$softSelected'\n >>(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0;\n transition: opacity 220ms;\n\n ${props =>\n !props.selected\n ? css`\n background: radial-gradient(\n ellipse at center,\n rgba(0, 0, 0, 0.3) 27%,\n rgba(0, 0, 0, 0.5) 60%,\n rgba(0, 0, 0, 0.7) 90%\n );\n `\n : null}\n ${props =>\n (props.selected || props.$softSelected) &&\n css`\n opacity: 1;\n `}\n ${Overlay}:hover & {\n opacity: 1;\n }\n`;\n\nexport const OverlayInfo = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 15px 50px 10px 12px;\n color: ${props => props.theme.getColor('gray-100')};\n & span {\n overflow: hidden;\n word-wrap: break-word;\n }\n`;\n\nexport const OverlayCompleted = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<AssetGallerySelectionStyleProps, '$softSelected'>>(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border: 3px solid;\n ${props => {\n if (props.$softSelected) return null;\n\n return props.theme.themeProp(\n 'border-color',\n props.theme.getColor('emerald-500'),\n rgba(props.theme.getColor('emerald-500'), 0.7)\n );\n }};\n`;\n\nexport const OverlayHasError = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<AssetGallerySelectionStyleProps, '$softSelected'>>(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border: 3px solid;\n ${props => {\n if (props.$softSelected) return null;\n return props.theme.themeProp(\n 'border-color',\n props.theme.getColor('red-600'),\n rgba(props.theme.getColor('red-500'), 0.7)\n );\n }}\n`;\n\nexport const OverlaySelected = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<AssetGallerySelectionStyleProps>(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border-style: solid;\n border-width: 3px;\n\n ${props => {\n if (props.$softSelected) {\n return props.theme.themeProp(\n 'border-color',\n rgba(props.theme.getColor('gray-100'), 0.5),\n rgba(props.theme.getColor('gray-700'), 0.5)\n );\n }\n\n if (props.selected) {\n if (props.$customSelectedBorder) {\n return props.theme.themeProp(\n 'border-color',\n props.$customSelectedBorder[0],\n props.$customSelectedBorder[1]\n );\n } else {\n return props.theme.themeProp(\n 'border-color',\n props.theme.getColor('gray-100'),\n props.theme.getColor('gray-700')\n );\n }\n }\n\n return props.theme.themeProp('border-color', 'transparent', 'transparent');\n }};\n`;\n\nexport const OverlayInfoTop = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n padding: 8px;\n display: flex;\n`;\n\nexport const OverlayInfoTopActions = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n right: 0;\n padding: 4px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n transition: opacity 220ms;\n z-index: 99999;\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-300'),\n props.theme.getColor('gray-700')\n )}\n\n opacity: 1;\n`;\n\nexport const StatusIcon = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n margin: 4px auto 6px auto;\n pointer-events: none;\n border-radius: 50%;\n width: 28px;\n height: 28px;\n box-shadow: 0px 3px 6px ${props => rgba(props.theme.getColor('black'), 0.16)};\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n/*\n * THE BARE-ROOT SLOT. No `.withConfig()` and no `.attrs()`, so the generic goes on the\n * root itself because no property access follows the instantiation.\n * `$hidden` is `extendedSelectMode` carried across as a transient prop.\n */\nexport const VisibleOnHover = styled.div<{ $hidden?: boolean }>`\n opacity: 0;\n transition: opacity 220ms;\n ${Overlay}:hover & {\n opacity: 1;\n }\n visibility: ${props => (props.$hidden ? 'hidden' : 'visible')};\n`;\n\n/* `collapseExtraInfo` — `PropTypes.bool`; hides the badge slot when the card is narrow. */\nexport const OverlayInfoTopLeft = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<{ $collapseExtraInfo?: boolean }>(applyDefaultTheme)`\n opacity: 1;\n display: ${props => (props?.$collapseExtraInfo ? 'none' : 'block')};\n\n ${Overlay}:hover & {\n opacity: 0;\n }\n`;\n\n/*\n * `type` HAS NO `$`, AND THAT IS A DEFECT — declared, not fixed.\n *\n * `AssetGalleryCompactCard.tsx` passes `type={asset?.note?.type}` and\n * `shouldForwardProp` forwards it. Unlike `selected` this one DOES reach the DOM — a\n * string-valued `type` renders on a `<div>` — so real consumers have `type=\"error\"` on\n * the note glyph. No story reaches it, though, because rendering the glyph needs\n * `asset.note.title` AND no `asset.statusIcon`, and nothing sets up that combination. So\n * prefixing it changes what consumers get without moving any baseline here — still a\n * behaviour change, and a story worth adding.\n *\n * The value type is `AssetNoteType` from `asset.types.ts` rather than `string`: it is a\n * closed 3-member union, so a comparison against a value outside it is TS2367 instead of\n * a branch that never fires. Only 'error' has its own styling here.\n */\nexport const OverlayInfoTopWarning = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<{ type?: AssetNoteType }>(applyDefaultTheme)`\n margin-left: auto;\n height: 24px;\n width: 24px;\n border-radius: 50%;\n box-sizing: border-box;\n padding: ${props => (props.type === 'error' ? 0 : '3px 4px')};\n background-color: ${props =>\n props.type === 'error' ? props.theme.getColor('red-500') : props.theme.getColor('gray-100')};\n opacity: 1;\n\n svg {\n width: 100%;\n color: ${props =>\n props.type === 'error' ? props.theme.getColor('gray-100') : props.theme.getColor('gray-700')};\n }\n\n ${Overlay}:hover & {\n opacity: 0;\n }\n`;\n\nexport const OverlayInfoBottom = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n padding: 8px;\n display: flex;\n`;\n\nexport const OverlayInfoBottomSelectButton = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs<Pick<AssetGallerySelectionStyleProps, 'selected'>>(applyDefaultTheme)`\n opacity: ${props => (props.selected ? 1 : 0)};\n flex-shrink: 0;\n cursor: pointer;\n transition: opacity 220ms;\n height: 24px;\n\n > svg {\n width: 24px;\n height: 24px;\n transition: opacity 120ms;\n opacity: ${props => (props.selected ? 1 : 0.5)};\n }\n\n ${Overlay}:hover & {\n opacity: 1;\n }\n`;\n\nexport const OverlayInfoBottomMediaIcon = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n margin-left: auto;\n opacity: 1;\n\n ${Overlay}:hover & {\n opacity: 0;\n }\n`;\n\nexport const ConsumerDefinedOverlay = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n`;\n\nexport const Fragment = styled.div`\n margin: 4px;\n`;\n\nexport const ActionTitle = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n ${props =>\n props.theme.themeProp(\n 'background',\n props.theme.getColor('gray-700'),\n props.theme.getColor('white')\n )}\n padding: 4px 8px;\n border-radius: 4px;\n`;\n\nexport const StyledFloatingArrow = styled(FloatingArrow)\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n ${props =>\n props.theme.themeProp('fill', props.theme.getColor('gray-700'), props.theme.getColor('white'))}\n`;\n"],"names":["shouldForwardProp","prop","startsWith","AssetGalleryWrapper","styled","div","withConfig","attrs","applyDefaultTheme","displayName","componentId","props","disabled","css","Reference","AssetGalleryCompactCard","selected","theme","themeProp","getColor","extendedSelectMode","Figure","figure","$hasHeightAndWidth","FigureOverlayBackdrop","Overlay","OverlayBackdrop","$softSelected","OverlayInfo","OverlayCompleted","rgba","OverlayHasError","OverlaySelected","$customSelectedBorder","OverlayInfoTop","OverlayInfoTopActions","StatusIcon","VisibleOnHover","$hidden","OverlayInfoTopLeft","$collapseExtraInfo","OverlayInfoTopWarning","type","OverlayInfoBottom","OverlayInfoBottomSelectButton","OverlayInfoBottomMediaIcon","ConsumerDefinedOverlay","StyledFloatingArrow","FloatingArrow"],"mappings":"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"}