@g9tm/lynxcontrols 0.0.0-stage → 1.4.0

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 (545) hide show
  1. package/README.md +22 -2
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/base/base.css +16 -0
  4. package/dist/base/base.css.map +1 -0
  5. package/dist/base/control.d.ts +44 -0
  6. package/dist/base/control.d.ts.map +1 -0
  7. package/dist/base/control.jsx +24 -0
  8. package/dist/base/control.jsx.map +1 -0
  9. package/dist/base/corner-badge.d.ts +35 -0
  10. package/dist/base/corner-badge.d.ts.map +1 -0
  11. package/dist/base/corner-badge.jsx +45 -0
  12. package/dist/base/corner-badge.jsx.map +1 -0
  13. package/dist/base/disposer.d.ts +28 -0
  14. package/dist/base/disposer.d.ts.map +1 -0
  15. package/dist/base/disposer.jsx +61 -0
  16. package/dist/base/disposer.jsx.map +1 -0
  17. package/dist/base/index.d.ts +10 -0
  18. package/dist/base/index.d.ts.map +1 -0
  19. package/dist/base/index.jsx +9 -0
  20. package/dist/base/press.d.ts +38 -0
  21. package/dist/base/press.d.ts.map +1 -0
  22. package/dist/base/press.jsx +73 -0
  23. package/dist/base/press.jsx.map +1 -0
  24. package/dist/base/pressable.d.ts +25 -0
  25. package/dist/base/pressable.d.ts.map +1 -0
  26. package/dist/base/pressable.jsx +38 -0
  27. package/dist/base/pressable.jsx.map +1 -0
  28. package/dist/base/selection-item.d.ts +29 -0
  29. package/dist/base/selection-item.d.ts.map +1 -0
  30. package/dist/base/selection-item.jsx +6 -0
  31. package/dist/base/selection-item.jsx.map +1 -0
  32. package/dist/base/timers.d.ts +7 -0
  33. package/dist/base/timers.d.ts.map +1 -0
  34. package/dist/base/timers.jsx +10 -0
  35. package/dist/base/timers.jsx.map +1 -0
  36. package/dist/base/use-controllable-state.d.ts +30 -0
  37. package/dist/base/use-controllable-state.d.ts.map +1 -0
  38. package/dist/base/use-controllable-state.jsx +49 -0
  39. package/dist/base/use-controllable-state.jsx.map +1 -0
  40. package/dist/base/use-stable-callback.d.ts +8 -0
  41. package/dist/base/use-stable-callback.d.ts.map +1 -0
  42. package/dist/base/use-stable-callback.jsx +12 -0
  43. package/dist/base/use-stable-callback.jsx.map +1 -0
  44. package/dist/button/button.css +162 -0
  45. package/dist/button/button.css.map +1 -0
  46. package/dist/button/button.d.ts +52 -0
  47. package/dist/button/button.d.ts.map +1 -0
  48. package/dist/button/button.jsx +87 -0
  49. package/dist/button/button.jsx.map +1 -0
  50. package/dist/button/header-action-button.d.ts +34 -0
  51. package/dist/button/header-action-button.d.ts.map +1 -0
  52. package/dist/button/header-action-button.jsx +51 -0
  53. package/dist/button/header-action-button.jsx.map +1 -0
  54. package/dist/button/icon-button.d.ts +46 -0
  55. package/dist/button/icon-button.d.ts.map +1 -0
  56. package/dist/button/icon-button.jsx +69 -0
  57. package/dist/button/icon-button.jsx.map +1 -0
  58. package/dist/button/index.d.ts +9 -0
  59. package/dist/button/index.d.ts.map +1 -0
  60. package/dist/button/index.jsx +8 -0
  61. package/dist/button/nav-card.d.ts +58 -0
  62. package/dist/button/nav-card.d.ts.map +1 -0
  63. package/dist/button/nav-card.jsx +95 -0
  64. package/dist/button/nav-card.jsx.map +1 -0
  65. package/dist/button/safe-tap.d.ts +27 -0
  66. package/dist/button/safe-tap.d.ts.map +1 -0
  67. package/dist/button/safe-tap.jsx +46 -0
  68. package/dist/button/safe-tap.jsx.map +1 -0
  69. package/dist/button/safe.d.ts +84 -0
  70. package/dist/button/safe.d.ts.map +1 -0
  71. package/dist/button/safe.jsx +116 -0
  72. package/dist/button/safe.jsx.map +1 -0
  73. package/dist/button/vertical-icon-text-button.d.ts +18 -0
  74. package/dist/button/vertical-icon-text-button.d.ts.map +1 -0
  75. package/dist/button/vertical-icon-text-button.jsx +21 -0
  76. package/dist/button/vertical-icon-text-button.jsx.map +1 -0
  77. package/dist/button/visuals.d.ts +53 -0
  78. package/dist/button/visuals.d.ts.map +1 -0
  79. package/dist/button/visuals.jsx +92 -0
  80. package/dist/button/visuals.jsx.map +1 -0
  81. package/dist/cascade/cascade-panel.d.ts +80 -0
  82. package/dist/cascade/cascade-panel.d.ts.map +1 -0
  83. package/dist/cascade/cascade-panel.jsx +179 -0
  84. package/dist/cascade/cascade-panel.jsx.map +1 -0
  85. package/dist/cascade/cascade.css +70 -0
  86. package/dist/cascade/cascade.css.map +1 -0
  87. package/dist/cascade/index.d.ts +3 -0
  88. package/dist/cascade/index.d.ts.map +1 -0
  89. package/dist/cascade/index.jsx +2 -0
  90. package/dist/cascade/model.d.ts +68 -0
  91. package/dist/cascade/model.d.ts.map +1 -0
  92. package/dist/cascade/model.jsx +161 -0
  93. package/dist/cascade/model.jsx.map +1 -0
  94. package/dist/deferred/deferred-content.d.ts +82 -0
  95. package/dist/deferred/deferred-content.d.ts.map +1 -0
  96. package/dist/deferred/deferred-content.jsx +263 -0
  97. package/dist/deferred/deferred-content.jsx.map +1 -0
  98. package/dist/deferred/deferred.css +62 -0
  99. package/dist/deferred/deferred.css.map +1 -0
  100. package/dist/deferred/index.d.ts +3 -0
  101. package/dist/deferred/index.d.ts.map +1 -0
  102. package/dist/deferred/index.jsx +2 -0
  103. package/dist/deferred/readiness-signal.d.ts +16 -0
  104. package/dist/deferred/readiness-signal.d.ts.map +1 -0
  105. package/dist/deferred/readiness-signal.jsx +29 -0
  106. package/dist/deferred/readiness-signal.jsx.map +1 -0
  107. package/dist/display/activity-indicator.d.ts +21 -0
  108. package/dist/display/activity-indicator.d.ts.map +1 -0
  109. package/dist/display/activity-indicator.jsx +22 -0
  110. package/dist/display/activity-indicator.jsx.map +1 -0
  111. package/dist/display/culture-date-time-label.d.ts +64 -0
  112. package/dist/display/culture-date-time-label.d.ts.map +1 -0
  113. package/dist/display/culture-date-time-label.jsx +71 -0
  114. package/dist/display/culture-date-time-label.jsx.map +1 -0
  115. package/dist/display/display.css +217 -0
  116. package/dist/display/display.css.map +1 -0
  117. package/dist/display/index.d.ts +7 -0
  118. package/dist/display/index.d.ts.map +1 -0
  119. package/dist/display/index.jsx +6 -0
  120. package/dist/display/progress-bar.d.ts +38 -0
  121. package/dist/display/progress-bar.d.ts.map +1 -0
  122. package/dist/display/progress-bar.jsx +57 -0
  123. package/dist/display/progress-bar.jsx.map +1 -0
  124. package/dist/display/separator.d.ts +30 -0
  125. package/dist/display/separator.d.ts.map +1 -0
  126. package/dist/display/separator.jsx +55 -0
  127. package/dist/display/separator.jsx.map +1 -0
  128. package/dist/display/shimmer.d.ts +41 -0
  129. package/dist/display/shimmer.d.ts.map +1 -0
  130. package/dist/display/shimmer.jsx +41 -0
  131. package/dist/display/shimmer.jsx.map +1 -0
  132. package/dist/display/title-with-line.d.ts +13 -0
  133. package/dist/display/title-with-line.d.ts.map +1 -0
  134. package/dist/display/title-with-line.jsx +21 -0
  135. package/dist/display/title-with-line.jsx.map +1 -0
  136. package/dist/edge-panel/edge-panel.css +132 -0
  137. package/dist/edge-panel/edge-panel.css.map +1 -0
  138. package/dist/edge-panel/edge-panel.d.ts +87 -0
  139. package/dist/edge-panel/edge-panel.d.ts.map +1 -0
  140. package/dist/edge-panel/edge-panel.jsx +326 -0
  141. package/dist/edge-panel/edge-panel.jsx.map +1 -0
  142. package/dist/edge-panel/helper.d.ts +27 -0
  143. package/dist/edge-panel/helper.d.ts.map +1 -0
  144. package/dist/edge-panel/helper.jsx +118 -0
  145. package/dist/edge-panel/helper.jsx.map +1 -0
  146. package/dist/edge-panel/index.d.ts +4 -0
  147. package/dist/edge-panel/index.d.ts.map +1 -0
  148. package/dist/edge-panel/index.jsx +3 -0
  149. package/dist/edge-panel/types.d.ts +155 -0
  150. package/dist/edge-panel/types.d.ts.map +1 -0
  151. package/dist/edge-panel/types.jsx +139 -0
  152. package/dist/edge-panel/types.jsx.map +1 -0
  153. package/dist/expander/expander.css +54 -0
  154. package/dist/expander/expander.css.map +1 -0
  155. package/dist/expander/expander.d.ts +46 -0
  156. package/dist/expander/expander.d.ts.map +1 -0
  157. package/dist/expander/expander.jsx +110 -0
  158. package/dist/expander/expander.jsx.map +1 -0
  159. package/dist/expander/index.d.ts +2 -0
  160. package/dist/expander/index.d.ts.map +1 -0
  161. package/dist/expander/index.jsx +1 -0
  162. package/dist/fields/dictation.d.ts +43 -0
  163. package/dist/fields/dictation.d.ts.map +1 -0
  164. package/dist/fields/dictation.jsx +124 -0
  165. package/dist/fields/dictation.jsx.map +1 -0
  166. package/dist/fields/editor.d.ts +26 -0
  167. package/dist/fields/editor.d.ts.map +1 -0
  168. package/dist/fields/editor.jsx +46 -0
  169. package/dist/fields/editor.jsx.map +1 -0
  170. package/dist/fields/fields.css +156 -0
  171. package/dist/fields/fields.css.map +1 -0
  172. package/dist/fields/index.d.ts +12 -0
  173. package/dist/fields/index.d.ts.map +1 -0
  174. package/dist/fields/index.jsx +11 -0
  175. package/dist/fields/input-policy.d.ts +48 -0
  176. package/dist/fields/input-policy.d.ts.map +1 -0
  177. package/dist/fields/input-policy.jsx +215 -0
  178. package/dist/fields/input-policy.jsx.map +1 -0
  179. package/dist/fields/outlined-field.d.ts +146 -0
  180. package/dist/fields/outlined-field.d.ts.map +1 -0
  181. package/dist/fields/outlined-field.jsx +196 -0
  182. package/dist/fields/outlined-field.jsx.map +1 -0
  183. package/dist/fields/pin-entry.d.ts +63 -0
  184. package/dist/fields/pin-entry.d.ts.map +1 -0
  185. package/dist/fields/pin-entry.jsx +293 -0
  186. package/dist/fields/pin-entry.jsx.map +1 -0
  187. package/dist/fields/search-entry.d.ts +35 -0
  188. package/dist/fields/search-entry.d.ts.map +1 -0
  189. package/dist/fields/search-entry.jsx +118 -0
  190. package/dist/fields/search-entry.jsx.map +1 -0
  191. package/dist/fields/slot-layout.d.ts +33 -0
  192. package/dist/fields/slot-layout.d.ts.map +1 -0
  193. package/dist/fields/slot-layout.jsx +33 -0
  194. package/dist/fields/slot-layout.jsx.map +1 -0
  195. package/dist/fields/text-entry.d.ts +62 -0
  196. package/dist/fields/text-entry.d.ts.map +1 -0
  197. package/dist/fields/text-entry.jsx +72 -0
  198. package/dist/fields/text-entry.jsx.map +1 -0
  199. package/dist/fields/use-dictation.d.ts +34 -0
  200. package/dist/fields/use-dictation.d.ts.map +1 -0
  201. package/dist/fields/use-dictation.jsx +80 -0
  202. package/dist/fields/use-dictation.jsx.map +1 -0
  203. package/dist/fields/use-text-input.d.ts +150 -0
  204. package/dist/fields/use-text-input.d.ts.map +1 -0
  205. package/dist/fields/use-text-input.jsx +237 -0
  206. package/dist/fields/use-text-input.jsx.map +1 -0
  207. package/dist/fields/validator.d.ts +14 -0
  208. package/dist/fields/validator.d.ts.map +1 -0
  209. package/dist/fields/validator.jsx +20 -0
  210. package/dist/fields/validator.jsx.map +1 -0
  211. package/dist/host/back.d.ts +42 -0
  212. package/dist/host/back.d.ts.map +1 -0
  213. package/dist/host/back.jsx +47 -0
  214. package/dist/host/back.jsx.map +1 -0
  215. package/dist/host/hooks.d.ts +85 -0
  216. package/dist/host/hooks.d.ts.map +1 -0
  217. package/dist/host/hooks.jsx +163 -0
  218. package/dist/host/hooks.jsx.map +1 -0
  219. package/dist/host/host.css +81 -0
  220. package/dist/host/host.css.map +1 -0
  221. package/dist/host/host.d.ts +70 -0
  222. package/dist/host/host.d.ts.map +1 -0
  223. package/dist/host/host.jsx +229 -0
  224. package/dist/host/host.jsx.map +1 -0
  225. package/dist/host/index.d.ts +9 -0
  226. package/dist/host/index.d.ts.map +1 -0
  227. package/dist/host/index.jsx +8 -0
  228. package/dist/host/keyboard.d.ts +24 -0
  229. package/dist/host/keyboard.d.ts.map +1 -0
  230. package/dist/host/keyboard.jsx +28 -0
  231. package/dist/host/keyboard.jsx.map +1 -0
  232. package/dist/host/layers.d.ts +69 -0
  233. package/dist/host/layers.d.ts.map +1 -0
  234. package/dist/host/layers.jsx +111 -0
  235. package/dist/host/layers.jsx.map +1 -0
  236. package/dist/host/page-loading-overlay.d.ts +17 -0
  237. package/dist/host/page-loading-overlay.d.ts.map +1 -0
  238. package/dist/host/page-loading-overlay.jsx +16 -0
  239. package/dist/host/page-loading-overlay.jsx.map +1 -0
  240. package/dist/host/readiness.d.ts +57 -0
  241. package/dist/host/readiness.d.ts.map +1 -0
  242. package/dist/host/readiness.jsx +138 -0
  243. package/dist/host/readiness.jsx.map +1 -0
  244. package/dist/host/registry.d.ts +106 -0
  245. package/dist/host/registry.d.ts.map +1 -0
  246. package/dist/host/registry.jsx +93 -0
  247. package/dist/host/registry.jsx.map +1 -0
  248. package/dist/icon/icon.css +39 -0
  249. package/dist/icon/icon.css.map +1 -0
  250. package/dist/icon/icon.d.ts +57 -0
  251. package/dist/icon/icon.d.ts.map +1 -0
  252. package/dist/icon/icon.jsx +115 -0
  253. package/dist/icon/icon.jsx.map +1 -0
  254. package/dist/icon/index.d.ts +4 -0
  255. package/dist/icon/index.d.ts.map +1 -0
  256. package/dist/icon/index.jsx +3 -0
  257. package/dist/icon/slot.d.ts +45 -0
  258. package/dist/icon/slot.d.ts.map +1 -0
  259. package/dist/icon/slot.jsx +61 -0
  260. package/dist/icon/slot.jsx.map +1 -0
  261. package/dist/icon/swatch.d.ts +29 -0
  262. package/dist/icon/swatch.d.ts.map +1 -0
  263. package/dist/icon/swatch.jsx +25 -0
  264. package/dist/icon/swatch.jsx.map +1 -0
  265. package/dist/index.d.ts +23 -0
  266. package/dist/index.d.ts.map +1 -0
  267. package/dist/index.jsx +1 -0
  268. package/dist/pickers/combo-box.d.ts +42 -0
  269. package/dist/pickers/combo-box.d.ts.map +1 -0
  270. package/dist/pickers/combo-box.jsx +129 -0
  271. package/dist/pickers/combo-box.jsx.map +1 -0
  272. package/dist/pickers/date-time-picker.d.ts +63 -0
  273. package/dist/pickers/date-time-picker.d.ts.map +1 -0
  274. package/dist/pickers/date-time-picker.jsx +141 -0
  275. package/dist/pickers/date-time-picker.jsx.map +1 -0
  276. package/dist/pickers/date-time.d.ts +82 -0
  277. package/dist/pickers/date-time.d.ts.map +1 -0
  278. package/dist/pickers/date-time.jsx +130 -0
  279. package/dist/pickers/date-time.jsx.map +1 -0
  280. package/dist/pickers/index.d.ts +10 -0
  281. package/dist/pickers/index.d.ts.map +1 -0
  282. package/dist/pickers/index.jsx +9 -0
  283. package/dist/pickers/picker-sheet.d.ts +21 -0
  284. package/dist/pickers/picker-sheet.d.ts.map +1 -0
  285. package/dist/pickers/picker-sheet.jsx +61 -0
  286. package/dist/pickers/picker-sheet.jsx.map +1 -0
  287. package/dist/pickers/picker.d.ts +32 -0
  288. package/dist/pickers/picker.d.ts.map +1 -0
  289. package/dist/pickers/picker.jsx +72 -0
  290. package/dist/pickers/picker.jsx.map +1 -0
  291. package/dist/pickers/pickers.css +219 -0
  292. package/dist/pickers/pickers.css.map +1 -0
  293. package/dist/pickers/timespan-picker.d.ts +36 -0
  294. package/dist/pickers/timespan-picker.d.ts.map +1 -0
  295. package/dist/pickers/timespan-picker.jsx +99 -0
  296. package/dist/pickers/timespan-picker.jsx.map +1 -0
  297. package/dist/pickers/timespan.d.ts +38 -0
  298. package/dist/pickers/timespan.d.ts.map +1 -0
  299. package/dist/pickers/timespan.jsx +49 -0
  300. package/dist/pickers/timespan.jsx.map +1 -0
  301. package/dist/pickers/trigger.d.ts +34 -0
  302. package/dist/pickers/trigger.d.ts.map +1 -0
  303. package/dist/pickers/trigger.jsx +77 -0
  304. package/dist/pickers/trigger.jsx.map +1 -0
  305. package/dist/pickers/wheel-column.d.ts +32 -0
  306. package/dist/pickers/wheel-column.d.ts.map +1 -0
  307. package/dist/pickers/wheel-column.jsx +99 -0
  308. package/dist/pickers/wheel-column.jsx.map +1 -0
  309. package/dist/plus-button/index.d.ts +3 -0
  310. package/dist/plus-button/index.d.ts.map +1 -0
  311. package/dist/plus-button/index.jsx +2 -0
  312. package/dist/plus-button/model.d.ts +65 -0
  313. package/dist/plus-button/model.d.ts.map +1 -0
  314. package/dist/plus-button/model.jsx +86 -0
  315. package/dist/plus-button/model.jsx.map +1 -0
  316. package/dist/plus-button/plus-button.css +67 -0
  317. package/dist/plus-button/plus-button.css.map +1 -0
  318. package/dist/plus-button/plus-button.d.ts +38 -0
  319. package/dist/plus-button/plus-button.d.ts.map +1 -0
  320. package/dist/plus-button/plus-button.jsx +155 -0
  321. package/dist/plus-button/plus-button.jsx.map +1 -0
  322. package/dist/popup/frame.d.ts +101 -0
  323. package/dist/popup/frame.d.ts.map +1 -0
  324. package/dist/popup/frame.jsx +244 -0
  325. package/dist/popup/frame.jsx.map +1 -0
  326. package/dist/popup/index.d.ts +8 -0
  327. package/dist/popup/index.d.ts.map +1 -0
  328. package/dist/popup/index.jsx +7 -0
  329. package/dist/popup/input-form.d.ts +35 -0
  330. package/dist/popup/input-form.d.ts.map +1 -0
  331. package/dist/popup/input-form.jsx +160 -0
  332. package/dist/popup/input-form.jsx.map +1 -0
  333. package/dist/popup/input.d.ts +175 -0
  334. package/dist/popup/input.d.ts.map +1 -0
  335. package/dist/popup/input.jsx +176 -0
  336. package/dist/popup/input.jsx.map +1 -0
  337. package/dist/popup/popup-view.d.ts +25 -0
  338. package/dist/popup/popup-view.d.ts.map +1 -0
  339. package/dist/popup/popup-view.jsx +67 -0
  340. package/dist/popup/popup-view.jsx.map +1 -0
  341. package/dist/popup/popup.css +203 -0
  342. package/dist/popup/popup.css.map +1 -0
  343. package/dist/popup/queue.d.ts +90 -0
  344. package/dist/popup/queue.d.ts.map +1 -0
  345. package/dist/popup/queue.jsx +309 -0
  346. package/dist/popup/queue.jsx.map +1 -0
  347. package/dist/popup/service.d.ts +60 -0
  348. package/dist/popup/service.d.ts.map +1 -0
  349. package/dist/popup/service.jsx +342 -0
  350. package/dist/popup/service.jsx.map +1 -0
  351. package/dist/popup/types.d.ts +211 -0
  352. package/dist/popup/types.d.ts.map +1 -0
  353. package/dist/popup/types.jsx +218 -0
  354. package/dist/popup/types.jsx.map +1 -0
  355. package/dist/provider/contexts.d.ts +41 -0
  356. package/dist/provider/contexts.d.ts.map +1 -0
  357. package/dist/provider/contexts.jsx +11 -0
  358. package/dist/provider/contexts.jsx.map +1 -0
  359. package/dist/provider/global-events.d.ts +8 -0
  360. package/dist/provider/global-events.d.ts.map +1 -0
  361. package/dist/provider/global-events.jsx +17 -0
  362. package/dist/provider/global-events.jsx.map +1 -0
  363. package/dist/provider/hooks.d.ts +49 -0
  364. package/dist/provider/hooks.d.ts.map +1 -0
  365. package/dist/provider/hooks.jsx +72 -0
  366. package/dist/provider/hooks.jsx.map +1 -0
  367. package/dist/provider/index.d.ts +5 -0
  368. package/dist/provider/index.d.ts.map +1 -0
  369. package/dist/provider/index.jsx +3 -0
  370. package/dist/provider/provider.css +18 -0
  371. package/dist/provider/provider.css.map +1 -0
  372. package/dist/provider/provider.d.ts +51 -0
  373. package/dist/provider/provider.d.ts.map +1 -0
  374. package/dist/provider/provider.jsx +290 -0
  375. package/dist/provider/provider.jsx.map +1 -0
  376. package/dist/provider/settings.d.ts +99 -0
  377. package/dist/provider/settings.d.ts.map +1 -0
  378. package/dist/provider/settings.jsx +45 -0
  379. package/dist/provider/settings.jsx.map +1 -0
  380. package/dist/provider/theme-css.d.ts +12 -0
  381. package/dist/provider/theme-css.d.ts.map +1 -0
  382. package/dist/provider/theme-css.jsx +19 -0
  383. package/dist/provider/theme-css.jsx.map +1 -0
  384. package/dist/provider/theme-root.d.ts +10 -0
  385. package/dist/provider/theme-root.d.ts.map +1 -0
  386. package/dist/provider/theme-root.jsx +24 -0
  387. package/dist/provider/theme-root.jsx.map +1 -0
  388. package/dist/provider/theme.css +473 -0
  389. package/dist/provider/theme.css.map +1 -0
  390. package/dist/range-slider/index.d.ts +3 -0
  391. package/dist/range-slider/index.d.ts.map +1 -0
  392. package/dist/range-slider/index.jsx +2 -0
  393. package/dist/range-slider/math.d.ts +23 -0
  394. package/dist/range-slider/math.d.ts.map +1 -0
  395. package/dist/range-slider/math.jsx +71 -0
  396. package/dist/range-slider/math.jsx.map +1 -0
  397. package/dist/range-slider/range-slider.css +90 -0
  398. package/dist/range-slider/range-slider.css.map +1 -0
  399. package/dist/range-slider/range-slider.d.ts +52 -0
  400. package/dist/range-slider/range-slider.d.ts.map +1 -0
  401. package/dist/range-slider/range-slider.jsx +159 -0
  402. package/dist/range-slider/range-slider.jsx.map +1 -0
  403. package/dist/selection/index.d.ts +5 -0
  404. package/dist/selection/index.d.ts.map +1 -0
  405. package/dist/selection/index.jsx +3 -0
  406. package/dist/selection/model.d.ts +53 -0
  407. package/dist/selection/model.d.ts.map +1 -0
  408. package/dist/selection/model.jsx +69 -0
  409. package/dist/selection/model.jsx.map +1 -0
  410. package/dist/selection/selection-sheet.d.ts +80 -0
  411. package/dist/selection/selection-sheet.d.ts.map +1 -0
  412. package/dist/selection/selection-sheet.jsx +362 -0
  413. package/dist/selection/selection-sheet.jsx.map +1 -0
  414. package/dist/selection/selection.css +75 -0
  415. package/dist/selection/selection.css.map +1 -0
  416. package/dist/selection/use-selection-model.d.ts +9 -0
  417. package/dist/selection/use-selection-model.d.ts.map +1 -0
  418. package/dist/selection/use-selection-model.jsx +22 -0
  419. package/dist/selection/use-selection-model.jsx.map +1 -0
  420. package/dist/sheet/frame.d.ts +45 -0
  421. package/dist/sheet/frame.d.ts.map +1 -0
  422. package/dist/sheet/frame.jsx +205 -0
  423. package/dist/sheet/frame.jsx.map +1 -0
  424. package/dist/sheet/header.d.ts +35 -0
  425. package/dist/sheet/header.d.ts.map +1 -0
  426. package/dist/sheet/header.jsx +145 -0
  427. package/dist/sheet/header.jsx.map +1 -0
  428. package/dist/sheet/height-memo.d.ts +47 -0
  429. package/dist/sheet/height-memo.d.ts.map +1 -0
  430. package/dist/sheet/height-memo.jsx +100 -0
  431. package/dist/sheet/height-memo.jsx.map +1 -0
  432. package/dist/sheet/index.d.ts +11 -0
  433. package/dist/sheet/index.d.ts.map +1 -0
  434. package/dist/sheet/index.jsx +10 -0
  435. package/dist/sheet/loadable.d.ts +35 -0
  436. package/dist/sheet/loadable.d.ts.map +1 -0
  437. package/dist/sheet/loadable.jsx +65 -0
  438. package/dist/sheet/loadable.jsx.map +1 -0
  439. package/dist/sheet/options.d.ts +220 -0
  440. package/dist/sheet/options.d.ts.map +1 -0
  441. package/dist/sheet/options.jsx +91 -0
  442. package/dist/sheet/options.jsx.map +1 -0
  443. package/dist/sheet/processing.d.ts +22 -0
  444. package/dist/sheet/processing.d.ts.map +1 -0
  445. package/dist/sheet/processing.jsx +66 -0
  446. package/dist/sheet/processing.jsx.map +1 -0
  447. package/dist/sheet/service.d.ts +55 -0
  448. package/dist/sheet/service.d.ts.map +1 -0
  449. package/dist/sheet/service.jsx +143 -0
  450. package/dist/sheet/service.jsx.map +1 -0
  451. package/dist/sheet/sheet.css +195 -0
  452. package/dist/sheet/sheet.css.map +1 -0
  453. package/dist/sheet/sheet.d.ts +19 -0
  454. package/dist/sheet/sheet.d.ts.map +1 -0
  455. package/dist/sheet/sheet.jsx +40 -0
  456. package/dist/sheet/sheet.jsx.map +1 -0
  457. package/dist/sheet/sizing.d.ts +69 -0
  458. package/dist/sheet/sizing.d.ts.map +1 -0
  459. package/dist/sheet/sizing.jsx +146 -0
  460. package/dist/sheet/sizing.jsx.map +1 -0
  461. package/dist/sheet/stack.d.ts +161 -0
  462. package/dist/sheet/stack.d.ts.map +1 -0
  463. package/dist/sheet/stack.jsx +378 -0
  464. package/dist/sheet/stack.jsx.map +1 -0
  465. package/dist/swipe/index.d.ts +3 -0
  466. package/dist/swipe/index.d.ts.map +1 -0
  467. package/dist/swipe/index.jsx +2 -0
  468. package/dist/swipe/model.d.ts +72 -0
  469. package/dist/swipe/model.d.ts.map +1 -0
  470. package/dist/swipe/model.jsx +66 -0
  471. package/dist/swipe/model.jsx.map +1 -0
  472. package/dist/swipe/swipe-view.d.ts +40 -0
  473. package/dist/swipe/swipe-view.d.ts.map +1 -0
  474. package/dist/swipe/swipe-view.jsx +163 -0
  475. package/dist/swipe/swipe-view.jsx.map +1 -0
  476. package/dist/swipe/swipe.css +34 -0
  477. package/dist/swipe/swipe.css.map +1 -0
  478. package/dist/tab-bar/index.d.ts +4 -0
  479. package/dist/tab-bar/index.d.ts.map +1 -0
  480. package/dist/tab-bar/index.jsx +3 -0
  481. package/dist/tab-bar/metrics.d.ts +230 -0
  482. package/dist/tab-bar/metrics.d.ts.map +1 -0
  483. package/dist/tab-bar/metrics.jsx +221 -0
  484. package/dist/tab-bar/metrics.jsx.map +1 -0
  485. package/dist/tab-bar/model.d.ts +170 -0
  486. package/dist/tab-bar/model.d.ts.map +1 -0
  487. package/dist/tab-bar/model.jsx +349 -0
  488. package/dist/tab-bar/model.jsx.map +1 -0
  489. package/dist/tab-bar/tab-bar.css +173 -0
  490. package/dist/tab-bar/tab-bar.css.map +1 -0
  491. package/dist/tab-bar/tab-bar.d.ts +56 -0
  492. package/dist/tab-bar/tab-bar.d.ts.map +1 -0
  493. package/dist/tab-bar/tab-bar.jsx +343 -0
  494. package/dist/tab-bar/tab-bar.jsx.map +1 -0
  495. package/dist/tabs/index.d.ts +3 -0
  496. package/dist/tabs/index.d.ts.map +1 -0
  497. package/dist/tabs/index.jsx +2 -0
  498. package/dist/tabs/model.d.ts +83 -0
  499. package/dist/tabs/model.d.ts.map +1 -0
  500. package/dist/tabs/model.jsx +113 -0
  501. package/dist/tabs/model.jsx.map +1 -0
  502. package/dist/tabs/tab-view.d.ts +47 -0
  503. package/dist/tabs/tab-view.d.ts.map +1 -0
  504. package/dist/tabs/tab-view.jsx +227 -0
  505. package/dist/tabs/tab-view.jsx.map +1 -0
  506. package/dist/tabs/tabs.css +182 -0
  507. package/dist/tabs/tabs.css.map +1 -0
  508. package/dist/toast/index.d.ts +3 -0
  509. package/dist/toast/index.d.ts.map +1 -0
  510. package/dist/toast/index.jsx +2 -0
  511. package/dist/toast/service.d.ts +48 -0
  512. package/dist/toast/service.d.ts.map +1 -0
  513. package/dist/toast/service.jsx +201 -0
  514. package/dist/toast/service.jsx.map +1 -0
  515. package/dist/toast/store.d.ts +174 -0
  516. package/dist/toast/store.d.ts.map +1 -0
  517. package/dist/toast/store.jsx +353 -0
  518. package/dist/toast/store.jsx.map +1 -0
  519. package/dist/toast/toast.css +152 -0
  520. package/dist/toast/toast.css.map +1 -0
  521. package/dist/toggle/checkbox-math.d.ts +52 -0
  522. package/dist/toggle/checkbox-math.d.ts.map +1 -0
  523. package/dist/toggle/checkbox-math.jsx +111 -0
  524. package/dist/toggle/checkbox-math.jsx.map +1 -0
  525. package/dist/toggle/checkbox.d.ts +56 -0
  526. package/dist/toggle/checkbox.d.ts.map +1 -0
  527. package/dist/toggle/checkbox.jsx +152 -0
  528. package/dist/toggle/checkbox.jsx.map +1 -0
  529. package/dist/toggle/chip-group.d.ts +50 -0
  530. package/dist/toggle/chip-group.d.ts.map +1 -0
  531. package/dist/toggle/chip-group.jsx +107 -0
  532. package/dist/toggle/chip-group.jsx.map +1 -0
  533. package/dist/toggle/index.d.ts +5 -0
  534. package/dist/toggle/index.d.ts.map +1 -0
  535. package/dist/toggle/index.jsx +4 -0
  536. package/dist/toggle/switch.d.ts +52 -0
  537. package/dist/toggle/switch.d.ts.map +1 -0
  538. package/dist/toggle/switch.jsx +192 -0
  539. package/dist/toggle/switch.jsx.map +1 -0
  540. package/dist/toggle/toggle.css +189 -0
  541. package/dist/toggle/toggle.css.map +1 -0
  542. package/package.json +155 -4
  543. package/rspeedy/index.d.ts +21 -0
  544. package/rspeedy/index.mjs +75 -0
  545. package/rspeedy/index.test.mjs +52 -0
@@ -0,0 +1,353 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) Object.defineProperty(obj, key, {
3
+ value: value,
4
+ enumerable: true,
5
+ configurable: true,
6
+ writable: true
7
+ });
8
+ else obj[key] = value;
9
+ return obj;
10
+ }
11
+ const G9ToastType = {
12
+ Information: 'information',
13
+ Success: 'success',
14
+ Warning: 'warning',
15
+ Error: 'error'
16
+ };
17
+ const G9ToastPosition = {
18
+ TopLeft: 'topLeft',
19
+ TopCenter: 'topCenter',
20
+ TopRight: 'topRight',
21
+ MiddleLeft: 'middleLeft',
22
+ MiddleCenter: 'middleCenter',
23
+ MiddleRight: 'middleRight',
24
+ BottomLeft: 'bottomLeft',
25
+ BottomCenter: 'bottomCenter',
26
+ BottomRight: 'bottomRight'
27
+ };
28
+ const g9DefaultToastOptions = Object.freeze({
29
+ durationMs: 3000
30
+ });
31
+ const g9ToastTimings = Object.freeze({
32
+ enterMs: 250,
33
+ exitMs: 200,
34
+ loaderFadeInMs: 200,
35
+ loaderFadeOutMs: 180,
36
+ reanchorMs: 220
37
+ });
38
+ const g9MaxToastsPerStack = 4;
39
+ const isPlain = (r)=>!r.entry.hasAction;
40
+ class G9ToastStore {
41
+ getSnapshot() {
42
+ return this.snapshot;
43
+ }
44
+ subscribe(listener) {
45
+ this.listeners.add(listener);
46
+ return ()=>this.listeners.delete(listener);
47
+ }
48
+ show(message, type = 'information', options = {}) {
49
+ var _options_position, _options_durationMs;
50
+ const position = null != (_options_position = options.position) ? _options_position : this.config.defaultPosition();
51
+ const hasAction = !!options.actionText && !!options.action;
52
+ const duration = null != (_options_durationMs = options.durationMs) ? _options_durationMs : g9DefaultToastOptions.durationMs;
53
+ const stack = this.records.filter((r)=>r.entry.position === position && 'leaving' !== r.entry.status);
54
+ const newest = stack[stack.length - 1];
55
+ if (!this.disposed && newest && !hasAction && isPlain(newest) && newest.entry.message === message && newest.entry.type === type) {
56
+ newest.entry = {
57
+ ...newest.entry,
58
+ refreshes: newest.entry.refreshes + 1
59
+ };
60
+ newest.durationMs = duration;
61
+ this.arm(newest);
62
+ this.emit();
63
+ return this.handle(newest);
64
+ }
65
+ let closed;
66
+ const done = new Promise((r)=>closed = r);
67
+ const record = {
68
+ entry: {
69
+ id: this.nextId++,
70
+ message,
71
+ type,
72
+ position,
73
+ icon: options.icon,
74
+ actionText: hasAction ? options.actionText : null,
75
+ hasAction,
76
+ status: 'entering',
77
+ refreshes: 0
78
+ },
79
+ action: hasAction ? options.action : null,
80
+ durationMs: duration,
81
+ timer: null,
82
+ actionRan: false,
83
+ closed
84
+ };
85
+ if (this.disposed) {
86
+ closed();
87
+ return {
88
+ id: record.entry.id,
89
+ dismiss: ()=>{},
90
+ closed: done
91
+ };
92
+ }
93
+ this.records.push(record);
94
+ for (const extra of stack.slice(0, Math.max(0, stack.length + 1 - g9MaxToastsPerStack)))this.leave(extra);
95
+ this.later(()=>{
96
+ if ('entering' === record.entry.status) {
97
+ record.entry = {
98
+ ...record.entry,
99
+ status: 'shown'
100
+ };
101
+ this.emit();
102
+ }
103
+ }, g9ToastTimings.enterMs);
104
+ this.arm(record);
105
+ this.emit();
106
+ return {
107
+ ...this.handle(record),
108
+ closed: done
109
+ };
110
+ }
111
+ dismissToast(id) {
112
+ for (const r of [
113
+ ...this.records
114
+ ])if (void 0 === id || r.entry.id === id) this.leave(r);
115
+ }
116
+ pressAction(id) {
117
+ const r = this.records.find((x)=>x.entry.id === id);
118
+ if (!r || r.actionRan || !r.action) return;
119
+ r.actionRan = true;
120
+ this.config.runAction(r.action);
121
+ this.leave(r);
122
+ }
123
+ showLoading(text = '') {
124
+ this.hold({
125
+ token: this.nextId++,
126
+ text,
127
+ lease: false
128
+ });
129
+ }
130
+ beginLoading(text = '') {
131
+ const hold = {
132
+ token: this.nextId++,
133
+ text,
134
+ lease: true
135
+ };
136
+ this.hold(hold);
137
+ let released = false;
138
+ return {
139
+ dispose: ()=>{
140
+ if (released) return;
141
+ released = true;
142
+ this.release(hold.token);
143
+ }
144
+ };
145
+ }
146
+ dismissLoading() {
147
+ const anonymous = [
148
+ ...this.holds
149
+ ].reverse().find((h)=>!h.lease);
150
+ if (anonymous) this.release(anonymous.token);
151
+ }
152
+ showLoadingToast(text = '', position = null) {
153
+ this.loadingToast = {
154
+ text,
155
+ position: null != position ? position : this.config.defaultPosition()
156
+ };
157
+ this.emit();
158
+ }
159
+ dismissLoadingToast() {
160
+ if (!this.loadingToast) return;
161
+ this.loadingToast = null;
162
+ this.emit();
163
+ }
164
+ showProgress(title, detail = null, progress = 0, position = null) {
165
+ this.progress = {
166
+ title,
167
+ detail,
168
+ progress: clamp01(progress),
169
+ position: null != position ? position : this.config.defaultPosition()
170
+ };
171
+ this.emit();
172
+ }
173
+ updateProgress(title, detail, progress) {
174
+ if (!this.progress) return;
175
+ this.progress = {
176
+ ...this.progress,
177
+ ...null != title ? {
178
+ title
179
+ } : {},
180
+ ...null != detail ? {
181
+ detail
182
+ } : {},
183
+ ...null != progress ? {
184
+ progress: clamp01(progress)
185
+ } : {}
186
+ };
187
+ this.emit();
188
+ }
189
+ dismissProgress() {
190
+ if (!this.progress) return;
191
+ this.progress = null;
192
+ this.emit();
193
+ }
194
+ refreshBottomInsets(animate = true) {
195
+ this.insetVersion += 1;
196
+ this.reanchorAnimated = animate;
197
+ this.emit();
198
+ }
199
+ setBottomOverlay(key, heightPx) {
200
+ if (null === heightPx || heightPx <= 0) this.overlays.delete(key);
201
+ else this.overlays.set(key, heightPx);
202
+ this.emit();
203
+ }
204
+ dismissAll() {
205
+ this.dismissToast();
206
+ this.holds = [];
207
+ this.updateLoader();
208
+ this.loadingToast = null;
209
+ this.progress = null;
210
+ this.emit();
211
+ }
212
+ dispose() {
213
+ this.disposed = true;
214
+ for (const r of this.records){
215
+ if (null !== r.timer) this.config.clearTimer(r.timer);
216
+ r.closed();
217
+ }
218
+ this.records = [];
219
+ if (null !== this.loaderTimer) this.config.clearTimer(this.loaderTimer);
220
+ this.holds = [];
221
+ this.loaderStatus = null;
222
+ this.emit();
223
+ }
224
+ handle(record) {
225
+ return {
226
+ id: record.entry.id,
227
+ dismiss: ()=>this.leave(record),
228
+ closed: Promise.resolve()
229
+ };
230
+ }
231
+ arm(record) {
232
+ if (null !== record.timer) this.config.clearTimer(record.timer);
233
+ record.timer = this.config.setTimer(()=>{
234
+ record.timer = null;
235
+ this.leave(record);
236
+ }, record.durationMs);
237
+ }
238
+ leave(record) {
239
+ if ('leaving' === record.entry.status || !this.records.includes(record)) return;
240
+ if (null !== record.timer) this.config.clearTimer(record.timer);
241
+ record.timer = null;
242
+ record.entry = {
243
+ ...record.entry,
244
+ status: 'leaving'
245
+ };
246
+ this.emit();
247
+ this.later(()=>{
248
+ this.records = this.records.filter((r)=>r !== record);
249
+ record.closed();
250
+ this.emit();
251
+ }, g9ToastTimings.exitMs);
252
+ }
253
+ hold(hold) {
254
+ this.holds.push(hold);
255
+ this.updateLoader();
256
+ this.emit();
257
+ }
258
+ release(token) {
259
+ this.holds = this.holds.filter((h)=>h.token !== token);
260
+ this.updateLoader();
261
+ this.emit();
262
+ }
263
+ updateLoader() {
264
+ const top = this.holds[this.holds.length - 1];
265
+ if (top) {
266
+ this.loaderText = top.text;
267
+ if (null === this.loaderStatus || 'leaving' === this.loaderStatus) {
268
+ if (null !== this.loaderTimer) this.config.clearTimer(this.loaderTimer);
269
+ this.loaderStatus = 'entering';
270
+ this.loaderTimer = this.config.setTimer(()=>{
271
+ this.loaderTimer = null;
272
+ this.loaderStatus = 'shown';
273
+ this.emit();
274
+ }, g9ToastTimings.loaderFadeInMs);
275
+ }
276
+ return;
277
+ }
278
+ if (null === this.loaderStatus || 'leaving' === this.loaderStatus) return;
279
+ if (null !== this.loaderTimer) this.config.clearTimer(this.loaderTimer);
280
+ this.loaderStatus = 'leaving';
281
+ this.loaderTimer = this.config.setTimer(()=>{
282
+ this.loaderTimer = null;
283
+ this.loaderStatus = null;
284
+ this.emit();
285
+ }, g9ToastTimings.loaderFadeOutMs);
286
+ }
287
+ later(callback, ms) {
288
+ this.config.setTimer(()=>{
289
+ if (!this.disposed) callback();
290
+ }, ms);
291
+ }
292
+ build() {
293
+ return {
294
+ toasts: this.records.map((r)=>r.entry),
295
+ loader: this.loaderStatus ? {
296
+ text: this.loaderText,
297
+ status: this.loaderStatus
298
+ } : null,
299
+ loadingToast: this.loadingToast,
300
+ progress: this.progress,
301
+ insetVersion: this.insetVersion,
302
+ reanchorAnimated: this.reanchorAnimated,
303
+ bottomOverlayHeight: [
304
+ ...this.overlays.values()
305
+ ].reduce((a, b)=>a + b, 0)
306
+ };
307
+ }
308
+ emit() {
309
+ this.snapshot = this.build();
310
+ for (const l of this.listeners)l();
311
+ }
312
+ constructor(config){
313
+ _define_property(this, "config", void 0);
314
+ _define_property(this, "records", void 0);
315
+ _define_property(this, "holds", void 0);
316
+ _define_property(this, "loaderStatus", void 0);
317
+ _define_property(this, "loaderText", void 0);
318
+ _define_property(this, "loaderTimer", void 0);
319
+ _define_property(this, "loadingToast", void 0);
320
+ _define_property(this, "progress", void 0);
321
+ _define_property(this, "insetVersion", void 0);
322
+ _define_property(this, "reanchorAnimated", void 0);
323
+ _define_property(this, "overlays", void 0);
324
+ _define_property(this, "nextId", void 0);
325
+ _define_property(this, "listeners", void 0);
326
+ _define_property(this, "snapshot", void 0);
327
+ _define_property(this, "disposed", void 0);
328
+ this.config = config;
329
+ this.records = [];
330
+ this.holds = [];
331
+ this.loaderStatus = null;
332
+ this.loaderText = '';
333
+ this.loaderTimer = null;
334
+ this.loadingToast = null;
335
+ this.progress = null;
336
+ this.insetVersion = 0;
337
+ this.reanchorAnimated = true;
338
+ this.overlays = new Map();
339
+ this.nextId = 1;
340
+ this.listeners = new Set();
341
+ this.disposed = false;
342
+ this.snapshot = this.build();
343
+ }
344
+ }
345
+ function clamp01(v) {
346
+ return Number.isFinite(v) ? Math.min(1, Math.max(0, v)) : 0;
347
+ }
348
+ function resolveToastPosition(position, rtl) {
349
+ return null != position ? position : rtl ? 'bottomLeft' : 'bottomRight';
350
+ }
351
+ export { G9ToastPosition, G9ToastStore, G9ToastType, g9DefaultToastOptions, g9MaxToastsPerStack, g9ToastTimings, resolveToastPosition };
352
+
353
+ //# sourceMappingURL=store.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast/store.jsx","sources":["../../src/toast/store.ts"],"sourcesContent":["import type { G9IconInput } from '../icon/icon';\n\n// Toast state (MAUI `G9ToastHelper`): typed toasts in per-position stacks, the reference-counted full-screen loader,\n// the compact loading toast and the progress toast, as a pure store. The view renders `getSnapshot()`; timers come\n// from the caller so tests drive time.\n\n/** Toast kind (MAUI `G9ToastType`). */\nexport const G9ToastType = {\n Information: 'information',\n Success: 'success',\n Warning: 'warning',\n Error: 'error',\n} as const;\nexport type G9ToastType = (typeof G9ToastType)[keyof typeof G9ToastType];\n\n/** Nine anchors (MAUI `G9ToastPosition`). */\nexport const G9ToastPosition = {\n TopLeft: 'topLeft',\n TopCenter: 'topCenter',\n TopRight: 'topRight',\n MiddleLeft: 'middleLeft',\n MiddleCenter: 'middleCenter',\n MiddleRight: 'middleRight',\n BottomLeft: 'bottomLeft',\n BottomCenter: 'bottomCenter',\n BottomRight: 'bottomRight',\n} as const;\nexport type G9ToastPosition = (typeof G9ToastPosition)[keyof typeof G9ToastPosition];\n\n/** Options of one toast (MAUI `G9ToastOptions`). */\nexport interface G9ToastOptions {\n /** Default: bottom right (LTR) / bottom left (RTL). */\n readonly position?: G9ToastPosition | null;\n /** Auto-dismiss after this many ms. Default 3000. */\n readonly durationMs?: number;\n /** Icon override; default the type's glyph. */\n readonly icon?: G9IconInput;\n /** Action button text (e.g. \"Undo\"); with `action`. */\n readonly actionText?: string | null;\n /** Runs once when the action button is tapped (through the provider's safe executor). */\n readonly action?: (() => unknown) | null;\n}\n\n/** Default toast options (MAUI `G9ToastOptions.Default`). */\nexport const g9DefaultToastOptions: Readonly<Required<Pick<G9ToastOptions, 'durationMs'>>> = Object.freeze({\n durationMs: 3000,\n});\n\n/** Timings (MAUI toast guide). */\nexport const g9ToastTimings = Object.freeze({\n enterMs: 250,\n exitMs: 200,\n loaderFadeInMs: 200,\n loaderFadeOutMs: 180,\n reanchorMs: 220,\n});\n/** Most toasts per stack (MAUI `MaxToastsPerStack`). */\nexport const g9MaxToastsPerStack = 4;\n\n/** One live toast. */\nexport interface G9ToastEntry {\n readonly id: number;\n readonly message: string;\n readonly type: G9ToastType;\n readonly position: G9ToastPosition;\n readonly icon: G9IconInput;\n readonly actionText: string | null;\n readonly hasAction: boolean;\n readonly status: 'entering' | 'shown' | 'leaving';\n /** Bumped when an identical toast collapsed into this one (its lifetime restarted). */\n readonly refreshes: number;\n}\n\n/** The full-screen loader (visible while at least one hold is open). */\nexport interface G9LoaderState {\n readonly text: string;\n readonly status: 'entering' | 'shown' | 'leaving';\n}\n\n/** The compact loading toast. */\nexport interface G9LoadingToastState {\n readonly text: string;\n readonly position: G9ToastPosition;\n}\n\n/** The progress toast. */\nexport interface G9ProgressToastState {\n readonly title: string;\n readonly detail: string | null;\n /** 0…1. */\n readonly progress: number;\n readonly position: G9ToastPosition;\n}\n\n/** What the view renders. */\nexport interface G9ToastSnapshot {\n readonly toasts: ReadonlyArray<G9ToastEntry>;\n readonly loader: G9LoaderState | null;\n readonly loadingToast: G9LoadingToastState | null;\n readonly progress: G9ProgressToastState | null;\n /** Bumped by `refreshBottomInsets`; `reanchorAnimated` says whether the move glides. */\n readonly insetVersion: number;\n readonly reanchorAnimated: boolean;\n /** Heights of bottom-anchored overlays the bottom stacks sit above (MAUI `IG9BottomAnchoredOverlay`). */\n readonly bottomOverlayHeight: number;\n}\n\n/** A hold on the full-screen loader (MAUI `BeginLoadingAsync` lease); disposing twice is harmless. */\nexport interface G9LoadingLease {\n dispose(): void;\n}\n\n/** A shown toast. */\nexport interface G9ToastHandle {\n readonly id: number;\n dismiss(): void;\n /** Settles when the toast left the screen. */\n readonly closed: Promise<void>;\n}\n\n/** Timing and action plumbing of the store. */\nexport interface G9ToastStoreConfig {\n setTimer(callback: () => void, ms: number): unknown;\n clearTimer(handle: unknown): void;\n /** Runs a toast action (once per tap is the store's job; errors are the runner's). */\n runAction(action: () => unknown): void;\n /** Where a toast without a position goes (bottom right in LTR, bottom left in RTL). */\n defaultPosition(): G9ToastPosition;\n}\n\ninterface ToastRecord {\n entry: G9ToastEntry;\n action: (() => unknown) | null;\n durationMs: number;\n timer: unknown;\n actionRan: boolean;\n closed: () => void;\n}\n\ninterface Hold {\n readonly token: number;\n readonly text: string;\n readonly lease: boolean;\n}\n\nconst isPlain = (r: ToastRecord) => !r.entry.hasAction;\n\n/** The toast store. */\nexport class G9ToastStore {\n private records: ToastRecord[] = [];\n private holds: Hold[] = [];\n private loaderStatus: G9LoaderState['status'] | null = null;\n private loaderText = '';\n private loaderTimer: unknown = null;\n private loadingToast: G9LoadingToastState | null = null;\n private progress: G9ProgressToastState | null = null;\n private insetVersion = 0;\n private reanchorAnimated = true;\n private readonly overlays = new Map<string, number>();\n private nextId = 1;\n private readonly listeners = new Set<() => void>();\n private snapshot: G9ToastSnapshot;\n private disposed = false;\n\n constructor(private readonly config: G9ToastStoreConfig) {\n this.snapshot = this.build();\n }\n\n getSnapshot(): G9ToastSnapshot {\n return this.snapshot;\n }\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n /**\n * Shows a toast (MAUI `ShowToastAsync`). An identical newest toast of the same stack (same message and type, no\n * action on either) is refreshed instead (lifetime restarted). Past four per stack the oldest leaves.\n */\n show(message: string, type: G9ToastType = 'information', options: G9ToastOptions = {}): G9ToastHandle {\n const position = options.position ?? this.config.defaultPosition();\n const hasAction = !!options.actionText && !!options.action;\n const duration = options.durationMs ?? g9DefaultToastOptions.durationMs;\n const stack = this.records.filter((r) => r.entry.position === position && r.entry.status !== 'leaving');\n const newest = stack[stack.length - 1];\n if (\n !this.disposed &&\n newest &&\n !hasAction &&\n isPlain(newest) &&\n newest.entry.message === message &&\n newest.entry.type === type\n ) {\n newest.entry = { ...newest.entry, refreshes: newest.entry.refreshes + 1 };\n newest.durationMs = duration;\n this.arm(newest);\n this.emit();\n return this.handle(newest);\n }\n let closed!: () => void;\n const done = new Promise<void>((r) => (closed = r));\n const record: ToastRecord = {\n entry: {\n id: this.nextId++,\n message,\n type,\n position,\n icon: options.icon,\n actionText: hasAction ? (options.actionText as string) : null,\n hasAction,\n status: 'entering',\n refreshes: 0,\n },\n action: hasAction ? (options.action as () => unknown) : null,\n durationMs: duration,\n timer: null,\n actionRan: false,\n closed,\n };\n if (this.disposed) {\n closed();\n return { id: record.entry.id, dismiss: () => {}, closed: done };\n }\n this.records.push(record);\n for (const extra of stack.slice(0, Math.max(0, stack.length + 1 - g9MaxToastsPerStack))) this.leave(extra);\n this.later(() => {\n if (record.entry.status === 'entering') {\n record.entry = { ...record.entry, status: 'shown' };\n this.emit();\n }\n }, g9ToastTimings.enterMs);\n this.arm(record);\n this.emit();\n return { ...this.handle(record), closed: done };\n }\n\n /** Dismisses one toast, or every typed toast (MAUI `DismissToastAsync`). */\n dismissToast(id?: number): void {\n for (const r of [...this.records]) if (id === undefined || r.entry.id === id) this.leave(r);\n }\n\n /** The action button: runs the action once (a second tap during the exit does nothing) and dismisses. */\n pressAction(id: number): void {\n const r = this.records.find((x) => x.entry.id === id);\n if (!r || r.actionRan || !r.action) return;\n r.actionRan = true;\n this.config.runAction(r.action);\n this.leave(r);\n }\n\n /** Raises the full-screen loader (reference-counted; the newest text wins) (MAUI `ShowLoadingAsync`). */\n showLoading(text = ''): void {\n this.hold({ token: this.nextId++, text, lease: false });\n }\n\n /** A lease on the loader (MAUI `BeginLoadingAsync`). */\n beginLoading(text = ''): G9LoadingLease {\n const hold = { token: this.nextId++, text, lease: true };\n this.hold(hold);\n let released = false;\n return {\n dispose: () => {\n if (released) return;\n released = true;\n this.release(hold.token);\n },\n };\n }\n\n /** Releases the newest anonymous hold; a lease's hold is never released here (MAUI `DismissLoadingAsync`). */\n dismissLoading(): void {\n const anonymous = [...this.holds].reverse().find((h) => !h.lease);\n if (anonymous) this.release(anonymous.token);\n }\n\n /** Shows (or relabels) the compact loading toast (MAUI `ShowLoadingToastAsync`); it never auto-dismisses. */\n showLoadingToast(text = '', position: G9ToastPosition | null = null): void {\n this.loadingToast = { text, position: position ?? this.config.defaultPosition() };\n this.emit();\n }\n\n dismissLoadingToast(): void {\n if (!this.loadingToast) return;\n this.loadingToast = null;\n this.emit();\n }\n\n /** Shows the progress toast, replacing an active one (MAUI `ShowProgressToastAsync`). */\n showProgress(\n title: string,\n detail: string | null = null,\n progress = 0,\n position: G9ToastPosition | null = null,\n ): void {\n this.progress = { title, detail, progress: clamp01(progress), position: position ?? this.config.defaultPosition() };\n this.emit();\n }\n\n /** Updates the progress toast; omitted parts stay (MAUI `UpdateProgressToastAsync`). No-op without one. */\n updateProgress(title?: string | null, detail?: string | null, progress?: number | null): void {\n if (!this.progress) return;\n this.progress = {\n ...this.progress,\n ...(title != null ? { title } : {}),\n ...(detail !== undefined && detail !== null ? { detail } : {}),\n ...(progress != null ? { progress: clamp01(progress) } : {}),\n };\n this.emit();\n }\n\n dismissProgress(): void {\n if (!this.progress) return;\n this.progress = null;\n this.emit();\n }\n\n /** Re-anchors every live toast to the current insets; `animate` glides (220 ms) (MAUI `RefreshBottomInsetsAsync`). */\n refreshBottomInsets(animate = true): void {\n this.insetVersion += 1;\n this.reanchorAnimated = animate;\n this.emit();\n }\n\n /** Registers (or clears with `null`) a bottom-anchored overlay the bottom stacks must sit above. */\n setBottomOverlay(key: string, heightPx: number | null): void {\n if (heightPx === null || heightPx <= 0) this.overlays.delete(key);\n else this.overlays.set(key, heightPx);\n this.emit();\n }\n\n /** Clears everything, the loader regardless of its count (MAUI `DismissAllAsync`). */\n dismissAll(): void {\n this.dismissToast();\n this.holds = [];\n this.updateLoader();\n this.loadingToast = null;\n this.progress = null;\n this.emit();\n }\n\n /** The host unmounted. */\n dispose(): void {\n this.disposed = true;\n for (const r of this.records) {\n if (r.timer !== null) this.config.clearTimer(r.timer);\n r.closed();\n }\n this.records = [];\n if (this.loaderTimer !== null) this.config.clearTimer(this.loaderTimer);\n this.holds = [];\n this.loaderStatus = null;\n this.emit();\n }\n\n private handle(record: ToastRecord): G9ToastHandle {\n return {\n id: record.entry.id,\n dismiss: () => this.leave(record),\n closed: Promise.resolve(),\n };\n }\n\n private arm(record: ToastRecord): void {\n if (record.timer !== null) this.config.clearTimer(record.timer);\n record.timer = this.config.setTimer(() => {\n record.timer = null;\n this.leave(record);\n }, record.durationMs);\n }\n\n private leave(record: ToastRecord): void {\n if (record.entry.status === 'leaving' || !this.records.includes(record)) return;\n if (record.timer !== null) this.config.clearTimer(record.timer);\n record.timer = null;\n record.entry = { ...record.entry, status: 'leaving' };\n this.emit();\n this.later(() => {\n this.records = this.records.filter((r) => r !== record);\n record.closed();\n this.emit();\n }, g9ToastTimings.exitMs);\n }\n\n private hold(hold: Hold): void {\n this.holds.push(hold);\n this.updateLoader();\n this.emit();\n }\n\n private release(token: number): void {\n this.holds = this.holds.filter((h) => h.token !== token);\n this.updateLoader();\n this.emit();\n }\n\n private updateLoader(): void {\n const top = this.holds[this.holds.length - 1];\n if (top) {\n this.loaderText = top.text;\n if (this.loaderStatus === null || this.loaderStatus === 'leaving') {\n if (this.loaderTimer !== null) this.config.clearTimer(this.loaderTimer);\n this.loaderStatus = 'entering';\n this.loaderTimer = this.config.setTimer(() => {\n this.loaderTimer = null;\n this.loaderStatus = 'shown';\n this.emit();\n }, g9ToastTimings.loaderFadeInMs);\n }\n return;\n }\n if (this.loaderStatus === null || this.loaderStatus === 'leaving') return;\n if (this.loaderTimer !== null) this.config.clearTimer(this.loaderTimer);\n this.loaderStatus = 'leaving';\n this.loaderTimer = this.config.setTimer(() => {\n this.loaderTimer = null;\n this.loaderStatus = null;\n this.emit();\n }, g9ToastTimings.loaderFadeOutMs);\n }\n\n private later(callback: () => void, ms: number): void {\n this.config.setTimer(() => {\n if (!this.disposed) callback();\n }, ms);\n }\n\n private build(): G9ToastSnapshot {\n return {\n toasts: this.records.map((r) => r.entry),\n loader: this.loaderStatus ? { text: this.loaderText, status: this.loaderStatus } : null,\n loadingToast: this.loadingToast,\n progress: this.progress,\n insetVersion: this.insetVersion,\n reanchorAnimated: this.reanchorAnimated,\n bottomOverlayHeight: [...this.overlays.values()].reduce((a, b) => a + b, 0),\n };\n }\n\n private emit(): void {\n this.snapshot = this.build();\n for (const l of this.listeners) l();\n }\n}\n\nfunction clamp01(v: number): number {\n return Number.isFinite(v) ? Math.min(1, Math.max(0, v)) : 0;\n}\n\n/** The culture default position: bottom right in LTR, bottom left in RTL. */\nexport function resolveToastPosition(position: G9ToastPosition | null | undefined, rtl: boolean): G9ToastPosition {\n return position ?? (rtl ? 'bottomLeft' : 'bottomRight');\n}\n"],"names":["G9ToastType","G9ToastPosition","g9DefaultToastOptions","Object","g9ToastTimings","g9MaxToastsPerStack","isPlain","r","G9ToastStore","listener","message","type","options","_options_position","_options_durationMs","position","hasAction","duration","stack","newest","closed","done","Promise","record","extra","Math","id","undefined","x","text","hold","released","anonymous","h","title","detail","progress","clamp01","animate","key","heightPx","token","top","callback","ms","a","b","l","config","Map","Set","v","Number","resolveToastPosition","rtl"],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ .g9-toast-layer {
2
+ position: absolute;
3
+ top: 0;
4
+ bottom: 0;
5
+ left: 0;
6
+ right: 0;
7
+ }
8
+
9
+ .g9-toast-stack {
10
+ flex-direction: column;
11
+ justify-content: flex-start;
12
+ align-items: flex-end;
13
+ display: flex;
14
+ position: absolute;
15
+ }
16
+
17
+ .g9-toast-stack--bottom {
18
+ flex-direction: column-reverse;
19
+ }
20
+
21
+ .g9-toast-stack--topLeft, .g9-toast-stack--middleLeft, .g9-toast-stack--bottomLeft {
22
+ align-items: flex-start;
23
+ }
24
+
25
+ .g9-toast-stack--topCenter, .g9-toast-stack--middleCenter, .g9-toast-stack--bottomCenter {
26
+ align-items: center;
27
+ }
28
+
29
+ .g9-toast-stack--middleLeft, .g9-toast-stack--middleCenter, .g9-toast-stack--middleRight {
30
+ justify-content: center;
31
+ }
32
+
33
+ .g9-toast {
34
+ border-style: solid;
35
+ border-width: 1px;
36
+ border-color: var(--g9-outline-variant);
37
+ background-color: var(--g9-surface);
38
+ border-radius: 14px;
39
+ flex-direction: row;
40
+ align-items: center;
41
+ max-width: 420px;
42
+ min-height: 48px;
43
+ margin-top: 4px;
44
+ margin-bottom: 4px;
45
+ padding: 10px 14px;
46
+ display: flex;
47
+ position: relative;
48
+ overflow: hidden;
49
+ }
50
+
51
+ .g9-toast__message {
52
+ color: var(--g9-on-surface);
53
+ flex-shrink: 1;
54
+ margin-left: 10px;
55
+ margin-right: 10px;
56
+ font-size: 14px;
57
+ }
58
+
59
+ .g9-toast__detail {
60
+ color: var(--g9-text-secondary);
61
+ margin-left: 10px;
62
+ margin-right: 10px;
63
+ font-size: 12px;
64
+ }
65
+
66
+ .g9-toast__action {
67
+ align-items: center;
68
+ height: 32px;
69
+ padding-left: 8px;
70
+ padding-right: 8px;
71
+ display: flex;
72
+ }
73
+
74
+ .g9-toast__action-text {
75
+ font-size: 14px;
76
+ font-weight: 700;
77
+ }
78
+
79
+ .g9-toast--progress {
80
+ min-width: 240px;
81
+ }
82
+
83
+ .g9-toast__fill {
84
+ background-color: var(--g9-primary);
85
+ opacity: .34;
86
+ transition: transform .25s;
87
+ position: absolute;
88
+ top: 0;
89
+ bottom: 0;
90
+ left: 0;
91
+ right: 0;
92
+ }
93
+
94
+ .g9-toast__progress-text {
95
+ flex-direction: column;
96
+ flex: 1;
97
+ display: flex;
98
+ }
99
+
100
+ .g9-toast__pill {
101
+ background-color: var(--g9-primary-container);
102
+ border-radius: 10px;
103
+ padding: 2px 8px;
104
+ }
105
+
106
+ .g9-toast__pill-text {
107
+ color: var(--g9-on-primary-container);
108
+ font-size: 12px;
109
+ font-weight: 700;
110
+ }
111
+
112
+ .g9-loader {
113
+ justify-content: center;
114
+ align-items: center;
115
+ display: flex;
116
+ position: absolute;
117
+ top: 0;
118
+ bottom: 0;
119
+ left: 0;
120
+ right: 0;
121
+ }
122
+
123
+ .g9-loader__scrim {
124
+ background-color: var(--g9-scrim);
125
+ position: absolute;
126
+ top: 0;
127
+ bottom: 0;
128
+ left: 0;
129
+ right: 0;
130
+ }
131
+
132
+ .g9-loader__card {
133
+ border-style: solid;
134
+ border-width: 1px;
135
+ border-color: var(--g9-outline-variant);
136
+ background-color: var(--g9-inverse-surface);
137
+ border-radius: 14px;
138
+ flex-direction: column;
139
+ align-items: center;
140
+ padding: 20px 24px;
141
+ display: flex;
142
+ }
143
+
144
+ .g9-loader__text {
145
+ text-align: center;
146
+ color: var(--g9-inverse-on-surface);
147
+ margin-top: 12px;
148
+ font-size: 14px;
149
+ }
150
+
151
+
152
+ /*# sourceMappingURL=toast.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack://./src/toast/toast.css"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,OAAO;EACP,QAAQ;AACV;;AAEA;EACE,sBAAsB;EACtB,2BAA2B;EAC3B,qBAAqB;EACrB,aAAa;EACb,kBAAkB;AACpB;;AAEA;EACE,8BAA8B;AAChC;;AAEA;EACE,uBAAuB;AACzB;;AAIA;EADE,mBAAmB;AACrB;;AAMA;EAHE,uBAAuB;AACzB;;AAQA;EALE,mBAAmB;EACnB,iBAAiB;EACjB,uCAAuC;EACvC,mCAAmC;EACnC,mBAAmB;EACnB,mBAAmB;EACnB,mBAAmB;EACnB,gBAAgB;EAChB,gBAAgB;EAChB,eAAe;EACf,kBAAkB;EAClB,kBAAkB;EAClB,aAAa;EACb,kBAAkB;EAClB,gBAAgB;AAClB;;AAQA;EALE,2BAA2B;EAC3B,cAAc;EACd,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;AACjB;;AAQA;EALE,+BAA+B;EAC/B,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;AACjB;;AAQA;EALE,mBAAmB;EACnB,YAAY;EACZ,iBAAiB;EACjB,kBAAkB;EAClB,aAAa;AACf;;AAQA;EALE,eAAe;EACf,gBAAgB;AAClB;;AAQA;EALE,gBAAgB;AAClB;;AAQA;EALE,mCAAmC;EACnC,YAAY;EACZ,0BAA0B;EAC1B,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,OAAO;EACP,QAAQ;AACV;;AAQA;EALE,sBAAsB;EACtB,OAAO;EACP,aAAa;AACf;;AAQA;EALE,6CAA6C;EAC7C,mBAAmB;EACnB,gBAAgB;AAClB;;AAQA;EALE,qCAAqC;EACrC,eAAe;EACf,gBAAgB;AAClB;;AAQA;EALE,uBAAuB;EACvB,mBAAmB;EACnB,aAAa;EACb,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,OAAO;EACP,QAAQ;AACV;;AAQA;EALE,iCAAiC;EACjC,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,OAAO;EACP,QAAQ;AACV;;AAQA;EALE,mBAAmB;EACnB,iBAAiB;EACjB,uCAAuC;EACvC,2CAA2C;EAC3C,mBAAmB;EACnB,sBAAsB;EACtB,mBAAmB;EACnB,kBAAkB;EAClB,aAAa;AACf;;AAQA;EALE,kBAAkB;EAClB,mCAAmC;EACnC,gBAAgB;EAChB,eAAe;AACjB","sourcesContent":[".g9-toast-layer {\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n}\n\n.g9-toast-stack {\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: flex-start;\n}\n\n.g9-toast-stack--bottom {\n flex-direction: column-reverse;\n}\n\n.g9-toast-stack--topLeft,\n.g9-toast-stack--middleLeft,\n.g9-toast-stack--bottomLeft {\n align-items: flex-start;\n}\n\n.g9-toast-stack--topCenter,\n.g9-toast-stack--middleCenter,\n.g9-toast-stack--bottomCenter {\n align-items: center;\n}\n\n.g9-toast-stack--middleLeft,\n.g9-toast-stack--middleCenter,\n.g9-toast-stack--middleRight {\n justify-content: center;\n}\n\n.g9-toast {\n display: flex;\n flex-direction: row;\n align-items: center;\n min-height: 48px;\n max-width: 420px;\n padding: 10px 14px;\n margin-top: 4px;\n margin-bottom: 4px;\n border-radius: 14px;\n border-width: 1px;\n border-style: solid;\n border-color: var(--g9-outline-variant);\n background-color: var(--g9-surface);\n overflow: hidden;\n position: relative;\n}\n\n.g9-toast__message {\n flex-shrink: 1;\n font-size: 14px;\n color: var(--g9-on-surface);\n margin-left: 10px;\n margin-right: 10px;\n}\n\n.g9-toast__detail {\n font-size: 12px;\n color: var(--g9-text-secondary);\n margin-left: 10px;\n margin-right: 10px;\n}\n\n.g9-toast__action {\n height: 32px;\n padding-left: 8px;\n padding-right: 8px;\n display: flex;\n align-items: center;\n}\n\n.g9-toast__action-text {\n font-size: 14px;\n font-weight: 700;\n}\n\n.g9-toast--progress {\n min-width: 240px;\n}\n\n.g9-toast__fill {\n position: absolute;\n top: 0px;\n bottom: 0px;\n left: 0px;\n right: 0px;\n background-color: var(--g9-primary);\n opacity: 0.34;\n transition: transform 250ms;\n}\n\n.g9-toast__progress-text {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.g9-toast__pill {\n padding: 2px 8px;\n border-radius: 10px;\n background-color: var(--g9-primary-container);\n}\n\n.g9-toast__pill-text {\n font-size: 12px;\n font-weight: 700;\n color: var(--g9-on-primary-container);\n}\n\n.g9-loader {\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.g9-loader__scrim {\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: var(--g9-scrim);\n}\n\n.g9-loader__card {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 20px 24px;\n border-radius: 14px;\n border-width: 1px;\n border-style: solid;\n border-color: var(--g9-outline-variant);\n background-color: var(--g9-inverse-surface);\n}\n\n.g9-loader__text {\n margin-top: 12px;\n font-size: 14px;\n text-align: center;\n color: var(--g9-inverse-on-surface);\n}\n"],"sourceRoot":""}
@@ -0,0 +1,52 @@
1
+ /** Progress at which the box fill is complete. */
2
+ export declare const g9CheckFillPhaseEnd: number;
3
+ /** Progress at which the mark starts drawing. */
4
+ export declare const g9CheckMarkPhaseStart: number;
5
+ /** Clamps to [0, 1]; NaN and negatives give 0 (MAUI `Clamp01`). */
6
+ export declare function clamp01(value: number): number;
7
+ /** Animation target: 1 when checked or indeterminate. */
8
+ export declare function targetProgress(isChecked: boolean, isIndeterminate: boolean): number;
9
+ /** Morph target: 1 (dash) when indeterminate, 0 (tick) otherwise. */
10
+ export declare function targetMorph(isIndeterminate: boolean): number;
11
+ /** Tap transition (ADR-0028): indeterminate → checked; otherwise toggle, never into indeterminate. */
12
+ export declare function nextOnTap(isChecked: boolean, isIndeterminate: boolean): {
13
+ checked: boolean;
14
+ indeterminate: boolean;
15
+ };
16
+ /** How much of the box is filled at `progress`. */
17
+ export declare function fillAmount(progress: number): number;
18
+ /** How much of the mark is drawn at `progress`. */
19
+ export declare function markAmount(progress: number): number;
20
+ /** The two-segment mark A→B→C in unit box coordinates. */
21
+ export interface G9CheckMarkGeometry {
22
+ readonly ax: number;
23
+ readonly ay: number;
24
+ readonly bx: number;
25
+ readonly by: number;
26
+ readonly cx: number;
27
+ readonly cy: number;
28
+ }
29
+ /** The visible part of the mark: the end of the first arm, and of the second when it has started. */
30
+ export interface G9CheckMarkTrim {
31
+ readonly isEmpty: boolean;
32
+ readonly firstEndX: number;
33
+ readonly firstEndY: number;
34
+ readonly hasSecond: boolean;
35
+ readonly secondEndX: number;
36
+ readonly secondEndY: number;
37
+ }
38
+ /** The tick. */
39
+ export declare const g9CheckGeometry: G9CheckMarkGeometry;
40
+ /** The indeterminate dash. */
41
+ export declare const g9DashGeometry: G9CheckMarkGeometry;
42
+ /** The mark between tick (0) and dash (1). */
43
+ export declare function resolveCheckMarkGeometry(morph: number): G9CheckMarkGeometry;
44
+ /** Length of the first arm A→B. */
45
+ export declare function firstArmLength(g: G9CheckMarkGeometry): number;
46
+ /** Length of the second arm B→C. */
47
+ export declare function secondArmLength(g: G9CheckMarkGeometry): number;
48
+ /** The visible part of the mark when `amount` of its length is drawn (MAUI `Trim`). */
49
+ export declare function trimCheckMark(g: G9CheckMarkGeometry, amount: number): G9CheckMarkTrim;
50
+ /** SVG path (in a `size` box) of the mark drawn at `progress` and `morph` (tick → dash). */
51
+ export declare function checkMarkPath(progress: number, morph: number, size: number): string;
52
+ //# sourceMappingURL=checkbox-math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-math.d.ts","sourceRoot":"","sources":["../../src/toggle/checkbox-math.ts"],"names":[],"mappings":"AAKA,kDAAkD;AAClD,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,iDAAiD;AACjD,eAAO,MAAM,qBAAqB,QAAU,CAAC;AAE7C,mEAAmE;AACnE,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,CAEnF;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,eAAe,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAEpH;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,qGAAqG;AACrG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAKD,gBAAgB;AAChB,eAAO,MAAM,eAAe,qBAA8C,CAAC;AAC3E,8BAA8B;AAC9B,eAAO,MAAM,cAAc,qBAA2C,CAAC;AASvE,8CAA8C;AAC9C,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAc3E;AAED,mCAAmC;AACnC,wBAAgB,cAAc,CAAC,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAE7D;AAED,oCAAoC;AACpC,wBAAgB,eAAe,CAAC,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAE9D;AAWD,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CA0BrF;AAED,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQnF"}