@fluentui/react-card 9.0.2 → 9.0.4

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 (171) hide show
  1. package/.swcrc +30 -0
  2. package/CHANGELOG.json +79 -1
  3. package/CHANGELOG.md +28 -2
  4. package/lib/Card.js.map +1 -1
  5. package/lib/CardFooter.js.map +1 -1
  6. package/lib/CardHeader.js.map +1 -1
  7. package/lib/CardPreview.js.map +1 -1
  8. package/lib/components/Card/Card.js.map +1 -1
  9. package/lib/components/Card/Card.types.js +1 -1
  10. package/lib/components/Card/Card.types.js.map +1 -1
  11. package/lib/components/Card/CardContext.js +4 -8
  12. package/lib/components/Card/CardContext.js.map +1 -1
  13. package/lib/components/Card/index.js.map +1 -1
  14. package/lib/components/Card/renderCard.js +2 -8
  15. package/lib/components/Card/renderCard.js.map +1 -1
  16. package/lib/components/Card/useCard.js.map +1 -1
  17. package/lib/components/Card/useCardContextValue.js.map +1 -1
  18. package/lib/components/Card/useCardSelectable.js.map +1 -1
  19. package/lib/components/Card/useCardStyles.js.map +1 -1
  20. package/lib/components/CardFooter/CardFooter.js.map +1 -1
  21. package/lib/components/CardFooter/CardFooter.types.js.map +1 -1
  22. package/lib/components/CardFooter/index.js.map +1 -1
  23. package/lib/components/CardFooter/renderCardFooter.js +1 -5
  24. package/lib/components/CardFooter/renderCardFooter.js.map +1 -1
  25. package/lib/components/CardFooter/useCardFooter.js +1 -0
  26. package/lib/components/CardFooter/useCardFooter.js.map +1 -1
  27. package/lib/components/CardFooter/useCardFooterStyles.js.map +1 -1
  28. package/lib/components/CardHeader/CardHeader.js.map +1 -1
  29. package/lib/components/CardHeader/CardHeader.types.js.map +1 -1
  30. package/lib/components/CardHeader/index.js.map +1 -1
  31. package/lib/components/CardHeader/renderCardHeader.js +1 -11
  32. package/lib/components/CardHeader/renderCardHeader.js.map +1 -1
  33. package/lib/components/CardHeader/useCardHeader.js.map +1 -1
  34. package/lib/components/CardHeader/useCardHeaderStyles.js.map +1 -1
  35. package/lib/components/CardPreview/CardPreview.js.map +1 -1
  36. package/lib/components/CardPreview/CardPreview.types.js.map +1 -1
  37. package/lib/components/CardPreview/index.js.map +1 -1
  38. package/lib/components/CardPreview/renderCardPreview.js +1 -5
  39. package/lib/components/CardPreview/renderCardPreview.js.map +1 -1
  40. package/lib/components/CardPreview/useCardPreview.js.map +1 -1
  41. package/lib/components/CardPreview/useCardPreviewStyles.js.map +1 -1
  42. package/lib/index.js.map +1 -1
  43. package/lib-commonjs/Card.js +5 -4
  44. package/lib-commonjs/Card.js.map +1 -1
  45. package/lib-commonjs/CardFooter.js +5 -4
  46. package/lib-commonjs/CardFooter.js.map +1 -1
  47. package/lib-commonjs/CardHeader.js +5 -4
  48. package/lib-commonjs/CardHeader.js.map +1 -1
  49. package/lib-commonjs/CardPreview.js +5 -4
  50. package/lib-commonjs/CardPreview.js.map +1 -1
  51. package/lib-commonjs/components/Card/Card.js +18 -17
  52. package/lib-commonjs/components/Card/Card.js.map +1 -1
  53. package/lib-commonjs/components/Card/Card.types.js +5 -2
  54. package/lib-commonjs/components/Card/Card.types.js.map +1 -1
  55. package/lib-commonjs/components/Card/CardContext.js +27 -30
  56. package/lib-commonjs/components/Card/CardContext.js.map +1 -1
  57. package/lib-commonjs/components/Card/index.js +10 -9
  58. package/lib-commonjs/components/Card/index.js.map +1 -1
  59. package/lib-commonjs/components/Card/renderCard.js +16 -25
  60. package/lib-commonjs/components/Card/renderCard.js.map +1 -1
  61. package/lib-commonjs/components/Card/useCard.js +81 -94
  62. package/lib-commonjs/components/Card/useCard.js.map +1 -1
  63. package/lib-commonjs/components/Card/useCardContextValue.js +11 -11
  64. package/lib-commonjs/components/Card/useCardContextValue.js.map +1 -1
  65. package/lib-commonjs/components/Card/useCardSelectable.js +130 -117
  66. package/lib-commonjs/components/Card/useCardSelectable.js.map +1 -1
  67. package/lib-commonjs/components/Card/useCardStyles.js +738 -336
  68. package/lib-commonjs/components/Card/useCardStyles.js.map +1 -1
  69. package/lib-commonjs/components/CardFooter/CardFooter.js +16 -15
  70. package/lib-commonjs/components/CardFooter/CardFooter.js.map +1 -1
  71. package/lib-commonjs/components/CardFooter/CardFooter.types.js +3 -2
  72. package/lib-commonjs/components/CardFooter/CardFooter.types.js.map +1 -1
  73. package/lib-commonjs/components/CardFooter/index.js +9 -8
  74. package/lib-commonjs/components/CardFooter/index.js.map +1 -1
  75. package/lib-commonjs/components/CardFooter/renderCardFooter.js +13 -20
  76. package/lib-commonjs/components/CardFooter/renderCardFooter.js.map +1 -1
  77. package/lib-commonjs/components/CardFooter/useCardFooter.js +23 -30
  78. package/lib-commonjs/components/CardFooter/useCardFooter.js.map +1 -1
  79. package/lib-commonjs/components/CardFooter/useCardFooterStyles.js +45 -33
  80. package/lib-commonjs/components/CardFooter/useCardFooterStyles.js.map +1 -1
  81. package/lib-commonjs/components/CardHeader/CardHeader.js +16 -15
  82. package/lib-commonjs/components/CardHeader/CardHeader.js.map +1 -1
  83. package/lib-commonjs/components/CardHeader/CardHeader.types.js +3 -2
  84. package/lib-commonjs/components/CardHeader/CardHeader.types.js.map +1 -1
  85. package/lib-commonjs/components/CardHeader/index.js +9 -8
  86. package/lib-commonjs/components/CardHeader/index.js.map +1 -1
  87. package/lib-commonjs/components/CardHeader/renderCardHeader.js +13 -26
  88. package/lib-commonjs/components/CardHeader/renderCardHeader.js.map +1 -1
  89. package/lib-commonjs/components/CardHeader/useCardHeader.js +50 -64
  90. package/lib-commonjs/components/CardHeader/useCardHeader.js.map +1 -1
  91. package/lib-commonjs/components/CardHeader/useCardHeaderStyles.js +88 -67
  92. package/lib-commonjs/components/CardHeader/useCardHeaderStyles.js.map +1 -1
  93. package/lib-commonjs/components/CardPreview/CardPreview.js +16 -15
  94. package/lib-commonjs/components/CardPreview/CardPreview.js.map +1 -1
  95. package/lib-commonjs/components/CardPreview/CardPreview.types.js +3 -2
  96. package/lib-commonjs/components/CardPreview/CardPreview.types.js.map +1 -1
  97. package/lib-commonjs/components/CardPreview/index.js +9 -8
  98. package/lib-commonjs/components/CardPreview/index.js.map +1 -1
  99. package/lib-commonjs/components/CardPreview/renderCardPreview.js +13 -20
  100. package/lib-commonjs/components/CardPreview/renderCardPreview.js.map +1 -1
  101. package/lib-commonjs/components/CardPreview/useCardPreview.js +51 -60
  102. package/lib-commonjs/components/CardPreview/useCardPreview.js.map +1 -1
  103. package/lib-commonjs/components/CardPreview/useCardPreviewStyles.js +53 -37
  104. package/lib-commonjs/components/CardPreview/useCardPreviewStyles.js.map +1 -1
  105. package/lib-commonjs/index.js +40 -153
  106. package/lib-commonjs/index.js.map +1 -1
  107. package/package.json +10 -9
  108. package/lib-amd/Card.js +0 -6
  109. package/lib-amd/Card.js.map +0 -1
  110. package/lib-amd/CardFooter.js +0 -6
  111. package/lib-amd/CardFooter.js.map +0 -1
  112. package/lib-amd/CardHeader.js +0 -6
  113. package/lib-amd/CardHeader.js.map +0 -1
  114. package/lib-amd/CardPreview.js +0 -6
  115. package/lib-amd/CardPreview.js.map +0 -1
  116. package/lib-amd/components/Card/Card.js +0 -16
  117. package/lib-amd/components/Card/Card.js.map +0 -1
  118. package/lib-amd/components/Card/Card.types.js +0 -5
  119. package/lib-amd/components/Card/Card.types.js.map +0 -1
  120. package/lib-amd/components/Card/CardContext.js +0 -31
  121. package/lib-amd/components/Card/CardContext.js.map +0 -1
  122. package/lib-amd/components/Card/index.js +0 -11
  123. package/lib-amd/components/Card/index.js.map +0 -1
  124. package/lib-amd/components/Card/renderCard.js +0 -18
  125. package/lib-amd/components/Card/renderCard.js.map +0 -1
  126. package/lib-amd/components/Card/useCard.js +0 -85
  127. package/lib-amd/components/Card/useCard.js.map +0 -1
  128. package/lib-amd/components/Card/useCardContextValue.js +0 -11
  129. package/lib-amd/components/Card/useCardContextValue.js.map +0 -1
  130. package/lib-amd/components/Card/useCardSelectable.js +0 -97
  131. package/lib-amd/components/Card/useCardSelectable.js.map +0 -1
  132. package/lib-amd/components/Card/useCardStyles.js +0 -253
  133. package/lib-amd/components/Card/useCardStyles.js.map +0 -1
  134. package/lib-amd/components/CardFooter/CardFooter.js +0 -15
  135. package/lib-amd/components/CardFooter/CardFooter.js.map +0 -1
  136. package/lib-amd/components/CardFooter/CardFooter.types.js +0 -5
  137. package/lib-amd/components/CardFooter/CardFooter.types.js.map +0 -1
  138. package/lib-amd/components/CardFooter/index.js +0 -10
  139. package/lib-amd/components/CardFooter/index.js.map +0 -1
  140. package/lib-amd/components/CardFooter/renderCardFooter.js +0 -16
  141. package/lib-amd/components/CardFooter/renderCardFooter.js.map +0 -1
  142. package/lib-amd/components/CardFooter/useCardFooter.js +0 -27
  143. package/lib-amd/components/CardFooter/useCardFooter.js.map +0 -1
  144. package/lib-amd/components/CardFooter/useCardFooterStyles.js +0 -31
  145. package/lib-amd/components/CardFooter/useCardFooterStyles.js.map +0 -1
  146. package/lib-amd/components/CardHeader/CardHeader.js +0 -15
  147. package/lib-amd/components/CardHeader/CardHeader.js.map +0 -1
  148. package/lib-amd/components/CardHeader/CardHeader.types.js +0 -5
  149. package/lib-amd/components/CardHeader/CardHeader.types.js.map +0 -1
  150. package/lib-amd/components/CardHeader/index.js +0 -10
  151. package/lib-amd/components/CardHeader/index.js.map +0 -1
  152. package/lib-amd/components/CardHeader/renderCardHeader.js +0 -18
  153. package/lib-amd/components/CardHeader/renderCardHeader.js.map +0 -1
  154. package/lib-amd/components/CardHeader/useCardHeader.js +0 -48
  155. package/lib-amd/components/CardHeader/useCardHeader.js.map +0 -1
  156. package/lib-amd/components/CardHeader/useCardHeaderStyles.js +0 -72
  157. package/lib-amd/components/CardHeader/useCardHeaderStyles.js.map +0 -1
  158. package/lib-amd/components/CardPreview/CardPreview.js +0 -15
  159. package/lib-amd/components/CardPreview/CardPreview.js.map +0 -1
  160. package/lib-amd/components/CardPreview/CardPreview.types.js +0 -5
  161. package/lib-amd/components/CardPreview/CardPreview.types.js.map +0 -1
  162. package/lib-amd/components/CardPreview/index.js +0 -10
  163. package/lib-amd/components/CardPreview/index.js.map +0 -1
  164. package/lib-amd/components/CardPreview/renderCardPreview.js +0 -16
  165. package/lib-amd/components/CardPreview/renderCardPreview.js.map +0 -1
  166. package/lib-amd/components/CardPreview/useCardPreview.js +0 -50
  167. package/lib-amd/components/CardPreview/useCardPreview.js.map +0 -1
  168. package/lib-amd/components/CardPreview/useCardPreviewStyles.js +0 -44
  169. package/lib-amd/components/CardPreview/useCardPreviewStyles.js.map +0 -1
  170. package/lib-amd/index.js +0 -30
  171. package/lib-amd/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","require","react_utilities_1","keyboard_keys_1","react_tabster_1","useCardSelectable","props","referenceLabel","referenceId","cardRef","checkbox","selected","defaultSelected","onSelectionChange","floatingAction","onClick","onKeyDown","findAllFocusable","useFocusFinders","checkboxRef","useRef","isSelectable","some","prop","isCardSelected","setIsCardSelected","useState","isSelectFocused","setIsSelectFocused","shouldRestrictTriggerAction","useCallback","event","current","focusableElements","target","isElementInFocusableGroup","element","contains","isCheckboxSlot","onChangeHandler","newCheckedValue","onKeyDownHandler","Enter","includes","key","preventDefault","checkboxSlot","useMemo","selectableCheckboxProps","resolveShorthand","defaultProps","ref","type","checked","onChange","onFocus","onBlur","floatingActionSlot","selectableCardProps","mergeCallbacks","useEffect","Boolean","selectable","selectFocused","exports"],"sources":["../src/packages/react-components/react-card/src/components/Card/useCardSelectable.ts"],"sourcesContent":["import * as React from 'react';\nimport { mergeCallbacks, resolveShorthand } from '@fluentui/react-utilities';\nimport { Enter } from '@fluentui/keyboard-keys';\nimport { useFocusFinders } from '@fluentui/react-tabster';\n\nimport type { CardContextValue, CardOnSelectionChangeEvent, CardProps, CardSlots } from './Card.types';\n\n/**\n * @internal\n *\n * Create the state related to selectable cards.\n *\n * This internal hook controls all the logic for selectable cards and is\n * intended to be used alongside with useCard_unstable.\n *\n * @param props - props from this instance of Card\n * @param a11yProps - accessibility props shared between elements of the card\n * @param ref - reference to the root element of Card\n */\nexport const useCardSelectable = (\n props: CardProps,\n { referenceLabel, referenceId }: Pick<CardContextValue['selectableA11yProps'], 'referenceId' | 'referenceLabel'>,\n cardRef: React.RefObject<HTMLDivElement>,\n) => {\n const { checkbox = {}, selected, defaultSelected, onSelectionChange, floatingAction, onClick, onKeyDown } = props;\n\n const { findAllFocusable } = useFocusFinders();\n\n const checkboxRef = React.useRef<HTMLInputElement>(null);\n\n const isSelectable = [selected, defaultSelected, onSelectionChange].some(prop => typeof prop !== 'undefined');\n\n const [isCardSelected, setIsCardSelected] = React.useState(false);\n const [isSelectFocused, setIsSelectFocused] = React.useState(false);\n\n const shouldRestrictTriggerAction = React.useCallback(\n (event: CardOnSelectionChangeEvent) => {\n if (!cardRef.current) {\n return false;\n }\n\n const focusableElements = findAllFocusable(cardRef.current);\n const target = event.target as HTMLElement;\n const isElementInFocusableGroup = focusableElements.some(element => element.contains(target));\n const isCheckboxSlot = checkboxRef?.current === target;\n\n return isElementInFocusableGroup && !isCheckboxSlot;\n },\n [cardRef, findAllFocusable],\n );\n\n const onChangeHandler = React.useCallback(\n (event: CardOnSelectionChangeEvent) => {\n if (shouldRestrictTriggerAction(event)) {\n return;\n }\n\n const newCheckedValue = !isCardSelected;\n\n setIsCardSelected(newCheckedValue);\n\n if (onSelectionChange) {\n onSelectionChange(event, { selected: newCheckedValue });\n }\n },\n [onSelectionChange, isCardSelected, shouldRestrictTriggerAction],\n );\n\n const onKeyDownHandler = React.useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if ([Enter].includes(event.key)) {\n event.preventDefault();\n onChangeHandler(event);\n }\n },\n [onChangeHandler],\n );\n\n const checkboxSlot = React.useMemo(() => {\n if (!isSelectable || floatingAction) {\n return;\n }\n\n const selectableCheckboxProps: CardSlots['checkbox'] = {};\n\n if (referenceId) {\n selectableCheckboxProps['aria-labelledby'] = referenceId;\n } else if (referenceLabel) {\n selectableCheckboxProps['aria-label'] = referenceLabel;\n }\n\n return resolveShorthand(checkbox, {\n defaultProps: {\n ref: checkboxRef,\n type: 'checkbox',\n checked: isCardSelected,\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => onChangeHandler(event),\n onFocus: () => setIsSelectFocused(true),\n onBlur: () => setIsSelectFocused(false),\n ...selectableCheckboxProps,\n },\n });\n }, [checkbox, floatingAction, isCardSelected, isSelectable, onChangeHandler, referenceId, referenceLabel]);\n\n const floatingActionSlot = React.useMemo(() => {\n if (!floatingAction) {\n return;\n }\n\n return resolveShorthand(floatingAction, {\n defaultProps: {\n ref: checkboxRef,\n },\n });\n }, [floatingAction]);\n\n const selectableCardProps = React.useMemo(() => {\n if (!isSelectable) {\n return null;\n }\n\n return {\n onClick: mergeCallbacks(onClick, onChangeHandler),\n onKeyDown: mergeCallbacks(onKeyDown, onKeyDownHandler),\n };\n }, [isSelectable, onChangeHandler, onClick, onKeyDown, onKeyDownHandler]);\n\n React.useEffect(\n () => setIsCardSelected(Boolean(defaultSelected ?? selected)),\n [defaultSelected, selected, setIsCardSelected],\n );\n\n return {\n selected: isCardSelected,\n selectable: isSelectable,\n selectFocused: isSelectFocused,\n selectableCardProps,\n checkboxSlot,\n floatingActionSlot,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../lib/components/Card/useCardSelectable.js"],"sourcesContent":["import * as React from 'react';\nimport { mergeCallbacks, resolveShorthand } from '@fluentui/react-utilities';\nimport { Enter } from '@fluentui/keyboard-keys';\nimport { useFocusFinders } from '@fluentui/react-tabster';\n/**\n * @internal\n *\n * Create the state related to selectable cards.\n *\n * This internal hook controls all the logic for selectable cards and is\n * intended to be used alongside with useCard_unstable.\n *\n * @param props - props from this instance of Card\n * @param a11yProps - accessibility props shared between elements of the card\n * @param ref - reference to the root element of Card\n */\nexport const useCardSelectable = (props, {\n referenceLabel,\n referenceId\n}, cardRef) => {\n const {\n checkbox = {},\n selected,\n defaultSelected,\n onSelectionChange,\n floatingAction,\n onClick,\n onKeyDown\n } = props;\n const {\n findAllFocusable\n } = useFocusFinders();\n const checkboxRef = React.useRef(null);\n const isSelectable = [selected, defaultSelected, onSelectionChange].some(prop => typeof prop !== 'undefined');\n const [isCardSelected, setIsCardSelected] = React.useState(false);\n const [isSelectFocused, setIsSelectFocused] = React.useState(false);\n const shouldRestrictTriggerAction = React.useCallback(event => {\n if (!cardRef.current) {\n return false;\n }\n const focusableElements = findAllFocusable(cardRef.current);\n const target = event.target;\n const isElementInFocusableGroup = focusableElements.some(element => element.contains(target));\n const isCheckboxSlot = (checkboxRef === null || checkboxRef === void 0 ? void 0 : checkboxRef.current) === target;\n return isElementInFocusableGroup && !isCheckboxSlot;\n }, [cardRef, findAllFocusable]);\n const onChangeHandler = React.useCallback(event => {\n if (shouldRestrictTriggerAction(event)) {\n return;\n }\n const newCheckedValue = !isCardSelected;\n setIsCardSelected(newCheckedValue);\n if (onSelectionChange) {\n onSelectionChange(event, {\n selected: newCheckedValue\n });\n }\n }, [onSelectionChange, isCardSelected, shouldRestrictTriggerAction]);\n const onKeyDownHandler = React.useCallback(event => {\n if ([Enter].includes(event.key)) {\n event.preventDefault();\n onChangeHandler(event);\n }\n }, [onChangeHandler]);\n const checkboxSlot = React.useMemo(() => {\n if (!isSelectable || floatingAction) {\n return;\n }\n const selectableCheckboxProps = {};\n if (referenceId) {\n selectableCheckboxProps['aria-labelledby'] = referenceId;\n } else if (referenceLabel) {\n selectableCheckboxProps['aria-label'] = referenceLabel;\n }\n return resolveShorthand(checkbox, {\n defaultProps: {\n ref: checkboxRef,\n type: 'checkbox',\n checked: isCardSelected,\n onChange: event => onChangeHandler(event),\n onFocus: () => setIsSelectFocused(true),\n onBlur: () => setIsSelectFocused(false),\n ...selectableCheckboxProps\n }\n });\n }, [checkbox, floatingAction, isCardSelected, isSelectable, onChangeHandler, referenceId, referenceLabel]);\n const floatingActionSlot = React.useMemo(() => {\n if (!floatingAction) {\n return;\n }\n return resolveShorthand(floatingAction, {\n defaultProps: {\n ref: checkboxRef\n }\n });\n }, [floatingAction]);\n const selectableCardProps = React.useMemo(() => {\n if (!isSelectable) {\n return null;\n }\n return {\n onClick: mergeCallbacks(onClick, onChangeHandler),\n onKeyDown: mergeCallbacks(onKeyDown, onKeyDownHandler)\n };\n }, [isSelectable, onChangeHandler, onClick, onKeyDown, onKeyDownHandler]);\n React.useEffect(() => setIsCardSelected(Boolean(defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : selected)), [defaultSelected, selected, setIsCardSelected]);\n return {\n selected: isCardSelected,\n selectable: isSelectable,\n selectFocused: isSelectFocused,\n selectableCardProps,\n checkboxSlot,\n floatingActionSlot\n };\n};\n//# sourceMappingURL=useCardSelectable.js.map"],"names":["useCardSelectable","props","referenceLabel","referenceId","cardRef","checkbox","selected","defaultSelected","onSelectionChange","floatingAction","onClick","onKeyDown","findAllFocusable","useFocusFinders","checkboxRef","React","useRef","isSelectable","some","prop","isCardSelected","setIsCardSelected","useState","isSelectFocused","setIsSelectFocused","shouldRestrictTriggerAction","useCallback","event","current","focusableElements","target","isElementInFocusableGroup","element","contains","isCheckboxSlot","onChangeHandler","newCheckedValue","onKeyDownHandler","Enter","includes","key","preventDefault","checkboxSlot","useMemo","selectableCheckboxProps","resolveShorthand","defaultProps","ref","type","checked","onChange","onFocus","onBlur","floatingActionSlot","selectableCardProps","mergeCallbacks","useEffect","Boolean","selectable","selectFocused"],"mappings":";;;;+BAgBaA;;aAAAA;;;6DAhBU;gCAC0B;8BAC3B;8BACU;AAazB,MAAMA,oBAAoB,CAACC,OAAO,EACvCC,eAAc,EACdC,YAAW,EACZ,EAAEC,UAAY;IACb,MAAM,EACJC,UAAW,CAAC,EAAC,EACbC,SAAQ,EACRC,gBAAe,EACfC,kBAAiB,EACjBC,eAAc,EACdC,QAAO,EACPC,UAAS,EACV,GAAGV;IACJ,MAAM,EACJW,iBAAgB,EACjB,GAAGC,IAAAA,6BAAe;IACnB,MAAMC,cAAcC,OAAMC,MAAM,CAAC,IAAI;IACrC,MAAMC,eAAe;QAACX;QAAUC;QAAiBC;KAAkB,CAACU,IAAI,CAACC,CAAAA,OAAQ,OAAOA,SAAS;IACjG,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGN,OAAMO,QAAQ,CAAC,KAAK;IAChE,MAAM,CAACC,iBAAiBC,mBAAmB,GAAGT,OAAMO,QAAQ,CAAC,KAAK;IAClE,MAAMG,8BAA8BV,OAAMW,WAAW,CAACC,CAAAA,QAAS;QAC7D,IAAI,CAACvB,QAAQwB,OAAO,EAAE;YACpB,OAAO,KAAK;QACd,CAAC;QACD,MAAMC,oBAAoBjB,iBAAiBR,QAAQwB,OAAO;QAC1D,MAAME,SAASH,MAAMG,MAAM;QAC3B,MAAMC,4BAA4BF,kBAAkBX,IAAI,CAACc,CAAAA,UAAWA,QAAQC,QAAQ,CAACH;QACrF,MAAMI,iBAAiB,AAACpB,CAAAA,gBAAgB,IAAI,IAAIA,gBAAgB,KAAK,IAAI,KAAK,IAAIA,YAAYc,OAAO,AAAD,MAAOE;QAC3G,OAAOC,6BAA6B,CAACG;IACvC,GAAG;QAAC9B;QAASQ;KAAiB;IAC9B,MAAMuB,kBAAkBpB,OAAMW,WAAW,CAACC,CAAAA,QAAS;QACjD,IAAIF,4BAA4BE,QAAQ;YACtC;QACF,CAAC;QACD,MAAMS,kBAAkB,CAAChB;QACzBC,kBAAkBe;QAClB,IAAI5B,mBAAmB;YACrBA,kBAAkBmB,OAAO;gBACvBrB,UAAU8B;YACZ;QACF,CAAC;IACH,GAAG;QAAC5B;QAAmBY;QAAgBK;KAA4B;IACnE,MAAMY,mBAAmBtB,OAAMW,WAAW,CAACC,CAAAA,QAAS;QAClD,IAAI;YAACW,mBAAK;SAAC,CAACC,QAAQ,CAACZ,MAAMa,GAAG,GAAG;YAC/Bb,MAAMc,cAAc;YACpBN,gBAAgBR;QAClB,CAAC;IACH,GAAG;QAACQ;KAAgB;IACpB,MAAMO,eAAe3B,OAAM4B,OAAO,CAAC,IAAM;QACvC,IAAI,CAAC1B,gBAAgBR,gBAAgB;YACnC;QACF,CAAC;QACD,MAAMmC,0BAA0B,CAAC;QACjC,IAAIzC,aAAa;YACfyC,uBAAuB,CAAC,kBAAkB,GAAGzC;QAC/C,OAAO,IAAID,gBAAgB;YACzB0C,uBAAuB,CAAC,aAAa,GAAG1C;QAC1C,CAAC;QACD,OAAO2C,IAAAA,gCAAgB,EAACxC,UAAU;YAChCyC,cAAc;gBACZC,KAAKjC;gBACLkC,MAAM;gBACNC,SAAS7B;gBACT8B,UAAUvB,CAAAA,QAASQ,gBAAgBR;gBACnCwB,SAAS,IAAM3B,mBAAmB,IAAI;gBACtC4B,QAAQ,IAAM5B,mBAAmB,KAAK;gBACtC,GAAGoB,uBAAuB;YAC5B;QACF;IACF,GAAG;QAACvC;QAAUI;QAAgBW;QAAgBH;QAAckB;QAAiBhC;QAAaD;KAAe;IACzG,MAAMmD,qBAAqBtC,OAAM4B,OAAO,CAAC,IAAM;QAC7C,IAAI,CAAClC,gBAAgB;YACnB;QACF,CAAC;QACD,OAAOoC,IAAAA,gCAAgB,EAACpC,gBAAgB;YACtCqC,cAAc;gBACZC,KAAKjC;YACP;QACF;IACF,GAAG;QAACL;KAAe;IACnB,MAAM6C,sBAAsBvC,OAAM4B,OAAO,CAAC,IAAM;QAC9C,IAAI,CAAC1B,cAAc;YACjB,OAAO,IAAI;QACb,CAAC;QACD,OAAO;YACLP,SAAS6C,IAAAA,8BAAc,EAAC7C,SAASyB;YACjCxB,WAAW4C,IAAAA,8BAAc,EAAC5C,WAAW0B;QACvC;IACF,GAAG;QAACpB;QAAckB;QAAiBzB;QAASC;QAAW0B;KAAiB;IACxEtB,OAAMyC,SAAS,CAAC,IAAMnC,kBAAkBoC,QAAQlD,oBAAoB,IAAI,IAAIA,oBAAoB,KAAK,IAAIA,kBAAkBD,QAAQ,IAAI;QAACC;QAAiBD;QAAUe;KAAkB;IACrL,OAAO;QACLf,UAAUc;QACVsC,YAAYzC;QACZ0C,eAAepC;QACf+B;QACAZ;QACAW;IACF;AACF,GACA,6CAA6C"}