@clubmed/trident-ui 2.0.0-beta.4 → 2.0.0-beta.40

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 (206) hide show
  1. package/chunks/Carousel.context.js +1548 -0
  2. package/chunks/Carousel.context.js.map +1 -0
  3. package/chunks/ChatMessage.js +14395 -0
  4. package/chunks/ChatMessage.js.map +1 -0
  5. package/chunks/DateField.js +177 -63
  6. package/chunks/DateField.js.map +1 -1
  7. package/chunks/Tooltip.js +4461 -0
  8. package/chunks/Tooltip.js.map +1 -0
  9. package/chunks/chunk.js +11 -4
  10. package/chunks/client.js +18953 -0
  11. package/chunks/client.js.map +1 -0
  12. package/examples/button-demo.js +2 -2
  13. package/examples/button-demo.js.map +1 -1
  14. package/examples/chat-input-demo.d.ts +1 -0
  15. package/examples/chat-input-demo.js +21 -0
  16. package/examples/chat-input-demo.js.map +1 -0
  17. package/examples/chat-message-demo.d.ts +1 -0
  18. package/examples/chat-message-demo.js +20 -0
  19. package/examples/chat-message-demo.js.map +1 -0
  20. package/examples/chat-typing-indicator-demo.d.ts +1 -0
  21. package/examples/chat-typing-indicator-demo.js +14 -0
  22. package/examples/chat-typing-indicator-demo.js.map +1 -0
  23. package/examples/chat-window-demo.d.ts +1 -0
  24. package/examples/chat-window-demo.js +45 -0
  25. package/examples/chat-window-demo.js.map +1 -0
  26. package/examples/checkbox-demo.js +16 -20
  27. package/examples/checkbox-demo.js.map +1 -1
  28. package/examples/checkbox-select-demo.d.ts +1 -0
  29. package/examples/checkbox-select-demo.js +101 -0
  30. package/examples/checkbox-select-demo.js.map +1 -0
  31. package/examples/checkboxes-demo.js +6 -6
  32. package/examples/checkboxes-demo.js.map +1 -1
  33. package/examples/checkboxes-with-form-control-demo.js +4 -4
  34. package/examples/choice-expander-demo.js +4 -67
  35. package/examples/choice-expander-demo.js.map +1 -1
  36. package/examples/dropdown-demo.js +9 -1
  37. package/examples/dropdown-demo.js.map +1 -1
  38. package/examples/elastic-height-demo.js +2 -1
  39. package/examples/elastic-height-demo.js.map +1 -1
  40. package/examples/frame-demo.d.ts +1 -0
  41. package/examples/frame-demo.js +36 -0
  42. package/examples/frame-demo.js.map +1 -0
  43. package/examples/frame-horizontal-demo.d.ts +1 -0
  44. package/examples/frame-horizontal-demo.js +44 -0
  45. package/examples/frame-horizontal-demo.js.map +1 -0
  46. package/examples/frame-no-image-demo.d.ts +1 -0
  47. package/examples/frame-no-image-demo.js +47 -0
  48. package/examples/frame-no-image-demo.js.map +1 -0
  49. package/examples/frame-vertical-demo.d.ts +1 -0
  50. package/examples/frame-vertical-demo.js +44 -0
  51. package/examples/frame-vertical-demo.js.map +1 -0
  52. package/examples/frame-with-tag-demo.d.ts +1 -0
  53. package/examples/frame-with-tag-demo.js +48 -0
  54. package/examples/frame-with-tag-demo.js.map +1 -0
  55. package/examples/scrollbar-demo.d.ts +1 -0
  56. package/examples/scrollbar-demo.js +40 -0
  57. package/examples/scrollbar-demo.js.map +1 -0
  58. package/examples/slider-frame-demo.d.ts +1 -0
  59. package/examples/slider-frame-demo.js +38 -0
  60. package/examples/slider-frame-demo.js.map +1 -0
  61. package/examples/slider-frame-with-button-demo.d.ts +1 -0
  62. package/examples/slider-frame-with-button-demo.js +46 -0
  63. package/examples/slider-frame-with-button-demo.js.map +1 -0
  64. package/examples/slider-frame-with-tag-demo.d.ts +1 -0
  65. package/examples/slider-frame-with-tag-demo.js +50 -0
  66. package/examples/slider-frame-with-tag-demo.js.map +1 -0
  67. package/examples/switch-demo.js +1 -1
  68. package/examples/switch-demo.js.map +1 -1
  69. package/examples/tooltip-demo.d.ts +1 -0
  70. package/examples/tooltip-demo.js +103 -0
  71. package/examples/tooltip-demo.js.map +1 -0
  72. package/package.json +10 -3
  73. package/styles/animate.css +19 -19
  74. package/styles/components.css +82 -0
  75. package/styles/theme.css +23 -18
  76. package/styles/ui/button.css +19 -25
  77. package/styles/ui/chat-button.css +68 -1
  78. package/styles/ui/controls.css +9 -63
  79. package/styles/ui/range.css +1 -1
  80. package/styles/variants.css +0 -2
  81. package/ui/AdvancedToast.js +11 -11
  82. package/ui/AdvancedToast.js.map +1 -1
  83. package/ui/BasicToast.js +1 -1
  84. package/ui/BasicToast.js.map +1 -1
  85. package/ui/Breadcrumb.d.ts +2 -2
  86. package/ui/Breadcrumb.js +31 -35
  87. package/ui/Breadcrumb.js.map +1 -1
  88. package/ui/ChatButton.js +1 -1
  89. package/ui/ChatButton.js.map +1 -1
  90. package/ui/ChatInput.d.ts +10 -0
  91. package/ui/ChatInput.js +149 -0
  92. package/ui/ChatInput.js.map +1 -0
  93. package/ui/ChatMessage.d.ts +6 -0
  94. package/ui/ChatMessage.js +2 -0
  95. package/ui/ChatTypingIndicator.d.ts +2 -0
  96. package/ui/ChatTypingIndicator.js +30 -0
  97. package/ui/ChatTypingIndicator.js.map +1 -0
  98. package/ui/ChatWindow.d.ts +21 -0
  99. package/ui/ChatWindow.js +108 -0
  100. package/ui/ChatWindow.js.map +1 -0
  101. package/ui/ChoiceExpander.js +1 -1
  102. package/ui/ChoiceExpander.js.map +1 -1
  103. package/ui/Dropdown.d.ts +20 -3
  104. package/ui/Dropdown.js +57 -23
  105. package/ui/Dropdown.js.map +1 -1
  106. package/ui/ElasticHeight.d.ts +0 -1
  107. package/ui/ElasticHeight.js +14 -23
  108. package/ui/ElasticHeight.js.map +1 -1
  109. package/ui/Loader.d.ts +5 -4
  110. package/ui/Loader.js +11 -10
  111. package/ui/Loader.js.map +1 -1
  112. package/ui/Popin.js +2 -2
  113. package/ui/Popin.js.map +1 -1
  114. package/ui/Scrollbar.d.ts +14 -0
  115. package/ui/Scrollbar.js +68 -0
  116. package/ui/Scrollbar.js.map +1 -0
  117. package/ui/SidebarLayout.d.ts +3 -1
  118. package/ui/SidebarLayout.js +32 -24
  119. package/ui/SidebarLayout.js.map +1 -1
  120. package/ui/Tooltip.d.ts +8 -0
  121. package/ui/Tooltip.js +2 -0
  122. package/ui/arrows/Arrows.d.ts +1 -0
  123. package/ui/arrows/Arrows.js +19 -17
  124. package/ui/arrows/Arrows.js.map +1 -1
  125. package/ui/buttons/Button.type.d.ts +1 -1
  126. package/ui/buttons/Button.type.js.map +1 -1
  127. package/ui/carousel/Carousel.context.d.ts +27 -0
  128. package/ui/carousel/Carousel.context.js +2 -0
  129. package/ui/carousel/Carousel.d.ts +3 -0
  130. package/ui/carousel/Carousel.js +12 -0
  131. package/ui/carousel/Carousel.js.map +1 -0
  132. package/ui/carousel/CarouselBody.d.ts +6 -0
  133. package/ui/carousel/CarouselBody.js +21 -0
  134. package/ui/carousel/CarouselBody.js.map +1 -0
  135. package/ui/carousel/CarouselItem.d.ts +6 -0
  136. package/ui/carousel/CarouselItem.js +21 -0
  137. package/ui/carousel/CarouselItem.js.map +1 -0
  138. package/ui/carousel/CarouselNext.d.ts +8 -0
  139. package/ui/carousel/CarouselNext.js +23 -0
  140. package/ui/carousel/CarouselNext.js.map +1 -0
  141. package/ui/carousel/CarouselPrevious.d.ts +8 -0
  142. package/ui/carousel/CarouselPrevious.js +23 -0
  143. package/ui/carousel/CarouselPrevious.js.map +1 -0
  144. package/ui/contexts/TridentUIConfig.js +1 -1
  145. package/ui/forms/CheckboxSelect.d.ts +31 -0
  146. package/ui/forms/CheckboxSelect.js +119 -0
  147. package/ui/forms/CheckboxSelect.js.map +1 -0
  148. package/ui/forms/Filter.d.ts +8 -4
  149. package/ui/forms/Filter.js +23 -45
  150. package/ui/forms/Filter.js.map +1 -1
  151. package/ui/forms/FormControl.js +6 -6
  152. package/ui/forms/NumberField.d.ts +10 -10
  153. package/ui/forms/NumberField.js +8 -8
  154. package/ui/forms/PhoneField.d.ts +5 -10
  155. package/ui/forms/PhoneField.js +29 -211
  156. package/ui/forms/PhoneField.js.map +1 -1
  157. package/ui/forms/PhoneFieldFullInput.d.ts +16 -0
  158. package/ui/forms/PhoneFieldFullInput.js +116 -0
  159. package/ui/forms/PhoneFieldFullInput.js.map +1 -0
  160. package/ui/forms/PhoneFieldSplitInput.d.ts +19 -0
  161. package/ui/forms/PhoneFieldSplitInput.js +159 -0
  162. package/ui/forms/PhoneFieldSplitInput.js.map +1 -0
  163. package/ui/forms/Select.js +4 -4
  164. package/ui/forms/Switch.d.ts +3 -3
  165. package/ui/forms/Switch.js +51 -34
  166. package/ui/forms/Switch.js.map +1 -1
  167. package/ui/forms/TextField.js +4 -4
  168. package/ui/forms/TextField.js.map +1 -1
  169. package/ui/forms/checkboxes/Checkbox.d.ts +10 -12
  170. package/ui/forms/checkboxes/Checkbox.js +38 -55
  171. package/ui/forms/checkboxes/Checkbox.js.map +1 -1
  172. package/ui/forms/checkboxes/Checkboxes.js +2 -2
  173. package/ui/forms/checkboxes/Checkboxes.js.map +1 -1
  174. package/ui/forms/password/Password.js +4 -4
  175. package/ui/frame/Frame.d.ts +8 -0
  176. package/ui/frame/Frame.js +16 -0
  177. package/ui/frame/Frame.js.map +1 -0
  178. package/ui/frame/FrameLabelsWrapper.d.ts +5 -0
  179. package/ui/frame/FrameLabelsWrapper.js +12 -0
  180. package/ui/frame/FrameLabelsWrapper.js.map +1 -0
  181. package/ui/frame/FrameTitle.d.ts +7 -0
  182. package/ui/frame/FrameTitle.js +25 -0
  183. package/ui/frame/FrameTitle.js.map +1 -0
  184. package/ui/frame/FrameWrapper.d.ts +6 -0
  185. package/ui/frame/FrameWrapper.js +14 -0
  186. package/ui/frame/FrameWrapper.js.map +1 -0
  187. package/ui/frame/SliderFrame.d.ts +14 -0
  188. package/ui/frame/SliderFrame.js +50 -0
  189. package/ui/frame/SliderFrame.js.map +1 -0
  190. package/ui/helpers/colors/colors.d.ts +4 -0
  191. package/ui/helpers/colors/colors.js +6 -1
  192. package/ui/helpers/colors/colors.js.map +1 -1
  193. package/ui/helpers/phone/defaultPrefixes.js +28 -28
  194. package/ui/helpers/phone/defaultPrefixes.js.map +1 -1
  195. package/ui/helpers/phone/formatters.d.ts +11 -0
  196. package/ui/helpers/phone/formatters.js +32 -1
  197. package/ui/helpers/phone/formatters.js.map +1 -1
  198. package/ui/helpers/phone/index.d.ts +1 -1
  199. package/ui/helpers/phone/index.js +3 -3
  200. package/ui/hooks/useValue.js +1 -1
  201. package/ui/hooks/useValue.js.map +1 -1
  202. package/ui/tabs/Tabs.js +1 -1
  203. package/ui/tabs/Tabs.js.map +1 -1
  204. package/ui/Breadcrumb.themes.d.ts +0 -8
  205. package/ui/Breadcrumb.themes.js +0 -16
  206. package/ui/Breadcrumb.themes.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessage.js","names":["sharedGraphemeSegmenter","getSharedGraphemeSegmenter","React","React","getElementRef","Fragment2","React","React","e","t","r","n","i","o","l","s","a","c","d","g","p","u","h","f","m","b","S","k","y","B","$","x","I","R","z","W","j","E","v","T","w","M","C","P","L","A","O","N","D","H","V","G","F","J","U","Y","q","Z","K","X","Q","_","ee","te","re","clamp","V","_toPrimitive","_toPropertyKey","_defineProperty","ownKeys","_objectSpread2","noop","V","_objectWithoutPropertiesLoose","_objectWithoutProperties","parse","_excluded","_objectSpread2","useDrag","composeEventHandlers","React","React","useId","React","clamp","evaluate","evaluate","computePosition","arrow","clamp","flip","hide","offset","shift","limitShift","size","getComputedStyle","offset","offset$1","shift","shift$1","flip","flip$1","size","size$1","hide","hide$1","arrow","arrow$1","limitShift","limitShift$1","React","NAME","Arrow","React","Root","React","React","useLayoutEffect","React","_objectWithoutPropertiesLoose","_objectWithoutProperties","normalize$3","_defineProperty","ownKeys","isObject","_excluded3","_excluded$7","_excluded2$1","P.Root","RadixTooltip.Root","RadixTooltip.Trigger","RadixTooltip.Content","_excluded$6","_excluded$5","_excluded$4","_excluded$2","Boolean","_excluded$1","Container","convert","_excluded","_excluded2","_excluded$8","_excluded2$2","format$1","normalize$2","createStitches","Arrow","_excluded$3","number","schema$2","sanitize$2","format","normalize$1","props$2","schema$1","sanitize$1","normalize","props$1","schema","sanitize","props","u","i","s","h","b","g","d","f","c","p","v","m","y","N","x","I","M","H","$","j","w","S","k","E","r","o","t","a","e","n","l","ownKeys","_objectSpread","_defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","_excluded","_excluded2","PropTypes","colord","RgbaColorPicker","RgbColorPicker","_objectWithoutProperties","StyledInputWrapper","namesPlugin","getFormat","RadixTooltip.Provider"],"sources":["../../../../node_modules/.pnpm/@chenglou+pretext@0.0.7/node_modules/@chenglou/pretext/dist/generated/bidi-data.js","../../../../node_modules/.pnpm/@chenglou+pretext@0.0.7/node_modules/@chenglou/pretext/dist/bidi.js","../../../../node_modules/.pnpm/@chenglou+pretext@0.0.7/node_modules/@chenglou/pretext/dist/analysis.js","../../../../node_modules/.pnpm/@chenglou+pretext@0.0.7/node_modules/@chenglou/pretext/dist/measurement.js","../../../../node_modules/.pnpm/@chenglou+pretext@0.0.7/node_modules/@chenglou/pretext/dist/line-break.js","../../../../node_modules/.pnpm/@chenglou+pretext@0.0.7/node_modules/@chenglou/pretext/dist/layout.js","../../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.2.3_@types+react@19.2.13__@types+re_d9989b5a449efab7981407765035ba76/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-portal@1.1.9_@types+react-dom@19.2.3_@types+react@19.2.13__@types+react_c123eaaf0c47d055376e989bbfa18143/node_modules/@radix-ui/react-portal/dist/index.mjs","../../../../node_modules/.pnpm/dequal@2.0.3/node_modules/dequal/lite/index.mjs","../../../../node_modules/.pnpm/zustand@3.7.2_react@19.2.4/node_modules/zustand/esm/shallow.js","../../../../node_modules/.pnpm/v8n@1.5.1/node_modules/v8n/dist/v8n.esm.js","../../../../node_modules/.pnpm/@stitches+react@1.2.8_react@19.2.4/node_modules/@stitches/react/dist/index.mjs","../../../../node_modules/.pnpm/@use-gesture+core@10.3.1/node_modules/@use-gesture/core/dist/maths-0ab39ae9.esm.js","../../../../node_modules/.pnpm/@use-gesture+core@10.3.1/node_modules/@use-gesture/core/dist/actions-fe213e88.esm.js","../../../../node_modules/.pnpm/@use-gesture+core@10.3.1/node_modules/@use-gesture/core/actions/dist/use-gesture-core-actions.esm.js","../../../../node_modules/.pnpm/@use-gesture+core@10.3.1/node_modules/@use-gesture/core/dist/use-gesture-core.esm.js","../../../../node_modules/.pnpm/@use-gesture+core@10.3.1/node_modules/@use-gesture/core/utils/dist/use-gesture-core-utils.esm.js","../../../../node_modules/.pnpm/@use-gesture+core@10.3.1/node_modules/@use-gesture/core/types/dist/use-gesture-core-types.esm.js","../../../../node_modules/.pnpm/@use-gesture+react@10.3.1_react@19.2.4/node_modules/@use-gesture/react/dist/use-gesture-react.esm.js","../../../../node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-context/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.1_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.1_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.13___f225157401671f5ebff9f03f5471ddf1/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-id/dist/index.mjs","../../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../../node_modules/.pnpm/@floating-ui+core@1.7.4/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../../node_modules/.pnpm/@floating-ui+dom@1.7.5/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../../node_modules/.pnpm/@floating-ui+react-dom@2.1.7_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../../../node_modules/.pnpm/@radix-ui+react-arrow@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.13__@types+react@_c8a3d099d623feab8d4f9fd4785e114e/node_modules/@radix-ui/react-arrow/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-size@1.1.1_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-use-size/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-popper@1.2.8_@types+react-dom@19.2.3_@types+react@19.2.13__@types+react_a2c71a7f0d21d3c0497262c2479d45b4/node_modules/@radix-ui/react-popper/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.13__@types+rea_a6ba61f6617b9c48b253fd72d38c5365/node_modules/@radix-ui/react-presence/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.2.13_react@19.2.4/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@19.2.3_@types+react@19.2.13__@ty_2a8dab3499c5f111050353b254a79b86/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-tooltip@1.2.8_@types+react-dom@19.2.3_@types+react@19.2.13__@types+reac_cd03b24fbc1e8f0283662fcaec0715e1/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../../../../node_modules/.pnpm/leva@0.10.1_@types+react-dom@19.2.3_@types+react@19.2.13__@types+react@19.2.13_react-do_34a0f2393abf2a3f7f9ef0b801b0a1e7/node_modules/leva/dist/vector-plugin-5e122f40.esm.js","../../../../node_modules/.pnpm/colord@2.9.3/node_modules/colord/index.mjs","../../../../node_modules/.pnpm/colord@2.9.3/node_modules/colord/plugins/names.mjs","../../../../node_modules/.pnpm/react-colorful@5.7.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-colorful/dist/index.mjs","../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js","../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","../../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/has.js","../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/checkPropTypes.js","../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithTypeCheckers.js","../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js","../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js","../../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../../node_modules/.pnpm/file-selector@0.5.0/node_modules/file-selector/dist/es5/file.js","../../../../node_modules/.pnpm/file-selector@0.5.0/node_modules/file-selector/dist/es5/file-selector.js","../../../../node_modules/.pnpm/file-selector@0.5.0/node_modules/file-selector/dist/es5/index.js","../../../../node_modules/.pnpm/attr-accept@2.2.5/node_modules/attr-accept/dist/es/index.js","../../../../node_modules/.pnpm/react-dropzone@12.1.0_react@19.2.4/node_modules/react-dropzone/dist/es/utils/index.js","../../../../node_modules/.pnpm/react-dropzone@12.1.0_react@19.2.4/node_modules/react-dropzone/dist/es/index.js","../../../../node_modules/.pnpm/zustand@3.7.2_react@19.2.4/node_modules/zustand/esm/index.js","../../../../node_modules/.pnpm/zustand@3.7.2_react@19.2.4/node_modules/zustand/esm/middleware.js","../../../../node_modules/.pnpm/isobject@3.0.1/node_modules/isobject/index.js","../../../../node_modules/.pnpm/is-plain-object@2.0.4/node_modules/is-plain-object/index.js","../../../../node_modules/.pnpm/is-extendable@1.0.1/node_modules/is-extendable/index.js","../../../../node_modules/.pnpm/for-in@1.0.2/node_modules/for-in/index.js","../../../../node_modules/.pnpm/mixin-deep@1.3.2/node_modules/mixin-deep/index.js","../../../../node_modules/.pnpm/get-value@2.0.6/node_modules/get-value/index.js","../../../../node_modules/.pnpm/assign-symbols@1.0.0/node_modules/assign-symbols/index.js","../../../../node_modules/.pnpm/extend-shallow@3.0.2/node_modules/extend-shallow/index.js","../../../../node_modules/.pnpm/split-string@3.1.0/node_modules/split-string/index.js","../../../../node_modules/.pnpm/is-extendable@0.1.1/node_modules/is-extendable/index.js","../../../../node_modules/.pnpm/extend-shallow@2.0.1/node_modules/extend-shallow/index.js","../../../../node_modules/.pnpm/set-value@2.0.1/node_modules/set-value/index.js","../../../../node_modules/.pnpm/merge-value@1.0.0/node_modules/merge-value/index.js","../../../../node_modules/.pnpm/leva@0.10.1_@types+react-dom@19.2.3_@types+react@19.2.13__@types+react@19.2.13_react-do_34a0f2393abf2a3f7f9ef0b801b0a1e7/node_modules/leva/dist/leva.esm.js","../../lib/ui/ChatMessage.tsx"],"sourcesContent":["// Generated by scripts/generate-bidi-data.ts from scripts/unicode/DerivedBidiClass-17.0.0.txt.\n// Do not edit by hand. Regenerate with `bun run generate:bidi-data`.\n// Formatting and isolate controls are projected onto `BN` because the rich\n// bidi helper consumes a simplified class set and does not model UBA isolates.\nexport const unicodeBidiDataVersion = '17.0.0';\nexport const latin1BidiTypes = [\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'S',\n 'B',\n 'S',\n 'WS',\n 'B',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'B',\n 'B',\n 'B',\n 'S',\n 'WS',\n 'ON',\n 'ON',\n 'ET',\n 'ET',\n 'ET',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'ES',\n 'CS',\n 'ES',\n 'CS',\n 'CS',\n 'EN',\n 'EN',\n 'EN',\n 'EN',\n 'EN',\n 'EN',\n 'EN',\n 'EN',\n 'EN',\n 'EN',\n 'CS',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'B',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'BN',\n 'CS',\n 'ON',\n 'ET',\n 'ET',\n 'ET',\n 'ET',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'L',\n 'ON',\n 'ON',\n 'BN',\n 'ON',\n 'ON',\n 'ET',\n 'ET',\n 'EN',\n 'EN',\n 'ON',\n 'L',\n 'ON',\n 'ON',\n 'ON',\n 'EN',\n 'L',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'ON',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'ON',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'ON',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n 'L',\n];\nexport const nonLatin1BidiRanges = [\n [0x2B9, 0x2BA, 'ON'],\n [0x2C2, 0x2CF, 'ON'],\n [0x2D2, 0x2DF, 'ON'],\n [0x2E5, 0x2ED, 'ON'],\n [0x2EF, 0x2FF, 'ON'],\n [0x300, 0x36F, 'NSM'],\n [0x374, 0x375, 'ON'],\n [0x37E, 0x37E, 'ON'],\n [0x384, 0x385, 'ON'],\n [0x387, 0x387, 'ON'],\n [0x3F6, 0x3F6, 'ON'],\n [0x483, 0x489, 'NSM'],\n [0x58A, 0x58A, 'ON'],\n [0x58D, 0x58E, 'ON'],\n [0x58F, 0x58F, 'ET'],\n [0x590, 0x590, 'R'],\n [0x591, 0x5BD, 'NSM'],\n [0x5BE, 0x5BE, 'R'],\n [0x5BF, 0x5BF, 'NSM'],\n [0x5C0, 0x5C0, 'R'],\n [0x5C1, 0x5C2, 'NSM'],\n [0x5C3, 0x5C3, 'R'],\n [0x5C4, 0x5C5, 'NSM'],\n [0x5C6, 0x5C6, 'R'],\n [0x5C7, 0x5C7, 'NSM'],\n [0x5C8, 0x5FF, 'R'],\n [0x600, 0x605, 'AN'],\n [0x606, 0x607, 'ON'],\n [0x608, 0x608, 'AL'],\n [0x609, 0x60A, 'ET'],\n [0x60B, 0x60B, 'AL'],\n [0x60C, 0x60C, 'CS'],\n [0x60D, 0x60D, 'AL'],\n [0x60E, 0x60F, 'ON'],\n [0x610, 0x61A, 'NSM'],\n [0x61B, 0x64A, 'AL'],\n [0x64B, 0x65F, 'NSM'],\n [0x660, 0x669, 'AN'],\n [0x66A, 0x66A, 'ET'],\n [0x66B, 0x66C, 'AN'],\n [0x66D, 0x66F, 'AL'],\n [0x670, 0x670, 'NSM'],\n [0x671, 0x6D5, 'AL'],\n [0x6D6, 0x6DC, 'NSM'],\n [0x6DD, 0x6DD, 'AN'],\n [0x6DE, 0x6DE, 'ON'],\n [0x6DF, 0x6E4, 'NSM'],\n [0x6E5, 0x6E6, 'AL'],\n [0x6E7, 0x6E8, 'NSM'],\n [0x6E9, 0x6E9, 'ON'],\n [0x6EA, 0x6ED, 'NSM'],\n [0x6EE, 0x6EF, 'AL'],\n [0x6F0, 0x6F9, 'EN'],\n [0x6FA, 0x710, 'AL'],\n [0x711, 0x711, 'NSM'],\n [0x712, 0x72F, 'AL'],\n [0x730, 0x74A, 'NSM'],\n [0x74B, 0x7A5, 'AL'],\n [0x7A6, 0x7B0, 'NSM'],\n [0x7B1, 0x7BF, 'AL'],\n [0x7C0, 0x7EA, 'R'],\n [0x7EB, 0x7F3, 'NSM'],\n [0x7F4, 0x7F5, 'R'],\n [0x7F6, 0x7F9, 'ON'],\n [0x7FA, 0x7FC, 'R'],\n [0x7FD, 0x7FD, 'NSM'],\n [0x7FE, 0x815, 'R'],\n [0x816, 0x819, 'NSM'],\n [0x81A, 0x81A, 'R'],\n [0x81B, 0x823, 'NSM'],\n [0x824, 0x824, 'R'],\n [0x825, 0x827, 'NSM'],\n [0x828, 0x828, 'R'],\n [0x829, 0x82D, 'NSM'],\n [0x82E, 0x858, 'R'],\n [0x859, 0x85B, 'NSM'],\n [0x85C, 0x85F, 'R'],\n [0x860, 0x88F, 'AL'],\n [0x890, 0x891, 'AN'],\n [0x892, 0x896, 'AL'],\n [0x897, 0x89F, 'NSM'],\n [0x8A0, 0x8C9, 'AL'],\n [0x8CA, 0x8E1, 'NSM'],\n [0x8E2, 0x8E2, 'AN'],\n [0x8E3, 0x902, 'NSM'],\n [0x93A, 0x93A, 'NSM'],\n [0x93C, 0x93C, 'NSM'],\n [0x941, 0x948, 'NSM'],\n [0x94D, 0x94D, 'NSM'],\n [0x951, 0x957, 'NSM'],\n [0x962, 0x963, 'NSM'],\n [0x981, 0x981, 'NSM'],\n [0x9BC, 0x9BC, 'NSM'],\n [0x9C1, 0x9C4, 'NSM'],\n [0x9CD, 0x9CD, 'NSM'],\n [0x9E2, 0x9E3, 'NSM'],\n [0x9F2, 0x9F3, 'ET'],\n [0x9FB, 0x9FB, 'ET'],\n [0x9FE, 0x9FE, 'NSM'],\n [0xA01, 0xA02, 'NSM'],\n [0xA3C, 0xA3C, 'NSM'],\n [0xA41, 0xA42, 'NSM'],\n [0xA47, 0xA48, 'NSM'],\n [0xA4B, 0xA4D, 'NSM'],\n [0xA51, 0xA51, 'NSM'],\n [0xA70, 0xA71, 'NSM'],\n [0xA75, 0xA75, 'NSM'],\n [0xA81, 0xA82, 'NSM'],\n [0xABC, 0xABC, 'NSM'],\n [0xAC1, 0xAC5, 'NSM'],\n [0xAC7, 0xAC8, 'NSM'],\n [0xACD, 0xACD, 'NSM'],\n [0xAE2, 0xAE3, 'NSM'],\n [0xAF1, 0xAF1, 'ET'],\n [0xAFA, 0xAFF, 'NSM'],\n [0xB01, 0xB01, 'NSM'],\n [0xB3C, 0xB3C, 'NSM'],\n [0xB3F, 0xB3F, 'NSM'],\n [0xB41, 0xB44, 'NSM'],\n [0xB4D, 0xB4D, 'NSM'],\n [0xB55, 0xB56, 'NSM'],\n [0xB62, 0xB63, 'NSM'],\n [0xB82, 0xB82, 'NSM'],\n [0xBC0, 0xBC0, 'NSM'],\n [0xBCD, 0xBCD, 'NSM'],\n [0xBF3, 0xBF8, 'ON'],\n [0xBF9, 0xBF9, 'ET'],\n [0xBFA, 0xBFA, 'ON'],\n [0xC00, 0xC00, 'NSM'],\n [0xC04, 0xC04, 'NSM'],\n [0xC3C, 0xC3C, 'NSM'],\n [0xC3E, 0xC40, 'NSM'],\n [0xC46, 0xC48, 'NSM'],\n [0xC4A, 0xC4D, 'NSM'],\n [0xC55, 0xC56, 'NSM'],\n [0xC62, 0xC63, 'NSM'],\n [0xC78, 0xC7E, 'ON'],\n [0xC81, 0xC81, 'NSM'],\n [0xCBC, 0xCBC, 'NSM'],\n [0xCCC, 0xCCD, 'NSM'],\n [0xCE2, 0xCE3, 'NSM'],\n [0xD00, 0xD01, 'NSM'],\n [0xD3B, 0xD3C, 'NSM'],\n [0xD41, 0xD44, 'NSM'],\n [0xD4D, 0xD4D, 'NSM'],\n [0xD62, 0xD63, 'NSM'],\n [0xD81, 0xD81, 'NSM'],\n [0xDCA, 0xDCA, 'NSM'],\n [0xDD2, 0xDD4, 'NSM'],\n [0xDD6, 0xDD6, 'NSM'],\n [0xE31, 0xE31, 'NSM'],\n [0xE34, 0xE3A, 'NSM'],\n [0xE3F, 0xE3F, 'ET'],\n [0xE47, 0xE4E, 'NSM'],\n [0xEB1, 0xEB1, 'NSM'],\n [0xEB4, 0xEBC, 'NSM'],\n [0xEC8, 0xECE, 'NSM'],\n [0xF18, 0xF19, 'NSM'],\n [0xF35, 0xF35, 'NSM'],\n [0xF37, 0xF37, 'NSM'],\n [0xF39, 0xF39, 'NSM'],\n [0xF3A, 0xF3D, 'ON'],\n [0xF71, 0xF7E, 'NSM'],\n [0xF80, 0xF84, 'NSM'],\n [0xF86, 0xF87, 'NSM'],\n [0xF8D, 0xF97, 'NSM'],\n [0xF99, 0xFBC, 'NSM'],\n [0xFC6, 0xFC6, 'NSM'],\n [0x102D, 0x1030, 'NSM'],\n [0x1032, 0x1037, 'NSM'],\n [0x1039, 0x103A, 'NSM'],\n [0x103D, 0x103E, 'NSM'],\n [0x1058, 0x1059, 'NSM'],\n [0x105E, 0x1060, 'NSM'],\n [0x1071, 0x1074, 'NSM'],\n [0x1082, 0x1082, 'NSM'],\n [0x1085, 0x1086, 'NSM'],\n [0x108D, 0x108D, 'NSM'],\n [0x109D, 0x109D, 'NSM'],\n [0x135D, 0x135F, 'NSM'],\n [0x1390, 0x1399, 'ON'],\n [0x1400, 0x1400, 'ON'],\n [0x1680, 0x1680, 'WS'],\n [0x169B, 0x169C, 'ON'],\n [0x1712, 0x1714, 'NSM'],\n [0x1732, 0x1733, 'NSM'],\n [0x1752, 0x1753, 'NSM'],\n [0x1772, 0x1773, 'NSM'],\n [0x17B4, 0x17B5, 'NSM'],\n [0x17B7, 0x17BD, 'NSM'],\n [0x17C6, 0x17C6, 'NSM'],\n [0x17C9, 0x17D3, 'NSM'],\n [0x17DB, 0x17DB, 'ET'],\n [0x17DD, 0x17DD, 'NSM'],\n [0x17F0, 0x17F9, 'ON'],\n [0x1800, 0x180A, 'ON'],\n [0x180B, 0x180D, 'NSM'],\n [0x180E, 0x180E, 'BN'],\n [0x180F, 0x180F, 'NSM'],\n [0x1885, 0x1886, 'NSM'],\n [0x18A9, 0x18A9, 'NSM'],\n [0x1920, 0x1922, 'NSM'],\n [0x1927, 0x1928, 'NSM'],\n [0x1932, 0x1932, 'NSM'],\n [0x1939, 0x193B, 'NSM'],\n [0x1940, 0x1940, 'ON'],\n [0x1944, 0x1945, 'ON'],\n [0x19DE, 0x19FF, 'ON'],\n [0x1A17, 0x1A18, 'NSM'],\n [0x1A1B, 0x1A1B, 'NSM'],\n [0x1A56, 0x1A56, 'NSM'],\n [0x1A58, 0x1A5E, 'NSM'],\n [0x1A60, 0x1A60, 'NSM'],\n [0x1A62, 0x1A62, 'NSM'],\n [0x1A65, 0x1A6C, 'NSM'],\n [0x1A73, 0x1A7C, 'NSM'],\n [0x1A7F, 0x1A7F, 'NSM'],\n [0x1AB0, 0x1ADD, 'NSM'],\n [0x1AE0, 0x1AEB, 'NSM'],\n [0x1B00, 0x1B03, 'NSM'],\n [0x1B34, 0x1B34, 'NSM'],\n [0x1B36, 0x1B3A, 'NSM'],\n [0x1B3C, 0x1B3C, 'NSM'],\n [0x1B42, 0x1B42, 'NSM'],\n [0x1B6B, 0x1B73, 'NSM'],\n [0x1B80, 0x1B81, 'NSM'],\n [0x1BA2, 0x1BA5, 'NSM'],\n [0x1BA8, 0x1BA9, 'NSM'],\n [0x1BAB, 0x1BAD, 'NSM'],\n [0x1BE6, 0x1BE6, 'NSM'],\n [0x1BE8, 0x1BE9, 'NSM'],\n [0x1BED, 0x1BED, 'NSM'],\n [0x1BEF, 0x1BF1, 'NSM'],\n [0x1C2C, 0x1C33, 'NSM'],\n [0x1C36, 0x1C37, 'NSM'],\n [0x1CD0, 0x1CD2, 'NSM'],\n [0x1CD4, 0x1CE0, 'NSM'],\n [0x1CE2, 0x1CE8, 'NSM'],\n [0x1CED, 0x1CED, 'NSM'],\n [0x1CF4, 0x1CF4, 'NSM'],\n [0x1CF8, 0x1CF9, 'NSM'],\n [0x1DC0, 0x1DFF, 'NSM'],\n [0x1FBD, 0x1FBD, 'ON'],\n [0x1FBF, 0x1FC1, 'ON'],\n [0x1FCD, 0x1FCF, 'ON'],\n [0x1FDD, 0x1FDF, 'ON'],\n [0x1FED, 0x1FEF, 'ON'],\n [0x1FFD, 0x1FFE, 'ON'],\n [0x2000, 0x200A, 'WS'],\n [0x200B, 0x200D, 'BN'],\n [0x200F, 0x200F, 'R'],\n [0x2010, 0x2027, 'ON'],\n [0x2028, 0x2028, 'WS'],\n [0x2029, 0x2029, 'B'],\n [0x202A, 0x202E, 'BN'],\n [0x202F, 0x202F, 'CS'],\n [0x2030, 0x2034, 'ET'],\n [0x2035, 0x2043, 'ON'],\n [0x2044, 0x2044, 'CS'],\n [0x2045, 0x205E, 'ON'],\n [0x205F, 0x205F, 'WS'],\n [0x2060, 0x206F, 'BN'],\n [0x2070, 0x2070, 'EN'],\n [0x2074, 0x2079, 'EN'],\n [0x207A, 0x207B, 'ES'],\n [0x207C, 0x207E, 'ON'],\n [0x2080, 0x2089, 'EN'],\n [0x208A, 0x208B, 'ES'],\n [0x208C, 0x208E, 'ON'],\n [0x20A0, 0x20CF, 'ET'],\n [0x20D0, 0x20F0, 'NSM'],\n [0x2100, 0x2101, 'ON'],\n [0x2103, 0x2106, 'ON'],\n [0x2108, 0x2109, 'ON'],\n [0x2114, 0x2114, 'ON'],\n [0x2116, 0x2118, 'ON'],\n [0x211E, 0x2123, 'ON'],\n [0x2125, 0x2125, 'ON'],\n [0x2127, 0x2127, 'ON'],\n [0x2129, 0x2129, 'ON'],\n [0x212E, 0x212E, 'ET'],\n [0x213A, 0x213B, 'ON'],\n [0x2140, 0x2144, 'ON'],\n [0x214A, 0x214D, 'ON'],\n [0x2150, 0x215F, 'ON'],\n [0x2189, 0x218B, 'ON'],\n [0x2190, 0x2211, 'ON'],\n [0x2212, 0x2212, 'ES'],\n [0x2213, 0x2213, 'ET'],\n [0x2214, 0x2335, 'ON'],\n [0x237B, 0x2394, 'ON'],\n [0x2396, 0x2429, 'ON'],\n [0x2440, 0x244A, 'ON'],\n [0x2460, 0x2487, 'ON'],\n [0x2488, 0x249B, 'EN'],\n [0x24EA, 0x26AB, 'ON'],\n [0x26AD, 0x27FF, 'ON'],\n [0x2900, 0x2B73, 'ON'],\n [0x2B76, 0x2BFF, 'ON'],\n [0x2CE5, 0x2CEA, 'ON'],\n [0x2CEF, 0x2CF1, 'NSM'],\n [0x2CF9, 0x2CFF, 'ON'],\n [0x2D7F, 0x2D7F, 'NSM'],\n [0x2DE0, 0x2DFF, 'NSM'],\n [0x2E00, 0x2E5D, 'ON'],\n [0x2E80, 0x2E99, 'ON'],\n [0x2E9B, 0x2EF3, 'ON'],\n [0x2F00, 0x2FD5, 'ON'],\n [0x2FF0, 0x2FFF, 'ON'],\n [0x3000, 0x3000, 'WS'],\n [0x3001, 0x3004, 'ON'],\n [0x3008, 0x3020, 'ON'],\n [0x302A, 0x302D, 'NSM'],\n [0x3030, 0x3030, 'ON'],\n [0x3036, 0x3037, 'ON'],\n [0x303D, 0x303F, 'ON'],\n [0x3099, 0x309A, 'NSM'],\n [0x309B, 0x309C, 'ON'],\n [0x30A0, 0x30A0, 'ON'],\n [0x30FB, 0x30FB, 'ON'],\n [0x31C0, 0x31E5, 'ON'],\n [0x31EF, 0x31EF, 'ON'],\n [0x321D, 0x321E, 'ON'],\n [0x3250, 0x325F, 'ON'],\n [0x327C, 0x327E, 'ON'],\n [0x32B1, 0x32BF, 'ON'],\n [0x32CC, 0x32CF, 'ON'],\n [0x3377, 0x337A, 'ON'],\n [0x33DE, 0x33DF, 'ON'],\n [0x33FF, 0x33FF, 'ON'],\n [0x4DC0, 0x4DFF, 'ON'],\n [0xA490, 0xA4C6, 'ON'],\n [0xA60D, 0xA60F, 'ON'],\n [0xA66F, 0xA672, 'NSM'],\n [0xA673, 0xA673, 'ON'],\n [0xA674, 0xA67D, 'NSM'],\n [0xA67E, 0xA67F, 'ON'],\n [0xA69E, 0xA69F, 'NSM'],\n [0xA6F0, 0xA6F1, 'NSM'],\n [0xA700, 0xA721, 'ON'],\n [0xA788, 0xA788, 'ON'],\n [0xA802, 0xA802, 'NSM'],\n [0xA806, 0xA806, 'NSM'],\n [0xA80B, 0xA80B, 'NSM'],\n [0xA825, 0xA826, 'NSM'],\n [0xA828, 0xA82B, 'ON'],\n [0xA82C, 0xA82C, 'NSM'],\n [0xA838, 0xA839, 'ET'],\n [0xA874, 0xA877, 'ON'],\n [0xA8C4, 0xA8C5, 'NSM'],\n [0xA8E0, 0xA8F1, 'NSM'],\n [0xA8FF, 0xA8FF, 'NSM'],\n [0xA926, 0xA92D, 'NSM'],\n [0xA947, 0xA951, 'NSM'],\n [0xA980, 0xA982, 'NSM'],\n [0xA9B3, 0xA9B3, 'NSM'],\n [0xA9B6, 0xA9B9, 'NSM'],\n [0xA9BC, 0xA9BD, 'NSM'],\n [0xA9E5, 0xA9E5, 'NSM'],\n [0xAA29, 0xAA2E, 'NSM'],\n [0xAA31, 0xAA32, 'NSM'],\n [0xAA35, 0xAA36, 'NSM'],\n [0xAA43, 0xAA43, 'NSM'],\n [0xAA4C, 0xAA4C, 'NSM'],\n [0xAA7C, 0xAA7C, 'NSM'],\n [0xAAB0, 0xAAB0, 'NSM'],\n [0xAAB2, 0xAAB4, 'NSM'],\n [0xAAB7, 0xAAB8, 'NSM'],\n [0xAABE, 0xAABF, 'NSM'],\n [0xAAC1, 0xAAC1, 'NSM'],\n [0xAAEC, 0xAAED, 'NSM'],\n [0xAAF6, 0xAAF6, 'NSM'],\n [0xAB6A, 0xAB6B, 'ON'],\n [0xABE5, 0xABE5, 'NSM'],\n [0xABE8, 0xABE8, 'NSM'],\n [0xABED, 0xABED, 'NSM'],\n [0xFB1D, 0xFB1D, 'R'],\n [0xFB1E, 0xFB1E, 'NSM'],\n [0xFB1F, 0xFB28, 'R'],\n [0xFB29, 0xFB29, 'ES'],\n [0xFB2A, 0xFB4F, 'R'],\n [0xFB50, 0xFBC2, 'AL'],\n [0xFBC3, 0xFBD2, 'ON'],\n [0xFBD3, 0xFD3D, 'AL'],\n [0xFD3E, 0xFD4F, 'ON'],\n [0xFD50, 0xFD8F, 'AL'],\n [0xFD90, 0xFD91, 'ON'],\n [0xFD92, 0xFDC7, 'AL'],\n [0xFDC8, 0xFDCF, 'ON'],\n [0xFDD0, 0xFDEF, 'BN'],\n [0xFDF0, 0xFDFC, 'AL'],\n [0xFDFD, 0xFDFF, 'ON'],\n [0xFE00, 0xFE0F, 'NSM'],\n [0xFE10, 0xFE19, 'ON'],\n [0xFE20, 0xFE2F, 'NSM'],\n [0xFE30, 0xFE4F, 'ON'],\n [0xFE50, 0xFE50, 'CS'],\n [0xFE51, 0xFE51, 'ON'],\n [0xFE52, 0xFE52, 'CS'],\n [0xFE54, 0xFE54, 'ON'],\n [0xFE55, 0xFE55, 'CS'],\n [0xFE56, 0xFE5E, 'ON'],\n [0xFE5F, 0xFE5F, 'ET'],\n [0xFE60, 0xFE61, 'ON'],\n [0xFE62, 0xFE63, 'ES'],\n [0xFE64, 0xFE66, 'ON'],\n [0xFE68, 0xFE68, 'ON'],\n [0xFE69, 0xFE6A, 'ET'],\n [0xFE6B, 0xFE6B, 'ON'],\n [0xFE70, 0xFEFE, 'AL'],\n [0xFEFF, 0xFEFF, 'BN'],\n [0xFF01, 0xFF02, 'ON'],\n [0xFF03, 0xFF05, 'ET'],\n [0xFF06, 0xFF0A, 'ON'],\n [0xFF0B, 0xFF0B, 'ES'],\n [0xFF0C, 0xFF0C, 'CS'],\n [0xFF0D, 0xFF0D, 'ES'],\n [0xFF0E, 0xFF0F, 'CS'],\n [0xFF10, 0xFF19, 'EN'],\n [0xFF1A, 0xFF1A, 'CS'],\n [0xFF1B, 0xFF20, 'ON'],\n [0xFF3B, 0xFF40, 'ON'],\n [0xFF5B, 0xFF65, 'ON'],\n [0xFFE0, 0xFFE1, 'ET'],\n [0xFFE2, 0xFFE4, 'ON'],\n [0xFFE5, 0xFFE6, 'ET'],\n [0xFFE8, 0xFFEE, 'ON'],\n [0xFFF0, 0xFFF8, 'BN'],\n [0xFFF9, 0xFFFD, 'ON'],\n [0xFFFE, 0xFFFF, 'BN'],\n [0x10101, 0x10101, 'ON'],\n [0x10140, 0x1018C, 'ON'],\n [0x10190, 0x1019C, 'ON'],\n [0x101A0, 0x101A0, 'ON'],\n [0x101FD, 0x101FD, 'NSM'],\n [0x102E0, 0x102E0, 'NSM'],\n [0x102E1, 0x102FB, 'EN'],\n [0x10376, 0x1037A, 'NSM'],\n [0x10800, 0x1091E, 'R'],\n [0x1091F, 0x1091F, 'ON'],\n [0x10920, 0x10A00, 'R'],\n [0x10A01, 0x10A03, 'NSM'],\n [0x10A04, 0x10A04, 'R'],\n [0x10A05, 0x10A06, 'NSM'],\n [0x10A07, 0x10A0B, 'R'],\n [0x10A0C, 0x10A0F, 'NSM'],\n [0x10A10, 0x10A37, 'R'],\n [0x10A38, 0x10A3A, 'NSM'],\n [0x10A3B, 0x10A3E, 'R'],\n [0x10A3F, 0x10A3F, 'NSM'],\n [0x10A40, 0x10AE4, 'R'],\n [0x10AE5, 0x10AE6, 'NSM'],\n [0x10AE7, 0x10B38, 'R'],\n [0x10B39, 0x10B3F, 'ON'],\n [0x10B40, 0x10CFF, 'R'],\n [0x10D00, 0x10D23, 'AL'],\n [0x10D24, 0x10D27, 'NSM'],\n [0x10D28, 0x10D2F, 'AL'],\n [0x10D30, 0x10D39, 'AN'],\n [0x10D3A, 0x10D3F, 'AL'],\n [0x10D40, 0x10D49, 'AN'],\n [0x10D4A, 0x10D68, 'R'],\n [0x10D69, 0x10D6D, 'NSM'],\n [0x10D6E, 0x10D6E, 'ON'],\n [0x10D6F, 0x10E5F, 'R'],\n [0x10E60, 0x10E7E, 'AN'],\n [0x10E7F, 0x10EAA, 'R'],\n [0x10EAB, 0x10EAC, 'NSM'],\n [0x10EAD, 0x10EBF, 'R'],\n [0x10EC0, 0x10ECF, 'AL'],\n [0x10ED0, 0x10ED8, 'ON'],\n [0x10ED9, 0x10EF9, 'AL'],\n [0x10EFA, 0x10EFF, 'NSM'],\n [0x10F00, 0x10F2F, 'R'],\n [0x10F30, 0x10F45, 'AL'],\n [0x10F46, 0x10F50, 'NSM'],\n [0x10F51, 0x10F6F, 'AL'],\n [0x10F70, 0x10F81, 'R'],\n [0x10F82, 0x10F85, 'NSM'],\n [0x10F86, 0x10FFF, 'R'],\n [0x11001, 0x11001, 'NSM'],\n [0x11038, 0x11046, 'NSM'],\n [0x11052, 0x11065, 'ON'],\n [0x11070, 0x11070, 'NSM'],\n [0x11073, 0x11074, 'NSM'],\n [0x1107F, 0x11081, 'NSM'],\n [0x110B3, 0x110B6, 'NSM'],\n [0x110B9, 0x110BA, 'NSM'],\n [0x110C2, 0x110C2, 'NSM'],\n [0x11100, 0x11102, 'NSM'],\n [0x11127, 0x1112B, 'NSM'],\n [0x1112D, 0x11134, 'NSM'],\n [0x11173, 0x11173, 'NSM'],\n [0x11180, 0x11181, 'NSM'],\n [0x111B6, 0x111BE, 'NSM'],\n [0x111C9, 0x111CC, 'NSM'],\n [0x111CF, 0x111CF, 'NSM'],\n [0x1122F, 0x11231, 'NSM'],\n [0x11234, 0x11234, 'NSM'],\n [0x11236, 0x11237, 'NSM'],\n [0x1123E, 0x1123E, 'NSM'],\n [0x11241, 0x11241, 'NSM'],\n [0x112DF, 0x112DF, 'NSM'],\n [0x112E3, 0x112EA, 'NSM'],\n [0x11300, 0x11301, 'NSM'],\n [0x1133B, 0x1133C, 'NSM'],\n [0x11340, 0x11340, 'NSM'],\n [0x11366, 0x1136C, 'NSM'],\n [0x11370, 0x11374, 'NSM'],\n [0x113BB, 0x113C0, 'NSM'],\n [0x113CE, 0x113CE, 'NSM'],\n [0x113D0, 0x113D0, 'NSM'],\n [0x113D2, 0x113D2, 'NSM'],\n [0x113E1, 0x113E2, 'NSM'],\n [0x11438, 0x1143F, 'NSM'],\n [0x11442, 0x11444, 'NSM'],\n [0x11446, 0x11446, 'NSM'],\n [0x1145E, 0x1145E, 'NSM'],\n [0x114B3, 0x114B8, 'NSM'],\n [0x114BA, 0x114BA, 'NSM'],\n [0x114BF, 0x114C0, 'NSM'],\n [0x114C2, 0x114C3, 'NSM'],\n [0x115B2, 0x115B5, 'NSM'],\n [0x115BC, 0x115BD, 'NSM'],\n [0x115BF, 0x115C0, 'NSM'],\n [0x115DC, 0x115DD, 'NSM'],\n [0x11633, 0x1163A, 'NSM'],\n [0x1163D, 0x1163D, 'NSM'],\n [0x1163F, 0x11640, 'NSM'],\n [0x11660, 0x1166C, 'ON'],\n [0x116AB, 0x116AB, 'NSM'],\n [0x116AD, 0x116AD, 'NSM'],\n [0x116B0, 0x116B5, 'NSM'],\n [0x116B7, 0x116B7, 'NSM'],\n [0x1171D, 0x1171D, 'NSM'],\n [0x1171F, 0x1171F, 'NSM'],\n [0x11722, 0x11725, 'NSM'],\n [0x11727, 0x1172B, 'NSM'],\n [0x1182F, 0x11837, 'NSM'],\n [0x11839, 0x1183A, 'NSM'],\n [0x1193B, 0x1193C, 'NSM'],\n [0x1193E, 0x1193E, 'NSM'],\n [0x11943, 0x11943, 'NSM'],\n [0x119D4, 0x119D7, 'NSM'],\n [0x119DA, 0x119DB, 'NSM'],\n [0x119E0, 0x119E0, 'NSM'],\n [0x11A01, 0x11A06, 'NSM'],\n [0x11A09, 0x11A0A, 'NSM'],\n [0x11A33, 0x11A38, 'NSM'],\n [0x11A3B, 0x11A3E, 'NSM'],\n [0x11A47, 0x11A47, 'NSM'],\n [0x11A51, 0x11A56, 'NSM'],\n [0x11A59, 0x11A5B, 'NSM'],\n [0x11A8A, 0x11A96, 'NSM'],\n [0x11A98, 0x11A99, 'NSM'],\n [0x11B60, 0x11B60, 'NSM'],\n [0x11B62, 0x11B64, 'NSM'],\n [0x11B66, 0x11B66, 'NSM'],\n [0x11C30, 0x11C36, 'NSM'],\n [0x11C38, 0x11C3D, 'NSM'],\n [0x11C92, 0x11CA7, 'NSM'],\n [0x11CAA, 0x11CB0, 'NSM'],\n [0x11CB2, 0x11CB3, 'NSM'],\n [0x11CB5, 0x11CB6, 'NSM'],\n [0x11D31, 0x11D36, 'NSM'],\n [0x11D3A, 0x11D3A, 'NSM'],\n [0x11D3C, 0x11D3D, 'NSM'],\n [0x11D3F, 0x11D45, 'NSM'],\n [0x11D47, 0x11D47, 'NSM'],\n [0x11D90, 0x11D91, 'NSM'],\n [0x11D95, 0x11D95, 'NSM'],\n [0x11D97, 0x11D97, 'NSM'],\n [0x11EF3, 0x11EF4, 'NSM'],\n [0x11F00, 0x11F01, 'NSM'],\n [0x11F36, 0x11F3A, 'NSM'],\n [0x11F40, 0x11F40, 'NSM'],\n [0x11F42, 0x11F42, 'NSM'],\n [0x11F5A, 0x11F5A, 'NSM'],\n [0x11FD5, 0x11FDC, 'ON'],\n [0x11FDD, 0x11FE0, 'ET'],\n [0x11FE1, 0x11FF1, 'ON'],\n [0x13440, 0x13440, 'NSM'],\n [0x13447, 0x13455, 'NSM'],\n [0x1611E, 0x16129, 'NSM'],\n [0x1612D, 0x1612F, 'NSM'],\n [0x16AF0, 0x16AF4, 'NSM'],\n [0x16B30, 0x16B36, 'NSM'],\n [0x16F4F, 0x16F4F, 'NSM'],\n [0x16F8F, 0x16F92, 'NSM'],\n [0x16FE2, 0x16FE2, 'ON'],\n [0x16FE4, 0x16FE4, 'NSM'],\n [0x1BC9D, 0x1BC9E, 'NSM'],\n [0x1BCA0, 0x1BCA3, 'BN'],\n [0x1CC00, 0x1CCD5, 'ON'],\n [0x1CCF0, 0x1CCF9, 'EN'],\n [0x1CCFA, 0x1CCFC, 'ON'],\n [0x1CD00, 0x1CEB3, 'ON'],\n [0x1CEBA, 0x1CED0, 'ON'],\n [0x1CEE0, 0x1CEF0, 'ON'],\n [0x1CF00, 0x1CF2D, 'NSM'],\n [0x1CF30, 0x1CF46, 'NSM'],\n [0x1D167, 0x1D169, 'NSM'],\n [0x1D173, 0x1D17A, 'BN'],\n [0x1D17B, 0x1D182, 'NSM'],\n [0x1D185, 0x1D18B, 'NSM'],\n [0x1D1AA, 0x1D1AD, 'NSM'],\n [0x1D1E9, 0x1D1EA, 'ON'],\n [0x1D200, 0x1D241, 'ON'],\n [0x1D242, 0x1D244, 'NSM'],\n [0x1D245, 0x1D245, 'ON'],\n [0x1D300, 0x1D356, 'ON'],\n [0x1D6C1, 0x1D6C1, 'ON'],\n [0x1D6DB, 0x1D6DB, 'ON'],\n [0x1D6FB, 0x1D6FB, 'ON'],\n [0x1D715, 0x1D715, 'ON'],\n [0x1D735, 0x1D735, 'ON'],\n [0x1D74F, 0x1D74F, 'ON'],\n [0x1D76F, 0x1D76F, 'ON'],\n [0x1D789, 0x1D789, 'ON'],\n [0x1D7A9, 0x1D7A9, 'ON'],\n [0x1D7C3, 0x1D7C3, 'ON'],\n [0x1D7CE, 0x1D7FF, 'EN'],\n [0x1DA00, 0x1DA36, 'NSM'],\n [0x1DA3B, 0x1DA6C, 'NSM'],\n [0x1DA75, 0x1DA75, 'NSM'],\n [0x1DA84, 0x1DA84, 'NSM'],\n [0x1DA9B, 0x1DA9F, 'NSM'],\n [0x1DAA1, 0x1DAAF, 'NSM'],\n [0x1E000, 0x1E006, 'NSM'],\n [0x1E008, 0x1E018, 'NSM'],\n [0x1E01B, 0x1E021, 'NSM'],\n [0x1E023, 0x1E024, 'NSM'],\n [0x1E026, 0x1E02A, 'NSM'],\n [0x1E08F, 0x1E08F, 'NSM'],\n [0x1E130, 0x1E136, 'NSM'],\n [0x1E2AE, 0x1E2AE, 'NSM'],\n [0x1E2EC, 0x1E2EF, 'NSM'],\n [0x1E2FF, 0x1E2FF, 'ET'],\n [0x1E4EC, 0x1E4EF, 'NSM'],\n [0x1E5EE, 0x1E5EF, 'NSM'],\n [0x1E6E3, 0x1E6E3, 'NSM'],\n [0x1E6E6, 0x1E6E6, 'NSM'],\n [0x1E6EE, 0x1E6EF, 'NSM'],\n [0x1E6F5, 0x1E6F5, 'NSM'],\n [0x1E800, 0x1E8CF, 'R'],\n [0x1E8D0, 0x1E8D6, 'NSM'],\n [0x1E8D7, 0x1E943, 'R'],\n [0x1E944, 0x1E94A, 'NSM'],\n [0x1E94B, 0x1EC6F, 'R'],\n [0x1EC70, 0x1ECBF, 'AL'],\n [0x1ECC0, 0x1ECFF, 'R'],\n [0x1ED00, 0x1ED4F, 'AL'],\n [0x1ED50, 0x1EDFF, 'R'],\n [0x1EE00, 0x1EEEF, 'AL'],\n [0x1EEF0, 0x1EEF1, 'ON'],\n [0x1EEF2, 0x1EEFF, 'AL'],\n [0x1EF00, 0x1EFFF, 'R'],\n [0x1F000, 0x1F02B, 'ON'],\n [0x1F030, 0x1F093, 'ON'],\n [0x1F0A0, 0x1F0AE, 'ON'],\n [0x1F0B1, 0x1F0BF, 'ON'],\n [0x1F0C1, 0x1F0CF, 'ON'],\n [0x1F0D1, 0x1F0F5, 'ON'],\n [0x1F100, 0x1F10A, 'EN'],\n [0x1F10B, 0x1F10F, 'ON'],\n [0x1F12F, 0x1F12F, 'ON'],\n [0x1F16A, 0x1F16F, 'ON'],\n [0x1F1AD, 0x1F1AD, 'ON'],\n [0x1F260, 0x1F265, 'ON'],\n [0x1F300, 0x1F6D8, 'ON'],\n [0x1F6DC, 0x1F6EC, 'ON'],\n [0x1F6F0, 0x1F6FC, 'ON'],\n [0x1F700, 0x1F7D9, 'ON'],\n [0x1F7E0, 0x1F7EB, 'ON'],\n [0x1F7F0, 0x1F7F0, 'ON'],\n [0x1F800, 0x1F80B, 'ON'],\n [0x1F810, 0x1F847, 'ON'],\n [0x1F850, 0x1F859, 'ON'],\n [0x1F860, 0x1F887, 'ON'],\n [0x1F890, 0x1F8AD, 'ON'],\n [0x1F8B0, 0x1F8BB, 'ON'],\n [0x1F8C0, 0x1F8C1, 'ON'],\n [0x1F8D0, 0x1F8D8, 'ON'],\n [0x1F900, 0x1FA57, 'ON'],\n [0x1FA60, 0x1FA6D, 'ON'],\n [0x1FA70, 0x1FA7C, 'ON'],\n [0x1FA80, 0x1FA8A, 'ON'],\n [0x1FA8E, 0x1FAC6, 'ON'],\n [0x1FAC8, 0x1FAC8, 'ON'],\n [0x1FACD, 0x1FADC, 'ON'],\n [0x1FADF, 0x1FAEA, 'ON'],\n [0x1FAEF, 0x1FAF8, 'ON'],\n [0x1FB00, 0x1FB92, 'ON'],\n [0x1FB94, 0x1FBEF, 'ON'],\n [0x1FBF0, 0x1FBF9, 'EN'],\n [0x1FBFA, 0x1FBFA, 'ON'],\n [0x1FFFE, 0x1FFFF, 'BN'],\n [0x2FFFE, 0x2FFFF, 'BN'],\n [0x3FFFE, 0x3FFFF, 'BN'],\n [0x4FFFE, 0x4FFFF, 'BN'],\n [0x5FFFE, 0x5FFFF, 'BN'],\n [0x6FFFE, 0x6FFFF, 'BN'],\n [0x7FFFE, 0x7FFFF, 'BN'],\n [0x8FFFE, 0x8FFFF, 'BN'],\n [0x9FFFE, 0x9FFFF, 'BN'],\n [0xAFFFE, 0xAFFFF, 'BN'],\n [0xBFFFE, 0xBFFFF, 'BN'],\n [0xCFFFE, 0xCFFFF, 'BN'],\n [0xDFFFE, 0xE00FF, 'BN'],\n [0xE0100, 0xE01EF, 'NSM'],\n [0xE01F0, 0xE0FFF, 'BN'],\n [0xEFFFE, 0xEFFFF, 'BN'],\n [0xFFFFE, 0xFFFFF, 'BN'],\n [0x10FFFE, 0x10FFFF, 'BN'],\n];\n","// Simplified bidi metadata helper for the rich prepareWithSegments() path,\n// forked from pdf.js via Sebastian's text-layout. It classifies characters\n// into bidi types, computes embedding levels, and maps them onto prepared\n// segments for custom rendering. The line-breaking engine does not consume\n// these levels.\nimport { latin1BidiTypes, nonLatin1BidiRanges, } from './generated/bidi-data.js';\nfunction classifyCodePoint(codePoint) {\n if (codePoint <= 0x00FF)\n return latin1BidiTypes[codePoint];\n let lo = 0;\n let hi = nonLatin1BidiRanges.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >> 1;\n const range = nonLatin1BidiRanges[mid];\n if (codePoint < range[0]) {\n hi = mid - 1;\n continue;\n }\n if (codePoint > range[1]) {\n lo = mid + 1;\n continue;\n }\n return range[2];\n }\n return 'L';\n}\nfunction computeBidiLevels(str) {\n const len = str.length;\n if (len === 0)\n return null;\n // eslint-disable-next-line unicorn/no-new-array\n const types = new Array(len);\n let sawBidi = false;\n // Keep the resolved bidi classes aligned to UTF-16 code-unit offsets,\n // because the rich prepared segments index back into the normalized string\n // with JavaScript string offsets.\n for (let i = 0; i < len;) {\n const first = str.charCodeAt(i);\n let codePoint = first;\n let codeUnitLength = 1;\n if (first >= 0xD800 && first <= 0xDBFF && i + 1 < len) {\n const second = str.charCodeAt(i + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n codeUnitLength = 2;\n }\n }\n const t = classifyCodePoint(codePoint);\n if (t === 'R' || t === 'AL' || t === 'AN')\n sawBidi = true;\n for (let j = 0; j < codeUnitLength; j++) {\n types[i + j] = t;\n }\n i += codeUnitLength;\n }\n if (!sawBidi)\n return null;\n // Use the first strong character to pick the paragraph base direction.\n // Rich-path bidi metadata is only an approximation, but this keeps mixed\n // LTR/RTL text aligned with the common UBA paragraph rule.\n let startLevel = 0;\n for (let i = 0; i < len; i++) {\n const t = types[i];\n if (t === 'L') {\n startLevel = 0;\n break;\n }\n if (t === 'R' || t === 'AL') {\n startLevel = 1;\n break;\n }\n }\n const levels = new Int8Array(len);\n for (let i = 0; i < len; i++)\n levels[i] = startLevel;\n const e = (startLevel & 1) ? 'R' : 'L';\n const sor = e;\n // W1-W7\n let lastType = sor;\n for (let i = 0; i < len; i++) {\n if (types[i] === 'NSM')\n types[i] = lastType;\n else\n lastType = types[i];\n }\n lastType = sor;\n for (let i = 0; i < len; i++) {\n const t = types[i];\n if (t === 'EN')\n types[i] = lastType === 'AL' ? 'AN' : 'EN';\n else if (t === 'R' || t === 'L' || t === 'AL')\n lastType = t;\n }\n for (let i = 0; i < len; i++) {\n if (types[i] === 'AL')\n types[i] = 'R';\n }\n for (let i = 1; i < len - 1; i++) {\n if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {\n types[i] = 'EN';\n }\n if (types[i] === 'CS' &&\n (types[i - 1] === 'EN' || types[i - 1] === 'AN') &&\n types[i + 1] === types[i - 1]) {\n types[i] = types[i - 1];\n }\n }\n for (let i = 0; i < len; i++) {\n if (types[i] !== 'EN')\n continue;\n let j;\n for (j = i - 1; j >= 0 && types[j] === 'ET'; j--)\n types[j] = 'EN';\n for (j = i + 1; j < len && types[j] === 'ET'; j++)\n types[j] = 'EN';\n }\n for (let i = 0; i < len; i++) {\n const t = types[i];\n if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS')\n types[i] = 'ON';\n }\n lastType = sor;\n for (let i = 0; i < len; i++) {\n const t = types[i];\n if (t === 'EN')\n types[i] = lastType === 'L' ? 'L' : 'EN';\n else if (t === 'R' || t === 'L')\n lastType = t;\n }\n // N1-N2\n for (let i = 0; i < len; i++) {\n if (types[i] !== 'ON')\n continue;\n let end = i + 1;\n while (end < len && types[end] === 'ON')\n end++;\n const before = i > 0 ? types[i - 1] : sor;\n const after = end < len ? types[end] : sor;\n const bDir = before !== 'L' ? 'R' : 'L';\n const aDir = after !== 'L' ? 'R' : 'L';\n if (bDir === aDir) {\n for (let j = i; j < end; j++)\n types[j] = bDir;\n }\n i = end - 1;\n }\n for (let i = 0; i < len; i++) {\n if (types[i] === 'ON')\n types[i] = e;\n }\n // I1-I2\n for (let i = 0; i < len; i++) {\n const t = types[i];\n if ((levels[i] & 1) === 0) {\n if (t === 'R')\n levels[i]++;\n else if (t === 'AN' || t === 'EN')\n levels[i] += 2;\n }\n else if (t === 'L' || t === 'AN' || t === 'EN') {\n levels[i]++;\n }\n }\n return levels;\n}\nexport function computeSegmentLevels(normalized, segStarts) {\n const bidiLevels = computeBidiLevels(normalized);\n if (bidiLevels === null)\n return null;\n const segLevels = new Int8Array(segStarts.length);\n for (let i = 0; i < segStarts.length; i++) {\n segLevels[i] = bidiLevels[segStarts[i]];\n }\n return segLevels;\n}\n","const collapsibleWhitespaceRunRe = /[ \\t\\n\\r\\f]+/g;\nconst needsWhitespaceNormalizationRe = /[\\t\\n\\r\\f]| {2,}|^ | $/;\nfunction getWhiteSpaceProfile(whiteSpace) {\n const mode = whiteSpace ?? 'normal';\n return mode === 'pre-wrap'\n ? { mode, preserveOrdinarySpaces: true, preserveHardBreaks: true }\n : { mode, preserveOrdinarySpaces: false, preserveHardBreaks: false };\n}\nexport function normalizeWhitespaceNormal(text) {\n if (!needsWhitespaceNormalizationRe.test(text))\n return text;\n let normalized = text.replace(collapsibleWhitespaceRunRe, ' ');\n if (normalized.charCodeAt(0) === 0x20) {\n normalized = normalized.slice(1);\n }\n if (normalized.length > 0 && normalized.charCodeAt(normalized.length - 1) === 0x20) {\n normalized = normalized.slice(0, -1);\n }\n return normalized;\n}\nfunction normalizeWhitespacePreWrap(text) {\n if (!/[\\r\\f]/.test(text))\n return text;\n return text\n .replace(/\\r\\n/g, '\\n')\n .replace(/[\\r\\f]/g, '\\n');\n}\nlet sharedWordSegmenter = null;\nlet segmenterLocale;\nfunction getSharedWordSegmenter() {\n if (sharedWordSegmenter === null) {\n sharedWordSegmenter = new Intl.Segmenter(segmenterLocale, { granularity: 'word' });\n }\n return sharedWordSegmenter;\n}\nexport function clearAnalysisCaches() {\n sharedWordSegmenter = null;\n}\nexport function setAnalysisLocale(locale) {\n const nextLocale = locale && locale.length > 0 ? locale : undefined;\n if (segmenterLocale === nextLocale)\n return;\n segmenterLocale = nextLocale;\n sharedWordSegmenter = null;\n}\nconst arabicScriptRe = /\\p{Script=Arabic}/u;\nconst combiningMarkRe = /\\p{M}/u;\nconst decimalDigitRe = /\\p{Nd}/u;\nfunction containsArabicScript(text) {\n return arabicScriptRe.test(text);\n}\nfunction isCJKCodePoint(codePoint) {\n return ((codePoint >= 0x4E00 && codePoint <= 0x9FFF) ||\n (codePoint >= 0x3400 && codePoint <= 0x4DBF) ||\n (codePoint >= 0x20000 && codePoint <= 0x2A6DF) ||\n (codePoint >= 0x2A700 && codePoint <= 0x2B73F) ||\n (codePoint >= 0x2B740 && codePoint <= 0x2B81F) ||\n (codePoint >= 0x2B820 && codePoint <= 0x2CEAF) ||\n (codePoint >= 0x2CEB0 && codePoint <= 0x2EBEF) ||\n (codePoint >= 0x2EBF0 && codePoint <= 0x2EE5D) ||\n (codePoint >= 0x2F800 && codePoint <= 0x2FA1F) ||\n (codePoint >= 0x30000 && codePoint <= 0x3134F) ||\n (codePoint >= 0x31350 && codePoint <= 0x323AF) ||\n (codePoint >= 0x323B0 && codePoint <= 0x33479) ||\n (codePoint >= 0xF900 && codePoint <= 0xFAFF) ||\n (codePoint >= 0x3000 && codePoint <= 0x303F) ||\n (codePoint >= 0x3040 && codePoint <= 0x309F) ||\n (codePoint >= 0x30A0 && codePoint <= 0x30FF) ||\n (codePoint >= 0x3130 && codePoint <= 0x318F) ||\n (codePoint >= 0xAC00 && codePoint <= 0xD7AF) ||\n (codePoint >= 0xFF00 && codePoint <= 0xFFEF));\n}\nexport function isCJK(s) {\n for (let i = 0; i < s.length; i++) {\n const first = s.charCodeAt(i);\n if (first < 0x3000)\n continue;\n if (first >= 0xD800 && first <= 0xDBFF && i + 1 < s.length) {\n const second = s.charCodeAt(i + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n const codePoint = ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n if (isCJKCodePoint(codePoint))\n return true;\n i++;\n continue;\n }\n }\n if (isCJKCodePoint(first))\n return true;\n }\n return false;\n}\nfunction endsWithLineStartProhibitedText(text) {\n const last = getLastCodePoint(text);\n return last !== null && (kinsokuStart.has(last) || leftStickyPunctuation.has(last));\n}\nconst keepAllGlueChars = new Set([\n '\\u00A0',\n '\\u202F',\n '\\u2060',\n '\\uFEFF',\n]);\nconst keepAllDashBreakChars = new Set([\n '-',\n '\\u2010',\n '\\u2013',\n '\\u2014',\n]);\nfunction endsWithKeepAllGlueText(text) {\n const last = getLastCodePoint(text);\n return last !== null && keepAllGlueChars.has(last);\n}\nfunction endsWithKeepAllDashBreakText(text) {\n const last = getLastCodePoint(text);\n return last !== null && keepAllDashBreakChars.has(last);\n}\nexport function canContinueKeepAllTextRun(previousText, breakAfterPunctuation) {\n if (endsWithKeepAllGlueText(previousText))\n return false;\n if (!breakAfterPunctuation)\n return true;\n if (endsWithLineStartProhibitedText(previousText))\n return false;\n if (endsWithKeepAllDashBreakText(previousText))\n return false;\n return true;\n}\nexport const kinsokuStart = new Set([\n '\\uFF0C',\n '\\uFF0E',\n '\\uFF01',\n '\\uFF1A',\n '\\uFF1B',\n '\\uFF1F',\n '\\u3001',\n '\\u3002',\n '\\u30FB',\n '\\uFF09',\n '\\u3015',\n '\\u3009',\n '\\u300B',\n '\\u300D',\n '\\u300F',\n '\\u3011',\n '\\u3017',\n '\\u3019',\n '\\u301B',\n '\\u30FC',\n '\\u3005',\n '\\u303B',\n '\\u309D',\n '\\u309E',\n '\\u30FD',\n '\\u30FE',\n]);\nexport const kinsokuEnd = new Set([\n '\"',\n '(', '[', '{',\n '¡', '¿',\n '“', '‘', '‚', '„', '«', '‹',\n '\\u2E18',\n '\\uFF08',\n '\\u3014',\n '\\u3008',\n '\\u300A',\n '\\u300C',\n '\\u300E',\n '\\u3010',\n '\\u3016',\n '\\u3018',\n '\\u301A',\n]);\nconst forwardStickyGlue = new Set([\n \"'\", '’',\n]);\nexport const leftStickyPunctuation = new Set([\n '.', ',', '!', '?', ':', ';',\n '\\u060C',\n '\\u061B',\n '\\u061F',\n '\\u0964',\n '\\u0965',\n '\\u104A',\n '\\u104B',\n '\\u104C',\n '\\u104D',\n '\\u104F',\n ')', ']', '}',\n '%',\n '\"',\n '”', '’', '»', '›',\n '…',\n]);\nconst arabicNoSpaceTrailingPunctuation = new Set([\n ':',\n '.',\n '\\u060C',\n '\\u061B',\n]);\nconst myanmarMedialGlue = new Set([\n '\\u104F',\n]);\nconst closingQuoteChars = new Set([\n '”', '’', '»', '›',\n '\\u300D',\n '\\u300F',\n '\\u3011',\n '\\u300B',\n '\\u3009',\n '\\u3015',\n '\\uFF09',\n]);\nfunction isLeftStickyPunctuationSegment(segment) {\n if (isEscapedQuoteClusterSegment(segment))\n return true;\n let sawPunctuation = false;\n for (const ch of segment) {\n if (leftStickyPunctuation.has(ch) || isLineBreakNumericAffix(ch)) {\n sawPunctuation = true;\n continue;\n }\n if (sawPunctuation && combiningMarkRe.test(ch))\n continue;\n return false;\n }\n return sawPunctuation;\n}\nfunction isCJKLineStartProhibitedSegment(segment) {\n for (const ch of segment) {\n if (!kinsokuStart.has(ch) && !leftStickyPunctuation.has(ch))\n return false;\n }\n return segment.length > 0;\n}\nfunction isForwardStickyClusterSegment(segment) {\n if (isEscapedQuoteClusterSegment(segment))\n return true;\n for (const ch of segment) {\n if (!kinsokuEnd.has(ch) &&\n !forwardStickyGlue.has(ch) &&\n !combiningMarkRe.test(ch) &&\n !isLineBreakNumericAffix(ch)) {\n return false;\n }\n }\n return segment.length > 0;\n}\nfunction isEscapedQuoteClusterSegment(segment) {\n let sawQuote = false;\n for (const ch of segment) {\n if (ch === '\\\\' || combiningMarkRe.test(ch))\n continue;\n if (kinsokuEnd.has(ch) || leftStickyPunctuation.has(ch) || forwardStickyGlue.has(ch)) {\n sawQuote = true;\n continue;\n }\n return false;\n }\n return sawQuote;\n}\nfunction previousCodePointStart(text, end) {\n const last = end - 1;\n if (last <= 0)\n return Math.max(last, 0);\n const lastCodeUnit = text.charCodeAt(last);\n if (lastCodeUnit < 0xDC00 || lastCodeUnit > 0xDFFF)\n return last;\n const maybeHigh = last - 1;\n if (maybeHigh < 0)\n return last;\n const highCodeUnit = text.charCodeAt(maybeHigh);\n return highCodeUnit >= 0xD800 && highCodeUnit <= 0xDBFF ? maybeHigh : last;\n}\nfunction getLastCodePoint(text) {\n if (text.length === 0)\n return null;\n const start = previousCodePointStart(text, text.length);\n return text.slice(start);\n}\nfunction getFirstSignificantCodePoint(text) {\n for (const ch of text) {\n if (!combiningMarkRe.test(ch))\n return ch;\n }\n return null;\n}\nfunction getLastSignificantCodePoint(text) {\n for (let end = text.length; end > 0;) {\n const start = previousCodePointStart(text, end);\n const ch = text.slice(start, end);\n if (!combiningMarkRe.test(ch))\n return ch;\n end = start;\n }\n return null;\n}\n// Unicode line-break PR/PO classes from UAX #14, stored as start/end pairs.\nconst lineBreakNumericAffixRanges = [\n 0x0024, 0x0025, 0x002B, 0x002B, 0x005C, 0x005C, 0x00A2, 0x00A5, 0x00B0, 0x00B1,\n 0x058F, 0x058F, 0x0609, 0x060B, 0x066A, 0x066A, 0x07FE, 0x07FF, 0x09F2, 0x09F3,\n 0x09F9, 0x09FB, 0x0AF1, 0x0AF1, 0x0BF9, 0x0BF9, 0x0D79, 0x0D79, 0x0E3F, 0x0E3F,\n 0x17DB, 0x17DB, 0x2030, 0x2037, 0x2057, 0x2057, 0x20A0, 0x20CF, 0x2103, 0x2103,\n 0x2109, 0x2109, 0x2116, 0x2116, 0x2212, 0x2213, 0xA838, 0xA838, 0xFDFC, 0xFDFC,\n 0xFE69, 0xFE6A, 0xFF04, 0xFF05, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE6,\n 0x11FDD, 0x11FE0, 0x1E2FF, 0x1E2FF, 0x1ECAC, 0x1ECAC, 0x1ECB0, 0x1ECB0,\n];\nfunction isCodePointInRanges(codePoint, ranges) {\n for (let i = 0; i < ranges.length; i += 2) {\n if (codePoint >= ranges[i] && codePoint <= ranges[i + 1])\n return true;\n }\n return false;\n}\nfunction isLineBreakNumericAffix(ch) {\n const codePoint = ch.codePointAt(0);\n return codePoint !== undefined && isCodePointInRanges(codePoint, lineBreakNumericAffixRanges);\n}\nfunction endsWithLineBreakNumericAffix(text) {\n const last = getLastSignificantCodePoint(text);\n return last !== null && isLineBreakNumericAffix(last);\n}\nfunction startsWithDecimalDigit(text) {\n const first = getFirstSignificantCodePoint(text);\n return first !== null && decimalDigitRe.test(first);\n}\nfunction splitTrailingForwardStickyCluster(text) {\n const chars = Array.from(text);\n let splitIndex = chars.length;\n while (splitIndex > 0) {\n const ch = chars[splitIndex - 1];\n if (combiningMarkRe.test(ch)) {\n splitIndex--;\n continue;\n }\n if (kinsokuEnd.has(ch) || forwardStickyGlue.has(ch)) {\n splitIndex--;\n continue;\n }\n break;\n }\n if (splitIndex <= 0 || splitIndex === chars.length)\n return null;\n return {\n head: chars.slice(0, splitIndex).join(''),\n tail: chars.slice(splitIndex).join(''),\n };\n}\nfunction getRepeatableSingleCharRunChar(text, isWordLike, kind) {\n return kind === 'text' && !isWordLike && text.length === 1 && text !== '-' && text !== '—'\n ? text\n : null;\n}\nfunction materializeDeferredSingleCharRun(texts, chars, lengths, index) {\n const ch = chars[index];\n const text = texts[index];\n if (ch == null)\n return text;\n const length = lengths[index];\n if (text.length === length)\n return text;\n const materialized = ch.repeat(length);\n texts[index] = materialized;\n return materialized;\n}\nfunction hasArabicNoSpacePunctuation(containsArabic, lastCodePoint) {\n return containsArabic && lastCodePoint !== null && arabicNoSpaceTrailingPunctuation.has(lastCodePoint);\n}\nfunction endsWithMyanmarMedialGlue(segment) {\n const lastCodePoint = getLastCodePoint(segment);\n return lastCodePoint !== null && myanmarMedialGlue.has(lastCodePoint);\n}\nfunction splitLeadingSpaceAndMarks(segment) {\n if (segment.length < 2 || segment[0] !== ' ')\n return null;\n const marks = segment.slice(1);\n if (/^\\p{M}+$/u.test(marks)) {\n return { space: ' ', marks };\n }\n return null;\n}\nexport function endsWithClosingQuote(text) {\n let end = text.length;\n while (end > 0) {\n const start = previousCodePointStart(text, end);\n const ch = text.slice(start, end);\n if (closingQuoteChars.has(ch))\n return true;\n if (!leftStickyPunctuation.has(ch))\n return false;\n end = start;\n }\n return false;\n}\nfunction classifySegmentBreakChar(ch, whiteSpaceProfile) {\n if (whiteSpaceProfile.preserveOrdinarySpaces || whiteSpaceProfile.preserveHardBreaks) {\n if (ch === ' ')\n return 'preserved-space';\n if (ch === '\\t')\n return 'tab';\n if (whiteSpaceProfile.preserveHardBreaks && ch === '\\n')\n return 'hard-break';\n }\n if (ch === ' ')\n return 'space';\n if (ch === '\\u00A0' || ch === '\\u202F' || ch === '\\u2060' || ch === '\\uFEFF') {\n return 'glue';\n }\n if (ch === '\\u200B')\n return 'zero-width-break';\n if (ch === '\\u00AD')\n return 'soft-hyphen';\n return 'text';\n}\n// All characters that classifySegmentBreakChar maps to a non-'text' kind.\nconst breakCharRe = /[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;\nfunction joinTextParts(parts) {\n return parts.length === 1 ? parts[0] : parts.join('');\n}\nfunction joinReversedPrefixParts(prefixParts, tail) {\n const parts = [];\n for (let i = prefixParts.length - 1; i >= 0; i--) {\n parts.push(prefixParts[i]);\n }\n parts.push(tail);\n return joinTextParts(parts);\n}\nfunction splitSegmentByBreakKind(segment, isWordLike, start, whiteSpaceProfile) {\n if (!breakCharRe.test(segment)) {\n return [{ text: segment, isWordLike, kind: 'text', start }];\n }\n const pieces = [];\n let currentKind = null;\n let currentTextParts = [];\n let currentStart = start;\n let currentWordLike = false;\n let offset = 0;\n for (const ch of segment) {\n const kind = classifySegmentBreakChar(ch, whiteSpaceProfile);\n const wordLike = kind === 'text' && isWordLike;\n if (currentKind !== null && kind === currentKind && wordLike === currentWordLike) {\n currentTextParts.push(ch);\n offset += ch.length;\n continue;\n }\n if (currentKind !== null) {\n pieces.push({\n text: joinTextParts(currentTextParts),\n isWordLike: currentWordLike,\n kind: currentKind,\n start: currentStart,\n });\n }\n currentKind = kind;\n currentTextParts = [ch];\n currentStart = start + offset;\n currentWordLike = wordLike;\n offset += ch.length;\n }\n if (currentKind !== null) {\n pieces.push({\n text: joinTextParts(currentTextParts),\n isWordLike: currentWordLike,\n kind: currentKind,\n start: currentStart,\n });\n }\n return pieces;\n}\nfunction isTextRunBoundary(kind) {\n return (kind === 'space' ||\n kind === 'preserved-space' ||\n kind === 'zero-width-break' ||\n kind === 'hard-break');\n}\nconst urlSchemeSegmentRe = /^[A-Za-z][A-Za-z0-9+.-]*:$/;\nfunction isUrlLikeRunStart(segmentation, index) {\n const text = segmentation.texts[index];\n if (text.startsWith('www.'))\n return true;\n return (urlSchemeSegmentRe.test(text) &&\n index + 1 < segmentation.len &&\n segmentation.kinds[index + 1] === 'text' &&\n segmentation.texts[index + 1] === '//');\n}\nfunction isUrlQueryBoundarySegment(text) {\n return text.includes('?') && (text.includes('://') || text.startsWith('www.'));\n}\nfunction mergeUrlLikeRuns(segmentation) {\n const texts = segmentation.texts.slice();\n const isWordLike = segmentation.isWordLike.slice();\n const kinds = segmentation.kinds.slice();\n const starts = segmentation.starts.slice();\n for (let i = 0; i < segmentation.len; i++) {\n if (kinds[i] !== 'text' || !isUrlLikeRunStart(segmentation, i))\n continue;\n const mergedParts = [texts[i]];\n let j = i + 1;\n while (j < segmentation.len && !isTextRunBoundary(kinds[j])) {\n mergedParts.push(texts[j]);\n isWordLike[i] = true;\n const endsQueryPrefix = texts[j].includes('?');\n kinds[j] = 'text';\n texts[j] = '';\n j++;\n if (endsQueryPrefix)\n break;\n }\n texts[i] = joinTextParts(mergedParts);\n }\n let compactLen = 0;\n for (let read = 0; read < texts.length; read++) {\n const text = texts[read];\n if (text.length === 0)\n continue;\n if (compactLen !== read) {\n texts[compactLen] = text;\n isWordLike[compactLen] = isWordLike[read];\n kinds[compactLen] = kinds[read];\n starts[compactLen] = starts[read];\n }\n compactLen++;\n }\n texts.length = compactLen;\n isWordLike.length = compactLen;\n kinds.length = compactLen;\n starts.length = compactLen;\n return {\n len: compactLen,\n texts,\n isWordLike,\n kinds,\n starts,\n };\n}\nfunction mergeUrlQueryRuns(segmentation) {\n const texts = [];\n const isWordLike = [];\n const kinds = [];\n const starts = [];\n for (let i = 0; i < segmentation.len; i++) {\n const text = segmentation.texts[i];\n texts.push(text);\n isWordLike.push(segmentation.isWordLike[i]);\n kinds.push(segmentation.kinds[i]);\n starts.push(segmentation.starts[i]);\n if (!isUrlQueryBoundarySegment(text))\n continue;\n const nextIndex = i + 1;\n if (nextIndex >= segmentation.len ||\n isTextRunBoundary(segmentation.kinds[nextIndex])) {\n continue;\n }\n const queryParts = [];\n const queryStart = segmentation.starts[nextIndex];\n let j = nextIndex;\n while (j < segmentation.len && !isTextRunBoundary(segmentation.kinds[j])) {\n queryParts.push(segmentation.texts[j]);\n j++;\n }\n if (queryParts.length > 0) {\n texts.push(joinTextParts(queryParts));\n isWordLike.push(true);\n kinds.push('text');\n starts.push(queryStart);\n i = j - 1;\n }\n }\n return {\n len: texts.length,\n texts,\n isWordLike,\n kinds,\n starts,\n };\n}\nconst numericJoinerChars = new Set([\n ':', '-', '/', '×', ',', '.', '+',\n '\\u2013',\n '\\u2014',\n]);\nconst noSpacePunctuationChainJoiners = new Set(['.', ',', ':', ';']);\nfunction endsWithNoSpacePunctuationChainJoiner(text) {\n for (let end = text.length; end > 0;) {\n const start = previousCodePointStart(text, end);\n const ch = text.slice(start, end);\n if (combiningMarkRe.test(ch)) {\n end = start;\n continue;\n }\n return noSpacePunctuationChainJoiners.has(ch) || isLineBreakNumericAffix(ch);\n }\n return false;\n}\nfunction isNoSpacePunctuationChainSegment(text, wordLike) {\n return wordLike && !isCJK(text);\n}\nfunction segmentContainsDecimalDigit(text) {\n for (const ch of text) {\n if (decimalDigitRe.test(ch))\n return true;\n }\n return false;\n}\nexport function isNumericRunSegment(text) {\n if (text.length === 0)\n return false;\n for (const ch of text) {\n if (decimalDigitRe.test(ch) || numericJoinerChars.has(ch))\n continue;\n return false;\n }\n return true;\n}\nfunction mergeNumericRuns(segmentation) {\n const texts = [];\n const isWordLike = [];\n const kinds = [];\n const starts = [];\n for (let i = 0; i < segmentation.len; i++) {\n const text = segmentation.texts[i];\n const kind = segmentation.kinds[i];\n if (kind === 'text' && isNumericRunSegment(text) && segmentContainsDecimalDigit(text)) {\n const mergedParts = [text];\n let j = i + 1;\n while (j < segmentation.len &&\n segmentation.kinds[j] === 'text' &&\n isNumericRunSegment(segmentation.texts[j])) {\n mergedParts.push(segmentation.texts[j]);\n j++;\n }\n texts.push(joinTextParts(mergedParts));\n isWordLike.push(true);\n kinds.push('text');\n starts.push(segmentation.starts[i]);\n i = j - 1;\n continue;\n }\n texts.push(text);\n isWordLike.push(segmentation.isWordLike[i]);\n kinds.push(kind);\n starts.push(segmentation.starts[i]);\n }\n return {\n len: texts.length,\n texts,\n isWordLike,\n kinds,\n starts,\n };\n}\nfunction mergeNoSpacePunctuationChains(segmentation) {\n const texts = [];\n const isWordLike = [];\n const kinds = [];\n const starts = [];\n for (let i = 0; i < segmentation.len; i++) {\n const text = segmentation.texts[i];\n const kind = segmentation.kinds[i];\n const wordLike = segmentation.isWordLike[i];\n if (kind === 'text' &&\n endsWithNoSpacePunctuationChainJoiner(text) &&\n (wordLike || endsWithLineBreakNumericAffix(text)) &&\n !isCJK(text)) {\n const mergedParts = [text];\n let endsWithJoiners = true;\n let j = i + 1;\n while (endsWithJoiners &&\n j < segmentation.len &&\n segmentation.kinds[j] === 'text' &&\n isNoSpacePunctuationChainSegment(segmentation.texts[j], segmentation.isWordLike[j])) {\n const nextText = segmentation.texts[j];\n mergedParts.push(nextText);\n endsWithJoiners = endsWithNoSpacePunctuationChainJoiner(nextText);\n j++;\n }\n texts.push(joinTextParts(mergedParts));\n isWordLike.push(true);\n kinds.push('text');\n starts.push(segmentation.starts[i]);\n i = j - 1;\n continue;\n }\n texts.push(text);\n isWordLike.push(wordLike);\n kinds.push(kind);\n starts.push(segmentation.starts[i]);\n }\n return {\n len: texts.length,\n texts,\n isWordLike,\n kinds,\n starts,\n };\n}\nfunction splitHyphenatedNumericRuns(segmentation) {\n const texts = [];\n const isWordLike = [];\n const kinds = [];\n const starts = [];\n for (let i = 0; i < segmentation.len; i++) {\n const text = segmentation.texts[i];\n if (segmentation.kinds[i] === 'text' && text.includes('-')) {\n const parts = text.split('-');\n let shouldSplit = parts.length > 1;\n for (let j = 0; j < parts.length; j++) {\n const part = parts[j];\n if (!shouldSplit)\n break;\n if (part.length === 0 ||\n !segmentContainsDecimalDigit(part) ||\n !isNumericRunSegment(part)) {\n shouldSplit = false;\n }\n }\n if (shouldSplit) {\n let offset = 0;\n for (let j = 0; j < parts.length; j++) {\n const part = parts[j];\n const splitText = j < parts.length - 1 ? `${part}-` : part;\n texts.push(splitText);\n isWordLike.push(true);\n kinds.push('text');\n starts.push(segmentation.starts[i] + offset);\n offset += splitText.length;\n }\n continue;\n }\n }\n texts.push(text);\n isWordLike.push(segmentation.isWordLike[i]);\n kinds.push(segmentation.kinds[i]);\n starts.push(segmentation.starts[i]);\n }\n return {\n len: texts.length,\n texts,\n isWordLike,\n kinds,\n starts,\n };\n}\nfunction mergeGlueConnectedTextRuns(segmentation) {\n const texts = [];\n const isWordLike = [];\n const kinds = [];\n const starts = [];\n let read = 0;\n while (read < segmentation.len) {\n const textParts = [segmentation.texts[read]];\n let wordLike = segmentation.isWordLike[read];\n let kind = segmentation.kinds[read];\n let start = segmentation.starts[read];\n if (kind === 'glue') {\n const glueParts = [textParts[0]];\n const glueStart = start;\n read++;\n while (read < segmentation.len && segmentation.kinds[read] === 'glue') {\n glueParts.push(segmentation.texts[read]);\n read++;\n }\n const glueText = joinTextParts(glueParts);\n if (read < segmentation.len && segmentation.kinds[read] === 'text') {\n textParts[0] = glueText;\n textParts.push(segmentation.texts[read]);\n wordLike = segmentation.isWordLike[read];\n kind = 'text';\n start = glueStart;\n read++;\n }\n else {\n texts.push(glueText);\n isWordLike.push(false);\n kinds.push('glue');\n starts.push(glueStart);\n continue;\n }\n }\n else {\n read++;\n }\n if (kind === 'text') {\n while (read < segmentation.len && segmentation.kinds[read] === 'glue') {\n const glueParts = [];\n while (read < segmentation.len && segmentation.kinds[read] === 'glue') {\n glueParts.push(segmentation.texts[read]);\n read++;\n }\n const glueText = joinTextParts(glueParts);\n if (read < segmentation.len && segmentation.kinds[read] === 'text') {\n textParts.push(glueText, segmentation.texts[read]);\n wordLike = wordLike || segmentation.isWordLike[read];\n read++;\n continue;\n }\n textParts.push(glueText);\n }\n }\n texts.push(joinTextParts(textParts));\n isWordLike.push(wordLike);\n kinds.push(kind);\n starts.push(start);\n }\n return {\n len: texts.length,\n texts,\n isWordLike,\n kinds,\n starts,\n };\n}\nfunction carryTrailingForwardStickyAcrossCJKBoundary(segmentation) {\n const texts = segmentation.texts.slice();\n const isWordLike = segmentation.isWordLike.slice();\n const kinds = segmentation.kinds.slice();\n const starts = segmentation.starts.slice();\n for (let i = 0; i < texts.length - 1; i++) {\n if (kinds[i] !== 'text' || kinds[i + 1] !== 'text')\n continue;\n if (!isCJK(texts[i]) || !isCJK(texts[i + 1]))\n continue;\n const split = splitTrailingForwardStickyCluster(texts[i]);\n if (split === null)\n continue;\n texts[i] = split.head;\n texts[i + 1] = split.tail + texts[i + 1];\n starts[i + 1] = starts[i] + split.head.length;\n }\n return {\n len: texts.length,\n texts,\n isWordLike,\n kinds,\n starts,\n };\n}\nfunction buildMergedSegmentation(normalized, profile, whiteSpaceProfile) {\n const wordSegmenter = getSharedWordSegmenter();\n let mergedLen = 0;\n const mergedTexts = [];\n const mergedTextParts = [];\n const mergedWordLike = [];\n const mergedKinds = [];\n const mergedStarts = [];\n // Track repeatable single-char punctuation runs structurally so identical\n // merges stay O(1) instead of re-scanning the accumulated segment each time.\n const mergedSingleCharRunChars = [];\n const mergedSingleCharRunLengths = [];\n const mergedContainsCJK = [];\n const mergedContainsArabicScript = [];\n const mergedEndsWithClosingQuote = [];\n const mergedEndsWithMyanmarMedialGlue = [];\n const mergedHasArabicNoSpacePunctuation = [];\n for (const s of wordSegmenter.segment(normalized)) {\n for (const piece of splitSegmentByBreakKind(s.segment, s.isWordLike ?? false, s.index, whiteSpaceProfile)) {\n const isText = piece.kind === 'text';\n const repeatableSingleCharRunChar = getRepeatableSingleCharRunChar(piece.text, piece.isWordLike, piece.kind);\n const pieceContainsCJK = isCJK(piece.text);\n const pieceContainsArabicScript = containsArabicScript(piece.text);\n const pieceLastCodePoint = getLastCodePoint(piece.text);\n const pieceEndsWithClosingQuote = endsWithClosingQuote(piece.text);\n const pieceEndsWithMyanmarMedialGlue = endsWithMyanmarMedialGlue(piece.text);\n const prevIndex = mergedLen - 1;\n function appendPieceToPrevious() {\n if (mergedSingleCharRunChars[prevIndex] !== null) {\n mergedTextParts[prevIndex] = [\n materializeDeferredSingleCharRun(mergedTexts, mergedSingleCharRunChars, mergedSingleCharRunLengths, prevIndex),\n ];\n mergedSingleCharRunChars[prevIndex] = null;\n }\n mergedTextParts[prevIndex].push(piece.text);\n mergedWordLike[prevIndex] = mergedWordLike[prevIndex] || piece.isWordLike;\n mergedContainsCJK[prevIndex] = mergedContainsCJK[prevIndex] || pieceContainsCJK;\n mergedContainsArabicScript[prevIndex] =\n mergedContainsArabicScript[prevIndex] || pieceContainsArabicScript;\n mergedEndsWithClosingQuote[prevIndex] = pieceEndsWithClosingQuote;\n mergedEndsWithMyanmarMedialGlue[prevIndex] = pieceEndsWithMyanmarMedialGlue;\n mergedHasArabicNoSpacePunctuation[prevIndex] = hasArabicNoSpacePunctuation(mergedContainsArabicScript[prevIndex], pieceLastCodePoint);\n }\n // First-pass keeps: no-space script-specific joins and punctuation glue\n // that depend on the immediately preceding text run.\n if (profile.carryCJKAfterClosingQuote &&\n isText &&\n mergedLen > 0 &&\n mergedKinds[prevIndex] === 'text' &&\n pieceContainsCJK &&\n mergedContainsCJK[prevIndex] &&\n mergedEndsWithClosingQuote[prevIndex]) {\n appendPieceToPrevious();\n }\n else if (isText &&\n mergedLen > 0 &&\n mergedKinds[prevIndex] === 'text' &&\n isCJKLineStartProhibitedSegment(piece.text) &&\n mergedContainsCJK[prevIndex]) {\n appendPieceToPrevious();\n }\n else if (isText &&\n mergedLen > 0 &&\n mergedKinds[prevIndex] === 'text' &&\n mergedEndsWithMyanmarMedialGlue[prevIndex]) {\n appendPieceToPrevious();\n }\n else if (isText &&\n mergedLen > 0 &&\n mergedKinds[prevIndex] === 'text' &&\n piece.isWordLike &&\n pieceContainsArabicScript &&\n mergedHasArabicNoSpacePunctuation[prevIndex]) {\n appendPieceToPrevious();\n mergedWordLike[prevIndex] = true;\n }\n else if (repeatableSingleCharRunChar !== null &&\n mergedLen > 0 &&\n mergedKinds[prevIndex] === 'text' &&\n mergedSingleCharRunChars[prevIndex] === repeatableSingleCharRunChar) {\n mergedSingleCharRunLengths[prevIndex] = (mergedSingleCharRunLengths[prevIndex] ?? 1) + 1;\n }\n else if (isText &&\n !piece.isWordLike &&\n mergedLen > 0 &&\n mergedKinds[prevIndex] === 'text' &&\n !mergedContainsCJK[prevIndex] &&\n (isLeftStickyPunctuationSegment(piece.text) ||\n (piece.text === '-' && mergedWordLike[prevIndex]))) {\n appendPieceToPrevious();\n }\n else {\n mergedTexts[mergedLen] = piece.text;\n mergedTextParts[mergedLen] = [piece.text];\n mergedWordLike[mergedLen] = piece.isWordLike;\n mergedKinds[mergedLen] = piece.kind;\n mergedStarts[mergedLen] = piece.start;\n mergedSingleCharRunChars[mergedLen] = repeatableSingleCharRunChar;\n mergedSingleCharRunLengths[mergedLen] = repeatableSingleCharRunChar === null ? 0 : 1;\n mergedContainsCJK[mergedLen] = pieceContainsCJK;\n mergedContainsArabicScript[mergedLen] = pieceContainsArabicScript;\n mergedEndsWithClosingQuote[mergedLen] = pieceEndsWithClosingQuote;\n mergedEndsWithMyanmarMedialGlue[mergedLen] = pieceEndsWithMyanmarMedialGlue;\n mergedHasArabicNoSpacePunctuation[mergedLen] = hasArabicNoSpacePunctuation(pieceContainsArabicScript, pieceLastCodePoint);\n mergedLen++;\n }\n }\n }\n for (let i = 0; i < mergedLen; i++) {\n if (mergedSingleCharRunChars[i] !== null) {\n mergedTexts[i] = materializeDeferredSingleCharRun(mergedTexts, mergedSingleCharRunChars, mergedSingleCharRunLengths, i);\n continue;\n }\n mergedTexts[i] = joinTextParts(mergedTextParts[i]);\n }\n // Later passes operate on the merged text stream itself: contextual escaped\n // quote glue, forward-sticky carry, compaction, then the broader URL/numeric\n // and Arabic-leading-mark fixes.\n for (let i = 1; i < mergedLen; i++) {\n if (mergedKinds[i] === 'text' &&\n !mergedWordLike[i] &&\n isEscapedQuoteClusterSegment(mergedTexts[i]) &&\n mergedKinds[i - 1] === 'text' &&\n !mergedContainsCJK[i - 1]) {\n mergedTexts[i - 1] += mergedTexts[i];\n mergedWordLike[i - 1] = mergedWordLike[i - 1] || mergedWordLike[i];\n mergedTexts[i] = '';\n }\n }\n const forwardStickyPrefixParts = Array.from({ length: mergedLen }, () => null);\n let nextLiveIndex = -1;\n for (let i = mergedLen - 1; i >= 0; i--) {\n const text = mergedTexts[i];\n if (text.length === 0)\n continue;\n if (mergedKinds[i] === 'text' &&\n !mergedWordLike[i] &&\n nextLiveIndex >= 0 &&\n mergedKinds[nextLiveIndex] === 'text' &&\n (isForwardStickyClusterSegment(text) ||\n (text === '-' && startsWithDecimalDigit(mergedTexts[nextLiveIndex])))) {\n const prefixParts = forwardStickyPrefixParts[nextLiveIndex] ?? [];\n prefixParts.push(text);\n forwardStickyPrefixParts[nextLiveIndex] = prefixParts;\n mergedStarts[nextLiveIndex] = mergedStarts[i];\n mergedTexts[i] = '';\n continue;\n }\n nextLiveIndex = i;\n }\n for (let i = 0; i < mergedLen; i++) {\n const prefixParts = forwardStickyPrefixParts[i];\n if (prefixParts == null)\n continue;\n mergedTexts[i] = joinReversedPrefixParts(prefixParts, mergedTexts[i]);\n }\n let compactLen = 0;\n for (let read = 0; read < mergedLen; read++) {\n const text = mergedTexts[read];\n if (text.length === 0)\n continue;\n if (compactLen !== read) {\n mergedTexts[compactLen] = text;\n mergedWordLike[compactLen] = mergedWordLike[read];\n mergedKinds[compactLen] = mergedKinds[read];\n mergedStarts[compactLen] = mergedStarts[read];\n }\n compactLen++;\n }\n mergedTexts.length = compactLen;\n mergedWordLike.length = compactLen;\n mergedKinds.length = compactLen;\n mergedStarts.length = compactLen;\n const compacted = mergeGlueConnectedTextRuns({\n len: compactLen,\n texts: mergedTexts,\n isWordLike: mergedWordLike,\n kinds: mergedKinds,\n starts: mergedStarts,\n });\n const withMergedUrls = carryTrailingForwardStickyAcrossCJKBoundary(mergeNoSpacePunctuationChains(splitHyphenatedNumericRuns(mergeNumericRuns(mergeUrlQueryRuns(mergeUrlLikeRuns(compacted))))));\n for (let i = 0; i < withMergedUrls.len - 1; i++) {\n const split = splitLeadingSpaceAndMarks(withMergedUrls.texts[i]);\n if (split === null)\n continue;\n if ((withMergedUrls.kinds[i] !== 'space' && withMergedUrls.kinds[i] !== 'preserved-space') ||\n withMergedUrls.kinds[i + 1] !== 'text' ||\n !containsArabicScript(withMergedUrls.texts[i + 1])) {\n continue;\n }\n withMergedUrls.texts[i] = split.space;\n withMergedUrls.isWordLike[i] = false;\n withMergedUrls.kinds[i] = withMergedUrls.kinds[i] === 'preserved-space' ? 'preserved-space' : 'space';\n withMergedUrls.texts[i + 1] = split.marks + withMergedUrls.texts[i + 1];\n withMergedUrls.starts[i + 1] = withMergedUrls.starts[i] + split.space.length;\n }\n return withMergedUrls;\n}\nfunction compileAnalysisChunks(segmentation, whiteSpaceProfile) {\n if (segmentation.len === 0)\n return [];\n if (!whiteSpaceProfile.preserveHardBreaks) {\n return [{\n startSegmentIndex: 0,\n endSegmentIndex: segmentation.len,\n consumedEndSegmentIndex: segmentation.len,\n }];\n }\n const chunks = [];\n let startSegmentIndex = 0;\n for (let i = 0; i < segmentation.len; i++) {\n if (segmentation.kinds[i] !== 'hard-break')\n continue;\n chunks.push({\n startSegmentIndex,\n endSegmentIndex: i,\n consumedEndSegmentIndex: i + 1,\n });\n startSegmentIndex = i + 1;\n }\n if (startSegmentIndex < segmentation.len) {\n chunks.push({\n startSegmentIndex,\n endSegmentIndex: segmentation.len,\n consumedEndSegmentIndex: segmentation.len,\n });\n }\n return chunks;\n}\nfunction mergeKeepAllTextSegments(normalized, segmentation, breakAfterPunctuation) {\n if (segmentation.len <= 1)\n return segmentation;\n const texts = [];\n const isWordLike = [];\n const kinds = [];\n const starts = [];\n let groupStart = -1;\n let groupContainsCJK = false;\n function pushOriginalText(index) {\n texts.push(segmentation.texts[index]);\n isWordLike.push(segmentation.isWordLike[index]);\n kinds.push('text');\n starts.push(segmentation.starts[index]);\n }\n function pushMergedText(start, end) {\n let wordLike = false;\n for (let i = start; i < end; i++) {\n wordLike = wordLike || segmentation.isWordLike[i];\n }\n const sourceStart = segmentation.starts[start];\n const sourceEnd = end < segmentation.len ? segmentation.starts[end] : normalized.length;\n texts.push(normalized.slice(sourceStart, sourceEnd));\n isWordLike.push(wordLike);\n kinds.push('text');\n starts.push(sourceStart);\n }\n function flushGroup(end) {\n if (groupStart < 0)\n return;\n if (groupContainsCJK) {\n if (groupStart + 1 === end) {\n pushOriginalText(groupStart);\n }\n else {\n pushMergedText(groupStart, end);\n }\n }\n else {\n for (let i = groupStart; i < end; i++)\n pushOriginalText(i);\n }\n groupStart = -1;\n groupContainsCJK = false;\n }\n for (let i = 0; i < segmentation.len; i++) {\n const text = segmentation.texts[i];\n const kind = segmentation.kinds[i];\n if (kind === 'text') {\n if (groupStart >= 0 &&\n !canContinueKeepAllTextRun(segmentation.texts[i - 1], breakAfterPunctuation)) {\n flushGroup(i);\n }\n if (groupStart < 0)\n groupStart = i;\n groupContainsCJK = groupContainsCJK || isCJK(text);\n continue;\n }\n flushGroup(i);\n texts.push(text);\n isWordLike.push(segmentation.isWordLike[i]);\n kinds.push(kind);\n starts.push(segmentation.starts[i]);\n }\n flushGroup(segmentation.len);\n return {\n len: texts.length,\n texts,\n isWordLike,\n kinds,\n starts,\n };\n}\nexport function analyzeText(text, profile, whiteSpace = 'normal', wordBreak = 'normal') {\n const whiteSpaceProfile = getWhiteSpaceProfile(whiteSpace);\n const normalized = whiteSpaceProfile.mode === 'pre-wrap'\n ? normalizeWhitespacePreWrap(text)\n : normalizeWhitespaceNormal(text);\n if (normalized.length === 0) {\n return {\n normalized,\n chunks: [],\n len: 0,\n texts: [],\n isWordLike: [],\n kinds: [],\n starts: [],\n };\n }\n const mergedSegmentation = buildMergedSegmentation(normalized, profile, whiteSpaceProfile);\n const segmentation = wordBreak === 'keep-all'\n ? mergeKeepAllTextSegments(normalized, mergedSegmentation, profile.breakKeepAllAfterPunctuation)\n : mergedSegmentation;\n return {\n normalized,\n chunks: compileAnalysisChunks(segmentation, whiteSpaceProfile),\n ...segmentation,\n };\n}\n","import { isCJK } from './analysis.js';\nlet measureContext = null;\nconst segmentMetricCaches = new Map();\nlet cachedEngineProfile = null;\n// Safari's prefix-fit policy is useful for ordinary word-sized runs, but letting\n// it measure every growing prefix of a giant segment recreates a pathological\n// superlinear prepare-time path. Past this size, switch to the cheaper\n// pair-context model and keep the public behavior linear.\nconst MAX_PREFIX_FIT_GRAPHEMES = 96;\nconst emojiPresentationRe = /\\p{Emoji_Presentation}/u;\nconst maybeEmojiRe = /[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u;\nlet sharedGraphemeSegmenter = null;\nconst emojiCorrectionCache = new Map();\nexport function getMeasureContext() {\n if (measureContext !== null)\n return measureContext;\n if (typeof OffscreenCanvas !== 'undefined') {\n measureContext = new OffscreenCanvas(1, 1).getContext('2d');\n return measureContext;\n }\n if (typeof document !== 'undefined') {\n measureContext = document.createElement('canvas').getContext('2d');\n return measureContext;\n }\n throw new Error('Text measurement requires OffscreenCanvas or a DOM canvas context.');\n}\nexport function getSegmentMetricCache(font) {\n let cache = segmentMetricCaches.get(font);\n if (!cache) {\n cache = new Map();\n segmentMetricCaches.set(font, cache);\n }\n return cache;\n}\nexport function getSegmentMetrics(seg, cache) {\n let metrics = cache.get(seg);\n if (metrics === undefined) {\n const ctx = getMeasureContext();\n metrics = {\n width: ctx.measureText(seg).width,\n containsCJK: isCJK(seg),\n };\n cache.set(seg, metrics);\n }\n return metrics;\n}\nexport function getEngineProfile() {\n if (cachedEngineProfile !== null)\n return cachedEngineProfile;\n if (typeof navigator === 'undefined') {\n cachedEngineProfile = {\n lineFitEpsilon: 0.005,\n carryCJKAfterClosingQuote: false,\n breakKeepAllAfterPunctuation: true,\n preferPrefixWidthsForBreakableRuns: false,\n preferEarlySoftHyphenBreak: false,\n };\n return cachedEngineProfile;\n }\n const ua = navigator.userAgent;\n const vendor = navigator.vendor;\n const isSafari = vendor === 'Apple Computer, Inc.' &&\n ua.includes('Safari/') &&\n !ua.includes('Chrome/') &&\n !ua.includes('Chromium/') &&\n !ua.includes('CriOS/') &&\n !ua.includes('FxiOS/') &&\n !ua.includes('EdgiOS/');\n const isChromium = ua.includes('Chrome/') ||\n ua.includes('Chromium/') ||\n ua.includes('CriOS/') ||\n ua.includes('Edg/');\n cachedEngineProfile = {\n lineFitEpsilon: isSafari ? 1 / 64 : 0.005,\n carryCJKAfterClosingQuote: isChromium,\n breakKeepAllAfterPunctuation: !isSafari,\n preferPrefixWidthsForBreakableRuns: isSafari,\n preferEarlySoftHyphenBreak: isSafari,\n };\n return cachedEngineProfile;\n}\nexport function parseFontSize(font) {\n const m = font.match(/(\\d+(?:\\.\\d+)?)\\s*px/);\n return m ? parseFloat(m[1]) : 16;\n}\nfunction getSharedGraphemeSegmenter() {\n if (sharedGraphemeSegmenter === null) {\n sharedGraphemeSegmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n }\n return sharedGraphemeSegmenter;\n}\nfunction isEmojiGrapheme(g) {\n return emojiPresentationRe.test(g) || g.includes('\\uFE0F');\n}\nexport function textMayContainEmoji(text) {\n return maybeEmojiRe.test(text);\n}\nfunction getEmojiCorrection(font, fontSize) {\n let correction = emojiCorrectionCache.get(font);\n if (correction !== undefined)\n return correction;\n const ctx = getMeasureContext();\n ctx.font = font;\n const canvasW = ctx.measureText('\\u{1F600}').width;\n correction = 0;\n if (canvasW > fontSize + 0.5 &&\n typeof document !== 'undefined' &&\n document.body !== null) {\n const span = document.createElement('span');\n span.style.font = font;\n span.style.display = 'inline-block';\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.textContent = '\\u{1F600}';\n document.body.appendChild(span);\n const domW = span.getBoundingClientRect().width;\n document.body.removeChild(span);\n if (canvasW - domW > 0.5) {\n correction = canvasW - domW;\n }\n }\n emojiCorrectionCache.set(font, correction);\n return correction;\n}\nfunction countEmojiGraphemes(text) {\n let count = 0;\n const graphemeSegmenter = getSharedGraphemeSegmenter();\n for (const g of graphemeSegmenter.segment(text)) {\n if (isEmojiGrapheme(g.segment))\n count++;\n }\n return count;\n}\nfunction getEmojiCount(seg, metrics) {\n if (metrics.emojiCount === undefined) {\n metrics.emojiCount = countEmojiGraphemes(seg);\n }\n return metrics.emojiCount;\n}\nexport function getCorrectedSegmentWidth(seg, metrics, emojiCorrection) {\n if (emojiCorrection === 0)\n return metrics.width;\n return metrics.width - getEmojiCount(seg, metrics) * emojiCorrection;\n}\nexport function getSegmentGraphemeWidths(seg, cache, emojiCorrection) {\n const widths = [];\n const graphemeSegmenter = getSharedGraphemeSegmenter();\n for (const gs of graphemeSegmenter.segment(seg)) {\n const graphemeMetrics = getSegmentMetrics(gs.segment, cache);\n widths.push(getCorrectedSegmentWidth(gs.segment, graphemeMetrics, emojiCorrection));\n }\n return widths.length > 1 ? widths : null;\n}\nexport function getSegmentBreakableFitAdvances(seg, metrics, cache, emojiCorrection, mode) {\n if (metrics.breakableFitAdvances !== undefined && metrics.breakableFitMode === mode) {\n return metrics.breakableFitAdvances;\n }\n metrics.breakableFitMode = mode;\n const graphemeSegmenter = getSharedGraphemeSegmenter();\n const graphemes = [];\n for (const gs of graphemeSegmenter.segment(seg)) {\n graphemes.push(gs.segment);\n }\n if (graphemes.length <= 1) {\n metrics.breakableFitAdvances = null;\n return metrics.breakableFitAdvances;\n }\n if (mode === 'sum-graphemes') {\n const advances = [];\n for (const grapheme of graphemes) {\n const graphemeMetrics = getSegmentMetrics(grapheme, cache);\n advances.push(getCorrectedSegmentWidth(grapheme, graphemeMetrics, emojiCorrection));\n }\n metrics.breakableFitAdvances = advances;\n return metrics.breakableFitAdvances;\n }\n if (mode === 'pair-context' || graphemes.length > MAX_PREFIX_FIT_GRAPHEMES) {\n const advances = [];\n let previousGrapheme = null;\n let previousWidth = 0;\n for (const grapheme of graphemes) {\n const graphemeMetrics = getSegmentMetrics(grapheme, cache);\n const currentWidth = getCorrectedSegmentWidth(grapheme, graphemeMetrics, emojiCorrection);\n if (previousGrapheme === null) {\n advances.push(currentWidth);\n }\n else {\n const pair = previousGrapheme + grapheme;\n const pairMetrics = getSegmentMetrics(pair, cache);\n advances.push(getCorrectedSegmentWidth(pair, pairMetrics, emojiCorrection) - previousWidth);\n }\n previousGrapheme = grapheme;\n previousWidth = currentWidth;\n }\n metrics.breakableFitAdvances = advances;\n return metrics.breakableFitAdvances;\n }\n const advances = [];\n let prefix = '';\n let prefixWidth = 0;\n for (const grapheme of graphemes) {\n prefix += grapheme;\n const prefixMetrics = getSegmentMetrics(prefix, cache);\n const nextPrefixWidth = getCorrectedSegmentWidth(prefix, prefixMetrics, emojiCorrection);\n advances.push(nextPrefixWidth - prefixWidth);\n prefixWidth = nextPrefixWidth;\n }\n metrics.breakableFitAdvances = advances;\n return metrics.breakableFitAdvances;\n}\nexport function getFontMeasurementState(font, needsEmojiCorrection) {\n const ctx = getMeasureContext();\n ctx.font = font;\n const cache = getSegmentMetricCache(font);\n const fontSize = parseFontSize(font);\n const emojiCorrection = needsEmojiCorrection ? getEmojiCorrection(font, fontSize) : 0;\n return { cache, fontSize, emojiCorrection };\n}\nexport function clearMeasurementCaches() {\n segmentMetricCaches.clear();\n emojiCorrectionCache.clear();\n sharedGraphemeSegmenter = null;\n}\n","import { getEngineProfile } from './measurement.js';\nfunction consumesAtLineStart(kind) {\n return kind === 'space' || kind === 'zero-width-break' || kind === 'soft-hyphen';\n}\nfunction breaksAfter(kind) {\n return (kind === 'space' ||\n kind === 'preserved-space' ||\n kind === 'tab' ||\n kind === 'zero-width-break' ||\n kind === 'soft-hyphen');\n}\nfunction normalizeLineStartSegmentIndex(prepared, segmentIndex, endSegmentIndex = prepared.widths.length) {\n while (segmentIndex < endSegmentIndex) {\n const kind = prepared.kinds[segmentIndex];\n if (!consumesAtLineStart(kind))\n break;\n segmentIndex++;\n }\n return segmentIndex;\n}\nfunction getTabAdvance(lineWidth, tabStopAdvance) {\n if (tabStopAdvance <= 0)\n return 0;\n const remainder = lineWidth % tabStopAdvance;\n if (Math.abs(remainder) <= 1e-6)\n return tabStopAdvance;\n return tabStopAdvance - remainder;\n}\nfunction getLeadingLetterSpacing(prepared, hasContent, segmentIndex) {\n return (prepared.letterSpacing !== 0 &&\n hasContent &&\n prepared.spacingGraphemeCounts[segmentIndex] > 0)\n ? prepared.letterSpacing\n : 0;\n}\nfunction getLineEndContribution(leadingSpacing, segmentContribution) {\n return segmentContribution === 0 ? 0 : leadingSpacing + segmentContribution;\n}\nfunction getTabTrailingLetterSpacing(prepared, segmentIndex) {\n return (prepared.letterSpacing !== 0 &&\n prepared.spacingGraphemeCounts[segmentIndex] > 0)\n ? prepared.letterSpacing\n : 0;\n}\nfunction getWholeSegmentFitContribution(prepared, kind, segmentIndex, leadingSpacing, segmentWidth) {\n const segmentContribution = kind === 'tab'\n ? segmentWidth + getTabTrailingLetterSpacing(prepared, segmentIndex)\n : prepared.lineEndFitAdvances[segmentIndex];\n return getLineEndContribution(leadingSpacing, segmentContribution);\n}\nfunction getBreakOpportunityFitContribution(prepared, kind, segmentIndex, leadingSpacing) {\n const segmentContribution = kind === 'tab' ? 0 : prepared.lineEndFitAdvances[segmentIndex];\n return getLineEndContribution(leadingSpacing, segmentContribution);\n}\nfunction getLineEndPaintContribution(prepared, kind, segmentIndex, leadingSpacing, segmentWidth) {\n const segmentContribution = kind === 'tab' ? segmentWidth : prepared.lineEndPaintAdvances[segmentIndex];\n return getLineEndContribution(leadingSpacing, segmentContribution);\n}\nfunction getBreakableGraphemeAdvance(prepared, hasContent, baseAdvance) {\n return prepared.letterSpacing !== 0 && hasContent\n ? baseAdvance + prepared.letterSpacing\n : baseAdvance;\n}\nfunction getBreakableCandidateFitWidth(prepared, candidatePaintWidth) {\n return prepared.letterSpacing === 0\n ? candidatePaintWidth\n : candidatePaintWidth + prepared.letterSpacing;\n}\nfunction getTerminalLetterSpacing(prepared, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex) {\n if (prepared.letterSpacing === 0)\n return 0;\n if (endGraphemeIndex > 0) {\n return prepared.spacingGraphemeCounts[endSegmentIndex] > 0\n ? prepared.letterSpacing\n : 0;\n }\n for (let i = endSegmentIndex - 1; i >= startSegmentIndex; i--) {\n const kind = prepared.kinds[i];\n if (kind === 'space' || kind === 'zero-width-break' || kind === 'hard-break')\n continue;\n if (kind === 'soft-hyphen') {\n if (i === endSegmentIndex - 1)\n return 0;\n continue;\n }\n if (i === startSegmentIndex && startGraphemeIndex > 0) {\n return prepared.letterSpacing;\n }\n return prepared.spacingGraphemeCounts[i] > 0\n ? prepared.letterSpacing\n : 0;\n }\n return 0;\n}\nfunction finalizeLinePaintWidth(prepared, width, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex) {\n return width + getTerminalLetterSpacing(prepared, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex);\n}\nfunction findChunkIndexForStart(prepared, segmentIndex) {\n let lo = 0;\n let hi = prepared.chunks.length;\n while (lo < hi) {\n const mid = Math.floor((lo + hi) / 2);\n if (segmentIndex < prepared.chunks[mid].consumedEndSegmentIndex) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n return lo < prepared.chunks.length ? lo : -1;\n}\nfunction normalizeLineStartInChunk(prepared, chunkIndex, cursor) {\n let segmentIndex = cursor.segmentIndex;\n if (cursor.graphemeIndex > 0)\n return chunkIndex;\n const chunk = prepared.chunks[chunkIndex];\n if (chunk.startSegmentIndex === chunk.endSegmentIndex && segmentIndex === chunk.startSegmentIndex) {\n cursor.segmentIndex = segmentIndex;\n cursor.graphemeIndex = 0;\n return chunkIndex;\n }\n if (segmentIndex < chunk.startSegmentIndex)\n segmentIndex = chunk.startSegmentIndex;\n segmentIndex = normalizeLineStartSegmentIndex(prepared, segmentIndex, chunk.endSegmentIndex);\n if (segmentIndex < chunk.endSegmentIndex) {\n cursor.segmentIndex = segmentIndex;\n cursor.graphemeIndex = 0;\n return chunkIndex;\n }\n if (chunk.consumedEndSegmentIndex >= prepared.widths.length)\n return -1;\n cursor.segmentIndex = chunk.consumedEndSegmentIndex;\n cursor.graphemeIndex = 0;\n return chunkIndex + 1;\n}\n// Mutates `cursor` to the next renderable line start and returns its chunk index.\nexport function normalizePreparedLineStart(prepared, cursor) {\n if (cursor.segmentIndex >= prepared.widths.length)\n return -1;\n const chunkIndex = findChunkIndexForStart(prepared, cursor.segmentIndex);\n if (chunkIndex < 0)\n return -1;\n return normalizeLineStartInChunk(prepared, chunkIndex, cursor);\n}\nfunction normalizeLineStartChunkIndexFromHint(prepared, chunkIndex, cursor) {\n if (cursor.segmentIndex >= prepared.widths.length)\n return -1;\n let nextChunkIndex = chunkIndex;\n while (nextChunkIndex < prepared.chunks.length &&\n cursor.segmentIndex >= prepared.chunks[nextChunkIndex].consumedEndSegmentIndex) {\n nextChunkIndex++;\n }\n if (nextChunkIndex >= prepared.chunks.length)\n return -1;\n return normalizeLineStartInChunk(prepared, nextChunkIndex, cursor);\n}\nexport function countPreparedLines(prepared, maxWidth) {\n return walkPreparedLinesRaw(prepared, maxWidth);\n}\nfunction walkPreparedLinesSimple(prepared, maxWidth, onLine) {\n const { widths, kinds, breakableFitAdvances } = prepared;\n if (widths.length === 0)\n return 0;\n const engineProfile = getEngineProfile();\n const lineFitEpsilon = engineProfile.lineFitEpsilon;\n const fitLimit = maxWidth + lineFitEpsilon;\n let lineCount = 0;\n let lineW = 0;\n let hasContent = false;\n let lineStartSegmentIndex = 0;\n let lineStartGraphemeIndex = 0;\n let lineEndSegmentIndex = 0;\n let lineEndGraphemeIndex = 0;\n let pendingBreakSegmentIndex = -1;\n let pendingBreakPaintWidth = 0;\n function clearPendingBreak() {\n pendingBreakSegmentIndex = -1;\n pendingBreakPaintWidth = 0;\n }\n function emitCurrentLine(endSegmentIndex = lineEndSegmentIndex, endGraphemeIndex = lineEndGraphemeIndex, width = lineW) {\n lineCount++;\n onLine?.(width, lineStartSegmentIndex, lineStartGraphemeIndex, endSegmentIndex, endGraphemeIndex);\n lineW = 0;\n hasContent = false;\n clearPendingBreak();\n }\n function startLineAtSegment(segmentIndex, width) {\n hasContent = true;\n lineStartSegmentIndex = segmentIndex;\n lineStartGraphemeIndex = 0;\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n lineW = width;\n }\n function startLineAtGrapheme(segmentIndex, graphemeIndex, width) {\n hasContent = true;\n lineStartSegmentIndex = segmentIndex;\n lineStartGraphemeIndex = graphemeIndex;\n lineEndSegmentIndex = segmentIndex;\n lineEndGraphemeIndex = graphemeIndex + 1;\n lineW = width;\n }\n function appendWholeSegment(segmentIndex, width) {\n if (!hasContent) {\n startLineAtSegment(segmentIndex, width);\n return;\n }\n lineW += width;\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n }\n function appendBreakableSegmentFrom(segmentIndex, startGraphemeIndex) {\n const fitAdvances = breakableFitAdvances[segmentIndex];\n for (let g = startGraphemeIndex; g < fitAdvances.length; g++) {\n const gw = fitAdvances[g];\n if (!hasContent) {\n startLineAtGrapheme(segmentIndex, g, gw);\n }\n else if (lineW + gw > fitLimit) {\n emitCurrentLine();\n startLineAtGrapheme(segmentIndex, g, gw);\n }\n else {\n lineW += gw;\n lineEndSegmentIndex = segmentIndex;\n lineEndGraphemeIndex = g + 1;\n }\n }\n if (hasContent && lineEndSegmentIndex === segmentIndex && lineEndGraphemeIndex === fitAdvances.length) {\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n }\n }\n let i = 0;\n while (i < widths.length) {\n if (!hasContent) {\n i = normalizeLineStartSegmentIndex(prepared, i);\n if (i >= widths.length)\n break;\n }\n const w = widths[i];\n const kind = kinds[i];\n const breakAfter = breaksAfter(kind);\n if (!hasContent) {\n if (w > fitLimit && breakableFitAdvances[i] !== null) {\n appendBreakableSegmentFrom(i, 0);\n }\n else {\n startLineAtSegment(i, w);\n }\n if (breakAfter) {\n pendingBreakSegmentIndex = i + 1;\n pendingBreakPaintWidth = lineW - w;\n }\n i++;\n continue;\n }\n const newW = lineW + w;\n if (newW > fitLimit) {\n if (breakAfter) {\n appendWholeSegment(i, w);\n emitCurrentLine(i + 1, 0, lineW - w);\n i++;\n continue;\n }\n if (pendingBreakSegmentIndex >= 0) {\n if (lineEndSegmentIndex > pendingBreakSegmentIndex ||\n (lineEndSegmentIndex === pendingBreakSegmentIndex && lineEndGraphemeIndex > 0)) {\n emitCurrentLine();\n continue;\n }\n emitCurrentLine(pendingBreakSegmentIndex, 0, pendingBreakPaintWidth);\n continue;\n }\n if (w > fitLimit && breakableFitAdvances[i] !== null) {\n emitCurrentLine();\n appendBreakableSegmentFrom(i, 0);\n i++;\n continue;\n }\n emitCurrentLine();\n continue;\n }\n appendWholeSegment(i, w);\n if (breakAfter) {\n pendingBreakSegmentIndex = i + 1;\n pendingBreakPaintWidth = lineW - w;\n }\n i++;\n }\n if (hasContent)\n emitCurrentLine();\n return lineCount;\n}\nexport function walkPreparedLinesRaw(prepared, maxWidth, onLine) {\n if (prepared.simpleLineWalkFastPath) {\n return walkPreparedLinesSimple(prepared, maxWidth, onLine);\n }\n const { widths, kinds, breakableFitAdvances, discretionaryHyphenWidth, chunks, } = prepared;\n if (widths.length === 0 || chunks.length === 0)\n return 0;\n const engineProfile = getEngineProfile();\n const lineFitEpsilon = engineProfile.lineFitEpsilon;\n const fitLimit = maxWidth + lineFitEpsilon;\n let lineCount = 0;\n let lineW = 0;\n let hasContent = false;\n let lineStartSegmentIndex = 0;\n let lineStartGraphemeIndex = 0;\n let lineEndSegmentIndex = 0;\n let lineEndGraphemeIndex = 0;\n let pendingBreakSegmentIndex = -1;\n let pendingBreakFitWidth = 0;\n let pendingBreakPaintWidth = 0;\n let pendingBreakKind = null;\n function clearPendingBreak() {\n pendingBreakSegmentIndex = -1;\n pendingBreakFitWidth = 0;\n pendingBreakPaintWidth = 0;\n pendingBreakKind = null;\n }\n function getCurrentLinePaintWidth() {\n return (pendingBreakKind === 'soft-hyphen' &&\n pendingBreakSegmentIndex === lineEndSegmentIndex &&\n lineEndGraphemeIndex === 0)\n ? pendingBreakPaintWidth\n : lineW;\n }\n function emitCurrentLine(endSegmentIndex = lineEndSegmentIndex, endGraphemeIndex = lineEndGraphemeIndex, width) {\n lineCount++;\n if (onLine !== undefined) {\n onLine(finalizeLinePaintWidth(prepared, width ?? getCurrentLinePaintWidth(), lineStartSegmentIndex, lineStartGraphemeIndex, endSegmentIndex, endGraphemeIndex), lineStartSegmentIndex, lineStartGraphemeIndex, endSegmentIndex, endGraphemeIndex);\n }\n lineW = 0;\n hasContent = false;\n clearPendingBreak();\n }\n function startLineAtSegment(segmentIndex, width) {\n hasContent = true;\n lineStartSegmentIndex = segmentIndex;\n lineStartGraphemeIndex = 0;\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n lineW = width;\n }\n function startLineAtGrapheme(segmentIndex, graphemeIndex, width) {\n hasContent = true;\n lineStartSegmentIndex = segmentIndex;\n lineStartGraphemeIndex = graphemeIndex;\n lineEndSegmentIndex = segmentIndex;\n lineEndGraphemeIndex = graphemeIndex + 1;\n lineW = width;\n }\n function appendWholeSegment(segmentIndex, advance) {\n if (!hasContent) {\n startLineAtSegment(segmentIndex, advance);\n return;\n }\n lineW += advance;\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n }\n function updatePendingBreakForWholeSegment(kind, breakAfter, segmentIndex, segmentWidth, leadingSpacing, advance) {\n if (!breakAfter)\n return;\n const fitAdvance = getBreakOpportunityFitContribution(prepared, kind, segmentIndex, leadingSpacing);\n const paintAdvance = getLineEndPaintContribution(prepared, kind, segmentIndex, leadingSpacing, segmentWidth);\n pendingBreakSegmentIndex = segmentIndex + 1;\n pendingBreakFitWidth = lineW - advance + fitAdvance;\n pendingBreakPaintWidth = lineW - advance + paintAdvance;\n pendingBreakKind = kind;\n }\n function appendBreakableSegmentFrom(segmentIndex, startGraphemeIndex) {\n const fitAdvances = breakableFitAdvances[segmentIndex];\n for (let g = startGraphemeIndex; g < fitAdvances.length; g++) {\n const baseGw = fitAdvances[g];\n if (!hasContent) {\n startLineAtGrapheme(segmentIndex, g, baseGw);\n }\n else {\n const gw = getBreakableGraphemeAdvance(prepared, true, baseGw);\n const candidatePaintWidth = lineW + gw;\n if (getBreakableCandidateFitWidth(prepared, candidatePaintWidth) > fitLimit) {\n emitCurrentLine();\n startLineAtGrapheme(segmentIndex, g, baseGw);\n }\n else {\n lineW = candidatePaintWidth;\n lineEndSegmentIndex = segmentIndex;\n lineEndGraphemeIndex = g + 1;\n }\n }\n }\n if (hasContent && lineEndSegmentIndex === segmentIndex && lineEndGraphemeIndex === fitAdvances.length) {\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n }\n }\n function emitEmptyChunk(chunk) {\n lineCount++;\n onLine?.(0, chunk.startSegmentIndex, 0, chunk.consumedEndSegmentIndex, 0);\n clearPendingBreak();\n }\n for (let chunkIndex = 0; chunkIndex < chunks.length; chunkIndex++) {\n const chunk = chunks[chunkIndex];\n if (chunk.startSegmentIndex === chunk.endSegmentIndex) {\n emitEmptyChunk(chunk);\n continue;\n }\n hasContent = false;\n lineW = 0;\n lineStartSegmentIndex = chunk.startSegmentIndex;\n lineStartGraphemeIndex = 0;\n lineEndSegmentIndex = chunk.startSegmentIndex;\n lineEndGraphemeIndex = 0;\n clearPendingBreak();\n let i = chunk.startSegmentIndex;\n while (i < chunk.endSegmentIndex) {\n if (!hasContent) {\n i = normalizeLineStartSegmentIndex(prepared, i, chunk.endSegmentIndex);\n if (i >= chunk.endSegmentIndex)\n break;\n }\n const kind = kinds[i];\n const breakAfter = breaksAfter(kind);\n const leadingSpacing = getLeadingLetterSpacing(prepared, hasContent, i);\n const w = kind === 'tab'\n ? getTabAdvance(lineW + leadingSpacing, prepared.tabStopAdvance)\n : widths[i];\n const advance = leadingSpacing + w;\n const fitAdvance = getWholeSegmentFitContribution(prepared, kind, i, leadingSpacing, w);\n if (kind === 'soft-hyphen') {\n if (hasContent) {\n lineEndSegmentIndex = i + 1;\n lineEndGraphemeIndex = 0;\n pendingBreakSegmentIndex = i + 1;\n pendingBreakFitWidth = lineW + discretionaryHyphenWidth;\n pendingBreakPaintWidth = lineW + discretionaryHyphenWidth;\n pendingBreakKind = kind;\n }\n i++;\n continue;\n }\n if (!hasContent) {\n if (fitAdvance > fitLimit && breakableFitAdvances[i] !== null) {\n appendBreakableSegmentFrom(i, 0);\n }\n else {\n startLineAtSegment(i, w);\n }\n updatePendingBreakForWholeSegment(kind, breakAfter, i, w, leadingSpacing, advance);\n i++;\n continue;\n }\n const newFitW = lineW + fitAdvance;\n if (newFitW > fitLimit) {\n const currentBreakFitWidth = lineW + getBreakOpportunityFitContribution(prepared, kind, i, leadingSpacing);\n const currentBreakPaintWidth = lineW + getLineEndPaintContribution(prepared, kind, i, leadingSpacing, w);\n if (pendingBreakKind === 'soft-hyphen' &&\n engineProfile.preferEarlySoftHyphenBreak &&\n pendingBreakFitWidth <= fitLimit) {\n emitCurrentLine(pendingBreakSegmentIndex, 0, pendingBreakPaintWidth);\n continue;\n }\n if (breakAfter && currentBreakFitWidth <= fitLimit) {\n appendWholeSegment(i, advance);\n emitCurrentLine(i + 1, 0, currentBreakPaintWidth);\n i++;\n continue;\n }\n if (pendingBreakSegmentIndex >= 0 && pendingBreakFitWidth <= fitLimit) {\n if (lineEndSegmentIndex > pendingBreakSegmentIndex ||\n (lineEndSegmentIndex === pendingBreakSegmentIndex && lineEndGraphemeIndex > 0)) {\n emitCurrentLine();\n continue;\n }\n const nextSegmentIndex = pendingBreakSegmentIndex;\n emitCurrentLine(nextSegmentIndex, 0, pendingBreakPaintWidth);\n i = nextSegmentIndex;\n continue;\n }\n if (fitAdvance > fitLimit && breakableFitAdvances[i] !== null) {\n emitCurrentLine();\n appendBreakableSegmentFrom(i, 0);\n i++;\n continue;\n }\n emitCurrentLine();\n continue;\n }\n appendWholeSegment(i, advance);\n updatePendingBreakForWholeSegment(kind, breakAfter, i, w, leadingSpacing, advance);\n i++;\n }\n if (hasContent) {\n const finalPaintWidth = pendingBreakSegmentIndex === chunk.consumedEndSegmentIndex\n ? pendingBreakPaintWidth\n : lineW;\n emitCurrentLine(chunk.consumedEndSegmentIndex, 0, finalPaintWidth);\n }\n }\n return lineCount;\n}\nexport function walkPreparedLines(prepared, maxWidth, onLine) {\n if (onLine === undefined)\n return walkPreparedLinesRaw(prepared, maxWidth);\n return walkPreparedLinesRaw(prepared, maxWidth, (width, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex) => {\n onLine({\n startSegmentIndex,\n startGraphemeIndex,\n endSegmentIndex,\n endGraphemeIndex,\n width,\n });\n });\n}\nfunction stepPreparedChunkLineGeometry(prepared, cursor, chunkIndex, maxWidth) {\n const chunk = prepared.chunks[chunkIndex];\n if (chunk.startSegmentIndex === chunk.endSegmentIndex) {\n cursor.segmentIndex = chunk.consumedEndSegmentIndex;\n cursor.graphemeIndex = 0;\n return 0;\n }\n const { widths, kinds, breakableFitAdvances, discretionaryHyphenWidth, } = prepared;\n const engineProfile = getEngineProfile();\n const lineFitEpsilon = engineProfile.lineFitEpsilon;\n const fitLimit = maxWidth + lineFitEpsilon;\n const lineStartSegmentIndex = cursor.segmentIndex;\n const lineStartGraphemeIndex = cursor.graphemeIndex;\n let lineW = 0;\n let hasContent = false;\n let lineEndSegmentIndex = cursor.segmentIndex;\n let lineEndGraphemeIndex = cursor.graphemeIndex;\n let pendingBreakSegmentIndex = -1;\n let pendingBreakFitWidth = 0;\n let pendingBreakPaintWidth = 0;\n let pendingBreakKind = null;\n function getCurrentLinePaintWidth() {\n return (pendingBreakKind === 'soft-hyphen' &&\n pendingBreakSegmentIndex === lineEndSegmentIndex &&\n lineEndGraphemeIndex === 0)\n ? pendingBreakPaintWidth\n : lineW;\n }\n function finishLine(endSegmentIndex = lineEndSegmentIndex, endGraphemeIndex = lineEndGraphemeIndex, width = getCurrentLinePaintWidth()) {\n if (!hasContent)\n return null;\n cursor.segmentIndex = endSegmentIndex;\n cursor.graphemeIndex = endGraphemeIndex;\n return finalizeLinePaintWidth(prepared, width, lineStartSegmentIndex, lineStartGraphemeIndex, endSegmentIndex, endGraphemeIndex);\n }\n function startLineAtSegment(segmentIndex, width) {\n hasContent = true;\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n lineW = width;\n }\n function startLineAtGrapheme(segmentIndex, graphemeIndex, width) {\n hasContent = true;\n lineEndSegmentIndex = segmentIndex;\n lineEndGraphemeIndex = graphemeIndex + 1;\n lineW = width;\n }\n function appendWholeSegment(segmentIndex, advance) {\n if (!hasContent) {\n startLineAtSegment(segmentIndex, advance);\n return;\n }\n lineW += advance;\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n }\n function updatePendingBreakForWholeSegment(kind, breakAfter, segmentIndex, segmentWidth, leadingSpacing, advance) {\n if (!breakAfter)\n return;\n const fitAdvance = getBreakOpportunityFitContribution(prepared, kind, segmentIndex, leadingSpacing);\n const paintAdvance = getLineEndPaintContribution(prepared, kind, segmentIndex, leadingSpacing, segmentWidth);\n pendingBreakSegmentIndex = segmentIndex + 1;\n pendingBreakFitWidth = lineW - advance + fitAdvance;\n pendingBreakPaintWidth = lineW - advance + paintAdvance;\n pendingBreakKind = kind;\n }\n function appendBreakableSegmentFrom(segmentIndex, startGraphemeIndex) {\n const fitAdvances = breakableFitAdvances[segmentIndex];\n for (let g = startGraphemeIndex; g < fitAdvances.length; g++) {\n const baseGw = fitAdvances[g];\n if (!hasContent) {\n startLineAtGrapheme(segmentIndex, g, baseGw);\n }\n else {\n const gw = getBreakableGraphemeAdvance(prepared, true, baseGw);\n const candidatePaintWidth = lineW + gw;\n if (getBreakableCandidateFitWidth(prepared, candidatePaintWidth) > fitLimit) {\n return finishLine();\n }\n lineW = candidatePaintWidth;\n lineEndSegmentIndex = segmentIndex;\n lineEndGraphemeIndex = g + 1;\n }\n }\n if (hasContent && lineEndSegmentIndex === segmentIndex && lineEndGraphemeIndex === fitAdvances.length) {\n lineEndSegmentIndex = segmentIndex + 1;\n lineEndGraphemeIndex = 0;\n }\n return null;\n }\n function maybeFinishAtSoftHyphen() {\n if (pendingBreakKind !== 'soft-hyphen' || pendingBreakSegmentIndex < 0)\n return null;\n if (pendingBreakFitWidth <= fitLimit) {\n return finishLine(pendingBreakSegmentIndex, 0, pendingBreakPaintWidth);\n }\n return null;\n }\n for (let i = cursor.segmentIndex; i < chunk.endSegmentIndex; i++) {\n const kind = kinds[i];\n const breakAfter = breaksAfter(kind);\n const startGraphemeIndex = i === cursor.segmentIndex ? cursor.graphemeIndex : 0;\n const leadingSpacing = getLeadingLetterSpacing(prepared, hasContent, i);\n const w = kind === 'tab'\n ? getTabAdvance(lineW + leadingSpacing, prepared.tabStopAdvance)\n : widths[i];\n const advance = leadingSpacing + w;\n const fitAdvance = getWholeSegmentFitContribution(prepared, kind, i, leadingSpacing, w);\n if (kind === 'soft-hyphen' && startGraphemeIndex === 0) {\n if (hasContent) {\n lineEndSegmentIndex = i + 1;\n lineEndGraphemeIndex = 0;\n pendingBreakSegmentIndex = i + 1;\n pendingBreakFitWidth = lineW + discretionaryHyphenWidth;\n pendingBreakPaintWidth = lineW + discretionaryHyphenWidth;\n pendingBreakKind = kind;\n }\n continue;\n }\n if (!hasContent) {\n if (startGraphemeIndex > 0) {\n const line = appendBreakableSegmentFrom(i, startGraphemeIndex);\n if (line !== null)\n return line;\n }\n else if (fitAdvance > fitLimit && breakableFitAdvances[i] !== null) {\n const line = appendBreakableSegmentFrom(i, 0);\n if (line !== null)\n return line;\n }\n else {\n startLineAtSegment(i, w);\n }\n updatePendingBreakForWholeSegment(kind, breakAfter, i, w, leadingSpacing, advance);\n continue;\n }\n const newFitW = lineW + fitAdvance;\n if (newFitW > fitLimit) {\n const currentBreakFitWidth = lineW + getBreakOpportunityFitContribution(prepared, kind, i, leadingSpacing);\n const currentBreakPaintWidth = lineW + getLineEndPaintContribution(prepared, kind, i, leadingSpacing, w);\n if (pendingBreakKind === 'soft-hyphen' &&\n engineProfile.preferEarlySoftHyphenBreak &&\n pendingBreakFitWidth <= fitLimit) {\n return finishLine(pendingBreakSegmentIndex, 0, pendingBreakPaintWidth);\n }\n const softBreakLine = maybeFinishAtSoftHyphen();\n if (softBreakLine !== null)\n return softBreakLine;\n if (breakAfter && currentBreakFitWidth <= fitLimit) {\n appendWholeSegment(i, advance);\n return finishLine(i + 1, 0, currentBreakPaintWidth);\n }\n if (pendingBreakSegmentIndex >= 0 && pendingBreakFitWidth <= fitLimit) {\n if (lineEndSegmentIndex > pendingBreakSegmentIndex ||\n (lineEndSegmentIndex === pendingBreakSegmentIndex && lineEndGraphemeIndex > 0)) {\n return finishLine();\n }\n return finishLine(pendingBreakSegmentIndex, 0, pendingBreakPaintWidth);\n }\n if (fitAdvance > fitLimit && breakableFitAdvances[i] !== null) {\n const currentLine = finishLine();\n if (currentLine !== null)\n return currentLine;\n const line = appendBreakableSegmentFrom(i, 0);\n if (line !== null)\n return line;\n }\n return finishLine();\n }\n appendWholeSegment(i, advance);\n updatePendingBreakForWholeSegment(kind, breakAfter, i, w, leadingSpacing, advance);\n }\n if (pendingBreakSegmentIndex === chunk.consumedEndSegmentIndex && lineEndGraphemeIndex === 0) {\n return finishLine(chunk.consumedEndSegmentIndex, 0, pendingBreakPaintWidth);\n }\n return finishLine(chunk.consumedEndSegmentIndex, 0, lineW);\n}\nfunction stepPreparedSimpleLineGeometry(prepared, cursor, maxWidth) {\n const { widths, kinds, breakableFitAdvances } = prepared;\n const engineProfile = getEngineProfile();\n const lineFitEpsilon = engineProfile.lineFitEpsilon;\n const fitLimit = maxWidth + lineFitEpsilon;\n let lineW = 0;\n let hasContent = false;\n let lineEndSegmentIndex = cursor.segmentIndex;\n let lineEndGraphemeIndex = cursor.graphemeIndex;\n let pendingBreakSegmentIndex = -1;\n let pendingBreakPaintWidth = 0;\n for (let i = cursor.segmentIndex; i < widths.length; i++) {\n const kind = kinds[i];\n const breakAfter = breaksAfter(kind);\n const startGraphemeIndex = i === cursor.segmentIndex ? cursor.graphemeIndex : 0;\n const breakableFitAdvance = breakableFitAdvances[i];\n const w = widths[i];\n if (!hasContent) {\n if (startGraphemeIndex > 0 || (w > fitLimit && breakableFitAdvance !== null)) {\n const fitAdvances = breakableFitAdvance;\n const firstGraphemeWidth = fitAdvances[startGraphemeIndex];\n hasContent = true;\n lineW = firstGraphemeWidth;\n lineEndSegmentIndex = i;\n lineEndGraphemeIndex = startGraphemeIndex + 1;\n for (let g = startGraphemeIndex + 1; g < fitAdvances.length; g++) {\n const gw = fitAdvances[g];\n if (lineW + gw > fitLimit) {\n cursor.segmentIndex = lineEndSegmentIndex;\n cursor.graphemeIndex = lineEndGraphemeIndex;\n return lineW;\n }\n lineW += gw;\n lineEndSegmentIndex = i;\n lineEndGraphemeIndex = g + 1;\n }\n if (lineEndSegmentIndex === i && lineEndGraphemeIndex === fitAdvances.length) {\n lineEndSegmentIndex = i + 1;\n lineEndGraphemeIndex = 0;\n }\n }\n else {\n hasContent = true;\n lineW = w;\n lineEndSegmentIndex = i + 1;\n lineEndGraphemeIndex = 0;\n }\n if (breakAfter) {\n pendingBreakSegmentIndex = i + 1;\n pendingBreakPaintWidth = lineW - w;\n }\n continue;\n }\n if (lineW + w > fitLimit) {\n if (breakAfter) {\n cursor.segmentIndex = i + 1;\n cursor.graphemeIndex = 0;\n return lineW;\n }\n if (pendingBreakSegmentIndex >= 0) {\n if (lineEndSegmentIndex > pendingBreakSegmentIndex ||\n (lineEndSegmentIndex === pendingBreakSegmentIndex && lineEndGraphemeIndex > 0)) {\n cursor.segmentIndex = lineEndSegmentIndex;\n cursor.graphemeIndex = lineEndGraphemeIndex;\n return lineW;\n }\n cursor.segmentIndex = pendingBreakSegmentIndex;\n cursor.graphemeIndex = 0;\n return pendingBreakPaintWidth;\n }\n cursor.segmentIndex = lineEndSegmentIndex;\n cursor.graphemeIndex = lineEndGraphemeIndex;\n return lineW;\n }\n lineW += w;\n lineEndSegmentIndex = i + 1;\n lineEndGraphemeIndex = 0;\n if (breakAfter) {\n pendingBreakSegmentIndex = i + 1;\n pendingBreakPaintWidth = lineW - w;\n }\n }\n if (!hasContent)\n return null;\n cursor.segmentIndex = lineEndSegmentIndex;\n cursor.graphemeIndex = lineEndGraphemeIndex;\n return lineW;\n}\nexport function stepPreparedLineGeometryFromChunk(prepared, cursor, chunkIndex, maxWidth) {\n if (prepared.simpleLineWalkFastPath) {\n return stepPreparedSimpleLineGeometry(prepared, cursor, maxWidth);\n }\n return stepPreparedChunkLineGeometry(prepared, cursor, chunkIndex, maxWidth);\n}\nexport function stepPreparedLineGeometry(prepared, cursor, maxWidth) {\n const chunkIndex = normalizePreparedLineStart(prepared, cursor);\n if (chunkIndex < 0)\n return null;\n return stepPreparedLineGeometryFromChunk(prepared, cursor, chunkIndex, maxWidth);\n}\nexport function measurePreparedLineGeometry(prepared, maxWidth) {\n if (prepared.widths.length === 0) {\n return {\n lineCount: 0,\n maxLineWidth: 0,\n };\n }\n const cursor = {\n segmentIndex: 0,\n graphemeIndex: 0,\n };\n let lineCount = 0;\n let maxLineWidth = 0;\n if (!prepared.simpleLineWalkFastPath) {\n let chunkIndex = normalizePreparedLineStart(prepared, cursor);\n while (chunkIndex >= 0) {\n const lineWidth = stepPreparedChunkLineGeometry(prepared, cursor, chunkIndex, maxWidth);\n if (lineWidth === null) {\n return {\n lineCount,\n maxLineWidth,\n };\n }\n lineCount++;\n if (lineWidth > maxLineWidth)\n maxLineWidth = lineWidth;\n chunkIndex = normalizeLineStartChunkIndexFromHint(prepared, chunkIndex, cursor);\n }\n return {\n lineCount,\n maxLineWidth,\n };\n }\n while (true) {\n const lineWidth = stepPreparedLineGeometry(prepared, cursor, maxWidth);\n if (lineWidth === null) {\n return {\n lineCount,\n maxLineWidth,\n };\n }\n lineCount++;\n if (lineWidth > maxLineWidth)\n maxLineWidth = lineWidth;\n }\n}\n","// Text measurement for browser environments using canvas measureText.\n//\n// Problem: DOM-based text measurement (getBoundingClientRect, offsetHeight)\n// forces synchronous layout reflow. When components independently measure text,\n// each measurement triggers a reflow of the entire document. This creates\n// read/write interleaving that can cost 30ms+ per frame for 500 text blocks.\n//\n// Solution: two-phase measurement centered around canvas measureText.\n// prepare(text, font) — segments text via Intl.Segmenter, measures each word\n// via canvas, caches widths, and does one cached DOM calibration read per\n// font when emoji correction is needed. Call once when text first appears.\n// layout(prepared, maxWidth, lineHeight) — walks cached word widths with pure\n// arithmetic to count lines and compute height. Call on every resize.\n// ~0.0002ms per text.\n//\n// i18n: Intl.Segmenter handles CJK (per-character breaking), Thai, Arabic, etc.\n// Bidi: simplified rich-path metadata for mixed LTR/RTL custom rendering.\n// Punctuation merging: \"better.\" measured as one unit (matches CSS behavior).\n// Trailing whitespace: hangs past line edge without triggering breaks (CSS behavior).\n// overflow-wrap: pre-measured grapheme widths enable character-level word breaking.\n//\n// Emoji correction: Chrome/Firefox canvas measures emoji wider than DOM at font\n// sizes <24px on macOS (Apple Color Emoji). The inflation is constant per emoji\n// grapheme at a given size, font-independent. Auto-detected by comparing canvas\n// vs actual DOM emoji width (one cached DOM read per font). Safari canvas and\n// DOM agree (both wider than fontSize), so correction = 0 there.\n//\n// Limitations:\n// - system-ui font: canvas resolves to different optical variants than DOM on macOS.\n// Use named fonts (Helvetica, Inter, etc.) for guaranteed accuracy.\n// See RESEARCH.md \"Discovery: system-ui font resolution mismatch\".\n//\n// Based on Sebastian Markbage's text-layout research (github.com/chenglou/text-layout).\nimport { computeSegmentLevels } from './bidi.js';\nimport { analyzeText, canContinueKeepAllTextRun, clearAnalysisCaches, endsWithClosingQuote, isCJK, isNumericRunSegment, kinsokuEnd, kinsokuStart, leftStickyPunctuation, setAnalysisLocale, } from './analysis.js';\nimport { clearMeasurementCaches, getCorrectedSegmentWidth, getSegmentBreakableFitAdvances, getEngineProfile, getFontMeasurementState, getSegmentMetrics, textMayContainEmoji, } from './measurement.js';\nimport { countPreparedLines, measurePreparedLineGeometry, normalizePreparedLineStart, stepPreparedLineGeometryFromChunk, walkPreparedLinesRaw, } from './line-break.js';\nimport { buildLineTextFromRange, clearLineTextCaches, getLineTextCache, } from './line-text.js';\nlet sharedGraphemeSegmenter = null;\nfunction getSharedGraphemeSegmenter() {\n if (sharedGraphemeSegmenter === null) {\n sharedGraphemeSegmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n }\n return sharedGraphemeSegmenter;\n}\n// --- Public API ---\nfunction createEmptyPrepared(includeSegments) {\n if (includeSegments) {\n return {\n widths: [],\n lineEndFitAdvances: [],\n lineEndPaintAdvances: [],\n kinds: [],\n simpleLineWalkFastPath: true,\n segLevels: null,\n breakableFitAdvances: [],\n letterSpacing: 0,\n spacingGraphemeCounts: [],\n discretionaryHyphenWidth: 0,\n tabStopAdvance: 0,\n chunks: [],\n segments: [],\n };\n }\n return {\n widths: [],\n lineEndFitAdvances: [],\n lineEndPaintAdvances: [],\n kinds: [],\n simpleLineWalkFastPath: true,\n segLevels: null,\n breakableFitAdvances: [],\n letterSpacing: 0,\n spacingGraphemeCounts: [],\n discretionaryHyphenWidth: 0,\n tabStopAdvance: 0,\n chunks: [],\n };\n}\nfunction buildBaseCjkUnits(segText, engineProfile) {\n const units = [];\n let unitParts = [];\n let unitStart = 0;\n let unitContainsCJK = false;\n let unitEndsWithClosingQuote = false;\n let unitIsSingleKinsokuEnd = false;\n function pushUnit() {\n if (unitParts.length === 0)\n return;\n units.push({\n text: unitParts.length === 1 ? unitParts[0] : unitParts.join(''),\n start: unitStart,\n });\n unitParts = [];\n unitContainsCJK = false;\n unitEndsWithClosingQuote = false;\n unitIsSingleKinsokuEnd = false;\n }\n function startUnit(grapheme, start, graphemeContainsCJK) {\n unitParts = [grapheme];\n unitStart = start;\n unitContainsCJK = graphemeContainsCJK;\n unitEndsWithClosingQuote = endsWithClosingQuote(grapheme);\n unitIsSingleKinsokuEnd = kinsokuEnd.has(grapheme);\n }\n function appendToUnit(grapheme, graphemeContainsCJK) {\n unitParts.push(grapheme);\n unitContainsCJK = unitContainsCJK || graphemeContainsCJK;\n const graphemeEndsWithClosingQuote = endsWithClosingQuote(grapheme);\n if (grapheme.length === 1 && leftStickyPunctuation.has(grapheme)) {\n unitEndsWithClosingQuote = unitEndsWithClosingQuote || graphemeEndsWithClosingQuote;\n }\n else {\n unitEndsWithClosingQuote = graphemeEndsWithClosingQuote;\n }\n unitIsSingleKinsokuEnd = false;\n }\n for (const gs of getSharedGraphemeSegmenter().segment(segText)) {\n const grapheme = gs.segment;\n const graphemeContainsCJK = isCJK(grapheme);\n if (unitParts.length === 0) {\n startUnit(grapheme, gs.index, graphemeContainsCJK);\n continue;\n }\n if (unitIsSingleKinsokuEnd ||\n kinsokuStart.has(grapheme) ||\n leftStickyPunctuation.has(grapheme) ||\n (engineProfile.carryCJKAfterClosingQuote &&\n graphemeContainsCJK &&\n unitEndsWithClosingQuote)) {\n appendToUnit(grapheme, graphemeContainsCJK);\n continue;\n }\n if (!unitContainsCJK && !graphemeContainsCJK) {\n appendToUnit(grapheme, graphemeContainsCJK);\n continue;\n }\n pushUnit();\n startUnit(grapheme, gs.index, graphemeContainsCJK);\n }\n pushUnit();\n return units;\n}\nfunction mergeKeepAllTextUnits(segText, units, breakAfterPunctuation) {\n if (units.length <= 1)\n return units;\n const merged = [];\n let groupStart = -1;\n let groupContainsCJK = false;\n function pushMergedUnit(start, end) {\n const sourceStart = units[start].start;\n const sourceEnd = end < units.length ? units[end].start : segText.length;\n merged.push({\n text: segText.slice(sourceStart, sourceEnd),\n start: sourceStart,\n });\n }\n function flushGroup(end) {\n if (groupStart < 0)\n return;\n if (groupContainsCJK) {\n if (groupStart + 1 === end) {\n merged.push(units[groupStart]);\n }\n else {\n pushMergedUnit(groupStart, end);\n }\n }\n else {\n for (let i = groupStart; i < end; i++)\n merged.push(units[i]);\n }\n groupStart = -1;\n groupContainsCJK = false;\n }\n for (let i = 0; i < units.length; i++) {\n const unit = units[i];\n if (groupStart >= 0 &&\n !canContinueKeepAllTextRun(units[i - 1].text, breakAfterPunctuation)) {\n flushGroup(i);\n }\n if (groupStart < 0)\n groupStart = i;\n groupContainsCJK = groupContainsCJK || isCJK(unit.text);\n }\n flushGroup(units.length);\n return merged;\n}\nfunction countRenderedSpacingGraphemes(text, kind) {\n if (kind === 'zero-width-break' ||\n kind === 'soft-hyphen' ||\n kind === 'hard-break') {\n return 0;\n }\n if (kind === 'tab')\n return 1;\n let count = 0;\n const graphemeSegmenter = getSharedGraphemeSegmenter();\n for (const _ of graphemeSegmenter.segment(text))\n count++;\n return count;\n}\nfunction addInternalLetterSpacing(width, graphemeCount, letterSpacing) {\n return graphemeCount > 1 ? width + (graphemeCount - 1) * letterSpacing : width;\n}\nfunction measureAnalysis(analysis, font, includeSegments, wordBreak, letterSpacing) {\n const engineProfile = getEngineProfile();\n const { cache, emojiCorrection } = getFontMeasurementState(font, textMayContainEmoji(analysis.normalized));\n const discretionaryHyphenWidth = getCorrectedSegmentWidth('-', getSegmentMetrics('-', cache), emojiCorrection) +\n (letterSpacing === 0 ? 0 : letterSpacing * 2);\n const spaceWidth = getCorrectedSegmentWidth(' ', getSegmentMetrics(' ', cache), emojiCorrection);\n const tabStopAdvance = spaceWidth * 8;\n const hasLetterSpacing = letterSpacing !== 0;\n if (analysis.len === 0)\n return createEmptyPrepared(includeSegments);\n const widths = [];\n const lineEndFitAdvances = [];\n const lineEndPaintAdvances = [];\n const kinds = [];\n let simpleLineWalkFastPath = analysis.chunks.length <= 1 && !hasLetterSpacing;\n const segStarts = includeSegments ? [] : null;\n const breakableFitAdvances = [];\n const spacingGraphemeCounts = [];\n const segments = includeSegments ? [] : null;\n const preparedStartByAnalysisIndex = Array.from({ length: analysis.len });\n function pushMeasuredSegment(text, width, lineEndFitAdvance, lineEndPaintAdvance, kind, start, breakableFitAdvance, spacingGraphemeCount) {\n if (kind !== 'text' && kind !== 'space' && kind !== 'zero-width-break') {\n simpleLineWalkFastPath = false;\n }\n widths.push(width);\n lineEndFitAdvances.push(lineEndFitAdvance);\n lineEndPaintAdvances.push(lineEndPaintAdvance);\n kinds.push(kind);\n segStarts?.push(start);\n breakableFitAdvances.push(breakableFitAdvance);\n if (hasLetterSpacing)\n spacingGraphemeCounts.push(spacingGraphemeCount);\n if (segments !== null)\n segments.push(text);\n }\n function pushMeasuredTextSegment(text, kind, start, wordLike, allowOverflowBreaks) {\n const textMetrics = getSegmentMetrics(text, cache);\n const spacingGraphemeCount = hasLetterSpacing\n ? countRenderedSpacingGraphemes(text, kind)\n : 0;\n const width = addInternalLetterSpacing(getCorrectedSegmentWidth(text, textMetrics, emojiCorrection), spacingGraphemeCount, letterSpacing);\n const baseLineEndFitAdvance = kind === 'space' || kind === 'preserved-space' || kind === 'zero-width-break'\n ? 0\n : width;\n const lineEndFitAdvance = baseLineEndFitAdvance === 0\n ? 0\n : baseLineEndFitAdvance + (spacingGraphemeCount > 0 ? letterSpacing : 0);\n const lineEndPaintAdvance = kind === 'space' || kind === 'zero-width-break'\n ? 0\n : width;\n if (allowOverflowBreaks && wordLike && text.length > 1) {\n let fitMode = 'sum-graphemes';\n if (letterSpacing !== 0) {\n fitMode = 'segment-prefixes';\n }\n else if (isNumericRunSegment(text)) {\n fitMode = 'pair-context';\n }\n else if (engineProfile.preferPrefixWidthsForBreakableRuns) {\n fitMode = 'segment-prefixes';\n }\n const fitAdvances = getSegmentBreakableFitAdvances(text, textMetrics, cache, emojiCorrection, fitMode);\n pushMeasuredSegment(text, width, lineEndFitAdvance, lineEndPaintAdvance, kind, start, fitAdvances, spacingGraphemeCount);\n return;\n }\n pushMeasuredSegment(text, width, lineEndFitAdvance, lineEndPaintAdvance, kind, start, null, spacingGraphemeCount);\n }\n for (let mi = 0; mi < analysis.len; mi++) {\n preparedStartByAnalysisIndex[mi] = widths.length;\n const segText = analysis.texts[mi];\n const segWordLike = analysis.isWordLike[mi];\n const segKind = analysis.kinds[mi];\n const segStart = analysis.starts[mi];\n if (segKind === 'soft-hyphen') {\n pushMeasuredSegment(segText, 0, discretionaryHyphenWidth, discretionaryHyphenWidth, segKind, segStart, null, 0);\n continue;\n }\n if (segKind === 'hard-break') {\n pushMeasuredSegment(segText, 0, 0, 0, segKind, segStart, null, 0);\n continue;\n }\n if (segKind === 'tab') {\n pushMeasuredSegment(segText, 0, 0, 0, segKind, segStart, null, hasLetterSpacing ? countRenderedSpacingGraphemes(segText, segKind) : 0);\n continue;\n }\n const segMetrics = getSegmentMetrics(segText, cache);\n if (segKind === 'text' && segMetrics.containsCJK) {\n const baseUnits = buildBaseCjkUnits(segText, engineProfile);\n const measuredUnits = wordBreak === 'keep-all'\n ? mergeKeepAllTextUnits(segText, baseUnits, engineProfile.breakKeepAllAfterPunctuation)\n : baseUnits;\n for (let i = 0; i < measuredUnits.length; i++) {\n const unit = measuredUnits[i];\n pushMeasuredTextSegment(unit.text, 'text', segStart + unit.start, segWordLike, wordBreak === 'keep-all' || !isCJK(unit.text));\n }\n continue;\n }\n pushMeasuredTextSegment(segText, segKind, segStart, segWordLike, true);\n }\n const chunks = mapAnalysisChunksToPreparedChunks(analysis.chunks, preparedStartByAnalysisIndex, widths.length);\n const segLevels = segStarts === null ? null : computeSegmentLevels(analysis.normalized, segStarts);\n if (segments !== null) {\n return {\n widths,\n lineEndFitAdvances,\n lineEndPaintAdvances,\n kinds,\n simpleLineWalkFastPath,\n segLevels,\n breakableFitAdvances,\n letterSpacing,\n spacingGraphemeCounts,\n discretionaryHyphenWidth,\n tabStopAdvance,\n chunks,\n segments,\n };\n }\n return {\n widths,\n lineEndFitAdvances,\n lineEndPaintAdvances,\n kinds,\n simpleLineWalkFastPath,\n segLevels,\n breakableFitAdvances,\n letterSpacing,\n spacingGraphemeCounts,\n discretionaryHyphenWidth,\n tabStopAdvance,\n chunks,\n };\n}\nfunction mapAnalysisChunksToPreparedChunks(chunks, preparedStartByAnalysisIndex, preparedEndSegmentIndex) {\n const preparedChunks = [];\n for (let i = 0; i < chunks.length; i++) {\n const chunk = chunks[i];\n const startSegmentIndex = chunk.startSegmentIndex < preparedStartByAnalysisIndex.length\n ? preparedStartByAnalysisIndex[chunk.startSegmentIndex]\n : preparedEndSegmentIndex;\n const endSegmentIndex = chunk.endSegmentIndex < preparedStartByAnalysisIndex.length\n ? preparedStartByAnalysisIndex[chunk.endSegmentIndex]\n : preparedEndSegmentIndex;\n const consumedEndSegmentIndex = chunk.consumedEndSegmentIndex < preparedStartByAnalysisIndex.length\n ? preparedStartByAnalysisIndex[chunk.consumedEndSegmentIndex]\n : preparedEndSegmentIndex;\n preparedChunks.push({\n startSegmentIndex,\n endSegmentIndex,\n consumedEndSegmentIndex,\n });\n }\n return preparedChunks;\n}\nfunction prepareInternal(text, font, includeSegments, options) {\n const wordBreak = options?.wordBreak ?? 'normal';\n const letterSpacing = options?.letterSpacing ?? 0;\n const analysis = analyzeText(text, getEngineProfile(), options?.whiteSpace, wordBreak);\n return measureAnalysis(analysis, font, includeSegments, wordBreak, letterSpacing);\n}\n// Prepare text for layout. Segments the text, measures each segment via canvas,\n// and stores the widths for fast relayout at any width. Call once per text block\n// (e.g. when a comment first appears). The result is width-independent — the\n// same PreparedText can be laid out at any maxWidth and lineHeight via layout().\n//\n// Steps:\n// 1. Normalize collapsible whitespace (CSS white-space: normal behavior)\n// 2. Segment via Intl.Segmenter (handles CJK, Thai, etc.)\n// 3. Merge punctuation into preceding word (\"better.\" as one unit)\n// 4. Split CJK words into individual graphemes (per-character line breaks)\n// 5. Measure each segment via canvas measureText, cache by (segment, font)\n// 6. Pre-measure graphemes of long words (for overflow-wrap: break-word)\n// 7. Correct emoji canvas inflation (auto-detected per font size)\n// 8. Optionally compute rich-path bidi metadata for custom renderers\nexport function prepare(text, font, options) {\n return prepareInternal(text, font, false, options);\n}\n// Rich variant used by callers that need enough information to render the\n// laid-out lines themselves.\nexport function prepareWithSegments(text, font, options) {\n return prepareInternal(text, font, true, options);\n}\nfunction getInternalPrepared(prepared) {\n return prepared;\n}\n// Layout prepared text at a given max width and caller-provided lineHeight.\n// Pure arithmetic on cached widths — no canvas calls, no DOM reads, no string\n// operations, no allocations.\n// ~0.0002ms per text block. Call on every resize.\n//\n// Line breaking rules (matching CSS white-space: normal + overflow-wrap: break-word):\n// - Break before any non-space segment that would overflow the line\n// - Trailing whitespace hangs past the line edge (doesn't trigger breaks)\n// - Segments wider than maxWidth are broken at grapheme boundaries\nexport function layout(prepared, maxWidth, lineHeight) {\n // Keep the resize hot path specialized. `layoutWithLines()` shares the same\n // break semantics but also tracks line ranges; the extra bookkeeping is too\n // expensive to pay on every hot-path `layout()` call.\n const lineCount = countPreparedLines(getInternalPrepared(prepared), maxWidth);\n return { lineCount, height: lineCount * lineHeight };\n}\nfunction createLayoutLine(prepared, cache, width, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex) {\n return {\n text: buildLineTextFromRange(prepared, cache, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex),\n width,\n start: {\n segmentIndex: startSegmentIndex,\n graphemeIndex: startGraphemeIndex,\n },\n end: {\n segmentIndex: endSegmentIndex,\n graphemeIndex: endGraphemeIndex,\n },\n };\n}\nfunction createLayoutLineRange(width, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex) {\n return {\n width,\n start: {\n segmentIndex: startSegmentIndex,\n graphemeIndex: startGraphemeIndex,\n },\n end: {\n segmentIndex: endSegmentIndex,\n graphemeIndex: endGraphemeIndex,\n },\n };\n}\nexport function materializeLineRange(prepared, line) {\n return createLayoutLine(prepared, getLineTextCache(prepared), line.width, line.start.segmentIndex, line.start.graphemeIndex, line.end.segmentIndex, line.end.graphemeIndex);\n}\n// Batch low-level line-range pass. This is the non-materializing counterpart\n// to layoutWithLines(), useful for shrinkwrap and other aggregate stats work.\nexport function walkLineRanges(prepared, maxWidth, onLine) {\n if (prepared.widths.length === 0)\n return 0;\n return walkPreparedLinesRaw(getInternalPrepared(prepared), maxWidth, (width, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex) => {\n onLine(createLayoutLineRange(width, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex));\n });\n}\nexport function measureLineStats(prepared, maxWidth) {\n return measurePreparedLineGeometry(getInternalPrepared(prepared), maxWidth);\n}\n// Intrinsic-width helper for rich/userland layout work. This asks \"how wide is\n// the prepared text when container width is not the thing forcing wraps?\".\n// Explicit hard breaks still count, so this returns the widest forced line.\nexport function measureNaturalWidth(prepared) {\n let maxWidth = 0;\n walkPreparedLinesRaw(getInternalPrepared(prepared), Number.POSITIVE_INFINITY, width => {\n if (width > maxWidth)\n maxWidth = width;\n });\n return maxWidth;\n}\nexport function layoutNextLine(prepared, start, maxWidth) {\n const internal = getInternalPrepared(prepared);\n const end = {\n segmentIndex: start.segmentIndex,\n graphemeIndex: start.graphemeIndex,\n };\n const chunkIndex = normalizePreparedLineStart(internal, end);\n if (chunkIndex < 0)\n return null;\n const lineStartSegmentIndex = end.segmentIndex;\n const lineStartGraphemeIndex = end.graphemeIndex;\n const width = stepPreparedLineGeometryFromChunk(internal, end, chunkIndex, maxWidth);\n if (width === null)\n return null;\n return createLayoutLine(prepared, getLineTextCache(prepared), width, lineStartSegmentIndex, lineStartGraphemeIndex, end.segmentIndex, end.graphemeIndex);\n}\nexport function layoutNextLineRange(prepared, start, maxWidth) {\n const internal = getInternalPrepared(prepared);\n const end = {\n segmentIndex: start.segmentIndex,\n graphemeIndex: start.graphemeIndex,\n };\n const chunkIndex = normalizePreparedLineStart(internal, end);\n if (chunkIndex < 0)\n return null;\n const lineStartSegmentIndex = end.segmentIndex;\n const lineStartGraphemeIndex = end.graphemeIndex;\n const width = stepPreparedLineGeometryFromChunk(internal, end, chunkIndex, maxWidth);\n if (width === null)\n return null;\n return createLayoutLineRange(width, lineStartSegmentIndex, lineStartGraphemeIndex, end.segmentIndex, end.graphemeIndex);\n}\n// Rich layout API for callers that want the actual line contents and widths.\n// Caller still supplies lineHeight at layout time. Mirrors layout()'s break\n// decisions, but keeps extra per-line bookkeeping so it should stay off the\n// resize hot path.\nexport function layoutWithLines(prepared, maxWidth, lineHeight) {\n const lines = [];\n if (prepared.widths.length === 0)\n return { lineCount: 0, height: 0, lines };\n const graphemeCache = getLineTextCache(prepared);\n const lineCount = walkPreparedLinesRaw(getInternalPrepared(prepared), maxWidth, (width, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex) => {\n lines.push(createLayoutLine(prepared, graphemeCache, width, startSegmentIndex, startGraphemeIndex, endSegmentIndex, endGraphemeIndex));\n });\n return { lineCount, height: lineCount * lineHeight, lines };\n}\nexport function clearCache() {\n clearAnalysisCaches();\n sharedGraphemeSegmenter = null;\n clearLineTextCaches();\n clearMeasurementCaches();\n}\nexport function setLocale(locale) {\n setAnalysisLocale(locale);\n clearCache();\n}\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","var has = Object.prototype.hasOwnProperty;\n\nexport function dequal(foo, bar) {\n\tvar ctor, len;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","function shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\nexport { shallow as default };\n","var Rule = function Rule(name, fn, args, modifiers) {\n this.name = name;\n this.fn = fn;\n this.args = args;\n this.modifiers = modifiers;\n};\n\nRule.prototype._test = function _test (value) {\n var fn = this.fn;\n\n try {\n testAux(this.modifiers.slice(), fn, this)(value);\n } catch (ex) {\n fn = function () { return false; };\n }\n\n try {\n return testAux(this.modifiers.slice(), fn, this)(value);\n } catch (ex$1) {\n return false;\n }\n};\n\nRule.prototype._check = function _check (value) {\n try {\n testAux(this.modifiers.slice(), this.fn, this)(value);\n } catch (ex) {\n if (testAux(this.modifiers.slice(), function (it) { return it; }, this)(false)) {\n return;\n }\n }\n\n if (!testAux(this.modifiers.slice(), this.fn, this)(value)) {\n throw null;\n }\n};\n\nRule.prototype._testAsync = function _testAsync (value) {\n var this$1 = this;\n\n return new Promise(function (resolve, reject) {\n testAsyncAux(\n this$1.modifiers.slice(),\n this$1.fn,\n this$1\n )(value)\n .then(function (valid) {\n if (valid) {\n resolve(value);\n } else {\n reject(null);\n }\n })\n .catch(function (ex) { return reject(ex); });\n });\n};\n\nfunction pickFn(fn, variant) {\n if ( variant === void 0 ) variant = 'simple';\n\n return typeof fn === 'object' ? fn[variant] : fn;\n}\n\nfunction testAux(modifiers, fn, rule) {\n if (modifiers.length) {\n var modifier = modifiers.shift();\n var nextFn = testAux(modifiers, fn, rule);\n return modifier.perform(nextFn, rule);\n } else {\n return pickFn(fn);\n }\n}\n\nfunction testAsyncAux(modifiers, fn, rule) {\n if (modifiers.length) {\n var modifier = modifiers.shift();\n var nextFn = testAsyncAux(modifiers, fn, rule);\n return modifier.performAsync(nextFn, rule);\n } else {\n return function (value) { return Promise.resolve(pickFn(fn, 'async')(value)); };\n }\n}\n\nvar Modifier = function Modifier(name, perform, performAsync) {\n this.name = name;\n this.perform = perform;\n this.performAsync = performAsync;\n};\n\nvar ValidationError = /*@__PURE__*/(function (Error) {\n function ValidationError(rule, value, cause, target) {\n var remaining = [], len = arguments.length - 4;\n while ( len-- > 0 ) remaining[ len ] = arguments[ len + 4 ];\n\n Error.call(this, remaining);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ValidationError);\n }\n this.rule = rule;\n this.value = value;\n this.cause = cause;\n this.target = target;\n }\n\n if ( Error ) ValidationError.__proto__ = Error;\n ValidationError.prototype = Object.create( Error && Error.prototype );\n ValidationError.prototype.constructor = ValidationError;\n\n return ValidationError;\n}(Error));\n\nvar Context = function Context(chain, nextRuleModifiers) {\n if ( chain === void 0 ) chain = [];\n if ( nextRuleModifiers === void 0 ) nextRuleModifiers = [];\n\n this.chain = chain;\n this.nextRuleModifiers = nextRuleModifiers;\n};\n\nContext.prototype._applyRule = function _applyRule (ruleFn, name) {\n var this$1 = this;\n\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n this$1.chain.push(\n new Rule(name, ruleFn.apply(this$1, args), args, this$1.nextRuleModifiers)\n );\n this$1.nextRuleModifiers = [];\n return this$1;\n };\n};\n\nContext.prototype._applyModifier = function _applyModifier (modifier, name) {\n this.nextRuleModifiers.push(\n new Modifier(name, modifier.simple, modifier.async)\n );\n return this;\n};\n\nContext.prototype._clone = function _clone () {\n return new Context(this.chain.slice(), this.nextRuleModifiers.slice());\n};\n\nContext.prototype.test = function test (value) {\n return this.chain.every(function (rule) { return rule._test(value); });\n};\n\nContext.prototype.testAll = function testAll (value) {\n var err = [];\n this.chain.forEach(function (rule) {\n try {\n rule._check(value);\n } catch (ex) {\n err.push(new ValidationError(rule, value, ex));\n }\n });\n return err;\n};\n\nContext.prototype.check = function check (value) {\n this.chain.forEach(function (rule) {\n try {\n rule._check(value);\n } catch (ex) {\n throw new ValidationError(rule, value, ex);\n }\n });\n};\n\nContext.prototype.testAsync = function testAsync (value) {\n var this$1 = this;\n\n return new Promise(function (resolve, reject) {\n executeAsyncRules(value, this$1.chain.slice(), resolve, reject);\n });\n};\n\nfunction executeAsyncRules(value, rules, resolve, reject) {\n if (rules.length) {\n var rule = rules.shift();\n rule._testAsync(value).then(\n function () {\n executeAsyncRules(value, rules, resolve, reject);\n },\n function (cause) {\n reject(new ValidationError(rule, value, cause));\n }\n );\n } else {\n resolve(value);\n }\n}\n\nvar consideredEmpty = function (value, considerTrimmedEmptyString) {\n if (\n considerTrimmedEmptyString &&\n typeof value === 'string' &&\n value.trim().length === 0\n ) {\n return true;\n }\n\n return value === undefined || value === null;\n};\n\nfunction optional (validation, considerTrimmedEmptyString) {\n if ( considerTrimmedEmptyString === void 0 ) considerTrimmedEmptyString = false;\n\n return ({\n simple: function (value) { return consideredEmpty(value, considerTrimmedEmptyString) ||\n validation.check(value) === undefined; },\n async: function (value) { return consideredEmpty(value, considerTrimmedEmptyString) ||\n validation.testAsync(value); },\n});\n}\n\nfunction v8n() {\n return typeof Proxy !== 'undefined'\n ? proxyContext(new Context())\n : proxylessContext(new Context());\n}\n\n// Custom rules\nvar customRules = {};\n\nv8n.extend = function(newRules) {\n Object.assign(customRules, newRules);\n};\n\nv8n.clearCustomRules = function() {\n customRules = {};\n};\n\nfunction proxyContext(context) {\n return new Proxy(context, {\n get: function get(obj, prop) {\n if (prop in obj) {\n return obj[prop];\n }\n\n var newContext = proxyContext(context._clone());\n\n if (prop in availableModifiers) {\n return newContext._applyModifier(availableModifiers[prop], prop);\n }\n if (prop in customRules) {\n return newContext._applyRule(customRules[prop], prop);\n }\n if (prop in availableRules) {\n return newContext._applyRule(availableRules[prop], prop);\n }\n },\n });\n}\n\nfunction proxylessContext(context) {\n var addRuleSet = function (ruleSet, targetContext) {\n Object.keys(ruleSet).forEach(function (prop) {\n targetContext[prop] = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var newContext = proxylessContext(targetContext._clone());\n var contextWithRuleApplied = newContext._applyRule(\n ruleSet[prop],\n prop\n ).apply(void 0, args);\n return contextWithRuleApplied;\n };\n });\n return targetContext;\n };\n\n var contextWithAvailableRules = addRuleSet(availableRules, context);\n var contextWithAllRules = addRuleSet(\n customRules,\n contextWithAvailableRules\n );\n\n Object.keys(availableModifiers).forEach(function (prop) {\n Object.defineProperty(contextWithAllRules, prop, {\n get: function () {\n var newContext = proxylessContext(contextWithAllRules._clone());\n return newContext._applyModifier(availableModifiers[prop], prop);\n },\n });\n });\n\n return contextWithAllRules;\n}\n\nvar availableModifiers = {\n not: {\n simple: function (fn) { return function (value) { return !fn(value); }; },\n async: function (fn) { return function (value) { return Promise.resolve(fn(value))\n .then(function (result) { return !result; })\n .catch(function () { return true; }); }; },\n },\n\n some: {\n simple: function (fn) { return function (value) {\n return split(value).some(function (item) {\n try {\n return fn(item);\n } catch (ex) {\n return false;\n }\n });\n }; },\n async: function (fn) { return function (value) {\n return Promise.all(\n split(value).map(function (item) {\n try {\n return fn(item).catch(function () { return false; });\n } catch (ex) {\n return false;\n }\n })\n ).then(function (result) { return result.some(Boolean); });\n }; },\n },\n\n every: {\n simple: function (fn) { return function (value) { return value !== false && split(value).every(fn); }; },\n async: function (fn) { return function (value) { return Promise.all(split(value).map(fn)).then(function (result) { return result.every(Boolean); }); }; },\n },\n\n strict: {\n simple: function (fn, rule) { return function (value) {\n if (isSchemaRule(rule) && value && typeof value === 'object') {\n return (\n Object.keys(rule.args[0]).length === Object.keys(value).length &&\n fn(value)\n );\n }\n return fn(value);\n }; },\n async: function (fn, rule) { return function (value) { return Promise.resolve(fn(value))\n .then(function (result) {\n if (isSchemaRule(rule) && value && typeof value === 'object') {\n return (\n Object.keys(rule.args[0]).length === Object.keys(value).length &&\n result\n );\n }\n return result;\n })\n .catch(function () { return false; }); }; },\n },\n};\n\nfunction isSchemaRule(rule) {\n return (\n rule &&\n rule.name === 'schema' &&\n rule.args.length > 0 &&\n typeof rule.args[0] === 'object'\n );\n}\n\nfunction split(value) {\n if (typeof value === 'string') {\n return value.split('');\n }\n return value;\n}\n\nvar availableRules = {\n // Value\n\n equal: function (expected) { return function (value) { return value == expected; }; },\n\n exact: function (expected) { return function (value) { return value === expected; }; },\n\n // Types\n\n number: function (allowInfinite) {\n if ( allowInfinite === void 0 ) allowInfinite = true;\n\n return function (value) { return typeof value === 'number' && (allowInfinite || isFinite(value)); };\n},\n\n integer: function () { return function (value) {\n var isInteger = Number.isInteger || isIntegerPolyfill;\n return isInteger(value);\n }; },\n\n numeric: function () { return function (value) { return !isNaN(parseFloat(value)) && isFinite(value); }; },\n\n string: function () { return testType('string'); },\n\n boolean: function () { return testType('boolean'); },\n\n undefined: function () { return testType('undefined'); },\n\n null: function () { return testType('null'); },\n\n array: function () { return testType('array'); },\n\n object: function () { return testType('object'); },\n\n instanceOf: function (instance) { return function (value) { return value instanceof instance; }; },\n\n // Pattern\n\n pattern: function (expected) { return function (value) { return expected.test(value); }; },\n\n lowercase: function () { return function (value) {\n return (\n typeof value === 'boolean' ||\n (value === value.toLowerCase() && value.trim() !== '')\n );\n }; },\n\n uppercase: function () { return function (value) { return value === value.toUpperCase() && value.trim() !== ''; }; },\n\n vowel: function () { return function (value) { return /^[aeiou]+$/i.test(value); }; },\n\n consonant: function () { return function (value) { return /^(?=[^aeiou])([a-z]+)$/i.test(value); }; },\n\n // Value at\n\n first: function (expected) { return function (value) { return value[0] == expected; }; },\n\n last: function (expected) { return function (value) { return value[value.length - 1] == expected; }; },\n\n // Length\n\n empty: function () { return function (value) { return value.length === 0; }; },\n\n length: function (min, max) { return function (value) { return value.length >= min && value.length <= (max || min); }; },\n\n minLength: function (min) { return function (value) { return value.length >= min; }; },\n\n maxLength: function (max) { return function (value) { return value.length <= max; }; },\n\n // Range\n\n negative: function () { return function (value) { return value < 0; }; },\n\n positive: function () { return function (value) { return value >= 0; }; },\n\n between: function (a, b) { return function (value) { return value >= a && value <= b; }; },\n\n range: function (a, b) { return function (value) { return value >= a && value <= b; }; },\n\n lessThan: function (n) { return function (value) { return value < n; }; },\n\n lessThanOrEqual: function (n) { return function (value) { return value <= n; }; },\n\n greaterThan: function (n) { return function (value) { return value > n; }; },\n\n greaterThanOrEqual: function (n) { return function (value) { return value >= n; }; },\n\n // Divisible\n\n even: function () { return function (value) { return value % 2 === 0; }; },\n\n odd: function () { return function (value) { return value % 2 !== 0; }; },\n\n includes: function (expected) { return function (value) { return ~value.indexOf(expected); }; },\n\n schema: function (schema) { return testSchema(schema); },\n\n // branching\n\n passesAnyOf: function () {\n var validations = [], len = arguments.length;\n while ( len-- ) validations[ len ] = arguments[ len ];\n\n return function (value) { return validations.some(function (validation) { return validation.test(value); }); };\n},\n\n optional: optional,\n};\n\nfunction testType(expected) {\n return function (value) {\n return (\n (Array.isArray(value) && expected === 'array') ||\n (value === null && expected === 'null') ||\n typeof value === expected\n );\n };\n}\n\nfunction isIntegerPolyfill(value) {\n return (\n typeof value === 'number' && isFinite(value) && Math.floor(value) === value\n );\n}\n\nfunction testSchema(schema) {\n return {\n simple: function (value) {\n var causes = [];\n Object.keys(schema).forEach(function (key) {\n var nestedValidation = schema[key];\n try {\n nestedValidation.check((value || {})[key]);\n } catch (ex) {\n ex.target = key;\n causes.push(ex);\n }\n });\n if (causes.length > 0) {\n throw causes;\n }\n return true;\n },\n async: function (value) {\n var causes = [];\n var nested = Object.keys(schema).map(function (key) {\n var nestedValidation = schema[key];\n return nestedValidation.testAsync((value || {})[key]).catch(function (ex) {\n ex.target = key;\n causes.push(ex);\n });\n });\n return Promise.all(nested).then(function () {\n if (causes.length > 0) {\n throw causes;\n }\n\n return true;\n });\n },\n };\n}\n\nexport default v8n;\n","var e=\"colors\",t=\"sizes\",r=\"space\",n={gap:r,gridGap:r,columnGap:r,gridColumnGap:r,rowGap:r,gridRowGap:r,inset:r,insetBlock:r,insetBlockEnd:r,insetBlockStart:r,insetInline:r,insetInlineEnd:r,insetInlineStart:r,margin:r,marginTop:r,marginRight:r,marginBottom:r,marginLeft:r,marginBlock:r,marginBlockEnd:r,marginBlockStart:r,marginInline:r,marginInlineEnd:r,marginInlineStart:r,padding:r,paddingTop:r,paddingRight:r,paddingBottom:r,paddingLeft:r,paddingBlock:r,paddingBlockEnd:r,paddingBlockStart:r,paddingInline:r,paddingInlineEnd:r,paddingInlineStart:r,top:r,right:r,bottom:r,left:r,scrollMargin:r,scrollMarginTop:r,scrollMarginRight:r,scrollMarginBottom:r,scrollMarginLeft:r,scrollMarginX:r,scrollMarginY:r,scrollMarginBlock:r,scrollMarginBlockEnd:r,scrollMarginBlockStart:r,scrollMarginInline:r,scrollMarginInlineEnd:r,scrollMarginInlineStart:r,scrollPadding:r,scrollPaddingTop:r,scrollPaddingRight:r,scrollPaddingBottom:r,scrollPaddingLeft:r,scrollPaddingX:r,scrollPaddingY:r,scrollPaddingBlock:r,scrollPaddingBlockEnd:r,scrollPaddingBlockStart:r,scrollPaddingInline:r,scrollPaddingInlineEnd:r,scrollPaddingInlineStart:r,fontSize:\"fontSizes\",background:e,backgroundColor:e,backgroundImage:e,borderImage:e,border:e,borderBlock:e,borderBlockEnd:e,borderBlockStart:e,borderBottom:e,borderBottomColor:e,borderColor:e,borderInline:e,borderInlineEnd:e,borderInlineStart:e,borderLeft:e,borderLeftColor:e,borderRight:e,borderRightColor:e,borderTop:e,borderTopColor:e,caretColor:e,color:e,columnRuleColor:e,fill:e,outline:e,outlineColor:e,stroke:e,textDecorationColor:e,fontFamily:\"fonts\",fontWeight:\"fontWeights\",lineHeight:\"lineHeights\",letterSpacing:\"letterSpacings\",blockSize:t,minBlockSize:t,maxBlockSize:t,inlineSize:t,minInlineSize:t,maxInlineSize:t,width:t,minWidth:t,maxWidth:t,height:t,minHeight:t,maxHeight:t,flexBasis:t,gridTemplateColumns:t,gridTemplateRows:t,borderWidth:\"borderWidths\",borderTopWidth:\"borderWidths\",borderRightWidth:\"borderWidths\",borderBottomWidth:\"borderWidths\",borderLeftWidth:\"borderWidths\",borderStyle:\"borderStyles\",borderTopStyle:\"borderStyles\",borderRightStyle:\"borderStyles\",borderBottomStyle:\"borderStyles\",borderLeftStyle:\"borderStyles\",borderRadius:\"radii\",borderTopLeftRadius:\"radii\",borderTopRightRadius:\"radii\",borderBottomRightRadius:\"radii\",borderBottomLeftRadius:\"radii\",boxShadow:\"shadows\",textShadow:\"shadows\",transition:\"transitions\",zIndex:\"zIndices\"},i=(e,t)=>\"function\"==typeof t?{\"()\":Function.prototype.toString.call(t)}:t,o=()=>{const e=Object.create(null);return(t,r,...n)=>{const o=(e=>JSON.stringify(e,i))(t);return o in e?e[o]:e[o]=r(t,...n)}},l=Symbol.for(\"sxs.internal\"),s=(e,t)=>Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)),a=e=>{for(const t in e)return!0;return!1},{hasOwnProperty:c}=Object.prototype,d=e=>e.includes(\"-\")?e:e.replace(/[A-Z]/g,(e=>\"-\"+e.toLowerCase())),g=/\\s+(?![^()]*\\))/,p=e=>t=>e(...\"string\"==typeof t?String(t).split(g):[t]),u={appearance:e=>({WebkitAppearance:e,appearance:e}),backfaceVisibility:e=>({WebkitBackfaceVisibility:e,backfaceVisibility:e}),backdropFilter:e=>({WebkitBackdropFilter:e,backdropFilter:e}),backgroundClip:e=>({WebkitBackgroundClip:e,backgroundClip:e}),boxDecorationBreak:e=>({WebkitBoxDecorationBreak:e,boxDecorationBreak:e}),clipPath:e=>({WebkitClipPath:e,clipPath:e}),content:e=>({content:e.includes('\"')||e.includes(\"'\")||/^([A-Za-z]+\\([^]*|[^]*-quote|inherit|initial|none|normal|revert|unset)$/.test(e)?e:`\"${e}\"`}),hyphens:e=>({WebkitHyphens:e,hyphens:e}),maskImage:e=>({WebkitMaskImage:e,maskImage:e}),maskSize:e=>({WebkitMaskSize:e,maskSize:e}),tabSize:e=>({MozTabSize:e,tabSize:e}),textSizeAdjust:e=>({WebkitTextSizeAdjust:e,textSizeAdjust:e}),userSelect:e=>({WebkitUserSelect:e,userSelect:e}),marginBlock:p(((e,t)=>({marginBlockStart:e,marginBlockEnd:t||e}))),marginInline:p(((e,t)=>({marginInlineStart:e,marginInlineEnd:t||e}))),maxSize:p(((e,t)=>({maxBlockSize:e,maxInlineSize:t||e}))),minSize:p(((e,t)=>({minBlockSize:e,minInlineSize:t||e}))),paddingBlock:p(((e,t)=>({paddingBlockStart:e,paddingBlockEnd:t||e}))),paddingInline:p(((e,t)=>({paddingInlineStart:e,paddingInlineEnd:t||e})))},h=/([\\d.]+)([^]*)/,f=(e,t)=>e.length?e.reduce(((e,r)=>(e.push(...t.map((e=>e.includes(\"&\")?e.replace(/&/g,/[ +>|~]/.test(r)&&/&.*&/.test(e)?`:is(${r})`:r):r+\" \"+e))),e)),[]):t,m=(e,t)=>e in b&&\"string\"==typeof t?t.replace(/^((?:[^]*[^\\w-])?)(fit-content|stretch)((?:[^\\w-][^]*)?)$/,((t,r,n,i)=>r+(\"stretch\"===n?`-moz-available${i};${d(e)}:${r}-webkit-fill-available`:`-moz-fit-content${i};${d(e)}:${r}fit-content`)+i)):String(t),b={blockSize:1,height:1,inlineSize:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,width:1},S=e=>e?e+\"-\":\"\",k=(e,t,r)=>e.replace(/([+-])?((?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[Ee][+-]?\\d+)?)?(\\$|--)([$\\w-]+)/g,((e,n,i,o,l)=>\"$\"==o==!!i?e:(n||\"--\"==o?\"calc(\":\"\")+\"var(--\"+(\"$\"===o?S(t)+(l.includes(\"$\")?\"\":S(r))+l.replace(/\\$/g,\"-\"):l)+\")\"+(n||\"--\"==o?\"*\"+(n||\"\")+(i||\"1\")+\")\":\"\"))),y=/\\s*,\\s*(?![^()]*\\))/,B=Object.prototype.toString,$=(e,t,r,n,i)=>{let o,l,s;const a=(e,t,r)=>{let c,g;const p=e=>{for(c in e){const R=64===c.charCodeAt(0),z=R&&Array.isArray(e[c])?e[c]:[e[c]];for(g of z){const e=/[A-Z]/.test($=c)?$:$.replace(/-[^]/g,(e=>e[1].toUpperCase())),z=\"object\"==typeof g&&g&&g.toString===B&&(!n.utils[e]||!t.length);if(e in n.utils&&!z){const t=n.utils[e];if(t!==l){l=t,p(t(g)),l=null;continue}}else if(e in u){const t=u[e];if(t!==s){s=t,p(t(g)),s=null;continue}}if(R&&(b=c.slice(1)in n.media?\"@media \"+n.media[c.slice(1)]:c,c=b.replace(/\\(\\s*([\\w-]+)\\s*(=|<|<=|>|>=)\\s*([\\w-]+)\\s*(?:(<|<=|>|>=)\\s*([\\w-]+)\\s*)?\\)/g,((e,t,r,n,i,o)=>{const l=h.test(t),s=.0625*(l?-1:1),[a,c]=l?[n,t]:[t,n];return\"(\"+(\"=\"===r[0]?\"\":\">\"===r[0]===l?\"max-\":\"min-\")+a+\":\"+(\"=\"!==r[0]&&1===r.length?c.replace(h,((e,t,n)=>Number(t)+s*(\">\"===r?1:-1)+n)):c)+(i?\") and (\"+(\">\"===i[0]?\"min-\":\"max-\")+a+\":\"+(1===i.length?o.replace(h,((e,t,r)=>Number(t)+s*(\">\"===i?-1:1)+r)):o):\"\")+\")\"}))),z){const e=R?r.concat(c):[...r],n=R?[...t]:f(t,c.split(y));void 0!==o&&i(x(...o)),o=void 0,a(g,n,e)}else void 0===o&&(o=[[],t,r]),c=R||36!==c.charCodeAt(0)?c:`--${S(n.prefix)}${c.slice(1).replace(/\\$/g,\"-\")}`,g=z?g:\"number\"==typeof g?g&&e in I?String(g)+\"px\":String(g):k(m(e,null==g?\"\":g),n.prefix,n.themeMap[e]),o[0].push(`${R?`${c} `:`${d(c)}:`}${g}`)}}var b,$};p(e),void 0!==o&&i(x(...o)),o=void 0};a(e,t,r)},x=(e,t,r)=>`${r.map((e=>`${e}{`)).join(\"\")}${t.length?`${t.join(\",\")}{`:\"\"}${e.join(\";\")}${t.length?\"}\":\"\"}${Array(r.length?r.length+1:0).join(\"}\")}`,I={animationDelay:1,animationDuration:1,backgroundSize:1,blockSize:1,border:1,borderBlock:1,borderBlockEnd:1,borderBlockEndWidth:1,borderBlockStart:1,borderBlockStartWidth:1,borderBlockWidth:1,borderBottom:1,borderBottomLeftRadius:1,borderBottomRightRadius:1,borderBottomWidth:1,borderEndEndRadius:1,borderEndStartRadius:1,borderInlineEnd:1,borderInlineEndWidth:1,borderInlineStart:1,borderInlineStartWidth:1,borderInlineWidth:1,borderLeft:1,borderLeftWidth:1,borderRadius:1,borderRight:1,borderRightWidth:1,borderSpacing:1,borderStartEndRadius:1,borderStartStartRadius:1,borderTop:1,borderTopLeftRadius:1,borderTopRightRadius:1,borderTopWidth:1,borderWidth:1,bottom:1,columnGap:1,columnRule:1,columnRuleWidth:1,columnWidth:1,containIntrinsicSize:1,flexBasis:1,fontSize:1,gap:1,gridAutoColumns:1,gridAutoRows:1,gridTemplateColumns:1,gridTemplateRows:1,height:1,inlineSize:1,inset:1,insetBlock:1,insetBlockEnd:1,insetBlockStart:1,insetInline:1,insetInlineEnd:1,insetInlineStart:1,left:1,letterSpacing:1,margin:1,marginBlock:1,marginBlockEnd:1,marginBlockStart:1,marginBottom:1,marginInline:1,marginInlineEnd:1,marginInlineStart:1,marginLeft:1,marginRight:1,marginTop:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,offsetDistance:1,offsetRotate:1,outline:1,outlineOffset:1,outlineWidth:1,overflowClipMargin:1,padding:1,paddingBlock:1,paddingBlockEnd:1,paddingBlockStart:1,paddingBottom:1,paddingInline:1,paddingInlineEnd:1,paddingInlineStart:1,paddingLeft:1,paddingRight:1,paddingTop:1,perspective:1,right:1,rowGap:1,scrollMargin:1,scrollMarginBlock:1,scrollMarginBlockEnd:1,scrollMarginBlockStart:1,scrollMarginBottom:1,scrollMarginInline:1,scrollMarginInlineEnd:1,scrollMarginInlineStart:1,scrollMarginLeft:1,scrollMarginRight:1,scrollMarginTop:1,scrollPadding:1,scrollPaddingBlock:1,scrollPaddingBlockEnd:1,scrollPaddingBlockStart:1,scrollPaddingBottom:1,scrollPaddingInline:1,scrollPaddingInlineEnd:1,scrollPaddingInlineStart:1,scrollPaddingLeft:1,scrollPaddingRight:1,scrollPaddingTop:1,shapeMargin:1,textDecoration:1,textDecorationThickness:1,textIndent:1,textUnderlineOffset:1,top:1,transitionDelay:1,transitionDuration:1,verticalAlign:1,width:1,wordSpacing:1},R=e=>String.fromCharCode(e+(e>25?39:97)),z=e=>(e=>{let t,r=\"\";for(t=Math.abs(e);t>52;t=t/52|0)r=R(t%52)+r;return R(t%52)+r})(((e,t)=>{let r=t.length;for(;r;)e=33*e^t.charCodeAt(--r);return e})(5381,JSON.stringify(e))>>>0),W=[\"themed\",\"global\",\"styled\",\"onevar\",\"resonevar\",\"allvar\",\"inline\"],j=e=>{if(e.href&&!e.href.startsWith(location.origin))return!1;try{return!!e.cssRules}catch(e){return!1}},E=e=>{let t;const r=()=>{const{cssRules:e}=t.sheet;return[].map.call(e,((r,n)=>{const{cssText:i}=r;let o=\"\";if(i.startsWith(\"--sxs\"))return\"\";if(e[n-1]&&(o=e[n-1].cssText).startsWith(\"--sxs\")){if(!r.cssRules.length)return\"\";for(const e in t.rules)if(t.rules[e].group===r)return`--sxs{--sxs:${[...t.rules[e].cache].join(\" \")}}${i}`;return r.cssRules.length?`${o}${i}`:\"\"}return i})).join(\"\")},n=()=>{if(t){const{rules:e,sheet:r}=t;if(!r.deleteRule){for(;3===Object(Object(r.cssRules)[0]).type;)r.cssRules.splice(0,1);r.cssRules=[]}for(const t in e)delete e[t]}const i=Object(e).styleSheets||[];for(const e of i)if(j(e)){for(let i=0,o=e.cssRules;o[i];++i){const l=Object(o[i]);if(1!==l.type)continue;const s=Object(o[i+1]);if(4!==s.type)continue;++i;const{cssText:a}=l;if(!a.startsWith(\"--sxs\"))continue;const c=a.slice(14,-3).trim().split(/\\s+/),d=W[c[0]];d&&(t||(t={sheet:e,reset:n,rules:{},toString:r}),t.rules[d]={group:s,index:i,cache:new Set(c)})}if(t)break}if(!t){const i=(e,t)=>({type:t,cssRules:[],insertRule(e,t){this.cssRules.splice(t,0,i(e,{import:3,undefined:1}[(e.toLowerCase().match(/^@([a-z]+)/)||[])[1]]||4))},get cssText(){return\"@media{}\"===e?`@media{${[].map.call(this.cssRules,(e=>e.cssText)).join(\"\")}}`:e}});t={sheet:e?(e.head||e).appendChild(document.createElement(\"style\")).sheet:i(\"\",\"text/css\"),rules:{},reset:n,toString:r}}const{sheet:o,rules:l}=t;for(let e=W.length-1;e>=0;--e){const t=W[e];if(!l[t]){const r=W[e+1],n=l[r]?l[r].index:o.cssRules.length;o.insertRule(\"@media{}\",n),o.insertRule(`--sxs{--sxs:${e}}`,n),l[t]={group:o.cssRules[n+1],index:n,cache:new Set([e])}}v(l[t])}};return n(),t},v=e=>{const t=e.group;let r=t.cssRules.length;e.apply=e=>{try{t.insertRule(e,r),++r}catch(e){}}},T=Symbol(),w=o(),M=(e,t)=>w(e,(()=>(...r)=>{let n={type:null,composers:new Set};for(const t of r)if(null!=t)if(t[l]){null==n.type&&(n.type=t[l].type);for(const e of t[l].composers)n.composers.add(e)}else t.constructor!==Object||t.$$typeof?null==n.type&&(n.type=t):n.composers.add(C(t,e));return null==n.type&&(n.type=\"span\"),n.composers.size||n.composers.add([\"PJLV\",{},[],[],{},[]]),P(e,n,t)})),C=({variants:e,compoundVariants:t,defaultVariants:r,...n},i)=>{const o=`${S(i.prefix)}c-${z(n)}`,l=[],s=[],d=Object.create(null),g=[];for(const e in r)d[e]=String(r[e]);if(\"object\"==typeof e&&e)for(const t in e){p=d,u=t,c.call(p,u)||(d[t]=\"undefined\");const r=e[t];for(const e in r){const n={[t]:String(e)};\"undefined\"===String(e)&&g.push(t);const i=r[e],o=[n,i,!a(i)];l.push(o)}}var p,u;if(\"object\"==typeof t&&t)for(const e of t){let{css:t,...r}=e;t=\"object\"==typeof t&&t||{};for(const e in r)r[e]=String(r[e]);const n=[r,t,!a(t)];s.push(n)}return[o,n,l,s,d,g]},P=(e,t,r)=>{const[n,i,o,a]=L(t.composers),c=\"function\"==typeof t.type||t.type.$$typeof?(e=>{function t(){for(let r=0;r<t[T].length;r++){const[n,i]=t[T][r];e.rules[n].apply(i)}return t[T]=[],null}return t[T]=[],t.rules={},W.forEach((e=>t.rules[e]={apply:r=>t[T].push([e,r])})),t})(r):null,d=(c||r).rules,g=`.${n}${i.length>1?`:where(.${i.slice(1).join(\".\")})`:\"\"}`,p=l=>{l=\"object\"==typeof l&&l||A;const{css:s,...p}=l,u={};for(const e in o)if(delete p[e],e in l){let t=l[e];\"object\"==typeof t&&t?u[e]={\"@initial\":o[e],...t}:(t=String(t),u[e]=\"undefined\"!==t||a.has(e)?t:o[e])}else u[e]=o[e];const h=new Set([...i]);for(const[n,i,o,l]of t.composers){r.rules.styled.cache.has(n)||(r.rules.styled.cache.add(n),$(i,[`.${n}`],[],e,(e=>{d.styled.apply(e)})));const t=O(o,u,e.media),s=O(l,u,e.media,!0);for(const i of t)if(void 0!==i)for(const[t,o,l]of i){const i=`${n}-${z(o)}-${t}`;h.add(i);const s=(l?r.rules.resonevar:r.rules.onevar).cache,a=l?d.resonevar:d.onevar;s.has(i)||(s.add(i),$(o,[`.${i}`],[],e,(e=>{a.apply(e)})))}for(const t of s)if(void 0!==t)for(const[i,o]of t){const t=`${n}-${z(o)}-${i}`;h.add(t),r.rules.allvar.cache.has(t)||(r.rules.allvar.cache.add(t),$(o,[`.${t}`],[],e,(e=>{d.allvar.apply(e)})))}}if(\"object\"==typeof s&&s){const t=`${n}-i${z(s)}-css`;h.add(t),r.rules.inline.cache.has(t)||(r.rules.inline.cache.add(t),$(s,[`.${t}`],[],e,(e=>{d.inline.apply(e)})))}for(const e of String(l.className||\"\").trim().split(/\\s+/))e&&h.add(e);const f=p.className=[...h].join(\" \");return{type:t.type,className:f,selector:g,props:p,toString:()=>f,deferredInjector:c}};return s(p,{className:n,selector:g,[l]:t,toString:()=>(r.rules.styled.cache.has(n)||p(),n)})},L=e=>{let t=\"\";const r=[],n={},i=[];for(const[o,,,,l,s]of e){\"\"===t&&(t=o),r.push(o),i.push(...s);for(const e in l){const t=l[e];(void 0===n[e]||\"undefined\"!==t||s.includes(t))&&(n[e]=t)}}return[t,r,n,new Set(i)]},O=(e,t,r,n)=>{const i=[];e:for(let[o,l,s]of e){if(s)continue;let e,a=0,c=!1;for(e in o){const n=o[e];let i=t[e];if(i!==n){if(\"object\"!=typeof i||!i)continue e;{let e,t,o=0;for(const l in i){if(n===String(i[l])){if(\"@initial\"!==l){const e=l.slice(1);(t=t||[]).push(e in r?r[e]:l.replace(/^@media ?/,\"\")),c=!0}a+=o,e=!0}++o}if(t&&t.length&&(l={[\"@media \"+t.join(\", \")]:l}),!e)continue e}}}(i[a]=i[a]||[]).push([n?\"cv\":`${e}-${o[e]}`,l,c])}return i},A={},N=o(),D=(e,t)=>N(e,(()=>(...r)=>{const n=()=>{for(let n of r){n=\"object\"==typeof n&&n||{};let r=z(n);if(!t.rules.global.cache.has(r)){if(t.rules.global.cache.add(r),\"@import\"in n){let e=[].indexOf.call(t.sheet.cssRules,t.rules.themed.group)-1;for(let r of[].concat(n[\"@import\"]))r=r.includes('\"')||r.includes(\"'\")?r:`\"${r}\"`,t.sheet.insertRule(`@import ${r};`,e++);delete n[\"@import\"]}$(n,[],[],e,(e=>{t.rules.global.apply(e)}))}}return\"\"};return s(n,{toString:n})})),H=o(),V=(e,t)=>H(e,(()=>r=>{const n=`${S(e.prefix)}k-${z(r)}`,i=()=>{if(!t.rules.global.cache.has(n)){t.rules.global.cache.add(n);const i=[];$(r,[],[],e,(e=>i.push(e)));const o=`@keyframes ${n}{${i.join(\"\")}}`;t.rules.global.apply(o)}return n};return s(i,{get name(){return i()},toString:i})})),G=class{constructor(e,t,r,n){this.token=null==e?\"\":String(e),this.value=null==t?\"\":String(t),this.scale=null==r?\"\":String(r),this.prefix=null==n?\"\":String(n)}get computedValue(){return\"var(\"+this.variable+\")\"}get variable(){return\"--\"+S(this.prefix)+S(this.scale)+this.token}toString(){return this.computedValue}},F=o(),J=(e,t)=>F(e,(()=>(r,n)=>{n=\"object\"==typeof r&&r||Object(n);const i=`.${r=(r=\"string\"==typeof r?r:\"\")||`${S(e.prefix)}t-${z(n)}`}`,o={},l=[];for(const t in n){o[t]={};for(const r in n[t]){const i=`--${S(e.prefix)}${t}-${r}`,s=k(String(n[t][r]),e.prefix,t);o[t][r]=new G(r,s,t,e.prefix),l.push(`${i}:${s}`)}}const s=()=>{if(l.length&&!t.rules.themed.cache.has(r)){t.rules.themed.cache.add(r);const i=`${n===e.theme?\":root,\":\"\"}.${r}{${l.join(\";\")}}`;t.rules.themed.apply(i)}return r};return{...o,get className(){return s()},selector:i,toString:s}})),U=o();import Z from\"react\";var X,Y=o(),q=e=>{const t=(e=>{let t=!1;const r=U(e,(e=>{t=!0;const r=\"prefix\"in(e=\"object\"==typeof e&&e||{})?String(e.prefix):\"\",i=\"object\"==typeof e.media&&e.media||{},o=\"object\"==typeof e.root?e.root||null:globalThis.document||null,l=\"object\"==typeof e.theme&&e.theme||{},s={prefix:r,media:i,theme:l,themeMap:\"object\"==typeof e.themeMap&&e.themeMap||{...n},utils:\"object\"==typeof e.utils&&e.utils||{}},a=E(o),c={css:M(s,a),globalCss:D(s,a),keyframes:V(s,a),createTheme:J(s,a),reset(){a.reset(),c.theme.toString()},theme:{},sheet:a,config:s,prefix:r,getCssText:a.toString,toString:a.toString};return String(c.theme=c.createTheme(l)),c}));return t||r.reset(),r})(e);return t.styled=(({config:e,sheet:t})=>Y(e,(()=>{const r=M(e,t);return(...e)=>{const t=r(...e),n=t[l].type,i=Z.forwardRef(((e,r)=>{const i=e&&e.as||n,{props:o,deferredInjector:l}=t(e);return delete o.as,o.ref=r,l?Z.createElement(Z.Fragment,null,Z.createElement(i,o),Z.createElement(l,null)):Z.createElement(i,o)}));return i.className=t.className,i.displayName=`Styled.${n.displayName||n.name||n}`,i.selector=t.selector,i.toString=()=>t.selector,i[l]=t[l],i}})))(t),t},K=()=>X||(X=q()),Q=(...e)=>K().createTheme(...e),_=(...e)=>K().globalCss(...e),ee=(...e)=>K().keyframes(...e),te=(...e)=>K().css(...e),re=(...e)=>K().styled(...e);export{q as createStitches,Q as createTheme,te as css,n as defaultThemeMap,_ as globalCss,ee as keyframes,re as styled};\n//# sourceMappingUrl=index.map","function clamp(v, min, max) {\n return Math.max(min, Math.min(v, max));\n}\nconst V = {\n toVector(v, fallback) {\n if (v === undefined) v = fallback;\n return Array.isArray(v) ? v : [v, v];\n },\n add(v1, v2) {\n return [v1[0] + v2[0], v1[1] + v2[1]];\n },\n sub(v1, v2) {\n return [v1[0] - v2[0], v1[1] - v2[1]];\n },\n addTo(v1, v2) {\n v1[0] += v2[0];\n v1[1] += v2[1];\n },\n subTo(v1, v2) {\n v1[0] -= v2[0];\n v1[1] -= v2[1];\n }\n};\nfunction rubberband(distance, dimension, constant) {\n if (dimension === 0 || Math.abs(dimension) === Infinity) return Math.pow(distance, constant * 5);\n return distance * dimension * constant / (dimension + constant * distance);\n}\nfunction rubberbandIfOutOfBounds(position, min, max, constant = 0.15) {\n if (constant === 0) return clamp(position, min, max);\n if (position < min) return -rubberband(min - position, max - min, constant) + min;\n if (position > max) return +rubberband(position - max, max - min, constant) + max;\n return position;\n}\nfunction computeRubberband(bounds, [Vx, Vy], [Rx, Ry]) {\n const [[X0, X1], [Y0, Y1]] = bounds;\n return [rubberbandIfOutOfBounds(Vx, X0, X1, Rx), rubberbandIfOutOfBounds(Vy, Y0, Y1, Ry)];\n}\n\nexport { V, computeRubberband as c, rubberbandIfOutOfBounds as r };\n","import { V, c as computeRubberband } from './maths-0ab39ae9.esm.js';\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\nconst EVENT_TYPE_MAP = {\n pointer: {\n start: 'down',\n change: 'move',\n end: 'up'\n },\n mouse: {\n start: 'down',\n change: 'move',\n end: 'up'\n },\n touch: {\n start: 'start',\n change: 'move',\n end: 'end'\n },\n gesture: {\n start: 'start',\n change: 'change',\n end: 'end'\n }\n};\nfunction capitalize(string) {\n if (!string) return '';\n return string[0].toUpperCase() + string.slice(1);\n}\nconst actionsWithoutCaptureSupported = ['enter', 'leave'];\nfunction hasCapture(capture = false, actionKey) {\n return capture && !actionsWithoutCaptureSupported.includes(actionKey);\n}\nfunction toHandlerProp(device, action = '', capture = false) {\n const deviceProps = EVENT_TYPE_MAP[device];\n const actionKey = deviceProps ? deviceProps[action] || action : action;\n return 'on' + capitalize(device) + capitalize(actionKey) + (hasCapture(capture, actionKey) ? 'Capture' : '');\n}\nconst pointerCaptureEvents = ['gotpointercapture', 'lostpointercapture'];\nfunction parseProp(prop) {\n let eventKey = prop.substring(2).toLowerCase();\n const passive = !!~eventKey.indexOf('passive');\n if (passive) eventKey = eventKey.replace('passive', '');\n const captureKey = pointerCaptureEvents.includes(eventKey) ? 'capturecapture' : 'capture';\n const capture = !!~eventKey.indexOf(captureKey);\n if (capture) eventKey = eventKey.replace('capture', '');\n return {\n device: eventKey,\n capture,\n passive\n };\n}\nfunction toDomEventType(device, action = '') {\n const deviceProps = EVENT_TYPE_MAP[device];\n const actionKey = deviceProps ? deviceProps[action] || action : action;\n return device + actionKey;\n}\nfunction isTouch(event) {\n return 'touches' in event;\n}\nfunction getPointerType(event) {\n if (isTouch(event)) return 'touch';\n if ('pointerType' in event) return event.pointerType;\n return 'mouse';\n}\nfunction getCurrentTargetTouchList(event) {\n return Array.from(event.touches).filter(e => {\n var _event$currentTarget, _event$currentTarget$;\n return e.target === event.currentTarget || ((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || (_event$currentTarget$ = _event$currentTarget.contains) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.call(_event$currentTarget, e.target));\n });\n}\nfunction getTouchList(event) {\n return event.type === 'touchend' || event.type === 'touchcancel' ? event.changedTouches : event.targetTouches;\n}\nfunction getValueEvent(event) {\n return isTouch(event) ? getTouchList(event)[0] : event;\n}\nfunction distanceAngle(P1, P2) {\n try {\n const dx = P2.clientX - P1.clientX;\n const dy = P2.clientY - P1.clientY;\n const cx = (P2.clientX + P1.clientX) / 2;\n const cy = (P2.clientY + P1.clientY) / 2;\n const distance = Math.hypot(dx, dy);\n const angle = -(Math.atan2(dx, dy) * 180) / Math.PI;\n const origin = [cx, cy];\n return {\n angle,\n distance,\n origin\n };\n } catch (_unused) {}\n return null;\n}\nfunction touchIds(event) {\n return getCurrentTargetTouchList(event).map(touch => touch.identifier);\n}\nfunction touchDistanceAngle(event, ids) {\n const [P1, P2] = Array.from(event.touches).filter(touch => ids.includes(touch.identifier));\n return distanceAngle(P1, P2);\n}\nfunction pointerId(event) {\n const valueEvent = getValueEvent(event);\n return isTouch(event) ? valueEvent.identifier : valueEvent.pointerId;\n}\nfunction pointerValues(event) {\n const valueEvent = getValueEvent(event);\n return [valueEvent.clientX, valueEvent.clientY];\n}\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\nfunction wheelValues(event) {\n let {\n deltaX,\n deltaY,\n deltaMode\n } = event;\n if (deltaMode === 1) {\n deltaX *= LINE_HEIGHT;\n deltaY *= LINE_HEIGHT;\n } else if (deltaMode === 2) {\n deltaX *= PAGE_HEIGHT;\n deltaY *= PAGE_HEIGHT;\n }\n return [deltaX, deltaY];\n}\nfunction scrollValues(event) {\n var _ref, _ref2;\n const {\n scrollX,\n scrollY,\n scrollLeft,\n scrollTop\n } = event.currentTarget;\n return [(_ref = scrollX !== null && scrollX !== void 0 ? scrollX : scrollLeft) !== null && _ref !== void 0 ? _ref : 0, (_ref2 = scrollY !== null && scrollY !== void 0 ? scrollY : scrollTop) !== null && _ref2 !== void 0 ? _ref2 : 0];\n}\nfunction getEventDetails(event) {\n const payload = {};\n if ('buttons' in event) payload.buttons = event.buttons;\n if ('shiftKey' in event) {\n const {\n shiftKey,\n altKey,\n metaKey,\n ctrlKey\n } = event;\n Object.assign(payload, {\n shiftKey,\n altKey,\n metaKey,\n ctrlKey\n });\n }\n return payload;\n}\n\nfunction call(v, ...args) {\n if (typeof v === 'function') {\n return v(...args);\n } else {\n return v;\n }\n}\nfunction noop() {}\nfunction chain(...fns) {\n if (fns.length === 0) return noop;\n if (fns.length === 1) return fns[0];\n return function () {\n let result;\n for (const fn of fns) {\n result = fn.apply(this, arguments) || result;\n }\n return result;\n };\n}\nfunction assignDefault(value, fallback) {\n return Object.assign({}, fallback, value || {});\n}\n\nconst BEFORE_LAST_KINEMATICS_DELAY = 32;\nclass Engine {\n constructor(ctrl, args, key) {\n this.ctrl = ctrl;\n this.args = args;\n this.key = key;\n if (!this.state) {\n this.state = {};\n this.computeValues([0, 0]);\n this.computeInitial();\n if (this.init) this.init();\n this.reset();\n }\n }\n get state() {\n return this.ctrl.state[this.key];\n }\n set state(state) {\n this.ctrl.state[this.key] = state;\n }\n get shared() {\n return this.ctrl.state.shared;\n }\n get eventStore() {\n return this.ctrl.gestureEventStores[this.key];\n }\n get timeoutStore() {\n return this.ctrl.gestureTimeoutStores[this.key];\n }\n get config() {\n return this.ctrl.config[this.key];\n }\n get sharedConfig() {\n return this.ctrl.config.shared;\n }\n get handler() {\n return this.ctrl.handlers[this.key];\n }\n reset() {\n const {\n state,\n shared,\n ingKey,\n args\n } = this;\n shared[ingKey] = state._active = state.active = state._blocked = state._force = false;\n state._step = [false, false];\n state.intentional = false;\n state._movement = [0, 0];\n state._distance = [0, 0];\n state._direction = [0, 0];\n state._delta = [0, 0];\n state._bounds = [[-Infinity, Infinity], [-Infinity, Infinity]];\n state.args = args;\n state.axis = undefined;\n state.memo = undefined;\n state.elapsedTime = state.timeDelta = 0;\n state.direction = [0, 0];\n state.distance = [0, 0];\n state.overflow = [0, 0];\n state._movementBound = [false, false];\n state.velocity = [0, 0];\n state.movement = [0, 0];\n state.delta = [0, 0];\n state.timeStamp = 0;\n }\n start(event) {\n const state = this.state;\n const config = this.config;\n if (!state._active) {\n this.reset();\n this.computeInitial();\n state._active = true;\n state.target = event.target;\n state.currentTarget = event.currentTarget;\n state.lastOffset = config.from ? call(config.from, state) : state.offset;\n state.offset = state.lastOffset;\n state.startTime = state.timeStamp = event.timeStamp;\n }\n }\n computeValues(values) {\n const state = this.state;\n state._values = values;\n state.values = this.config.transform(values);\n }\n computeInitial() {\n const state = this.state;\n state._initial = state._values;\n state.initial = state.values;\n }\n compute(event) {\n const {\n state,\n config,\n shared\n } = this;\n state.args = this.args;\n let dt = 0;\n if (event) {\n state.event = event;\n if (config.preventDefault && event.cancelable) state.event.preventDefault();\n state.type = event.type;\n shared.touches = this.ctrl.pointerIds.size || this.ctrl.touchIds.size;\n shared.locked = !!document.pointerLockElement;\n Object.assign(shared, getEventDetails(event));\n shared.down = shared.pressed = shared.buttons % 2 === 1 || shared.touches > 0;\n dt = event.timeStamp - state.timeStamp;\n state.timeStamp = event.timeStamp;\n state.elapsedTime = state.timeStamp - state.startTime;\n }\n if (state._active) {\n const _absoluteDelta = state._delta.map(Math.abs);\n V.addTo(state._distance, _absoluteDelta);\n }\n if (this.axisIntent) this.axisIntent(event);\n const [_m0, _m1] = state._movement;\n const [t0, t1] = config.threshold;\n const {\n _step,\n values\n } = state;\n if (config.hasCustomTransform) {\n if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && values[0];\n if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && values[1];\n } else {\n if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && Math.sign(_m0) * t0;\n if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && Math.sign(_m1) * t1;\n }\n state.intentional = _step[0] !== false || _step[1] !== false;\n if (!state.intentional) return;\n const movement = [0, 0];\n if (config.hasCustomTransform) {\n const [v0, v1] = values;\n movement[0] = _step[0] !== false ? v0 - _step[0] : 0;\n movement[1] = _step[1] !== false ? v1 - _step[1] : 0;\n } else {\n movement[0] = _step[0] !== false ? _m0 - _step[0] : 0;\n movement[1] = _step[1] !== false ? _m1 - _step[1] : 0;\n }\n if (this.restrictToAxis && !state._blocked) this.restrictToAxis(movement);\n const previousOffset = state.offset;\n const gestureIsActive = state._active && !state._blocked || state.active;\n if (gestureIsActive) {\n state.first = state._active && !state.active;\n state.last = !state._active && state.active;\n state.active = shared[this.ingKey] = state._active;\n if (event) {\n if (state.first) {\n if ('bounds' in config) state._bounds = call(config.bounds, state);\n if (this.setup) this.setup();\n }\n state.movement = movement;\n this.computeOffset();\n }\n }\n const [ox, oy] = state.offset;\n const [[x0, x1], [y0, y1]] = state._bounds;\n state.overflow = [ox < x0 ? -1 : ox > x1 ? 1 : 0, oy < y0 ? -1 : oy > y1 ? 1 : 0];\n state._movementBound[0] = state.overflow[0] ? state._movementBound[0] === false ? state._movement[0] : state._movementBound[0] : false;\n state._movementBound[1] = state.overflow[1] ? state._movementBound[1] === false ? state._movement[1] : state._movementBound[1] : false;\n const rubberband = state._active ? config.rubberband || [0, 0] : [0, 0];\n state.offset = computeRubberband(state._bounds, state.offset, rubberband);\n state.delta = V.sub(state.offset, previousOffset);\n this.computeMovement();\n if (gestureIsActive && (!state.last || dt > BEFORE_LAST_KINEMATICS_DELAY)) {\n state.delta = V.sub(state.offset, previousOffset);\n const absoluteDelta = state.delta.map(Math.abs);\n V.addTo(state.distance, absoluteDelta);\n state.direction = state.delta.map(Math.sign);\n state._direction = state._delta.map(Math.sign);\n if (!state.first && dt > 0) {\n state.velocity = [absoluteDelta[0] / dt, absoluteDelta[1] / dt];\n state.timeDelta = dt;\n }\n }\n }\n emit() {\n const state = this.state;\n const shared = this.shared;\n const config = this.config;\n if (!state._active) this.clean();\n if ((state._blocked || !state.intentional) && !state._force && !config.triggerAllEvents) return;\n const memo = this.handler(_objectSpread2(_objectSpread2(_objectSpread2({}, shared), state), {}, {\n [this.aliasKey]: state.values\n }));\n if (memo !== undefined) state.memo = memo;\n }\n clean() {\n this.eventStore.clean();\n this.timeoutStore.clean();\n }\n}\n\nfunction selectAxis([dx, dy], threshold) {\n const absDx = Math.abs(dx);\n const absDy = Math.abs(dy);\n if (absDx > absDy && absDx > threshold) {\n return 'x';\n }\n if (absDy > absDx && absDy > threshold) {\n return 'y';\n }\n return undefined;\n}\nclass CoordinatesEngine extends Engine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"aliasKey\", 'xy');\n }\n reset() {\n super.reset();\n this.state.axis = undefined;\n }\n init() {\n this.state.offset = [0, 0];\n this.state.lastOffset = [0, 0];\n }\n computeOffset() {\n this.state.offset = V.add(this.state.lastOffset, this.state.movement);\n }\n computeMovement() {\n this.state.movement = V.sub(this.state.offset, this.state.lastOffset);\n }\n axisIntent(event) {\n const state = this.state;\n const config = this.config;\n if (!state.axis && event) {\n const threshold = typeof config.axisThreshold === 'object' ? config.axisThreshold[getPointerType(event)] : config.axisThreshold;\n state.axis = selectAxis(state._movement, threshold);\n }\n state._blocked = (config.lockDirection || !!config.axis) && !state.axis || !!config.axis && config.axis !== state.axis;\n }\n restrictToAxis(v) {\n if (this.config.axis || this.config.lockDirection) {\n switch (this.state.axis) {\n case 'x':\n v[1] = 0;\n break;\n case 'y':\n v[0] = 0;\n break;\n }\n }\n }\n}\n\nconst identity = v => v;\nconst DEFAULT_RUBBERBAND = 0.15;\nconst commonConfigResolver = {\n enabled(value = true) {\n return value;\n },\n eventOptions(value, _k, config) {\n return _objectSpread2(_objectSpread2({}, config.shared.eventOptions), value);\n },\n preventDefault(value = false) {\n return value;\n },\n triggerAllEvents(value = false) {\n return value;\n },\n rubberband(value = 0) {\n switch (value) {\n case true:\n return [DEFAULT_RUBBERBAND, DEFAULT_RUBBERBAND];\n case false:\n return [0, 0];\n default:\n return V.toVector(value);\n }\n },\n from(value) {\n if (typeof value === 'function') return value;\n if (value != null) return V.toVector(value);\n },\n transform(value, _k, config) {\n const transform = value || config.shared.transform;\n this.hasCustomTransform = !!transform;\n if (process.env.NODE_ENV === 'development') {\n const originalTransform = transform || identity;\n return v => {\n const r = originalTransform(v);\n if (!isFinite(r[0]) || !isFinite(r[1])) {\n console.warn(`[@use-gesture]: config.transform() must produce a valid result, but it was: [${r[0]},${[1]}]`);\n }\n return r;\n };\n }\n return transform || identity;\n },\n threshold(value) {\n return V.toVector(value, 0);\n }\n};\nif (process.env.NODE_ENV === 'development') {\n Object.assign(commonConfigResolver, {\n domTarget(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n }\n return NaN;\n },\n lockDirection(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`lockDirection\\` option has been merged with \\`axis\\`. Use it as in \\`{ axis: 'lock' }\\``);\n }\n return NaN;\n },\n initial(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`initial\\` option has been renamed to \\`from\\`.`);\n }\n return NaN;\n }\n });\n}\n\nconst DEFAULT_AXIS_THRESHOLD = 0;\nconst coordinatesConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n axis(_v, _k, {\n axis\n }) {\n this.lockDirection = axis === 'lock';\n if (!this.lockDirection) return axis;\n },\n axisThreshold(value = DEFAULT_AXIS_THRESHOLD) {\n return value;\n },\n bounds(value = {}) {\n if (typeof value === 'function') {\n return state => coordinatesConfigResolver.bounds(value(state));\n }\n if ('current' in value) {\n return () => value.current;\n }\n if (typeof HTMLElement === 'function' && value instanceof HTMLElement) {\n return value;\n }\n const {\n left = -Infinity,\n right = Infinity,\n top = -Infinity,\n bottom = Infinity\n } = value;\n return [[left, right], [top, bottom]];\n }\n});\n\nconst KEYS_DELTA_MAP = {\n ArrowRight: (displacement, factor = 1) => [displacement * factor, 0],\n ArrowLeft: (displacement, factor = 1) => [-1 * displacement * factor, 0],\n ArrowUp: (displacement, factor = 1) => [0, -1 * displacement * factor],\n ArrowDown: (displacement, factor = 1) => [0, displacement * factor]\n};\nclass DragEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'dragging');\n }\n reset() {\n super.reset();\n const state = this.state;\n state._pointerId = undefined;\n state._pointerActive = false;\n state._keyboardActive = false;\n state._preventScroll = false;\n state._delayed = false;\n state.swipe = [0, 0];\n state.tap = false;\n state.canceled = false;\n state.cancel = this.cancel.bind(this);\n }\n setup() {\n const state = this.state;\n if (state._bounds instanceof HTMLElement) {\n const boundRect = state._bounds.getBoundingClientRect();\n const targetRect = state.currentTarget.getBoundingClientRect();\n const _bounds = {\n left: boundRect.left - targetRect.left + state.offset[0],\n right: boundRect.right - targetRect.right + state.offset[0],\n top: boundRect.top - targetRect.top + state.offset[1],\n bottom: boundRect.bottom - targetRect.bottom + state.offset[1]\n };\n state._bounds = coordinatesConfigResolver.bounds(_bounds);\n }\n }\n cancel() {\n const state = this.state;\n if (state.canceled) return;\n state.canceled = true;\n state._active = false;\n setTimeout(() => {\n this.compute();\n this.emit();\n }, 0);\n }\n setActive() {\n this.state._active = this.state._pointerActive || this.state._keyboardActive;\n }\n clean() {\n this.pointerClean();\n this.state._pointerActive = false;\n this.state._keyboardActive = false;\n super.clean();\n }\n pointerDown(event) {\n const config = this.config;\n const state = this.state;\n if (event.buttons != null && (Array.isArray(config.pointerButtons) ? !config.pointerButtons.includes(event.buttons) : config.pointerButtons !== -1 && config.pointerButtons !== event.buttons)) return;\n const ctrlIds = this.ctrl.setEventIds(event);\n if (config.pointerCapture) {\n event.target.setPointerCapture(event.pointerId);\n }\n if (ctrlIds && ctrlIds.size > 1 && state._pointerActive) return;\n this.start(event);\n this.setupPointer(event);\n state._pointerId = pointerId(event);\n state._pointerActive = true;\n this.computeValues(pointerValues(event));\n this.computeInitial();\n if (config.preventScrollAxis && getPointerType(event) !== 'mouse') {\n state._active = false;\n this.setupScrollPrevention(event);\n } else if (config.delay > 0) {\n this.setupDelayTrigger(event);\n if (config.triggerAllEvents) {\n this.compute(event);\n this.emit();\n }\n } else {\n this.startPointerDrag(event);\n }\n }\n startPointerDrag(event) {\n const state = this.state;\n state._active = true;\n state._preventScroll = true;\n state._delayed = false;\n this.compute(event);\n this.emit();\n }\n pointerMove(event) {\n const state = this.state;\n const config = this.config;\n if (!state._pointerActive) return;\n const id = pointerId(event);\n if (state._pointerId !== undefined && id !== state._pointerId) return;\n const _values = pointerValues(event);\n if (document.pointerLockElement === event.target) {\n state._delta = [event.movementX, event.movementY];\n } else {\n state._delta = V.sub(_values, state._values);\n this.computeValues(_values);\n }\n V.addTo(state._movement, state._delta);\n this.compute(event);\n if (state._delayed && state.intentional) {\n this.timeoutStore.remove('dragDelay');\n state.active = false;\n this.startPointerDrag(event);\n return;\n }\n if (config.preventScrollAxis && !state._preventScroll) {\n if (state.axis) {\n if (state.axis === config.preventScrollAxis || config.preventScrollAxis === 'xy') {\n state._active = false;\n this.clean();\n return;\n } else {\n this.timeoutStore.remove('startPointerDrag');\n this.startPointerDrag(event);\n return;\n }\n } else {\n return;\n }\n }\n this.emit();\n }\n pointerUp(event) {\n this.ctrl.setEventIds(event);\n try {\n if (this.config.pointerCapture && event.target.hasPointerCapture(event.pointerId)) {\n ;\n event.target.releasePointerCapture(event.pointerId);\n }\n } catch (_unused) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[@use-gesture]: If you see this message, it's likely that you're using an outdated version of \\`@react-three/fiber\\`. \\n\\nPlease upgrade to the latest version.`);\n }\n }\n const state = this.state;\n const config = this.config;\n if (!state._active || !state._pointerActive) return;\n const id = pointerId(event);\n if (state._pointerId !== undefined && id !== state._pointerId) return;\n this.state._pointerActive = false;\n this.setActive();\n this.compute(event);\n const [dx, dy] = state._distance;\n state.tap = dx <= config.tapsThreshold && dy <= config.tapsThreshold;\n if (state.tap && config.filterTaps) {\n state._force = true;\n } else {\n const [_dx, _dy] = state._delta;\n const [_mx, _my] = state._movement;\n const [svx, svy] = config.swipe.velocity;\n const [sx, sy] = config.swipe.distance;\n const sdt = config.swipe.duration;\n if (state.elapsedTime < sdt) {\n const _vx = Math.abs(_dx / state.timeDelta);\n const _vy = Math.abs(_dy / state.timeDelta);\n if (_vx > svx && Math.abs(_mx) > sx) state.swipe[0] = Math.sign(_dx);\n if (_vy > svy && Math.abs(_my) > sy) state.swipe[1] = Math.sign(_dy);\n }\n }\n this.emit();\n }\n pointerClick(event) {\n if (!this.state.tap && event.detail > 0) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n setupPointer(event) {\n const config = this.config;\n const device = config.device;\n if (process.env.NODE_ENV === 'development') {\n try {\n if (device === 'pointer' && config.preventScrollDelay === undefined) {\n const currentTarget = 'uv' in event ? event.sourceEvent.currentTarget : event.currentTarget;\n const style = window.getComputedStyle(currentTarget);\n if (style.touchAction === 'auto') {\n console.warn(`[@use-gesture]: The drag target has its \\`touch-action\\` style property set to \\`auto\\`. It is recommended to add \\`touch-action: 'none'\\` so that the drag gesture behaves correctly on touch-enabled devices. For more information read this: https://use-gesture.netlify.app/docs/extras/#touch-action.\\n\\nThis message will only show in development mode. It won't appear in production. If this is intended, you can ignore it.`, currentTarget);\n }\n }\n } catch (_unused2) {}\n }\n if (config.pointerLock) {\n event.currentTarget.requestPointerLock();\n }\n if (!config.pointerCapture) {\n this.eventStore.add(this.sharedConfig.window, device, 'change', this.pointerMove.bind(this));\n this.eventStore.add(this.sharedConfig.window, device, 'end', this.pointerUp.bind(this));\n this.eventStore.add(this.sharedConfig.window, device, 'cancel', this.pointerUp.bind(this));\n }\n }\n pointerClean() {\n if (this.config.pointerLock && document.pointerLockElement === this.state.currentTarget) {\n document.exitPointerLock();\n }\n }\n preventScroll(event) {\n if (this.state._preventScroll && event.cancelable) {\n event.preventDefault();\n }\n }\n setupScrollPrevention(event) {\n this.state._preventScroll = false;\n persistEvent(event);\n const remove = this.eventStore.add(this.sharedConfig.window, 'touch', 'change', this.preventScroll.bind(this), {\n passive: false\n });\n this.eventStore.add(this.sharedConfig.window, 'touch', 'end', remove);\n this.eventStore.add(this.sharedConfig.window, 'touch', 'cancel', remove);\n this.timeoutStore.add('startPointerDrag', this.startPointerDrag.bind(this), this.config.preventScrollDelay, event);\n }\n setupDelayTrigger(event) {\n this.state._delayed = true;\n this.timeoutStore.add('dragDelay', () => {\n this.state._step = [0, 0];\n this.startPointerDrag(event);\n }, this.config.delay);\n }\n keyDown(event) {\n const deltaFn = KEYS_DELTA_MAP[event.key];\n if (deltaFn) {\n const state = this.state;\n const factor = event.shiftKey ? 10 : event.altKey ? 0.1 : 1;\n this.start(event);\n state._delta = deltaFn(this.config.keyboardDisplacement, factor);\n state._keyboardActive = true;\n V.addTo(state._movement, state._delta);\n this.compute(event);\n this.emit();\n }\n }\n keyUp(event) {\n if (!(event.key in KEYS_DELTA_MAP)) return;\n this.state._keyboardActive = false;\n this.setActive();\n this.compute(event);\n this.emit();\n }\n bind(bindFunction) {\n const device = this.config.device;\n bindFunction(device, 'start', this.pointerDown.bind(this));\n if (this.config.pointerCapture) {\n bindFunction(device, 'change', this.pointerMove.bind(this));\n bindFunction(device, 'end', this.pointerUp.bind(this));\n bindFunction(device, 'cancel', this.pointerUp.bind(this));\n bindFunction('lostPointerCapture', '', this.pointerUp.bind(this));\n }\n if (this.config.keys) {\n bindFunction('key', 'down', this.keyDown.bind(this));\n bindFunction('key', 'up', this.keyUp.bind(this));\n }\n if (this.config.filterTaps) {\n bindFunction('click', '', this.pointerClick.bind(this), {\n capture: true,\n passive: false\n });\n }\n }\n}\nfunction persistEvent(event) {\n 'persist' in event && typeof event.persist === 'function' && event.persist();\n}\n\nconst isBrowser = typeof window !== 'undefined' && window.document && window.document.createElement;\nfunction supportsTouchEvents() {\n return isBrowser && 'ontouchstart' in window;\n}\nfunction isTouchScreen() {\n return supportsTouchEvents() || isBrowser && window.navigator.maxTouchPoints > 1;\n}\nfunction supportsPointerEvents() {\n return isBrowser && 'onpointerdown' in window;\n}\nfunction supportsPointerLock() {\n return isBrowser && 'exitPointerLock' in window.document;\n}\nfunction supportsGestureEvents() {\n try {\n return 'constructor' in GestureEvent;\n } catch (e) {\n return false;\n }\n}\nconst SUPPORT = {\n isBrowser,\n gesture: supportsGestureEvents(),\n touch: supportsTouchEvents(),\n touchscreen: isTouchScreen(),\n pointer: supportsPointerEvents(),\n pointerLock: supportsPointerLock()\n};\n\nconst DEFAULT_PREVENT_SCROLL_DELAY = 250;\nconst DEFAULT_DRAG_DELAY = 180;\nconst DEFAULT_SWIPE_VELOCITY = 0.5;\nconst DEFAULT_SWIPE_DISTANCE = 50;\nconst DEFAULT_SWIPE_DURATION = 250;\nconst DEFAULT_KEYBOARD_DISPLACEMENT = 10;\nconst DEFAULT_DRAG_AXIS_THRESHOLD = {\n mouse: 0,\n touch: 0,\n pen: 8\n};\nconst dragConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n device(_v, _k, {\n pointer: {\n touch = false,\n lock = false,\n mouse = false\n } = {}\n }) {\n this.pointerLock = lock && SUPPORT.pointerLock;\n if (SUPPORT.touch && touch) return 'touch';\n if (this.pointerLock) return 'mouse';\n if (SUPPORT.pointer && !mouse) return 'pointer';\n if (SUPPORT.touch) return 'touch';\n return 'mouse';\n },\n preventScrollAxis(value, _k, {\n preventScroll\n }) {\n this.preventScrollDelay = typeof preventScroll === 'number' ? preventScroll : preventScroll || preventScroll === undefined && value ? DEFAULT_PREVENT_SCROLL_DELAY : undefined;\n if (!SUPPORT.touchscreen || preventScroll === false) return undefined;\n return value ? value : preventScroll !== undefined ? 'y' : undefined;\n },\n pointerCapture(_v, _k, {\n pointer: {\n capture = true,\n buttons = 1,\n keys = true\n } = {}\n }) {\n this.pointerButtons = buttons;\n this.keys = keys;\n return !this.pointerLock && this.device === 'pointer' && capture;\n },\n threshold(value, _k, {\n filterTaps = false,\n tapsThreshold = 3,\n axis = undefined\n }) {\n const threshold = V.toVector(value, filterTaps ? tapsThreshold : axis ? 1 : 0);\n this.filterTaps = filterTaps;\n this.tapsThreshold = tapsThreshold;\n return threshold;\n },\n swipe({\n velocity = DEFAULT_SWIPE_VELOCITY,\n distance = DEFAULT_SWIPE_DISTANCE,\n duration = DEFAULT_SWIPE_DURATION\n } = {}) {\n return {\n velocity: this.transform(V.toVector(velocity)),\n distance: this.transform(V.toVector(distance)),\n duration\n };\n },\n delay(value = 0) {\n switch (value) {\n case true:\n return DEFAULT_DRAG_DELAY;\n case false:\n return 0;\n default:\n return value;\n }\n },\n axisThreshold(value) {\n if (!value) return DEFAULT_DRAG_AXIS_THRESHOLD;\n return _objectSpread2(_objectSpread2({}, DEFAULT_DRAG_AXIS_THRESHOLD), value);\n },\n keyboardDisplacement(value = DEFAULT_KEYBOARD_DISPLACEMENT) {\n return value;\n }\n});\nif (process.env.NODE_ENV === 'development') {\n Object.assign(dragConfigResolver, {\n useTouch(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`useTouch\\` option has been renamed to \\`pointer.touch\\`. Use it as in \\`{ pointer: { touch: true } }\\`.`);\n }\n return NaN;\n },\n experimental_preventWindowScrollY(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`experimental_preventWindowScrollY\\` option has been renamed to \\`preventScroll\\`.`);\n }\n return NaN;\n },\n swipeVelocity(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeVelocity\\` option has been renamed to \\`swipe.velocity\\`. Use it as in \\`{ swipe: { velocity: 0.5 } }\\`.`);\n }\n return NaN;\n },\n swipeDistance(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeDistance\\` option has been renamed to \\`swipe.distance\\`. Use it as in \\`{ swipe: { distance: 50 } }\\`.`);\n }\n return NaN;\n },\n swipeDuration(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeDuration\\` option has been renamed to \\`swipe.duration\\`. Use it as in \\`{ swipe: { duration: 250 } }\\`.`);\n }\n return NaN;\n }\n });\n}\n\nfunction clampStateInternalMovementToBounds(state) {\n const [ox, oy] = state.overflow;\n const [dx, dy] = state._delta;\n const [dirx, diry] = state._direction;\n if (ox < 0 && dx > 0 && dirx < 0 || ox > 0 && dx < 0 && dirx > 0) {\n state._movement[0] = state._movementBound[0];\n }\n if (oy < 0 && dy > 0 && diry < 0 || oy > 0 && dy < 0 && diry > 0) {\n state._movement[1] = state._movementBound[1];\n }\n}\n\nconst SCALE_ANGLE_RATIO_INTENT_DEG = 30;\nconst PINCH_WHEEL_RATIO = 100;\nclass PinchEngine extends Engine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'pinching');\n _defineProperty(this, \"aliasKey\", 'da');\n }\n init() {\n this.state.offset = [1, 0];\n this.state.lastOffset = [1, 0];\n this.state._pointerEvents = new Map();\n }\n reset() {\n super.reset();\n const state = this.state;\n state._touchIds = [];\n state.canceled = false;\n state.cancel = this.cancel.bind(this);\n state.turns = 0;\n }\n computeOffset() {\n const {\n type,\n movement,\n lastOffset\n } = this.state;\n if (type === 'wheel') {\n this.state.offset = V.add(movement, lastOffset);\n } else {\n this.state.offset = [(1 + movement[0]) * lastOffset[0], movement[1] + lastOffset[1]];\n }\n }\n computeMovement() {\n const {\n offset,\n lastOffset\n } = this.state;\n this.state.movement = [offset[0] / lastOffset[0], offset[1] - lastOffset[1]];\n }\n axisIntent() {\n const state = this.state;\n const [_m0, _m1] = state._movement;\n if (!state.axis) {\n const axisMovementDifference = Math.abs(_m0) * SCALE_ANGLE_RATIO_INTENT_DEG - Math.abs(_m1);\n if (axisMovementDifference < 0) state.axis = 'angle';else if (axisMovementDifference > 0) state.axis = 'scale';\n }\n }\n restrictToAxis(v) {\n if (this.config.lockDirection) {\n if (this.state.axis === 'scale') v[1] = 0;else if (this.state.axis === 'angle') v[0] = 0;\n }\n }\n cancel() {\n const state = this.state;\n if (state.canceled) return;\n setTimeout(() => {\n state.canceled = true;\n state._active = false;\n this.compute();\n this.emit();\n }, 0);\n }\n touchStart(event) {\n this.ctrl.setEventIds(event);\n const state = this.state;\n const ctrlTouchIds = this.ctrl.touchIds;\n if (state._active) {\n if (state._touchIds.every(id => ctrlTouchIds.has(id))) return;\n }\n if (ctrlTouchIds.size < 2) return;\n this.start(event);\n state._touchIds = Array.from(ctrlTouchIds).slice(0, 2);\n const payload = touchDistanceAngle(event, state._touchIds);\n if (!payload) return;\n this.pinchStart(event, payload);\n }\n pointerStart(event) {\n if (event.buttons != null && event.buttons % 2 !== 1) return;\n this.ctrl.setEventIds(event);\n event.target.setPointerCapture(event.pointerId);\n const state = this.state;\n const _pointerEvents = state._pointerEvents;\n const ctrlPointerIds = this.ctrl.pointerIds;\n if (state._active) {\n if (Array.from(_pointerEvents.keys()).every(id => ctrlPointerIds.has(id))) return;\n }\n if (_pointerEvents.size < 2) {\n _pointerEvents.set(event.pointerId, event);\n }\n if (state._pointerEvents.size < 2) return;\n this.start(event);\n const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n if (!payload) return;\n this.pinchStart(event, payload);\n }\n pinchStart(event, payload) {\n const state = this.state;\n state.origin = payload.origin;\n this.computeValues([payload.distance, payload.angle]);\n this.computeInitial();\n this.compute(event);\n this.emit();\n }\n touchMove(event) {\n if (!this.state._active) return;\n const payload = touchDistanceAngle(event, this.state._touchIds);\n if (!payload) return;\n this.pinchMove(event, payload);\n }\n pointerMove(event) {\n const _pointerEvents = this.state._pointerEvents;\n if (_pointerEvents.has(event.pointerId)) {\n _pointerEvents.set(event.pointerId, event);\n }\n if (!this.state._active) return;\n const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n if (!payload) return;\n this.pinchMove(event, payload);\n }\n pinchMove(event, payload) {\n const state = this.state;\n const prev_a = state._values[1];\n const delta_a = payload.angle - prev_a;\n let delta_turns = 0;\n if (Math.abs(delta_a) > 270) delta_turns += Math.sign(delta_a);\n this.computeValues([payload.distance, payload.angle - 360 * delta_turns]);\n state.origin = payload.origin;\n state.turns = delta_turns;\n state._movement = [state._values[0] / state._initial[0] - 1, state._values[1] - state._initial[1]];\n this.compute(event);\n this.emit();\n }\n touchEnd(event) {\n this.ctrl.setEventIds(event);\n if (!this.state._active) return;\n if (this.state._touchIds.some(id => !this.ctrl.touchIds.has(id))) {\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n }\n pointerEnd(event) {\n const state = this.state;\n this.ctrl.setEventIds(event);\n try {\n event.target.releasePointerCapture(event.pointerId);\n } catch (_unused) {}\n if (state._pointerEvents.has(event.pointerId)) {\n state._pointerEvents.delete(event.pointerId);\n }\n if (!state._active) return;\n if (state._pointerEvents.size < 2) {\n state._active = false;\n this.compute(event);\n this.emit();\n }\n }\n gestureStart(event) {\n if (event.cancelable) event.preventDefault();\n const state = this.state;\n if (state._active) return;\n this.start(event);\n this.computeValues([event.scale, event.rotation]);\n state.origin = [event.clientX, event.clientY];\n this.compute(event);\n this.emit();\n }\n gestureMove(event) {\n if (event.cancelable) event.preventDefault();\n if (!this.state._active) return;\n const state = this.state;\n this.computeValues([event.scale, event.rotation]);\n state.origin = [event.clientX, event.clientY];\n const _previousMovement = state._movement;\n state._movement = [event.scale - 1, event.rotation];\n state._delta = V.sub(state._movement, _previousMovement);\n this.compute(event);\n this.emit();\n }\n gestureEnd(event) {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n wheel(event) {\n const modifierKey = this.config.modifierKey;\n if (modifierKey && (Array.isArray(modifierKey) ? !modifierKey.find(k => event[k]) : !event[modifierKey])) return;\n if (!this.state._active) this.wheelStart(event);else this.wheelChange(event);\n this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n }\n wheelStart(event) {\n this.start(event);\n this.wheelChange(event);\n }\n wheelChange(event) {\n const isR3f = ('uv' in event);\n if (!isR3f) {\n if (event.cancelable) {\n event.preventDefault();\n }\n if (process.env.NODE_ENV === 'development' && !event.defaultPrevented) {\n console.warn(`[@use-gesture]: To properly support zoom on trackpads, try using the \\`target\\` option.\\n\\nThis message will only appear in development mode.`);\n }\n }\n const state = this.state;\n state._delta = [-wheelValues(event)[1] / PINCH_WHEEL_RATIO * state.offset[0], 0];\n V.addTo(state._movement, state._delta);\n clampStateInternalMovementToBounds(state);\n this.state.origin = [event.clientX, event.clientY];\n this.compute(event);\n this.emit();\n }\n wheelEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n bind(bindFunction) {\n const device = this.config.device;\n if (!!device) {\n bindFunction(device, 'start', this[device + 'Start'].bind(this));\n bindFunction(device, 'change', this[device + 'Move'].bind(this));\n bindFunction(device, 'end', this[device + 'End'].bind(this));\n bindFunction(device, 'cancel', this[device + 'End'].bind(this));\n bindFunction('lostPointerCapture', '', this[device + 'End'].bind(this));\n }\n if (this.config.pinchOnWheel) {\n bindFunction('wheel', '', this.wheel.bind(this), {\n passive: false\n });\n }\n }\n}\n\nconst pinchConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n device(_v, _k, {\n shared,\n pointer: {\n touch = false\n } = {}\n }) {\n const sharedConfig = shared;\n if (sharedConfig.target && !SUPPORT.touch && SUPPORT.gesture) return 'gesture';\n if (SUPPORT.touch && touch) return 'touch';\n if (SUPPORT.touchscreen) {\n if (SUPPORT.pointer) return 'pointer';\n if (SUPPORT.touch) return 'touch';\n }\n },\n bounds(_v, _k, {\n scaleBounds = {},\n angleBounds = {}\n }) {\n const _scaleBounds = state => {\n const D = assignDefault(call(scaleBounds, state), {\n min: -Infinity,\n max: Infinity\n });\n return [D.min, D.max];\n };\n const _angleBounds = state => {\n const A = assignDefault(call(angleBounds, state), {\n min: -Infinity,\n max: Infinity\n });\n return [A.min, A.max];\n };\n if (typeof scaleBounds !== 'function' && typeof angleBounds !== 'function') return [_scaleBounds(), _angleBounds()];\n return state => [_scaleBounds(state), _angleBounds(state)];\n },\n threshold(value, _k, config) {\n this.lockDirection = config.axis === 'lock';\n const threshold = V.toVector(value, this.lockDirection ? [0.1, 3] : 0);\n return threshold;\n },\n modifierKey(value) {\n if (value === undefined) return 'ctrlKey';\n return value;\n },\n pinchOnWheel(value = true) {\n return value;\n }\n});\n\nclass MoveEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'moving');\n }\n move(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n if (!this.state._active) this.moveStart(event);else this.moveChange(event);\n this.timeoutStore.add('moveEnd', this.moveEnd.bind(this));\n }\n moveStart(event) {\n this.start(event);\n this.computeValues(pointerValues(event));\n this.compute(event);\n this.computeInitial();\n this.emit();\n }\n moveChange(event) {\n if (!this.state._active) return;\n const values = pointerValues(event);\n const state = this.state;\n state._delta = V.sub(values, state._values);\n V.addTo(state._movement, state._delta);\n this.computeValues(values);\n this.compute(event);\n this.emit();\n }\n moveEnd(event) {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n bind(bindFunction) {\n bindFunction('pointer', 'change', this.move.bind(this));\n bindFunction('pointer', 'leave', this.moveEnd.bind(this));\n }\n}\n\nconst moveConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n mouseOnly: (value = true) => value\n});\n\nclass ScrollEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'scrolling');\n }\n scroll(event) {\n if (!this.state._active) this.start(event);\n this.scrollChange(event);\n this.timeoutStore.add('scrollEnd', this.scrollEnd.bind(this));\n }\n scrollChange(event) {\n if (event.cancelable) event.preventDefault();\n const state = this.state;\n const values = scrollValues(event);\n state._delta = V.sub(values, state._values);\n V.addTo(state._movement, state._delta);\n this.computeValues(values);\n this.compute(event);\n this.emit();\n }\n scrollEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n bind(bindFunction) {\n bindFunction('scroll', '', this.scroll.bind(this));\n }\n}\n\nconst scrollConfigResolver = coordinatesConfigResolver;\n\nclass WheelEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'wheeling');\n }\n wheel(event) {\n if (!this.state._active) this.start(event);\n this.wheelChange(event);\n this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n }\n wheelChange(event) {\n const state = this.state;\n state._delta = wheelValues(event);\n V.addTo(state._movement, state._delta);\n clampStateInternalMovementToBounds(state);\n this.compute(event);\n this.emit();\n }\n wheelEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n bind(bindFunction) {\n bindFunction('wheel', '', this.wheel.bind(this));\n }\n}\n\nconst wheelConfigResolver = coordinatesConfigResolver;\n\nclass HoverEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'hovering');\n }\n enter(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n this.start(event);\n this.computeValues(pointerValues(event));\n this.compute(event);\n this.emit();\n }\n leave(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n const state = this.state;\n if (!state._active) return;\n state._active = false;\n const values = pointerValues(event);\n state._movement = state._delta = V.sub(values, state._values);\n this.computeValues(values);\n this.compute(event);\n state.delta = state.movement;\n this.emit();\n }\n bind(bindFunction) {\n bindFunction('pointer', 'enter', this.enter.bind(this));\n bindFunction('pointer', 'leave', this.leave.bind(this));\n }\n}\n\nconst hoverConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n mouseOnly: (value = true) => value\n});\n\nconst EngineMap = new Map();\nconst ConfigResolverMap = new Map();\nfunction registerAction(action) {\n EngineMap.set(action.key, action.engine);\n ConfigResolverMap.set(action.key, action.resolver);\n}\nconst dragAction = {\n key: 'drag',\n engine: DragEngine,\n resolver: dragConfigResolver\n};\nconst hoverAction = {\n key: 'hover',\n engine: HoverEngine,\n resolver: hoverConfigResolver\n};\nconst moveAction = {\n key: 'move',\n engine: MoveEngine,\n resolver: moveConfigResolver\n};\nconst pinchAction = {\n key: 'pinch',\n engine: PinchEngine,\n resolver: pinchConfigResolver\n};\nconst scrollAction = {\n key: 'scroll',\n engine: ScrollEngine,\n resolver: scrollConfigResolver\n};\nconst wheelAction = {\n key: 'wheel',\n engine: WheelEngine,\n resolver: wheelConfigResolver\n};\n\nexport { ConfigResolverMap as C, EngineMap as E, SUPPORT as S, _objectSpread2 as _, _defineProperty as a, touchIds as b, chain as c, toHandlerProp as d, dragAction as e, pinchAction as f, hoverAction as h, isTouch as i, moveAction as m, parseProp as p, registerAction as r, scrollAction as s, toDomEventType as t, wheelAction as w };\n","export { C as ConfigResolverMap, E as EngineMap, e as dragAction, h as hoverAction, m as moveAction, f as pinchAction, r as registerAction, s as scrollAction, w as wheelAction } from '../../dist/actions-fe213e88.esm.js';\nimport '../../dist/maths-0ab39ae9.esm.js';\n","import { S as SUPPORT, C as ConfigResolverMap, _ as _objectSpread2, a as _defineProperty, t as toDomEventType, i as isTouch, b as touchIds, E as EngineMap, c as chain, p as parseProp, d as toHandlerProp } from './actions-fe213e88.esm.js';\nimport './maths-0ab39ae9.esm.js';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nconst sharedConfigResolver = {\n target(value) {\n if (value) {\n return () => 'current' in value ? value.current : value;\n }\n return undefined;\n },\n enabled(value = true) {\n return value;\n },\n window(value = SUPPORT.isBrowser ? window : undefined) {\n return value;\n },\n eventOptions({\n passive = true,\n capture = false\n } = {}) {\n return {\n passive,\n capture\n };\n },\n transform(value) {\n return value;\n }\n};\n\nconst _excluded = [\"target\", \"eventOptions\", \"window\", \"enabled\", \"transform\"];\nfunction resolveWith(config = {}, resolvers) {\n const result = {};\n for (const [key, resolver] of Object.entries(resolvers)) {\n switch (typeof resolver) {\n case 'function':\n if (process.env.NODE_ENV === 'development') {\n const r = resolver.call(result, config[key], key, config);\n if (!Number.isNaN(r)) result[key] = r;\n } else {\n result[key] = resolver.call(result, config[key], key, config);\n }\n break;\n case 'object':\n result[key] = resolveWith(config[key], resolver);\n break;\n case 'boolean':\n if (resolver) result[key] = config[key];\n break;\n }\n }\n return result;\n}\nfunction parse(newConfig, gestureKey, _config = {}) {\n const _ref = newConfig,\n {\n target,\n eventOptions,\n window,\n enabled,\n transform\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n _config.shared = resolveWith({\n target,\n eventOptions,\n window,\n enabled,\n transform\n }, sharedConfigResolver);\n if (gestureKey) {\n const resolver = ConfigResolverMap.get(gestureKey);\n _config[gestureKey] = resolveWith(_objectSpread2({\n shared: _config.shared\n }, rest), resolver);\n } else {\n for (const key in rest) {\n const resolver = ConfigResolverMap.get(key);\n if (resolver) {\n _config[key] = resolveWith(_objectSpread2({\n shared: _config.shared\n }, rest[key]), resolver);\n } else if (process.env.NODE_ENV === 'development') {\n if (!['drag', 'pinch', 'scroll', 'wheel', 'move', 'hover'].includes(key)) {\n if (key === 'domTarget') {\n throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n }\n console.warn(`[@use-gesture]: Unknown config key \\`${key}\\` was used. Please read the documentation for further information.`);\n }\n }\n }\n }\n return _config;\n}\n\nclass EventStore {\n constructor(ctrl, gestureKey) {\n _defineProperty(this, \"_listeners\", new Set());\n this._ctrl = ctrl;\n this._gestureKey = gestureKey;\n }\n add(element, device, action, handler, options) {\n const listeners = this._listeners;\n const type = toDomEventType(device, action);\n const _options = this._gestureKey ? this._ctrl.config[this._gestureKey].eventOptions : {};\n const eventOptions = _objectSpread2(_objectSpread2({}, _options), options);\n element.addEventListener(type, handler, eventOptions);\n const remove = () => {\n element.removeEventListener(type, handler, eventOptions);\n listeners.delete(remove);\n };\n listeners.add(remove);\n return remove;\n }\n clean() {\n this._listeners.forEach(remove => remove());\n this._listeners.clear();\n }\n}\n\nclass TimeoutStore {\n constructor() {\n _defineProperty(this, \"_timeouts\", new Map());\n }\n add(key, callback, ms = 140, ...args) {\n this.remove(key);\n this._timeouts.set(key, window.setTimeout(callback, ms, ...args));\n }\n remove(key) {\n const timeout = this._timeouts.get(key);\n if (timeout) window.clearTimeout(timeout);\n }\n clean() {\n this._timeouts.forEach(timeout => void window.clearTimeout(timeout));\n this._timeouts.clear();\n }\n}\n\nclass Controller {\n constructor(handlers) {\n _defineProperty(this, \"gestures\", new Set());\n _defineProperty(this, \"_targetEventStore\", new EventStore(this));\n _defineProperty(this, \"gestureEventStores\", {});\n _defineProperty(this, \"gestureTimeoutStores\", {});\n _defineProperty(this, \"handlers\", {});\n _defineProperty(this, \"config\", {});\n _defineProperty(this, \"pointerIds\", new Set());\n _defineProperty(this, \"touchIds\", new Set());\n _defineProperty(this, \"state\", {\n shared: {\n shiftKey: false,\n metaKey: false,\n ctrlKey: false,\n altKey: false\n }\n });\n resolveGestures(this, handlers);\n }\n setEventIds(event) {\n if (isTouch(event)) {\n this.touchIds = new Set(touchIds(event));\n return this.touchIds;\n } else if ('pointerId' in event) {\n if (event.type === 'pointerup' || event.type === 'pointercancel') this.pointerIds.delete(event.pointerId);else if (event.type === 'pointerdown') this.pointerIds.add(event.pointerId);\n return this.pointerIds;\n }\n }\n applyHandlers(handlers, nativeHandlers) {\n this.handlers = handlers;\n this.nativeHandlers = nativeHandlers;\n }\n applyConfig(config, gestureKey) {\n this.config = parse(config, gestureKey, this.config);\n }\n clean() {\n this._targetEventStore.clean();\n for (const key of this.gestures) {\n this.gestureEventStores[key].clean();\n this.gestureTimeoutStores[key].clean();\n }\n }\n effect() {\n if (this.config.shared.target) this.bind();\n return () => this._targetEventStore.clean();\n }\n bind(...args) {\n const sharedConfig = this.config.shared;\n const props = {};\n let target;\n if (sharedConfig.target) {\n target = sharedConfig.target();\n if (!target) return;\n }\n if (sharedConfig.enabled) {\n for (const gestureKey of this.gestures) {\n const gestureConfig = this.config[gestureKey];\n const bindFunction = bindToProps(props, gestureConfig.eventOptions, !!target);\n if (gestureConfig.enabled) {\n const Engine = EngineMap.get(gestureKey);\n new Engine(this, args, gestureKey).bind(bindFunction);\n }\n }\n const nativeBindFunction = bindToProps(props, sharedConfig.eventOptions, !!target);\n for (const eventKey in this.nativeHandlers) {\n nativeBindFunction(eventKey, '', event => this.nativeHandlers[eventKey](_objectSpread2(_objectSpread2({}, this.state.shared), {}, {\n event,\n args\n })), undefined, true);\n }\n }\n for (const handlerProp in props) {\n props[handlerProp] = chain(...props[handlerProp]);\n }\n if (!target) return props;\n for (const handlerProp in props) {\n const {\n device,\n capture,\n passive\n } = parseProp(handlerProp);\n this._targetEventStore.add(target, device, '', props[handlerProp], {\n capture,\n passive\n });\n }\n }\n}\nfunction setupGesture(ctrl, gestureKey) {\n ctrl.gestures.add(gestureKey);\n ctrl.gestureEventStores[gestureKey] = new EventStore(ctrl, gestureKey);\n ctrl.gestureTimeoutStores[gestureKey] = new TimeoutStore();\n}\nfunction resolveGestures(ctrl, internalHandlers) {\n if (internalHandlers.drag) setupGesture(ctrl, 'drag');\n if (internalHandlers.wheel) setupGesture(ctrl, 'wheel');\n if (internalHandlers.scroll) setupGesture(ctrl, 'scroll');\n if (internalHandlers.move) setupGesture(ctrl, 'move');\n if (internalHandlers.pinch) setupGesture(ctrl, 'pinch');\n if (internalHandlers.hover) setupGesture(ctrl, 'hover');\n}\nconst bindToProps = (props, eventOptions, withPassiveOption) => (device, action, handler, options = {}, isNative = false) => {\n var _options$capture, _options$passive;\n const capture = (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : eventOptions.capture;\n const passive = (_options$passive = options.passive) !== null && _options$passive !== void 0 ? _options$passive : eventOptions.passive;\n let handlerProp = isNative ? device : toHandlerProp(device, action, capture);\n if (withPassiveOption && passive) handlerProp += 'Passive';\n props[handlerProp] = props[handlerProp] || [];\n props[handlerProp].push(handler);\n};\n\nconst RE_NOT_NATIVE = /^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;\nfunction sortHandlers(_handlers) {\n const native = {};\n const handlers = {};\n const actions = new Set();\n for (let key in _handlers) {\n if (RE_NOT_NATIVE.test(key)) {\n actions.add(RegExp.lastMatch);\n handlers[key] = _handlers[key];\n } else {\n native[key] = _handlers[key];\n }\n }\n return [handlers, native, actions];\n}\nfunction registerGesture(actions, handlers, handlerKey, key, internalHandlers, config) {\n if (!actions.has(handlerKey)) return;\n if (!EngineMap.has(key)) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[@use-gesture]: You've created a custom handler that that uses the \\`${key}\\` gesture but isn't properly configured.\\n\\nPlease add \\`${key}Action\\` when creating your handler.`);\n }\n return;\n }\n const startKey = handlerKey + 'Start';\n const endKey = handlerKey + 'End';\n const fn = state => {\n let memo = undefined;\n if (state.first && startKey in handlers) handlers[startKey](state);\n if (handlerKey in handlers) memo = handlers[handlerKey](state);\n if (state.last && endKey in handlers) handlers[endKey](state);\n return memo;\n };\n internalHandlers[key] = fn;\n config[key] = config[key] || {};\n}\nfunction parseMergedHandlers(mergedHandlers, mergedConfig) {\n const [handlers, nativeHandlers, actions] = sortHandlers(mergedHandlers);\n const internalHandlers = {};\n registerGesture(actions, handlers, 'onDrag', 'drag', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onWheel', 'wheel', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onScroll', 'scroll', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onPinch', 'pinch', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onMove', 'move', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onHover', 'hover', internalHandlers, mergedConfig);\n return {\n handlers: internalHandlers,\n config: mergedConfig,\n nativeHandlers\n };\n}\n\nexport { Controller, parseMergedHandlers };\n","export { r as rubberbandIfOutOfBounds } from '../../dist/maths-0ab39ae9.esm.js';\n","\n","import { registerAction, dragAction, pinchAction, wheelAction, scrollAction, moveAction, hoverAction } from '@use-gesture/core/actions';\nexport * from '@use-gesture/core/actions';\nimport React from 'react';\nimport { Controller, parseMergedHandlers } from '@use-gesture/core';\nexport * from '@use-gesture/core/utils';\nexport * from '@use-gesture/core/types';\n\nfunction useRecognizers(handlers, config = {}, gestureKey, nativeHandlers) {\n const ctrl = React.useMemo(() => new Controller(handlers), []);\n ctrl.applyHandlers(handlers, nativeHandlers);\n ctrl.applyConfig(config, gestureKey);\n React.useEffect(ctrl.effect.bind(ctrl));\n React.useEffect(() => {\n return ctrl.clean.bind(ctrl);\n }, []);\n if (config.target === undefined) {\n return ctrl.bind.bind(ctrl);\n }\n return undefined;\n}\n\nfunction useDrag(handler, config) {\n registerAction(dragAction);\n return useRecognizers({\n drag: handler\n }, config || {}, 'drag');\n}\n\nfunction usePinch(handler, config) {\n registerAction(pinchAction);\n return useRecognizers({\n pinch: handler\n }, config || {}, 'pinch');\n}\n\nfunction useWheel(handler, config) {\n registerAction(wheelAction);\n return useRecognizers({\n wheel: handler\n }, config || {}, 'wheel');\n}\n\nfunction useScroll(handler, config) {\n registerAction(scrollAction);\n return useRecognizers({\n scroll: handler\n }, config || {}, 'scroll');\n}\n\nfunction useMove(handler, config) {\n registerAction(moveAction);\n return useRecognizers({\n move: handler\n }, config || {}, 'move');\n}\n\nfunction useHover(handler, config) {\n registerAction(hoverAction);\n return useRecognizers({\n hover: handler\n }, config || {}, 'hover');\n}\n\nfunction createUseGesture(actions) {\n actions.forEach(registerAction);\n return function useGesture(_handlers, _config) {\n const {\n handlers,\n nativeHandlers,\n config\n } = parseMergedHandlers(_handlers, _config || {});\n return useRecognizers(handlers, config, undefined, nativeHandlers);\n };\n}\n\nfunction useGesture(handlers, config) {\n const hook = createUseGesture([dragAction, pinchAction, scrollAction, wheelAction, moveAction, hoverAction]);\n return hook(handlers, config || {});\n}\n\nexport { createUseGesture, useDrag, useGesture, useHover, useMove, usePinch, useScroll, useWheel };\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n var _platform$detectOverf;\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: {\n ...platform,\n detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow\n },\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { createContext, useContext, useRef, useCallback, useState, useEffect } from 'react';\nimport * as P from '@radix-ui/react-portal';\nimport { dequal } from 'dequal/lite';\nimport shallow from 'zustand/shallow';\nimport v8n from 'v8n';\nimport { createStitches } from '@stitches/react';\nimport { useDrag as useDrag$1 } from '@use-gesture/react';\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { Arrow } from '@radix-ui/react-tooltip';\n\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\n\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\n\nlet LevaErrors = function (LevaErrors) {\n LevaErrors[LevaErrors[\"UNSUPPORTED_INPUT\"] = 0] = \"UNSUPPORTED_INPUT\";\n LevaErrors[LevaErrors[\"NO_COMPONENT_FOR_TYPE\"] = 1] = \"NO_COMPONENT_FOR_TYPE\";\n LevaErrors[LevaErrors[\"UNKNOWN_INPUT\"] = 2] = \"UNKNOWN_INPUT\";\n LevaErrors[LevaErrors[\"DUPLICATE_KEYS\"] = 3] = \"DUPLICATE_KEYS\";\n LevaErrors[LevaErrors[\"ALREADY_REGISTERED_TYPE\"] = 4] = \"ALREADY_REGISTERED_TYPE\";\n LevaErrors[LevaErrors[\"CLIPBOARD_ERROR\"] = 5] = \"CLIPBOARD_ERROR\";\n LevaErrors[LevaErrors[\"THEME_ERROR\"] = 6] = \"THEME_ERROR\";\n LevaErrors[LevaErrors[\"PATH_DOESNT_EXIST\"] = 7] = \"PATH_DOESNT_EXIST\";\n LevaErrors[LevaErrors[\"INPUT_TYPE_OVERRIDE\"] = 8] = \"INPUT_TYPE_OVERRIDE\";\n LevaErrors[LevaErrors[\"EMPTY_KEY\"] = 9] = \"EMPTY_KEY\";\n return LevaErrors;\n}({});\nconst ErrorList = {\n [LevaErrors.UNSUPPORTED_INPUT]: (type, path) => [`An input with type \\`${type}\\` input was found at path \\`${path}\\` but it's not supported yet.`],\n [LevaErrors.NO_COMPONENT_FOR_TYPE]: (type, path) => [`Type \\`${type}\\` found at path \\`${path}\\` can't be displayed in panel because no component supports it yet.`],\n [LevaErrors.UNKNOWN_INPUT]: (path, value) => [`input at path \\`${path}\\` is not recognized.`, value],\n [LevaErrors.DUPLICATE_KEYS]: (key, path, prevPath) => [`Key \\`${key}\\` of path \\`${path}\\` already exists at path \\`${prevPath}\\`. Even nested keys need to be unique. Rename one of the keys.`],\n [LevaErrors.ALREADY_REGISTERED_TYPE]: type => [`Type ${type} has already been registered. You can't register a component with the same type.`],\n [LevaErrors.CLIPBOARD_ERROR]: value => [`Error copying the value`, value],\n [LevaErrors.THEME_ERROR]: (category, key) => [`Error accessing the theme \\`${category}.${key}\\` value.`],\n [LevaErrors.PATH_DOESNT_EXIST]: path => [`Error getting the value at path \\`${path}\\`. There is probably an error in your \\`render\\` function.`],\n [LevaErrors.INPUT_TYPE_OVERRIDE]: (path, type, wrongType) => [`Input at path \\`${path}\\` already exists with type: \\`${type}\\`. Its type cannot be overridden with type \\`${wrongType}\\`.`],\n [LevaErrors.EMPTY_KEY]: () => ['Keys can not be empty, if you want to hide a label use whitespace.']\n};\nfunction _log(fn, errorType, ...args) {\n const errorFn = ErrorList[errorType];\n const [message, ...rest] = errorFn(...args);\n console[fn]('LEVA: ' + message, ...rest);\n}\nconst warn = _log.bind(null, 'warn');\nconst log = _log.bind(null, 'log');\n\nconst _excluded$a = [\"value\"],\n _excluded2$4 = [\"schema\"],\n _excluded3$1 = [\"value\"];\nconst Schemas = [];\nconst Plugins = {};\nfunction getValueType(_ref) {\n let {\n value\n } = _ref,\n settings = _objectWithoutProperties(_ref, _excluded$a);\n for (let checker of Schemas) {\n const type = checker(value, settings);\n if (type) return type;\n }\n return undefined;\n}\nfunction register(type, _ref2) {\n let {\n schema\n } = _ref2,\n plugin = _objectWithoutProperties(_ref2, _excluded2$4);\n if (type in Plugins) {\n warn(LevaErrors.ALREADY_REGISTERED_TYPE, type);\n return;\n }\n Schemas.push((value, settings) => schema(value, settings) && type);\n Plugins[type] = plugin;\n}\nconst getUniqueType = () => '__CUSTOM__PLUGIN__' + Math.random().toString(36).substr(2, 9);\nfunction createInternalPlugin(plugin) {\n return plugin;\n}\nfunction createPlugin(plugin) {\n const type = getUniqueType();\n Plugins[type] = plugin;\n return input => {\n return {\n type,\n __customInput: input\n };\n };\n}\nfunction normalize$3(type, input, path, data) {\n const {\n normalize: _normalize\n } = Plugins[type];\n if (_normalize) return _normalize(input, path, data);\n if (typeof input !== 'object' || !('value' in input)) return {\n value: input\n };\n const {\n value\n } = input,\n settings = _objectWithoutProperties(input, _excluded3$1);\n return {\n value,\n settings\n };\n}\nfunction sanitize$4(type, value, settings, prevValue, path, store) {\n const {\n sanitize\n } = Plugins[type];\n if (sanitize) return sanitize(value, settings, prevValue, path, store);\n return value;\n}\nfunction format$2(type, value, settings) {\n const {\n format\n } = Plugins[type];\n if (format) return format(value, settings);\n return value;\n}\n\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\n\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\nconst clamp = (x, min, max) => x > max ? max : x < min ? min : x;\nconst pad = (x, pad) => String(x).padStart(pad, '0');\nconst parseNumber = v => {\n if (v === '' || typeof v === 'number') return v;\n try {\n const _v = evaluate(v);\n if (!isNaN(_v)) return _v;\n } catch (_unused) {}\n return parseFloat(v);\n};\nconst log10 = Math.log(10);\nfunction getStep(number) {\n let n = Math.abs(+String(number).replace('.', ''));\n if (n === 0) return 0.01;\n while (n !== 0 && n % 10 === 0) n /= 10;\n const significantDigits = Math.floor(Math.log(n) / log10) + 1;\n const numberLog = Math.floor(Math.log10(Math.abs(number)));\n const step = Math.pow(10, numberLog - significantDigits);\n return Math.max(step, 0.001);\n}\nconst range = (v, min, max) => {\n if (max === min) return 0;\n const _v = clamp(v, min, max);\n return (_v - min) / (max - min);\n};\nconst invertedRange = (p, min, max) => p * (max - min) + min;\nconst getUid = () => '_' + Math.random().toString(36).substr(2, 9);\nconst parens = /\\(([^\\(\\)]+)\\)/;\nconst exp = /(-?\\d+(?:\\.\\d+)?)\\s*\\^\\s*(-?\\d+(?:\\.\\d+)?)/;\nconst muldiv = /(-?\\d+(?:\\.\\d+)?)\\s*([*/])\\s*(-?\\d+(?:\\.\\d+)?)/;\nconst addsub = /(-?\\d+(?:\\.\\d+)?)\\s*([+-])\\s*(-?\\d+(?:\\.\\d+)?)/;\nfunction evaluate(expr) {\n expr = expr.replace(/\\s+/g, '');\n if (parens.test(expr)) {\n return evaluate(expr.replace(parens, (_, subExpr) => evaluate(subExpr).toString()));\n }\n if (exp.test(expr)) {\n return evaluate(expr.replace(exp, (_, a, b) => Math.pow(Number(a), Number(b)).toString()));\n }\n if (muldiv.test(expr)) {\n return evaluate(expr.replace(muldiv, (_, a, op, b) => op === '*' ? (Number(a) * Number(b)).toString() : Number(b) === 0 ? (() => {\n throw new Error('Division by zero');\n })() : (Number(a) / Number(b)).toString()));\n }\n if (addsub.test(expr)) {\n return evaluate(expr.replace(addsub, (_, a, op, b) => op === '+' ? (Number(a) + Number(b)).toString() : (Number(a) - Number(b)).toString()));\n }\n return Number(expr);\n}\n\nfunction pick(object, keys) {\n return keys.reduce((obj, key) => {\n if (!!object && object.hasOwnProperty(key)) {\n obj[key] = object[key];\n }\n return obj;\n }, {});\n}\nfunction omit(object, keys) {\n const obj = _objectSpread2({}, object);\n keys.forEach(k => k in object && delete obj[k]);\n return obj;\n}\nfunction mapArrayToKeys(value, keys) {\n return value.reduce((acc, v, i) => Object.assign(acc, {\n [keys[i]]: v\n }), {});\n}\nfunction isObject(variable) {\n return Object.prototype.toString.call(variable) === '[object Object]';\n}\nconst isEmptyObject = obj => isObject(obj) && Object.keys(obj).length === 0;\n\nlet SpecialInputs = function (SpecialInputs) {\n SpecialInputs[\"BUTTON\"] = \"BUTTON\";\n SpecialInputs[\"BUTTON_GROUP\"] = \"BUTTON_GROUP\";\n SpecialInputs[\"MONITOR\"] = \"MONITOR\";\n SpecialInputs[\"FOLDER\"] = \"FOLDER\";\n return SpecialInputs;\n}({});\nlet LevaInputs = function (LevaInputs) {\n LevaInputs[\"SELECT\"] = \"SELECT\";\n LevaInputs[\"IMAGE\"] = \"IMAGE\";\n LevaInputs[\"NUMBER\"] = \"NUMBER\";\n LevaInputs[\"COLOR\"] = \"COLOR\";\n LevaInputs[\"STRING\"] = \"STRING\";\n LevaInputs[\"BOOLEAN\"] = \"BOOLEAN\";\n LevaInputs[\"INTERVAL\"] = \"INTERVAL\";\n LevaInputs[\"VECTOR3D\"] = \"VECTOR3D\";\n LevaInputs[\"VECTOR2D\"] = \"VECTOR2D\";\n return LevaInputs;\n}({});\n\nconst _excluded$9 = [\"type\", \"__customInput\"],\n _excluded2$3 = [\"render\", \"label\", \"optional\", \"order\", \"disabled\", \"hint\", \"onChange\", \"onEditStart\", \"onEditEnd\", \"transient\"],\n _excluded3 = [\"type\"];\nfunction parseOptions(_input, key, mergedOptions = {}, customType) {\n var _commonOptions$option, _commonOptions$disabl;\n if (typeof _input !== 'object' || Array.isArray(_input)) {\n return {\n type: customType,\n input: _input,\n options: _objectSpread2({\n key,\n label: key,\n optional: false,\n disabled: false,\n order: 0\n }, mergedOptions)\n };\n }\n if ('__customInput' in _input) {\n const {\n type: _type,\n __customInput\n } = _input,\n options = _objectWithoutProperties(_input, _excluded$9);\n return parseOptions(__customInput, key, options, _type);\n }\n const {\n render,\n label,\n optional,\n order = 0,\n disabled,\n hint,\n onChange,\n onEditStart,\n onEditEnd,\n transient\n } = _input,\n inputWithType = _objectWithoutProperties(_input, _excluded2$3);\n const commonOptions = _objectSpread2({\n render,\n key,\n label: label !== null && label !== void 0 ? label : key,\n hint,\n transient: transient !== null && transient !== void 0 ? transient : !!onChange,\n onEditStart,\n onEditEnd,\n disabled,\n optional,\n order\n }, mergedOptions);\n let {\n type\n } = inputWithType,\n input = _objectWithoutProperties(inputWithType, _excluded3);\n type = customType !== null && customType !== void 0 ? customType : type;\n if (type in SpecialInputs) {\n return {\n type,\n input,\n options: commonOptions\n };\n }\n let computedInput;\n if (customType && isObject(input) && 'value' in input) computedInput = input.value;else computedInput = isEmptyObject(input) ? undefined : input;\n return {\n type,\n input: computedInput,\n options: _objectSpread2(_objectSpread2({}, commonOptions), {}, {\n onChange,\n optional: (_commonOptions$option = commonOptions.optional) !== null && _commonOptions$option !== void 0 ? _commonOptions$option : false,\n disabled: (_commonOptions$disabl = commonOptions.disabled) !== null && _commonOptions$disabl !== void 0 ? _commonOptions$disabl : false\n })\n };\n}\nfunction normalizeInput(_input, key, path, data) {\n const parsedInputAndOptions = parseOptions(_input, key);\n const {\n type,\n input: parsedInput,\n options\n } = parsedInputAndOptions;\n if (type) {\n if (type in SpecialInputs) return parsedInputAndOptions;\n return {\n type,\n input: normalize$3(type, parsedInput, path, data),\n options\n };\n }\n let inputType = getValueType(parsedInput);\n if (inputType) return {\n type: inputType,\n input: normalize$3(inputType, parsedInput, path, data),\n options\n };\n inputType = getValueType({\n value: parsedInput\n });\n if (inputType) return {\n type: inputType,\n input: normalize$3(inputType, {\n value: parsedInput\n }, path, data),\n options\n };\n return false;\n}\nfunction updateInput(input, newValue, path, store, fromPanel) {\n const {\n value,\n type,\n settings\n } = input;\n input.value = sanitizeValue({\n type,\n value,\n settings\n }, newValue, path, store);\n input.fromPanel = fromPanel;\n}\nconst ValueError = function ValueError(message, value, error) {\n this.type = 'LEVA_ERROR';\n this.message = 'LEVA: ' + message;\n this.previousValue = value;\n this.error = error;\n};\nfunction sanitizeValue({\n type,\n value,\n settings\n}, newValue, path, store) {\n const _newValue = type !== 'SELECT' && typeof newValue === 'function' ? newValue(value) : newValue;\n let sanitizedNewValue;\n try {\n sanitizedNewValue = sanitize$4(type, _newValue, settings, value, path, store);\n } catch (e) {\n throw new ValueError(`The value \\`${newValue}\\` did not result in a correct value.`, value, e);\n }\n if (dequal(sanitizedNewValue, value)) {\n return value;\n }\n return sanitizedNewValue;\n}\n\nconst debounce = (callback, wait, immediate = false) => {\n let timeout = 0;\n return function () {\n const args = arguments;\n const callNow = immediate && !timeout;\n const next = () => callback.apply(this, args);\n window.clearTimeout(timeout);\n timeout = window.setTimeout(next, wait);\n if (callNow) next();\n };\n};\n\nconst multiplyStep = event => event.shiftKey ? 5 : event.altKey ? 1 / 5 : 1;\n\nconst _excluded$8 = [\"value\"],\n _excluded2$2 = [\"min\", \"max\"];\nconst schema$3 = v => {\n if (typeof v === 'number') return true;\n if (typeof v === 'string') {\n const _v = parseFloat(v);\n if (isNaN(_v)) return false;\n const suffix = v.substring(('' + _v).length).trim();\n return suffix.length < 4;\n }\n return false;\n};\nconst sanitize$3 = (v, {\n min: _min = -Infinity,\n max: _max = Infinity,\n suffix\n}) => {\n const _v = parseFloat(v);\n if (v === '' || isNaN(_v)) throw Error('Invalid number');\n const f = clamp(_v, _min, _max);\n return suffix ? f + suffix : f;\n};\nconst format$1 = (v, {\n pad: _pad = 0,\n suffix\n}) => {\n const f = parseFloat(v).toFixed(_pad);\n return suffix ? f + suffix : f;\n};\nconst normalize$2 = _ref => {\n let {\n value\n } = _ref,\n settings = _objectWithoutProperties(_ref, _excluded$8);\n const {\n min = -Infinity,\n max = Infinity\n } = settings,\n _settings = _objectWithoutProperties(settings, _excluded2$2);\n let _value = parseFloat(value);\n const suffix = typeof value === 'string' ? value.substring(('' + _value).length) : undefined;\n _value = clamp(_value, min, max);\n let step = settings.step;\n if (!step) {\n if (Number.isFinite(min)) {\n if (Number.isFinite(max)) step = +(Math.abs(max - min) / 100).toPrecision(1);else step = +(Math.abs(_value - min) / 100).toPrecision(1);\n } else if (Number.isFinite(max)) step = +(Math.abs(max - _value) / 100).toPrecision(1);\n }\n const padStep = step ? getStep(step) * 10 : getStep(_value);\n step = step || padStep / 10;\n const pad = Math.round(clamp(Math.log10(1 / padStep), 0, 2));\n return {\n value: suffix ? _value + suffix : _value,\n settings: _objectSpread2({\n initialValue: _value,\n step,\n pad,\n min,\n max,\n suffix\n }, _settings)\n };\n};\nconst sanitizeStep$1 = (v, {\n step,\n initialValue\n}) => {\n const steps = Math.round((v - initialValue) / step);\n return initialValue + steps * step;\n};\n\nvar props$3 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema$3,\n sanitize: sanitize$3,\n format: format$1,\n normalize: normalize$2,\n sanitizeStep: sanitizeStep$1\n});\n\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\n\nconst InputContext = createContext({});\nfunction useInputContext() {\n return useContext(InputContext);\n}\nconst ThemeContext = createContext(null);\nconst StoreContext = createContext(null);\nconst PanelSettingsContext = createContext(null);\nfunction useStoreContext() {\n return useContext(StoreContext);\n}\nfunction usePanelSettingsContext() {\n return useContext(PanelSettingsContext);\n}\nfunction LevaStoreProvider({\n children,\n store\n}) {\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n}\n\nconst getDefaultTheme = () => ({\n colors: {\n elevation1: '#292d39',\n elevation2: '#181c20',\n elevation3: '#373c4b',\n accent1: '#0066dc',\n accent2: '#007bff',\n accent3: '#3c93ff',\n highlight1: '#535760',\n highlight2: '#8c92a4',\n highlight3: '#fefefe',\n vivid1: '#ffcc00',\n folderWidgetColor: '$highlight2',\n folderTextColor: '$highlight3',\n toolTipBackground: '$highlight3',\n toolTipText: '$elevation2'\n },\n radii: {\n xs: '2px',\n sm: '3px',\n lg: '10px'\n },\n space: {\n xs: '3px',\n sm: '6px',\n md: '10px',\n rowGap: '7px',\n colGap: '7px'\n },\n fonts: {\n mono: `ui-monospace, SFMono-Regular, Menlo, 'Roboto Mono', monospace`,\n sans: `system-ui, sans-serif`\n },\n fontSizes: {\n root: '11px',\n toolTip: '$root'\n },\n sizes: {\n rootWidth: '280px',\n controlWidth: '160px',\n numberInputMinWidth: '38px',\n scrubberWidth: '8px',\n scrubberHeight: '16px',\n rowHeight: '24px',\n folderTitleHeight: '20px',\n checkboxSize: '16px',\n joystickWidth: '100px',\n joystickHeight: '100px',\n colorPickerWidth: '$controlWidth',\n colorPickerHeight: '100px',\n imagePreviewWidth: '$controlWidth',\n imagePreviewHeight: '100px',\n monitorHeight: '60px',\n titleBarHeight: '39px'\n },\n shadows: {\n level1: '0 0 9px 0 #00000088',\n level2: '0 4px 14px #00000033'\n },\n borderWidths: {\n root: '0px',\n input: '1px',\n focus: '1px',\n hover: '1px',\n active: '1px',\n folder: '1px'\n },\n fontWeights: {\n label: 'normal',\n folder: 'normal',\n button: 'normal'\n }\n});\nfunction createStateClass(value, options) {\n const [borderColor, bgColor] = value.split(' ');\n const css = {};\n if (borderColor !== 'none') {\n css.boxShadow = `${options.inset ? 'inset ' : ''}0 0 0 $borderWidths${[options.key]} $colors${borderColor !== 'default' && borderColor || options.borderColor}`;\n }\n if (bgColor) {\n css.backgroundColor = bgColor;\n }\n return css;\n}\nconst utils = {\n $inputStyle: () => value => createStateClass(value, {\n key: '$input',\n borderColor: '$highlight1',\n inset: true\n }),\n $focusStyle: () => value => createStateClass(value, {\n key: '$focus',\n borderColor: '$accent2'\n }),\n $hoverStyle: () => value => createStateClass(value, {\n key: '$hover',\n borderColor: '$accent1',\n inset: true\n }),\n $activeStyle: () => value => createStateClass(value, {\n key: '$active',\n borderColor: '$accent1',\n inset: true\n })\n};\nconst stitches = createStitches({\n prefix: 'leva',\n theme: getDefaultTheme(),\n utils: _objectSpread2(_objectSpread2({}, utils), {}, {\n $flex: () => ({\n display: 'flex',\n alignItems: 'center'\n }),\n $flexCenter: () => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }),\n $reset: () => ({\n outline: 'none',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n color: 'inherit',\n fontFamily: 'inherit',\n border: 'none',\n backgroundColor: 'transparent',\n appearance: 'none'\n }),\n $draggable: () => ({\n touchAction: 'none',\n WebkitUserDrag: 'none',\n userSelect: 'none'\n }),\n $focus: value => ({\n '&:focus': utils.$focusStyle()(value)\n }),\n $focusWithin: value => ({\n '&:focus-within': utils.$focusStyle()(value)\n }),\n $hover: value => ({\n '&:hover': utils.$hoverStyle()(value)\n }),\n $active: value => ({\n '&:active': utils.$activeStyle()(value)\n })\n })\n});\nconst styled = stitches.styled;\nstitches.css;\nconst createTheme = stitches.createTheme;\nconst globalCss = stitches.globalCss;\nconst keyframes = stitches.keyframes;\nconst globalStyles = globalCss({\n '.leva__panel__dragged': {\n WebkitUserDrag: 'none',\n userSelect: 'none',\n input: {\n userSelect: 'none'\n },\n '*': {\n cursor: 'ew-resize !important'\n }\n }\n});\n\nfunction mergeTheme(newTheme) {\n const defaultTheme = getDefaultTheme();\n if (!newTheme) return {\n theme: defaultTheme,\n className: ''\n };\n Object.keys(newTheme).forEach(key => {\n Object.assign(defaultTheme[key], newTheme[key]);\n });\n const customTheme = createTheme(defaultTheme);\n return {\n theme: defaultTheme,\n className: customTheme.className\n };\n}\nfunction useTh(category, key) {\n const {\n theme\n } = useContext(ThemeContext);\n if (!(category in theme) || !(key in theme[category])) {\n warn(LevaErrors.THEME_ERROR, category, key);\n return '';\n }\n let _key = key;\n while (true) {\n let value = theme[category][_key];\n if (typeof value === 'string' && value.charAt(0) === '$') _key = value.substr(1);else return value;\n }\n}\n\nconst StyledInput = styled('input', {\n $reset: '',\n padding: '0 $sm',\n width: 0,\n minWidth: 0,\n flex: 1,\n height: '100%',\n variants: {\n levaType: {\n number: {\n textAlign: 'right'\n }\n },\n as: {\n textarea: {\n padding: '$sm'\n }\n }\n }\n});\nconst InnerLabel = styled('div', {\n $draggable: '',\n height: '100%',\n $flexCenter: '',\n position: 'relative',\n padding: '0 $xs',\n fontSize: '0.8em',\n opacity: 0.8,\n cursor: 'default',\n touchAction: 'none',\n [`& + ${StyledInput}`]: {\n paddingLeft: 0\n }\n});\nconst InnerNumberLabel = styled(InnerLabel, {\n cursor: 'ew-resize',\n marginRight: '-$xs',\n textTransform: 'uppercase',\n opacity: 0.3,\n '&:hover': {\n opacity: 1\n },\n variants: {\n dragging: {\n true: {\n backgroundColor: '$accent2',\n opacity: 1\n }\n }\n }\n});\nconst InputContainer = styled('div', {\n $flex: '',\n position: 'relative',\n borderRadius: '$sm',\n overflow: 'hidden',\n color: 'inherit',\n height: '$rowHeight',\n backgroundColor: '$elevation3',\n $inputStyle: '$elevation1',\n $hover: '',\n $focusWithin: '',\n variants: {\n textArea: {\n true: {\n height: 'auto'\n }\n }\n }\n});\n\nconst _excluded$7 = [\"innerLabel\", \"value\", \"onUpdate\", \"onChange\", \"onKeyDown\", \"type\", \"id\", \"inputType\", \"rows\"],\n _excluded2$1 = [\"onUpdate\"];\nfunction ValueInput(_ref) {\n let {\n innerLabel,\n value,\n onUpdate,\n onChange,\n onKeyDown,\n type,\n id,\n inputType = 'text',\n rows = 0\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$7);\n const {\n id: _id,\n emitOnEditStart,\n emitOnEditEnd,\n disabled\n } = useInputContext();\n const inputId = id || _id;\n const inputRef = useRef(null);\n const isTextArea = rows > 0;\n const asType = isTextArea ? 'textarea' : 'input';\n const update = useCallback(fn => event => {\n const _value = event.currentTarget.value;\n fn(_value);\n }, []);\n React.useEffect(() => {\n const ref = inputRef.current;\n const _onUpdate = update(value => {\n onUpdate(value);\n emitOnEditEnd();\n });\n ref === null || ref === void 0 || ref.addEventListener('blur', _onUpdate);\n return () => ref === null || ref === void 0 ? void 0 : ref.removeEventListener('blur', _onUpdate);\n }, [update, onUpdate, emitOnEditEnd]);\n const onKeyPress = useCallback(event => {\n if (event.key === 'Enter') {\n update(onUpdate)(event);\n }\n }, [update, onUpdate]);\n const inputProps = Object.assign({\n as: asType\n }, isTextArea ? {\n rows\n } : {}, props);\n return React.createElement(InputContainer, {\n textArea: isTextArea\n }, innerLabel && typeof innerLabel === 'string' ? React.createElement(InnerLabel, null, innerLabel) : innerLabel, React.createElement(StyledInput, _extends({\n levaType: type,\n ref: inputRef,\n id: inputId,\n type: inputType,\n autoComplete: \"off\",\n spellCheck: \"false\",\n value: value,\n onChange: update(onChange),\n onFocus: () => emitOnEditStart(),\n onKeyPress: onKeyPress,\n onKeyDown: onKeyDown,\n disabled: disabled\n }, inputProps)));\n}\nfunction NumberInput(_ref2) {\n let {\n onUpdate\n } = _ref2,\n props = _objectWithoutProperties(_ref2, _excluded2$1);\n const _onUpdate = useCallback(v => onUpdate(parseNumber(v)), [onUpdate]);\n const onKeyDown = useCallback(event => {\n const dir = event.key === 'ArrowUp' ? 1 : event.key === 'ArrowDown' ? -1 : 0;\n if (dir) {\n event.preventDefault();\n const step = event.altKey ? 0.1 : event.shiftKey ? 10 : 1;\n onUpdate(v => parseFloat(v) + dir * step);\n }\n }, [onUpdate]);\n return React.createElement(ValueInput, _extends({}, props, {\n onUpdate: _onUpdate,\n onKeyDown: onKeyDown,\n type: \"number\"\n }));\n}\n\nconst StyledFolder = styled('div', {});\nconst StyledWrapper = styled('div', {\n position: 'relative',\n background: '$elevation2',\n transition: 'height 300ms ease',\n variants: {\n fill: {\n true: {},\n false: {}\n },\n flat: {\n false: {},\n true: {}\n },\n isRoot: {\n true: {},\n false: {\n paddingLeft: '$md',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n width: '$borderWidths$folder',\n height: '100%',\n backgroundColor: '$folderWidgetColor',\n opacity: 0.4,\n transform: 'translateX(-50%)'\n }\n }\n }\n },\n compoundVariants: [{\n isRoot: true,\n fill: false,\n css: {\n overflowY: 'auto',\n maxHeight: 'calc(100vh - 20px - $$titleBarHeight)'\n }\n }, {\n isRoot: true,\n flat: false,\n css: {\n borderRadius: '$lg'\n }\n }]\n});\nconst StyledTitle = styled('div', {\n $flex: '',\n color: '$folderTextColor',\n userSelect: 'none',\n cursor: 'pointer',\n height: '$folderTitleHeight',\n fontWeight: '$folder',\n '> svg': {\n marginLeft: -4,\n marginRight: 4,\n cursor: 'pointer',\n fill: '$folderWidgetColor',\n opacity: 0.6\n },\n '&:hover > svg': {\n fill: '$folderWidgetColor'\n },\n [`&:hover + ${StyledWrapper}::after`]: {\n opacity: 0.6\n },\n [`${StyledFolder}:hover > & + ${StyledWrapper}::after`]: {\n opacity: 0.6\n },\n [`${StyledFolder}:hover > & > svg`]: {\n opacity: 1\n }\n});\nconst StyledContent = styled('div', {\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: '100%',\n rowGap: '$rowGap',\n transition: 'opacity 250ms ease',\n variants: {\n toggled: {\n true: {\n opacity: 1,\n transitionDelay: '250ms'\n },\n false: {\n opacity: 0,\n transitionDelay: '0ms',\n pointerEvents: 'none'\n }\n },\n isRoot: {\n true: {\n '& > div': {\n paddingLeft: '$md',\n paddingRight: '$md'\n },\n '& > div:first-of-type': {\n paddingTop: '$sm'\n },\n '& > div:last-of-type': {\n paddingBottom: '$sm'\n },\n [`> ${StyledFolder}:not(:first-of-type)`]: {\n paddingTop: '$sm',\n marginTop: '$md',\n borderTop: '$borderWidths$folder solid $colors$elevation1'\n }\n }\n }\n }\n});\n\nconst StyledRow = styled('div', {\n position: 'relative',\n zIndex: 100,\n display: 'grid',\n rowGap: '$rowGap',\n gridTemplateRows: 'minmax($sizes$rowHeight, max-content)',\n alignItems: 'center',\n color: '$highlight2',\n [`${StyledContent} > &`]: {\n '&:first-of-type': {\n marginTop: '$rowGap'\n },\n '&:last-of-type': {\n marginBottom: '$rowGap'\n }\n },\n variants: {\n disabled: {\n true: {\n pointerEvents: 'none'\n },\n false: {\n '&:hover,&:focus-within': {\n color: '$highlight3'\n }\n }\n }\n }\n});\nconst StyledInputRow = styled(StyledRow, {\n gridTemplateColumns: 'auto $sizes$controlWidth',\n columnGap: '$colGap'\n});\nconst CopyLabelContainer = styled('div', {\n $flex: '',\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n '& > div': {\n marginLeft: '$colGap',\n padding: '0 $xs',\n opacity: 0.4\n },\n '& > div:hover': {\n opacity: 0.8\n },\n '& > div > svg': {\n display: 'none',\n cursor: 'pointer',\n width: 13,\n minWidth: 13,\n height: 13,\n backgroundColor: '$elevation2'\n },\n '&:hover > div > svg': {\n display: 'block'\n },\n variants: {\n align: {\n top: {\n height: '100%',\n alignItems: 'flex-start',\n paddingTop: '$sm'\n }\n }\n }\n});\nconst StyledOptionalToggle = styled('input', {\n $reset: '',\n height: 0,\n width: 0,\n opacity: 0,\n margin: 0,\n '& + label': {\n position: 'relative',\n $flexCenter: '',\n height: '100%',\n userSelect: 'none',\n cursor: 'pointer',\n paddingLeft: 2,\n paddingRight: '$sm',\n pointerEvents: 'auto'\n },\n '& + label:after': {\n content: '\"\"',\n width: 6,\n height: 6,\n backgroundColor: '$elevation3',\n borderRadius: '50%',\n $activeStyle: ''\n },\n '&:focus + label:after': {\n $focusStyle: ''\n },\n '& + label:active:after': {\n backgroundColor: '$accent1',\n $focusStyle: ''\n },\n '&:checked + label:after': {\n backgroundColor: '$accent1'\n }\n});\nconst StyledLabel = styled('label', {\n fontWeight: '$label',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n '& > svg': {\n display: 'block'\n }\n});\nconst StyledInputWrapper$1 = styled('div', {\n opacity: 1,\n variants: {\n disabled: {\n true: {\n opacity: 0.6,\n pointerEvents: 'none',\n [`& ${StyledLabel}`]: {\n pointerEvents: 'auto'\n }\n }\n }\n }\n});\nconst Overlay = styled('div', {\n position: 'fixed',\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n zIndex: 1000,\n userSelect: 'none'\n});\nconst StyledToolTipContent = styled('div', {\n background: '$toolTipBackground',\n fontFamily: '$sans',\n fontSize: '$toolTip',\n padding: '$xs $sm',\n color: '$toolTipText',\n borderRadius: '$xs',\n boxShadow: '$level2',\n maxWidth: 260\n});\nconst ToolTipArrow = styled(Arrow, {\n fill: '$toolTipBackground'\n});\n\nfunction Portal({\n children,\n container = (_globalThis$document => globalThis === null || globalThis === void 0 || (_globalThis$document = globalThis.document) === null || _globalThis$document === void 0 ? void 0 : _globalThis$document.body)()\n}) {\n const {\n className\n } = useContext(ThemeContext);\n return React.createElement(P.Root, {\n className: className,\n container: container\n }, children);\n}\n\nconst _excluded$6 = [\"align\"];\nfunction OptionalToggle() {\n const {\n id,\n disable,\n disabled\n } = useInputContext();\n return React.createElement(React.Fragment, null, React.createElement(StyledOptionalToggle, {\n id: id + '__disable',\n type: \"checkbox\",\n checked: !disabled,\n onChange: () => disable(!disabled)\n }), React.createElement(\"label\", {\n htmlFor: id + '__disable'\n }));\n}\nfunction RawLabel(props) {\n const {\n id,\n optional,\n hint\n } = useInputContext();\n const htmlForProp = props.htmlFor || (id ? id : undefined);\n const titleProp = !hint && typeof props.children === 'string' ? props.children : undefined;\n return React.createElement(React.Fragment, null, optional && React.createElement(OptionalToggle, null), hint !== undefined ? React.createElement(RadixTooltip.Root, null, React.createElement(RadixTooltip.Trigger, {\n asChild: true\n }, React.createElement(StyledLabel, _extends({\n htmlFor: htmlForProp\n }, props))), React.createElement(RadixTooltip.Content, {\n side: \"top\",\n sideOffset: 2\n }, React.createElement(StyledToolTipContent, null, hint, React.createElement(ToolTipArrow, null)))) : React.createElement(StyledLabel, _extends({\n htmlFor: htmlForProp,\n title: titleProp\n }, props)));\n}\nfunction Label(_ref) {\n let {\n align\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$6);\n const {\n value,\n label,\n key,\n disabled\n } = useInputContext();\n const {\n hideCopyButton\n } = usePanelSettingsContext();\n const copyEnabled = !hideCopyButton && key !== undefined;\n const [copied, setCopied] = useState(false);\n const handleClick = async () => {\n try {\n await navigator.clipboard.writeText(JSON.stringify({\n [key]: value !== null && value !== void 0 ? value : ''\n }));\n setCopied(true);\n } catch (_unused) {\n warn(LevaErrors.CLIPBOARD_ERROR, {\n [key]: value\n });\n }\n };\n return React.createElement(CopyLabelContainer, {\n align: align,\n onPointerLeave: () => setCopied(false)\n }, React.createElement(RawLabel, props), copyEnabled && !disabled && React.createElement(\"div\", {\n title: `Click to copy ${typeof label === 'string' ? label : key} value`\n }, !copied ? React.createElement(\"svg\", {\n onClick: handleClick,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\"\n }, React.createElement(\"path\", {\n d: \"M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z\"\n }), React.createElement(\"path\", {\n d: \"M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z\"\n })) : React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\"\n }, React.createElement(\"path\", {\n d: \"M9 2a1 1 0 000 2h2a1 1 0 100-2H9z\"\n }), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M4 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v11a2 2 0 01-2 2H6a2 2 0 01-2-2V5zm9.707 5.707a1 1 0 00-1.414-1.414L9 12.586l-1.293-1.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\",\n clipRule: \"evenodd\"\n }))));\n}\n\nconst _excluded$5 = [\"toggled\"];\nconst Svg = styled('svg', {\n fill: 'currentColor',\n transition: 'transform 350ms ease, fill 250ms ease'\n});\nfunction Chevron(_ref) {\n let {\n toggled\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$5);\n return React.createElement(Svg, _extends({\n width: \"9\",\n height: \"5\",\n viewBox: \"0 0 9 5\",\n xmlns: \"http://www.w3.org/2000/svg\",\n style: {\n transform: `rotate(${toggled ? 0 : -90}deg)`\n }\n }, props), React.createElement(\"path\", {\n d: \"M3.8 4.4c.4.3 1 .3 1.4 0L8 1.7A1 1 0 007.4 0H1.6a1 1 0 00-.7 1.7l3 2.7z\"\n }));\n}\n\nconst _excluded$4 = [\"input\"];\nfunction Row(_ref) {\n let {\n input\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$4);\n if (input) return React.createElement(StyledInputRow, props);\n return React.createElement(StyledRow, props);\n}\n\nfunction useInputSetters({\n value,\n type,\n settings,\n setValue\n}) {\n const [displayValue, setDisplayValue] = useState(format$2(type, value, settings));\n const previousValueRef = useRef(value);\n const settingsRef = useRef(settings);\n settingsRef.current = settings;\n const setFormat = useCallback(v => setDisplayValue(format$2(type, v, settingsRef.current)), [type]);\n const onUpdate = useCallback(updatedValue => {\n try {\n setValue(updatedValue);\n } catch (error) {\n const {\n type,\n previousValue\n } = error;\n if (type !== 'LEVA_ERROR') throw error;\n setFormat(previousValue);\n }\n }, [setFormat, setValue]);\n useEffect(() => {\n if (!dequal(value, previousValueRef.current)) {\n setFormat(value);\n }\n previousValueRef.current = value;\n }, [value, setFormat]);\n return {\n displayValue,\n onChange: setDisplayValue,\n onUpdate\n };\n}\n\nfunction useDrag(handler, config) {\n const {\n emitOnEditStart,\n emitOnEditEnd\n } = useInputContext();\n return useDrag$1(state => {\n if (state.first) {\n document.body.classList.add('leva__panel__dragged');\n emitOnEditStart === null || emitOnEditStart === void 0 || emitOnEditStart();\n }\n const result = handler(state);\n if (state.last) {\n document.body.classList.remove('leva__panel__dragged');\n emitOnEditEnd === null || emitOnEditEnd === void 0 || emitOnEditEnd();\n }\n return result;\n }, config);\n}\n\nfunction useCanvas2d(fn) {\n const canvas = useRef(null);\n const ctx = useRef(null);\n const hasFired = useRef(false);\n useEffect(() => {\n const handleCanvas = debounce(() => {\n canvas.current.width = canvas.current.offsetWidth * window.devicePixelRatio;\n canvas.current.height = canvas.current.offsetHeight * window.devicePixelRatio;\n fn(canvas.current, ctx.current);\n }, 250);\n window.addEventListener('resize', handleCanvas);\n if (!hasFired.current) {\n handleCanvas();\n hasFired.current = true;\n }\n return () => window.removeEventListener('resize', handleCanvas);\n }, [fn]);\n useEffect(() => {\n ctx.current = canvas.current.getContext('2d');\n }, []);\n return [canvas, ctx];\n}\n\nfunction useTransform() {\n const ref = useRef(null);\n const local = useRef({\n x: 0,\n y: 0\n });\n const set = useCallback(point => {\n Object.assign(local.current, point);\n if (ref.current) ref.current.style.transform = `translate3d(${local.current.x}px, ${local.current.y}px, 0)`;\n }, []);\n return [ref, set];\n}\n\nconst _excluded$3 = [\"__refCount\"];\nconst getInputAtPath = (data, path) => {\n if (!data[path]) return null;\n const _data$path = data[path],\n input = _objectWithoutProperties(_data$path, _excluded$3);\n return input;\n};\nfunction useInput(path) {\n const store = useStoreContext();\n const [state, setState] = useState(getInputAtPath(store.getData(), path));\n const set = useCallback(value => store.setValueAtPath(path, value, true), [path, store]);\n const setSettings = useCallback(settings => store.setSettingsAtPath(path, settings), [path, store]);\n const disable = useCallback(flag => store.disableInputAtPath(path, flag), [path, store]);\n const emitOnEditStart = useCallback(() => store.emitOnEditStart(path), [path, store]);\n const emitOnEditEnd = useCallback(() => store.emitOnEditEnd(path), [path, store]);\n useEffect(() => {\n setState(getInputAtPath(store.getData(), path));\n const unsub = store.useStore.subscribe(s => getInputAtPath(s.data, path), setState, {\n equalityFn: shallow\n });\n return () => unsub();\n }, [store, path]);\n return [state, {\n set,\n setSettings,\n disable,\n storeId: store.storeId,\n emitOnEditStart,\n emitOnEditEnd\n }];\n}\n\nconst RangeGrid = styled('div', {\n variants: {\n hasRange: {\n true: {\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: 'auto $sizes$numberInputMinWidth',\n columnGap: '$colGap',\n alignItems: 'center'\n }\n }\n }\n});\n\nconst Range = styled('div', {\n position: 'relative',\n width: '100%',\n height: 2,\n borderRadius: '$xs',\n backgroundColor: '$elevation1'\n});\nconst Scrubber = styled('div', {\n position: 'absolute',\n width: '$scrubberWidth',\n height: '$scrubberHeight',\n borderRadius: '$xs',\n boxShadow: '0 0 0 2px $colors$elevation2',\n backgroundColor: '$accent2',\n cursor: 'pointer',\n $active: 'none $accent1',\n $hover: 'none $accent3',\n variants: {\n position: {\n left: {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n transform: 'translateX(calc(-0.5 * ($sizes$scrubberWidth + 4px)))'\n },\n right: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n transform: 'translateX(calc(0.5 * ($sizes$scrubberWidth + 4px)))'\n }\n }\n }\n});\nconst RangeWrapper = styled('div', {\n position: 'relative',\n $flex: '',\n height: '100%',\n cursor: 'pointer',\n touchAction: 'none'\n});\nconst Indicator = styled('div', {\n position: 'absolute',\n height: '100%',\n backgroundColor: '$accent2'\n});\n\nfunction RangeSlider({\n value,\n min,\n max,\n onDrag,\n step,\n initialValue\n}) {\n const ref = useRef(null);\n const scrubberRef = useRef(null);\n const rangeWidth = useRef(0);\n const scrubberWidth = useTh('sizes', 'scrubberWidth');\n const bind = useDrag(({\n event,\n first,\n xy: [x],\n movement: [mx],\n memo\n }) => {\n if (first) {\n const {\n width,\n left\n } = ref.current.getBoundingClientRect();\n rangeWidth.current = width - parseFloat(scrubberWidth);\n const targetIsScrub = (event === null || event === void 0 ? void 0 : event.target) === scrubberRef.current;\n memo = targetIsScrub ? value : invertedRange((x - left) / width, min, max);\n }\n const newValue = memo + invertedRange(mx / rangeWidth.current, 0, max - min);\n onDrag(sanitizeStep$1(newValue, {\n step,\n initialValue\n }));\n return memo;\n });\n const pos = range(value, min, max);\n return React.createElement(RangeWrapper, _extends({\n ref: ref\n }, bind()), React.createElement(Range, null, React.createElement(Indicator, {\n style: {\n left: 0,\n right: `${(1 - pos) * 100}%`\n }\n })), React.createElement(Scrubber, {\n ref: scrubberRef,\n style: {\n left: `calc(${pos} * (100% - ${scrubberWidth}))`\n }\n }));\n}\n\nconst DraggableLabel = React.memo(({\n label,\n onUpdate,\n step,\n innerLabelTrim\n}) => {\n const [dragging, setDragging] = useState(false);\n const bind = useDrag(({\n active,\n delta: [dx],\n event,\n memo: _memo = 0,\n first,\n last,\n target\n }) => {\n if (first) {\n const label = target;\n label.requestPointerLock();\n }\n if (last) {\n document.exitPointerLock();\n }\n setDragging(active);\n _memo += dx / 2;\n if (Math.abs(_memo) >= 1) {\n onUpdate(v => parseFloat(v) + Math.floor(_memo) * step * multiplyStep(event));\n _memo = 0;\n }\n return _memo;\n });\n return React.createElement(InnerNumberLabel, _extends({\n dragging: dragging,\n title: label.length > 1 ? label : ''\n }, bind()), label.slice(0, innerLabelTrim));\n});\nfunction Number$1({\n label,\n id,\n displayValue,\n onUpdate,\n onChange,\n settings,\n innerLabelTrim = 1\n}) {\n const InnerLabel = innerLabelTrim > 0 && React.createElement(DraggableLabel, {\n label: label,\n step: settings.step,\n onUpdate: onUpdate,\n innerLabelTrim: innerLabelTrim\n });\n return React.createElement(NumberInput, {\n id: id,\n value: String(displayValue),\n onUpdate: onUpdate,\n onChange: onChange,\n innerLabel: InnerLabel\n });\n}\nfunction NumberComponent() {\n const props = useInputContext();\n const {\n label,\n value,\n onUpdate,\n settings,\n id\n } = props;\n const {\n min,\n max\n } = settings;\n const hasRange = max !== Infinity && min !== -Infinity;\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(RangeGrid, {\n hasRange: hasRange\n }, hasRange && React.createElement(RangeSlider, _extends({\n value: parseFloat(value),\n onDrag: onUpdate\n }, settings)), React.createElement(Number$1, _extends({}, props, {\n id: id,\n label: \"value\",\n innerLabelTrim: hasRange ? 0 : 1\n }))));\n}\n\nconst {\n sanitizeStep\n } = props$3,\n rest = _objectWithoutProperties(props$3, [\"sanitizeStep\"]);\nvar number = createInternalPlugin(_objectSpread2({\n component: NumberComponent\n}, rest));\n\nconst schema$2 = (_o, s) => v8n().schema({\n options: v8n().passesAnyOf(v8n().object(), v8n().array())\n}).test(s);\nconst sanitize$2 = (value, {\n values\n}) => {\n if (values.indexOf(value) < 0) throw Error(`Selected value doesn't match Select options`);\n return value;\n};\nconst format = (value, {\n values\n}) => {\n return values.indexOf(value);\n};\nconst normalize$1 = input => {\n let {\n value,\n options\n } = input;\n let keys;\n let values;\n if (Array.isArray(options)) {\n values = options;\n keys = options.map(o => String(o));\n } else {\n values = Object.values(options);\n keys = Object.keys(options);\n }\n if (!('value' in input)) value = values[0];else if (!values.includes(value)) {\n keys.unshift(String(value));\n values.unshift(value);\n }\n if (!Object.values(options).includes(value)) options[String(value)] = value;\n return {\n value,\n settings: {\n keys,\n values\n }\n };\n};\n\nvar props$2 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema$2,\n sanitize: sanitize$2,\n format: format,\n normalize: normalize$1\n});\n\nconst SelectContainer = styled('div', {\n $flexCenter: '',\n position: 'relative',\n '> svg': {\n pointerEvents: 'none',\n position: 'absolute',\n right: '$md'\n }\n});\nconst NativeSelect = styled('select', {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n opacity: 0\n});\nconst PresentationalSelect = styled('div', {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '$rowHeight',\n backgroundColor: '$elevation3',\n borderRadius: '$sm',\n padding: '0 $sm',\n cursor: 'pointer',\n [`${NativeSelect}:focus + &`]: {\n $focusStyle: ''\n },\n [`${NativeSelect}:hover + &`]: {\n $hoverStyle: ''\n }\n});\n\nfunction Select({\n displayValue,\n value,\n onUpdate,\n id,\n settings,\n disabled\n}) {\n const {\n keys,\n values\n } = settings;\n const lastDisplayedValue = useRef();\n if (value === values[displayValue]) {\n lastDisplayedValue.current = keys[displayValue];\n }\n return React.createElement(SelectContainer, null, React.createElement(NativeSelect, {\n id: id,\n value: displayValue,\n onChange: e => onUpdate(values[Number(e.currentTarget.value)]),\n disabled: disabled\n }, keys.map((key, index) => React.createElement(\"option\", {\n key: key,\n value: index\n }, key))), React.createElement(PresentationalSelect, null, lastDisplayedValue.current), React.createElement(Chevron, {\n toggled: true\n }));\n}\nfunction SelectComponent() {\n const {\n label,\n value,\n displayValue,\n onUpdate,\n id,\n disabled,\n settings\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Select, {\n id: id,\n value: value,\n displayValue: displayValue,\n onUpdate: onUpdate,\n settings: settings,\n disabled: disabled\n }));\n}\n\nvar select = createInternalPlugin(_objectSpread2({\n component: SelectComponent\n}, props$2));\n\nconst schema$1 = o => v8n().string().test(o);\nconst sanitize$1 = v => {\n if (typeof v !== 'string') throw Error(`Invalid string`);\n return v;\n};\nconst normalize = ({\n value,\n editable: _editable = true,\n rows: _rows = false\n}) => {\n return {\n value,\n settings: {\n editable: _editable,\n rows: typeof _rows === 'number' ? _rows : _rows ? 5 : 0\n }\n };\n};\n\nvar props$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema$1,\n sanitize: sanitize$1,\n normalize: normalize\n});\n\nconst _excluded$2 = [\"displayValue\", \"onUpdate\", \"onChange\", \"editable\"];\nconst NonEditableString = styled('div', {\n whiteSpace: 'pre-wrap'\n});\nfunction String$1(_ref) {\n let {\n displayValue,\n onUpdate,\n onChange,\n editable = true\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$2);\n if (editable) return React.createElement(ValueInput, _extends({\n value: displayValue,\n onUpdate: onUpdate,\n onChange: onChange\n }, props));\n return React.createElement(NonEditableString, null, displayValue);\n}\nfunction StringComponent() {\n const {\n label,\n settings,\n displayValue,\n onUpdate,\n onChange\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(String$1, _extends({\n displayValue: displayValue,\n onUpdate: onUpdate,\n onChange: onChange\n }, settings)));\n}\n\nvar string = createInternalPlugin(_objectSpread2({\n component: StringComponent\n}, props$1));\n\nconst schema = o => v8n().boolean().test(o);\nconst sanitize = v => {\n if (typeof v !== 'boolean') throw Error('Invalid boolean');\n return v;\n};\n\nvar props = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema,\n sanitize: sanitize\n});\n\nconst StyledInputWrapper = styled('div', {\n position: 'relative',\n $flex: '',\n height: '$rowHeight',\n input: {\n $reset: '',\n height: 0,\n width: 0,\n opacity: 0,\n margin: 0\n },\n label: {\n position: 'relative',\n $flexCenter: '',\n userSelect: 'none',\n cursor: 'pointer',\n height: '$checkboxSize',\n width: '$checkboxSize',\n backgroundColor: '$elevation3',\n borderRadius: '$sm',\n $hover: ''\n },\n 'input:focus + label': {\n $focusStyle: ''\n },\n 'input:focus:checked + label, input:checked + label:hover': {\n $hoverStyle: '$accent3'\n },\n 'input + label:active': {\n backgroundColor: '$accent1'\n },\n 'input:checked + label:active': {\n backgroundColor: '$accent1'\n },\n 'label > svg': {\n display: 'none',\n width: '90%',\n height: '90%',\n stroke: '$highlight3'\n },\n 'input:checked + label': {\n backgroundColor: '$accent2'\n },\n 'input:checked + label > svg': {\n display: 'block'\n }\n});\n\nfunction Boolean({\n value,\n onUpdate,\n id,\n disabled\n}) {\n return React.createElement(StyledInputWrapper, null, React.createElement(\"input\", {\n id: id,\n type: \"checkbox\",\n checked: value,\n onChange: e => onUpdate(e.currentTarget.checked),\n disabled: disabled\n }), React.createElement(\"label\", {\n htmlFor: id\n }, React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M5 13l4 4L19 7\"\n }))));\n}\nfunction BooleanComponent() {\n const {\n label,\n value,\n onUpdate,\n disabled,\n id\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Boolean, {\n value: value,\n onUpdate: onUpdate,\n id: id,\n disabled: disabled\n }));\n}\n\nvar boolean = createInternalPlugin(_objectSpread2({\n component: BooleanComponent\n}, props));\n\nconst _excluded$1 = [\"locked\"];\nfunction Coordinate({\n value,\n id,\n valueKey,\n settings,\n onUpdate,\n innerLabelTrim\n}) {\n const valueRef = useRef(value[valueKey]);\n valueRef.current = value[valueKey];\n const setValue = useCallback(newValue => onUpdate({\n [valueKey]: sanitizeValue({\n type: 'NUMBER',\n value: valueRef.current,\n settings\n }, newValue)\n }), [onUpdate, settings, valueKey]);\n const number = useInputSetters({\n type: 'NUMBER',\n value: value[valueKey],\n settings,\n setValue\n });\n return React.createElement(Number$1, {\n id: id,\n label: valueKey,\n value: value[valueKey],\n displayValue: number.displayValue,\n onUpdate: number.onUpdate,\n onChange: number.onChange,\n settings: settings,\n innerLabelTrim: innerLabelTrim\n });\n}\nconst Container = styled('div', {\n display: 'grid',\n columnGap: '$colGap',\n gridAutoFlow: 'column dense',\n alignItems: 'center',\n variants: {\n withLock: {\n true: {\n gridTemplateColumns: '10px auto',\n '> svg': {\n cursor: 'pointer'\n }\n }\n }\n }\n});\nfunction Lock(_ref) {\n let {\n locked\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$1);\n return React.createElement(\"svg\", _extends({\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), locked ? React.createElement(\"path\", {\n d: \"M5 4.63601C5 3.76031 5.24219 3.1054 5.64323 2.67357C6.03934 2.24705 6.64582 1.9783 7.5014 1.9783C8.35745 1.9783 8.96306 2.24652 9.35823 2.67208C9.75838 3.10299 10 3.75708 10 4.63325V5.99999H5V4.63601ZM4 5.99999V4.63601C4 3.58148 4.29339 2.65754 4.91049 1.99307C5.53252 1.32329 6.42675 0.978302 7.5014 0.978302C8.57583 0.978302 9.46952 1.32233 10.091 1.99162C10.7076 2.65557 11 3.57896 11 4.63325V5.99999H12C12.5523 5.99999 13 6.44771 13 6.99999V13C13 13.5523 12.5523 14 12 14H3C2.44772 14 2 13.5523 2 13V6.99999C2 6.44771 2.44772 5.99999 3 5.99999H4ZM3 6.99999H12V13H3V6.99999Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }) : React.createElement(\"path\", {\n d: \"M9 3.63601C9 2.76044 9.24207 2.11211 9.64154 1.68623C10.0366 1.26502 10.6432 1 11.5014 1C12.4485 1 13.0839 1.30552 13.4722 1.80636C13.8031 2.23312 14 2.84313 14 3.63325H15C15 2.68242 14.7626 1.83856 14.2625 1.19361C13.6389 0.38943 12.6743 0 11.5014 0C10.4294 0 9.53523 0.337871 8.91218 1.0021C8.29351 1.66167 8 2.58135 8 3.63601V6H1C0.447715 6 0 6.44772 0 7V13C0 13.5523 0.447715 14 1 14H10C10.5523 14 11 13.5523 11 13V7C11 6.44772 10.5523 6 10 6H9V3.63601ZM1 7H10V13H1V7Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n}\nfunction Vector({\n value,\n onUpdate,\n settings,\n innerLabelTrim\n}) {\n const {\n id,\n setSettings\n } = useInputContext();\n const {\n lock,\n locked\n } = settings;\n return React.createElement(Container, {\n withLock: lock\n }, lock && React.createElement(Lock, {\n locked: locked,\n onClick: () => setSettings({\n locked: !locked\n })\n }), Object.keys(value).map((key, i) => React.createElement(Coordinate, {\n id: i === 0 ? id : `${id}.${key}`,\n key: key,\n valueKey: key,\n value: value,\n settings: settings[key],\n onUpdate: onUpdate,\n innerLabelTrim: innerLabelTrim\n })));\n}\n\nconst normalizeKeyedNumberSettings = (value, settings) => {\n const _settings = {};\n let maxStep = 0;\n let minPad = Infinity;\n Object.entries(value).forEach(([key, v]) => {\n _settings[key] = normalize$2(_objectSpread2({\n value: v\n }, settings[key])).settings;\n maxStep = Math.max(maxStep, _settings[key].step);\n minPad = Math.min(minPad, _settings[key].pad);\n });\n for (let key in _settings) {\n const {\n step,\n min,\n max\n } = settings[key] || {};\n if (!isFinite(step) && (!isFinite(min) || !isFinite(max))) {\n _settings[key].step = maxStep;\n _settings[key].pad = minPad;\n }\n }\n return _settings;\n};\n\nconst _excluded = [\"lock\"],\n _excluded2 = [\"value\"];\nfunction getVectorSchema(dimension) {\n const isVectorArray = v8n().array().length(dimension).every.number();\n const isVectorObject = o => {\n if (!o || typeof o !== 'object') return false;\n const values = Object.values(o);\n return values.length === dimension && values.every(v => isFinite(v));\n };\n return o => {\n return isVectorArray.test(o) || isVectorObject(o);\n };\n}\nfunction getVectorType(value) {\n return Array.isArray(value) ? 'array' : 'object';\n}\nfunction convert(value, format, keys) {\n if (getVectorType(value) === format) return value;\n return format === 'array' ? Object.values(value) : mapArrayToKeys(value, keys);\n}\nconst sanitizeVector = (value, settings, previousValue) => {\n const _value = convert(value, 'object', settings.keys);\n for (let key in _value) _value[key] = sanitize$3(_value[key], settings[key]);\n const _valueKeys = Object.keys(_value);\n let newValue = {};\n if (_valueKeys.length === settings.keys.length) newValue = _value;else {\n const _previousValue = convert(previousValue, 'object', settings.keys);\n if (_valueKeys.length === 1 && settings.locked) {\n const lockedKey = _valueKeys[0];\n const lockedCoordinate = _value[lockedKey];\n const previousLockedCoordinate = _previousValue[lockedKey];\n const ratio = previousLockedCoordinate !== 0 ? lockedCoordinate / previousLockedCoordinate : 1;\n for (let key in _previousValue) {\n if (key === lockedKey) newValue[lockedKey] = lockedCoordinate;else newValue[key] = _previousValue[key] * ratio;\n }\n } else {\n newValue = _objectSpread2(_objectSpread2({}, _previousValue), _value);\n }\n }\n return convert(newValue, settings.format, settings.keys);\n};\nconst formatVector = (value, settings) => convert(value, 'object', settings.keys);\nconst isNumberSettings = o => !!o && ('step' in o || 'min' in o || 'max' in o);\nfunction normalizeVector(value, settings, defaultKeys = []) {\n const {\n lock = false\n } = settings,\n _settings = _objectWithoutProperties(settings, _excluded);\n const format = Array.isArray(value) ? 'array' : 'object';\n const keys = format === 'object' ? Object.keys(value) : defaultKeys;\n const _value = convert(value, 'object', keys);\n const mergedSettings = isNumberSettings(_settings) ? keys.reduce((acc, k) => Object.assign(acc, {\n [k]: _settings\n }), {}) : _settings;\n const numberSettings = normalizeKeyedNumberSettings(_value, mergedSettings);\n return {\n value: format === 'array' ? value : _value,\n settings: _objectSpread2(_objectSpread2({}, numberSettings), {}, {\n format,\n keys,\n lock,\n locked: false\n })\n };\n}\nfunction getVectorPlugin(defaultKeys) {\n return {\n schema: getVectorSchema(defaultKeys.length),\n normalize: _ref => {\n let {\n value\n } = _ref,\n settings = _objectWithoutProperties(_ref, _excluded2);\n return normalizeVector(value, settings, defaultKeys);\n },\n format: (value, settings) => formatVector(value, settings),\n sanitize: (value, settings, prevValue) => sanitizeVector(value, settings, prevValue)\n };\n}\n\nexport { ThemeContext as $, useInputSetters as A, Plugins as B, InputContext as C, StyledInputWrapper$1 as D, useStoreContext as E, useCanvas2d as F, useInput as G, log as H, Indicator as I, StyledTitle as J, Chevron as K, Label as L, StyledWrapper as M, StyledContent as N, Overlay as O, Portal as P, StyledFolder as Q, Row as R, Scrubber as S, StyledInputRow as T, debounce as U, ValueInput as V, globalStyles as W, PanelSettingsContext as X, StoreContext as Y, mergeTheme as Z, _objectSpread2 as _, Vector as a, register as a0, LevaInputs as a1, select as a2, number as a3, string as a4, boolean as a5, LevaStoreProvider as a6, String$1 as a7, Number$1 as a8, Boolean as a9, Select as aa, InnerLabel as ab, pad as ac, evaluate as ad, createPlugin as ae, keyframes as af, getVectorSchema as ag, getVectorType as ah, sanitizeVector as ai, formatVector as aj, normalizeVector as ak, useTransform as b, createInternalPlugin as c, useTh as d, useDrag as e, _extends as f, getVectorPlugin as g, clamp as h, _objectWithoutProperties as i, invertedRange as j, sanitizeStep as k, RangeWrapper as l, multiplyStep as m, normalizeKeyedNumberSettings as n, omit as o, pick as p, Range as q, range as r, styled as s, getUid as t, useInputContext as u, SpecialInputs as v, warn as w, LevaErrors as x, updateInput as y, normalizeInput as z };\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return\"string\"==typeof r?N(r.trim(),y.string):\"object\"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u<t&&(t=u,b=g)}return b}};f.string.push([function(f){var r=f.toLowerCase(),d=\"transparent\"===r?\"#0000\":a[r];return d?new e(d).toRgb():null},\"name\"])}\n","import e,{useRef as r,useMemo as n,useEffect as t,useState as o,useCallback as a,useLayoutEffect as l}from\"react\";function u(){return(u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e}).apply(this,arguments)}function c(e,r){if(null==e)return{};var n,t,o={},a=Object.keys(e);for(t=0;t<a.length;t++)r.indexOf(n=a[t])>=0||(o[n]=e[n]);return o}function i(e){var n=r(e),t=r(function(e){n.current&&n.current(e)});return n.current=e,t.current}var s=function(e,r,n){return void 0===r&&(r=0),void 0===n&&(n=1),e>n?n:e<r?r:e},f=function(e){return\"touches\"in e},v=function(e){return e&&e.ownerDocument.defaultView||self},d=function(e,r,n){var t=e.getBoundingClientRect(),o=f(r)?function(e,r){for(var n=0;n<e.length;n++)if(e[n].identifier===r)return e[n];return e[0]}(r.touches,n):r;return{left:s((o.pageX-(t.left+v(e).pageXOffset))/t.width),top:s((o.pageY-(t.top+v(e).pageYOffset))/t.height)}},h=function(e){!f(e)&&e.preventDefault()},g=e.memo(function(o){var a=o.onMove,l=o.onKey,s=o.onEnd,g=c(o,[\"onMove\",\"onKey\",\"onEnd\"]),m=r(null),p=i(a),b=i(l),_=i(s),E=r(null),C=r(!1),x=n(function(){var e=function(e){h(e),(f(e)?e.touches.length>0:e.buttons>0)&&m.current?p(d(m.current,e,E.current)):(n(!1),_())},r=function(){n(!1),_()};function n(n){var t=C.current,o=v(m.current),a=n?o.addEventListener:o.removeEventListener;a(t?\"touchmove\":\"mousemove\",e),a(t?\"touchend\":\"mouseup\",r)}return[function(e){var r=e.nativeEvent,t=m.current;if(t&&(h(r),!function(e,r){return r&&!f(e)}(r,C.current)&&t)){if(f(r)){C.current=!0;var o=r.changedTouches||[];o.length&&(E.current=o[0].identifier)}t.focus(),p(d(t,r,E.current)),n(!0)}},function(e){var r=e.which||e.keyCode;r<37||r>40||(e.preventDefault(),b({left:39===r?.05:37===r?-.05:0,top:40===r?.05:38===r?-.05:0}))},function(e){var r=e.which||e.keyCode;r>=37&&r<=40&&_()},n]},[b,p,_]),H=x[0],M=x[1],N=x[2],w=x[3];return t(function(){return w},[w]),e.createElement(\"div\",u({},g,{onTouchStart:H,onMouseDown:H,className:\"react-colorful__interactive\",ref:m,onKeyDown:M,onKeyUp:N,tabIndex:0,role:\"slider\"}))}),m=function(e){return e.filter(Boolean).join(\" \")},p=function(r){var n=r.color,t=r.left,o=r.top,a=void 0===o?.5:o,l=m([\"react-colorful__pointer\",r.className]);return e.createElement(\"div\",{className:l,style:{top:100*a+\"%\",left:100*t+\"%\"}},e.createElement(\"div\",{className:\"react-colorful__pointer-fill\",style:{backgroundColor:n}}))},b=function(e,r,n){return void 0===r&&(r=0),void 0===n&&(n=Math.pow(10,r)),Math.round(n*e)/n},_={grad:.9,turn:360,rad:360/(2*Math.PI)},E=function(e){return L(C(e))},C=function(e){return\"#\"===e[0]&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?b(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:8===e.length?b(parseInt(e.substring(6,8),16)/255,2):1}},x=function(e,r){return void 0===r&&(r=\"deg\"),Number(e)*(_[r]||1)},H=function(e){var r=/hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?N({h:x(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},M=H,N=function(e){var r=e.s,n=e.l;return{h:e.h,s:(r*=(n<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:e.a}},w=function(e){return D(I(e))},y=function(e){var r=e.s,n=e.v,t=e.a,o=(200-r)*n/100;return{h:b(e.h),s:b(o>0&&o<200?r*n/100/(o<=100?o:200-o)*100:0),l:b(o/2),a:b(t,2)}},q=function(e){var r=y(e);return\"hsl(\"+r.h+\", \"+r.s+\"%, \"+r.l+\"%)\"},k=function(e){var r=y(e);return\"hsla(\"+r.h+\", \"+r.s+\"%, \"+r.l+\"%, \"+r.a+\")\"},I=function(e){var r=e.h,n=e.s,t=e.v,o=e.a;r=r/360*6,n/=100,t/=100;var a=Math.floor(r),l=t*(1-n),u=t*(1-(r-a)*n),c=t*(1-(1-r+a)*n),i=a%6;return{r:b(255*[t,u,l,l,c,t][i]),g:b(255*[c,t,t,u,l,l][i]),b:b(255*[l,l,c,t,t,u][i]),a:b(o,2)}},O=function(e){var r=/hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?A({h:x(r[1],r[2]),s:Number(r[3]),v:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},j=O,z=function(e){var r=/rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?L({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:void 0===r[7]?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},K=z,B=function(e){var r=e.toString(16);return r.length<2?\"0\"+r:r},D=function(e){var r=e.r,n=e.g,t=e.b,o=e.a,a=o<1?B(b(255*o)):\"\";return\"#\"+B(r)+B(n)+B(t)+a},L=function(e){var r=e.r,n=e.g,t=e.b,o=e.a,a=Math.max(r,n,t),l=a-Math.min(r,n,t),u=l?a===r?(n-t)/l:a===n?2+(t-r)/l:4+(r-n)/l:0;return{h:b(60*(u<0?u+6:u)),s:b(a?l/a*100:0),v:b(a/255*100),a:o}},A=function(e){return{h:b(e.h),s:b(e.s),v:b(e.v),a:b(e.a,2)}},S=e.memo(function(r){var n=r.hue,t=r.onChange,o=r.onChangeEnd,a=m([\"react-colorful__hue\",r.className]);return e.createElement(\"div\",{className:a},e.createElement(g,{onMove:function(e){t({h:360*e.left})},onKey:function(e){t({h:s(n+360*e.left,0,360)})},onEnd:o,\"aria-label\":\"Hue\",\"aria-valuenow\":b(n),\"aria-valuemax\":\"360\",\"aria-valuemin\":\"0\"},e.createElement(p,{className:\"react-colorful__hue-pointer\",left:n/360,color:q({h:n,s:100,v:100,a:1})})))}),T=e.memo(function(r){var n=r.hsva,t=r.onChange,o=r.onChangeEnd,a={backgroundColor:q({h:n.h,s:100,v:100,a:1})};return e.createElement(\"div\",{className:\"react-colorful__saturation\",style:a},e.createElement(g,{onMove:function(e){t({s:100*e.left,v:100-100*e.top})},onKey:function(e){t({s:s(n.s+100*e.left,0,100),v:s(n.v-100*e.top,0,100)})},onEnd:o,\"aria-label\":\"Color\",\"aria-valuetext\":\"Saturation \"+b(n.s)+\"%, Brightness \"+b(n.v)+\"%\"},e.createElement(p,{className:\"react-colorful__saturation-pointer\",top:1-n.v/100,left:n.s/100,color:q(n)})))}),F=function(e,r){if(e===r)return!0;for(var n in e)if(e[n]!==r[n])return!1;return!0},P=function(e,r){return e.replace(/\\s/g,\"\")===r.replace(/\\s/g,\"\")},X=function(e,r){return e.toLowerCase()===r.toLowerCase()||F(C(e),C(r))};function Y(e,n,l,u){var c=i(l),s=i(u),f=o(function(){return e.toHsva(n)}),v=f[0],d=f[1],h=r({color:n,hsva:v}),g=r(!1);t(function(){if(!e.equal(n,h.current.color)){var r=e.toHsva(n);h.current={hsva:r,color:n},d(r),g.current=!1}},[n,e]),t(function(){var r;F(v,h.current.hsva)||e.equal(r=e.fromHsva(v),h.current.color)||(h.current={hsva:v,color:r},c(r),g.current=!0)},[v,e,c]);var m=a(function(e){d(function(r){return Object.assign({},r,e)})},[]),p=a(function(){g.current&&(g.current=!1,s(h.current.color))},[s]);return[v,m,p]}var R,U=\"undefined\"!=typeof window?l:t,V=function(){return R||(\"undefined\"!=typeof __webpack_nonce__?__webpack_nonce__:void 0)},$=function(e){R=e},G=new Map,J=function(e){U(function(){var r=e.current?e.current.ownerDocument:document;if(void 0!==r&&!G.has(r)){var n=r.createElement(\"style\");n.innerHTML='.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:\"\";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\\'data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill-opacity=\".05\"><path d=\"M8 0h8v8H8zM0 8h8v8H0z\"/></svg>\\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}',G.set(r,n);var t=V();t&&n.setAttribute(\"nonce\",t),r.head.appendChild(n)}},[])},Q=function(n){var t=n.className,o=n.colorModel,a=n.color,l=void 0===a?o.defaultColor:a,i=n.onChange,s=n.onChangeEnd,f=c(n,[\"className\",\"colorModel\",\"color\",\"onChange\",\"onChangeEnd\"]),v=r(null);J(v);var d=Y(o,l,i,s),h=d[0],g=d[1],p=d[2],b=m([\"react-colorful\",t]);return e.createElement(\"div\",u({},f,{ref:v,className:b}),e.createElement(T,{hsva:h,onChange:g,onChangeEnd:p}),e.createElement(S,{hue:h.h,onChange:g,onChangeEnd:p,className:\"react-colorful__last-control\"}))},W={defaultColor:\"000\",toHsva:E,fromHsva:function(e){return w({h:e.h,s:e.s,v:e.v,a:1})},equal:X},Z=function(r){return e.createElement(Q,u({},r,{colorModel:W}))},ee=function(r){var n=r.className,t=r.hsva,o=r.onChange,a=r.onChangeEnd,l={backgroundImage:\"linear-gradient(90deg, \"+k(Object.assign({},t,{a:0}))+\", \"+k(Object.assign({},t,{a:1}))+\")\"},u=m([\"react-colorful__alpha\",n]),c=b(100*t.a);return e.createElement(\"div\",{className:u},e.createElement(\"div\",{className:\"react-colorful__alpha-gradient\",style:l}),e.createElement(g,{onMove:function(e){o({a:e.left})},onKey:function(e){o({a:s(t.a+e.left)})},onEnd:a,\"aria-label\":\"Alpha\",\"aria-valuetext\":c+\"%\",\"aria-valuenow\":c,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"},e.createElement(p,{className:\"react-colorful__alpha-pointer\",left:t.a,color:k(t)})))},re=function(n){var t=n.className,o=n.colorModel,a=n.color,l=void 0===a?o.defaultColor:a,i=n.onChange,s=n.onChangeEnd,f=c(n,[\"className\",\"colorModel\",\"color\",\"onChange\",\"onChangeEnd\"]),v=r(null);J(v);var d=Y(o,l,i,s),h=d[0],g=d[1],p=d[2],b=m([\"react-colorful\",t]);return e.createElement(\"div\",u({},f,{ref:v,className:b}),e.createElement(T,{hsva:h,onChange:g,onChangeEnd:p}),e.createElement(S,{hue:h.h,onChange:g,onChangeEnd:p}),e.createElement(ee,{hsva:h,onChange:g,onChangeEnd:p,className:\"react-colorful__last-control\"}))},ne={defaultColor:\"0001\",toHsva:E,fromHsva:w,equal:X},te=function(r){return e.createElement(re,u({},r,{colorModel:ne}))},oe={defaultColor:{h:0,s:0,l:0,a:1},toHsva:N,fromHsva:y,equal:F},ae=function(r){return e.createElement(re,u({},r,{colorModel:oe}))},le={defaultColor:\"hsla(0, 0%, 0%, 1)\",toHsva:H,fromHsva:k,equal:P},ue=function(r){return e.createElement(re,u({},r,{colorModel:le}))},ce={defaultColor:{h:0,s:0,l:0},toHsva:function(e){return N({h:e.h,s:e.s,l:e.l,a:1})},fromHsva:function(e){return{h:(r=y(e)).h,s:r.s,l:r.l};var r},equal:F},ie=function(r){return e.createElement(Q,u({},r,{colorModel:ce}))},se={defaultColor:\"hsl(0, 0%, 0%)\",toHsva:M,fromHsva:q,equal:P},fe=function(r){return e.createElement(Q,u({},r,{colorModel:se}))},ve={defaultColor:{h:0,s:0,v:0,a:1},toHsva:function(e){return e},fromHsva:A,equal:F},de=function(r){return e.createElement(re,u({},r,{colorModel:ve}))},he={defaultColor:\"hsva(0, 0%, 0%, 1)\",toHsva:O,fromHsva:function(e){var r=A(e);return\"hsva(\"+r.h+\", \"+r.s+\"%, \"+r.v+\"%, \"+r.a+\")\"},equal:P},ge=function(r){return e.createElement(re,u({},r,{colorModel:he}))},me={defaultColor:{h:0,s:0,v:0},toHsva:function(e){return{h:e.h,s:e.s,v:e.v,a:1}},fromHsva:function(e){var r=A(e);return{h:r.h,s:r.s,v:r.v}},equal:F},pe=function(r){return e.createElement(Q,u({},r,{colorModel:me}))},be={defaultColor:\"hsv(0, 0%, 0%)\",toHsva:j,fromHsva:function(e){var r=A(e);return\"hsv(\"+r.h+\", \"+r.s+\"%, \"+r.v+\"%)\"},equal:P},_e=function(r){return e.createElement(Q,u({},r,{colorModel:be}))},Ee={defaultColor:{r:0,g:0,b:0,a:1},toHsva:L,fromHsva:I,equal:F},Ce=function(r){return e.createElement(re,u({},r,{colorModel:Ee}))},xe={defaultColor:\"rgba(0, 0, 0, 1)\",toHsva:z,fromHsva:function(e){var r=I(e);return\"rgba(\"+r.r+\", \"+r.g+\", \"+r.b+\", \"+r.a+\")\"},equal:P},He=function(r){return e.createElement(re,u({},r,{colorModel:xe}))},Me={defaultColor:{r:0,g:0,b:0},toHsva:function(e){return L({r:e.r,g:e.g,b:e.b,a:1})},fromHsva:function(e){return{r:(r=I(e)).r,g:r.g,b:r.b};var r},equal:F},Ne=function(r){return e.createElement(Q,u({},r,{colorModel:Me}))},we={defaultColor:\"rgb(0, 0, 0)\",toHsva:K,fromHsva:function(e){var r=I(e);return\"rgb(\"+r.r+\", \"+r.g+\", \"+r.b+\")\"},equal:P},ye=function(r){return e.createElement(Q,u({},r,{colorModel:we}))},qe=/^#?([0-9A-F]{3,8})$/i,ke=function(r){var n=r.color,l=void 0===n?\"\":n,s=r.onChange,f=r.onBlur,v=r.escape,d=r.validate,h=r.format,g=r.process,m=c(r,[\"color\",\"onChange\",\"onBlur\",\"escape\",\"validate\",\"format\",\"process\"]),p=o(function(){return v(l)}),b=p[0],_=p[1],E=i(s),C=i(f),x=a(function(e){var r=v(e.target.value);_(r),d(r)&&E(g?g(r):r)},[v,g,d,E]),H=a(function(e){d(e.target.value)||_(v(l)),C(e)},[l,v,d,C]);return t(function(){_(v(l))},[l,v]),e.createElement(\"input\",u({},m,{value:h?h(b):b,spellCheck:\"false\",onChange:x,onBlur:H}))},Ie=function(e){return\"#\"+e},Oe=function(r){var n=r.prefixed,t=r.alpha,o=c(r,[\"prefixed\",\"alpha\"]),l=a(function(e){return e.replace(/([^0-9A-F]+)/gi,\"\").substring(0,t?8:6)},[t]),i=a(function(e){return function(e,r){var n=qe.exec(e),t=n?n[1].length:0;return 3===t||6===t||!!r&&4===t||!!r&&8===t}(e,t)},[t]);return e.createElement(ke,u({},o,{escape:l,format:n?Ie:void 0,process:Ie,validate:i}))};export{te as HexAlphaColorPicker,Oe as HexColorInput,Z as HexColorPicker,ie as HslColorPicker,fe as HslStringColorPicker,ae as HslaColorPicker,ue as HslaStringColorPicker,pe as HsvColorPicker,_e as HsvStringColorPicker,de as HsvaColorPicker,ge as HsvaStringColorPicker,Ne as RgbColorPicker,ye as RgbStringColorPicker,Ce as RgbaColorPicker,He as RgbaStringColorPicker,$ as setNonce};\n//# sourceMappingURL=index.module.js.map\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spread } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n }\n else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n }\n else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value.dataTransfer);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (dt === null) {\n return [2 /*return*/, []];\n }\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spread(acc, (Array.isArray(files) ? flatten(files) : [files])); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(item + \" is not a File\");\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","export { fromEvent } from './file-selector';\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n\n if (acceptedFilesArray.length === 0) {\n return true;\n }\n\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n return accepted && sizeMatch;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * filePickerOptionsTypes returns the {types} option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n * based on the accept attr (see https://github.com/react-dropzone/attr-accept)\n * E.g: converts ['image/*', 'text/*'] to {'image/*': [], 'text/*': []}\n * @param {string|string[]} accept\n */\n\nexport function filePickerOptionsTypes(accept) {\n accept = typeof accept === \"string\" ? accept.split(\",\") : accept;\n return [{\n description: \"everything\",\n // TODO: Need to handle filtering more elegantly than this!\n accept: Array.isArray(accept) ? // Accept just MIME types as per spec\n // NOTE: accept can be https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers\n accept.filter(function (item) {\n return item === \"audio/*\" || item === \"video/*\" || item === \"image/*\" || item === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(item);\n }).reduce(function (a, b) {\n return _objectSpread(_objectSpread({}, a), {}, _defineProperty({}, b, []));\n }, {}) : {}\n }];\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, filePickerOptionsTypes, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.draggedFiles Files in active drag\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Custom validation function\n * @param {File} file\n * @returns {FileError|FileError[]}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state and some helper functions.\n *\n * @typedef {object} DropzoneState\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} draggedFiles Files in active drag\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {string|string[]} [props.accept] Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n *\n * @returns {DropzoneState}\n */\n\nexport function useDropzone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$options = _objectSpread(_objectSpread({}, defaultProps), options),\n accept = _defaultProps$options.accept,\n disabled = _defaultProps$options.disabled,\n getFilesFromEvent = _defaultProps$options.getFilesFromEvent,\n maxSize = _defaultProps$options.maxSize,\n minSize = _defaultProps$options.minSize,\n multiple = _defaultProps$options.multiple,\n maxFiles = _defaultProps$options.maxFiles,\n onDragEnter = _defaultProps$options.onDragEnter,\n onDragLeave = _defaultProps$options.onDragLeave,\n onDragOver = _defaultProps$options.onDragOver,\n onDrop = _defaultProps$options.onDrop,\n onDropAccepted = _defaultProps$options.onDropAccepted,\n onDropRejected = _defaultProps$options.onDropRejected,\n onFileDialogCancel = _defaultProps$options.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$options.onFileDialogOpen,\n useFsAccessApi = _defaultProps$options.useFsAccessApi,\n preventDropOnDocument = _defaultProps$options.preventDropOnDocument,\n noClick = _defaultProps$options.noClick,\n noKeyboard = _defaultProps$options.noKeyboard,\n noDrag = _defaultProps$options.noDrag,\n noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,\n validator = _defaultProps$options.validator;\n\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive,\n draggedFiles = state.draggedFiles;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (draggedFiles) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n dispatch({\n draggedFiles: draggedFiles,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n });\n }\n }, [getFilesFromEvent, onDragEnter, noDragEventsBubbling]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n isDragActive: false,\n type: \"setDraggedFiles\",\n draggedFiles: []\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, accept, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: filePickerOptionsTypes(accept)\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, accept, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"button\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: accept,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n var fileCount = draggedFiles.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: draggedFiles,\n accept: accept,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n /* eslint no-case-declarations: 0 */\n var isDragActive = action.isDragActive,\n draggedFiles = action.draggedFiles;\n return _objectSpread(_objectSpread({}, state), {}, {\n draggedFiles: draggedFiles,\n isDragActive: isDragActive\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import { useReducer, useRef, useDebugValue, useEffect, useLayoutEffect } from 'react';\n\nfunction createStore(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n}\n\nconst isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\nfunction create(createState) {\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useStore = (selector = api.getState, equalityFn = Object.is) => {\n const [, forceUpdate] = useReducer((c) => c + 1, 0);\n const state = api.getState();\n const stateRef = useRef(state);\n const selectorRef = useRef(selector);\n const equalityFnRef = useRef(equalityFn);\n const erroredRef = useRef(false);\n const currentSliceRef = useRef();\n if (currentSliceRef.current === void 0) {\n currentSliceRef.current = selector(state);\n }\n let newStateSlice;\n let hasNewStateSlice = false;\n if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n newStateSlice = selector(state);\n hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n }\n useIsomorphicLayoutEffect(() => {\n if (hasNewStateSlice) {\n currentSliceRef.current = newStateSlice;\n }\n stateRef.current = state;\n selectorRef.current = selector;\n equalityFnRef.current = equalityFn;\n erroredRef.current = false;\n });\n const stateBeforeSubscriptionRef = useRef(state);\n useIsomorphicLayoutEffect(() => {\n const listener = () => {\n try {\n const nextState = api.getState();\n const nextStateSlice = selectorRef.current(nextState);\n if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n stateRef.current = nextState;\n currentSliceRef.current = nextStateSlice;\n forceUpdate();\n }\n } catch (error) {\n erroredRef.current = true;\n forceUpdate();\n }\n };\n const unsubscribe = api.subscribe(listener);\n if (api.getState() !== stateBeforeSubscriptionRef.current) {\n listener();\n }\n return unsubscribe;\n }, []);\n const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n useDebugValue(sliceToReturn);\n return sliceToReturn;\n };\n Object.assign(useStore, api);\n useStore[Symbol.iterator] = function() {\n console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n const items = [useStore, api];\n return {\n next() {\n const done = items.length <= 0;\n return { value: items.shift(), done };\n }\n };\n };\n return useStore;\n}\n\nexport { create as default };\n","var __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nconst redux = (reducer, initial) => (set, get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return __spreadValues$1({ dispatch: (...a) => api.dispatch(...a) }, initial);\n};\n\nfunction devtools(fn, options) {\n return (set, get, api) => {\n var _a;\n let didWarnAboutNameDeprecation = false;\n if (typeof options === \"string\" && !didWarnAboutNameDeprecation) {\n console.warn(\"[zustand devtools middleware]: passing `name` as directly will be not allowed in next majorpass the `name` in an object `{ name: ... }` instead\");\n didWarnAboutNameDeprecation = true;\n }\n const devtoolsOptions = options === void 0 ? { name: void 0, anonymousActionType: void 0 } : typeof options === \"string\" ? { name: options } : options;\n if (typeof ((_a = devtoolsOptions == null ? void 0 : devtoolsOptions.serialize) == null ? void 0 : _a.options) !== \"undefined\") {\n console.warn(\"[zustand devtools middleware]: `serialize.options` is deprecated, just use `serialize`\");\n }\n let extensionConnector;\n try {\n extensionConnector = window.__REDUX_DEVTOOLS_EXTENSION__ || window.top.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!extensionConnector) {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && typeof window !== \"undefined\") {\n console.warn(\"[zustand devtools middleware] Please install/enable Redux devtools extension\");\n }\n return fn(set, get, api);\n }\n let extension = Object.create(extensionConnector.connect(devtoolsOptions));\n let didWarnAboutDevtools = false;\n Object.defineProperty(api, \"devtools\", {\n get: () => {\n if (!didWarnAboutDevtools) {\n console.warn(\"[zustand devtools middleware] `devtools` property on the store is deprecated it will be removed in the next major.\\nYou shouldn't interact with the extension directly. But in case you still want to you can patch `window.__REDUX_DEVTOOLS_EXTENSION__` directly\");\n didWarnAboutDevtools = true;\n }\n return extension;\n },\n set: (value) => {\n if (!didWarnAboutDevtools) {\n console.warn(\"[zustand devtools middleware] `api.devtools` is deprecated, it will be removed in the next major.\\nYou shouldn't interact with the extension directly. But in case you still want to you can patch `window.__REDUX_DEVTOOLS_EXTENSION__` directly\");\n didWarnAboutDevtools = true;\n }\n extension = value;\n }\n });\n let didWarnAboutPrefix = false;\n Object.defineProperty(extension, \"prefix\", {\n get: () => {\n if (!didWarnAboutPrefix) {\n console.warn(\"[zustand devtools middleware] along with `api.devtools`, `api.devtools.prefix` is deprecated.\\nWe no longer prefix the actions/names\" + devtoolsOptions.name === void 0 ? \", pass the `name` option to create a separate instance of devtools for each store.\" : \", because the `name` option already creates a separate instance of devtools for each store.\");\n didWarnAboutPrefix = true;\n }\n return \"\";\n },\n set: () => {\n if (!didWarnAboutPrefix) {\n console.warn(\"[zustand devtools middleware] along with `api.devtools`, `api.devtools.prefix` is deprecated.\\nWe no longer prefix the actions/names\" + devtoolsOptions.name === void 0 ? \", pass the `name` option to create a separate instance of devtools for each store.\" : \", because the `name` option already creates a separate instance of devtools for each store.\");\n didWarnAboutPrefix = true;\n }\n }\n });\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n set(state, replace);\n if (!isRecording)\n return;\n extension.send(nameOrAction === void 0 ? { type: devtoolsOptions.anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction, get());\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n extension.init(initialState);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if (a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn('[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.');\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n extension.subscribe((message) => {\n var _a2;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\"[zustand devtools middleware] Unsupported action format\");\n return;\n }\n return parseJsonThen(message.payload, (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n });\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a2 = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a2.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(null, nextLiftedState);\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n };\n}\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\"[zustand devtools middleware] Could not parse the received json\", e);\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelector = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\n\nconst combine = (initialState, create) => (set, get, api) => Object.assign({}, initialState, create(set, get, api));\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persist = (config, baseOptions) => (set, get, api) => {\n let options = __spreadValues({\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => __spreadValues(__spreadValues({}, currentState), persistedState)\n }, baseOptions);\n if (options.blacklist || options.whitelist) {\n console.warn(`The ${options.blacklist ? \"blacklist\" : \"whitelist\"} option is deprecated and will be removed in the next version. Please use the 'partialize' option instead.`);\n }\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config((...args) => {\n console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);\n set(...args);\n }, get, api);\n } else if (!storage.removeItem) {\n console.warn(`[zustand persist middleware] The given storage for item '${options.name}' does not contain a 'removeItem' method, which will be required in v4.`);\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize(__spreadValues({}, get()));\n if (options.whitelist) {\n Object.keys(state).forEach((key) => {\n var _a;\n !((_a = options.whitelist) == null ? void 0 : _a.includes(key)) && delete state[key];\n });\n }\n if (options.blacklist) {\n options.blacklist.forEach((key) => delete state[key]);\n }\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then((serializedValue) => storage.setItem(options.name, serializedValue)).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config((...args) => {\n set(...args);\n void setItem();\n }, get, api);\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);\n }\n console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`);\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(migratedState, (_a2 = get()) != null ? _a2 : configResult);\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = __spreadValues(__spreadValues({}, options), newOptions);\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n var _a;\n (_a = storage == null ? void 0 : storage.removeItem) == null ? void 0 : _a.call(storage, options.name);\n },\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\n\nexport { combine, devtools, persist, redux, subscribeWithSelector };\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","/*!\n * for-in <https://github.com/jonschlinkert/for-in>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function forIn(obj, fn, thisArg) {\n for (var key in obj) {\n if (fn.call(thisArg, obj[key], key, obj) === false) {\n break;\n }\n }\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar forIn = require('for-in');\n\nfunction mixinDeep(target, objects) {\n var len = arguments.length, i = 0;\n while (++i < len) {\n var obj = arguments[i];\n if (isObject(obj)) {\n forIn(obj, copy, target);\n }\n }\n return target;\n}\n\n/**\n * Copy properties from the source object to the\n * target object.\n *\n * @param {*} `val`\n * @param {String} `key`\n */\n\nfunction copy(val, key) {\n if (!isValidKey(key)) {\n return;\n }\n\n var obj = this[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n this[key] = val;\n }\n}\n\n/**\n * Returns true if `val` is an object or function.\n *\n * @param {any} val\n * @return {Boolean}\n */\n\nfunction isObject(val) {\n return isExtendable(val) && !Array.isArray(val);\n}\n\n/**\n * Returns true if `key` is a valid key to use when extending objects.\n *\n * @param {String} `key`\n * @return {Boolean}\n */\n\nfunction isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\n/**\n * Expose `mixinDeep`\n */\n\nmodule.exports = mixinDeep;\n","/*!\n * get-value <https://github.com/jonschlinkert/get-value>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function(obj, prop, a, b, c) {\n if (!isObject(obj) || !prop) {\n return obj;\n }\n\n prop = toString(prop);\n\n // allowing for multiple properties to be passed as\n // a string or array, but much faster (3-4x) than doing\n // `[].slice.call(arguments)`\n if (a) prop += '.' + toString(a);\n if (b) prop += '.' + toString(b);\n if (c) prop += '.' + toString(c);\n\n if (prop in obj) {\n return obj[prop];\n }\n\n var segs = prop.split('.');\n var len = segs.length;\n var i = -1;\n\n while (obj && (++i < len)) {\n var key = segs[i];\n while (key[key.length - 1] === '\\\\') {\n key = key.slice(0, -1) + '.' + segs[++i];\n }\n obj = obj[key];\n }\n return obj;\n};\n\nfunction isObject(val) {\n return val !== null && (typeof val === 'object' || typeof val === 'function');\n}\n\nfunction toString(val) {\n if (!val) return '';\n if (Array.isArray(val)) {\n return val.join('.');\n }\n return val;\n}\n","/*!\n * assign-symbols <https://github.com/jonschlinkert/assign-symbols>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(receiver, objects) {\n if (receiver === null || typeof receiver === 'undefined') {\n throw new TypeError('expected first argument to be an object.');\n }\n\n if (typeof objects === 'undefined' || typeof Symbol === 'undefined') {\n return receiver;\n }\n\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return receiver;\n }\n\n var isEnumerable = Object.prototype.propertyIsEnumerable;\n var target = Object(receiver);\n var len = arguments.length, i = 0;\n\n while (++i < len) {\n var provider = Object(arguments[i]);\n var names = Object.getOwnPropertySymbols(provider);\n\n for (var j = 0; j < names.length; j++) {\n var key = names[j];\n\n if (isEnumerable.call(provider, key)) {\n target[key] = provider[key];\n }\n }\n }\n return target;\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * split-string <https://github.com/jonschlinkert/split-string>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar extend = require('extend-shallow');\n\nmodule.exports = function(str, options, fn) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (typeof options === 'function') {\n fn = options;\n options = null;\n }\n\n // allow separator to be defined as a string\n if (typeof options === 'string') {\n options = { sep: options };\n }\n\n var opts = extend({sep: '.'}, options);\n var quotes = opts.quotes || ['\"', \"'\", '`'];\n var brackets;\n\n if (opts.brackets === true) {\n brackets = {\n '<': '>',\n '(': ')',\n '[': ']',\n '{': '}'\n };\n } else if (opts.brackets) {\n brackets = opts.brackets;\n }\n\n var tokens = [];\n var stack = [];\n var arr = [''];\n var sep = opts.sep;\n var len = str.length;\n var idx = -1;\n var closeIdx;\n\n function expected() {\n if (brackets && stack.length) {\n return brackets[stack[stack.length - 1]];\n }\n }\n\n while (++idx < len) {\n var ch = str[idx];\n var next = str[idx + 1];\n var tok = { val: ch, idx: idx, arr: arr, str: str };\n tokens.push(tok);\n\n if (ch === '\\\\') {\n tok.val = keepEscaping(opts, str, idx) === true ? (ch + next) : next;\n tok.escaped = true;\n if (typeof fn === 'function') {\n fn(tok);\n }\n arr[arr.length - 1] += tok.val;\n idx++;\n continue;\n }\n\n if (brackets && brackets[ch]) {\n stack.push(ch);\n var e = expected();\n var i = idx + 1;\n\n if (str.indexOf(e, i + 1) !== -1) {\n while (stack.length && i < len) {\n var s = str[++i];\n if (s === '\\\\') {\n s++;\n continue;\n }\n\n if (quotes.indexOf(s) !== -1) {\n i = getClosingQuote(str, s, i + 1);\n continue;\n }\n\n e = expected();\n if (stack.length && str.indexOf(e, i + 1) === -1) {\n break;\n }\n\n if (brackets[s]) {\n stack.push(s);\n continue;\n }\n\n if (e === s) {\n stack.pop();\n }\n }\n }\n\n closeIdx = i;\n if (closeIdx === -1) {\n arr[arr.length - 1] += ch;\n continue;\n }\n\n ch = str.slice(idx, closeIdx + 1);\n tok.val = ch;\n tok.idx = idx = closeIdx;\n }\n\n if (quotes.indexOf(ch) !== -1) {\n closeIdx = getClosingQuote(str, ch, idx + 1);\n if (closeIdx === -1) {\n arr[arr.length - 1] += ch;\n continue;\n }\n\n if (keepQuotes(ch, opts) === true) {\n ch = str.slice(idx, closeIdx + 1);\n } else {\n ch = str.slice(idx + 1, closeIdx);\n }\n\n tok.val = ch;\n tok.idx = idx = closeIdx;\n }\n\n if (typeof fn === 'function') {\n fn(tok, tokens);\n ch = tok.val;\n idx = tok.idx;\n }\n\n if (tok.val === sep && tok.split !== false) {\n arr.push('');\n continue;\n }\n\n arr[arr.length - 1] += tok.val;\n }\n\n return arr;\n};\n\nfunction getClosingQuote(str, ch, i, brackets) {\n var idx = str.indexOf(ch, i);\n if (str.charAt(idx - 1) === '\\\\') {\n return getClosingQuote(str, ch, idx + 1);\n }\n return idx;\n}\n\nfunction keepQuotes(ch, opts) {\n if (opts.keepDoubleQuotes === true && ch === '\"') return true;\n if (opts.keepSingleQuotes === true && ch === \"'\") return true;\n return opts.keepQuotes;\n}\n\nfunction keepEscaping(opts, str, idx) {\n if (typeof opts.keepEscaping === 'function') {\n return opts.keepEscaping(str, idx);\n }\n return opts.keepEscaping === true || str[idx + 1] === '\\\\';\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n","'use strict';\n\nvar isObject = require('is-extendable');\n\nmodule.exports = function extend(o/*, objects*/) {\n if (!isObject(o)) { o = {}; }\n\n var len = arguments.length;\n for (var i = 1; i < len; i++) {\n var obj = arguments[i];\n\n if (isObject(obj)) {\n assign(o, obj);\n }\n }\n return o;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","/*!\n * set-value <https://github.com/jonschlinkert/set-value>\n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar split = require('split-string');\nvar extend = require('extend-shallow');\nvar isPlainObject = require('is-plain-object');\nvar isObject = require('is-extendable');\n\nmodule.exports = function(obj, prop, val) {\n if (!isObject(obj)) {\n return obj;\n }\n\n if (Array.isArray(prop)) {\n prop = [].concat.apply([], prop).join('.');\n }\n\n if (typeof prop !== 'string') {\n return obj;\n }\n\n var keys = split(prop, {sep: '.', brackets: true}).filter(isValidKey);\n var len = keys.length;\n var idx = -1;\n var current = obj;\n\n while (++idx < len) {\n var key = keys[idx];\n if (idx !== len - 1) {\n if (!isObject(current[key])) {\n current[key] = {};\n }\n current = current[key];\n continue;\n }\n\n if (isPlainObject(current[key]) && isPlainObject(val)) {\n current[key] = extend({}, current[key], val);\n } else {\n current[key] = val;\n }\n }\n\n return obj;\n};\n\nfunction isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n}\n","'use strict';\n\nvar isObject = require('is-extendable');\nvar merge = require('mixin-deep');\nvar get = require('get-value');\nvar set = require('set-value');\n\nmodule.exports = function mergeValue(obj, prop, value) {\n if (!isObject(obj)) {\n throw new TypeError('expected an object');\n }\n\n if (typeof prop !== 'string' || value == null) {\n return merge.apply(null, arguments);\n }\n\n if (typeof value === 'string') {\n set(obj, prop, value);\n return obj;\n }\n\n var current = get(obj, prop);\n if (isObject(value) && isObject(current)) {\n value = merge({}, current, value);\n }\n\n set(obj, prop, value);\n return obj;\n};\n","import { p as pick, _ as _objectSpread2, o as omit, s as styled, u as useInputContext, R as Row, L as Label, V as ValueInput, P as Portal, O as Overlay, c as createInternalPlugin, a as Vector, g as getVectorPlugin, b as useTransform, d as useTh, e as useDrag, f as _extends, m as multiplyStep, h as clamp, i as _objectWithoutProperties, n as normalizeKeyedNumberSettings, j as invertedRange, k as sanitizeStep, r as range, l as RangeWrapper, q as Range, I as Indicator, S as Scrubber, t as getUid, v as SpecialInputs, w as warn, x as LevaErrors, y as updateInput, z as normalizeInput, A as useInputSetters, B as Plugins, C as InputContext, D as StyledInputWrapper, E as useStoreContext, F as useCanvas2d, G as useInput, H as log, J as StyledTitle, K as Chevron, M as StyledWrapper, N as StyledContent, Q as StyledFolder, T as StyledInputRow, U as debounce, W as globalStyles, X as PanelSettingsContext, Y as StoreContext, Z as mergeTheme, $ as ThemeContext, a0 as register, a1 as LevaInputs, a2 as select, a3 as number$1, a4 as string, a5 as boolean } from './vector-plugin-5e122f40.esm.js';\nexport { a1 as LevaInputs, a6 as LevaStoreProvider, E as useStoreContext } from './vector-plugin-5e122f40.esm.js';\nimport v8n from 'v8n';\nimport { extend, colord, getFormat } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\nimport { dequal } from 'dequal/lite';\nimport React, { useRef, useMemo, useLayoutEffect, useEffect, useState, useCallback, forwardRef, useImperativeHandle } from 'react';\nimport { RgbaColorPicker, RgbColorPicker } from 'react-colorful';\nimport shallow from 'zustand/shallow';\nimport '@use-gesture/react';\nimport '@radix-ui/react-portal';\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { useDropzone } from 'react-dropzone';\nimport create from 'zustand';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport { createRoot } from 'react-dom/client';\nimport merge from 'merge-value';\nimport '@stitches/react';\n\nconst join = (...args) => args.filter(Boolean).join('.');\nfunction getKeyPath(path) {\n const dir = path.split('.');\n return [dir.pop(), dir.join('.') || undefined];\n}\n\nfunction getValuesForPaths(data, paths) {\n return Object.entries(pick(data, paths)).reduce((acc, [, {\n value,\n disabled,\n key\n }]) => {\n acc[key] = disabled ? undefined : value;\n return acc;\n }, {});\n}\n\nfunction useCompareMemoize(value, deep) {\n const ref = useRef();\n const compare = deep ? dequal : shallow;\n if (!compare(value, ref.current)) {\n ref.current = value;\n }\n return ref.current;\n}\n\nfunction useDeepMemo(fn, deps) {\n var _useCompareMemoize;\n return useMemo(fn, (_useCompareMemoize = useCompareMemoize(deps, true)) !== null && _useCompareMemoize !== void 0 ? _useCompareMemoize : []);\n}\n\nfunction useToggle(toggled) {\n const wrapperRef = useRef(null);\n const contentRef = useRef(null);\n const firstRender = useRef(true);\n useLayoutEffect(() => {\n if (!toggled) {\n wrapperRef.current.style.height = '0px';\n wrapperRef.current.style.overflow = 'hidden';\n }\n }, []);\n useEffect(() => {\n if (firstRender.current) {\n firstRender.current = false;\n return;\n }\n let timeout;\n const ref = wrapperRef.current;\n const fixHeight = () => {\n if (toggled) {\n ref.style.removeProperty('height');\n ref.style.removeProperty('overflow');\n contentRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest'\n });\n }\n };\n ref.addEventListener('transitionend', fixHeight, {\n once: true\n });\n const {\n height\n } = contentRef.current.getBoundingClientRect();\n ref.style.height = height + 'px';\n if (!toggled) {\n ref.style.overflow = 'hidden';\n timeout = window.setTimeout(() => ref.style.height = '0px', 50);\n }\n return () => {\n ref.removeEventListener('transitionend', fixHeight);\n clearTimeout(timeout);\n };\n }, [toggled]);\n return {\n wrapperRef,\n contentRef\n };\n}\n\nconst useVisiblePaths = store => {\n const [paths, setPaths] = useState(store.getVisiblePaths());\n useEffect(() => {\n setPaths(store.getVisiblePaths());\n const unsub = store.useStore.subscribe(store.getVisiblePaths, setPaths, {\n equalityFn: shallow\n });\n return () => unsub();\n }, [store]);\n return paths;\n};\n\nfunction useValuesForPath(store, paths, initialData) {\n const valuesForPath = store.useStore(s => {\n const data = _objectSpread2(_objectSpread2({}, initialData), s.data);\n return getValuesForPaths(data, paths);\n }, shallow);\n return valuesForPath;\n}\n\nfunction usePopin(margin = 3) {\n const popinRef = useRef(null);\n const wrapperRef = useRef(null);\n const [shown, setShow] = useState(false);\n const show = useCallback(() => setShow(true), []);\n const hide = useCallback(() => setShow(false), []);\n useLayoutEffect(() => {\n if (shown) {\n const {\n bottom,\n top,\n left\n } = popinRef.current.getBoundingClientRect();\n const {\n height\n } = wrapperRef.current.getBoundingClientRect();\n const direction = bottom + height > window.innerHeight - 40 ? 'up' : 'down';\n wrapperRef.current.style.position = 'fixed';\n wrapperRef.current.style.zIndex = '10000';\n wrapperRef.current.style.left = left + 'px';\n if (direction === 'down') wrapperRef.current.style.top = bottom + margin + 'px';else wrapperRef.current.style.bottom = window.innerHeight - top + margin + 'px';\n }\n }, [margin, shown]);\n return {\n popinRef,\n wrapperRef,\n shown,\n show,\n hide\n };\n}\n\nextend([namesPlugin]);\nconst convertMap = {\n rgb: 'toRgb',\n hsl: 'toHsl',\n hsv: 'toHsv',\n hex: 'toHex'\n};\nv8n.extend({\n color: () => value => colord(value).isValid()\n});\nconst schema$2 = o => v8n().color().test(o);\nfunction convert(color, {\n format,\n hasAlpha,\n isString\n}) {\n const convertFn = convertMap[format] + (isString && format !== 'hex' ? 'String' : '');\n const result = color[convertFn]();\n return typeof result === 'object' && !hasAlpha ? omit(result, ['a']) : result;\n}\nconst sanitize$2 = (v, settings) => {\n const color = colord(v);\n if (!color.isValid()) throw Error('Invalid color');\n return convert(color, settings);\n};\nconst format$1 = (v, settings) => {\n return convert(colord(v), _objectSpread2(_objectSpread2({}, settings), {}, {\n isString: true,\n format: 'hex'\n }));\n};\nconst normalize$3 = ({\n value\n}) => {\n const _f = getFormat(value);\n const format = _f === 'name' ? 'hex' : _f;\n const hasAlpha = typeof value === 'object' ? 'a' in value : _f === 'hex' && value.length === 8 || /^(rgba)|(hsla)|(hsva)/.test(value);\n const settings = {\n format,\n hasAlpha,\n isString: typeof value === 'string'\n };\n return {\n value: sanitize$2(value, settings),\n settings\n };\n};\n\nvar props$2 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema$2,\n sanitize: sanitize$2,\n format: format$1,\n normalize: normalize$3\n});\n\nconst ColorPreview = styled('div', {\n position: 'relative',\n boxSizing: 'border-box',\n borderRadius: '$sm',\n overflow: 'hidden',\n cursor: 'pointer',\n height: '$rowHeight',\n width: '$rowHeight',\n backgroundColor: '#fff',\n backgroundImage: `url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill-opacity=\".05\"><path d=\"M8 0h8v8H8zM0 8h8v8H0z\"/></svg>')`,\n $inputStyle: '',\n $hover: '',\n zIndex: 1,\n variants: {\n active: {\n true: {\n $inputStyle: '$accent1'\n }\n }\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n backgroundColor: 'currentColor',\n zIndex: 1\n }\n});\nconst PickerContainer = styled('div', {\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: '$sizes$rowHeight auto',\n columnGap: '$colGap',\n alignItems: 'center'\n});\nconst PickerWrapper = styled('div', {\n width: '$colorPickerWidth',\n height: '$colorPickerHeight',\n '.react-colorful': {\n width: '100%',\n height: '100%',\n boxShadow: '$level2',\n cursor: 'crosshair'\n },\n '.react-colorful__saturation': {\n borderRadius: '$sm $sm 0 0'\n },\n '.react-colorful__alpha, .react-colorful__hue': {\n height: 10\n },\n '.react-colorful__last-control': {\n borderRadius: '0 0 $sm $sm'\n },\n '.react-colorful__pointer': {\n height: 12,\n width: 12\n }\n});\n\nfunction convertToRgb(value, format) {\n return format !== 'rgb' ? colord(value).toRgb() : value;\n}\nfunction Color({\n value,\n displayValue,\n settings,\n onUpdate\n}) {\n const {\n emitOnEditStart,\n emitOnEditEnd\n } = useInputContext();\n const {\n format,\n hasAlpha\n } = settings;\n const {\n popinRef,\n wrapperRef,\n shown,\n show,\n hide\n } = usePopin();\n const timer = useRef(0);\n const [initialRgb, setInitialRgb] = useState(() => convertToRgb(value, format));\n const ColorPicker = hasAlpha ? RgbaColorPicker : RgbColorPicker;\n const showPicker = () => {\n setInitialRgb(convertToRgb(value, format));\n show();\n emitOnEditStart();\n };\n const hidePicker = () => {\n hide();\n emitOnEditEnd();\n window.clearTimeout(timer.current);\n };\n const hideAfterDelay = () => {\n timer.current = window.setTimeout(hidePicker, 500);\n };\n useEffect(() => {\n return () => window.clearTimeout(timer.current);\n }, []);\n return React.createElement(React.Fragment, null, React.createElement(ColorPreview, {\n ref: popinRef,\n active: shown,\n onClick: () => showPicker(),\n style: {\n color: displayValue\n }\n }), shown && React.createElement(Portal, null, React.createElement(Overlay, {\n onPointerUp: hidePicker\n }), React.createElement(PickerWrapper, {\n ref: wrapperRef,\n onMouseEnter: () => window.clearTimeout(timer.current),\n onMouseLeave: e => e.buttons === 0 && hideAfterDelay()\n }, React.createElement(ColorPicker, {\n color: initialRgb,\n onChange: onUpdate\n }))));\n}\nfunction ColorComponent() {\n const {\n value,\n displayValue,\n label,\n onChange,\n onUpdate,\n settings\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(PickerContainer, null, React.createElement(Color, {\n value: value,\n displayValue: displayValue,\n onChange: onChange,\n onUpdate: onUpdate,\n settings: settings\n }), React.createElement(ValueInput, {\n value: displayValue,\n onChange: onChange,\n onUpdate: onUpdate\n })));\n}\n\nvar color = createInternalPlugin(_objectSpread2({\n component: ColorComponent\n}, props$2));\n\nfunction Vector3dComponent() {\n const {\n label,\n displayValue,\n onUpdate,\n settings\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Vector, {\n value: displayValue,\n settings: settings,\n onUpdate: onUpdate\n }));\n}\n\nvar vector3d = createInternalPlugin(_objectSpread2({\n component: Vector3dComponent\n}, getVectorPlugin(['x', 'y', 'z'])));\n\nconst JoystickTrigger = styled('div', {\n $flexCenter: '',\n position: 'relative',\n backgroundColor: '$elevation3',\n borderRadius: '$sm',\n cursor: 'pointer',\n height: '$rowHeight',\n width: '$rowHeight',\n touchAction: 'none',\n $draggable: '',\n $hover: '',\n '&:active': {\n cursor: 'none'\n },\n '&::after': {\n content: '\"\"',\n backgroundColor: '$accent2',\n height: 4,\n width: 4,\n borderRadius: 2\n }\n});\nconst JoystickPlayground = styled('div', {\n $flexCenter: '',\n width: '$joystickWidth',\n height: '$joystickHeight',\n borderRadius: '$sm',\n boxShadow: '$level2',\n position: 'fixed',\n zIndex: 10000,\n overflow: 'hidden',\n $draggable: '',\n transform: 'translate(-50%, -50%)',\n variants: {\n isOutOfBounds: {\n true: {\n backgroundColor: '$elevation1'\n },\n false: {\n backgroundColor: '$elevation3'\n }\n }\n },\n '> div': {\n position: 'absolute',\n $flexCenter: '',\n borderStyle: 'solid',\n borderWidth: 1,\n borderColor: '$highlight1',\n backgroundColor: '$elevation3',\n width: '80%',\n height: '80%',\n '&::after,&::before': {\n content: '\"\"',\n position: 'absolute',\n zindex: 10,\n backgroundColor: '$highlight1'\n },\n '&::before': {\n width: '100%',\n height: 1\n },\n '&::after': {\n height: '100%',\n width: 1\n }\n },\n '> span': {\n position: 'relative',\n zindex: 100,\n width: 10,\n height: 10,\n backgroundColor: '$accent2',\n borderRadius: '50%'\n }\n});\n\nfunction Joystick({\n value,\n settings,\n onUpdate\n}) {\n const timeout = useRef();\n const outOfBoundsX = useRef(0);\n const outOfBoundsY = useRef(0);\n const stepMultiplier = useRef(1);\n const [joystickShown, setShowJoystick] = useState(false);\n const [isOutOfBounds, setIsOutOfBounds] = useState(false);\n const [spanRef, set] = useTransform();\n const joystickeRef = useRef(null);\n const playgroundRef = useRef(null);\n useLayoutEffect(() => {\n if (joystickShown) {\n const {\n top,\n left,\n width,\n height\n } = joystickeRef.current.getBoundingClientRect();\n playgroundRef.current.style.left = left + width / 2 + 'px';\n playgroundRef.current.style.top = top + height / 2 + 'px';\n }\n }, [joystickShown]);\n const {\n keys: [v1, v2],\n joystick\n } = settings;\n const yFactor = joystick === 'invertY' ? 1 : -1;\n const {\n [v1]: {\n step: stepV1\n },\n [v2]: {\n step: stepV2\n }\n } = settings;\n const wpx = useTh('sizes', 'joystickWidth');\n const hpx = useTh('sizes', 'joystickHeight');\n const w = parseFloat(wpx) * 0.8 / 2;\n const h = parseFloat(hpx) * 0.8 / 2;\n const startOutOfBounds = useCallback(() => {\n if (timeout.current) return;\n setIsOutOfBounds(true);\n if (outOfBoundsX.current) set({\n x: outOfBoundsX.current * w\n });\n if (outOfBoundsY.current) set({\n y: outOfBoundsY.current * -h\n });\n timeout.current = window.setInterval(() => {\n onUpdate(v => {\n const incX = stepV1 * outOfBoundsX.current * stepMultiplier.current;\n const incY = yFactor * stepV2 * outOfBoundsY.current * stepMultiplier.current;\n return Array.isArray(v) ? {\n [v1]: v[0] + incX,\n [v2]: v[1] + incY\n } : {\n [v1]: v[v1] + incX,\n [v2]: v[v2] + incY\n };\n });\n }, 16);\n }, [w, h, onUpdate, set, stepV1, stepV2, v1, v2, yFactor]);\n const endOutOfBounds = useCallback(() => {\n window.clearTimeout(timeout.current);\n timeout.current = undefined;\n setIsOutOfBounds(false);\n }, []);\n useEffect(() => {\n function setStepMultiplier(event) {\n stepMultiplier.current = multiplyStep(event);\n }\n window.addEventListener('keydown', setStepMultiplier);\n window.addEventListener('keyup', setStepMultiplier);\n return () => {\n window.clearTimeout(timeout.current);\n window.removeEventListener('keydown', setStepMultiplier);\n window.removeEventListener('keyup', setStepMultiplier);\n };\n }, []);\n const bind = useDrag(({\n first,\n active,\n delta: [dx, dy],\n movement: [mx, my]\n }) => {\n if (first) setShowJoystick(true);\n const _x = clamp(mx, -w, w);\n const _y = clamp(my, -h, h);\n outOfBoundsX.current = Math.abs(mx) > Math.abs(_x) ? Math.sign(mx - _x) : 0;\n outOfBoundsY.current = Math.abs(my) > Math.abs(_y) ? Math.sign(_y - my) : 0;\n let newX = value[v1];\n let newY = value[v2];\n if (active) {\n if (!outOfBoundsX.current) {\n newX += dx * stepV1 * stepMultiplier.current;\n set({\n x: _x\n });\n }\n if (!outOfBoundsY.current) {\n newY -= yFactor * dy * stepV2 * stepMultiplier.current;\n set({\n y: _y\n });\n }\n if (outOfBoundsX.current || outOfBoundsY.current) startOutOfBounds();else endOutOfBounds();\n onUpdate({\n [v1]: newX,\n [v2]: newY\n });\n } else {\n setShowJoystick(false);\n outOfBoundsX.current = 0;\n outOfBoundsY.current = 0;\n set({\n x: 0,\n y: 0\n });\n endOutOfBounds();\n }\n });\n return React.createElement(JoystickTrigger, _extends({\n ref: joystickeRef\n }, bind()), joystickShown && React.createElement(Portal, null, React.createElement(JoystickPlayground, {\n ref: playgroundRef,\n isOutOfBounds: isOutOfBounds\n }, React.createElement(\"div\", null), React.createElement(\"span\", {\n ref: spanRef\n }))));\n}\n\nconst Container$1 = styled('div', {\n display: 'grid',\n columnGap: '$colGap',\n variants: {\n withJoystick: {\n true: {\n gridTemplateColumns: '$sizes$rowHeight auto'\n },\n false: {\n gridTemplateColumns: 'auto'\n }\n }\n }\n});\nfunction Vector2dComponent() {\n const {\n label,\n displayValue,\n onUpdate,\n settings\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Container$1, {\n withJoystick: !!settings.joystick\n }, settings.joystick && React.createElement(Joystick, {\n value: displayValue,\n settings: settings,\n onUpdate: onUpdate\n }), React.createElement(Vector, {\n value: displayValue,\n settings: settings,\n onUpdate: onUpdate\n })));\n}\n\nconst _excluded$7 = [\"joystick\"];\nconst plugin = getVectorPlugin(['x', 'y']);\nconst normalize$2 = _ref => {\n let {\n joystick = true\n } = _ref,\n input = _objectWithoutProperties(_ref, _excluded$7);\n const {\n value,\n settings\n } = plugin.normalize(input);\n return {\n value,\n settings: _objectSpread2(_objectSpread2({}, settings), {}, {\n joystick\n })\n };\n};\nvar vector2d = createInternalPlugin(_objectSpread2(_objectSpread2({\n component: Vector2dComponent\n}, plugin), {}, {\n normalize: normalize$2\n}));\n\nconst sanitize$1 = v => {\n if (v === undefined) return undefined;\n if (v instanceof File) {\n try {\n return URL.createObjectURL(v);\n } catch (e) {\n return undefined;\n }\n }\n if (typeof v === 'string' && v.indexOf('blob:') === 0) return v;\n throw Error(`Invalid image format [undefined | blob | File].`);\n};\nconst schema$1 = (_o, s) => typeof s === 'object' && 'image' in s;\nconst normalize$1 = ({\n image\n}) => {\n return {\n value: image\n };\n};\n\nvar props$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n sanitize: sanitize$1,\n schema: schema$1,\n normalize: normalize$1\n});\n\nconst ImageContainer = styled('div', {\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: '$sizes$rowHeight auto 20px',\n columnGap: '$colGap',\n alignItems: 'center'\n});\nconst DropZone = styled('div', {\n $flexCenter: '',\n overflow: 'hidden',\n height: '$rowHeight',\n background: '$elevation3',\n textAlign: 'center',\n color: 'inherit',\n borderRadius: '$sm',\n outline: 'none',\n userSelect: 'none',\n cursor: 'pointer',\n $inputStyle: '',\n $hover: '',\n $focusWithin: '',\n $active: '$accent1 $elevation1',\n variants: {\n isDragAccept: {\n true: {\n $inputStyle: '$accent1',\n backgroundColor: '$elevation1'\n }\n }\n }\n});\nconst ImagePreview = styled('div', {\n boxSizing: 'border-box',\n borderRadius: '$sm',\n height: '$rowHeight',\n width: '$rowHeight',\n $inputStyle: '',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n variants: {\n hasImage: {\n true: {\n cursor: 'pointer',\n $hover: '',\n $active: ''\n }\n }\n }\n});\nconst ImageLargePreview = styled('div', {\n $flexCenter: '',\n width: '$imagePreviewWidth',\n height: '$imagePreviewHeight',\n borderRadius: '$sm',\n boxShadow: '$level2',\n pointerEvents: 'none',\n $inputStyle: '',\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n});\nconst Instructions = styled('div', {\n fontSize: '0.8em',\n height: '100%',\n padding: '$rowGap $md'\n});\nconst Remove = styled('div', {\n $flexCenter: '',\n top: '0',\n right: '0',\n marginRight: '$sm',\n height: '100%',\n cursor: 'pointer',\n variants: {\n disabled: {\n true: {\n color: '$elevation3',\n cursor: 'default'\n }\n }\n },\n '&::after,&::before': {\n content: '\"\"',\n position: 'absolute',\n height: 2,\n width: 10,\n borderRadius: 1,\n backgroundColor: 'currentColor'\n },\n '&::after': {\n transform: 'rotate(45deg)'\n },\n '&::before': {\n transform: 'rotate(-45deg)'\n }\n});\n\nfunction ImageComponent() {\n const {\n label,\n value,\n onUpdate,\n disabled\n } = useInputContext();\n const {\n popinRef,\n wrapperRef,\n shown,\n show,\n hide\n } = usePopin();\n const onDrop = useCallback(acceptedFiles => {\n if (acceptedFiles.length) onUpdate(acceptedFiles[0]);\n }, [onUpdate]);\n const clear = useCallback(e => {\n e.stopPropagation();\n onUpdate(undefined);\n }, [onUpdate]);\n const {\n getRootProps,\n getInputProps,\n isDragAccept\n } = useDropzone({\n maxFiles: 1,\n accept: 'image/*',\n onDrop,\n disabled\n });\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(ImageContainer, null, React.createElement(ImagePreview, {\n ref: popinRef,\n hasImage: !!value,\n onPointerDown: () => !!value && show(),\n onPointerUp: hide,\n style: {\n backgroundImage: value ? `url(${value})` : 'none'\n }\n }), shown && !!value && React.createElement(Portal, null, React.createElement(Overlay, {\n onPointerUp: hide,\n style: {\n cursor: 'pointer'\n }\n }), React.createElement(ImageLargePreview, {\n ref: wrapperRef,\n style: {\n backgroundImage: `url(${value})`\n }\n })), React.createElement(DropZone, getRootProps({\n isDragAccept\n }), React.createElement(\"input\", getInputProps()), React.createElement(Instructions, null, isDragAccept ? 'drop image' : 'click or drop')), React.createElement(Remove, {\n onClick: clear,\n disabled: !value\n })));\n}\n\nvar image = createInternalPlugin(_objectSpread2({\n component: ImageComponent\n}, props$1));\n\nconst number = v8n().number();\nconst schema = (o, s) => v8n().array().length(2).every.number().test(o) && v8n().schema({\n min: number,\n max: number\n}).test(s);\nconst format = v => ({\n min: v[0],\n max: v[1]\n});\nconst sanitize = (value, {\n bounds: [MIN, MAX]\n}, prevValue) => {\n const _value = Array.isArray(value) ? format(value) : value;\n const _newValue = {\n min: prevValue[0],\n max: prevValue[1]\n };\n const {\n min,\n max\n } = _objectSpread2(_objectSpread2({}, _newValue), _value);\n return [clamp(Number(min), MIN, Math.max(MIN, max)), clamp(Number(max), Math.min(MAX, min), MAX)];\n};\nconst normalize = ({\n value,\n min,\n max\n}) => {\n const boundsSettings = {\n min,\n max\n };\n const _settings = normalizeKeyedNumberSettings(format(value), {\n min: boundsSettings,\n max: boundsSettings\n });\n const bounds = [min, max];\n const settings = _objectSpread2(_objectSpread2({}, _settings), {}, {\n bounds\n });\n const _value = sanitize(format(value), settings, value);\n return {\n value: _value,\n settings\n };\n};\n\nvar props = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema,\n format: format,\n sanitize: sanitize,\n normalize: normalize\n});\n\nconst _excluded$6 = [\"value\", \"bounds\", \"onDrag\"],\n _excluded2$1 = [\"bounds\"];\nconst Container = styled('div', {\n display: 'grid',\n columnGap: '$colGap',\n gridTemplateColumns: 'auto calc($sizes$numberInputMinWidth * 2 + $space$rowGap)'\n});\nfunction IntervalSlider(_ref) {\n let {\n value,\n bounds: [min, max],\n onDrag\n } = _ref,\n settings = _objectWithoutProperties(_ref, _excluded$6);\n const ref = useRef(null);\n const minScrubberRef = useRef(null);\n const maxScrubberRef = useRef(null);\n const rangeWidth = useRef(0);\n const scrubberWidth = useTh('sizes', 'scrubberWidth');\n const bind = useDrag(({\n event,\n first,\n xy: [x],\n movement: [mx],\n memo: _memo = {}\n }) => {\n if (first) {\n const {\n width,\n left\n } = ref.current.getBoundingClientRect();\n rangeWidth.current = width - parseFloat(scrubberWidth);\n const targetIsScrub = (event === null || event === void 0 ? void 0 : event.target) === minScrubberRef.current || (event === null || event === void 0 ? void 0 : event.target) === maxScrubberRef.current;\n _memo.pos = invertedRange((x - left) / width, min, max);\n const delta = Math.abs(_memo.pos - value.min) - Math.abs(_memo.pos - value.max);\n _memo.key = delta < 0 || delta === 0 && _memo.pos <= value.min ? 'min' : 'max';\n if (targetIsScrub) _memo.pos = value[_memo.key];\n }\n const newValue = _memo.pos + invertedRange(mx / rangeWidth.current, 0, max - min);\n onDrag({\n [_memo.key]: sanitizeStep(newValue, settings[_memo.key])\n });\n return _memo;\n });\n const minStyle = `calc(${range(value.min, min, max)} * (100% - ${scrubberWidth} - 8px) + 4px)`;\n const maxStyle = `calc(${1 - range(value.max, min, max)} * (100% - ${scrubberWidth} - 8px) + 4px)`;\n return React.createElement(RangeWrapper, _extends({\n ref: ref\n }, bind()), React.createElement(Range, null, React.createElement(Indicator, {\n style: {\n left: minStyle,\n right: maxStyle\n }\n })), React.createElement(Scrubber, {\n position: \"left\",\n ref: minScrubberRef,\n style: {\n left: minStyle\n }\n }), React.createElement(Scrubber, {\n position: \"right\",\n ref: maxScrubberRef,\n style: {\n right: maxStyle\n }\n }));\n}\nfunction IntervalComponent() {\n const {\n label,\n displayValue,\n onUpdate,\n settings\n } = useInputContext();\n const _settings = _objectWithoutProperties(settings, _excluded2$1);\n return React.createElement(React.Fragment, null, React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Container, null, React.createElement(IntervalSlider, _extends({\n value: displayValue\n }, settings, {\n onDrag: onUpdate\n })), React.createElement(Vector, {\n value: displayValue,\n settings: _settings,\n onUpdate: onUpdate,\n innerLabelTrim: 0\n }))));\n}\n\nvar interval = createInternalPlugin(_objectSpread2({\n component: IntervalComponent\n}, props));\n\nconst createEventEmitter = () => {\n const listenerMapping = new Map();\n return {\n on: (topic, listener) => {\n let listeners = listenerMapping.get(topic);\n if (listeners === undefined) {\n listeners = new Set();\n listenerMapping.set(topic, listeners);\n }\n listeners.add(listener);\n },\n off: (topic, listener) => {\n const listeners = listenerMapping.get(topic);\n if (listeners === undefined) {\n return;\n }\n listeners.delete(listener);\n if (listeners.size === 0) {\n listenerMapping.delete(topic);\n }\n },\n emit: (topic, ...args) => {\n const listeners = listenerMapping.get(topic);\n if (listeners === undefined) {\n return;\n }\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n};\n\nconst _excluded$5 = [\"type\", \"value\"],\n _excluded2 = [\"onChange\", \"transient\", \"onEditStart\", \"onEditEnd\"];\nconst Store = function Store() {\n const store = create(subscribeWithSelector(() => ({\n data: {}\n })));\n const eventEmitter = createEventEmitter();\n this.storeId = getUid();\n this.useStore = store;\n const folders = {};\n const orderedPaths = new Set();\n this.getVisiblePaths = () => {\n const data = this.getData();\n const paths = Object.keys(data);\n const hiddenFolders = [];\n Object.entries(folders).forEach(([path, settings]) => {\n if (settings.render && paths.some(p => p.indexOf(path) === 0) && !settings.render(this.get)) hiddenFolders.push(path + '.');\n });\n const visiblePaths = [];\n orderedPaths.forEach(path => {\n if (path in data && data[path].__refCount > 0 && hiddenFolders.every(p => path.indexOf(p) === -1) && (!data[path].render || data[path].render(this.get))) {\n visiblePaths.push(path);\n }\n });\n return visiblePaths;\n };\n this.setOrderedPaths = newPaths => {\n newPaths.forEach(p => orderedPaths.add(p));\n };\n this.orderPaths = paths => {\n this.setOrderedPaths(paths);\n return paths;\n };\n this.disposePaths = paths => {\n store.setState(s => {\n const data = s.data;\n paths.forEach(path => {\n if (path in data) {\n const input = data[path];\n input.__refCount--;\n if (input.__refCount === 0 && input.type in SpecialInputs) {\n delete data[path];\n }\n }\n });\n return {\n data\n };\n });\n };\n this.dispose = () => {\n store.setState(() => {\n return {\n data: {}\n };\n });\n };\n this.getFolderSettings = path => {\n return folders[path] || {};\n };\n this.getData = () => {\n return store.getState().data;\n };\n this.addData = (newData, override) => {\n store.setState(s => {\n const data = s.data;\n Object.entries(newData).forEach(([path, newInputData]) => {\n let input = data[path];\n if (!!input) {\n const {\n type,\n value\n } = newInputData,\n rest = _objectWithoutProperties(newInputData, _excluded$5);\n if (type !== input.type) {\n warn(LevaErrors.INPUT_TYPE_OVERRIDE, path, input.type, type);\n } else {\n if (input.__refCount === 0 || override) {\n Object.assign(input, rest);\n }\n input.__refCount++;\n }\n } else {\n data[path] = _objectSpread2(_objectSpread2({}, newInputData), {}, {\n __refCount: 1\n });\n }\n });\n return {\n data\n };\n });\n };\n this.setValueAtPath = (path, value, fromPanel) => {\n store.setState(s => {\n const data = s.data;\n updateInput(data[path], value, path, this, fromPanel);\n return {\n data\n };\n });\n };\n this.setSettingsAtPath = (path, settings) => {\n store.setState(s => {\n const data = s.data;\n data[path].settings = _objectSpread2(_objectSpread2({}, data[path].settings), settings);\n return {\n data\n };\n });\n };\n this.disableInputAtPath = (path, flag) => {\n store.setState(s => {\n const data = s.data;\n data[path].disabled = flag;\n return {\n data\n };\n });\n };\n this.set = (values, fromPanel) => {\n store.setState(s => {\n const data = s.data;\n Object.entries(values).forEach(([path, value]) => {\n try {\n updateInput(data[path], value, undefined, undefined, fromPanel);\n } catch (e) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[This message will only show in development]: \\`set\\` for path ${path} has failed.`, e);\n }\n }\n });\n return {\n data\n };\n });\n };\n this.getInput = path => {\n try {\n return this.getData()[path];\n } catch (e) {\n warn(LevaErrors.PATH_DOESNT_EXIST, path);\n }\n };\n this.get = path => {\n var _this$getInput;\n return (_this$getInput = this.getInput(path)) === null || _this$getInput === void 0 ? void 0 : _this$getInput.value;\n };\n this.emitOnEditStart = path => {\n eventEmitter.emit(`onEditStart:${path}`, this.get(path), path, _objectSpread2(_objectSpread2({}, this.getInput(path)), {}, {\n get: this.get\n }));\n };\n this.emitOnEditEnd = path => {\n eventEmitter.emit(`onEditEnd:${path}`, this.get(path), path, _objectSpread2(_objectSpread2({}, this.getInput(path)), {}, {\n get: this.get\n }));\n };\n this.subscribeToEditStart = (path, listener) => {\n const _path = `onEditStart:${path}`;\n eventEmitter.on(_path, listener);\n return () => eventEmitter.off(_path, listener);\n };\n this.subscribeToEditEnd = (path, listener) => {\n const _path = `onEditEnd:${path}`;\n eventEmitter.on(_path, listener);\n return () => eventEmitter.off(_path, listener);\n };\n const _getDataFromSchema = (schema, rootPath, mappedPaths) => {\n const data = {};\n Object.entries(schema).forEach(([key, rawInput]) => {\n if (key === '') return warn(LevaErrors.EMPTY_KEY);\n let newPath = join(rootPath, key);\n if (rawInput.type === SpecialInputs.FOLDER) {\n const newData = _getDataFromSchema(rawInput.schema, newPath, mappedPaths);\n Object.assign(data, newData);\n if (!(newPath in folders)) folders[newPath] = rawInput.settings;\n } else if (key in mappedPaths) {\n warn(LevaErrors.DUPLICATE_KEYS, key, newPath, mappedPaths[key].path);\n } else {\n const normalizedInput = normalizeInput(rawInput, key, newPath, data);\n if (normalizedInput) {\n const {\n type,\n options,\n input\n } = normalizedInput;\n const {\n onChange,\n transient,\n onEditStart,\n onEditEnd\n } = options,\n _options = _objectWithoutProperties(options, _excluded2);\n data[newPath] = _objectSpread2(_objectSpread2(_objectSpread2({\n type\n }, _options), input), {}, {\n fromPanel: true\n });\n mappedPaths[key] = {\n path: newPath,\n onChange,\n transient,\n onEditStart,\n onEditEnd\n };\n } else {\n warn(LevaErrors.UNKNOWN_INPUT, newPath, rawInput);\n }\n }\n });\n return data;\n };\n this.getDataFromSchema = schema => {\n const mappedPaths = {};\n const data = _getDataFromSchema(schema, '', mappedPaths);\n return [data, mappedPaths];\n };\n};\nconst levaStore = new Store();\nfunction useCreateStore() {\n return useMemo(() => new Store(), []);\n}\nif (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {\n window.__STORE = levaStore;\n}\n\nconst defaultSettings$2 = {\n collapsed: false\n};\nfunction folder(schema, settings) {\n return {\n type: SpecialInputs.FOLDER,\n schema,\n settings: _objectSpread2(_objectSpread2({}, defaultSettings$2), settings)\n };\n}\n\nconst defaultSettings$1 = {\n disabled: false\n};\nfunction button(onClick, settings) {\n return {\n type: SpecialInputs.BUTTON,\n onClick,\n settings: _objectSpread2(_objectSpread2({}, defaultSettings$1), settings)\n };\n}\n\nfunction buttonGroup(opts) {\n return {\n type: SpecialInputs.BUTTON_GROUP,\n opts\n };\n}\n\nconst defaultSettings = {\n graph: false,\n interval: 100\n};\nfunction monitor(objectOrFn, settings) {\n return {\n type: SpecialInputs.MONITOR,\n objectOrFn,\n settings: _objectSpread2(_objectSpread2({}, defaultSettings), settings)\n };\n}\n\nconst isInput = v => '__levaInput' in v;\nconst buildTree = (paths, filter) => {\n const tree = {};\n const _filter = filter ? filter.toLowerCase() : null;\n paths.forEach(path => {\n const [valueKey, folderPath] = getKeyPath(path);\n if (!_filter || valueKey.toLowerCase().indexOf(_filter) > -1) {\n merge(tree, folderPath, {\n [valueKey]: {\n __levaInput: true,\n path\n }\n });\n }\n });\n return tree;\n};\n\nconst _excluded$4 = [\"type\", \"label\", \"path\", \"valueKey\", \"value\", \"settings\", \"setValue\", \"disabled\"];\nfunction ControlInput(_ref) {\n let {\n type,\n label,\n path,\n valueKey,\n value,\n settings,\n setValue,\n disabled\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded$4);\n const {\n displayValue,\n onChange,\n onUpdate\n } = useInputSetters({\n type,\n value,\n settings,\n setValue\n });\n const Input = Plugins[type].component;\n if (!Input) {\n warn(LevaErrors.NO_COMPONENT_FOR_TYPE, type, path);\n return null;\n }\n return React.createElement(InputContext.Provider, {\n value: _objectSpread2({\n key: valueKey,\n path,\n id: '' + path,\n label,\n displayValue,\n value,\n onChange,\n onUpdate,\n settings,\n setValue,\n disabled\n }, rest)\n }, React.createElement(StyledInputWrapper, {\n disabled: disabled\n }, React.createElement(Input, null)));\n}\n\nconst StyledButton = styled('button', {\n display: 'block',\n $reset: '',\n fontWeight: '$button',\n height: '$rowHeight',\n borderStyle: 'none',\n borderRadius: '$sm',\n backgroundColor: '$elevation1',\n color: '$highlight1',\n '&:not(:disabled)': {\n color: '$highlight3',\n backgroundColor: '$accent2',\n cursor: 'pointer',\n $hover: '$accent3',\n $active: '$accent3 $accent1',\n $focus: ''\n }\n});\n\nfunction Button({\n onClick,\n settings,\n label\n}) {\n const store = useStoreContext();\n return React.createElement(Row, null, React.createElement(StyledButton, {\n disabled: settings.disabled,\n onClick: () => onClick(store.get)\n }, label));\n}\n\nconst StyledButtonGroup = styled('div', {\n $flex: '',\n justifyContent: 'flex-end',\n gap: '$colGap'\n});\n\nconst StyledButtonGroupButton = styled('button', {\n $reset: '',\n cursor: 'pointer',\n borderRadius: '$xs',\n '&:hover': {\n backgroundColor: '$elevation3'\n }\n});\n\nconst getOpts = ({\n label: _label,\n opts: _opts\n}) => {\n let label = typeof _label === 'string' ? _label.trim() === '' ? null : _label : _label;\n let opts = _opts;\n if (typeof _opts.opts === 'object') {\n if (opts.label !== undefined) {\n label = _opts.label;\n }\n opts = _opts.opts;\n }\n return {\n label,\n opts: opts\n };\n};\nfunction ButtonGroup(props) {\n const {\n label,\n opts\n } = getOpts(props);\n const store = useStoreContext();\n return React.createElement(Row, {\n input: !!label\n }, label && React.createElement(Label, null, label), React.createElement(StyledButtonGroup, null, Object.entries(opts).map(([label, onClick]) => React.createElement(StyledButtonGroupButton, {\n key: label,\n onClick: () => onClick(store.get)\n }, label))));\n}\n\nconst Canvas = styled('canvas', {\n height: '$monitorHeight',\n width: '100%',\n display: 'block',\n borderRadius: '$sm'\n});\n\nconst POINTS = 100;\nfunction push(arr, val) {\n arr.push(val);\n if (arr.length > POINTS) arr.shift();\n}\nconst MonitorCanvas = forwardRef(function ({\n initialValue\n}, ref) {\n const accentColor = useTh('colors', 'highlight3');\n const backgroundColor = useTh('colors', 'elevation2');\n const fillColor = useTh('colors', 'highlight1');\n const [gradientTop, gradientBottom] = useMemo(() => {\n return [colord(fillColor).alpha(0.4).toRgbString(), colord(fillColor).alpha(0.1).toRgbString()];\n }, [fillColor]);\n const points = useRef([initialValue]);\n const min = useRef(initialValue);\n const max = useRef(initialValue);\n const raf = useRef();\n const drawPlot = useCallback((_canvas, _ctx) => {\n if (!_canvas) return;\n const {\n width,\n height\n } = _canvas;\n const path = new Path2D();\n const interval = width / POINTS;\n const verticalPadding = height * 0.05;\n for (let i = 0; i < points.current.length; i++) {\n const p = range(points.current[i], min.current, max.current);\n const x = interval * i;\n const y = height - p * (height - verticalPadding * 2) - verticalPadding;\n path.lineTo(x, y);\n }\n _ctx.clearRect(0, 0, width, height);\n const gradientPath = new Path2D(path);\n gradientPath.lineTo(interval * (points.current.length + 1), height);\n gradientPath.lineTo(0, height);\n gradientPath.lineTo(0, 0);\n const gradient = _ctx.createLinearGradient(0, 0, 0, height);\n gradient.addColorStop(0.0, gradientTop);\n gradient.addColorStop(1.0, gradientBottom);\n _ctx.fillStyle = gradient;\n _ctx.fill(gradientPath);\n _ctx.strokeStyle = backgroundColor;\n _ctx.lineJoin = 'round';\n _ctx.lineWidth = 14;\n _ctx.stroke(path);\n _ctx.strokeStyle = accentColor;\n _ctx.lineWidth = 2;\n _ctx.stroke(path);\n }, [accentColor, backgroundColor, gradientTop, gradientBottom]);\n const [canvas, ctx] = useCanvas2d(drawPlot);\n useImperativeHandle(ref, () => ({\n frame: val => {\n if (min.current === undefined || val < min.current) min.current = val;\n if (max.current === undefined || val > max.current) max.current = val;\n push(points.current, val);\n raf.current = requestAnimationFrame(() => drawPlot(canvas.current, ctx.current));\n }\n }), [canvas, ctx, drawPlot]);\n useEffect(() => () => cancelAnimationFrame(raf.current), []);\n return React.createElement(Canvas, {\n ref: canvas\n });\n});\nconst parse = val => Number.isFinite(val) ? val.toPrecision(2) : val.toString();\nconst MonitorLog = forwardRef(function ({\n initialValue\n}, ref) {\n const [val, set] = useState(parse(initialValue));\n useImperativeHandle(ref, () => ({\n frame: v => set(parse(v))\n }), []);\n return React.createElement(\"div\", null, val);\n});\nfunction getValue(o) {\n return typeof o === 'function' ? o() : o.current;\n}\nfunction Monitor({\n label,\n objectOrFn,\n settings\n}) {\n const ref = useRef();\n const initialValue = useRef(getValue(objectOrFn));\n useEffect(() => {\n const timeout = window.setInterval(() => {\n var _ref$current;\n if (document.hidden) return;\n (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.frame(getValue(objectOrFn));\n }, settings.interval);\n return () => window.clearInterval(timeout);\n }, [objectOrFn, settings.interval]);\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, {\n align: \"top\"\n }, label), settings.graph ? React.createElement(MonitorCanvas, {\n ref: ref,\n initialValue: initialValue.current\n }) : React.createElement(MonitorLog, {\n ref: ref,\n initialValue: initialValue.current\n }));\n}\n\nconst _excluded$3 = [\"type\", \"label\", \"key\"];\nconst specialComponents = {\n [SpecialInputs.BUTTON]: Button,\n [SpecialInputs.BUTTON_GROUP]: ButtonGroup,\n [SpecialInputs.MONITOR]: Monitor\n};\nconst Control = React.memo(({\n path\n}) => {\n const [input, {\n set,\n setSettings,\n disable,\n storeId,\n emitOnEditStart,\n emitOnEditEnd\n }] = useInput(path);\n if (!input) return null;\n const {\n type,\n label,\n key\n } = input,\n inputProps = _objectWithoutProperties(input, _excluded$3);\n if (type in SpecialInputs) {\n const SpecialInputForType = specialComponents[type];\n return React.createElement(SpecialInputForType, _extends({\n label: label,\n path: path\n }, inputProps));\n }\n if (!(type in Plugins)) {\n log(LevaErrors.UNSUPPORTED_INPUT, type, path);\n return null;\n }\n return (React.createElement(ControlInput, _extends({\n key: storeId + path,\n type: type,\n label: label,\n storeId: storeId,\n path: path,\n valueKey: key,\n setValue: set,\n setSettings: setSettings,\n disable: disable,\n emitOnEditStart: emitOnEditStart,\n emitOnEditEnd: emitOnEditEnd\n }, inputProps))\n );\n});\n\nfunction FolderTitle({\n toggle,\n toggled,\n name\n}) {\n return React.createElement(StyledTitle, {\n onClick: () => toggle()\n }, React.createElement(Chevron, {\n toggled: toggled\n }), React.createElement(\"div\", null, name));\n}\n\nconst Folder = ({\n name,\n path,\n tree\n}) => {\n const store = useStoreContext();\n const newPath = join(path, name);\n const {\n collapsed,\n color\n } = store.getFolderSettings(newPath);\n const [toggled, setToggle] = useState(!collapsed);\n const folderRef = useRef(null);\n const widgetColor = useTh('colors', 'folderWidgetColor');\n const textColor = useTh('colors', 'folderTextColor');\n useLayoutEffect(() => {\n folderRef.current.style.setProperty('--leva-colors-folderWidgetColor', color || widgetColor);\n folderRef.current.style.setProperty('--leva-colors-folderTextColor', color || textColor);\n }, [color, widgetColor, textColor]);\n return React.createElement(StyledFolder, {\n ref: folderRef\n }, React.createElement(FolderTitle, {\n name: name,\n toggled: toggled,\n toggle: () => setToggle(t => !t)\n }), React.createElement(TreeWrapper, {\n parent: newPath,\n tree: tree,\n toggled: toggled\n }));\n};\nconst TreeWrapper = React.memo(({\n isRoot: _isRoot = false,\n fill: _fill = false,\n flat: _flat = false,\n parent,\n tree,\n toggled\n}) => {\n const {\n wrapperRef,\n contentRef\n } = useToggle(toggled);\n const store = useStoreContext();\n const getOrder = ([key, o]) => {\n var _store$getInput;\n const order = isInput(o) ? (_store$getInput = store.getInput(o.path)) === null || _store$getInput === void 0 ? void 0 : _store$getInput.order : store.getFolderSettings(join(parent, key)).order;\n return order || 0;\n };\n const entries = Object.entries(tree).sort((a, b) => getOrder(a) - getOrder(b));\n return React.createElement(StyledWrapper, {\n ref: wrapperRef,\n isRoot: _isRoot,\n fill: _fill,\n flat: _flat\n }, React.createElement(StyledContent, {\n ref: contentRef,\n isRoot: _isRoot,\n toggled: toggled\n }, entries.map(([key, value]) => isInput(value) ? React.createElement(Control, {\n key: value.path,\n valueKey: value.valueKey,\n path: value.path\n }) : React.createElement(Folder, {\n key: key,\n name: key,\n path: parent,\n tree: value\n }))));\n});\n\nconst StyledRoot = styled('div', {\n position: 'relative',\n fontFamily: '$mono',\n fontSize: '$root',\n color: '$rootText',\n backgroundColor: '$elevation1',\n variants: {\n fill: {\n false: {\n position: 'fixed',\n top: '10px',\n right: '10px',\n zIndex: 1000,\n width: '$rootWidth'\n },\n true: {\n position: 'relative',\n width: '100%'\n }\n },\n flat: {\n false: {\n borderRadius: '$lg',\n boxShadow: '$level1'\n }\n },\n oneLineLabels: {\n true: {\n [`${StyledInputRow}`]: {\n gridTemplateColumns: 'auto',\n gridAutoColumns: 'minmax(max-content, 1fr)',\n gridAutoRows: 'minmax($sizes$rowHeight), auto)',\n rowGap: 0,\n columnGap: 0,\n marginTop: '$rowGap'\n }\n }\n },\n hideTitleBar: {\n true: {\n $$titleBarHeight: '0px'\n },\n false: {\n $$titleBarHeight: '$sizes$titleBarHeight'\n }\n }\n },\n '&,*,*:after,*:before': {\n boxSizing: 'border-box'\n },\n '*::selection': {\n backgroundColor: '$accent2'\n }\n});\n\nconst iconWidth = 40;\nconst Icon = styled('i', {\n $flexCenter: '',\n width: iconWidth,\n userSelect: 'none',\n cursor: 'pointer',\n '> svg': {\n fill: '$highlight1',\n transition: 'transform 350ms ease, fill 250ms ease'\n },\n '&:hover > svg': {\n fill: '$highlight3'\n },\n variants: {\n active: {\n true: {\n '> svg': {\n fill: '$highlight2'\n }\n }\n }\n }\n});\nconst StyledTitleWithFilter = styled('div', {\n display: 'flex',\n alignItems: 'stretch',\n justifyContent: 'space-between',\n height: '$titleBarHeight',\n variants: {\n mode: {\n drag: {\n cursor: 'grab'\n }\n }\n }\n});\nconst FilterWrapper = styled('div', {\n $flex: '',\n position: 'relative',\n width: '100%',\n overflow: 'hidden',\n transition: 'height 250ms ease',\n color: '$highlight3',\n paddingLeft: '$md',\n [`> ${Icon}`]: {\n height: 30\n },\n variants: {\n toggled: {\n true: {\n height: 30\n },\n false: {\n height: 0\n }\n }\n }\n});\nconst StyledFilterInput = styled('input', {\n $reset: '',\n flex: 1,\n position: 'relative',\n height: 30,\n width: '100%',\n backgroundColor: 'transparent',\n fontSize: '10px',\n borderRadius: '$root',\n '&:focus': {},\n '&::placeholder': {\n color: '$highlight2'\n }\n});\nconst TitleContainer = styled('div', {\n touchAction: 'none',\n $flexCenter: '',\n flex: 1,\n '> svg': {\n fill: '$highlight1'\n },\n color: '$highlight1',\n variants: {\n drag: {\n true: {\n $draggable: '',\n '> svg': {\n transition: 'fill 250ms ease'\n },\n '&:hover': {\n color: '$highlight3'\n },\n '&:hover > svg': {\n fill: '$highlight3'\n }\n }\n },\n filterEnabled: {\n false: {\n paddingRight: iconWidth\n }\n }\n }\n});\n\nconst FilterInput = React.forwardRef(({\n setFilter,\n toggle\n}, ref) => {\n const [value, set] = useState('');\n const debouncedOnChange = useMemo(() => debounce(setFilter, 250), [setFilter]);\n const clear = () => {\n setFilter('');\n set('');\n };\n const _onChange = e => {\n const v = e.currentTarget.value;\n toggle(true);\n set(v);\n };\n useEffect(() => {\n debouncedOnChange(value);\n }, [value, debouncedOnChange]);\n return React.createElement(React.Fragment, null, React.createElement(StyledFilterInput, {\n ref: ref,\n value: value,\n placeholder: \"[Open filter with CMD+SHIFT+L]\",\n onPointerDown: e => e.stopPropagation(),\n onChange: _onChange\n }), React.createElement(Icon, {\n onClick: () => clear(),\n style: {\n visibility: value ? 'visible' : 'hidden'\n }\n }, React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"14\",\n width: \"14\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\"\n }, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\",\n clipRule: \"evenodd\"\n }))));\n});\nfunction TitleWithFilter({\n setFilter,\n onDrag,\n onDragStart,\n onDragEnd,\n toggle,\n toggled,\n title,\n drag,\n filterEnabled,\n from\n}) {\n const [filterShown, setShowFilter] = useState(false);\n const inputRef = useRef(null);\n useEffect(() => {\n var _inputRef$current, _inputRef$current2;\n if (filterShown) (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();else (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();\n }, [filterShown]);\n const bind = useDrag(({\n offset: [x, y],\n first,\n last\n }) => {\n onDrag({\n x,\n y\n });\n if (first) {\n onDragStart({\n x,\n y\n });\n }\n if (last) {\n onDragEnd({\n x,\n y\n });\n }\n }, {\n filterTaps: true,\n from: ({\n offset: [x, y]\n }) => [(from === null || from === void 0 ? void 0 : from.x) || x, (from === null || from === void 0 ? void 0 : from.y) || y]\n });\n useEffect(() => {\n const handleShortcut = event => {\n if (event.key === 'L' && event.shiftKey && event.metaKey) {\n setShowFilter(f => !f);\n }\n };\n window.addEventListener('keydown', handleShortcut);\n return () => window.removeEventListener('keydown', handleShortcut);\n }, []);\n return React.createElement(React.Fragment, null, React.createElement(StyledTitleWithFilter, {\n mode: drag ? 'drag' : undefined\n }, React.createElement(Icon, {\n active: !toggled,\n onClick: () => toggle()\n }, React.createElement(Chevron, {\n toggled: toggled,\n width: 12,\n height: 8\n })), React.createElement(TitleContainer, _extends({}, drag ? bind() : {}, {\n drag: drag,\n filterEnabled: filterEnabled\n }), title === undefined && drag ? React.createElement(\"svg\", {\n width: \"20\",\n height: \"10\",\n viewBox: \"0 0 28 14\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"circle\", {\n cx: \"2\",\n cy: \"2\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"14\",\n cy: \"2\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"26\",\n cy: \"2\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"2\",\n cy: \"12\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"14\",\n cy: \"12\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"26\",\n cy: \"12\",\n r: \"2\"\n })) : title), filterEnabled && React.createElement(Icon, {\n active: filterShown,\n onClick: () => setShowFilter(f => !f)\n }, React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, React.createElement(\"path\", {\n d: \"M9 9a2 2 0 114 0 2 2 0 01-4 0z\"\n }), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm1-13a4 4 0 00-3.446 6.032l-2.261 2.26a1 1 0 101.414 1.415l2.261-2.261A4 4 0 1011 5z\",\n clipRule: \"evenodd\"\n })))), React.createElement(FilterWrapper, {\n toggled: filterShown\n }, React.createElement(FilterInput, {\n ref: inputRef,\n setFilter: setFilter,\n toggle: toggle\n })));\n}\n\nconst _excluded$2 = [\"store\", \"hidden\", \"theme\", \"collapsed\"];\nfunction LevaRoot(_ref) {\n let {\n store,\n hidden = false,\n theme,\n collapsed = false\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$2);\n const themeContext = useDeepMemo(() => mergeTheme(theme), [theme]);\n const [toggled, setToggle] = useState(!collapsed);\n const computedToggled = typeof collapsed === 'object' ? !collapsed.collapsed : toggled;\n const computedSetToggle = useMemo(() => {\n if (typeof collapsed === 'object') {\n return value => {\n if (typeof value === 'function') {\n collapsed.onChange(!value(!collapsed.collapsed));\n } else {\n collapsed.onChange(!value);\n }\n };\n }\n return setToggle;\n }, [collapsed]);\n if (!store || hidden) return null;\n return React.createElement(ThemeContext.Provider, {\n value: themeContext\n }, React.createElement(LevaCore, _extends({\n store: store\n }, props, {\n toggled: computedToggled,\n setToggle: computedSetToggle,\n rootClass: themeContext.className\n })));\n}\nconst LevaCore = React.memo(({\n store,\n rootClass,\n fill: _fill = false,\n flat: _flat = false,\n neverHide: _neverHide = false,\n oneLineLabels: _oneLineLabels = false,\n titleBar: _titleBar = {\n title: undefined,\n drag: true,\n filter: true,\n position: undefined,\n onDrag: undefined,\n onDragStart: undefined,\n onDragEnd: undefined\n },\n hideCopyButton: _hideCopyButton = false,\n toggled,\n setToggle\n}) => {\n var _titleBar$drag, _titleBar$filter;\n const paths = useVisiblePaths(store);\n const [filter, setFilter] = useState('');\n const tree = useMemo(() => buildTree(paths, filter), [paths, filter]);\n const [rootRef, set] = useTransform();\n const shouldShow = _neverHide || paths.length > 0;\n const title = typeof _titleBar === 'object' ? _titleBar.title || undefined : undefined;\n const drag = typeof _titleBar === 'object' ? (_titleBar$drag = _titleBar.drag) !== null && _titleBar$drag !== void 0 ? _titleBar$drag : true : true;\n const filterEnabled = typeof _titleBar === 'object' ? (_titleBar$filter = _titleBar.filter) !== null && _titleBar$filter !== void 0 ? _titleBar$filter : true : true;\n const position = typeof _titleBar === 'object' ? _titleBar.position || undefined : undefined;\n const onDrag = typeof _titleBar === 'object' ? _titleBar.onDrag || undefined : undefined;\n const onDragStart = typeof _titleBar === 'object' ? _titleBar.onDragStart || undefined : undefined;\n const onDragEnd = typeof _titleBar === 'object' ? _titleBar.onDragEnd || undefined : undefined;\n React.useEffect(() => {\n set({\n x: position === null || position === void 0 ? void 0 : position.x,\n y: position === null || position === void 0 ? void 0 : position.y\n });\n }, [position, set]);\n globalStyles();\n return React.createElement(RadixTooltip.Provider, null, React.createElement(PanelSettingsContext.Provider, {\n value: {\n hideCopyButton: _hideCopyButton\n }\n }, React.createElement(StyledRoot, {\n ref: rootRef,\n className: rootClass,\n fill: _fill,\n flat: _flat,\n oneLineLabels: _oneLineLabels,\n hideTitleBar: !_titleBar,\n style: {\n display: shouldShow ? 'block' : 'none'\n }\n }, _titleBar && React.createElement(TitleWithFilter, {\n onDrag: point => {\n set(point);\n onDrag === null || onDrag === void 0 || onDrag(point);\n },\n onDragStart: point => onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(point),\n onDragEnd: point => onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(point),\n setFilter: setFilter,\n toggle: flag => setToggle(t => flag !== null && flag !== void 0 ? flag : !t),\n toggled: toggled,\n title: title,\n drag: drag,\n filterEnabled: filterEnabled,\n from: position\n }), shouldShow && React.createElement(StoreContext.Provider, {\n value: store\n }, React.createElement(TreeWrapper, {\n isRoot: true,\n fill: _fill,\n flat: _flat,\n tree: tree,\n toggled: toggled\n })))));\n});\n\nconst _excluded$1 = [\"isRoot\"];\nlet rootInitialized = false;\nlet rootEl = null;\nfunction Leva(_ref) {\n let {\n isRoot = false\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$1);\n useEffect(() => {\n rootInitialized = true;\n if (!isRoot && rootEl) {\n rootEl.remove();\n rootEl = null;\n }\n return () => {\n if (!isRoot) rootInitialized = false;\n };\n }, [isRoot]);\n return React.createElement(LevaRoot, _extends({\n store: levaStore\n }, props));\n}\nfunction useRenderRoot(isGlobalPanel) {\n useEffect(() => {\n if (isGlobalPanel && !rootInitialized) {\n if (!rootEl) {\n rootEl = document.getElementById('leva__root') || Object.assign(document.createElement('div'), {\n id: 'leva__root'\n });\n if (document.body) {\n document.body.appendChild(rootEl);\n createRoot(rootEl).render(React.createElement(Leva, {\n isRoot: true\n }));\n }\n }\n rootInitialized = true;\n }\n }, [isGlobalPanel]);\n}\n\nconst _excluded = [\"store\"];\nfunction LevaPanel(_ref) {\n let {\n store\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n const parentStore = useStoreContext();\n const _store = store === undefined ? parentStore : store;\n return React.createElement(LevaRoot, _extends({\n store: _store\n }, props));\n}\n\nfunction parseArgs(schemaOrFolderName, settingsOrDepsOrSchema, depsOrSettingsOrFolderSettings, depsOrSettings, depsOrUndefined) {\n let schema;\n let folderName = undefined;\n let folderSettings;\n let hookSettings;\n let deps;\n if (typeof schemaOrFolderName === 'string') {\n folderName = schemaOrFolderName;\n schema = settingsOrDepsOrSchema;\n if (Array.isArray(depsOrSettingsOrFolderSettings)) {\n deps = depsOrSettingsOrFolderSettings;\n } else {\n if (depsOrSettingsOrFolderSettings) {\n if ('store' in depsOrSettingsOrFolderSettings) {\n hookSettings = depsOrSettingsOrFolderSettings;\n deps = depsOrSettings;\n } else {\n folderSettings = depsOrSettingsOrFolderSettings;\n if (Array.isArray(depsOrSettings)) {\n deps = depsOrSettings;\n } else {\n hookSettings = depsOrSettings;\n deps = depsOrUndefined;\n }\n }\n }\n }\n } else {\n schema = schemaOrFolderName;\n if (Array.isArray(settingsOrDepsOrSchema)) {\n deps = settingsOrDepsOrSchema;\n } else {\n hookSettings = settingsOrDepsOrSchema;\n deps = depsOrSettingsOrFolderSettings;\n }\n }\n return {\n schema,\n folderName,\n folderSettings,\n hookSettings,\n deps: deps || []\n };\n}\nfunction useControls(schemaOrFolderName, settingsOrDepsOrSchema, depsOrSettingsOrFolderSettings, depsOrSettings, depsOrUndefined) {\n const {\n folderName,\n schema,\n folderSettings,\n hookSettings,\n deps\n } = parseArgs(schemaOrFolderName, settingsOrDepsOrSchema, depsOrSettingsOrFolderSettings, depsOrSettings, depsOrUndefined);\n const schemaIsFunction = typeof schema === 'function';\n const depsChanged = useRef(false);\n const firstRender = useRef(true);\n const _schema = useDeepMemo(() => {\n depsChanged.current = true;\n const s = typeof schema === 'function' ? schema() : schema;\n return folderName ? {\n [folderName]: folder(s, folderSettings)\n } : s;\n }, deps);\n const isGlobalPanel = !(hookSettings !== null && hookSettings !== void 0 && hookSettings.store);\n useRenderRoot(isGlobalPanel);\n const [store] = useState(() => (hookSettings === null || hookSettings === void 0 ? void 0 : hookSettings.store) || levaStore);\n const [initialData, mappedPaths] = useMemo(() => store.getDataFromSchema(_schema), [store, _schema]);\n const [allPaths, renderPaths, onChangePaths, onEditStartPaths, onEditEndPaths] = useMemo(() => {\n const allPaths = [];\n const renderPaths = [];\n const onChangePaths = {};\n const onEditStartPaths = {};\n const onEditEndPaths = {};\n Object.values(mappedPaths).forEach(({\n path,\n onChange,\n onEditStart,\n onEditEnd,\n transient\n }) => {\n allPaths.push(path);\n if (!!onChange) {\n onChangePaths[path] = onChange;\n if (!transient) {\n renderPaths.push(path);\n }\n } else {\n renderPaths.push(path);\n }\n if (onEditStart) {\n onEditStartPaths[path] = onEditStart;\n }\n if (onEditEnd) {\n onEditEndPaths[path] = onEditEnd;\n }\n });\n return [allPaths, renderPaths, onChangePaths, onEditStartPaths, onEditEndPaths];\n }, [mappedPaths]);\n const paths = useMemo(() => store.orderPaths(allPaths), [allPaths, store]);\n const values = useValuesForPath(store, renderPaths, initialData);\n const set = useCallback(values => {\n const _values = Object.entries(values).reduce((acc, [p, v]) => Object.assign(acc, {\n [mappedPaths[p].path]: v\n }), {});\n store.set(_values, false);\n }, [store, mappedPaths]);\n const get = useCallback(path => store.get(mappedPaths[path].path), [store, mappedPaths]);\n useEffect(() => {\n const shouldOverrideSettings = !firstRender.current && depsChanged.current;\n store.addData(initialData, shouldOverrideSettings);\n firstRender.current = false;\n depsChanged.current = false;\n return () => store.disposePaths(paths);\n }, [store, paths, initialData]);\n useEffect(() => {\n const unsubscriptions = [];\n Object.entries(onChangePaths).forEach(([path, onChange]) => {\n onChange(store.get(path), path, _objectSpread2({\n initial: true,\n get: store.get\n }, store.getInput(path)));\n const unsub = store.useStore.subscribe(s => {\n const input = s.data[path];\n const value = input.disabled ? undefined : input.value;\n return [value, input];\n }, ([value, input]) => onChange(value, path, _objectSpread2({\n initial: false,\n get: store.get\n }, input)), {\n equalityFn: shallow\n });\n unsubscriptions.push(unsub);\n });\n return () => unsubscriptions.forEach(unsub => unsub());\n }, [store, onChangePaths]);\n useEffect(() => {\n const unsubscriptions = [];\n Object.entries(onEditStartPaths).forEach(([path, onEditStart]) => unsubscriptions.push(store.subscribeToEditStart(path, onEditStart)));\n Object.entries(onEditEndPaths).forEach(([path, onEditEnd]) => unsubscriptions.push(store.subscribeToEditEnd(path, onEditEnd)));\n return () => unsubscriptions.forEach(unsub => unsub());\n }, [onEditStartPaths, onEditEndPaths, store]);\n if (schemaIsFunction) return [values, set, get];\n return values;\n}\n\nregister(LevaInputs.SELECT, select);\nregister(LevaInputs.IMAGE, image);\nregister(LevaInputs.NUMBER, number$1);\nregister(LevaInputs.COLOR, color);\nregister(LevaInputs.STRING, string);\nregister(LevaInputs.BOOLEAN, boolean);\nregister(LevaInputs.INTERVAL, interval);\nregister(LevaInputs.VECTOR3D, vector3d);\nregister(LevaInputs.VECTOR2D, vector2d);\n\nexport { Leva, LevaPanel, button, buttonGroup, folder, levaStore, monitor, useControls, useCreateStore };\n","'use client';\n\nimport {\n memo,\n type HTMLAttributes,\n type PropsWithChildren,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { measureLineStats, prepareWithSegments } from '@chenglou/pretext';\nimport { twMerge } from './helpers/twMerge';\n\nexport type ChatMessageSender = 'assistant' | 'user';\n\nexport interface ChatMessageProps extends HTMLAttributes<HTMLDivElement> {\n sender: ChatMessageSender;\n}\n\nconst DEFAULT_FONT = '16px Inter';\nconst DEFAULT_MAX_WIDTH_RATIO = 0.7;\nconst DEFAULT_H_PADDING = 48;\n\ninterface ShrinkParams {\n font: string;\n maxWidthRatio: number;\n hPadding: number;\n}\n\nfunction useShrinkWidth(\n text: string,\n containerRef: React.RefObject<HTMLDivElement | null>,\n params: ShrinkParams,\n) {\n const [maxWidth, setMaxWidth] = useState<number | undefined>(undefined);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container || !text) return;\n\n try {\n const availableWidth = container.offsetWidth * params.maxWidthRatio;\n const prepared = prepareWithSegments(text, params.font);\n const { maxLineWidth } = measureLineStats(prepared, availableWidth - params.hPadding);\n setMaxWidth(maxLineWidth + params.hPadding);\n } catch {\n // Canvas or Intl.Segmenter unavailable (SSR / test env) — fall back to CSS cap\n }\n // containerRef is a stable ref object — its identity never changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [text, params.font, params.maxWidthRatio, params.hPadding]);\n\n return maxWidth;\n}\n\nconst DEFAULT_PARAMS: ShrinkParams = {\n font: DEFAULT_FONT,\n maxWidthRatio: DEFAULT_MAX_WIDTH_RATIO,\n hPadding: DEFAULT_H_PADDING,\n};\n\n/**\n * Returns shrink params. In development, exposes a Leva panel for live\n * tweaking; in production the hook body is a constant return (no hooks\n * called), so leva is never included in the production bundle\n * (rule: bundle-conditional).\n *\n * The hook is always called unconditionally, which satisfies Rules of Hooks.\n * The `process.env.NODE_ENV` branch is resolved at build time.\n */\n/* eslint-disable react-hooks/rules-of-hooks */\nfunction useShrinkParams(): ShrinkParams {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const { useControls } = require('leva') as typeof import('leva');\n // useControls is only called in the development branch, which is dead\n // code in production builds — the bundler eliminates it entirely.\n return useControls('ChatMessage · shrinkwrap', {\n font: { value: DEFAULT_FONT, label: 'Font' },\n maxWidthRatio: {\n value: DEFAULT_MAX_WIDTH_RATIO,\n min: 0.1,\n max: 1,\n step: 0.01,\n label: 'Max width ratio',\n },\n hPadding: {\n value: DEFAULT_H_PADDING,\n min: 0,\n max: 128,\n step: 1,\n label: 'Horizontal padding (px)',\n },\n });\n }\n return DEFAULT_PARAMS;\n}\n/* eslint-enable react-hooks/rules-of-hooks */\n\nexport const ChatMessage = memo(function ChatMessage({\n sender,\n children,\n className,\n ...props\n}: PropsWithChildren<ChatMessageProps>) {\n const isUser = sender === 'user';\n const containerRef = useRef<HTMLDivElement>(null);\n\n const params = useShrinkParams();\n\n const text = isUser && typeof children === 'string' ? children : '';\n const shrinkMaxWidth = useShrinkWidth(text, containerRef, params);\n\n return (\n <div\n ref={containerRef}\n role=\"article\"\n aria-label={isUser ? 'Your message' : 'Assistant message'}\n {...props}\n className={twMerge('flex w-full px-20', isUser ? 'justify-end' : 'justify-start', className)}\n >\n <p\n style={shrinkMaxWidth !== undefined ? { maxWidth: shrinkMaxWidth } : undefined}\n className={twMerge(\n 'text-b3',\n isUser ? 'bg-lightSand max-w-[70%] rounded-32 px-24 py-12 text-black' : 'text-black',\n )}\n >\n {children}\n </p>\n </div>\n );\n});\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76],"mappings":";;;;;;;;;;AAKA,IAAa,IAAkB,8pBAiQ9B,EACY,IAAsB;CAC/B;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAI;CACnB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAK;CACpB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAO;EAAO;EAAM;CACrB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAI;CACrB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAI;CACrB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAI;CACrB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAI;CACrB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAI;CACrB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAM;CACvB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAQ;EAAQ;EAAK;CACtB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAM;CACzB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAI;CACvB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAAS;EAAS;EAAK;CACxB;EAAC;EAA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"}