@mhmo91/schmancy 0.5.35 → 0.5.36

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 (383) hide show
  1. package/ai/content-drawer.md +114 -140
  2. package/ai/navigation-bar.md +30 -4
  3. package/ai/navigation-rail.md +72 -0
  4. package/ai/theme.md +218 -789
  5. package/dist/ai/content-drawer.md +114 -140
  6. package/dist/ai/navigation-bar.md +30 -4
  7. package/dist/ai/navigation-rail.md +72 -0
  8. package/dist/ai/theme.md +218 -789
  9. package/dist/{animated-text-COvhr8E3.js → animated-text-BEAHZetl.js} +4 -3
  10. package/dist/{animated-text-COvhr8E3.js.map → animated-text-BEAHZetl.js.map} +1 -1
  11. package/dist/{animated-text-BZUrBdvN.cjs → animated-text-ChV1GUee.cjs} +2 -2
  12. package/dist/{animated-text-BZUrBdvN.cjs.map → animated-text-ChV1GUee.cjs.map} +1 -1
  13. package/dist/animated-text.cjs +1 -1
  14. package/dist/animated-text.js +1 -1
  15. package/dist/area.cjs +1 -1
  16. package/dist/{area.component-BHtBHWVt.js → area.component-R4KQInpP.js} +4 -3
  17. package/dist/{area.component-BHtBHWVt.js.map → area.component-R4KQInpP.js.map} +1 -1
  18. package/dist/area.component-cxxQIhCN.cjs +12 -0
  19. package/dist/{area.component-Ch2Eaa4i.cjs.map → area.component-cxxQIhCN.cjs.map} +1 -1
  20. package/dist/area.js +1 -1
  21. package/dist/{autocomplete-CenwFcT1.cjs → autocomplete-Cq_NzrBX.cjs} +2 -2
  22. package/dist/{autocomplete-CenwFcT1.cjs.map → autocomplete-Cq_NzrBX.cjs.map} +1 -1
  23. package/dist/{autocomplete-9RkU9LmA.js → autocomplete-DKYBmt2q.js} +18 -18
  24. package/dist/{autocomplete-9RkU9LmA.js.map → autocomplete-DKYBmt2q.js.map} +1 -1
  25. package/dist/autocomplete.cjs +1 -1
  26. package/dist/autocomplete.js +1 -1
  27. package/dist/{avatar-CjjwZDsw.js → avatar-DJ7qYc6-.js} +144 -134
  28. package/dist/avatar-DJ7qYc6-.js.map +1 -0
  29. package/dist/avatar-DbUCDe1w.cjs +306 -0
  30. package/dist/avatar-DbUCDe1w.cjs.map +1 -0
  31. package/dist/badge.cjs +1 -1
  32. package/dist/badge.js +1 -1
  33. package/dist/boat-BBFE1yJY.js +276 -0
  34. package/dist/boat-BBFE1yJY.js.map +1 -0
  35. package/dist/boat-BSYtwy1W.cjs +78 -0
  36. package/dist/boat-BSYtwy1W.cjs.map +1 -0
  37. package/dist/boat.cjs +1 -1
  38. package/dist/boat.js +1 -1
  39. package/dist/busy.cjs +1 -1
  40. package/dist/busy.js +1 -1
  41. package/dist/button.cjs +1 -1
  42. package/dist/button.js +1 -1
  43. package/dist/card.cjs +1 -1
  44. package/dist/card.js +1 -1
  45. package/dist/{checkbox-8djp_8NK.cjs → checkbox-BBJqucMb.cjs} +2 -2
  46. package/dist/{checkbox-8djp_8NK.cjs.map → checkbox-BBJqucMb.cjs.map} +1 -1
  47. package/dist/{checkbox-D6-WQeEk.js → checkbox-geD1IIHh.js} +3 -2
  48. package/dist/{checkbox-D6-WQeEk.js.map → checkbox-geD1IIHh.js.map} +1 -1
  49. package/dist/checkbox.cjs +1 -1
  50. package/dist/checkbox.js +1 -1
  51. package/dist/chips.cjs +1 -1
  52. package/dist/chips.js +2 -2
  53. package/dist/code-highlight.cjs +1 -1
  54. package/dist/code-highlight.js +1 -1
  55. package/dist/{code-preview-BFoEmN8y.cjs → code-preview-CR3U6wXD.cjs} +5 -5
  56. package/dist/{code-preview-BFoEmN8y.cjs.map → code-preview-CR3U6wXD.cjs.map} +1 -1
  57. package/dist/{code-preview-Z02-2suM.js → code-preview-D2ZpTZ7C.js} +8 -8
  58. package/dist/{code-preview-Z02-2suM.js.map → code-preview-D2ZpTZ7C.js.map} +1 -1
  59. package/dist/components.cjs +1 -1
  60. package/dist/components.js +1 -1
  61. package/dist/content-drawer.cjs +1 -1
  62. package/dist/content-drawer.js +1 -1
  63. package/dist/context-create-CA907mdD.cjs +2 -0
  64. package/dist/context-create-CA907mdD.cjs.map +1 -0
  65. package/dist/{context-object-BE1o2XB3.js → context-create-DCiujzV2.js} +262 -212
  66. package/dist/context-create-DCiujzV2.js.map +1 -0
  67. package/dist/{date-range-DoCtnpW6.cjs → date-range-DkSLcajW.cjs} +2 -2
  68. package/dist/{date-range-DoCtnpW6.cjs.map → date-range-DkSLcajW.cjs.map} +1 -1
  69. package/dist/{date-range-kFnTrnHN.js → date-range-NB6Q02hz.js} +141 -140
  70. package/dist/{date-range-kFnTrnHN.js.map → date-range-NB6Q02hz.js.map} +1 -1
  71. package/dist/date-range-inline-C8InUZoD.cjs +44 -0
  72. package/dist/{date-range-inline-DNr7C5X-.cjs.map → date-range-inline-C8InUZoD.cjs.map} +1 -1
  73. package/dist/{date-range-inline-BXeX6T7R.js → date-range-inline-DXBR0Ocx.js} +8 -7
  74. package/dist/{date-range-inline-BXeX6T7R.js.map → date-range-inline-DXBR0Ocx.js.map} +1 -1
  75. package/dist/date-range-inline.cjs +1 -1
  76. package/dist/date-range-inline.js +1 -1
  77. package/dist/date-range.cjs +1 -1
  78. package/dist/date-range.js +1 -1
  79. package/dist/{delay-CrdOikhP.cjs → delay-B4IPKZEn.cjs} +2 -2
  80. package/dist/{delay-CrdOikhP.cjs.map → delay-B4IPKZEn.cjs.map} +1 -1
  81. package/dist/{delay-Cz-9rZxi.js → delay-DsOC-uuq.js} +2 -2
  82. package/dist/{delay-Cz-9rZxi.js.map → delay-DsOC-uuq.js.map} +1 -1
  83. package/dist/delay.cjs +1 -1
  84. package/dist/delay.js +1 -1
  85. package/dist/{details-CsqhGMjL.cjs → details-7pcQWJF9.cjs} +2 -2
  86. package/dist/{details-CsqhGMjL.cjs.map → details-7pcQWJF9.cjs.map} +1 -1
  87. package/dist/{details-DeBtsJlp.js → details-D6Vq36lN.js} +3 -2
  88. package/dist/{details-DeBtsJlp.js.map → details-D6Vq36lN.js.map} +1 -1
  89. package/dist/details.cjs +1 -1
  90. package/dist/details.js +1 -1
  91. package/dist/{dialog-content-BzSQoM2J.cjs → dialog-content-BC--KBf7.cjs} +2 -2
  92. package/dist/{dialog-content-BzSQoM2J.cjs.map → dialog-content-BC--KBf7.cjs.map} +1 -1
  93. package/dist/{dialog-content-DTKdAF_l.js → dialog-content-XoKxxGTv.js} +4 -4
  94. package/dist/{dialog-content-DTKdAF_l.js.map → dialog-content-XoKxxGTv.js.map} +1 -1
  95. package/dist/dialog.cjs +1 -1
  96. package/dist/dialog.js +1 -1
  97. package/dist/discovery.cjs +2 -0
  98. package/dist/discovery.cjs.map +1 -0
  99. package/dist/discovery.js +6 -0
  100. package/dist/discovery.js.map +1 -0
  101. package/dist/discovery.service-BbYjU5x8.js +21 -0
  102. package/dist/discovery.service-BbYjU5x8.js.map +1 -0
  103. package/dist/discovery.service-BpGCuXPd.cjs +2 -0
  104. package/dist/discovery.service-BpGCuXPd.cjs.map +1 -0
  105. package/dist/divider-55yUklFI.cjs +2 -0
  106. package/dist/{divider-CNxOc8ep.cjs.map → divider-55yUklFI.cjs.map} +1 -1
  107. package/dist/{divider-7iyyEd8k.js → divider-JaB5FtmR.js} +4 -3
  108. package/dist/{divider-7iyyEd8k.js.map → divider-JaB5FtmR.js.map} +1 -1
  109. package/dist/divider.cjs +1 -1
  110. package/dist/divider.js +1 -1
  111. package/dist/{dropdown-content-De0OkNoq.cjs → dropdown-content-C2nxdAFA.cjs} +2 -2
  112. package/dist/{dropdown-content-De0OkNoq.cjs.map → dropdown-content-C2nxdAFA.cjs.map} +1 -1
  113. package/dist/{dropdown-content-_GMpqsNq.js → dropdown-content-Qzt-B1FB.js} +4 -3
  114. package/dist/{dropdown-content-_GMpqsNq.js.map → dropdown-content-Qzt-B1FB.js.map} +1 -1
  115. package/dist/dropdown.cjs +1 -1
  116. package/dist/dropdown.js +1 -1
  117. package/dist/{email-recipients-DS01C3V3.cjs → email-recipients-7reIxhmF.cjs} +2 -2
  118. package/dist/{email-recipients-DS01C3V3.cjs.map → email-recipients-7reIxhmF.cjs.map} +1 -1
  119. package/dist/{email-recipients-CPZlUiRR.js → email-recipients-C3TfQU2c.js} +6 -5
  120. package/dist/{email-recipients-CPZlUiRR.js.map → email-recipients-C3TfQU2c.js.map} +1 -1
  121. package/dist/extra.cjs +1 -1
  122. package/dist/extra.js +1 -1
  123. package/dist/{flex-CHf9Gc5V.cjs → flex-1y7FNRpS.cjs} +2 -2
  124. package/dist/{flex-CHf9Gc5V.cjs.map → flex-1y7FNRpS.cjs.map} +1 -1
  125. package/dist/{flex-BeSoRNTu.js → flex-DauT7n0E.js} +3 -2
  126. package/dist/{flex-BeSoRNTu.js.map → flex-DauT7n0E.js.map} +1 -1
  127. package/dist/{form-DNeKagke.js → form-DqA7DfNR.js} +3 -2
  128. package/dist/{form-DNeKagke.js.map → form-DqA7DfNR.js.map} +1 -1
  129. package/dist/form-Xg8jZsBF.cjs +2 -0
  130. package/dist/{form-DzDksPgv.cjs.map → form-Xg8jZsBF.cjs.map} +1 -1
  131. package/dist/form.cjs +1 -1
  132. package/dist/form.js +1 -1
  133. package/dist/{formField.mixin-D5YAYIS1.cjs → formField.mixin-BnSYnYXQ.cjs} +2 -2
  134. package/dist/{formField.mixin-D5YAYIS1.cjs.map → formField.mixin-BnSYnYXQ.cjs.map} +1 -1
  135. package/dist/{formField.mixin-BNj75WQ4.js → formField.mixin-YvrrvL_A.js} +2 -2
  136. package/dist/{formField.mixin-BNj75WQ4.js.map → formField.mixin-YvrrvL_A.js.map} +1 -1
  137. package/dist/{icon-DebIySqv.cjs → icon-BFYUD00J.cjs} +3 -3
  138. package/dist/{icon-DebIySqv.cjs.map → icon-BFYUD00J.cjs.map} +1 -1
  139. package/dist/{icon-CCMpTJTp.js → icon-BtdeB2JT.js} +9 -9
  140. package/dist/{icon-CCMpTJTp.js.map → icon-BtdeB2JT.js.map} +1 -1
  141. package/dist/{icon-button-DwnnW2oj.cjs → icon-button-B-uxvO86.cjs} +2 -2
  142. package/dist/{icon-button-DwnnW2oj.cjs.map → icon-button-B-uxvO86.cjs.map} +1 -1
  143. package/dist/{icon-button-D6DH52j4.js → icon-button-DwL4WnDE.js} +4 -3
  144. package/dist/{icon-button-D6DH52j4.js.map → icon-button-DwL4WnDE.js.map} +1 -1
  145. package/dist/icons.cjs +1 -1
  146. package/dist/icons.js +1 -1
  147. package/dist/index.cjs +1 -1
  148. package/dist/index.js +187 -182
  149. package/dist/index.js.map +1 -1
  150. package/dist/{input-DtHPCCyd.js → input-CuOmXLVJ.js} +4 -3
  151. package/dist/{input-DtHPCCyd.js.map → input-CuOmXLVJ.js.map} +1 -1
  152. package/dist/input-PoerIsqx.cjs +51 -0
  153. package/dist/{input-C2Vz-51i.cjs.map → input-PoerIsqx.cjs.map} +1 -1
  154. package/dist/{input-chip-B7ANrtLF.cjs → input-chip-BlmZB-cO.cjs} +2 -2
  155. package/dist/{input-chip-B7ANrtLF.cjs.map → input-chip-BlmZB-cO.cjs.map} +1 -1
  156. package/dist/{input-chip-DbIvSyvP.js → input-chip-CcNElytP.js} +2 -2
  157. package/dist/{input-chip-DbIvSyvP.js.map → input-chip-CcNElytP.js.map} +1 -1
  158. package/dist/input.cjs +1 -1
  159. package/dist/input.js +1 -1
  160. package/dist/layout.cjs +1 -1
  161. package/dist/layout.js +1 -1
  162. package/dist/{list-BH8OJ3Rv.cjs → list-BJjW-iAW.cjs} +2 -2
  163. package/dist/{list-BH8OJ3Rv.cjs.map → list-BJjW-iAW.cjs.map} +1 -1
  164. package/dist/{list-BBo0--_Q.js → list-Bou3BRYQ.js} +3 -2
  165. package/dist/{list-BBo0--_Q.js.map → list-Bou3BRYQ.js.map} +1 -1
  166. package/dist/list.cjs +1 -1
  167. package/dist/list.js +1 -1
  168. package/dist/{litElement.mixin-CzF0mNQd.js → litElement.mixin-Bkdw4DeE.js} +2 -2
  169. package/dist/{litElement.mixin-CzF0mNQd.js.map → litElement.mixin-Bkdw4DeE.js.map} +1 -1
  170. package/dist/{litElement.mixin-LplXbzd8.cjs → litElement.mixin-Di-HgRnn.cjs} +2 -2
  171. package/dist/{litElement.mixin-LplXbzd8.cjs.map → litElement.mixin-Di-HgRnn.cjs.map} +1 -1
  172. package/dist/mailbox.cjs +1 -1
  173. package/dist/mailbox.js +1 -1
  174. package/dist/{map-C7lxYU4A.cjs → map-CXNKwo__.cjs} +2 -2
  175. package/dist/{map-C7lxYU4A.cjs.map → map-CXNKwo__.cjs.map} +1 -1
  176. package/dist/{map-DeiCBxMP.js → map-bUVyL7jN.js} +19 -19
  177. package/dist/{map-DeiCBxMP.js.map → map-bUVyL7jN.js.map} +1 -1
  178. package/dist/map.cjs +1 -1
  179. package/dist/map.js +1 -1
  180. package/dist/{media-CsYVcfaX.cjs → media-8D6oDv1e.cjs} +6 -6
  181. package/dist/{media-CsYVcfaX.cjs.map → media-8D6oDv1e.cjs.map} +1 -1
  182. package/dist/{media-CEnaqjig.js → media-CF1lpFAm.js} +9 -8
  183. package/dist/{media-CEnaqjig.js.map → media-CF1lpFAm.js.map} +1 -1
  184. package/dist/{menu-Boqsyfmh.cjs → menu-B8Ad1OVm.cjs} +2 -2
  185. package/dist/{menu-Boqsyfmh.cjs.map → menu-B8Ad1OVm.cjs.map} +1 -1
  186. package/dist/{menu-wtkHGlyc.js → menu-C9mJa_ck.js} +4 -3
  187. package/dist/{menu-wtkHGlyc.js.map → menu-C9mJa_ck.js.map} +1 -1
  188. package/dist/menu.cjs +1 -1
  189. package/dist/menu.js +1 -1
  190. package/dist/mixins/baseElement.ts +33 -1
  191. package/dist/nav-drawer.cjs +1 -1
  192. package/dist/nav-drawer.js +1 -1
  193. package/dist/navigation-bar.cjs +1 -1
  194. package/dist/navigation-bar.js +1 -1
  195. package/dist/{navigation-rail-6ONc-XE-.cjs → navigation-rail-CAgKSJh4.cjs} +14 -11
  196. package/dist/navigation-rail-CAgKSJh4.cjs.map +1 -0
  197. package/dist/{navigation-rail-D-lK9oVd.js → navigation-rail-Dh3B6B0L.js} +43 -31
  198. package/dist/navigation-rail-Dh3B6B0L.js.map +1 -0
  199. package/dist/navigation-rail.cjs +1 -1
  200. package/dist/navigation-rail.js +1 -1
  201. package/dist/{notification-service-ZiGUSd63.js → notification-service-IBQJTcmw.js} +7 -6
  202. package/dist/{notification-service-ZiGUSd63.js.map → notification-service-IBQJTcmw.js.map} +1 -1
  203. package/dist/{notification-service-9HXSKWcw.cjs → notification-service-L82ozhd0.cjs} +2 -2
  204. package/dist/{notification-service-9HXSKWcw.cjs.map → notification-service-L82ozhd0.cjs.map} +1 -1
  205. package/dist/notification.cjs +1 -1
  206. package/dist/notification.js +2 -2
  207. package/dist/{notify-W-NrP0cC.cjs → notify-AIKWEjDG.cjs} +2 -2
  208. package/dist/{notify-W-NrP0cC.cjs.map → notify-AIKWEjDG.cjs.map} +1 -1
  209. package/dist/{notify-DbfX6Z2P.js → notify-CtxRmxjL.js} +2 -2
  210. package/dist/{notify-DbfX6Z2P.js.map → notify-CtxRmxjL.js.map} +1 -1
  211. package/dist/{option-D2bxihLu.cjs → option-D5OW1kDk.cjs} +2 -2
  212. package/dist/{option-D2bxihLu.cjs.map → option-D5OW1kDk.cjs.map} +1 -1
  213. package/dist/{option-BFlWiCu0.js → option-DHGTgRBn.js} +11 -10
  214. package/dist/{option-BFlWiCu0.js.map → option-DHGTgRBn.js.map} +1 -1
  215. package/dist/option.cjs +1 -1
  216. package/dist/option.js +1 -1
  217. package/dist/payment-card-form-CHS_s_Fk.cjs +74 -0
  218. package/dist/{payment-card-form--v94EhJF.cjs.map → payment-card-form-CHS_s_Fk.cjs.map} +1 -1
  219. package/dist/{payment-card-form-DLRNX9NX.js → payment-card-form-wj2JWoyn.js} +4 -3
  220. package/dist/{payment-card-form-DLRNX9NX.js.map → payment-card-form-wj2JWoyn.js.map} +1 -1
  221. package/dist/{progress-CjkD8QBy.cjs → progress-CP4R_l3i.cjs} +2 -2
  222. package/dist/{progress-CjkD8QBy.cjs.map → progress-CP4R_l3i.cjs.map} +1 -1
  223. package/dist/{progress-BYohUvYO.js → progress-ZrDv_k3Z.js} +10 -9
  224. package/dist/{progress-BYohUvYO.js.map → progress-ZrDv_k3Z.js.map} +1 -1
  225. package/dist/progress.cjs +1 -1
  226. package/dist/progress.js +1 -1
  227. package/dist/{radio-button-CGmGOAil.cjs → radio-button-BXP_yPjS.cjs} +2 -2
  228. package/dist/{radio-button-CGmGOAil.cjs.map → radio-button-BXP_yPjS.cjs.map} +1 -1
  229. package/dist/{radio-button-BlxeCjdq.js → radio-button-D0pVoIe-.js} +4 -3
  230. package/dist/{radio-button-BlxeCjdq.js.map → radio-button-D0pVoIe-.js.map} +1 -1
  231. package/dist/radio-group.cjs +1 -1
  232. package/dist/radio-group.js +1 -1
  233. package/dist/{schmancy-steps-container-CydL78yk.cjs → schmancy-steps-container-BSv1aURP.cjs} +2 -2
  234. package/dist/{schmancy-steps-container-CydL78yk.cjs.map → schmancy-steps-container-BSv1aURP.cjs.map} +1 -1
  235. package/dist/{schmancy-steps-container-BtAHCm73.js → schmancy-steps-container-vjioa19k.js} +2 -2
  236. package/dist/{schmancy-steps-container-BtAHCm73.js.map → schmancy-steps-container-vjioa19k.js.map} +1 -1
  237. package/dist/{select-CrB02cIO.cjs → select-DZ-Cy-lg.cjs} +2 -2
  238. package/dist/{select-CrB02cIO.cjs.map → select-DZ-Cy-lg.cjs.map} +1 -1
  239. package/dist/{select-BiN334GN.js → select-SgSe22qC.js} +13 -13
  240. package/dist/{select-BiN334GN.js.map → select-SgSe22qC.js.map} +1 -1
  241. package/dist/select.cjs +1 -1
  242. package/dist/select.js +1 -1
  243. package/dist/selector-hook-BWMY8npH.cjs +2 -0
  244. package/dist/selector-hook-BWMY8npH.cjs.map +1 -0
  245. package/dist/selector-hook-CKeyK4K-.js +313 -0
  246. package/dist/selector-hook-CKeyK4K-.js.map +1 -0
  247. package/dist/{sheet-sgVoRMi1.cjs → sheet-CNMKrulQ.cjs} +2 -2
  248. package/dist/{sheet-sgVoRMi1.cjs.map → sheet-CNMKrulQ.cjs.map} +1 -1
  249. package/dist/{sheet-DpJv4DRi.js → sheet-CevNG0tZ.js} +4 -3
  250. package/dist/{sheet-DpJv4DRi.js.map → sheet-CevNG0tZ.js.map} +1 -1
  251. package/dist/sheet.cjs +1 -1
  252. package/dist/sheet.js +1 -1
  253. package/dist/{slider-Dd1L6oYm.cjs → slider-BSxJatG-.cjs} +4 -4
  254. package/dist/{slider-Dd1L6oYm.cjs.map → slider-BSxJatG-.cjs.map} +1 -1
  255. package/dist/{slider-D7qdxfvX.js → slider-DIRocNv8.js} +9 -9
  256. package/dist/{slider-D7qdxfvX.js.map → slider-DIRocNv8.js.map} +1 -1
  257. package/dist/slider.cjs +1 -1
  258. package/dist/slider.js +1 -1
  259. package/dist/{spinner-CaXU45TV.cjs → spinner-Cx54uto8.cjs} +2 -2
  260. package/dist/{spinner-CaXU45TV.cjs.map → spinner-Cx54uto8.cjs.map} +1 -1
  261. package/dist/{spinner-XN4W5ihQ.js → spinner-DZcG-AtO.js} +3 -2
  262. package/dist/{spinner-XN4W5ihQ.js.map → spinner-DZcG-AtO.js.map} +1 -1
  263. package/dist/steps.cjs +1 -1
  264. package/dist/steps.js +1 -1
  265. package/dist/store.cjs +1 -1
  266. package/dist/store.js +26 -26
  267. package/dist/{suggestion-chip-CdhoATv9.js → suggestion-chip-DADIje6B.js} +3 -3
  268. package/dist/{suggestion-chip-CdhoATv9.js.map → suggestion-chip-DADIje6B.js.map} +1 -1
  269. package/dist/{suggestion-chip-PI24Hc3s.cjs → suggestion-chip-ssmmc0q6.cjs} +2 -2
  270. package/dist/{suggestion-chip-PI24Hc3s.cjs.map → suggestion-chip-ssmmc0q6.cjs.map} +1 -1
  271. package/dist/{surface-CKrYJ58l.js → surface-_cS9Ehk0.js} +2 -2
  272. package/dist/{surface-CKrYJ58l.js.map → surface-_cS9Ehk0.js.map} +1 -1
  273. package/dist/{surface-Ax6I7ldp.cjs → surface-ix9qOb7a.cjs} +2 -2
  274. package/dist/{surface-Ax6I7ldp.cjs.map → surface-ix9qOb7a.cjs.map} +1 -1
  275. package/dist/surface.cjs +1 -1
  276. package/dist/surface.js +1 -1
  277. package/dist/{table-CP6_NkPm.js → table-Bi2ftsJe.js} +2 -2
  278. package/dist/{table-CP6_NkPm.js.map → table-Bi2ftsJe.js.map} +1 -1
  279. package/dist/{table-BlwUyf_4.cjs → table-DSEK3bMb.cjs} +2 -2
  280. package/dist/{table-BlwUyf_4.cjs.map → table-DSEK3bMb.cjs.map} +1 -1
  281. package/dist/table.cjs +1 -1
  282. package/dist/table.js +1 -1
  283. package/dist/{tabs-compatibility-CX0cIu_Y.cjs → tabs-compatibility-BE2Q3rig.cjs} +4 -4
  284. package/dist/{tabs-compatibility-CX0cIu_Y.cjs.map → tabs-compatibility-BE2Q3rig.cjs.map} +1 -1
  285. package/dist/{tabs-compatibility-7QKuXX4i.js → tabs-compatibility-DA3RIq35.js} +7 -6
  286. package/dist/{tabs-compatibility-7QKuXX4i.js.map → tabs-compatibility-DA3RIq35.js.map} +1 -1
  287. package/dist/tabs.cjs +1 -1
  288. package/dist/tabs.js +1 -1
  289. package/dist/tailwind.mixin-CvQn8Ynb.cjs +2 -0
  290. package/dist/tailwind.mixin-CvQn8Ynb.cjs.map +1 -0
  291. package/dist/tailwind.mixin-DGLcZhRp.js +57 -0
  292. package/dist/tailwind.mixin-DGLcZhRp.js.map +1 -0
  293. package/dist/teleport.cjs +1 -1
  294. package/dist/teleport.js +1 -1
  295. package/dist/{textarea-DHrDn-O6.js → textarea-CBb2CzKu.js} +3 -2
  296. package/dist/{textarea-DHrDn-O6.js.map → textarea-CBb2CzKu.js.map} +1 -1
  297. package/dist/textarea-ClgK_mP6.cjs +44 -0
  298. package/dist/{textarea-qLA0vP78.cjs.map → textarea-ClgK_mP6.cjs.map} +1 -1
  299. package/dist/textarea.cjs +1 -1
  300. package/dist/textarea.js +1 -1
  301. package/dist/theme-button-Dhp3ozyB.cjs +9 -0
  302. package/dist/{theme-button-D7fBEUGf.cjs.map → theme-button-Dhp3ozyB.cjs.map} +1 -1
  303. package/dist/{theme-button-BEUsbH5m.js → theme-button-Z_xWXMaf.js} +6 -5
  304. package/dist/{theme-button-BEUsbH5m.js.map → theme-button-Z_xWXMaf.js.map} +1 -1
  305. package/dist/theme-button.cjs +1 -1
  306. package/dist/theme-button.js +1 -1
  307. package/dist/theme.cjs +1 -1
  308. package/dist/{theme.component-ByGua01V.js → theme.controls-BtaZcM7z.js} +367 -238
  309. package/dist/theme.controls-BtaZcM7z.js.map +1 -0
  310. package/dist/theme.controls-C_zAMJgA.cjs +67 -0
  311. package/dist/theme.controls-C_zAMJgA.cjs.map +1 -0
  312. package/dist/theme.js +13 -11
  313. package/dist/{timezone-BpDMR26D.js → timezone-CZ0gCI2P.js} +10 -9
  314. package/dist/{timezone-BpDMR26D.js.map → timezone-CZ0gCI2P.js.map} +1 -1
  315. package/dist/{timezone-Bw4EXBt7.cjs → timezone-DucGbWcE.cjs} +2 -2
  316. package/dist/{timezone-Bw4EXBt7.cjs.map → timezone-DucGbWcE.cjs.map} +1 -1
  317. package/dist/{tooltip-Dhs4HL3A.cjs → tooltip-BSWp7Mmz.cjs} +2 -2
  318. package/dist/{tooltip-Dhs4HL3A.cjs.map → tooltip-BSWp7Mmz.cjs.map} +1 -1
  319. package/dist/{tooltip-B1jynZOH.js → tooltip-BSppSqZM.js} +2 -2
  320. package/dist/{tooltip-B1jynZOH.js.map → tooltip-BSppSqZM.js.map} +1 -1
  321. package/dist/tooltip.cjs +1 -1
  322. package/dist/tooltip.js +1 -1
  323. package/dist/{tree-D-ezei_U.cjs → tree-DL71EUih.cjs} +4 -4
  324. package/dist/{tree-D-ezei_U.cjs.map → tree-DL71EUih.cjs.map} +1 -1
  325. package/dist/{tree-BH1qCJ_U.js → tree-dEse6eMH.js} +3 -2
  326. package/dist/{tree-BH1qCJ_U.js.map → tree-dEse6eMH.js.map} +1 -1
  327. package/dist/tree.cjs +1 -1
  328. package/dist/tree.js +1 -1
  329. package/dist/typewriter-B1Au4MRO.cjs +9 -0
  330. package/dist/{typewriter-CtPh4Pyj.cjs.map → typewriter-B1Au4MRO.cjs.map} +1 -1
  331. package/dist/{typewriter-DQbpNPtY.js → typewriter-DBvUYzpl.js} +5 -4
  332. package/dist/{typewriter-DQbpNPtY.js.map → typewriter-DBvUYzpl.js.map} +1 -1
  333. package/dist/typewriter.cjs +1 -1
  334. package/dist/typewriter.js +1 -1
  335. package/dist/{typography-BrIaOYmC.cjs → typography-3gXQvLXN.cjs} +2 -2
  336. package/dist/{typography-BrIaOYmC.cjs.map → typography-3gXQvLXN.cjs.map} +1 -1
  337. package/dist/{typography-D71cmr0R.js → typography-iOtjgSkI.js} +2 -2
  338. package/dist/{typography-D71cmr0R.js.map → typography-iOtjgSkI.js.map} +1 -1
  339. package/dist/typography.cjs +1 -1
  340. package/dist/typography.js +1 -1
  341. package/package.json +1 -1
  342. package/types/mixins/baseElement.d.ts +2 -1
  343. package/types/src/boat/boat.d.ts +10 -5
  344. package/types/src/discovery/discovery.service.d.ts +17 -0
  345. package/types/src/discovery/index.d.ts +1 -0
  346. package/types/src/index.d.ts +1 -0
  347. package/types/src/navigation-bar/navigation-bar.d.ts +15 -1
  348. package/types/src/navigation-rail/navigation-rail.d.ts +13 -0
  349. package/types/src/theme/index.d.ts +1 -0
  350. package/types/src/theme/theme.controls.d.ts +27 -0
  351. package/types/src/theme/theme.service.d.ts +58 -2
  352. package/dist/area.component-Ch2Eaa4i.cjs +0 -12
  353. package/dist/avatar-CjjwZDsw.js.map +0 -1
  354. package/dist/avatar-DlhBTIc8.cjs +0 -303
  355. package/dist/avatar-DlhBTIc8.cjs.map +0 -1
  356. package/dist/boat-CUsJXaLf.js +0 -240
  357. package/dist/boat-CUsJXaLf.js.map +0 -1
  358. package/dist/boat-Dfx9-P8c.cjs +0 -83
  359. package/dist/boat-Dfx9-P8c.cjs.map +0 -1
  360. package/dist/context-object-BE1o2XB3.js.map +0 -1
  361. package/dist/context-object-DA9DM9QJ.cjs +0 -2
  362. package/dist/context-object-DA9DM9QJ.cjs.map +0 -1
  363. package/dist/date-range-inline-DNr7C5X-.cjs +0 -44
  364. package/dist/divider-CNxOc8ep.cjs +0 -2
  365. package/dist/form-DzDksPgv.cjs +0 -2
  366. package/dist/input-C2Vz-51i.cjs +0 -51
  367. package/dist/navigation-rail-6ONc-XE-.cjs.map +0 -1
  368. package/dist/navigation-rail-D-lK9oVd.js.map +0 -1
  369. package/dist/payment-card-form--v94EhJF.cjs +0 -74
  370. package/dist/selector-hook-DOsvFxG2.js +0 -364
  371. package/dist/selector-hook-DOsvFxG2.js.map +0 -1
  372. package/dist/selector-hook-DQ9zoDM4.cjs +0 -2
  373. package/dist/selector-hook-DQ9zoDM4.cjs.map +0 -1
  374. package/dist/tailwind.mixin-BjDGMGbj.js +0 -43
  375. package/dist/tailwind.mixin-BjDGMGbj.js.map +0 -1
  376. package/dist/tailwind.mixin-ClfV2_Nh.cjs +0 -2
  377. package/dist/tailwind.mixin-ClfV2_Nh.cjs.map +0 -1
  378. package/dist/textarea-qLA0vP78.cjs +0 -44
  379. package/dist/theme-button-D7fBEUGf.cjs +0 -9
  380. package/dist/theme.component-ByGua01V.js.map +0 -1
  381. package/dist/theme.component-CQ1trrZB.cjs +0 -3
  382. package/dist/theme.component-CQ1trrZB.cjs.map +0 -1
  383. package/dist/typewriter-CtPh4Pyj.cjs +0 -9
@@ -1 +0,0 @@
1
- {"version":3,"file":"boat-CUsJXaLf.js","sources":["../src/boat/boat.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { Subject, fromEvent, merge, of, EMPTY } from 'rxjs'\nimport {\n\tfilter,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n\tfinalize,\n\tcatchError,\n\tdebounceTime,\n\tscan,\n\tshareReplay,\n\tmap,\n} from 'rxjs/operators'\n\ntype BoatState = 'hidden' | 'minimized' | 'expanded'\n\n// State change event for the unified pipeline\ninterface StateChangeEvent {\n\tsource: 'internal' | 'external' | 'resize'\n\ttarget?: BoatState\n\ttype: 'state' | 'lowered' | 'resize'\n}\n\n// Position interface for drag functionality\ninterface Position {\n\tx: number\n\ty: number\n}\n\n// Saved position from localStorage\ninterface SavedPosition {\n\tx: number\n\ty: number\n\tanchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\n@customElement('schmancy-boat')\nexport default class SchmancyBoat extends TailwindElement(css`\n\t/* Performance optimization - GPU hints only */\n\t.boat-container {\n\t\twill-change: transform, border-radius, width, max-width, box-shadow;\n\t\tcontain: layout style;\n\t\ttransform: translate3d(0, 0, 0); /* Force GPU acceleration */\n\t\tbackface-visibility: hidden;\n\t\tuser-select: none; /* Prevent text selection during drag */\n\t}\n\n\t/* Dragging state styles */\n\t.boat-container.dragging {\n\t\tbox-shadow: 0 24px 48px -8px rgba(0, 0, 0, 0.2), 0 12px 24px -4px rgba(0, 0, 0, 0.12);\n\t}\n\n\t/* Drag handle hover effect */\n\t.drag-handle {\n\t\ttransition: opacity 0.2s ease;\n\t}\n\n\t.boat-header:hover .drag-handle {\n\t\topacity: 1 !important;\n\t}\n`) {\n\t// Public properties - route ALL changes through stateChange$\n\t@property({ type: String, reflect: true })\n\tget state(): BoatState {\n\t\treturn this.currentState\n\t}\n\tset state(value: BoatState) {\n\t\t// Route external state changes through the unified pipeline\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'external',\n\t\t\ttarget: value,\n\t\t\ttype: 'state',\n\t\t})\n\t}\n\n\t@property({ type: Boolean, reflect: true })\n\tget lowered(): boolean {\n\t\treturn this.isLowered\n\t}\n\tset lowered(value: boolean) {\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'external',\n\t\t\ttarget: this.currentState,\n\t\t\ttype: 'lowered',\n\t\t})\n\t\tthis.isLowered = value\n\t}\n\n\t// Single unified state change stream - ALL state changes go through this\n\tprivate stateChange$ = new Subject<StateChangeEvent>()\n\n\t// Element references\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLElement> = createRef()\n\tprivate iconRef: Ref<HTMLElement> = createRef()\n\tprivate headerRef: Ref<HTMLElement> = createRef()\n\n\t// Current animation reference\n\tprivate currentAnimation?: Animation\n\n\t// Animation configuration\n\tprivate readonly ANIMATION_CONFIG = {\n\t\tdurations: {\n\t\t\texpand: 350,\n\t\t\tminimize: 250,\n\t\t\thide: 200,\n\t\t\tcontent: 300,\n\t\t},\n\t\teasing: {\n\t\t\temphasized: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\tdecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)',\n\t\t\taccelerate: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)',\n\t\t\tstandard: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t},\n\t\tshadows: {\n\t\t\tfab: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)',\n\t\t\tfabLowered:\n\t\t\t\t'0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n\t\t\texpanded: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n\t\t},\n\t}\n\n\t// Reactive state for template\n\t@state() private currentState: BoatState = 'minimized'\n\t@state() private isContentVisible: boolean = false\n\t@state() private isAnimating: boolean = false\n\t@state() private isLowered: boolean = false\n\t@state() private isDragging: boolean = false\n\t@state() private position: Position = { x: 16, y: 16 }\n\t@state() private anchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' = 'bottom-right'\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.loadSavedPosition()\n\t\tthis.setupUnifiedPipeline()\n\t\tthis.setupDragPipeline()\n\t}\n\n\tprivate setupUnifiedPipeline() {\n\t\t// Create resize stream\n\t\tconst resize$ =\n\t\t\ttypeof window !== 'undefined'\n\t\t\t\t? fromEvent(window, 'resize').pipe(\n\t\t\t\t\t\tdebounceTime(100),\n\t\t\t\t\t\tfilter(() => this.currentState === 'expanded'),\n\t\t\t\t\t\ttap(() =>\n\t\t\t\t\t\t\tthis.stateChange$.next({\n\t\t\t\t\t\t\t\tsource: 'resize',\n\t\t\t\t\t\t\t\ttype: 'resize',\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t: EMPTY\n\n\t\t// SINGLE UNIFIED PIPELINE - All state management in ONE place\n\t\tmerge(\n\t\t\t// Initial state\n\t\t\tof({\n\t\t\t\tsource: 'internal' as const,\n\t\t\t\ttarget: 'minimized' as BoatState,\n\t\t\t\ttype: 'state' as const,\n\t\t\t}),\n\t\t\t// All state changes\n\t\t\tthis.stateChange$,\n\t\t\t// Window resize events\n\t\t\tresize$,\n\t\t)\n\t\t\t.pipe(\n\t\t\t\t// Accumulate state and handle all changes\n\t\t\t\tscan(\n\t\t\t\t\t(state, event: StateChangeEvent) => {\n\t\t\t\t\t\t// Handle different event types\n\t\t\t\t\t\tif (event.type === 'resize' && this.currentState === 'expanded') {\n\t\t\t\t\t\t\t// Just update width, no animation needed\n\t\t\t\t\t\t\tthis.updateExpandedWidth()\n\t\t\t\t\t\t\treturn { ...state, resized: true }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (event.type === 'lowered') {\n\t\t\t\t\t\t\t// Update lowered state\n\t\t\t\t\t\t\treturn { ...state, lowered: !state.lowered }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Handle state changes\n\t\t\t\t\t\tif (event.type === 'state' && event.target && event.target !== state.current) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\tprevious: state.current,\n\t\t\t\t\t\t\t\tcurrent: event.target,\n\t\t\t\t\t\t\t\tpending: true,\n\t\t\t\t\t\t\t\tsource: event.source,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn state\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrent: 'minimized' as BoatState,\n\t\t\t\t\t\tprevious: 'minimized' as BoatState,\n\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\tlowered: false,\n\t\t\t\t\t\tresized: false,\n\t\t\t\t\t\tsource: 'internal' as 'internal' | 'external' | 'resize',\n\t\t\t\t\t},\n\t\t\t\t),\n\n\t\t\t\t// Only process when there's a pending state change\n\t\t\t\ttap(state => {\n\t\t\t\t\t// Always update lowered state\n\t\t\t\t\tthis.isLowered = state.lowered\n\t\t\t\t}),\n\n\t\t\t\t// Handle animations for state transitions\n\t\t\t\tswitchMap(state => {\n\t\t\t\t\tif (!state.pending || this.isAnimating) {\n\t\t\t\t\t\treturn of(state)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Mark as animating\n\t\t\t\t\tthis.isAnimating = true\n\n\t\t\t\t\t// Animate the transition\n\t\t\t\t\treturn this.animateTransition(state.previous, state.current).pipe(\n\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t// Update state after animation completes\n\t\t\t\t\t\t\tthis.currentState = state.current\n\t\t\t\t\t\t\tthis.isContentVisible = state.current === 'expanded'\n\n\t\t\t\t\t\t\t// Dispatch event\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('toggle', {\n\t\t\t\t\t\t\t\t\tdetail: state.current,\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tcatchError(err => {\n\t\t\t\t\t\t\tconsole.warn('Animation error:', err)\n\t\t\t\t\t\t\t// Still update state even if animation fails\n\t\t\t\t\t\t\tthis.currentState = state.current\n\t\t\t\t\t\t\tthis.isContentVisible = state.current === 'expanded'\n\t\t\t\t\t\t\treturn of(state)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfinalize(() => {\n\t\t\t\t\t\t\tthis.isAnimating = false\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t// Return the state for next iteration\n\t\t\t\t\t\ttap(() => (state.pending = false)),\n\t\t\t\t\t)\n\t\t\t\t}),\n\n\t\t\t\t// Share the pipeline result\n\t\t\t\tshareReplay(1),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t// Simplified animation transition method\n\tprivate animateTransition(fromState: BoatState, toState: BoatState) {\n\t\treturn of({ fromState, toState }).pipe(\n\t\t\ttap(() => this.currentAnimation?.cancel()),\n\t\t\tswitchMap(({ fromState, toState }) => {\n\t\t\t\tconst container = this.containerRef.value\n\t\t\t\tif (!container) return EMPTY\n\n\t\t\t\t// Update content visibility before expand, after minimize\n\t\t\t\tif (toState === 'expanded') {\n\t\t\t\t\tthis.isContentVisible = true\n\t\t\t\t}\n\n\t\t\t\t// Create animation based on target state\n\t\t\t\tconst animations = this.createAnimations(fromState, toState)\n\n\t\t\t\t// Execute animations and return completion promise\n\t\t\t\treturn new Promise<void>(resolve => {\n\t\t\t\t\tconst mainAnimation = animations.container\n\t\t\t\t\tif (mainAnimation) {\n\t\t\t\t\t\tthis.currentAnimation = mainAnimation\n\t\t\t\t\t\tmainAnimation.finished\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tif (toState !== 'expanded') {\n\t\t\t\t\t\t\t\t\tthis.isContentVisible = false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(() => resolve())\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t}\n\n\t// Create animations for state transition\n\tprivate createAnimations(fromState: BoatState, toState: BoatState) {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\t\tconst animations: { container?: Animation; content?: Animation; icon?: Animation } = {}\n\n\t\tif (!container) return animations\n\n\t\tconst config = this.ANIMATION_CONFIG\n\t\tconst fromStyles = this.getStyleForState(fromState)\n\t\tconst toStyles = this.getStyleForState(toState)\n\n\t\t// Container animation\n\t\tif (toState === 'expanded') {\n\t\t\t// Expand animation without transform\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: config.durations.expand,\n\t\t\t\teasing: config.easing.decelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else {\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: toState === 'hidden' ? config.durations.hide : config.durations.minimize,\n\t\t\t\teasing: config.easing.accelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Content animation (only for expand/minimize transitions)\n\t\tif (content && fromState === 'expanded' && toState === 'minimized') {\n\t\t\t// Fade out content before minimizing\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(-8px)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 150,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t} else if (content && toState === 'expanded') {\n\t\t\t// Fade in content when expanding\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(8px)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: config.durations.content,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\t// Icon rotation animation\n\t\tif (icon) {\n\t\t\tconst isExpanding = toState === 'expanded'\n\t\t\tconst isCollapsing = fromState === 'expanded' && toState === 'minimized'\n\n\t\t\tif (isExpanding || isCollapsing) {\n\t\t\t\ticon.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(0deg)' : 'rotate(180deg)' },\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(180deg)' : 'rotate(0deg)' },\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: config.easing.emphasized,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn animations\n\t}\n\n\t// Get styles for a specific state\n\tprivate getStyleForState(state: BoatState): Keyframe {\n\t\tconst { shadows } = this.ANIMATION_CONFIG\n\t\tconst baseStyles = {\n\t\t\twidth: '300px',\n\t\t\tmaxWidth: '300px',\n\t\t\tmaxHeight: 'auto',\n\t\t\tborderRadius: '16px',\n\t\t}\n\n\t\tconst stateStyles: Record<BoatState, Keyframe> = {\n\t\t\thidden: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '0',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tboxShadow: 'none',\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\tminimized: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\tboxShadow: this.isLowered ? shadows.fabLowered : shadows.fab,\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\texpanded: {\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\twidth: this.getResponsiveWidth(),\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tmaxHeight: '80vh',\n\t\t\t\tboxShadow: shadows.expanded,\n\t\t\t\tborderRadius: '8px 8px 0 0',\n\t\t\t\tbackdropFilter: 'blur(12px)',\n\t\t\t},\n\t\t}\n\n\t\treturn stateStyles[state] as Keyframe\n\t}\n\n\t// Calculate responsive width based on viewport\n\tprivate getResponsiveWidth(): string {\n\t\tif (typeof window === 'undefined') return '40vw'\n\n\t\tconst vw = window.innerWidth\n\t\tif (vw < 768) return 'calc(100vw - 32px)'\n\t\tif (vw < 1024) return '70vw'\n\t\tif (vw < 1280) return '60vw'\n\t\treturn '40vw'\n\t}\n\n\t// Update expanded width on window resize\n\tprivate updateExpandedWidth() {\n\t\tconst container = this.containerRef.value\n\t\tif (container && this.currentState === 'expanded') {\n\t\t\tcontainer.style.width = this.getResponsiveWidth()\n\t\t}\n\t}\n\n\t// Initialize component styles after first render\n\tfirstUpdated() {\n\t\t// Apply initial styles\n\t\tthis.applyInitialStyles()\n\t\t// Apply saved position\n\t\tthis.updateContainerPosition()\n\t}\n\n\t// Apply initial styles to elements\n\tprivate applyInitialStyles() {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\n\t\tif (container) {\n\t\t\tconst initialStyle = this.getStyleForState(this.currentState)\n\t\t\tObject.assign(container.style, initialStyle)\n\n\t\t\t// Safari compatibility for backdrop filter\n\t\t\tif ('webkitBackdropFilter' in container.style) {\n\t\t\t\t;(container.style as any).webkitBackdropFilter = initialStyle.backdropFilter\n\t\t\t}\n\t\t}\n\n\t\t// Set initial content opacity\n\t\tif (content) {\n\t\t\tcontent.style.opacity = this.isContentVisible ? '1' : '0'\n\t\t}\n\n\t\t// Set initial icon rotation\n\t\tif (icon && this.currentState === 'expanded') {\n\t\t\ticon.style.transform = 'rotate(180deg)'\n\t\t}\n\t}\n\n\t// Public method to toggle between minimized and expanded\n\ttoggleState() {\n\t\tconst newState = this.currentState === 'minimized' ? 'expanded' : 'minimized'\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'internal',\n\t\t\ttarget: newState,\n\t\t\ttype: 'state',\n\t\t})\n\t}\n\n\t// Public method to close (hide) the boat\n\tclose() {\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'internal',\n\t\t\ttarget: 'hidden',\n\t\t\ttype: 'state',\n\t\t})\n\t}\n\n\t// Load saved position from localStorage\n\tprivate loadSavedPosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst saved = localStorage.getItem('schmancy-boat-position')\n\t\tif (saved) {\n\t\t\ttry {\n\t\t\t\tconst parsed: SavedPosition = JSON.parse(saved)\n\t\t\t\tthis.position = { x: parsed.x, y: parsed.y }\n\t\t\t\tthis.anchor = parsed.anchor\n\t\t\t} catch (e) {\n\t\t\t\t// Use default position if parse fails\n\t\t\t}\n\t\t}\n\t}\n\n\t// Save position to localStorage\n\tprivate savePosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst toSave: SavedPosition = {\n\t\t\tx: this.position.x,\n\t\t\ty: this.position.y,\n\t\t\tanchor: this.anchor,\n\t\t}\n\t\tlocalStorage.setItem('schmancy-boat-position', JSON.stringify(toSave))\n\t}\n\n\t// Setup drag pipeline for the header\n\tprivate setupDragPipeline() {\n\t\tif (typeof window === 'undefined') return\n\n\t\t// Wait for header element to be available\n\t\tsetTimeout(() => {\n\t\t\tconst header = this.headerRef.value\n\t\t\tconst container = this.containerRef.value\n\t\t\tif (!header || !container) return\n\n\t\t\t// Track whether we should process click events\n\t\t\tlet hasDragged = false\n\t\t\tconst DRAG_THRESHOLD = 5 // pixels\n\n\t\t\tconst dragStart$ = fromEvent<MouseEvent>(header, 'mousedown').pipe(\n\t\t\t\tfilter((e: MouseEvent) => e.button === 0), // Left mouse button only\n\t\t\t\ttap((e: MouseEvent) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t// Don't set isDragging yet - wait to see if user actually drags\n\t\t\t\t\thasDragged = false\n\t\t\t\t}),\n\t\t\t\tmap((e: MouseEvent) => {\n\t\t\t\t\t// Get the current position of the boat in viewport coordinates\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\n\t\t\t\t\t// Calculate the offset from where the user clicked to the boat's position\n\t\t\t\t\t// This offset will be maintained throughout the drag\n\t\t\t\t\tconst offsetX = e.clientX - rect.left\n\t\t\t\t\tconst offsetY = e.clientY - rect.top\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstartMouseX: e.clientX,\n\t\t\t\t\t\tstartMouseY: e.clientY,\n\t\t\t\t\t\toffsetX,\n\t\t\t\t\t\toffsetY,\n\t\t\t\t\t\tinitialRect: rect,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst dragMove$ = fromEvent<MouseEvent>(window, 'mousemove')\n\t\t\tconst dragEnd$ = fromEvent<MouseEvent>(window, 'mouseup')\n\n\t\t\tdragStart$\n\t\t\t\t.pipe(\n\t\t\t\t\tswitchMap(({ startMouseX, startMouseY, offsetX, offsetY, initialRect }) =>\n\t\t\t\t\t\tdragMove$.pipe(\n\t\t\t\t\t\t\t// Remove throttling for smoother movement\n\t\t\t\t\t\t\tmap((moveEvent: MouseEvent) => {\n\t\t\t\t\t\t\t\tconst deltaX = moveEvent.clientX - startMouseX\n\t\t\t\t\t\t\t\tconst deltaY = moveEvent.clientY - startMouseY\n\n\t\t\t\t\t\t\t\t// Check if we've moved beyond the threshold\n\t\t\t\t\t\t\t\tconst distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY)\n\t\t\t\t\t\t\t\tif (distance > DRAG_THRESHOLD && !hasDragged) {\n\t\t\t\t\t\t\t\t\thasDragged = true\n\t\t\t\t\t\t\t\t\tthis.isDragging = true\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Only update position if actually dragging\n\t\t\t\t\t\t\t\tif (!hasDragged) {\n\t\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Calculate where the boat should be positioned\n\t\t\t\t\t\t\t\t// The boat should follow the cursor while maintaining the initial offset\n\t\t\t\t\t\t\t\tconst targetLeft = moveEvent.clientX - offsetX\n\t\t\t\t\t\t\t\tconst targetTop = moveEvent.clientY - offsetY\n\n\t\t\t\t\t\t\t\t// Get viewport dimensions\n\t\t\t\t\t\t\t\tconst vw = window.innerWidth\n\t\t\t\t\t\t\t\tconst vh = window.innerHeight\n\n\t\t\t\t\t\t\t\t// Clamp to viewport bounds\n\t\t\t\t\t\t\t\tconst clampedLeft = Math.max(0, Math.min(targetLeft, vw - initialRect.width))\n\t\t\t\t\t\t\t\tconst clampedTop = Math.max(0, Math.min(targetTop, vh - initialRect.height))\n\n\t\t\t\t\t\t\t\t// Convert to position values based on current anchor\n\t\t\t\t\t\t\t\tlet newX: number\n\t\t\t\t\t\t\t\tlet newY: number\n\n\t\t\t\t\t\t\t\tif (this.anchor.includes('right')) {\n\t\t\t\t\t\t\t\t\t// Distance from right edge\n\t\t\t\t\t\t\t\t\tnewX = vw - (clampedLeft + initialRect.width)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Distance from left edge\n\t\t\t\t\t\t\t\t\tnewX = clampedLeft\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (this.anchor.includes('bottom')) {\n\t\t\t\t\t\t\t\t\t// Distance from bottom edge\n\t\t\t\t\t\t\t\t\tnewY = vh - (clampedTop + initialRect.height)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Distance from top edge\n\t\t\t\t\t\t\t\t\tnewY = clampedTop\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn { x: Math.max(0, newX), y: Math.max(0, newY) }\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfilter(position => position !== null),\n\t\t\t\t\t\t\ttap(position => {\n\t\t\t\t\t\t\t\tif (hasDragged && position) {\n\t\t\t\t\t\t\t\t\tthis.position = position\n\t\t\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\t\t\t// Check if we need to update anchor\n\t\t\t\t\t\t\t\t\tthis.updateAnchor()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\ttakeUntil(dragEnd$),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\tfinalize(() => {\n\t\t\t\t\t\t// If we didn't drag, trigger the click\n\t\t\t\t\t\tif (!hasDragged) {\n\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Save position only if we actually dragged\n\t\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.isDragging = false\n\t\t\t\t\t\thasDragged = false\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\t\t}, 100)\n\t}\n\n\t// Update container position based on anchor and position values\n\tprivate updateContainerPosition() {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Reset all position styles\n\t\tcontainer.style.removeProperty('left')\n\t\tcontainer.style.removeProperty('right')\n\t\tcontainer.style.removeProperty('top')\n\t\tcontainer.style.removeProperty('bottom')\n\n\t\t// Apply new position based on anchor\n\t\tif (this.anchor.includes('right')) {\n\t\t\tcontainer.style.right = `${this.position.x}px`\n\t\t} else {\n\t\t\tcontainer.style.left = `${this.position.x}px`\n\t\t}\n\n\t\tif (this.anchor.includes('bottom')) {\n\t\t\tcontainer.style.bottom = `${this.position.y}px`\n\t\t} else {\n\t\t\tcontainer.style.top = `${this.position.y}px`\n\t\t}\n\t}\n\n\t// Update anchor based on current position\n\tprivate updateAnchor() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\tconst rect = container.getBoundingClientRect()\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\n\t\tconst isRight = rect.left > vw / 2\n\t\tconst isBottom = rect.top > vh / 2\n\n\t\tconst newAnchor = `${isBottom ? 'bottom' : 'top'}-${isRight ? 'right' : 'left'}` as typeof this.anchor\n\n\t\tif (newAnchor !== this.anchor) {\n\t\t\t// Calculate new position values for the new anchor\n\t\t\tif (isRight) {\n\t\t\t\tthis.position.x = vw - rect.right\n\t\t\t} else {\n\t\t\t\tthis.position.x = rect.left\n\t\t\t}\n\n\t\t\tif (isBottom) {\n\t\t\t\tthis.position.y = vh - rect.bottom\n\t\t\t} else {\n\t\t\t\tthis.position.y = rect.top\n\t\t\t}\n\n\t\t\tthis.anchor = newAnchor\n\t\t}\n\t}\n\n\t// Cleanup on component disconnect\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.currentAnimation?.cancel()\n\t\tthis.stateChange$.complete()\n\t}\n\n\t// Render the component\n\tprotected render(): unknown {\n\t\t// Calculate dynamic values\n\t\tconst surfaceElevation = this.currentState === 'minimized' ? (this.isLowered ? '1' : '3') : '4'\n\t\tconst isMinimized = this.currentState === 'minimized'\n\t\tconst iconName = isMinimized ? 'expand_less' : 'expand_more'\n\n\t\t// Dynamic styles for dragging state\n\t\tconst containerClass = `boat-container z-[9999] fixed overflow-y-auto flex flex-col transition-shadow ${\n\t\t\tthis.isDragging ? 'dragging opacity-95' : ''\n\t\t}`\n\n\t\treturn html`\n\t\t\t<div class=\"${containerClass}\" ${ref(this.containerRef)}>\n\t\t\t\t<!-- Header section -->\n\t\t\t\t<section class=\"sticky top-0 z-10\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\televation=\"${surfaceElevation}\"\n\t\t\t\t\t\trounded=\"${isMinimized ? 'none' : 'top'}\"\n\t\t\t\t\t\ttype=\"containerLowest\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"boat-header sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging ? 'cursor-grabbing' : 'cursor-move'}\"\n\t\t\t\t\t\t\t${ref(this.headerRef)}\n\t\t\t\t\t\t\ttitle=\"Drag to move, click to expand/collapse\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<!-- Drag handle indicator -->\n\t\t\t\t\t\t\t<div class=\"drag-handle flex items-center text-surface-onVariant opacity-40\">\n\t\t\t\t\t\t\t\t<schmancy-icon style=\"font-size: 20px\">drag_indicator</schmancy-icon>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Header content slot -->\n\t\t\t\t\t\t\t<div class=\"flex-1 min-w-fit items-center justify-start\">\n\t\t\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Control buttons -->\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-1 flex-shrink-0\">\n\t\t\t\t\t\t\t\t<!-- Toggle button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"${isMinimized ? 'text' : 'filled tonal'}\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=${isMinimized ? 'Expand' : 'Minimize'}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span class=\"icon-container\" ${ref(this.iconRef)}> ${iconName} </span>\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t\t\t<!-- Close button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.close()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=\"Close\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Content section -->\n\t\t\t\t<schmancy-surface\n\t\t\t\t\t.hidden=${!this.isContentVisible}\n\t\t\t\t\ttype=\"containerLow\"\n\t\t\t\t\tclass=\"boat-content z-0 flex-1\"\n\t\t\t\t\t${ref(this.contentRef)}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</schmancy-surface>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-boat': SchmancyBoat\n\t}\n}\n"],"names":["SchmancyBoat","TailwindElement","css","constructor","super","arguments","this","stateChange$","Subject","containerRef","createRef","contentRef","iconRef","headerRef","ANIMATION_CONFIG","durations","expand","minimize","hide","content","easing","emphasized","decelerate","accelerate","standard","shadows","fab","fabLowered","expanded","currentState","isContentVisible","isAnimating","isLowered","isDragging","position","x","y","anchor","state","value","next","source","target","type","connectedCallback","loadSavedPosition","setupUnifiedPipeline","setupDragPipeline","resize$","window","fromEvent","pipe","debounceTime","filter","tap","EMPTY","merge","of","scan","event","updateExpandedWidth","resized","lowered","current","previous","pending","switchMap","animateTransition","dispatchEvent","CustomEvent","detail","bubbles","composed","catchError","err","finalize","shareReplay","takeUntil","disconnecting","subscribe","fromState","toState","currentAnimation","cancel","animations","createAnimations","Promise","resolve","mainAnimation","container","finished","then","catch","icon","config","fromStyles","getStyleForState","toStyles","animate","duration","fill","opacity","transform","isExpanding","baseStyles","width","maxWidth","maxHeight","borderRadius","hidden","pointerEvents","boxShadow","backdropFilter","minimized","getResponsiveWidth","vw","innerWidth","style","firstUpdated","applyInitialStyles","updateContainerPosition","initialStyle","Object","assign","webkitBackdropFilter","toggleState","newState","saved","localStorage","getItem","parsed","JSON","parse","e","savePosition","toSave","setItem","stringify","setTimeout","header","hasDragged","dragStart$","button","preventDefault","stopPropagation","map","rect","getBoundingClientRect","offsetX","clientX","left","offsetY","clientY","top","startMouseX","startMouseY","initialRect","dragMove$","dragEnd$","moveEvent","deltaX","deltaY","Math","sqrt","targetLeft","targetTop","vh","innerHeight","clampedLeft","max","min","clampedTop","height","newX","newY","includes","updateAnchor","removeProperty","right","bottom","isRight","isBottom","newAnchor","disconnectedCallback","complete","render","surfaceElevation","isMinimized","iconName","containerClass","html","ref","close","__decorateClass","property","String","reflect","prototype","Boolean","customElement"],"mappings":"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"}
@@ -1,83 +0,0 @@
1
- "use strict";const k=require("./tailwind.mixin-ClfV2_Nh.cjs"),C=require("lit"),d=require("lit/decorators.js"),u=require("lit/directives/ref.js"),c=require("rxjs"),a=require("rxjs/operators");var M=Object.defineProperty,A=Object.getOwnPropertyDescriptor,p=(e,t,i,s)=>{for(var r,o=s>1?void 0:s?A(t,i):t,n=e.length-1;n>=0;n--)(r=e[n])&&(o=(s?r(t,i,o):r(o))||o);return s&&o&&M(t,i,o),o};exports.SchmancyBoat=class extends k.TailwindElement(C.css`
2
- /* Performance optimization - GPU hints only */
3
- .boat-container {
4
- will-change: transform, border-radius, width, max-width, box-shadow;
5
- contain: layout style;
6
- transform: translate3d(0, 0, 0); /* Force GPU acceleration */
7
- backface-visibility: hidden;
8
- user-select: none; /* Prevent text selection during drag */
9
- }
10
-
11
- /* Dragging state styles */
12
- .boat-container.dragging {
13
- box-shadow: 0 24px 48px -8px rgba(0, 0, 0, 0.2), 0 12px 24px -4px rgba(0, 0, 0, 0.12);
14
- }
15
-
16
- /* Drag handle hover effect */
17
- .drag-handle {
18
- transition: opacity 0.2s ease;
19
- }
20
-
21
- .boat-header:hover .drag-handle {
22
- opacity: 1 !important;
23
- }
24
- `){constructor(){super(...arguments),this.stateChange$=new c.Subject,this.containerRef=u.createRef(),this.contentRef=u.createRef(),this.iconRef=u.createRef(),this.headerRef=u.createRef(),this.ANIMATION_CONFIG={durations:{expand:350,minimize:250,hide:200,content:300},easing:{emphasized:"cubic-bezier(0.2, 0.0, 0, 1.0)",decelerate:"cubic-bezier(0.05, 0.7, 0.1, 1.0)",accelerate:"cubic-bezier(0.3, 0.0, 0.8, 0.15)",standard:"cubic-bezier(0.4, 0.0, 0.2, 1)"},shadows:{fab:"0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)",fabLowered:"0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)",expanded:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"}},this.currentState="minimized",this.isContentVisible=!1,this.isAnimating=!1,this.isLowered=!1,this.isDragging=!1,this.position={x:16,y:16},this.anchor="bottom-right"}get state(){return this.currentState}set state(e){this.stateChange$.next({source:"external",target:e,type:"state"})}get lowered(){return this.isLowered}set lowered(e){this.stateChange$.next({source:"external",target:this.currentState,type:"lowered"}),this.isLowered=e}connectedCallback(){super.connectedCallback(),this.loadSavedPosition(),this.setupUnifiedPipeline(),this.setupDragPipeline()}setupUnifiedPipeline(){const e=typeof window<"u"?c.fromEvent(window,"resize").pipe(a.debounceTime(100),a.filter(()=>this.currentState==="expanded"),a.tap(()=>this.stateChange$.next({source:"resize",type:"resize"}))):c.EMPTY;c.merge(c.of({source:"internal",target:"minimized",type:"state"}),this.stateChange$,e).pipe(a.scan((t,i)=>i.type==="resize"&&this.currentState==="expanded"?(this.updateExpandedWidth(),{...t,resized:!0}):i.type==="lowered"?{...t,lowered:!t.lowered}:i.type==="state"&&i.target&&i.target!==t.current?{...t,previous:t.current,current:i.target,pending:!0,source:i.source}:t,{current:"minimized",previous:"minimized",pending:!1,lowered:!1,resized:!1,source:"internal"}),a.tap(t=>{this.isLowered=t.lowered}),a.switchMap(t=>!t.pending||this.isAnimating?c.of(t):(this.isAnimating=!0,this.animateTransition(t.previous,t.current).pipe(a.tap(()=>{this.currentState=t.current,this.isContentVisible=t.current==="expanded",this.dispatchEvent(new CustomEvent("toggle",{detail:t.current,bubbles:!0,composed:!0}))}),a.catchError(i=>(this.currentState=t.current,this.isContentVisible=t.current==="expanded",c.of(t))),a.finalize(()=>{this.isAnimating=!1}),a.tap(()=>t.pending=!1)))),a.shareReplay(1),a.takeUntil(this.disconnecting)).subscribe()}animateTransition(e,t){return c.of({fromState:e,toState:t}).pipe(a.tap(()=>this.currentAnimation?.cancel()),a.switchMap(({fromState:i,toState:s})=>{if(!this.containerRef.value)return c.EMPTY;s==="expanded"&&(this.isContentVisible=!0);const r=this.createAnimations(i,s);return new Promise(o=>{const n=r.container;n?(this.currentAnimation=n,n.finished.then(()=>{s!=="expanded"&&(this.isContentVisible=!1),o()}).catch(()=>o())):o()})}))}createAnimations(e,t){const i=this.containerRef.value,s=this.contentRef.value,r=this.iconRef.value,o={};if(!i)return o;const n=this.ANIMATION_CONFIG,l=this.getStyleForState(e),m=this.getStyleForState(t);if(o.container=t==="expanded"?i.animate([l,m],{duration:n.durations.expand,easing:n.easing.decelerate,fill:"forwards"}):i.animate([l,m],{duration:t==="hidden"?n.durations.hide:n.durations.minimize,easing:n.easing.accelerate,fill:"forwards"}),s&&e==="expanded"&&t==="minimized"?s.animate([{opacity:1,transform:"translateY(0)"},{opacity:0,transform:"translateY(-8px)"}],{duration:150,easing:n.easing.standard,fill:"forwards"}):s&&t==="expanded"&&s.animate([{opacity:0,transform:"translateY(8px)"},{opacity:1,transform:"translateY(0)"}],{duration:n.durations.content,easing:n.easing.standard,fill:"forwards"}),r){const g=t==="expanded";(g||e==="expanded"&&t==="minimized")&&r.animate([{transform:g?"rotate(0deg)":"rotate(180deg)"},{transform:g?"rotate(180deg)":"rotate(0deg)"}],{duration:250,easing:n.easing.emphasized,fill:"forwards"})}return o}getStyleForState(e){const{shadows:t}=this.ANIMATION_CONFIG,i={width:"300px",maxWidth:"300px",maxHeight:"auto",borderRadius:"16px"};return{hidden:{...i,opacity:"0",pointerEvents:"none",boxShadow:"none",backdropFilter:"none"},minimized:{...i,opacity:"1",pointerEvents:"auto",boxShadow:this.isLowered?t.fabLowered:t.fab,backdropFilter:"none"},expanded:{opacity:"1",pointerEvents:"auto",width:this.getResponsiveWidth(),maxWidth:"100%",maxHeight:"80vh",boxShadow:t.expanded,borderRadius:"8px 8px 0 0",backdropFilter:"blur(12px)"}}[e]}getResponsiveWidth(){if(typeof window>"u")return"40vw";const e=window.innerWidth;return e<768?"calc(100vw - 32px)":e<1024?"70vw":e<1280?"60vw":"40vw"}updateExpandedWidth(){const e=this.containerRef.value;e&&this.currentState==="expanded"&&(e.style.width=this.getResponsiveWidth())}firstUpdated(){this.applyInitialStyles(),this.updateContainerPosition()}applyInitialStyles(){const e=this.containerRef.value,t=this.contentRef.value,i=this.iconRef.value;if(e){const s=this.getStyleForState(this.currentState);Object.assign(e.style,s),"webkitBackdropFilter"in e.style&&(e.style.webkitBackdropFilter=s.backdropFilter)}t&&(t.style.opacity=this.isContentVisible?"1":"0"),i&&this.currentState==="expanded"&&(i.style.transform="rotate(180deg)")}toggleState(){const e=this.currentState==="minimized"?"expanded":"minimized";this.stateChange$.next({source:"internal",target:e,type:"state"})}close(){this.stateChange$.next({source:"internal",target:"hidden",type:"state"})}loadSavedPosition(){if(typeof window>"u")return;const e=localStorage.getItem("schmancy-boat-position");if(e)try{const t=JSON.parse(e);this.position={x:t.x,y:t.y},this.anchor=t.anchor}catch{}}savePosition(){if(typeof window>"u")return;const e={x:this.position.x,y:this.position.y,anchor:this.anchor};localStorage.setItem("schmancy-boat-position",JSON.stringify(e))}setupDragPipeline(){typeof window<"u"&&setTimeout(()=>{const e=this.headerRef.value,t=this.containerRef.value;if(!e||!t)return;let i=!1;const s=c.fromEvent(e,"mousedown").pipe(a.filter(n=>n.button===0),a.tap(n=>{n.preventDefault(),n.stopPropagation(),i=!1}),a.map(n=>{const l=t.getBoundingClientRect(),m=n.clientX-l.left,g=n.clientY-l.top;return{startMouseX:n.clientX,startMouseY:n.clientY,offsetX:m,offsetY:g,initialRect:l}})),r=c.fromEvent(window,"mousemove"),o=c.fromEvent(window,"mouseup");s.pipe(a.switchMap(({startMouseX:n,startMouseY:l,offsetX:m,offsetY:g,initialRect:f})=>r.pipe(a.map(h=>{const x=h.clientX-n,y=h.clientY-l;if(Math.sqrt(x*x+y*y)>5&&!i&&(i=!0,this.isDragging=!0),!i)return null;const $=h.clientX-m,P=h.clientY-g,b=window.innerWidth,w=window.innerHeight,v=Math.max(0,Math.min($,b-f.width)),S=Math.max(0,Math.min(P,w-f.height));let R,z;return R=this.anchor.includes("right")?b-(v+f.width):v,z=this.anchor.includes("bottom")?w-(S+f.height):S,{x:Math.max(0,R),y:Math.max(0,z)}}),a.filter(h=>h!==null),a.tap(h=>{i&&h&&(this.position=h,this.updateContainerPosition(),this.updateAnchor())}),a.takeUntil(o))),a.finalize(()=>{i?this.savePosition():this.toggleState(),this.isDragging=!1,i=!1}),a.takeUntil(this.disconnecting)).subscribe()},100)}updateContainerPosition(){const e=this.containerRef.value;e&&(e.style.removeProperty("left"),e.style.removeProperty("right"),e.style.removeProperty("top"),e.style.removeProperty("bottom"),this.anchor.includes("right")?e.style.right=`${this.position.x}px`:e.style.left=`${this.position.x}px`,this.anchor.includes("bottom")?e.style.bottom=`${this.position.y}px`:e.style.top=`${this.position.y}px`)}updateAnchor(){if(typeof window>"u")return;const e=this.containerRef.value;if(!e)return;const t=e.getBoundingClientRect(),i=window.innerWidth,s=window.innerHeight,r=t.left>i/2,o=t.top>s/2,n=`${o?"bottom":"top"}-${r?"right":"left"}`;n!==this.anchor&&(this.position.x=r?i-t.right:t.left,this.position.y=o?s-t.bottom:t.top,this.anchor=n)}disconnectedCallback(){super.disconnectedCallback(),this.currentAnimation?.cancel(),this.stateChange$.complete()}render(){const e=this.currentState==="minimized"?this.isLowered?"1":"3":"4",t=this.currentState==="minimized",i=t?"expand_less":"expand_more",s="boat-container z-[9999] fixed overflow-y-auto flex flex-col transition-shadow "+(this.isDragging?"dragging opacity-95":"");return C.html`
25
- <div class="${s}" ${u.ref(this.containerRef)}>
26
- <!-- Header section -->
27
- <section class="sticky top-0 z-10">
28
- <schmancy-surface
29
- elevation="${e}"
30
- rounded="${t?"none":"top"}"
31
- type="containerLowest"
32
- >
33
- <div
34
- class="boat-header sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging?"cursor-grabbing":"cursor-move"}"
35
- ${u.ref(this.headerRef)}
36
- title="Drag to move, click to expand/collapse"
37
- >
38
- <!-- Drag handle indicator -->
39
- <div class="drag-handle flex items-center text-surface-onVariant opacity-40">
40
- <schmancy-icon style="font-size: 20px">drag_indicator</schmancy-icon>
41
- </div>
42
-
43
- <!-- Header content slot -->
44
- <div class="flex-1 min-w-fit items-center justify-start">
45
- <slot name="header"></slot>
46
- </div>
47
-
48
- <!-- Control buttons -->
49
- <div class="flex items-center gap-1 flex-shrink-0">
50
- <!-- Toggle button -->
51
- <schmancy-icon-button
52
- variant="${t?"text":"filled tonal"}"
53
- @click=${r=>{r.stopPropagation(),this.toggleState()}}
54
- title=${t?"Expand":"Minimize"}
55
- >
56
- <span class="icon-container" ${u.ref(this.iconRef)}> ${i} </span>
57
- </schmancy-icon-button>
58
-
59
- <!-- Close button -->
60
- <schmancy-icon-button
61
- variant="text"
62
- @click=${r=>{r.stopPropagation(),this.close()}}
63
- title="Close"
64
- >
65
- close
66
- </schmancy-icon-button>
67
- </div>
68
- </div>
69
- </schmancy-surface>
70
- </section>
71
-
72
- <!-- Content section -->
73
- <schmancy-surface
74
- .hidden=${!this.isContentVisible}
75
- type="containerLow"
76
- class="boat-content z-0 flex-1"
77
- ${u.ref(this.contentRef)}
78
- >
79
- <slot></slot>
80
- </schmancy-surface>
81
- </div>
82
- `}},p([d.property({type:String,reflect:!0})],exports.SchmancyBoat.prototype,"state",1),p([d.property({type:Boolean,reflect:!0})],exports.SchmancyBoat.prototype,"lowered",1),p([d.state()],exports.SchmancyBoat.prototype,"currentState",2),p([d.state()],exports.SchmancyBoat.prototype,"isContentVisible",2),p([d.state()],exports.SchmancyBoat.prototype,"isAnimating",2),p([d.state()],exports.SchmancyBoat.prototype,"isLowered",2),p([d.state()],exports.SchmancyBoat.prototype,"isDragging",2),p([d.state()],exports.SchmancyBoat.prototype,"position",2),p([d.state()],exports.SchmancyBoat.prototype,"anchor",2),exports.SchmancyBoat=p([d.customElement("schmancy-boat")],exports.SchmancyBoat);
83
- //# sourceMappingURL=boat-Dfx9-P8c.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boat-Dfx9-P8c.cjs","sources":["../src/boat/boat.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { Subject, fromEvent, merge, of, EMPTY } from 'rxjs'\nimport {\n\tfilter,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n\tfinalize,\n\tcatchError,\n\tdebounceTime,\n\tscan,\n\tshareReplay,\n\tmap,\n} from 'rxjs/operators'\n\ntype BoatState = 'hidden' | 'minimized' | 'expanded'\n\n// State change event for the unified pipeline\ninterface StateChangeEvent {\n\tsource: 'internal' | 'external' | 'resize'\n\ttarget?: BoatState\n\ttype: 'state' | 'lowered' | 'resize'\n}\n\n// Position interface for drag functionality\ninterface Position {\n\tx: number\n\ty: number\n}\n\n// Saved position from localStorage\ninterface SavedPosition {\n\tx: number\n\ty: number\n\tanchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\n@customElement('schmancy-boat')\nexport default class SchmancyBoat extends TailwindElement(css`\n\t/* Performance optimization - GPU hints only */\n\t.boat-container {\n\t\twill-change: transform, border-radius, width, max-width, box-shadow;\n\t\tcontain: layout style;\n\t\ttransform: translate3d(0, 0, 0); /* Force GPU acceleration */\n\t\tbackface-visibility: hidden;\n\t\tuser-select: none; /* Prevent text selection during drag */\n\t}\n\n\t/* Dragging state styles */\n\t.boat-container.dragging {\n\t\tbox-shadow: 0 24px 48px -8px rgba(0, 0, 0, 0.2), 0 12px 24px -4px rgba(0, 0, 0, 0.12);\n\t}\n\n\t/* Drag handle hover effect */\n\t.drag-handle {\n\t\ttransition: opacity 0.2s ease;\n\t}\n\n\t.boat-header:hover .drag-handle {\n\t\topacity: 1 !important;\n\t}\n`) {\n\t// Public properties - route ALL changes through stateChange$\n\t@property({ type: String, reflect: true })\n\tget state(): BoatState {\n\t\treturn this.currentState\n\t}\n\tset state(value: BoatState) {\n\t\t// Route external state changes through the unified pipeline\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'external',\n\t\t\ttarget: value,\n\t\t\ttype: 'state',\n\t\t})\n\t}\n\n\t@property({ type: Boolean, reflect: true })\n\tget lowered(): boolean {\n\t\treturn this.isLowered\n\t}\n\tset lowered(value: boolean) {\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'external',\n\t\t\ttarget: this.currentState,\n\t\t\ttype: 'lowered',\n\t\t})\n\t\tthis.isLowered = value\n\t}\n\n\t// Single unified state change stream - ALL state changes go through this\n\tprivate stateChange$ = new Subject<StateChangeEvent>()\n\n\t// Element references\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLElement> = createRef()\n\tprivate iconRef: Ref<HTMLElement> = createRef()\n\tprivate headerRef: Ref<HTMLElement> = createRef()\n\n\t// Current animation reference\n\tprivate currentAnimation?: Animation\n\n\t// Animation configuration\n\tprivate readonly ANIMATION_CONFIG = {\n\t\tdurations: {\n\t\t\texpand: 350,\n\t\t\tminimize: 250,\n\t\t\thide: 200,\n\t\t\tcontent: 300,\n\t\t},\n\t\teasing: {\n\t\t\temphasized: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\tdecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)',\n\t\t\taccelerate: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)',\n\t\t\tstandard: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t},\n\t\tshadows: {\n\t\t\tfab: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)',\n\t\t\tfabLowered:\n\t\t\t\t'0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n\t\t\texpanded: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n\t\t},\n\t}\n\n\t// Reactive state for template\n\t@state() private currentState: BoatState = 'minimized'\n\t@state() private isContentVisible: boolean = false\n\t@state() private isAnimating: boolean = false\n\t@state() private isLowered: boolean = false\n\t@state() private isDragging: boolean = false\n\t@state() private position: Position = { x: 16, y: 16 }\n\t@state() private anchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' = 'bottom-right'\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.loadSavedPosition()\n\t\tthis.setupUnifiedPipeline()\n\t\tthis.setupDragPipeline()\n\t}\n\n\tprivate setupUnifiedPipeline() {\n\t\t// Create resize stream\n\t\tconst resize$ =\n\t\t\ttypeof window !== 'undefined'\n\t\t\t\t? fromEvent(window, 'resize').pipe(\n\t\t\t\t\t\tdebounceTime(100),\n\t\t\t\t\t\tfilter(() => this.currentState === 'expanded'),\n\t\t\t\t\t\ttap(() =>\n\t\t\t\t\t\t\tthis.stateChange$.next({\n\t\t\t\t\t\t\t\tsource: 'resize',\n\t\t\t\t\t\t\t\ttype: 'resize',\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t: EMPTY\n\n\t\t// SINGLE UNIFIED PIPELINE - All state management in ONE place\n\t\tmerge(\n\t\t\t// Initial state\n\t\t\tof({\n\t\t\t\tsource: 'internal' as const,\n\t\t\t\ttarget: 'minimized' as BoatState,\n\t\t\t\ttype: 'state' as const,\n\t\t\t}),\n\t\t\t// All state changes\n\t\t\tthis.stateChange$,\n\t\t\t// Window resize events\n\t\t\tresize$,\n\t\t)\n\t\t\t.pipe(\n\t\t\t\t// Accumulate state and handle all changes\n\t\t\t\tscan(\n\t\t\t\t\t(state, event: StateChangeEvent) => {\n\t\t\t\t\t\t// Handle different event types\n\t\t\t\t\t\tif (event.type === 'resize' && this.currentState === 'expanded') {\n\t\t\t\t\t\t\t// Just update width, no animation needed\n\t\t\t\t\t\t\tthis.updateExpandedWidth()\n\t\t\t\t\t\t\treturn { ...state, resized: true }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (event.type === 'lowered') {\n\t\t\t\t\t\t\t// Update lowered state\n\t\t\t\t\t\t\treturn { ...state, lowered: !state.lowered }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Handle state changes\n\t\t\t\t\t\tif (event.type === 'state' && event.target && event.target !== state.current) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\tprevious: state.current,\n\t\t\t\t\t\t\t\tcurrent: event.target,\n\t\t\t\t\t\t\t\tpending: true,\n\t\t\t\t\t\t\t\tsource: event.source,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn state\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrent: 'minimized' as BoatState,\n\t\t\t\t\t\tprevious: 'minimized' as BoatState,\n\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\tlowered: false,\n\t\t\t\t\t\tresized: false,\n\t\t\t\t\t\tsource: 'internal' as 'internal' | 'external' | 'resize',\n\t\t\t\t\t},\n\t\t\t\t),\n\n\t\t\t\t// Only process when there's a pending state change\n\t\t\t\ttap(state => {\n\t\t\t\t\t// Always update lowered state\n\t\t\t\t\tthis.isLowered = state.lowered\n\t\t\t\t}),\n\n\t\t\t\t// Handle animations for state transitions\n\t\t\t\tswitchMap(state => {\n\t\t\t\t\tif (!state.pending || this.isAnimating) {\n\t\t\t\t\t\treturn of(state)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Mark as animating\n\t\t\t\t\tthis.isAnimating = true\n\n\t\t\t\t\t// Animate the transition\n\t\t\t\t\treturn this.animateTransition(state.previous, state.current).pipe(\n\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t// Update state after animation completes\n\t\t\t\t\t\t\tthis.currentState = state.current\n\t\t\t\t\t\t\tthis.isContentVisible = state.current === 'expanded'\n\n\t\t\t\t\t\t\t// Dispatch event\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('toggle', {\n\t\t\t\t\t\t\t\t\tdetail: state.current,\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tcatchError(err => {\n\t\t\t\t\t\t\tconsole.warn('Animation error:', err)\n\t\t\t\t\t\t\t// Still update state even if animation fails\n\t\t\t\t\t\t\tthis.currentState = state.current\n\t\t\t\t\t\t\tthis.isContentVisible = state.current === 'expanded'\n\t\t\t\t\t\t\treturn of(state)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfinalize(() => {\n\t\t\t\t\t\t\tthis.isAnimating = false\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t// Return the state for next iteration\n\t\t\t\t\t\ttap(() => (state.pending = false)),\n\t\t\t\t\t)\n\t\t\t\t}),\n\n\t\t\t\t// Share the pipeline result\n\t\t\t\tshareReplay(1),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t// Simplified animation transition method\n\tprivate animateTransition(fromState: BoatState, toState: BoatState) {\n\t\treturn of({ fromState, toState }).pipe(\n\t\t\ttap(() => this.currentAnimation?.cancel()),\n\t\t\tswitchMap(({ fromState, toState }) => {\n\t\t\t\tconst container = this.containerRef.value\n\t\t\t\tif (!container) return EMPTY\n\n\t\t\t\t// Update content visibility before expand, after minimize\n\t\t\t\tif (toState === 'expanded') {\n\t\t\t\t\tthis.isContentVisible = true\n\t\t\t\t}\n\n\t\t\t\t// Create animation based on target state\n\t\t\t\tconst animations = this.createAnimations(fromState, toState)\n\n\t\t\t\t// Execute animations and return completion promise\n\t\t\t\treturn new Promise<void>(resolve => {\n\t\t\t\t\tconst mainAnimation = animations.container\n\t\t\t\t\tif (mainAnimation) {\n\t\t\t\t\t\tthis.currentAnimation = mainAnimation\n\t\t\t\t\t\tmainAnimation.finished\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tif (toState !== 'expanded') {\n\t\t\t\t\t\t\t\t\tthis.isContentVisible = false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(() => resolve())\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t}\n\n\t// Create animations for state transition\n\tprivate createAnimations(fromState: BoatState, toState: BoatState) {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\t\tconst animations: { container?: Animation; content?: Animation; icon?: Animation } = {}\n\n\t\tif (!container) return animations\n\n\t\tconst config = this.ANIMATION_CONFIG\n\t\tconst fromStyles = this.getStyleForState(fromState)\n\t\tconst toStyles = this.getStyleForState(toState)\n\n\t\t// Container animation\n\t\tif (toState === 'expanded') {\n\t\t\t// Expand animation without transform\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: config.durations.expand,\n\t\t\t\teasing: config.easing.decelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else {\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: toState === 'hidden' ? config.durations.hide : config.durations.minimize,\n\t\t\t\teasing: config.easing.accelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Content animation (only for expand/minimize transitions)\n\t\tif (content && fromState === 'expanded' && toState === 'minimized') {\n\t\t\t// Fade out content before minimizing\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(-8px)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 150,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t} else if (content && toState === 'expanded') {\n\t\t\t// Fade in content when expanding\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(8px)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: config.durations.content,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\t// Icon rotation animation\n\t\tif (icon) {\n\t\t\tconst isExpanding = toState === 'expanded'\n\t\t\tconst isCollapsing = fromState === 'expanded' && toState === 'minimized'\n\n\t\t\tif (isExpanding || isCollapsing) {\n\t\t\t\ticon.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(0deg)' : 'rotate(180deg)' },\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(180deg)' : 'rotate(0deg)' },\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: config.easing.emphasized,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn animations\n\t}\n\n\t// Get styles for a specific state\n\tprivate getStyleForState(state: BoatState): Keyframe {\n\t\tconst { shadows } = this.ANIMATION_CONFIG\n\t\tconst baseStyles = {\n\t\t\twidth: '300px',\n\t\t\tmaxWidth: '300px',\n\t\t\tmaxHeight: 'auto',\n\t\t\tborderRadius: '16px',\n\t\t}\n\n\t\tconst stateStyles: Record<BoatState, Keyframe> = {\n\t\t\thidden: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '0',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tboxShadow: 'none',\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\tminimized: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\tboxShadow: this.isLowered ? shadows.fabLowered : shadows.fab,\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\texpanded: {\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\twidth: this.getResponsiveWidth(),\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tmaxHeight: '80vh',\n\t\t\t\tboxShadow: shadows.expanded,\n\t\t\t\tborderRadius: '8px 8px 0 0',\n\t\t\t\tbackdropFilter: 'blur(12px)',\n\t\t\t},\n\t\t}\n\n\t\treturn stateStyles[state] as Keyframe\n\t}\n\n\t// Calculate responsive width based on viewport\n\tprivate getResponsiveWidth(): string {\n\t\tif (typeof window === 'undefined') return '40vw'\n\n\t\tconst vw = window.innerWidth\n\t\tif (vw < 768) return 'calc(100vw - 32px)'\n\t\tif (vw < 1024) return '70vw'\n\t\tif (vw < 1280) return '60vw'\n\t\treturn '40vw'\n\t}\n\n\t// Update expanded width on window resize\n\tprivate updateExpandedWidth() {\n\t\tconst container = this.containerRef.value\n\t\tif (container && this.currentState === 'expanded') {\n\t\t\tcontainer.style.width = this.getResponsiveWidth()\n\t\t}\n\t}\n\n\t// Initialize component styles after first render\n\tfirstUpdated() {\n\t\t// Apply initial styles\n\t\tthis.applyInitialStyles()\n\t\t// Apply saved position\n\t\tthis.updateContainerPosition()\n\t}\n\n\t// Apply initial styles to elements\n\tprivate applyInitialStyles() {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\n\t\tif (container) {\n\t\t\tconst initialStyle = this.getStyleForState(this.currentState)\n\t\t\tObject.assign(container.style, initialStyle)\n\n\t\t\t// Safari compatibility for backdrop filter\n\t\t\tif ('webkitBackdropFilter' in container.style) {\n\t\t\t\t;(container.style as any).webkitBackdropFilter = initialStyle.backdropFilter\n\t\t\t}\n\t\t}\n\n\t\t// Set initial content opacity\n\t\tif (content) {\n\t\t\tcontent.style.opacity = this.isContentVisible ? '1' : '0'\n\t\t}\n\n\t\t// Set initial icon rotation\n\t\tif (icon && this.currentState === 'expanded') {\n\t\t\ticon.style.transform = 'rotate(180deg)'\n\t\t}\n\t}\n\n\t// Public method to toggle between minimized and expanded\n\ttoggleState() {\n\t\tconst newState = this.currentState === 'minimized' ? 'expanded' : 'minimized'\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'internal',\n\t\t\ttarget: newState,\n\t\t\ttype: 'state',\n\t\t})\n\t}\n\n\t// Public method to close (hide) the boat\n\tclose() {\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'internal',\n\t\t\ttarget: 'hidden',\n\t\t\ttype: 'state',\n\t\t})\n\t}\n\n\t// Load saved position from localStorage\n\tprivate loadSavedPosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst saved = localStorage.getItem('schmancy-boat-position')\n\t\tif (saved) {\n\t\t\ttry {\n\t\t\t\tconst parsed: SavedPosition = JSON.parse(saved)\n\t\t\t\tthis.position = { x: parsed.x, y: parsed.y }\n\t\t\t\tthis.anchor = parsed.anchor\n\t\t\t} catch (e) {\n\t\t\t\t// Use default position if parse fails\n\t\t\t}\n\t\t}\n\t}\n\n\t// Save position to localStorage\n\tprivate savePosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst toSave: SavedPosition = {\n\t\t\tx: this.position.x,\n\t\t\ty: this.position.y,\n\t\t\tanchor: this.anchor,\n\t\t}\n\t\tlocalStorage.setItem('schmancy-boat-position', JSON.stringify(toSave))\n\t}\n\n\t// Setup drag pipeline for the header\n\tprivate setupDragPipeline() {\n\t\tif (typeof window === 'undefined') return\n\n\t\t// Wait for header element to be available\n\t\tsetTimeout(() => {\n\t\t\tconst header = this.headerRef.value\n\t\t\tconst container = this.containerRef.value\n\t\t\tif (!header || !container) return\n\n\t\t\t// Track whether we should process click events\n\t\t\tlet hasDragged = false\n\t\t\tconst DRAG_THRESHOLD = 5 // pixels\n\n\t\t\tconst dragStart$ = fromEvent<MouseEvent>(header, 'mousedown').pipe(\n\t\t\t\tfilter((e: MouseEvent) => e.button === 0), // Left mouse button only\n\t\t\t\ttap((e: MouseEvent) => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t// Don't set isDragging yet - wait to see if user actually drags\n\t\t\t\t\thasDragged = false\n\t\t\t\t}),\n\t\t\t\tmap((e: MouseEvent) => {\n\t\t\t\t\t// Get the current position of the boat in viewport coordinates\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\n\t\t\t\t\t// Calculate the offset from where the user clicked to the boat's position\n\t\t\t\t\t// This offset will be maintained throughout the drag\n\t\t\t\t\tconst offsetX = e.clientX - rect.left\n\t\t\t\t\tconst offsetY = e.clientY - rect.top\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstartMouseX: e.clientX,\n\t\t\t\t\t\tstartMouseY: e.clientY,\n\t\t\t\t\t\toffsetX,\n\t\t\t\t\t\toffsetY,\n\t\t\t\t\t\tinitialRect: rect,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst dragMove$ = fromEvent<MouseEvent>(window, 'mousemove')\n\t\t\tconst dragEnd$ = fromEvent<MouseEvent>(window, 'mouseup')\n\n\t\t\tdragStart$\n\t\t\t\t.pipe(\n\t\t\t\t\tswitchMap(({ startMouseX, startMouseY, offsetX, offsetY, initialRect }) =>\n\t\t\t\t\t\tdragMove$.pipe(\n\t\t\t\t\t\t\t// Remove throttling for smoother movement\n\t\t\t\t\t\t\tmap((moveEvent: MouseEvent) => {\n\t\t\t\t\t\t\t\tconst deltaX = moveEvent.clientX - startMouseX\n\t\t\t\t\t\t\t\tconst deltaY = moveEvent.clientY - startMouseY\n\n\t\t\t\t\t\t\t\t// Check if we've moved beyond the threshold\n\t\t\t\t\t\t\t\tconst distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY)\n\t\t\t\t\t\t\t\tif (distance > DRAG_THRESHOLD && !hasDragged) {\n\t\t\t\t\t\t\t\t\thasDragged = true\n\t\t\t\t\t\t\t\t\tthis.isDragging = true\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Only update position if actually dragging\n\t\t\t\t\t\t\t\tif (!hasDragged) {\n\t\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Calculate where the boat should be positioned\n\t\t\t\t\t\t\t\t// The boat should follow the cursor while maintaining the initial offset\n\t\t\t\t\t\t\t\tconst targetLeft = moveEvent.clientX - offsetX\n\t\t\t\t\t\t\t\tconst targetTop = moveEvent.clientY - offsetY\n\n\t\t\t\t\t\t\t\t// Get viewport dimensions\n\t\t\t\t\t\t\t\tconst vw = window.innerWidth\n\t\t\t\t\t\t\t\tconst vh = window.innerHeight\n\n\t\t\t\t\t\t\t\t// Clamp to viewport bounds\n\t\t\t\t\t\t\t\tconst clampedLeft = Math.max(0, Math.min(targetLeft, vw - initialRect.width))\n\t\t\t\t\t\t\t\tconst clampedTop = Math.max(0, Math.min(targetTop, vh - initialRect.height))\n\n\t\t\t\t\t\t\t\t// Convert to position values based on current anchor\n\t\t\t\t\t\t\t\tlet newX: number\n\t\t\t\t\t\t\t\tlet newY: number\n\n\t\t\t\t\t\t\t\tif (this.anchor.includes('right')) {\n\t\t\t\t\t\t\t\t\t// Distance from right edge\n\t\t\t\t\t\t\t\t\tnewX = vw - (clampedLeft + initialRect.width)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Distance from left edge\n\t\t\t\t\t\t\t\t\tnewX = clampedLeft\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (this.anchor.includes('bottom')) {\n\t\t\t\t\t\t\t\t\t// Distance from bottom edge\n\t\t\t\t\t\t\t\t\tnewY = vh - (clampedTop + initialRect.height)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Distance from top edge\n\t\t\t\t\t\t\t\t\tnewY = clampedTop\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn { x: Math.max(0, newX), y: Math.max(0, newY) }\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfilter(position => position !== null),\n\t\t\t\t\t\t\ttap(position => {\n\t\t\t\t\t\t\t\tif (hasDragged && position) {\n\t\t\t\t\t\t\t\t\tthis.position = position\n\t\t\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\t\t\t// Check if we need to update anchor\n\t\t\t\t\t\t\t\t\tthis.updateAnchor()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\ttakeUntil(dragEnd$),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\tfinalize(() => {\n\t\t\t\t\t\t// If we didn't drag, trigger the click\n\t\t\t\t\t\tif (!hasDragged) {\n\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Save position only if we actually dragged\n\t\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.isDragging = false\n\t\t\t\t\t\thasDragged = false\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\t\t}, 100)\n\t}\n\n\t// Update container position based on anchor and position values\n\tprivate updateContainerPosition() {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Reset all position styles\n\t\tcontainer.style.removeProperty('left')\n\t\tcontainer.style.removeProperty('right')\n\t\tcontainer.style.removeProperty('top')\n\t\tcontainer.style.removeProperty('bottom')\n\n\t\t// Apply new position based on anchor\n\t\tif (this.anchor.includes('right')) {\n\t\t\tcontainer.style.right = `${this.position.x}px`\n\t\t} else {\n\t\t\tcontainer.style.left = `${this.position.x}px`\n\t\t}\n\n\t\tif (this.anchor.includes('bottom')) {\n\t\t\tcontainer.style.bottom = `${this.position.y}px`\n\t\t} else {\n\t\t\tcontainer.style.top = `${this.position.y}px`\n\t\t}\n\t}\n\n\t// Update anchor based on current position\n\tprivate updateAnchor() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\tconst rect = container.getBoundingClientRect()\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\n\t\tconst isRight = rect.left > vw / 2\n\t\tconst isBottom = rect.top > vh / 2\n\n\t\tconst newAnchor = `${isBottom ? 'bottom' : 'top'}-${isRight ? 'right' : 'left'}` as typeof this.anchor\n\n\t\tif (newAnchor !== this.anchor) {\n\t\t\t// Calculate new position values for the new anchor\n\t\t\tif (isRight) {\n\t\t\t\tthis.position.x = vw - rect.right\n\t\t\t} else {\n\t\t\t\tthis.position.x = rect.left\n\t\t\t}\n\n\t\t\tif (isBottom) {\n\t\t\t\tthis.position.y = vh - rect.bottom\n\t\t\t} else {\n\t\t\t\tthis.position.y = rect.top\n\t\t\t}\n\n\t\t\tthis.anchor = newAnchor\n\t\t}\n\t}\n\n\t// Cleanup on component disconnect\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.currentAnimation?.cancel()\n\t\tthis.stateChange$.complete()\n\t}\n\n\t// Render the component\n\tprotected render(): unknown {\n\t\t// Calculate dynamic values\n\t\tconst surfaceElevation = this.currentState === 'minimized' ? (this.isLowered ? '1' : '3') : '4'\n\t\tconst isMinimized = this.currentState === 'minimized'\n\t\tconst iconName = isMinimized ? 'expand_less' : 'expand_more'\n\n\t\t// Dynamic styles for dragging state\n\t\tconst containerClass = `boat-container z-[9999] fixed overflow-y-auto flex flex-col transition-shadow ${\n\t\t\tthis.isDragging ? 'dragging opacity-95' : ''\n\t\t}`\n\n\t\treturn html`\n\t\t\t<div class=\"${containerClass}\" ${ref(this.containerRef)}>\n\t\t\t\t<!-- Header section -->\n\t\t\t\t<section class=\"sticky top-0 z-10\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\televation=\"${surfaceElevation}\"\n\t\t\t\t\t\trounded=\"${isMinimized ? 'none' : 'top'}\"\n\t\t\t\t\t\ttype=\"containerLowest\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"boat-header sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging ? 'cursor-grabbing' : 'cursor-move'}\"\n\t\t\t\t\t\t\t${ref(this.headerRef)}\n\t\t\t\t\t\t\ttitle=\"Drag to move, click to expand/collapse\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<!-- Drag handle indicator -->\n\t\t\t\t\t\t\t<div class=\"drag-handle flex items-center text-surface-onVariant opacity-40\">\n\t\t\t\t\t\t\t\t<schmancy-icon style=\"font-size: 20px\">drag_indicator</schmancy-icon>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Header content slot -->\n\t\t\t\t\t\t\t<div class=\"flex-1 min-w-fit items-center justify-start\">\n\t\t\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Control buttons -->\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-1 flex-shrink-0\">\n\t\t\t\t\t\t\t\t<!-- Toggle button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"${isMinimized ? 'text' : 'filled tonal'}\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=${isMinimized ? 'Expand' : 'Minimize'}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span class=\"icon-container\" ${ref(this.iconRef)}> ${iconName} </span>\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t\t\t<!-- Close button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.close()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=\"Close\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Content section -->\n\t\t\t\t<schmancy-surface\n\t\t\t\t\t.hidden=${!this.isContentVisible}\n\t\t\t\t\ttype=\"containerLow\"\n\t\t\t\t\tclass=\"boat-content z-0 flex-1\"\n\t\t\t\t\t${ref(this.contentRef)}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</schmancy-surface>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-boat': SchmancyBoat\n\t}\n}\n"],"names":["SchmancyBoat","TailwindElement","css","constructor","super","arguments","this","stateChange$","Subject","containerRef","createRef","contentRef","iconRef","headerRef","ANIMATION_CONFIG","durations","expand","minimize","hide","content","easing","emphasized","decelerate","accelerate","standard","shadows","fab","fabLowered","expanded","currentState","isContentVisible","isAnimating","isLowered","isDragging","position","x","y","anchor","state","value","next","source","target","type","lowered","connectedCallback","loadSavedPosition","setupUnifiedPipeline","setupDragPipeline","resize$","window","fromEvent","pipe","debounceTime","filter","tap","EMPTY","merge","of","scan","event","updateExpandedWidth","resized","current","previous","pending","switchMap","animateTransition","dispatchEvent","CustomEvent","detail","bubbles","composed","catchError","err","finalize","shareReplay","takeUntil","disconnecting","subscribe","fromState","toState","currentAnimation","cancel","animations","createAnimations","Promise","resolve","mainAnimation","container","finished","then","catch","icon","config","fromStyles","getStyleForState","toStyles","animate","duration","fill","opacity","transform","isExpanding","baseStyles","width","maxWidth","maxHeight","borderRadius","hidden","pointerEvents","boxShadow","backdropFilter","minimized","getResponsiveWidth","vw","innerWidth","style","firstUpdated","applyInitialStyles","updateContainerPosition","initialStyle","Object","assign","webkitBackdropFilter","toggleState","newState","close","saved","localStorage","getItem","parsed","JSON","parse","e","savePosition","toSave","setItem","stringify","setTimeout","header","hasDragged","dragStart$","button","preventDefault","stopPropagation","map","rect","getBoundingClientRect","offsetX","clientX","left","offsetY","clientY","top","startMouseX","startMouseY","initialRect","dragMove$","dragEnd$","moveEvent","deltaX","deltaY","Math","sqrt","targetLeft","targetTop","vh","innerHeight","clampedLeft","max","min","clampedTop","height","newX","newY","includes","updateAnchor","removeProperty","right","bottom","isRight","isBottom","newAnchor","disconnectedCallback","complete","render","surfaceElevation","isMinimized","iconName","containerClass","html","ref","__decorateClass","property","String","reflect","prototype","Boolean","customElement"],"mappings":"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"}