@talex-touch/tuffex 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +49 -221
  2. package/dist/es/agents/index.js +1 -1
  3. package/dist/es/alert/index.d.ts +104 -1
  4. package/dist/es/alert/index.js +6 -0
  5. package/dist/es/alert/src/TxAlert.vue.d.ts +1 -0
  6. package/dist/es/alert/src/TxAlert.vue.js +2 -2
  7. package/dist/es/alert/src/TxAlert.vue2.js +6 -2
  8. package/dist/es/auto-sizer/index.js +1 -1
  9. package/dist/es/auto-sizer/src/TxAutoSizer.vue.js +2 -2
  10. package/dist/es/avatar/index.js +1 -1
  11. package/dist/es/avatar/src/TxAvatar.vue.js +1 -1
  12. package/dist/es/avatar/src/TxAvatar.vue2.js +47 -6
  13. package/dist/es/avatar/src/TxAvatarGroup.vue.js +1 -1
  14. package/dist/es/avatar/src/TxAvatarGroup.vue2.js +1 -1
  15. package/dist/es/avatar/src/types.d.ts +2 -1
  16. package/dist/es/badge/index.d.ts +78 -1
  17. package/dist/es/badge/index.js +6 -0
  18. package/dist/es/badge/src/TxBadge.vue.js +2 -2
  19. package/dist/es/base-anchor/index.d.ts +464 -0
  20. package/dist/es/base-anchor/index.js +6 -0
  21. package/dist/es/base-anchor/src/TxBaseAnchor.vue.d.ts +124 -0
  22. package/dist/es/base-anchor/src/TxBaseAnchor.vue.js +7 -0
  23. package/dist/es/base-anchor/src/TxBaseAnchor.vue2.js +798 -0
  24. package/dist/es/base-anchor/src/types.d.ts +36 -0
  25. package/dist/es/base-surface/index.d.ts +561 -0
  26. package/dist/es/base-surface/index.js +7 -0
  27. package/dist/es/base-surface/src/TxBaseSurface.vue.d.ts +123 -0
  28. package/dist/es/base-surface/src/TxBaseSurface.vue.js +1012 -0
  29. package/dist/es/base-surface/src/TxBaseSurface.vue2.js +6 -0
  30. package/dist/es/base-surface/src/style/index.css +105 -0
  31. package/dist/es/base-surface/src/types.d.ts +87 -0
  32. package/dist/es/blank-slate/index.d.ts +9 -9
  33. package/dist/es/blank-slate/index.js +1 -1
  34. package/dist/es/button/index.d.ts +45 -15
  35. package/dist/es/button/index.js +2 -1
  36. package/dist/es/button/src/button.vue.d.ts +7 -1
  37. package/dist/es/button/src/button.vue.js +50 -20
  38. package/dist/es/button/src/split-button.vue.js +31 -5
  39. package/dist/es/button/src/style/index.css +72 -15
  40. package/dist/es/button/src/types.d.ts +4 -0
  41. package/dist/es/card/index.d.ts +236 -56
  42. package/dist/es/card/index.js +1 -1
  43. package/dist/es/card/src/TxCard.vue.d.ts +40 -4
  44. package/dist/es/card/src/TxCard.vue.js +1 -1
  45. package/dist/es/card/src/TxCard.vue2.js +288 -57
  46. package/dist/es/card/src/types.d.ts +14 -1
  47. package/dist/es/card-item/index.d.ts +7 -7
  48. package/dist/es/card-item/index.js +1 -1
  49. package/dist/es/cascader/index.d.ts +15 -15
  50. package/dist/es/cascader/index.js +1 -1
  51. package/dist/es/cascader/src/TxCascader.vue.d.ts +1 -1
  52. package/dist/es/cascader/src/TxCascader.vue.js +1 -1
  53. package/dist/es/cascader/src/TxCascader.vue2.js +1 -3
  54. package/dist/es/chat/index.d.ts +18 -18
  55. package/dist/es/chat/index.js +1 -1
  56. package/dist/es/chat/src/TxChatComposer.vue.js +1 -1
  57. package/dist/es/chat/src/TxChatComposer.vue2.js +1 -0
  58. package/dist/es/chat/src/TxTypingIndicator.vue.d.ts +1 -1
  59. package/dist/es/code-editor/index.d.ts +387 -0
  60. package/dist/es/code-editor/index.js +8 -0
  61. package/dist/es/code-editor/src/TxCodeEditor.vue.d.ts +117 -0
  62. package/dist/es/code-editor/src/TxCodeEditor.vue.js +7 -0
  63. package/dist/es/code-editor/src/TxCodeEditor.vue2.js +658 -0
  64. package/dist/es/code-editor/src/TxCodeEditorToolbar.vue.d.ts +40 -0
  65. package/dist/es/code-editor/src/TxCodeEditorToolbar.vue.js +7 -0
  66. package/dist/es/code-editor/src/TxCodeEditorToolbar.vue2.js +89 -0
  67. package/dist/es/code-editor/src/types.d.ts +47 -0
  68. package/dist/es/command-palette/index.js +1 -1
  69. package/dist/es/command-palette/src/TxCommandPalette.vue.js +1 -1
  70. package/dist/es/command-palette/src/TxCommandPalette.vue2.js +128 -21
  71. package/dist/es/components.css +4253 -3117
  72. package/dist/es/components.d.ts +15 -2
  73. package/dist/es/components.js +44 -7
  74. package/dist/es/container/src/TxCol.vue.d.ts +1 -1
  75. package/dist/es/container/src/TxCol.vue2.js +1 -1
  76. package/dist/es/container/src/TxContainer.vue.d.ts +1 -1
  77. package/dist/es/container/src/TxRow.vue.d.ts +2 -2
  78. package/dist/es/container/src/TxRow.vue2.js +1 -1
  79. package/dist/es/context-menu/index.js +1 -1
  80. package/dist/es/context-menu/src/TxContextMenu.vue.js +1 -1
  81. package/dist/es/context-menu/src/TxContextMenu.vue2.js +4 -1
  82. package/dist/es/corner-overlay/index.js +1 -1
  83. package/dist/es/data-table/index.d.ts +15 -15
  84. package/dist/es/data-table/index.js +1 -1
  85. package/dist/es/data-table/src/TxDataTable.vue.d.ts +1 -1
  86. package/dist/es/date-picker/index.js +1 -1
  87. package/dist/es/dialog/index.js +1 -1
  88. package/dist/es/dialog/src/TxBlowDialog.vue.js +6 -2
  89. package/dist/es/dialog/src/TxBottomDialog.vue.js +1 -1
  90. package/dist/es/dialog/src/TxBottomDialog.vue2.js +6 -2
  91. package/dist/es/dialog/src/TxPopperDialog.vue.js +6 -2
  92. package/dist/es/dialog/src/TxTouchTip.vue.js +1 -1
  93. package/dist/es/dialog/src/TxTouchTip.vue2.js +25 -22
  94. package/dist/es/dialog/src/types.d.ts +1 -1
  95. package/dist/es/drawer/index.d.ts +24 -30
  96. package/dist/es/drawer/index.js +1 -1
  97. package/dist/es/drawer/src/TxDrawer.vue.d.ts +1 -4
  98. package/dist/es/drawer/src/TxDrawer.vue.js +8 -2
  99. package/dist/es/dropdown-menu/index.d.ts +81 -18
  100. package/dist/es/dropdown-menu/index.js +1 -1
  101. package/dist/es/dropdown-menu/src/TxDropdownMenu.vue.d.ts +11 -2
  102. package/dist/es/dropdown-menu/src/TxDropdownMenu.vue.js +1 -1
  103. package/dist/es/dropdown-menu/src/TxDropdownMenu.vue2.js +13 -3
  104. package/dist/es/dropdown-menu/src/types.d.ts +8 -1
  105. package/dist/es/edge-fade-mask/index.d.ts +120 -0
  106. package/dist/es/edge-fade-mask/index.js +6 -0
  107. package/dist/es/edge-fade-mask/src/TxEdgeFadeMask.vue.d.ts +51 -0
  108. package/dist/es/edge-fade-mask/src/TxEdgeFadeMask.vue.js +7 -0
  109. package/dist/es/edge-fade-mask/src/TxEdgeFadeMask.vue2.js +154 -0
  110. package/dist/es/edge-fade-mask/src/types.d.ts +9 -0
  111. package/dist/es/empty/index.js +1 -1
  112. package/dist/es/empty-state/index.d.ts +9 -9
  113. package/dist/es/empty-state/index.js +1 -1
  114. package/dist/es/empty-state/src/TxEmptyState.vue.js +1 -1
  115. package/dist/es/empty-state/src/TxEmptyState.vue2.js +25 -17
  116. package/dist/es/error-state/index.d.ts +131 -0
  117. package/dist/es/error-state/index.js +6 -0
  118. package/dist/es/error-state/src/TxErrorState.vue.d.ts +13 -0
  119. package/dist/es/error-state/src/TxErrorState.vue.js +35 -0
  120. package/dist/es/error-state/src/TxErrorState.vue2.js +5 -0
  121. package/dist/es/error-state/src/types.d.ts +3 -0
  122. package/dist/es/file-uploader/index.js +1 -1
  123. package/dist/es/flat-radio/index.d.ts +201 -0
  124. package/dist/es/flat-radio/index.js +8 -0
  125. package/dist/es/flat-radio/src/TxFlatRadio.vue.d.ts +51 -0
  126. package/dist/es/flat-radio/src/TxFlatRadio.vue.js +7 -0
  127. package/dist/es/flat-radio/src/TxFlatRadio.vue2.js +237 -0
  128. package/dist/es/flat-radio/src/TxFlatRadioItem.vue.d.ts +43 -0
  129. package/dist/es/flat-radio/src/TxFlatRadioItem.vue.js +7 -0
  130. package/dist/es/flat-radio/src/TxFlatRadioItem.vue2.js +87 -0
  131. package/dist/es/flat-radio/src/types.d.ts +28 -0
  132. package/dist/es/flat-radio/src/types.js +3 -0
  133. package/dist/es/flat-select/index.d.ts +159 -0
  134. package/dist/es/flat-select/index.js +8 -0
  135. package/dist/es/flat-select/src/TxFlatSelect.vue.d.ts +56 -0
  136. package/dist/es/flat-select/src/TxFlatSelect.vue.js +7 -0
  137. package/dist/es/flat-select/src/TxFlatSelect.vue2.js +208 -0
  138. package/dist/es/flat-select/src/TxFlatSelectItem.vue.d.ts +47 -0
  139. package/dist/es/flat-select/src/TxFlatSelectItem.vue.js +7 -0
  140. package/dist/es/flat-select/src/TxFlatSelectItem.vue2.js +71 -0
  141. package/dist/es/flat-select/src/types.d.ts +21 -0
  142. package/dist/es/flat-select/src/types.js +3 -0
  143. package/dist/es/flex/index.d.ts +33 -33
  144. package/dist/es/flex/index.js +1 -1
  145. package/dist/es/flex/src/TxFlex.vue.d.ts +3 -3
  146. package/dist/es/flip-overlay/index.d.ts +579 -0
  147. package/dist/es/flip-overlay/index.js +7 -0
  148. package/dist/es/flip-overlay/src/TxFlipOverlay.vue.d.ts +175 -0
  149. package/dist/es/flip-overlay/src/TxFlipOverlay.vue.js +982 -0
  150. package/dist/es/flip-overlay/src/TxFlipOverlay.vue3.js +6 -0
  151. package/dist/es/flip-overlay/src/types.d.ts +53 -0
  152. package/dist/es/floating/index.d.ts +145 -0
  153. package/dist/es/floating/index.js +8 -0
  154. package/dist/es/floating/src/TxFloating.vue.d.ts +45 -0
  155. package/dist/es/floating/src/TxFloating.vue.js +7 -0
  156. package/dist/es/floating/src/TxFloating.vue2.js +118 -0
  157. package/dist/es/floating/src/TxFloatingElement.vue.d.ts +39 -0
  158. package/dist/es/floating/src/TxFloatingElement.vue.js +7 -0
  159. package/dist/es/floating/src/TxFloatingElement.vue2.js +43 -0
  160. package/dist/es/floating/src/context.d.ts +7 -0
  161. package/dist/es/floating/src/context.js +3 -0
  162. package/dist/es/floating/src/types.d.ts +10 -0
  163. package/dist/es/form/index.d.ts +9 -9
  164. package/dist/es/form/index.js +1 -1
  165. package/dist/es/fusion/index.d.ts +15 -15
  166. package/dist/es/fusion/index.js +1 -1
  167. package/dist/es/fusion/src/TxFusion.vue.d.ts +1 -1
  168. package/dist/es/glass-surface/index.d.ts +30 -30
  169. package/dist/es/glass-surface/index.js +1 -1
  170. package/dist/es/glass-surface/src/TxGlassSurface.vue.d.ts +2 -2
  171. package/dist/es/glass-surface/src/TxGlassSurface.vue.js +16 -38
  172. package/dist/es/glow-text/index.d.ts +24 -6
  173. package/dist/es/glow-text/index.js +1 -1
  174. package/dist/es/glow-text/src/TxGlowText.vue.d.ts +3 -3
  175. package/dist/es/glow-text/src/TxGlowText.vue.js +1 -1
  176. package/dist/es/glow-text/src/TxGlowText.vue2.js +93 -10
  177. package/dist/es/glow-text/src/types.d.ts +2 -0
  178. package/dist/es/gradient-border/index.js +1 -1
  179. package/dist/es/gradual-blur/index.d.ts +42 -42
  180. package/dist/es/gradual-blur/index.js +1 -1
  181. package/dist/es/gradual-blur/src/TxGradualBlur.vue.d.ts +3 -3
  182. package/dist/es/gradual-blur/src/TxGradualBlur.vue.js +1 -1
  183. package/dist/es/grid/src/TxGrid.vue.d.ts +2 -2
  184. package/dist/es/grid/src/TxGrid.vue2.js +1 -1
  185. package/dist/es/grid-layout/index.js +1 -1
  186. package/dist/es/group-block/index.d.ts +321 -4
  187. package/dist/es/group-block/index.js +8 -2
  188. package/dist/es/group-block/src/TxBlockInput.vue.d.ts +90 -0
  189. package/dist/es/group-block/src/TxBlockInput.vue.js +94 -0
  190. package/dist/es/group-block/src/TxBlockInput.vue3.js +6 -0
  191. package/dist/es/group-block/src/TxBlockSelect.vue.d.ts +73 -0
  192. package/dist/es/group-block/src/TxBlockSelect.vue.js +76 -0
  193. package/dist/es/group-block/src/TxBlockSelect.vue3.js +6 -0
  194. package/dist/es/group-block/src/TxGroupBlock.vue.js +1 -1
  195. package/dist/es/group-block/src/types.d.ts +138 -0
  196. package/dist/es/guide-state/index.d.ts +131 -0
  197. package/dist/es/guide-state/index.js +6 -0
  198. package/dist/es/guide-state/src/TxGuideState.vue.d.ts +13 -0
  199. package/dist/es/guide-state/src/TxGuideState.vue.js +35 -0
  200. package/dist/es/guide-state/src/TxGuideState.vue2.js +5 -0
  201. package/dist/es/guide-state/src/types.d.ts +3 -0
  202. package/dist/es/icon/index.js +1 -1
  203. package/dist/es/icon/src/TxIcon.vue.js +1 -1
  204. package/dist/es/icon/src/TxIcon.vue2.js +10 -4
  205. package/dist/es/image-gallery/index.js +1 -1
  206. package/dist/es/image-uploader/index.js +1 -1
  207. package/dist/es/index.js +53 -13
  208. package/dist/es/input/index.d.ts +211 -1
  209. package/dist/es/input/index.js +2 -1
  210. package/dist/es/input/src/TxInput.vue.d.ts +21 -11
  211. package/dist/es/input/src/TxInput.vue.js +1 -1
  212. package/dist/es/input/src/TxInput.vue2.js +80 -23
  213. package/dist/es/keyframe-stroke-text/index.d.ts +146 -0
  214. package/dist/es/keyframe-stroke-text/index.js +6 -0
  215. package/dist/es/keyframe-stroke-text/src/TxKeyframeStrokeText.vue.d.ts +48 -0
  216. package/dist/es/keyframe-stroke-text/src/TxKeyframeStrokeText.vue.js +7 -0
  217. package/dist/es/keyframe-stroke-text/src/TxKeyframeStrokeText.vue2.js +102 -0
  218. package/dist/es/keyframe-stroke-text/src/types.d.ts +10 -0
  219. package/dist/es/layout-skeleton/index.js +1 -1
  220. package/dist/es/loading-overlay/index.d.ts +15 -15
  221. package/dist/es/loading-overlay/index.js +1 -1
  222. package/dist/es/loading-overlay/src/TxLoadingOverlay.vue.d.ts +1 -1
  223. package/dist/es/loading-overlay/src/TxLoadingOverlay.vue.js +12 -2
  224. package/dist/es/loading-state/index.d.ts +9 -9
  225. package/dist/es/loading-state/index.js +1 -1
  226. package/dist/es/markdown-view/index.d.ts +3 -3
  227. package/dist/es/markdown-view/index.js +1 -1
  228. package/dist/es/markdown-view/src/TxMarkdownView.vue.js +3 -2
  229. package/dist/es/modal/index.js +1 -1
  230. package/dist/es/modal/src/TxModal.vue.js +1 -1
  231. package/dist/es/modal/src/TxModal.vue2.js +26 -4
  232. package/dist/es/nav-bar/index.js +1 -1
  233. package/dist/es/no-data/index.d.ts +9 -9
  234. package/dist/es/no-data/index.js +1 -1
  235. package/dist/es/no-selection/index.d.ts +9 -9
  236. package/dist/es/no-selection/index.js +1 -1
  237. package/dist/es/node_modules/.pnpm/@codemirror_legacy-modes@6.5.2/node_modules/@codemirror/legacy-modes/mode/properties.js +62 -0
  238. package/dist/es/node_modules/.pnpm/@codemirror_legacy-modes@6.5.2/node_modules/@codemirror/legacy-modes/mode/toml.js +76 -0
  239. package/dist/es/node_modules/.pnpm/@lezer_common@1.5.0/node_modules/@lezer/common/dist/index.js +252 -0
  240. package/dist/es/node_modules/.pnpm/@lezer_highlight@1.2.3/node_modules/@lezer/highlight/dist/index.js +682 -0
  241. package/dist/es/offline-state/index.d.ts +9 -9
  242. package/dist/es/offline-state/index.js +1 -1
  243. package/dist/es/outline-border/index.d.ts +18 -18
  244. package/dist/es/outline-border/index.js +1 -1
  245. package/dist/es/outline-border/src/TxOutlineBorder.vue.d.ts +1 -1
  246. package/dist/es/{utils → packages/tuffex/packages/utils}/toast.js +4 -1
  247. package/dist/es/packages/tuffex/packages/utils/z-index-manager.js +114 -0
  248. package/dist/es/packages/utils/env/index.js +8 -0
  249. package/dist/es/permission-state/index.d.ts +9 -9
  250. package/dist/es/permission-state/index.js +1 -1
  251. package/dist/es/picker/index.js +1 -1
  252. package/dist/es/picker/src/TxPicker.vue.js +1 -1
  253. package/dist/es/picker/src/TxPicker.vue2.js +6 -1
  254. package/dist/es/popover/index.d.ts +195 -82
  255. package/dist/es/popover/index.js +1 -1
  256. package/dist/es/popover/src/TxPopover.vue.d.ts +33 -16
  257. package/dist/es/popover/src/TxPopover.vue.js +1 -1
  258. package/dist/es/popover/src/TxPopover.vue2.js +147 -317
  259. package/dist/es/popover/src/types.d.ts +14 -3
  260. package/dist/es/progress-bar/index.d.ts +21 -21
  261. package/dist/es/progress-bar/index.js +1 -1
  262. package/dist/es/progress-bar/src/TxProgressBar.vue.d.ts +1 -1
  263. package/dist/es/radio/index.js +1 -1
  264. package/dist/es/radio/src/TxRadioGroup.vue2.js +1 -1
  265. package/dist/es/scroll/index.d.ts +42 -12
  266. package/dist/es/scroll/index.js +1 -1
  267. package/dist/es/scroll/src/TxScroll.vue.d.ts +11 -1
  268. package/dist/es/scroll/src/TxScroll.vue.js +1 -1
  269. package/dist/es/scroll/src/TxScroll.vue2.js +25 -13
  270. package/dist/es/scroll/src/runtime-capabilities.d.ts +2 -0
  271. package/dist/es/scroll/src/runtime-capabilities.js +67 -0
  272. package/dist/es/search-empty/index.d.ts +9 -9
  273. package/dist/es/search-empty/index.js +1 -1
  274. package/dist/es/search-input/index.js +1 -1
  275. package/dist/es/search-select/index.d.ts +9 -9
  276. package/dist/es/search-select/index.js +1 -1
  277. package/dist/es/search-select/src/TxSearchSelect.vue.d.ts +1 -1
  278. package/dist/es/search-select/src/TxSearchSelect.vue.js +1 -1
  279. package/dist/es/search-select/src/TxSearchSelect.vue2.js +105 -178
  280. package/dist/es/search-select/src/types.d.ts +1 -1
  281. package/dist/es/segmented-slider/index.js +1 -1
  282. package/dist/es/segmented-slider/src/TxSegmentedSlider.vue.js +1 -0
  283. package/dist/es/select/index.d.ts +366 -4
  284. package/dist/es/select/index.js +6 -9
  285. package/dist/es/select/src/TxSelect.vue.d.ts +23 -23
  286. package/dist/es/select/src/TxSelect.vue.js +2 -2
  287. package/dist/es/select/src/TxSelect.vue2.js +203 -152
  288. package/dist/es/select/src/TxSelectItem.vue.js +2 -2
  289. package/dist/es/select/src/TxSelectItem.vue2.js +44 -7
  290. package/dist/es/select/src/types.d.ts +34 -0
  291. package/dist/es/select/src/types.js +3 -0
  292. package/dist/es/skeleton/index.d.ts +7 -7
  293. package/dist/es/skeleton/index.js +1 -1
  294. package/dist/es/slider/index.d.ts +4 -4
  295. package/dist/es/slider/index.js +1 -1
  296. package/dist/es/sortable-list/index.js +1 -1
  297. package/dist/es/sortable-list/src/TxSortableList.vue.js +1 -1
  298. package/dist/es/sortable-list/src/TxSortableList.vue2.js +1 -1
  299. package/dist/es/spinner/index.d.ts +1 -1
  300. package/dist/es/spinner/index.js +1 -1
  301. package/dist/es/splitter/index.d.ts +15 -15
  302. package/dist/es/splitter/index.js +1 -1
  303. package/dist/es/splitter/src/TxSplitter.vue.d.ts +1 -1
  304. package/dist/es/stack/index.d.ts +33 -33
  305. package/dist/es/stack/index.js +1 -1
  306. package/dist/es/stack/src/TxStack.vue.d.ts +3 -3
  307. package/dist/es/stagger/index.d.ts +15 -15
  308. package/dist/es/stagger/index.js +1 -1
  309. package/dist/es/stagger/src/TxStagger.vue.d.ts +1 -1
  310. package/dist/es/stat-card/index.d.ts +46 -3
  311. package/dist/es/stat-card/index.js +1 -1
  312. package/dist/es/stat-card/src/TxStatCard.vue.d.ts +5 -1
  313. package/dist/es/stat-card/src/TxStatCard.vue.js +1 -1
  314. package/dist/es/stat-card/src/TxStatCard.vue2.js +247 -19
  315. package/dist/es/stat-card/src/types.d.ts +15 -0
  316. package/dist/es/status-badge/index.js +1 -1
  317. package/dist/es/switch/index.js +1 -0
  318. package/dist/es/tab-bar/index.d.ts +15 -15
  319. package/dist/es/tab-bar/index.js +1 -1
  320. package/dist/es/tab-bar/src/TxTabBar.vue.d.ts +1 -1
  321. package/dist/es/tabs/index.d.ts +18 -3
  322. package/dist/es/tabs/index.js +1 -1
  323. package/dist/es/tabs/src/TxTabs.vue.d.ts +10 -1
  324. package/dist/es/tabs/src/TxTabs.vue.js +1 -1
  325. package/dist/es/tabs/src/TxTabs.vue2.js +3 -1
  326. package/dist/es/tabs/src/types.d.ts +1 -0
  327. package/dist/es/tag/index.js +1 -1
  328. package/dist/es/tag-input/index.js +1 -1
  329. package/dist/es/text-transformer/index.d.ts +1 -1
  330. package/dist/es/text-transformer/index.js +1 -1
  331. package/dist/es/toast/index.js +1 -1
  332. package/dist/es/toast/src/TxToastHost.vue.js +18 -17
  333. package/dist/es/tooltip/index.d.ts +75 -178
  334. package/dist/es/tooltip/index.js +1 -1
  335. package/dist/es/tooltip/src/TxTooltip.vue.d.ts +21 -40
  336. package/dist/es/tooltip/src/TxTooltip.vue.js +1 -1
  337. package/dist/es/tooltip/src/TxTooltip.vue2.js +102 -350
  338. package/dist/es/tooltip/src/types.d.ts +8 -13
  339. package/dist/es/transfer/index.d.ts +131 -0
  340. package/dist/es/transfer/index.js +6 -0
  341. package/dist/es/transfer/src/TxTransfer.vue.d.ts +48 -0
  342. package/dist/es/transfer/src/TxTransfer.vue.js +7 -0
  343. package/dist/es/transfer/src/TxTransfer.vue2.js +217 -0
  344. package/dist/es/transfer/src/types.d.ts +17 -0
  345. package/dist/es/transition/index.d.ts +30 -30
  346. package/dist/es/transition/index.js +1 -1
  347. package/dist/es/transition/src/TxTransition.vue.d.ts +1 -1
  348. package/dist/es/transition/src/TxTransitionSmoothSize.vue.d.ts +1 -1
  349. package/dist/es/tree/index.d.ts +15 -15
  350. package/dist/es/tree/index.js +1 -1
  351. package/dist/es/tree/src/TxTree.vue.d.ts +1 -1
  352. package/dist/es/tree/src/TxTree.vue.js +1 -1
  353. package/dist/es/tree/src/TxTree.vue2.js +3 -2
  354. package/dist/es/tree/src/types.d.ts +1 -0
  355. package/dist/es/tree-select/index.d.ts +9 -9
  356. package/dist/es/tree-select/index.js +1 -1
  357. package/dist/es/tree-select/src/TxTreeSelect.vue.d.ts +1 -1
  358. package/dist/es/tree-select/src/TxTreeSelect.vue.js +1 -1
  359. package/dist/es/tree-select/src/TxTreeSelect.vue2.js +0 -2
  360. package/dist/es/tuff-logo-stroke/index.d.ts +146 -0
  361. package/dist/es/tuff-logo-stroke/index.js +6 -0
  362. package/dist/es/tuff-logo-stroke/src/TxTuffLogoStroke.vue.d.ts +48 -0
  363. package/dist/es/tuff-logo-stroke/src/TxTuffLogoStroke.vue.js +7 -0
  364. package/dist/es/tuff-logo-stroke/src/TxTuffLogoStroke.vue2.js +147 -0
  365. package/dist/es/tuff-logo-stroke/src/types.d.ts +10 -0
  366. package/dist/es/virtual-list/index.js +1 -1
  367. package/dist/lib/agents/index.js +1 -1
  368. package/dist/lib/alert/index.js +11 -0
  369. package/dist/lib/alert/src/TxAlert.vue.js +2 -2
  370. package/dist/lib/alert/src/TxAlert.vue2.js +5 -1
  371. package/dist/lib/auto-sizer/index.js +1 -1
  372. package/dist/lib/auto-sizer/src/TxAutoSizer.vue.js +2 -2
  373. package/dist/lib/avatar/index.js +1 -1
  374. package/dist/lib/avatar/src/TxAvatar.vue.js +1 -1
  375. package/dist/lib/avatar/src/TxAvatar.vue2.js +47 -6
  376. package/dist/lib/avatar/src/TxAvatarGroup.vue.js +1 -1
  377. package/dist/lib/avatar/src/TxAvatarGroup.vue2.js +1 -1
  378. package/dist/lib/badge/index.js +11 -0
  379. package/dist/lib/badge/src/TxBadge.vue.js +2 -2
  380. package/dist/lib/base-anchor/index.js +12 -0
  381. package/dist/lib/base-anchor/src/TxBaseAnchor.vue.js +11 -0
  382. package/dist/lib/base-anchor/src/TxBaseAnchor.vue2.js +802 -0
  383. package/dist/lib/base-surface/index.js +13 -0
  384. package/dist/lib/base-surface/src/TxBaseSurface.vue.js +1016 -0
  385. package/dist/lib/base-surface/src/TxBaseSurface.vue2.js +10 -0
  386. package/dist/lib/base-surface/src/style/index.css +105 -0
  387. package/dist/lib/blank-slate/index.js +1 -1
  388. package/dist/lib/button/index.js +2 -1
  389. package/dist/lib/button/src/button.vue.js +49 -19
  390. package/dist/lib/button/src/split-button.vue.js +30 -4
  391. package/dist/lib/button/src/style/index.css +72 -15
  392. package/dist/lib/card/index.js +1 -1
  393. package/dist/lib/card/src/TxCard.vue.js +1 -1
  394. package/dist/lib/card/src/TxCard.vue2.js +285 -54
  395. package/dist/lib/card-item/index.js +1 -1
  396. package/dist/lib/cascader/index.js +1 -1
  397. package/dist/lib/cascader/src/TxCascader.vue.js +1 -1
  398. package/dist/lib/cascader/src/TxCascader.vue2.js +1 -3
  399. package/dist/lib/chat/index.js +1 -1
  400. package/dist/lib/chat/src/TxChatComposer.vue.js +1 -1
  401. package/dist/lib/chat/src/TxChatComposer.vue2.js +1 -0
  402. package/dist/lib/code-editor/index.js +16 -0
  403. package/dist/lib/code-editor/src/TxCodeEditor.vue.js +11 -0
  404. package/dist/lib/code-editor/src/TxCodeEditor.vue2.js +662 -0
  405. package/dist/lib/code-editor/src/TxCodeEditorToolbar.vue.js +11 -0
  406. package/dist/lib/code-editor/src/TxCodeEditorToolbar.vue2.js +93 -0
  407. package/dist/lib/command-palette/index.js +1 -1
  408. package/dist/lib/command-palette/src/TxCommandPalette.vue.js +1 -1
  409. package/dist/lib/command-palette/src/TxCommandPalette.vue2.js +127 -20
  410. package/dist/lib/components.css +4253 -3117
  411. package/dist/lib/components.js +255 -178
  412. package/dist/lib/container/src/TxCol.vue2.js +1 -1
  413. package/dist/lib/container/src/TxRow.vue2.js +1 -1
  414. package/dist/lib/context-menu/index.js +1 -1
  415. package/dist/lib/context-menu/src/TxContextMenu.vue.js +1 -1
  416. package/dist/lib/context-menu/src/TxContextMenu.vue2.js +4 -1
  417. package/dist/lib/corner-overlay/index.js +1 -1
  418. package/dist/lib/data-table/index.js +1 -1
  419. package/dist/lib/date-picker/index.js +1 -1
  420. package/dist/lib/dialog/index.js +1 -1
  421. package/dist/lib/dialog/src/TxBlowDialog.vue.js +5 -1
  422. package/dist/lib/dialog/src/TxBottomDialog.vue.js +1 -1
  423. package/dist/lib/dialog/src/TxBottomDialog.vue2.js +5 -1
  424. package/dist/lib/dialog/src/TxPopperDialog.vue.js +5 -1
  425. package/dist/lib/dialog/src/TxTouchTip.vue.js +1 -1
  426. package/dist/lib/dialog/src/TxTouchTip.vue2.js +24 -21
  427. package/dist/lib/drawer/index.js +1 -1
  428. package/dist/lib/drawer/src/TxDrawer.vue.js +8 -2
  429. package/dist/lib/dropdown-menu/index.js +1 -1
  430. package/dist/lib/dropdown-menu/src/TxDropdownMenu.vue.js +1 -1
  431. package/dist/lib/dropdown-menu/src/TxDropdownMenu.vue2.js +13 -3
  432. package/dist/lib/edge-fade-mask/index.js +12 -0
  433. package/dist/lib/edge-fade-mask/src/TxEdgeFadeMask.vue.js +11 -0
  434. package/dist/lib/edge-fade-mask/src/TxEdgeFadeMask.vue2.js +158 -0
  435. package/dist/lib/empty/index.js +1 -1
  436. package/dist/lib/empty-state/index.js +1 -1
  437. package/dist/lib/empty-state/src/TxEmptyState.vue.js +1 -1
  438. package/dist/lib/empty-state/src/TxEmptyState.vue2.js +25 -17
  439. package/dist/lib/error-state/index.js +11 -0
  440. package/dist/lib/error-state/src/TxErrorState.vue.js +39 -0
  441. package/dist/lib/error-state/src/TxErrorState.vue2.js +9 -0
  442. package/dist/lib/file-uploader/index.js +1 -1
  443. package/dist/lib/flat-radio/index.js +16 -0
  444. package/dist/lib/flat-radio/src/TxFlatRadio.vue.js +11 -0
  445. package/dist/lib/flat-radio/src/TxFlatRadio.vue2.js +241 -0
  446. package/dist/lib/flat-radio/src/TxFlatRadioItem.vue.js +11 -0
  447. package/dist/lib/flat-radio/src/TxFlatRadioItem.vue2.js +91 -0
  448. package/dist/lib/flat-radio/src/types.js +7 -0
  449. package/dist/lib/flat-select/index.js +16 -0
  450. package/dist/lib/flat-select/src/TxFlatSelect.vue.js +11 -0
  451. package/dist/lib/flat-select/src/TxFlatSelect.vue2.js +212 -0
  452. package/dist/lib/flat-select/src/TxFlatSelectItem.vue.js +11 -0
  453. package/dist/lib/flat-select/src/TxFlatSelectItem.vue2.js +75 -0
  454. package/dist/lib/flat-select/src/types.js +7 -0
  455. package/dist/lib/flex/index.js +1 -1
  456. package/dist/lib/flip-overlay/index.js +13 -0
  457. package/dist/lib/flip-overlay/src/TxFlipOverlay.vue.js +986 -0
  458. package/dist/lib/flip-overlay/src/TxFlipOverlay.vue3.js +10 -0
  459. package/dist/lib/floating/index.js +16 -0
  460. package/dist/lib/floating/src/TxFloating.vue.js +11 -0
  461. package/dist/lib/floating/src/TxFloating.vue2.js +122 -0
  462. package/dist/lib/floating/src/TxFloatingElement.vue.js +11 -0
  463. package/dist/lib/floating/src/TxFloatingElement.vue2.js +47 -0
  464. package/dist/lib/floating/src/context.js +7 -0
  465. package/dist/lib/form/index.js +1 -1
  466. package/dist/lib/fusion/index.js +1 -1
  467. package/dist/lib/glass-surface/index.js +1 -1
  468. package/dist/lib/glass-surface/src/TxGlassSurface.vue.js +15 -37
  469. package/dist/lib/glow-text/index.js +1 -1
  470. package/dist/lib/glow-text/src/TxGlowText.vue.js +1 -1
  471. package/dist/lib/glow-text/src/TxGlowText.vue2.js +92 -9
  472. package/dist/lib/gradient-border/index.js +1 -1
  473. package/dist/lib/gradual-blur/index.js +1 -1
  474. package/dist/lib/gradual-blur/src/TxGradualBlur.vue.js +1 -1
  475. package/dist/lib/grid/src/TxGrid.vue2.js +1 -1
  476. package/dist/lib/grid-layout/index.js +1 -1
  477. package/dist/lib/group-block/index.js +11 -1
  478. package/dist/lib/group-block/src/TxBlockInput.vue.js +98 -0
  479. package/dist/lib/group-block/src/TxBlockInput.vue3.js +10 -0
  480. package/dist/lib/group-block/src/TxBlockSelect.vue.js +80 -0
  481. package/dist/lib/group-block/src/TxBlockSelect.vue3.js +10 -0
  482. package/dist/lib/group-block/src/TxGroupBlock.vue.js +1 -1
  483. package/dist/lib/guide-state/index.js +11 -0
  484. package/dist/lib/guide-state/src/TxGuideState.vue.js +39 -0
  485. package/dist/lib/guide-state/src/TxGuideState.vue2.js +9 -0
  486. package/dist/lib/icon/index.js +1 -1
  487. package/dist/lib/icon/src/TxIcon.vue.js +1 -1
  488. package/dist/lib/icon/src/TxIcon.vue2.js +9 -3
  489. package/dist/lib/image-gallery/index.js +1 -1
  490. package/dist/lib/image-uploader/index.js +1 -1
  491. package/dist/lib/index.js +269 -182
  492. package/dist/lib/input/index.js +7 -5
  493. package/dist/lib/input/src/TxInput.vue.js +1 -1
  494. package/dist/lib/input/src/TxInput.vue2.js +79 -22
  495. package/dist/lib/keyframe-stroke-text/index.js +12 -0
  496. package/dist/lib/keyframe-stroke-text/src/TxKeyframeStrokeText.vue.js +11 -0
  497. package/dist/lib/keyframe-stroke-text/src/TxKeyframeStrokeText.vue2.js +106 -0
  498. package/dist/lib/layout-skeleton/index.js +1 -1
  499. package/dist/lib/loading-overlay/index.js +1 -1
  500. package/dist/lib/loading-overlay/src/TxLoadingOverlay.vue.js +11 -1
  501. package/dist/lib/loading-state/index.js +1 -1
  502. package/dist/lib/markdown-view/index.js +1 -1
  503. package/dist/lib/markdown-view/src/TxMarkdownView.vue.js +3 -2
  504. package/dist/lib/modal/index.js +1 -1
  505. package/dist/lib/modal/src/TxModal.vue.js +1 -1
  506. package/dist/lib/modal/src/TxModal.vue2.js +25 -3
  507. package/dist/lib/nav-bar/index.js +1 -1
  508. package/dist/lib/no-data/index.js +1 -1
  509. package/dist/lib/no-selection/index.js +1 -1
  510. package/dist/lib/node_modules/.pnpm/@codemirror_legacy-modes@6.5.2/node_modules/@codemirror/legacy-modes/mode/properties.js +66 -0
  511. package/dist/lib/node_modules/.pnpm/@codemirror_legacy-modes@6.5.2/node_modules/@codemirror/legacy-modes/mode/toml.js +80 -0
  512. package/dist/lib/node_modules/.pnpm/@lezer_common@1.5.0/node_modules/@lezer/common/dist/index.js +257 -0
  513. package/dist/lib/node_modules/.pnpm/@lezer_highlight@1.2.3/node_modules/@lezer/highlight/dist/index.js +688 -0
  514. package/dist/lib/offline-state/index.js +1 -1
  515. package/dist/lib/outline-border/index.js +1 -1
  516. package/dist/lib/{utils → packages/tuffex/packages/utils}/toast.js +4 -1
  517. package/dist/lib/packages/tuffex/packages/utils/z-index-manager.js +124 -0
  518. package/dist/lib/packages/utils/env/index.js +13 -0
  519. package/dist/lib/permission-state/index.js +1 -1
  520. package/dist/lib/picker/index.js +1 -1
  521. package/dist/lib/picker/src/TxPicker.vue.js +1 -1
  522. package/dist/lib/picker/src/TxPicker.vue2.js +6 -1
  523. package/dist/lib/popover/index.js +1 -1
  524. package/dist/lib/popover/src/TxPopover.vue.js +1 -1
  525. package/dist/lib/popover/src/TxPopover.vue2.js +146 -316
  526. package/dist/lib/progress-bar/index.js +1 -1
  527. package/dist/lib/radio/index.js +1 -1
  528. package/dist/lib/radio/src/TxRadioGroup.vue2.js +1 -1
  529. package/dist/lib/scroll/index.js +1 -1
  530. package/dist/lib/scroll/src/TxScroll.vue.js +1 -1
  531. package/dist/lib/scroll/src/TxScroll.vue2.js +25 -13
  532. package/dist/lib/scroll/src/runtime-capabilities.js +72 -0
  533. package/dist/lib/search-empty/index.js +1 -1
  534. package/dist/lib/search-input/index.js +1 -1
  535. package/dist/lib/search-select/index.js +1 -1
  536. package/dist/lib/search-select/src/TxSearchSelect.vue.js +1 -1
  537. package/dist/lib/search-select/src/TxSearchSelect.vue2.js +104 -177
  538. package/dist/lib/segmented-slider/index.js +1 -1
  539. package/dist/lib/segmented-slider/src/TxSegmentedSlider.vue.js +1 -0
  540. package/dist/lib/select/index.js +6 -9
  541. package/dist/lib/select/src/TxSelect.vue.js +2 -2
  542. package/dist/lib/select/src/TxSelect.vue2.js +202 -151
  543. package/dist/lib/select/src/TxSelectItem.vue.js +2 -2
  544. package/dist/lib/select/src/TxSelectItem.vue2.js +43 -6
  545. package/dist/lib/select/src/types.js +7 -0
  546. package/dist/lib/skeleton/index.js +1 -1
  547. package/dist/lib/slider/index.js +1 -1
  548. package/dist/lib/sortable-list/index.js +1 -1
  549. package/dist/lib/sortable-list/src/TxSortableList.vue.js +1 -1
  550. package/dist/lib/sortable-list/src/TxSortableList.vue2.js +1 -1
  551. package/dist/lib/spinner/index.js +1 -1
  552. package/dist/lib/splitter/index.js +1 -1
  553. package/dist/lib/stack/index.js +1 -1
  554. package/dist/lib/stagger/index.js +1 -1
  555. package/dist/lib/stat-card/index.js +1 -1
  556. package/dist/lib/stat-card/src/TxStatCard.vue.js +1 -1
  557. package/dist/lib/stat-card/src/TxStatCard.vue2.js +246 -18
  558. package/dist/lib/status-badge/index.js +1 -1
  559. package/dist/lib/switch/index.js +1 -0
  560. package/dist/lib/tab-bar/index.js +1 -1
  561. package/dist/lib/tabs/index.js +1 -1
  562. package/dist/lib/tabs/src/TxTabs.vue.js +1 -1
  563. package/dist/lib/tabs/src/TxTabs.vue2.js +3 -1
  564. package/dist/lib/tag/index.js +1 -1
  565. package/dist/lib/tag-input/index.js +1 -1
  566. package/dist/lib/text-transformer/index.js +1 -1
  567. package/dist/lib/toast/index.js +1 -1
  568. package/dist/lib/toast/src/TxToastHost.vue.js +17 -16
  569. package/dist/lib/tooltip/index.js +1 -1
  570. package/dist/lib/tooltip/src/TxTooltip.vue.js +1 -1
  571. package/dist/lib/tooltip/src/TxTooltip.vue2.js +101 -349
  572. package/dist/lib/transfer/index.js +12 -0
  573. package/dist/lib/transfer/src/TxTransfer.vue.js +11 -0
  574. package/dist/lib/transfer/src/TxTransfer.vue2.js +221 -0
  575. package/dist/lib/transition/index.js +1 -1
  576. package/dist/lib/tree/index.js +1 -1
  577. package/dist/lib/tree/src/TxTree.vue.js +1 -1
  578. package/dist/lib/tree/src/TxTree.vue2.js +3 -2
  579. package/dist/lib/tree-select/index.js +1 -1
  580. package/dist/lib/tree-select/src/TxTreeSelect.vue.js +1 -1
  581. package/dist/lib/tree-select/src/TxTreeSelect.vue2.js +0 -2
  582. package/dist/lib/tuff-logo-stroke/index.js +12 -0
  583. package/dist/lib/tuff-logo-stroke/src/TxTuffLogoStroke.vue.js +11 -0
  584. package/dist/lib/tuff-logo-stroke/src/TxTuffLogoStroke.vue2.js +151 -0
  585. package/dist/lib/virtual-list/index.js +1 -1
  586. package/package.json +37 -25
  587. package/dist/es/button/__tests__/button.test.d.ts +0 -1
  588. package/dist/es/button/__tests__/split-button.test.d.ts +0 -1
  589. package/dist/es/cascader/__tests__/cascader.test.d.ts +0 -1
  590. package/dist/es/command-palette/__tests__/command-palette.test.d.ts +0 -1
  591. package/dist/es/data-table/__tests__/data-table.test.d.ts +0 -1
  592. package/dist/es/file-uploader/__tests__/file-uploader.test.d.ts +0 -1
  593. package/dist/es/form/__tests__/form.test.d.ts +0 -1
  594. package/dist/es/search-select/__tests__/search-select.test.d.ts +0 -1
  595. package/dist/es/tag-input/__tests__/tag-input.test.d.ts +0 -1
  596. package/dist/es/tree/__tests__/tree.test.d.ts +0 -1
  597. package/dist/es/tree-select/__tests__/tree-select.test.d.ts +0 -1
  598. package/dist/es/virtual-list/__tests__/virtual-list.test.d.ts +0 -1
  599. /package/dist/es/{utils → packages/tuffex/packages/utils}/animation/auto-resize.js +0 -0
  600. /package/dist/es/{utils → packages/tuffex/packages/utils}/animation/flip.js +0 -0
  601. /package/dist/es/{utils → packages/tuffex/packages/utils}/dialog-manager.js +0 -0
  602. /package/dist/es/{utils → packages/tuffex/packages/utils}/env.js +0 -0
  603. /package/dist/es/{utils → packages/tuffex/packages/utils}/vibrate.js +0 -0
  604. /package/dist/es/{utils → packages/tuffex/packages/utils}/withInstall.js +0 -0
  605. /package/dist/lib/{utils → packages/tuffex/packages/utils}/animation/auto-resize.js +0 -0
  606. /package/dist/lib/{utils → packages/tuffex/packages/utils}/animation/flip.js +0 -0
  607. /package/dist/lib/{utils → packages/tuffex/packages/utils}/dialog-manager.js +0 -0
  608. /package/dist/lib/{utils → packages/tuffex/packages/utils}/env.js +0 -0
  609. /package/dist/lib/{utils → packages/tuffex/packages/utils}/vibrate.js +0 -0
  610. /package/dist/lib/{utils → packages/tuffex/packages/utils}/withInstall.js +0 -0
@@ -0,0 +1,982 @@
1
+ import { defineComponent, useSlots, ref, computed, watch, onBeforeUnmount, createBlock, openBlock, Transition, withCtx, createElementBlock, createCommentVNode, normalizeStyle, normalizeClass, createElementVNode, withModifiers, createVNode, renderSlot, normalizeProps, mergeProps, guardReactiveProps, toDisplayString, nextTick } from 'vue';
2
+ import _sfc_main$2 from '../../button/src/button.vue.js';
3
+ import gsap from 'gsap';
4
+ import _sfc_main$1 from '../../base-surface/src/TxBaseSurface.vue.js';
5
+ /* empty css */
6
+ import { hasWindow } from '../../packages/tuffex/packages/utils/env.js';
7
+ import { getZIndex, nextZIndex } from '../../packages/tuffex/packages/utils/z-index-manager.js';
8
+
9
+ const _hoisted_1 = {
10
+ key: 0,
11
+ class: "TxFlipOverlay-GlobalMask"
12
+ };
13
+ const _hoisted_2 = {
14
+ key: 1,
15
+ class: "TxFlipOverlay-Header"
16
+ };
17
+ const _hoisted_3 = { class: "TxFlipOverlay-HeaderDisplay" };
18
+ const _hoisted_4 = {
19
+ key: 0,
20
+ class: "TxFlipOverlay-HeaderTitle"
21
+ };
22
+ const _hoisted_5 = {
23
+ key: 1,
24
+ class: "TxFlipOverlay-HeaderDesc"
25
+ };
26
+ const _hoisted_6 = { class: "TxFlipOverlay-HeaderActions" };
27
+ const STACK_MATCH_PIXEL_THRESHOLD = 8;
28
+ const STACK_MATCH_RATIO_THRESHOLD = 0.05;
29
+ const STACK_LAYER_OFFSET_Y = -18;
30
+ const STACK_LAYER_SCALE_STEP = 0.05;
31
+ const STACK_LAYER_MAX_DEPTH = 3;
32
+ const STACK_OPACITY_BY_DEPTH = [1, 0.92, 0.78, 0.62, 0.38, 0.16, 0];
33
+ const STACK_STATE_EPSILON = 1e-3;
34
+ const overlayStackRegistry = /* @__PURE__ */ new Map();
35
+ const overlayStackSubscribers = /* @__PURE__ */ new Set();
36
+ let overlayStackVersion = 0;
37
+ let overlayInstanceSeed = 0;
38
+ let overlayOpenSequenceSeed = 0;
39
+ let sharedGlobalMaskElement = null;
40
+ function canUseDom() {
41
+ return typeof window !== "undefined" && typeof document !== "undefined";
42
+ }
43
+ function resolveVisibleStackBounds(entries) {
44
+ if (entries.length === 0)
45
+ return null;
46
+ let minZIndex = entries[0].zIndex;
47
+ for (const entry of entries) {
48
+ if (entry.zIndex < minZIndex)
49
+ minZIndex = entry.zIndex;
50
+ }
51
+ return {
52
+ minZIndex,
53
+ topEntry: entries[entries.length - 1]
54
+ };
55
+ }
56
+ function removeSharedGlobalMaskElement() {
57
+ if (!sharedGlobalMaskElement)
58
+ return;
59
+ sharedGlobalMaskElement.remove();
60
+ sharedGlobalMaskElement = null;
61
+ }
62
+ function ensureSharedGlobalMaskElement() {
63
+ if (!canUseDom())
64
+ return null;
65
+ if (!sharedGlobalMaskElement) {
66
+ sharedGlobalMaskElement = document.createElement("div");
67
+ sharedGlobalMaskElement.className = "TxFlipOverlay-GlobalMask";
68
+ document.body.appendChild(sharedGlobalMaskElement);
69
+ }
70
+ return sharedGlobalMaskElement;
71
+ }
72
+ function applySharedGlobalMaskState() {
73
+ if (!canUseDom())
74
+ return;
75
+ const visibleEntries = getVisibleOverlayStackEntries();
76
+ const bounds = resolveVisibleStackBounds(visibleEntries);
77
+ if (!bounds || visibleEntries.length <= 1 || !bounds.topEntry.globalMask) {
78
+ removeSharedGlobalMaskElement();
79
+ return;
80
+ }
81
+ const maskElement = ensureSharedGlobalMaskElement();
82
+ if (!maskElement)
83
+ return;
84
+ maskElement.className = "TxFlipOverlay-GlobalMask";
85
+ maskElement.style.zIndex = String(Math.max(0, bounds.minZIndex - 1));
86
+ maskElement.style.opacity = "1";
87
+ }
88
+ function markOverlayStackChanged() {
89
+ overlayStackVersion += 1;
90
+ applySharedGlobalMaskState();
91
+ overlayStackSubscribers.forEach((listener) => {
92
+ try {
93
+ listener();
94
+ } catch {
95
+ }
96
+ });
97
+ }
98
+ function subscribeOverlayStackChanged(listener) {
99
+ overlayStackSubscribers.add(listener);
100
+ return () => overlayStackSubscribers.delete(listener);
101
+ }
102
+ function getOverlayStackVersion() {
103
+ return overlayStackVersion;
104
+ }
105
+ function getVisibleOverlayStackEntries() {
106
+ return Array.from(overlayStackRegistry.values()).filter((entry) => entry.visible).sort((a, b) => {
107
+ if (a.zIndex !== b.zIndex)
108
+ return a.zIndex - b.zIndex;
109
+ return a.openSequence - b.openSequence;
110
+ });
111
+ }
112
+ function isOverlaySizeMatched(current, above) {
113
+ const widthDelta = Math.abs(current.width - above.width);
114
+ const heightDelta = Math.abs(current.height - above.height);
115
+ const widthTolerance = Math.max(STACK_MATCH_PIXEL_THRESHOLD, above.width * STACK_MATCH_RATIO_THRESHOLD);
116
+ const heightTolerance = Math.max(STACK_MATCH_PIXEL_THRESHOLD, above.height * STACK_MATCH_RATIO_THRESHOLD);
117
+ return widthDelta <= widthTolerance && heightDelta <= heightTolerance;
118
+ }
119
+ function resolveStackOpacity(depth) {
120
+ if (depth < 0)
121
+ return 1;
122
+ if (depth >= STACK_OPACITY_BY_DEPTH.length)
123
+ return 0;
124
+ return STACK_OPACITY_BY_DEPTH[depth] ?? 0;
125
+ }
126
+ function nextOverlayInstanceId() {
127
+ overlayInstanceSeed += 1;
128
+ return `tx-flip-overlay-${overlayInstanceSeed}`;
129
+ }
130
+ function nextOverlayOpenSequence() {
131
+ overlayOpenSequenceSeed += 1;
132
+ return overlayOpenSequenceSeed;
133
+ }
134
+ const _sfc_main = /* @__PURE__ */ defineComponent({
135
+ ...{
136
+ name: "TxFlipOverlay"
137
+ },
138
+ __name: "TxFlipOverlay",
139
+ props: {
140
+ modelValue: { type: Boolean, default: false },
141
+ source: { default: null },
142
+ sourceRadius: { default: null },
143
+ duration: { default: 480 },
144
+ rotateX: { default: 6 },
145
+ rotateY: { default: 8 },
146
+ tiltRange: { default: 2 },
147
+ perspective: { default: 1200 },
148
+ speedBoost: { default: 1.12 },
149
+ speedBoostAt: { default: 0.7 },
150
+ easeOut: { default: "back.out(1.25)" },
151
+ easeIn: { default: "back.in(1)" },
152
+ maskClosable: { type: Boolean, default: true },
153
+ preventAccidentalClose: { type: Boolean, default: false },
154
+ transitionName: { default: "TxFlipOverlay-Mask" },
155
+ maskClass: { default: "" },
156
+ cardClass: { default: "" },
157
+ cardStyle: {},
158
+ globalMask: { type: Boolean, default: true },
159
+ border: { default: "solid" },
160
+ surface: { default: "mask" },
161
+ surfaceColor: { default: "" },
162
+ surfaceOpacity: { default: 0.96 },
163
+ header: { type: Boolean, default: true },
164
+ headerTitle: { default: "" },
165
+ headerDesc: { default: "" },
166
+ closable: { type: Boolean, default: true },
167
+ closeAriaLabel: { default: "Close" },
168
+ scrollable: { type: Boolean, default: true },
169
+ randomTilt: { type: Boolean, default: true },
170
+ expanded: { type: Boolean },
171
+ animating: { type: Boolean }
172
+ },
173
+ emits: ["update:modelValue", "update:expanded", "update:animating", "open", "opened", "close", "closed"],
174
+ setup(__props, { expose: __expose, emit: __emit }) {
175
+ const props = __props;
176
+ const emit = __emit;
177
+ const slots = useSlots();
178
+ const instanceId = nextOverlayInstanceId();
179
+ const cardRef = ref(null);
180
+ const visible = ref(Boolean(props.modelValue));
181
+ const expanded = ref(typeof props.expanded === "boolean" ? props.expanded : false);
182
+ const animating = ref(typeof props.animating === "boolean" ? props.animating : false);
183
+ const zIndex = ref(getZIndex());
184
+ const sourceRect = ref(null);
185
+ const sourceRadius = ref(null);
186
+ const tilt = ref({ x: 0, y: 0 });
187
+ const blockedCloseWarning = ref(false);
188
+ const openSequence = ref(0);
189
+ const localStackVersion = ref(getOverlayStackVersion());
190
+ const unsubscribeStackChange = hasWindow() ? subscribeOverlayStackChanged(() => {
191
+ localStackVersion.value += 1;
192
+ }) : () => {
193
+ };
194
+ let tween = null;
195
+ let stackTween = null;
196
+ let appliedStackState = null;
197
+ let runId = 0;
198
+ let blockedCloseTimer = null;
199
+ let pageExitGuardBound = false;
200
+ const stackMeta = computed(() => {
201
+ localStackVersion.value;
202
+ if (!visible.value) {
203
+ return {
204
+ depth: 0,
205
+ stackSize: 0,
206
+ isMaskOwner: true,
207
+ isLayered: false,
208
+ isDepthHidden: false,
209
+ translateY: 0,
210
+ scale: 1,
211
+ opacity: 1
212
+ };
213
+ }
214
+ const stackEntries = getVisibleOverlayStackEntries();
215
+ const selfIndex = stackEntries.findIndex((entry) => entry.id === instanceId);
216
+ if (selfIndex < 0) {
217
+ return {
218
+ depth: 0,
219
+ stackSize: stackEntries.length,
220
+ isMaskOwner: true,
221
+ isLayered: false,
222
+ isDepthHidden: false,
223
+ translateY: 0,
224
+ scale: 1,
225
+ opacity: 1
226
+ };
227
+ }
228
+ const topIndex = stackEntries.length - 1;
229
+ const depth = topIndex - selfIndex;
230
+ const selfEntry = stackEntries[selfIndex];
231
+ const aboveEntry = depth > 0 ? stackEntries[selfIndex + 1] : void 0;
232
+ let isLayered = false;
233
+ if (selfEntry && aboveEntry) {
234
+ const isSizeReady = selfEntry.width > 0 && selfEntry.height > 0 && aboveEntry.width > 0 && aboveEntry.height > 0;
235
+ isLayered = !isSizeReady || isOverlaySizeMatched(selfEntry, aboveEntry);
236
+ }
237
+ const layeredDepth = isLayered ? Math.min(depth, STACK_LAYER_MAX_DEPTH) : 0;
238
+ const scale = Math.max(0, 1 - STACK_LAYER_SCALE_STEP * layeredDepth);
239
+ const opacity = resolveStackOpacity(depth);
240
+ return {
241
+ depth,
242
+ stackSize: stackEntries.length,
243
+ isMaskOwner: depth === 0,
244
+ isLayered,
245
+ isDepthHidden: opacity <= 0,
246
+ translateY: STACK_LAYER_OFFSET_Y * layeredDepth,
247
+ scale,
248
+ opacity
249
+ };
250
+ });
251
+ const maskClassName = computed(() => {
252
+ const classes = ["TxFlipOverlay-Mask"];
253
+ if (props.maskClass) {
254
+ const customMaskClasses = props.maskClass.split(/\s+/).map((token) => token.trim()).filter(Boolean);
255
+ classes.push(...customMaskClasses);
256
+ }
257
+ if (!stackMeta.value.isMaskOwner)
258
+ classes.push("is-stack-underlay-mask");
259
+ if (blockedCloseWarning.value)
260
+ classes.push("is-close-guard-warning");
261
+ if (props.maskClass)
262
+ classes.push(props.maskClass);
263
+ return classes;
264
+ });
265
+ const cardClassName = computed(() => {
266
+ let borderStyle = "solid";
267
+ if (props.border === "none") {
268
+ borderStyle = "none";
269
+ } else if (props.border === "dashed" || props.border === "dash") {
270
+ borderStyle = "dashed";
271
+ }
272
+ const classes = [
273
+ "TxFlipOverlay-Card",
274
+ `is-border-${borderStyle}`,
275
+ {
276
+ "is-expanded": expanded.value,
277
+ "is-close-guard-warning": blockedCloseWarning.value,
278
+ "is-stack-layered": stackMeta.value.isLayered,
279
+ "is-stack-depth-hidden": stackMeta.value.isDepthHidden
280
+ }
281
+ ];
282
+ if (props.cardClass)
283
+ classes.push(props.cardClass);
284
+ return classes;
285
+ });
286
+ const bodyClassName = computed(() => {
287
+ const classes = [
288
+ "TxFlipOverlay-Body",
289
+ "TxFlipOverlay-Content",
290
+ { "is-scrollable": props.scrollable }
291
+ ];
292
+ return classes;
293
+ });
294
+ const shellClassName = computed(() => {
295
+ const classes = [
296
+ "TxFlipOverlay-Shell",
297
+ { "is-close-guard-focus": blockedCloseWarning.value }
298
+ ];
299
+ return classes;
300
+ });
301
+ const maskStyle = computed(() => {
302
+ const style = {
303
+ zIndex: zIndex.value,
304
+ pointerEvents: stackMeta.value.isMaskOwner ? "auto" : "none"
305
+ };
306
+ const usesSharedStackMask = props.globalMask && stackMeta.value.stackSize > 1;
307
+ if (usesSharedStackMask || !stackMeta.value.isMaskOwner) {
308
+ style.background = "transparent";
309
+ style.backdropFilter = "none";
310
+ style.WebkitBackdropFilter = "none";
311
+ }
312
+ return style;
313
+ });
314
+ const surfaceMode = computed(() => {
315
+ if (props.surface === "pure" || props.surface === "mask" || props.surface === "blur" || props.surface === "glass" || props.surface === "refraction") {
316
+ return props.surface;
317
+ }
318
+ return "mask";
319
+ });
320
+ const surfaceColor = computed(() => {
321
+ if (props.surfaceColor)
322
+ return props.surfaceColor;
323
+ return "var(--tx-bg-color-overlay, var(--tx-card-fake-background, #fff))";
324
+ });
325
+ const surfaceOpacity = computed(() => {
326
+ const value = typeof props.surfaceOpacity === "number" ? props.surfaceOpacity : 0.96;
327
+ if (!Number.isFinite(value))
328
+ return 0.96;
329
+ return Math.max(0, Math.min(1, value));
330
+ });
331
+ const bodyLockCountKey = "txFlipOverlayLockCount";
332
+ const bodyLockOverflowKey = "txFlipOverlayLockOverflow";
333
+ const bodyLockPaddingKey = "txFlipOverlayLockPaddingRight";
334
+ const transitionName = computed(() => props.transitionName || "TxFlipOverlay-Mask");
335
+ const useMaskCssTransition = computed(() => {
336
+ if (!visible.value)
337
+ return true;
338
+ if (stackMeta.value.isMaskOwner && stackMeta.value.stackSize > 1)
339
+ return false;
340
+ return true;
341
+ });
342
+ const hasCustomHeaderSlot = computed(() => Boolean(slots.header));
343
+ const hasHeaderDisplaySlot = computed(() => Boolean(slots["header-display"]));
344
+ const hasHeaderActionsSlot = computed(() => Boolean(slots["header-actions"]));
345
+ const hasHeaderContent = computed(() => Boolean(props.headerTitle || props.headerDesc));
346
+ const shouldRenderBuiltInHeader = computed(() => {
347
+ if (hasCustomHeaderSlot.value || !props.header)
348
+ return false;
349
+ if (props.closable)
350
+ return true;
351
+ return hasHeaderDisplaySlot.value || hasHeaderActionsSlot.value || hasHeaderContent.value;
352
+ });
353
+ function syncExpanded(value) {
354
+ if (expanded.value === value)
355
+ return;
356
+ expanded.value = value;
357
+ }
358
+ function syncAnimating(value) {
359
+ if (animating.value === value)
360
+ return;
361
+ animating.value = value;
362
+ }
363
+ function clearBlockedCloseWarning() {
364
+ if (blockedCloseTimer) {
365
+ clearTimeout(blockedCloseTimer);
366
+ blockedCloseTimer = null;
367
+ }
368
+ blockedCloseWarning.value = false;
369
+ }
370
+ function triggerBlockedCloseWarning() {
371
+ if (!visible.value || !props.preventAccidentalClose)
372
+ return;
373
+ if (blockedCloseTimer) {
374
+ clearTimeout(blockedCloseTimer);
375
+ blockedCloseTimer = null;
376
+ }
377
+ blockedCloseWarning.value = false;
378
+ if (hasWindow())
379
+ void cardRef.value?.offsetWidth;
380
+ blockedCloseWarning.value = true;
381
+ blockedCloseTimer = setTimeout(() => {
382
+ blockedCloseWarning.value = false;
383
+ blockedCloseTimer = null;
384
+ }, 720);
385
+ }
386
+ watch(
387
+ () => props.expanded,
388
+ (value) => {
389
+ if (typeof value === "boolean")
390
+ syncExpanded(value);
391
+ }
392
+ );
393
+ watch(
394
+ () => props.animating,
395
+ (value) => {
396
+ if (typeof value === "boolean")
397
+ syncAnimating(value);
398
+ }
399
+ );
400
+ watch(expanded, (value) => emit("update:expanded", value));
401
+ watch(animating, (value) => emit("update:animating", value));
402
+ const bodyScrollLocked = ref(false);
403
+ function clearTween() {
404
+ if (!tween)
405
+ return;
406
+ tween.kill();
407
+ tween = null;
408
+ }
409
+ function clearStackTween() {
410
+ if (!stackTween)
411
+ return;
412
+ stackTween.kill();
413
+ stackTween = null;
414
+ }
415
+ function isSameStackState(current, next) {
416
+ if (!current)
417
+ return false;
418
+ return Math.abs(current.y - next.y) <= STACK_STATE_EPSILON && Math.abs(current.scale - next.scale) <= STACK_STATE_EPSILON && Math.abs(current.opacity - next.opacity) <= STACK_STATE_EPSILON;
419
+ }
420
+ function resolveCardSize(card) {
421
+ if (!card)
422
+ return { width: 0, height: 0 };
423
+ const widthByOffset = card.offsetWidth || 0;
424
+ const heightByOffset = card.offsetHeight || 0;
425
+ if (widthByOffset > 0 && heightByOffset > 0) {
426
+ return {
427
+ width: widthByOffset,
428
+ height: heightByOffset
429
+ };
430
+ }
431
+ let widthByStyle = 0;
432
+ let heightByStyle = 0;
433
+ if (hasWindow()) {
434
+ const cardStyles = getComputedStyle(card);
435
+ widthByStyle = Number.parseFloat(cardStyles.width) || 0;
436
+ heightByStyle = Number.parseFloat(cardStyles.height) || 0;
437
+ }
438
+ if (widthByStyle > 0 && heightByStyle > 0) {
439
+ return {
440
+ width: widthByStyle,
441
+ height: heightByStyle
442
+ };
443
+ }
444
+ const rect = card.getBoundingClientRect();
445
+ return {
446
+ width: rect.width || 0,
447
+ height: rect.height || 0
448
+ };
449
+ }
450
+ function upsertStackEntry() {
451
+ if (!hasWindow()) {
452
+ return;
453
+ }
454
+ if (!visible.value) {
455
+ removeStackEntry();
456
+ return;
457
+ }
458
+ const size = resolveCardSize(cardRef.value);
459
+ const nextEntry = {
460
+ id: instanceId,
461
+ zIndex: zIndex.value,
462
+ openSequence: openSequence.value,
463
+ width: size.width,
464
+ height: size.height,
465
+ visible: true,
466
+ globalMask: props.globalMask,
467
+ maskClass: props.maskClass
468
+ };
469
+ const previousEntry = overlayStackRegistry.get(instanceId);
470
+ if (previousEntry && previousEntry.zIndex === nextEntry.zIndex && previousEntry.openSequence === nextEntry.openSequence && previousEntry.width === nextEntry.width && previousEntry.height === nextEntry.height && previousEntry.visible === nextEntry.visible && previousEntry.globalMask === nextEntry.globalMask && previousEntry.maskClass === nextEntry.maskClass) {
471
+ return;
472
+ }
473
+ overlayStackRegistry.set(instanceId, nextEntry);
474
+ markOverlayStackChanged();
475
+ }
476
+ function removeStackEntry() {
477
+ if (!overlayStackRegistry.has(instanceId))
478
+ return;
479
+ overlayStackRegistry.delete(instanceId);
480
+ markOverlayStackChanged();
481
+ }
482
+ function applyStackCardState(forceImmediate = false) {
483
+ const card = cardRef.value;
484
+ if (!card)
485
+ return;
486
+ if (!visible.value || !expanded.value || animating.value) {
487
+ clearStackTween();
488
+ appliedStackState = null;
489
+ return;
490
+ }
491
+ const { translateY, scale, opacity } = stackMeta.value;
492
+ const nextState = {
493
+ y: translateY,
494
+ scale,
495
+ opacity
496
+ };
497
+ if (!forceImmediate && isSameStackState(appliedStackState, nextState))
498
+ return;
499
+ clearStackTween();
500
+ if (forceImmediate || stackMeta.value.depth === 0) {
501
+ gsap.set(card, {
502
+ y: translateY,
503
+ scaleX: scale,
504
+ scaleY: scale,
505
+ opacity
506
+ });
507
+ appliedStackState = nextState;
508
+ return;
509
+ }
510
+ appliedStackState = nextState;
511
+ stackTween = gsap.to(card, {
512
+ y: translateY,
513
+ scaleX: scale,
514
+ scaleY: scale,
515
+ opacity,
516
+ duration: 0.26,
517
+ ease: "power2.out",
518
+ overwrite: "auto",
519
+ onComplete: () => {
520
+ stackTween = null;
521
+ }
522
+ });
523
+ }
524
+ function lockBodyScroll() {
525
+ if (!hasWindow())
526
+ return;
527
+ const body = window.document.body;
528
+ if (!body)
529
+ return;
530
+ const currentCount = Number.parseInt(body.dataset[bodyLockCountKey] || "0", 10);
531
+ if (currentCount === 0) {
532
+ body.dataset[bodyLockOverflowKey] = body.style.overflow || "";
533
+ body.dataset[bodyLockPaddingKey] = body.style.paddingRight || "";
534
+ const scrollbarWidth = window.innerWidth - window.document.documentElement.clientWidth;
535
+ body.style.overflow = "hidden";
536
+ if (scrollbarWidth > 0)
537
+ body.style.paddingRight = `${scrollbarWidth}px`;
538
+ }
539
+ body.dataset[bodyLockCountKey] = String(currentCount + 1);
540
+ }
541
+ function unlockBodyScroll() {
542
+ if (!hasWindow())
543
+ return;
544
+ const body = window.document.body;
545
+ if (!body)
546
+ return;
547
+ const currentCount = Number.parseInt(body.dataset[bodyLockCountKey] || "0", 10);
548
+ if (currentCount <= 0)
549
+ return;
550
+ const nextCount = currentCount - 1;
551
+ if (nextCount === 0) {
552
+ body.style.overflow = body.dataset[bodyLockOverflowKey] || "";
553
+ body.style.paddingRight = body.dataset[bodyLockPaddingKey] || "";
554
+ delete body.dataset[bodyLockCountKey];
555
+ delete body.dataset[bodyLockOverflowKey];
556
+ delete body.dataset[bodyLockPaddingKey];
557
+ return;
558
+ }
559
+ body.dataset[bodyLockCountKey] = String(nextCount);
560
+ }
561
+ function resolveSource() {
562
+ if (!hasWindow()) {
563
+ sourceRect.value = null;
564
+ sourceRadius.value = null;
565
+ return;
566
+ }
567
+ const source = props.source;
568
+ if (!source) {
569
+ sourceRect.value = null;
570
+ sourceRadius.value = props.sourceRadius ?? null;
571
+ return;
572
+ }
573
+ if (source instanceof HTMLElement) {
574
+ sourceRect.value = source.getBoundingClientRect();
575
+ sourceRadius.value = props.sourceRadius ?? getComputedStyle(source).borderRadius;
576
+ return;
577
+ }
578
+ sourceRect.value = source;
579
+ sourceRadius.value = props.sourceRadius ?? null;
580
+ }
581
+ function resolveTilt() {
582
+ if (!props.randomTilt) {
583
+ tilt.value = { x: 0, y: 0 };
584
+ return;
585
+ }
586
+ const tiltX = (Math.random() > 0.5 ? 1 : -1) * (props.rotateX + Math.random() * props.tiltRange);
587
+ const tiltY = (Math.random() > 0.5 ? 1 : -1) * (props.rotateY + Math.random() * props.tiltRange);
588
+ tilt.value = { x: tiltX, y: tiltY };
589
+ }
590
+ function applySpeedBoost() {
591
+ if (!tween)
592
+ return;
593
+ if (tween.progress() > props.speedBoostAt)
594
+ tween.timeScale(props.speedBoost);
595
+ }
596
+ function startOpenAnimation(currentRunId) {
597
+ const card = cardRef.value;
598
+ const from = sourceRect.value;
599
+ if (!card || !hasWindow()) {
600
+ syncExpanded(true);
601
+ syncAnimating(false);
602
+ emit("opened");
603
+ return;
604
+ }
605
+ if (!from) {
606
+ const visibleStackCount = getVisibleOverlayStackEntries().length;
607
+ const isStackPushOpen = visibleStackCount > 1;
608
+ if (isStackPushOpen) {
609
+ clearTween();
610
+ clearStackTween();
611
+ syncAnimating(true);
612
+ gsap.set(card, {
613
+ autoAlpha: 0,
614
+ xPercent: -50,
615
+ yPercent: -50,
616
+ x: 0,
617
+ y: 10,
618
+ scaleX: 0.985,
619
+ scaleY: 0.985
620
+ });
621
+ syncExpanded(true);
622
+ tween = gsap.to(card, {
623
+ autoAlpha: 1,
624
+ y: 0,
625
+ scaleX: 1,
626
+ scaleY: 1,
627
+ duration: 0.22,
628
+ ease: "power2.out",
629
+ overwrite: true,
630
+ onComplete: () => {
631
+ if (currentRunId !== runId)
632
+ return;
633
+ syncAnimating(false);
634
+ tween = null;
635
+ emit("opened");
636
+ }
637
+ });
638
+ return;
639
+ }
640
+ gsap.set(card, {
641
+ autoAlpha: 1,
642
+ xPercent: -50,
643
+ yPercent: -50,
644
+ x: 0,
645
+ y: 0,
646
+ scaleX: 1,
647
+ scaleY: 1
648
+ });
649
+ syncExpanded(true);
650
+ syncAnimating(false);
651
+ emit("opened");
652
+ return;
653
+ }
654
+ const fromCenterX = from.left + from.width / 2;
655
+ const fromCenterY = from.top + from.height / 2;
656
+ const viewportCenterX = window.innerWidth / 2;
657
+ const viewportCenterY = window.innerHeight / 2;
658
+ const translateX = fromCenterX - viewportCenterX;
659
+ const translateY = fromCenterY - viewportCenterY;
660
+ const to = card.getBoundingClientRect();
661
+ const scaleX = from.width / to.width;
662
+ const scaleY = from.height / to.height;
663
+ const targetRadius = getComputedStyle(card).borderRadius;
664
+ const initialRadius = sourceRadius.value || targetRadius;
665
+ const tiltValue = tilt.value;
666
+ clearTween();
667
+ clearStackTween();
668
+ syncAnimating(true);
669
+ gsap.set(card, {
670
+ xPercent: -50,
671
+ yPercent: -50,
672
+ x: translateX,
673
+ y: translateY,
674
+ scaleX,
675
+ scaleY,
676
+ rotateX: tiltValue.x,
677
+ rotateY: tiltValue.y,
678
+ transformPerspective: props.perspective,
679
+ borderRadius: initialRadius,
680
+ autoAlpha: 1
681
+ });
682
+ syncExpanded(true);
683
+ tween = gsap.to(card, {
684
+ x: 0,
685
+ y: 0,
686
+ scaleX: 1,
687
+ scaleY: 1,
688
+ rotateX: 0,
689
+ rotateY: 0,
690
+ borderRadius: targetRadius,
691
+ duration: props.duration / 1e3,
692
+ ease: props.easeOut,
693
+ overwrite: true,
694
+ onUpdate: applySpeedBoost,
695
+ onComplete: () => {
696
+ if (currentRunId !== runId)
697
+ return;
698
+ syncAnimating(false);
699
+ tween = null;
700
+ emit("opened");
701
+ }
702
+ });
703
+ tween.timeScale(1);
704
+ }
705
+ function startCloseAnimation(currentRunId) {
706
+ const card = cardRef.value;
707
+ const from = sourceRect.value;
708
+ if (!card || !hasWindow() || !from) {
709
+ visible.value = false;
710
+ syncAnimating(false);
711
+ removeStackEntry();
712
+ if (props.modelValue)
713
+ emit("update:modelValue", false);
714
+ emit("closed");
715
+ return;
716
+ }
717
+ const fromCenterX = from.left + from.width / 2;
718
+ const fromCenterY = from.top + from.height / 2;
719
+ const viewportCenterX = window.innerWidth / 2;
720
+ const viewportCenterY = window.innerHeight / 2;
721
+ const translateX = fromCenterX - viewportCenterX;
722
+ const translateY = fromCenterY - viewportCenterY;
723
+ const to = card.getBoundingClientRect();
724
+ const scaleX = from.width / to.width;
725
+ const scaleY = from.height / to.height;
726
+ const tiltValue = tilt.value;
727
+ clearTween();
728
+ clearStackTween();
729
+ syncAnimating(true);
730
+ tween = gsap.to(card, {
731
+ x: translateX,
732
+ y: translateY,
733
+ scaleX,
734
+ scaleY,
735
+ rotateX: tiltValue.x,
736
+ rotateY: tiltValue.y,
737
+ borderRadius: sourceRadius.value || getComputedStyle(card).borderRadius,
738
+ duration: props.duration / 1e3,
739
+ ease: props.easeIn,
740
+ overwrite: true,
741
+ onUpdate: applySpeedBoost,
742
+ onComplete: () => {
743
+ if (currentRunId !== runId)
744
+ return;
745
+ visible.value = false;
746
+ syncAnimating(false);
747
+ removeStackEntry();
748
+ tween = null;
749
+ emit("update:modelValue", false);
750
+ emit("closed");
751
+ }
752
+ });
753
+ tween.timeScale(1);
754
+ }
755
+ function requestOpen() {
756
+ zIndex.value = nextZIndex();
757
+ openSequence.value = nextOverlayOpenSequence();
758
+ if (!hasWindow()) {
759
+ visible.value = true;
760
+ syncExpanded(true);
761
+ emit("opened");
762
+ return;
763
+ }
764
+ visible.value = true;
765
+ upsertStackEntry();
766
+ runId += 1;
767
+ const currentRunId = runId;
768
+ resolveSource();
769
+ resolveTilt();
770
+ syncExpanded(false);
771
+ emit("open");
772
+ nextTick(() => {
773
+ if (currentRunId !== runId)
774
+ return;
775
+ upsertStackEntry();
776
+ startOpenAnimation(currentRunId);
777
+ });
778
+ }
779
+ function requestClose() {
780
+ if (!visible.value)
781
+ return;
782
+ runId += 1;
783
+ const currentRunId = runId;
784
+ syncExpanded(false);
785
+ emit("close");
786
+ nextTick(() => {
787
+ if (currentRunId !== runId)
788
+ return;
789
+ startCloseAnimation(currentRunId);
790
+ });
791
+ }
792
+ function handleMaskClick() {
793
+ if (props.preventAccidentalClose) {
794
+ triggerBlockedCloseWarning();
795
+ return;
796
+ }
797
+ if (!props.maskClosable)
798
+ return;
799
+ requestClose();
800
+ }
801
+ function handleBeforeUnload(event) {
802
+ if (!visible.value || !props.preventAccidentalClose)
803
+ return;
804
+ triggerBlockedCloseWarning();
805
+ event.preventDefault();
806
+ event.returnValue = "";
807
+ }
808
+ function bindPageExitGuard() {
809
+ if (!hasWindow() || pageExitGuardBound)
810
+ return;
811
+ window.addEventListener("beforeunload", handleBeforeUnload);
812
+ pageExitGuardBound = true;
813
+ }
814
+ function unbindPageExitGuard() {
815
+ if (!hasWindow() || !pageExitGuardBound)
816
+ return;
817
+ window.removeEventListener("beforeunload", handleBeforeUnload);
818
+ pageExitGuardBound = false;
819
+ }
820
+ watch(
821
+ () => props.modelValue,
822
+ (value) => {
823
+ if (value) {
824
+ requestOpen();
825
+ } else if (visible.value) {
826
+ requestClose();
827
+ }
828
+ },
829
+ { immediate: true }
830
+ );
831
+ watch(
832
+ () => [
833
+ visible.value,
834
+ expanded.value,
835
+ animating.value,
836
+ zIndex.value,
837
+ openSequence.value,
838
+ props.globalMask,
839
+ props.maskClass,
840
+ localStackVersion.value
841
+ ],
842
+ () => {
843
+ upsertStackEntry();
844
+ applyStackCardState();
845
+ },
846
+ { immediate: true, flush: "post" }
847
+ );
848
+ watch(
849
+ cardRef,
850
+ () => {
851
+ upsertStackEntry();
852
+ applyStackCardState(true);
853
+ },
854
+ { flush: "post" }
855
+ );
856
+ watch(
857
+ visible,
858
+ (value) => {
859
+ if (value && !bodyScrollLocked.value) {
860
+ lockBodyScroll();
861
+ bodyScrollLocked.value = true;
862
+ return;
863
+ }
864
+ if (!value && bodyScrollLocked.value) {
865
+ unlockBodyScroll();
866
+ bodyScrollLocked.value = false;
867
+ }
868
+ },
869
+ { immediate: true }
870
+ );
871
+ watch(
872
+ [visible, () => props.preventAccidentalClose],
873
+ ([isVisible, preventAccidentalClose]) => {
874
+ if (isVisible && preventAccidentalClose) {
875
+ bindPageExitGuard();
876
+ return;
877
+ }
878
+ unbindPageExitGuard();
879
+ if (!isVisible)
880
+ clearBlockedCloseWarning();
881
+ },
882
+ { immediate: true }
883
+ );
884
+ onBeforeUnmount(() => {
885
+ unsubscribeStackChange();
886
+ clearTween();
887
+ clearStackTween();
888
+ unbindPageExitGuard();
889
+ clearBlockedCloseWarning();
890
+ removeStackEntry();
891
+ if (bodyScrollLocked.value) {
892
+ unlockBodyScroll();
893
+ bodyScrollLocked.value = false;
894
+ }
895
+ });
896
+ __expose({
897
+ close: requestClose
898
+ });
899
+ const slotProps = computed(() => ({
900
+ close: requestClose,
901
+ expanded: expanded.value,
902
+ animating: animating.value,
903
+ closable: props.closable,
904
+ headerTitle: props.headerTitle || void 0,
905
+ headerDesc: props.headerDesc || void 0
906
+ }));
907
+ return (_ctx, _cache) => {
908
+ return openBlock(), createBlock(Transition, {
909
+ name: transitionName.value,
910
+ css: useMaskCssTransition.value
911
+ }, {
912
+ default: withCtx(() => [
913
+ visible.value ? (openBlock(), createElementBlock("div", {
914
+ key: 0,
915
+ class: normalizeClass(maskClassName.value),
916
+ style: normalizeStyle(maskStyle.value),
917
+ onClick: handleMaskClick
918
+ }, [
919
+ props.globalMask && stackMeta.value.isMaskOwner && stackMeta.value.stackSize <= 1 ? (openBlock(), createElementBlock("div", _hoisted_1)) : createCommentVNode("", true),
920
+ createElementVNode("div", {
921
+ ref_key: "cardRef",
922
+ ref: cardRef,
923
+ class: normalizeClass(cardClassName.value),
924
+ style: normalizeStyle(props.cardStyle),
925
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {
926
+ }, ["stop"]))
927
+ }, [
928
+ createVNode(_sfc_main$1, {
929
+ class: "TxFlipOverlay-Surface",
930
+ preset: "card",
931
+ fake: "",
932
+ mode: surfaceMode.value,
933
+ color: surfaceColor.value,
934
+ opacity: surfaceOpacity.value,
935
+ moving: animating.value
936
+ }, null, 8, ["mode", "color", "opacity", "moving"]),
937
+ createElementVNode("div", {
938
+ class: normalizeClass(shellClassName.value)
939
+ }, [
940
+ hasCustomHeaderSlot.value ? renderSlot(_ctx.$slots, "header", normalizeProps(mergeProps({ key: 0 }, slotProps.value))) : shouldRenderBuiltInHeader.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
941
+ createElementVNode("div", _hoisted_3, [
942
+ renderSlot(_ctx.$slots, "header-display", normalizeProps(guardReactiveProps(slotProps.value)), () => [
943
+ props.headerTitle ? (openBlock(), createElementBlock("p", _hoisted_4, toDisplayString(props.headerTitle), 1)) : createCommentVNode("", true),
944
+ props.headerDesc ? (openBlock(), createElementBlock("p", _hoisted_5, toDisplayString(props.headerDesc), 1)) : createCommentVNode("", true)
945
+ ])
946
+ ]),
947
+ createElementVNode("div", _hoisted_6, [
948
+ renderSlot(_ctx.$slots, "header-actions", normalizeProps(guardReactiveProps(slotProps.value))),
949
+ props.closable ? renderSlot(_ctx.$slots, "header-close", normalizeProps(mergeProps({ key: 0 }, slotProps.value)), () => [
950
+ createVNode(_sfc_main$2, {
951
+ circle: "",
952
+ class: "TxFlipOverlay-Close",
953
+ "aria-label": props.closeAriaLabel,
954
+ onClick: requestClose
955
+ }, {
956
+ default: withCtx(() => [..._cache[1] || (_cache[1] = [
957
+ createElementVNode("span", {
958
+ class: "i-carbon-close w-4 h-4 text-lg inline-flex",
959
+ "aria-hidden": "true"
960
+ }, null, -1)
961
+ ])]),
962
+ _: 1
963
+ }, 8, ["aria-label"])
964
+ ]) : createCommentVNode("", true)
965
+ ])
966
+ ])) : createCommentVNode("", true),
967
+ createElementVNode("div", {
968
+ class: normalizeClass(bodyClassName.value)
969
+ }, [
970
+ renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))
971
+ ], 2)
972
+ ], 2)
973
+ ], 6)
974
+ ], 6)) : createCommentVNode("", true)
975
+ ]),
976
+ _: 3
977
+ }, 8, ["name", "css"]);
978
+ };
979
+ }
980
+ });
981
+
982
+ export { _sfc_main as default };