@flyingrobots/bijou-tui 7.0.0 → 7.2.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 (569) hide show
  1. package/README.md +27 -4
  2. package/dist/accordion.d.ts +3 -108
  3. package/dist/accordion.d.ts.map +1 -1
  4. package/dist/accordion.js +2 -161
  5. package/dist/accordion.js.map +1 -1
  6. package/dist/accordion.part01.d.ts +25 -0
  7. package/dist/accordion.part01.d.ts.map +1 -0
  8. package/dist/accordion.part01.js +61 -0
  9. package/dist/accordion.part01.js.map +1 -0
  10. package/dist/accordion.part02.d.ts +8 -0
  11. package/dist/accordion.part02.d.ts.map +1 -0
  12. package/dist/accordion.part02.js +15 -0
  13. package/dist/accordion.part02.js.map +1 -0
  14. package/dist/animate.d.ts.map +1 -1
  15. package/dist/animate.js +5 -6
  16. package/dist/animate.js.map +1 -1
  17. package/dist/app-frame-actions.d.ts +1 -18
  18. package/dist/app-frame-actions.d.ts.map +1 -1
  19. package/dist/app-frame-actions.js +47 -43
  20. package/dist/app-frame-actions.js.map +1 -1
  21. package/dist/app-frame-i18n.d.ts.map +1 -1
  22. package/dist/app-frame-i18n.js +20 -3
  23. package/dist/app-frame-i18n.js.map +1 -1
  24. package/dist/app-frame-overlays.d.ts +9 -1
  25. package/dist/app-frame-overlays.d.ts.map +1 -1
  26. package/dist/app-frame-overlays.js +117 -25
  27. package/dist/app-frame-overlays.js.map +1 -1
  28. package/dist/app-frame-palette.d.ts +1 -11
  29. package/dist/app-frame-palette.d.ts.map +1 -1
  30. package/dist/app-frame-palette.js +19 -18
  31. package/dist/app-frame-palette.js.map +1 -1
  32. package/dist/app-frame-render.d.ts +0 -7
  33. package/dist/app-frame-render.d.ts.map +1 -1
  34. package/dist/app-frame-render.js +17 -26
  35. package/dist/app-frame-render.js.map +1 -1
  36. package/dist/app-frame-types.d.ts +8 -4
  37. package/dist/app-frame-types.d.ts.map +1 -1
  38. package/dist/app-frame-types.js +5 -5
  39. package/dist/app-frame-types.js.map +1 -1
  40. package/dist/app-frame-utils.d.ts +2 -1
  41. package/dist/app-frame-utils.d.ts.map +1 -1
  42. package/dist/app-frame-utils.js +8 -1
  43. package/dist/app-frame-utils.js.map +1 -1
  44. package/dist/app-frame.d.ts +75 -4
  45. package/dist/app-frame.d.ts.map +1 -1
  46. package/dist/app-frame.js +346 -272
  47. package/dist/app-frame.js.map +1 -1
  48. package/dist/app-frame.test-support.part01.d.ts +149 -0
  49. package/dist/app-frame.test-support.part01.d.ts.map +1 -0
  50. package/dist/app-frame.test-support.part01.js +106 -0
  51. package/dist/app-frame.test-support.part01.js.map +1 -0
  52. package/dist/app-frame.test-support.part02.d.ts +15 -0
  53. package/dist/app-frame.test-support.part02.d.ts.map +1 -0
  54. package/dist/app-frame.test-support.part02.js +89 -0
  55. package/dist/app-frame.test-support.part02.js.map +1 -0
  56. package/dist/browsable-list.d.ts +5 -5
  57. package/dist/browsable-list.d.ts.map +1 -1
  58. package/dist/browsable-list.js.map +1 -1
  59. package/dist/canvas.d.ts +2 -34
  60. package/dist/canvas.d.ts.map +1 -1
  61. package/dist/canvas.js +43 -47
  62. package/dist/canvas.js.map +1 -1
  63. package/dist/cell-glyph-fit.js +1 -1
  64. package/dist/cell-glyph-fit.js.map +1 -1
  65. package/dist/collection-surface-types.d.ts +12 -0
  66. package/dist/collection-surface-types.d.ts.map +1 -0
  67. package/dist/collection-surface-types.js +2 -0
  68. package/dist/collection-surface-types.js.map +1 -0
  69. package/dist/collection-surface.d.ts +2 -7
  70. package/dist/collection-surface.d.ts.map +1 -1
  71. package/dist/collection-surface.js +8 -18
  72. package/dist/collection-surface.js.map +1 -1
  73. package/dist/command-palette.d.ts.map +1 -1
  74. package/dist/command-palette.js +2 -1
  75. package/dist/command-palette.js.map +1 -1
  76. package/dist/commands.d.ts.map +1 -1
  77. package/dist/commands.js +1 -1
  78. package/dist/commands.js.map +1 -1
  79. package/dist/css/install.js.map +1 -1
  80. package/dist/css/parser.js +9 -3
  81. package/dist/css/parser.js.map +1 -1
  82. package/dist/css/resolver-types.d.ts +13 -0
  83. package/dist/css/resolver-types.d.ts.map +1 -0
  84. package/dist/css/resolver-types.js +2 -0
  85. package/dist/css/resolver-types.js.map +1 -0
  86. package/dist/css/resolver.d.ts +2 -12
  87. package/dist/css/resolver.d.ts.map +1 -1
  88. package/dist/css/resolver.js +13 -20
  89. package/dist/css/resolver.js.map +1 -1
  90. package/dist/css/text-style.d.ts +4 -8
  91. package/dist/css/text-style.d.ts.map +1 -1
  92. package/dist/css/text-style.js +13 -18
  93. package/dist/css/text-style.js.map +1 -1
  94. package/dist/dag-pane.d.ts +4 -224
  95. package/dist/dag-pane.d.ts.map +1 -1
  96. package/dist/dag-pane.js +3 -516
  97. package/dist/dag-pane.js.map +1 -1
  98. package/dist/dag-pane.part01.d.ts +58 -0
  99. package/dist/dag-pane.part01.d.ts.map +1 -0
  100. package/dist/dag-pane.part01.js +2 -0
  101. package/dist/dag-pane.part01.js.map +1 -0
  102. package/dist/dag-pane.part02.d.ts +4 -0
  103. package/dist/dag-pane.part02.d.ts.map +1 -0
  104. package/dist/dag-pane.part02.js +56 -0
  105. package/dist/dag-pane.part02.js.map +1 -0
  106. package/dist/dag-pane.part03.d.ts +6 -0
  107. package/dist/dag-pane.part03.d.ts.map +1 -0
  108. package/dist/dag-pane.part03.js +76 -0
  109. package/dist/dag-pane.part03.js.map +1 -0
  110. package/dist/dag-pane.part04.d.ts +7 -0
  111. package/dist/dag-pane.part04.d.ts.map +1 -0
  112. package/dist/dag-pane.part04.js +66 -0
  113. package/dist/dag-pane.part04.js.map +1 -0
  114. package/dist/dag-pane.part05.d.ts +7 -0
  115. package/dist/dag-pane.part05.d.ts.map +1 -0
  116. package/dist/dag-pane.part05.js +78 -0
  117. package/dist/dag-pane.part05.js.map +1 -0
  118. package/dist/dag-pane.part06.d.ts +14 -0
  119. package/dist/dag-pane.part06.d.ts.map +1 -0
  120. package/dist/dag-pane.part06.js +65 -0
  121. package/dist/dag-pane.part06.js.map +1 -0
  122. package/dist/dag-pane.part07.d.ts +18 -0
  123. package/dist/dag-pane.part07.d.ts.map +1 -0
  124. package/dist/dag-pane.part07.js +22 -0
  125. package/dist/dag-pane.part07.js.map +1 -0
  126. package/dist/driver.d.ts +35 -21
  127. package/dist/driver.d.ts.map +1 -1
  128. package/dist/driver.js +69 -39
  129. package/dist/driver.js.map +1 -1
  130. package/dist/eventbus.d.ts.map +1 -1
  131. package/dist/eventbus.js +13 -23
  132. package/dist/eventbus.js.map +1 -1
  133. package/dist/file-picker.d.ts +4 -160
  134. package/dist/file-picker.d.ts.map +1 -1
  135. package/dist/file-picker.js +3 -284
  136. package/dist/file-picker.js.map +1 -1
  137. package/dist/file-picker.part01.d.ts +54 -0
  138. package/dist/file-picker.part01.d.ts.map +1 -0
  139. package/dist/file-picker.part01.js +47 -0
  140. package/dist/file-picker.part01.js.map +1 -0
  141. package/dist/file-picker.part02.d.ts +9 -0
  142. package/dist/file-picker.part02.d.ts.map +1 -0
  143. package/dist/file-picker.part02.js +77 -0
  144. package/dist/file-picker.part02.js.map +1 -0
  145. package/dist/file-picker.part03.d.ts +12 -0
  146. package/dist/file-picker.part03.d.ts.map +1 -0
  147. package/dist/file-picker.part03.js +35 -0
  148. package/dist/file-picker.part03.js.map +1 -0
  149. package/dist/flex.d.ts +0 -61
  150. package/dist/flex.d.ts.map +1 -1
  151. package/dist/flex.js +11 -161
  152. package/dist/flex.js.map +1 -1
  153. package/dist/focus-area.d.ts +6 -210
  154. package/dist/focus-area.d.ts.map +1 -1
  155. package/dist/focus-area.js +5 -425
  156. package/dist/focus-area.js.map +1 -1
  157. package/dist/focus-area.part01.d.ts +57 -0
  158. package/dist/focus-area.part01.d.ts.map +1 -0
  159. package/dist/focus-area.part01.js +23 -0
  160. package/dist/focus-area.part01.js.map +1 -0
  161. package/dist/focus-area.part02.d.ts +13 -0
  162. package/dist/focus-area.part02.d.ts.map +1 -0
  163. package/dist/focus-area.part02.js +65 -0
  164. package/dist/focus-area.part02.js.map +1 -0
  165. package/dist/focus-area.part03.d.ts +5 -0
  166. package/dist/focus-area.part03.d.ts.map +1 -0
  167. package/dist/focus-area.part03.js +42 -0
  168. package/dist/focus-area.part03.js.map +1 -0
  169. package/dist/focus-area.part04.d.ts +5 -0
  170. package/dist/focus-area.part04.d.ts.map +1 -0
  171. package/dist/focus-area.part04.js +49 -0
  172. package/dist/focus-area.part04.js.map +1 -0
  173. package/dist/focus-area.part05.d.ts +10 -0
  174. package/dist/focus-area.part05.d.ts.map +1 -0
  175. package/dist/focus-area.part05.js +66 -0
  176. package/dist/focus-area.part05.js.map +1 -0
  177. package/dist/focus-area.part06.d.ts +17 -0
  178. package/dist/focus-area.part06.d.ts.map +1 -0
  179. package/dist/focus-area.part06.js +48 -0
  180. package/dist/focus-area.part06.js.map +1 -0
  181. package/dist/focus-map.d.ts.map +1 -1
  182. package/dist/focus-map.js +8 -10
  183. package/dist/focus-map.js.map +1 -1
  184. package/dist/index.d.ts +8 -79
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.js +8 -105
  187. package/dist/index.js.map +1 -1
  188. package/dist/index.part01.d.ts +15 -0
  189. package/dist/index.part01.d.ts.map +1 -0
  190. package/dist/index.part01.js +11 -0
  191. package/dist/index.part01.js.map +1 -0
  192. package/dist/index.part02.d.ts +26 -0
  193. package/dist/index.part02.d.ts.map +1 -0
  194. package/dist/index.part02.js +24 -0
  195. package/dist/index.part02.js.map +1 -0
  196. package/dist/index.part03.d.ts +17 -0
  197. package/dist/index.part03.d.ts.map +1 -0
  198. package/dist/index.part03.js +11 -0
  199. package/dist/index.part03.js.map +1 -0
  200. package/dist/index.part04.d.ts +6 -0
  201. package/dist/index.part04.d.ts.map +1 -0
  202. package/dist/index.part04.js +11 -0
  203. package/dist/index.part04.js.map +1 -0
  204. package/dist/index.part05.d.ts +10 -0
  205. package/dist/index.part05.d.ts.map +1 -0
  206. package/dist/index.part05.js +26 -0
  207. package/dist/index.part05.js.map +1 -0
  208. package/dist/index.part06.d.ts +9 -0
  209. package/dist/index.part06.d.ts.map +1 -0
  210. package/dist/index.part06.js +16 -0
  211. package/dist/index.part06.js.map +1 -0
  212. package/dist/index.part07.d.ts +8 -0
  213. package/dist/index.part07.d.ts.map +1 -0
  214. package/dist/index.part07.js +15 -0
  215. package/dist/index.part07.js.map +1 -0
  216. package/dist/index.part08.d.ts +5 -0
  217. package/dist/index.part08.d.ts.map +1 -0
  218. package/dist/index.part08.js +9 -0
  219. package/dist/index.part08.js.map +1 -0
  220. package/dist/input-map.d.ts.map +1 -1
  221. package/dist/input-map.js +1 -2
  222. package/dist/input-map.js.map +1 -1
  223. package/dist/input-parser.d.ts +3 -0
  224. package/dist/input-parser.d.ts.map +1 -0
  225. package/dist/input-parser.js +95 -0
  226. package/dist/input-parser.js.map +1 -0
  227. package/dist/input-routing-inspector.js +3 -3
  228. package/dist/input-routing-inspector.js.map +1 -1
  229. package/dist/inputstack.d.ts.map +1 -1
  230. package/dist/inputstack.js +2 -0
  231. package/dist/inputstack.js.map +1 -1
  232. package/dist/keybindings.d.ts.map +1 -1
  233. package/dist/keybindings.js +5 -2
  234. package/dist/keybindings.js.map +1 -1
  235. package/dist/keys.d.ts +0 -36
  236. package/dist/keys.d.ts.map +1 -1
  237. package/dist/keys.js +11 -66
  238. package/dist/keys.js.map +1 -1
  239. package/dist/layout-inspector.d.ts +2 -30
  240. package/dist/layout-inspector.d.ts.map +1 -1
  241. package/dist/layout-inspector.js +1 -132
  242. package/dist/layout-inspector.js.map +1 -1
  243. package/dist/layout-inspector.part01.d.ts +52 -0
  244. package/dist/layout-inspector.part01.d.ts.map +1 -0
  245. package/dist/layout-inspector.part01.js +48 -0
  246. package/dist/layout-inspector.part01.js.map +1 -0
  247. package/dist/layout-inspector.part02.d.ts +11 -0
  248. package/dist/layout-inspector.part02.d.ts.map +1 -0
  249. package/dist/layout-inspector.part02.js +80 -0
  250. package/dist/layout-inspector.part02.js.map +1 -0
  251. package/dist/layout-inspector.part03.d.ts +5 -0
  252. package/dist/layout-inspector.part03.d.ts.map +1 -0
  253. package/dist/layout-inspector.part03.js +11 -0
  254. package/dist/layout-inspector.part03.js.map +1 -0
  255. package/dist/layout-preset.js +4 -4
  256. package/dist/layout-preset.js.map +1 -1
  257. package/dist/layout.d.ts.map +1 -1
  258. package/dist/layout.js +5 -3
  259. package/dist/layout.js.map +1 -1
  260. package/dist/motion/motion.js +8 -4
  261. package/dist/motion/motion.js.map +1 -1
  262. package/dist/motion/reconciler.d.ts.map +1 -1
  263. package/dist/motion/reconciler.js +9 -7
  264. package/dist/motion/reconciler.js.map +1 -1
  265. package/dist/mouse-mode.d.ts +5 -0
  266. package/dist/mouse-mode.d.ts.map +1 -0
  267. package/dist/mouse-mode.js +17 -0
  268. package/dist/mouse-mode.js.map +1 -0
  269. package/dist/navigable-table.d.ts +3 -136
  270. package/dist/navigable-table.d.ts.map +1 -1
  271. package/dist/navigable-table.js +2 -234
  272. package/dist/navigable-table.js.map +1 -1
  273. package/dist/navigable-table.part01.d.ts +42 -0
  274. package/dist/navigable-table.part01.d.ts.map +1 -0
  275. package/dist/navigable-table.part01.js +42 -0
  276. package/dist/navigable-table.part01.js.map +1 -0
  277. package/dist/navigable-table.part02.d.ts +16 -0
  278. package/dist/navigable-table.part02.d.ts.map +1 -0
  279. package/dist/navigable-table.part02.js +83 -0
  280. package/dist/navigable-table.part02.js.map +1 -0
  281. package/dist/notification-card.d.ts +11 -0
  282. package/dist/notification-card.d.ts.map +1 -0
  283. package/dist/notification-card.js +157 -0
  284. package/dist/notification-card.js.map +1 -0
  285. package/dist/notification-stack.d.ts +6 -0
  286. package/dist/notification-stack.d.ts.map +1 -0
  287. package/dist/notification-stack.js +257 -0
  288. package/dist/notification-stack.js.map +1 -0
  289. package/dist/notification.d.ts +14 -112
  290. package/dist/notification.d.ts.map +1 -1
  291. package/dist/notification.js +12 -1087
  292. package/dist/notification.js.map +1 -1
  293. package/dist/notification.part01.d.ts +77 -0
  294. package/dist/notification.part01.d.ts.map +1 -0
  295. package/dist/notification.part01.js +19 -0
  296. package/dist/notification.part01.js.map +1 -0
  297. package/dist/notification.part02.d.ts +42 -0
  298. package/dist/notification.part02.d.ts.map +1 -0
  299. package/dist/notification.part02.js +44 -0
  300. package/dist/notification.part02.js.map +1 -0
  301. package/dist/notification.part03.d.ts +6 -0
  302. package/dist/notification.part03.d.ts.map +1 -0
  303. package/dist/notification.part03.js +81 -0
  304. package/dist/notification.part03.js.map +1 -0
  305. package/dist/notification.part04.d.ts +4 -0
  306. package/dist/notification.part04.d.ts.map +1 -0
  307. package/dist/notification.part04.js +32 -0
  308. package/dist/notification.part04.js.map +1 -0
  309. package/dist/notification.part05.d.ts +6 -0
  310. package/dist/notification.part05.d.ts.map +1 -0
  311. package/dist/notification.part05.js +95 -0
  312. package/dist/notification.part05.js.map +1 -0
  313. package/dist/notification.part06.d.ts +9 -0
  314. package/dist/notification.part06.d.ts.map +1 -0
  315. package/dist/notification.part06.js +65 -0
  316. package/dist/notification.part06.js.map +1 -0
  317. package/dist/notification.part07.d.ts +10 -0
  318. package/dist/notification.part07.d.ts.map +1 -0
  319. package/dist/notification.part07.js +70 -0
  320. package/dist/notification.part07.js.map +1 -0
  321. package/dist/notification.part08.d.ts +5 -0
  322. package/dist/notification.part08.d.ts.map +1 -0
  323. package/dist/notification.part08.js +79 -0
  324. package/dist/notification.part08.js.map +1 -0
  325. package/dist/notification.part09.d.ts +14 -0
  326. package/dist/notification.part09.d.ts.map +1 -0
  327. package/dist/notification.part09.js +96 -0
  328. package/dist/notification.part09.js.map +1 -0
  329. package/dist/notification.part10.d.ts +13 -0
  330. package/dist/notification.part10.d.ts.map +1 -0
  331. package/dist/notification.part10.js +94 -0
  332. package/dist/notification.part10.js.map +1 -0
  333. package/dist/notification.part11.d.ts +6 -0
  334. package/dist/notification.part11.d.ts.map +1 -0
  335. package/dist/notification.part11.js +42 -0
  336. package/dist/notification.part11.js.map +1 -0
  337. package/dist/overlay.d.ts +8 -232
  338. package/dist/overlay.d.ts.map +1 -1
  339. package/dist/overlay.js +5 -629
  340. package/dist/overlay.js.map +1 -1
  341. package/dist/overlay.part01.d.ts +71 -0
  342. package/dist/overlay.part01.d.ts.map +1 -0
  343. package/dist/overlay.part01.js +34 -0
  344. package/dist/overlay.part01.js.map +1 -0
  345. package/dist/overlay.part02.d.ts +8 -0
  346. package/dist/overlay.part02.d.ts.map +1 -0
  347. package/dist/overlay.part02.js +81 -0
  348. package/dist/overlay.part02.js.map +1 -0
  349. package/dist/overlay.part03.d.ts +27 -0
  350. package/dist/overlay.part03.d.ts.map +1 -0
  351. package/dist/overlay.part03.js +83 -0
  352. package/dist/overlay.part03.js.map +1 -0
  353. package/dist/overlay.part04.d.ts +8 -0
  354. package/dist/overlay.part04.d.ts.map +1 -0
  355. package/dist/overlay.part04.js +103 -0
  356. package/dist/overlay.part04.js.map +1 -0
  357. package/dist/overlay.part05.d.ts +8 -0
  358. package/dist/overlay.part05.d.ts.map +1 -0
  359. package/dist/overlay.part05.js +66 -0
  360. package/dist/overlay.part05.js.map +1 -0
  361. package/dist/overlay.part06.d.ts +46 -0
  362. package/dist/overlay.part06.d.ts.map +1 -0
  363. package/dist/overlay.part06.js +35 -0
  364. package/dist/overlay.part06.js.map +1 -0
  365. package/dist/overlay.part07.d.ts +4 -0
  366. package/dist/overlay.part07.d.ts.map +1 -0
  367. package/dist/overlay.part07.js +64 -0
  368. package/dist/overlay.part07.js.map +1 -0
  369. package/dist/overlay.part08.d.ts +34 -0
  370. package/dist/overlay.part08.d.ts.map +1 -0
  371. package/dist/overlay.part08.js +54 -0
  372. package/dist/overlay.part08.js.map +1 -0
  373. package/dist/overlay.part09.d.ts +6 -0
  374. package/dist/overlay.part09.d.ts.map +1 -0
  375. package/dist/overlay.part09.js +42 -0
  376. package/dist/overlay.part09.js.map +1 -0
  377. package/dist/pager.d.ts.map +1 -1
  378. package/dist/pager.js +2 -4
  379. package/dist/pager.js.map +1 -1
  380. package/dist/panel-dock.d.ts.map +1 -1
  381. package/dist/panel-dock.js +9 -11
  382. package/dist/panel-dock.js.map +1 -1
  383. package/dist/panels.d.ts.map +1 -1
  384. package/dist/panels.js +2 -0
  385. package/dist/panels.js.map +1 -1
  386. package/dist/pipeline/middleware/css.d.ts +3 -5
  387. package/dist/pipeline/middleware/css.d.ts.map +1 -1
  388. package/dist/pipeline/middleware/css.js +12 -6
  389. package/dist/pipeline/middleware/css.js.map +1 -1
  390. package/dist/pipeline/middleware/grayscale.js +15 -10
  391. package/dist/pipeline/middleware/grayscale.js.map +1 -1
  392. package/dist/pipeline/middleware/motion.js +9 -1
  393. package/dist/pipeline/middleware/motion.js.map +1 -1
  394. package/dist/pipeline/middleware/paint.js +9 -1
  395. package/dist/pipeline/middleware/paint.js.map +1 -1
  396. package/dist/pipeline/middleware/surface-shaders.js +13 -11
  397. package/dist/pipeline/middleware/surface-shaders.js.map +1 -1
  398. package/dist/pipeline/pipeline.d.ts +7 -52
  399. package/dist/pipeline/pipeline.d.ts.map +1 -1
  400. package/dist/pipeline/pipeline.js +37 -27
  401. package/dist/pipeline/pipeline.js.map +1 -1
  402. package/dist/raster-glyph.d.ts +3 -0
  403. package/dist/raster-glyph.d.ts.map +1 -0
  404. package/dist/raster-glyph.js +2 -0
  405. package/dist/raster-glyph.js.map +1 -0
  406. package/dist/raster-glyph.part01.d.ts +75 -0
  407. package/dist/raster-glyph.part01.d.ts.map +1 -0
  408. package/dist/raster-glyph.part01.js +25 -0
  409. package/dist/raster-glyph.part01.js.map +1 -0
  410. package/dist/raster-glyph.part02.d.ts +12 -0
  411. package/dist/raster-glyph.part02.d.ts.map +1 -0
  412. package/dist/raster-glyph.part02.js +81 -0
  413. package/dist/raster-glyph.part02.js.map +1 -0
  414. package/dist/raster-glyph.part03.d.ts +6 -0
  415. package/dist/raster-glyph.part03.d.ts.map +1 -0
  416. package/dist/raster-glyph.part03.js +60 -0
  417. package/dist/raster-glyph.part03.js.map +1 -0
  418. package/dist/raster-glyph.part04.d.ts +7 -0
  419. package/dist/raster-glyph.part04.d.ts.map +1 -0
  420. package/dist/raster-glyph.part04.js +59 -0
  421. package/dist/raster-glyph.part04.js.map +1 -0
  422. package/dist/raster-glyph.part05.d.ts +6 -0
  423. package/dist/raster-glyph.part05.d.ts.map +1 -0
  424. package/dist/raster-glyph.part05.js +71 -0
  425. package/dist/raster-glyph.part05.js.map +1 -0
  426. package/dist/raster-glyph.part06.d.ts +18 -0
  427. package/dist/raster-glyph.part06.d.ts.map +1 -0
  428. package/dist/raster-glyph.part06.js +78 -0
  429. package/dist/raster-glyph.part06.js.map +1 -0
  430. package/dist/raster-glyph.part07.d.ts +11 -0
  431. package/dist/raster-glyph.part07.d.ts.map +1 -0
  432. package/dist/raster-glyph.part07.js +55 -0
  433. package/dist/raster-glyph.part07.js.map +1 -0
  434. package/dist/raytrace.d.ts +3 -58
  435. package/dist/raytrace.d.ts.map +1 -1
  436. package/dist/raytrace.js +2 -120
  437. package/dist/raytrace.js.map +1 -1
  438. package/dist/raytrace.part01.d.ts +47 -0
  439. package/dist/raytrace.part01.d.ts.map +1 -0
  440. package/dist/raytrace.part01.js +45 -0
  441. package/dist/raytrace.part01.js.map +1 -0
  442. package/dist/raytrace.part02.d.ts +12 -0
  443. package/dist/raytrace.part02.d.ts.map +1 -0
  444. package/dist/raytrace.part02.js +73 -0
  445. package/dist/raytrace.part02.js.map +1 -0
  446. package/dist/runtime-binding.d.ts +2 -3
  447. package/dist/runtime-binding.d.ts.map +1 -1
  448. package/dist/runtime-binding.js +49 -38
  449. package/dist/runtime-binding.js.map +1 -1
  450. package/dist/runtime-engine.d.ts +2 -2
  451. package/dist/runtime-engine.d.ts.map +1 -1
  452. package/dist/runtime-engine.js +15 -4
  453. package/dist/runtime-engine.js.map +1 -1
  454. package/dist/runtime.d.ts +2 -18
  455. package/dist/runtime.d.ts.map +1 -1
  456. package/dist/runtime.js +43 -62
  457. package/dist/runtime.js.map +1 -1
  458. package/dist/screen.js +1 -1
  459. package/dist/screen.js.map +1 -1
  460. package/dist/shell-quit.d.ts.map +1 -1
  461. package/dist/shell-quit.js +49 -6
  462. package/dist/shell-quit.js.map +1 -1
  463. package/dist/split-pane.d.ts +3 -104
  464. package/dist/split-pane.d.ts.map +1 -1
  465. package/dist/split-pane.js +2 -190
  466. package/dist/split-pane.js.map +1 -1
  467. package/dist/split-pane.part01.d.ts +60 -0
  468. package/dist/split-pane.part01.d.ts.map +1 -0
  469. package/dist/split-pane.part01.js +45 -0
  470. package/dist/split-pane.part01.js.map +1 -0
  471. package/dist/split-pane.part02.d.ts +8 -0
  472. package/dist/split-pane.part02.d.ts.map +1 -0
  473. package/dist/split-pane.part02.js +73 -0
  474. package/dist/split-pane.part02.js.map +1 -0
  475. package/dist/split-pane.part03.d.ts +4 -0
  476. package/dist/split-pane.part03.d.ts.map +1 -0
  477. package/dist/split-pane.part03.js +40 -0
  478. package/dist/split-pane.part03.js.map +1 -0
  479. package/dist/spring.d.ts +4 -187
  480. package/dist/spring.d.ts.map +1 -1
  481. package/dist/spring.js +2 -142
  482. package/dist/spring.js.map +1 -1
  483. package/dist/spring.part01.d.ts +90 -0
  484. package/dist/spring.part01.d.ts.map +1 -0
  485. package/dist/spring.part01.js +58 -0
  486. package/dist/spring.part01.js.map +1 -0
  487. package/dist/spring.part02.d.ts +25 -0
  488. package/dist/spring.part02.d.ts.map +1 -0
  489. package/dist/spring.part02.js +21 -0
  490. package/dist/spring.part02.js.map +1 -0
  491. package/dist/status-bar.js +1 -1
  492. package/dist/status-bar.js.map +1 -1
  493. package/dist/subapp/mount.d.ts +6 -6
  494. package/dist/subapp/mount.d.ts.map +1 -1
  495. package/dist/subapp/mount.js +19 -14
  496. package/dist/subapp/mount.js.map +1 -1
  497. package/dist/surface-budget-types.d.ts +26 -0
  498. package/dist/surface-budget-types.d.ts.map +1 -0
  499. package/dist/surface-budget-types.js +2 -0
  500. package/dist/surface-budget-types.js.map +1 -0
  501. package/dist/surface-budget.d.ts +2 -25
  502. package/dist/surface-budget.d.ts.map +1 -1
  503. package/dist/surface-budget.js.map +1 -1
  504. package/dist/surface-diff.js +26 -28
  505. package/dist/surface-diff.js.map +1 -1
  506. package/dist/surface-layout.d.ts.map +1 -1
  507. package/dist/surface-layout.js +1 -2
  508. package/dist/surface-layout.js.map +1 -1
  509. package/dist/timeline.d.ts +1 -1
  510. package/dist/timeline.d.ts.map +1 -1
  511. package/dist/timeline.js +17 -15
  512. package/dist/timeline.js.map +1 -1
  513. package/dist/transition-shaders.d.ts +5 -142
  514. package/dist/transition-shaders.d.ts.map +1 -1
  515. package/dist/transition-shaders.js +4 -391
  516. package/dist/transition-shaders.js.map +1 -1
  517. package/dist/transition-shaders.part01.d.ts +41 -0
  518. package/dist/transition-shaders.part01.d.ts.map +1 -0
  519. package/dist/transition-shaders.part01.js +38 -0
  520. package/dist/transition-shaders.part01.js.map +1 -0
  521. package/dist/transition-shaders.part02.d.ts +12 -0
  522. package/dist/transition-shaders.part02.d.ts.map +1 -0
  523. package/dist/transition-shaders.part02.js +88 -0
  524. package/dist/transition-shaders.part02.js.map +1 -0
  525. package/dist/transition-shaders.part03.d.ts +6 -0
  526. package/dist/transition-shaders.part03.d.ts.map +1 -0
  527. package/dist/transition-shaders.part03.js +82 -0
  528. package/dist/transition-shaders.part03.js.map +1 -0
  529. package/dist/transition-shaders.part04.d.ts +16 -0
  530. package/dist/transition-shaders.part04.d.ts.map +1 -0
  531. package/dist/transition-shaders.part04.js +98 -0
  532. package/dist/transition-shaders.part04.js.map +1 -0
  533. package/dist/types.d.ts +10 -42
  534. package/dist/types.d.ts.map +1 -1
  535. package/dist/types.js +9 -36
  536. package/dist/types.js.map +1 -1
  537. package/dist/view-output.d.ts +1 -1
  538. package/dist/view-output.d.ts.map +1 -1
  539. package/dist/view-output.js +3 -2
  540. package/dist/view-output.js.map +1 -1
  541. package/dist/viewport.d.ts +7 -213
  542. package/dist/viewport.d.ts.map +1 -1
  543. package/dist/viewport.js +6 -470
  544. package/dist/viewport.js.map +1 -1
  545. package/dist/viewport.part01.d.ts +51 -0
  546. package/dist/viewport.part01.d.ts.map +1 -0
  547. package/dist/viewport.part01.js +10 -0
  548. package/dist/viewport.part01.js.map +1 -0
  549. package/dist/viewport.part02.d.ts +2 -0
  550. package/dist/viewport.part02.d.ts.map +1 -0
  551. package/dist/viewport.part02.js +69 -0
  552. package/dist/viewport.part02.js.map +1 -0
  553. package/dist/viewport.part03.d.ts +10 -0
  554. package/dist/viewport.part03.d.ts.map +1 -0
  555. package/dist/viewport.part03.js +78 -0
  556. package/dist/viewport.part03.js.map +1 -0
  557. package/dist/viewport.part04.d.ts +4 -0
  558. package/dist/viewport.part04.d.ts.map +1 -0
  559. package/dist/viewport.part04.js +50 -0
  560. package/dist/viewport.part04.js.map +1 -0
  561. package/dist/viewport.part05.d.ts +5 -0
  562. package/dist/viewport.part05.d.ts.map +1 -0
  563. package/dist/viewport.part05.js +59 -0
  564. package/dist/viewport.part05.js.map +1 -0
  565. package/dist/viewport.part06.d.ts +14 -0
  566. package/dist/viewport.part06.d.ts.map +1 -0
  567. package/dist/viewport.part06.js +58 -0
  568. package/dist/viewport.part06.js.map +1 -0
  569. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-pane.part01.js","sourceRoot":"","sources":["../src/split-pane.part01.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAIlF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AA2C/C,MAAM,UAAU,oBAAoB,CAAC,OAAsE;IACzG,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG;KACjC,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAqB,EAAE,KAAa;IACpE,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,iBAAiB,CAC/B,KAAqB,EACrB,KAAa,EACb,MAA6E;IAE7E,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;IACnD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAElD,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC;QAC3C,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1D,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAClE,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Surface, WritePort } from '@flyingrobots/bijou';
2
+ import type { SplitPaneLayout, SplitPaneOptions, SplitPaneState, SplitPaneSurfaceOptions } from './split-pane.part01.js';
3
+ export declare function splitPaneLayout(state: SplitPaneState, options: Omit<SplitPaneOptions, 'paneA' | 'paneB'>): SplitPaneLayout;
4
+ export declare function splitPane(state: SplitPaneState, options: SplitPaneOptions): string;
5
+ export declare function splitPaneSurface(state: SplitPaneState, options: SplitPaneSurfaceOptions): Surface;
6
+ export declare function clampRatio(ratio: number): number;
7
+ export declare function warnInvalidRatio(ratio: number, io?: WritePort): void;
8
+ //# sourceMappingURL=split-pane.part02.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-pane.part02.d.ts","sourceRoot":"","sources":["../src/split-pane.part02.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAI9D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGzH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,GACjD,eAAe,CAgBjB;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAuBlF;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CA6BjG;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAIpE"}
@@ -0,0 +1,73 @@
1
+ import { fitBlock } from './layout-utils.js';
2
+ import { createSurface, sanitizeNonNegativeInt, solveSplitPaneRects } from '@flyingrobots/bijou';
3
+ import { placeSurface } from './surface-layout.js';
4
+ import { clamp, repeatToWidth, resolveDividerChar } from './split-pane.part03.js';
5
+ export function splitPaneLayout(state, options) {
6
+ const layout = solveSplitPaneRects({
7
+ direction: options.direction,
8
+ width: options.width,
9
+ height: options.height,
10
+ ratio: state.ratio,
11
+ minA: options.minA,
12
+ minB: options.minB,
13
+ dividerSize: options.dividerSize,
14
+ });
15
+ return {
16
+ paneA: { row: layout.paneA.y, col: layout.paneA.x, width: layout.paneA.width, height: layout.paneA.height },
17
+ divider: { row: layout.divider.y, col: layout.divider.x, width: layout.divider.width, height: layout.divider.height },
18
+ paneB: { row: layout.paneB.y, col: layout.paneB.x, width: layout.paneB.width, height: layout.paneB.height },
19
+ };
20
+ }
21
+ export function splitPane(state, options) {
22
+ const direction = options.direction ?? 'row';
23
+ const fallbackDividerChar = direction === 'row' ? '│' : '─';
24
+ const dividerUnit = resolveDividerChar(options.dividerChar, fallbackDividerChar);
25
+ const layout = splitPaneLayout(state, options);
26
+ const aLines = fitBlock(options.paneA(layout.paneA.width, layout.paneA.height), layout.paneA.width, layout.paneA.height);
27
+ const bLines = fitBlock(options.paneB(layout.paneB.width, layout.paneB.height), layout.paneB.width, layout.paneB.height);
28
+ if (direction === 'row') {
29
+ const dividerLine = repeatToWidth(dividerUnit, Math.max(0, layout.divider.width));
30
+ const lines = [];
31
+ for (let r = 0; r < layout.paneA.height; r++) {
32
+ lines.push((aLines[r] ?? '') + dividerLine + (bLines[r] ?? ''));
33
+ }
34
+ return lines.join('\n');
35
+ }
36
+ const dividerLines = Array.from({ length: layout.divider.height }, () => repeatToWidth(dividerUnit, Math.max(0, layout.divider.width)));
37
+ return [...aLines, ...dividerLines, ...bLines].join('\n');
38
+ }
39
+ export function splitPaneSurface(state, options) {
40
+ const width = sanitizeNonNegativeInt(options.width, 0);
41
+ const height = sanitizeNonNegativeInt(options.height, 0);
42
+ if (width === 0 || height === 0)
43
+ return createSurface(0, 0);
44
+ const direction = options.direction ?? 'row';
45
+ const fallbackDividerChar = direction === 'row' ? '│' : '─';
46
+ const dividerUnit = resolveDividerChar(options.dividerChar, fallbackDividerChar);
47
+ const layout = splitPaneLayout(state, options);
48
+ const result = createSurface(width, height);
49
+ const paneA = placeSurface(options.paneA(layout.paneA.width, layout.paneA.height), {
50
+ width: layout.paneA.width,
51
+ height: layout.paneA.height,
52
+ });
53
+ const paneB = placeSurface(options.paneB(layout.paneB.width, layout.paneB.height), {
54
+ width: layout.paneB.width,
55
+ height: layout.paneB.height,
56
+ });
57
+ result.blit(paneA, layout.paneA.col, layout.paneA.row, 0, 0, layout.paneA.width, layout.paneA.height);
58
+ result.blit(paneB, layout.paneB.col, layout.paneB.row, 0, 0, layout.paneB.width, layout.paneB.height);
59
+ if (layout.divider.width > 0 && layout.divider.height > 0) {
60
+ const divider = createSurface(layout.divider.width, layout.divider.height, { char: dividerUnit, empty: false });
61
+ result.blit(divider, layout.divider.col, layout.divider.row, 0, 0, layout.divider.width, layout.divider.height);
62
+ }
63
+ return result;
64
+ }
65
+ export function clampRatio(ratio) {
66
+ if (!Number.isFinite(ratio))
67
+ return 0.5;
68
+ return clamp(ratio, 0, 1);
69
+ }
70
+ export function warnInvalidRatio(ratio, io) {
71
+ io?.writeError(`[bijou-tui] createSplitPaneState(): received non-finite ratio "${String(ratio)}"; falling back to 0.5.\n`);
72
+ }
73
+ //# sourceMappingURL=split-pane.part02.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-pane.part02.js","sourceRoot":"","sources":["../src/split-pane.part02.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function resolveDividerChar(dividerChar: string | undefined, fallback: string): string;
2
+ export declare function repeatToWidth(unit: string, targetWidth: number): string;
3
+ export declare function clamp(value: number, min: number, max: number): number;
4
+ //# sourceMappingURL=split-pane.part03.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-pane.part03.d.ts","sourceRoot":"","sources":["../src/split-pane.part03.ts"],"names":[],"mappings":"AACA,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY5F;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAgBvE;AACD,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE"}
@@ -0,0 +1,40 @@
1
+ import { graphemeClusterWidth, graphemeWidth, segmentGraphemes } from '@flyingrobots/bijou';
2
+ export function resolveDividerChar(dividerChar, fallback) {
3
+ if (dividerChar == null || dividerChar.length === 0)
4
+ return fallback;
5
+ const graphemes = segmentGraphemes(dividerChar);
6
+ if (graphemes.length === 0)
7
+ return fallback;
8
+ const first = graphemes[0];
9
+ if (first !== undefined && graphemes.length === 1 && graphemeClusterWidth(first) === 1) {
10
+ return first;
11
+ }
12
+ for (const grapheme of graphemes) {
13
+ if (graphemeClusterWidth(grapheme) === 1)
14
+ return grapheme;
15
+ }
16
+ return fallback;
17
+ }
18
+ export function repeatToWidth(unit, targetWidth) {
19
+ const width = Math.max(0, targetWidth);
20
+ if (width === 0)
21
+ return '';
22
+ const unitWidth = graphemeWidth(unit);
23
+ if (unitWidth <= 0)
24
+ return ' '.repeat(width);
25
+ if (unitWidth === 1)
26
+ return unit.repeat(width);
27
+ let out = '';
28
+ let remaining = width;
29
+ while (remaining >= unitWidth) {
30
+ out += unit;
31
+ remaining -= unitWidth;
32
+ }
33
+ if (remaining > 0)
34
+ out += ' '.repeat(remaining);
35
+ return out;
36
+ }
37
+ export function clamp(value, min, max) {
38
+ return Math.max(min, Math.min(max, value));
39
+ }
40
+ //# sourceMappingURL=split-pane.part03.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-pane.part03.js","sourceRoot":"","sources":["../src/split-pane.part03.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,MAAM,UAAU,kBAAkB,CAAC,WAA+B,EAAE,QAAgB;IAClF,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrE,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC5D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,WAAmB;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO,SAAS,IAAI,SAAS,EAAE,CAAC;QAC9B,GAAG,IAAI,IAAI,CAAC;QACZ,SAAS,IAAI,SAAS,CAAC;IACzB,CAAC;IACD,IAAI,SAAS,GAAG,CAAC;QAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC;AACb,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"}
package/dist/spring.d.ts CHANGED
@@ -1,188 +1,5 @@
1
- /**
2
- * Physics-based spring animation engine.
3
- *
4
- * Uses a damped harmonic oscillator model:
5
- * F = -stiffness * displacement - damping * velocity
6
- * acceleration = F / mass
7
- *
8
- * Inspired by react-spring and GSAP spring physics.
9
- */
10
- /** Physics parameters for a damped harmonic oscillator spring. */
11
- export interface SpringConfig {
12
- /** Spring stiffness (tension). Higher = snappier. Default: 170 */
13
- readonly stiffness: number;
14
- /** Damping (friction). Higher = less oscillation. Default: 26 */
15
- readonly damping: number;
16
- /** Mass of the object. Higher = more inertia. Default: 1 */
17
- readonly mass: number;
18
- /** Value threshold to consider the spring settled. Default: 0.01 */
19
- readonly precision: number;
20
- }
21
- /**
22
- * Built-in spring presets covering common motion styles.
23
- *
24
- * Use a preset name (e.g. `'wobbly'`) anywhere a {@link SpringConfig}
25
- * or {@link SpringPreset} is accepted.
26
- */
27
- export declare const SPRING_PRESETS: {
28
- /** Balanced default — smooth with a hint of bounce */
29
- readonly default: {
30
- readonly stiffness: 170;
31
- readonly damping: 26;
32
- readonly mass: 1;
33
- readonly precision: 0.01;
34
- };
35
- /** Soft entrance — slow start, gentle settle */
36
- readonly gentle: {
37
- readonly stiffness: 120;
38
- readonly damping: 14;
39
- readonly mass: 1;
40
- readonly precision: 0.01;
41
- };
42
- /** Playful — noticeable overshoot and bounce */
43
- readonly wobbly: {
44
- readonly stiffness: 180;
45
- readonly damping: 12;
46
- readonly mass: 1;
47
- readonly precision: 0.01;
48
- };
49
- /** Quick snap — fast with minimal overshoot */
50
- readonly stiff: {
51
- readonly stiffness: 210;
52
- readonly damping: 20;
53
- readonly mass: 1;
54
- readonly precision: 0.01;
55
- };
56
- /** Heavy — deliberate, weighty motion */
57
- readonly slow: {
58
- readonly stiffness: 280;
59
- readonly damping: 60;
60
- readonly mass: 1;
61
- readonly precision: 0.01;
62
- };
63
- /** Very heavy — thick, viscous feel */
64
- readonly molasses: {
65
- readonly stiffness: 280;
66
- readonly damping: 120;
67
- readonly mass: 1;
68
- readonly precision: 0.01;
69
- };
70
- };
71
- /** Name of a built-in spring preset from {@link SPRING_PRESETS}. */
72
- export type SpringPreset = keyof typeof SPRING_PRESETS;
73
- /** Snapshot of a running spring animation at a single point in time. */
74
- export interface SpringState {
75
- /** Current animated value */
76
- readonly value: number;
77
- /** Current velocity */
78
- readonly velocity: number;
79
- /** Whether the spring has settled at the target */
80
- readonly done: boolean;
81
- }
82
- /**
83
- * Advance a spring by one time step using semi-implicit Euler integration.
84
- *
85
- * @param state - Current spring state.
86
- * @param target - Target value the spring is approaching.
87
- * @param config - Spring physics parameters.
88
- * @param dt - Time step in seconds (e.g. 1/60 for 60fps).
89
- * @returns A new spring state with updated value, velocity, and done flag.
90
- */
91
- export declare function springStep(state: SpringState, target: number, config: SpringConfig, dt: number): SpringState;
92
- /**
93
- * Create a fresh spring state at a given starting value.
94
- *
95
- * @param value - The initial position of the spring.
96
- * @returns A spring state with zero velocity and `done` set to false.
97
- */
98
- export declare function createSpringState(value: number): SpringState;
99
- /**
100
- * Resolve a preset name or config object to a full SpringConfig.
101
- *
102
- * @param config - A preset name, partial config, or undefined for the default.
103
- * @returns A complete {@link SpringConfig} with all fields populated.
104
- */
105
- export declare function resolveSpringConfig(config?: Partial<SpringConfig> | SpringPreset): SpringConfig;
106
- /**
107
- * An easing function that maps a normalized progress `t` (0..1) to a
108
- * transformed value, controlling the acceleration curve of a tween.
109
- *
110
- * @param t - Normalized time in the range [0, 1].
111
- * @returns The eased value.
112
- */
113
- export type EasingFn = (t: number) => number;
114
- /**
115
- * Built-in easing functions for tween-style animations.
116
- *
117
- * Each function accepts a normalized time `t` in [0, 1] and returns
118
- * the eased value. Quadratic, cubic, and quartic variants are provided
119
- * in ease-in, ease-out, and ease-in-out forms.
120
- */
121
- export declare const EASINGS: {
122
- /** Linear interpolation (no easing). */
123
- readonly linear: (t: number) => number;
124
- /** Quadratic ease-in (accelerating). */
125
- readonly easeIn: (t: number) => number;
126
- /** Quadratic ease-out (decelerating). */
127
- readonly easeOut: (t: number) => number;
128
- /** Quadratic ease-in-out (accelerate then decelerate). */
129
- readonly easeInOut: (t: number) => number;
130
- /** Cubic ease-in (accelerating). */
131
- readonly easeInCubic: (t: number) => number;
132
- /** Cubic ease-out (decelerating). */
133
- readonly easeOutCubic: (t: number) => number;
134
- /** Cubic ease-in-out (accelerate then decelerate). */
135
- readonly easeInOutCubic: (t: number) => number;
136
- /** Quartic ease-in (accelerating). */
137
- readonly easeInQuart: (t: number) => number;
138
- /** Quartic ease-out (decelerating). */
139
- readonly easeOutQuart: (t: number) => number;
140
- /** Quartic ease-in-out (accelerate then decelerate). */
141
- readonly easeInOutQuart: (t: number) => number;
142
- };
143
- /** Configuration for a duration-based tween animation. */
144
- export interface TweenConfig {
145
- /** Start value. Default: 0 */
146
- readonly from: number;
147
- /** End value. Default: 1 */
148
- readonly to: number;
149
- /** Duration in milliseconds */
150
- readonly duration: number;
151
- /** Easing function. Default: easeOutCubic */
152
- readonly ease: EasingFn;
153
- }
154
- /** Immutable snapshot of a running tween animation. */
155
- export interface TweenState {
156
- /** Current animated value */
157
- readonly value: number;
158
- /** Elapsed time in milliseconds */
159
- readonly elapsed: number;
160
- /** Whether the tween has completed */
161
- readonly done: boolean;
162
- }
163
- /**
164
- * Advance a tween by a time step.
165
- *
166
- * @param state - Current tween state.
167
- * @param config - Tween parameters (from, to, duration, ease).
168
- * @param dtMs - Time step in milliseconds.
169
- * @returns A new tween state with updated value, elapsed time, and done flag.
170
- */
171
- export declare function tweenStep(state: TweenState, config: TweenConfig, dtMs: number): TweenState;
172
- /**
173
- * Create a fresh tween state.
174
- *
175
- * @param from - The starting value of the tween.
176
- * @returns A tween state with zero elapsed time and `done` set to false.
177
- */
178
- export declare function createTweenState(from: number): TweenState;
179
- /**
180
- * Resolve partial tween config to full config with defaults.
181
- *
182
- * @param config - Partial tween config; `duration` is required, others default.
183
- * @returns A complete {@link TweenConfig} with all fields populated.
184
- */
185
- export declare function resolveTweenConfig(config: Partial<TweenConfig> & {
186
- duration: number;
187
- }): TweenConfig;
1
+ export { EASINGS, SPRING_PRESETS, createSpringState, resolveSpringConfig, springStep } from './spring.part01.js';
2
+ export type { EasingFn, SpringConfig, SpringPreset, SpringState } from './spring.part01.js';
3
+ export { createTweenState, resolveTweenConfig, tweenStep } from './spring.part02.js';
4
+ export type { TweenConfig, TweenState } from './spring.part02.js';
188
5
  //# sourceMappingURL=spring.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spring.d.ts","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spring.d.ts","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjH,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrF,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/spring.js CHANGED
@@ -1,143 +1,3 @@
1
- /**
2
- * Physics-based spring animation engine.
3
- *
4
- * Uses a damped harmonic oscillator model:
5
- * F = -stiffness * displacement - damping * velocity
6
- * acceleration = F / mass
7
- *
8
- * Inspired by react-spring and GSAP spring physics.
9
- */
10
- /**
11
- * Built-in spring presets covering common motion styles.
12
- *
13
- * Use a preset name (e.g. `'wobbly'`) anywhere a {@link SpringConfig}
14
- * or {@link SpringPreset} is accepted.
15
- */
16
- export const SPRING_PRESETS = {
17
- /** Balanced default — smooth with a hint of bounce */
18
- default: { stiffness: 170, damping: 26, mass: 1, precision: 0.01 },
19
- /** Soft entrance — slow start, gentle settle */
20
- gentle: { stiffness: 120, damping: 14, mass: 1, precision: 0.01 },
21
- /** Playful — noticeable overshoot and bounce */
22
- wobbly: { stiffness: 180, damping: 12, mass: 1, precision: 0.01 },
23
- /** Quick snap — fast with minimal overshoot */
24
- stiff: { stiffness: 210, damping: 20, mass: 1, precision: 0.01 },
25
- /** Heavy — deliberate, weighty motion */
26
- slow: { stiffness: 280, damping: 60, mass: 1, precision: 0.01 },
27
- /** Very heavy — thick, viscous feel */
28
- molasses: { stiffness: 280, damping: 120, mass: 1, precision: 0.01 },
29
- };
30
- // ---------------------------------------------------------------------------
31
- // Core simulation
32
- // ---------------------------------------------------------------------------
33
- /**
34
- * Advance a spring by one time step using semi-implicit Euler integration.
35
- *
36
- * @param state - Current spring state.
37
- * @param target - Target value the spring is approaching.
38
- * @param config - Spring physics parameters.
39
- * @param dt - Time step in seconds (e.g. 1/60 for 60fps).
40
- * @returns A new spring state with updated value, velocity, and done flag.
41
- */
42
- export function springStep(state, target, config, dt) {
43
- const { stiffness, damping, mass, precision } = config;
44
- const displacement = state.value - target;
45
- const springForce = -stiffness * displacement;
46
- const dampingForce = -damping * state.velocity;
47
- const acceleration = (springForce + dampingForce) / mass;
48
- const velocity = state.velocity + acceleration * dt;
49
- const value = state.value + velocity * dt;
50
- const done = Math.abs(velocity) < precision && Math.abs(value - target) < precision;
51
- return { value: done ? target : value, velocity: done ? 0 : velocity, done };
52
- }
53
- /**
54
- * Create a fresh spring state at a given starting value.
55
- *
56
- * @param value - The initial position of the spring.
57
- * @returns A spring state with zero velocity and `done` set to false.
58
- */
59
- export function createSpringState(value) {
60
- return { value, velocity: 0, done: false };
61
- }
62
- /**
63
- * Resolve a preset name or config object to a full SpringConfig.
64
- *
65
- * @param config - A preset name, partial config, or undefined for the default.
66
- * @returns A complete {@link SpringConfig} with all fields populated.
67
- */
68
- export function resolveSpringConfig(config) {
69
- if (config === undefined)
70
- return SPRING_PRESETS.default;
71
- if (typeof config === 'string')
72
- return SPRING_PRESETS[config];
73
- return { ...SPRING_PRESETS.default, ...config };
74
- }
75
- /**
76
- * Built-in easing functions for tween-style animations.
77
- *
78
- * Each function accepts a normalized time `t` in [0, 1] and returns
79
- * the eased value. Quadratic, cubic, and quartic variants are provided
80
- * in ease-in, ease-out, and ease-in-out forms.
81
- */
82
- export const EASINGS = {
83
- /** Linear interpolation (no easing). */
84
- linear: (t) => t,
85
- /** Quadratic ease-in (accelerating). */
86
- easeIn: (t) => t * t,
87
- /** Quadratic ease-out (decelerating). */
88
- easeOut: (t) => t * (2 - t),
89
- /** Quadratic ease-in-out (accelerate then decelerate). */
90
- easeInOut: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),
91
- /** Cubic ease-in (accelerating). */
92
- easeInCubic: (t) => t * t * t,
93
- /** Cubic ease-out (decelerating). */
94
- easeOutCubic: (t) => --t * t * t + 1,
95
- /** Cubic ease-in-out (accelerate then decelerate). */
96
- easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
97
- /** Quartic ease-in (accelerating). */
98
- easeInQuart: (t) => t * t * t * t,
99
- /** Quartic ease-out (decelerating). */
100
- easeOutQuart: (t) => 1 - --t * t * t * t,
101
- /** Quartic ease-in-out (accelerate then decelerate). */
102
- easeInOutQuart: (t) => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t,
103
- };
104
- /**
105
- * Advance a tween by a time step.
106
- *
107
- * @param state - Current tween state.
108
- * @param config - Tween parameters (from, to, duration, ease).
109
- * @param dtMs - Time step in milliseconds.
110
- * @returns A new tween state with updated value, elapsed time, and done flag.
111
- */
112
- export function tweenStep(state, config, dtMs) {
113
- const elapsed = Math.min(state.elapsed + dtMs, config.duration);
114
- const t = config.duration > 0 ? elapsed / config.duration : 1;
115
- const eased = config.ease(t);
116
- const value = config.from + (config.to - config.from) * eased;
117
- const done = elapsed >= config.duration;
118
- return { value: done ? config.to : value, elapsed, done };
119
- }
120
- /**
121
- * Create a fresh tween state.
122
- *
123
- * @param from - The starting value of the tween.
124
- * @returns A tween state with zero elapsed time and `done` set to false.
125
- */
126
- export function createTweenState(from) {
127
- return { value: from, elapsed: 0, done: false };
128
- }
129
- /**
130
- * Resolve partial tween config to full config with defaults.
131
- *
132
- * @param config - Partial tween config; `duration` is required, others default.
133
- * @returns A complete {@link TweenConfig} with all fields populated.
134
- */
135
- export function resolveTweenConfig(config) {
136
- return {
137
- from: config.from ?? 0,
138
- to: config.to ?? 1,
139
- duration: config.duration,
140
- ease: config.ease ?? EASINGS.easeOutCubic,
141
- };
142
- }
1
+ export { EASINGS, SPRING_PRESETS, createSpringState, resolveSpringConfig, springStep } from './spring.part01.js';
2
+ export { createTweenState, resolveTweenConfig, tweenStep } from './spring.part02.js';
143
3
  //# sourceMappingURL=spring.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spring.js","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spring.js","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,90 @@
1
+ export interface SpringConfig {
2
+ /** Spring stiffness (tension). Higher = snappier. Default: 170 */
3
+ readonly stiffness: number;
4
+ /** Damping (friction). Higher = less oscillation. Default: 26 */
5
+ readonly damping: number;
6
+ /** Mass of the object. Higher = more inertia. Default: 1 */
7
+ readonly mass: number;
8
+ /** Value threshold to consider the spring settled. Default: 0.01 */
9
+ readonly precision: number;
10
+ }
11
+ export declare const SPRING_PRESETS: {
12
+ /** Balanced default — smooth with a hint of bounce */
13
+ readonly default: {
14
+ readonly stiffness: 170;
15
+ readonly damping: 26;
16
+ readonly mass: 1;
17
+ readonly precision: 0.01;
18
+ };
19
+ /** Soft entrance — slow start, gentle settle */
20
+ readonly gentle: {
21
+ readonly stiffness: 120;
22
+ readonly damping: 14;
23
+ readonly mass: 1;
24
+ readonly precision: 0.01;
25
+ };
26
+ /** Playful — noticeable overshoot and bounce */
27
+ readonly wobbly: {
28
+ readonly stiffness: 180;
29
+ readonly damping: 12;
30
+ readonly mass: 1;
31
+ readonly precision: 0.01;
32
+ };
33
+ /** Quick snap — fast with minimal overshoot */
34
+ readonly stiff: {
35
+ readonly stiffness: 210;
36
+ readonly damping: 20;
37
+ readonly mass: 1;
38
+ readonly precision: 0.01;
39
+ };
40
+ /** Heavy — deliberate, weighty motion */
41
+ readonly slow: {
42
+ readonly stiffness: 280;
43
+ readonly damping: 60;
44
+ readonly mass: 1;
45
+ readonly precision: 0.01;
46
+ };
47
+ /** Very heavy — thick, viscous feel */
48
+ readonly molasses: {
49
+ readonly stiffness: 280;
50
+ readonly damping: 120;
51
+ readonly mass: 1;
52
+ readonly precision: 0.01;
53
+ };
54
+ };
55
+ export type SpringPreset = keyof typeof SPRING_PRESETS;
56
+ export interface SpringState {
57
+ /** Current animated value */
58
+ readonly value: number;
59
+ /** Current velocity */
60
+ readonly velocity: number;
61
+ /** Whether the spring has settled at the target */
62
+ readonly done: boolean;
63
+ }
64
+ export declare function springStep(state: SpringState, target: number, config: SpringConfig, dt: number): SpringState;
65
+ export declare function createSpringState(value: number): SpringState;
66
+ export declare function resolveSpringConfig(config?: Partial<SpringConfig> | SpringPreset): SpringConfig;
67
+ export type EasingFn = (t: number) => number;
68
+ export declare const EASINGS: {
69
+ /** Linear interpolation (no easing). */
70
+ readonly linear: (t: number) => number;
71
+ /** Quadratic ease-in (accelerating). */
72
+ readonly easeIn: (t: number) => number;
73
+ /** Quadratic ease-out (decelerating). */
74
+ readonly easeOut: (t: number) => number;
75
+ /** Quadratic ease-in-out (accelerate then decelerate). */
76
+ readonly easeInOut: (t: number) => number;
77
+ /** Cubic ease-in (accelerating). */
78
+ readonly easeInCubic: (t: number) => number;
79
+ /** Cubic ease-out (decelerating). */
80
+ readonly easeOutCubic: (t: number) => number;
81
+ /** Cubic ease-in-out (accelerate then decelerate). */
82
+ readonly easeInOutCubic: (t: number) => number;
83
+ /** Quartic ease-in (accelerating). */
84
+ readonly easeInQuart: (t: number) => number;
85
+ /** Quartic ease-out (decelerating). */
86
+ readonly easeOutQuart: (t: number) => number;
87
+ /** Quartic ease-in-out (accelerate then decelerate). */
88
+ readonly easeInOutQuart: (t: number) => number;
89
+ };
90
+ //# sourceMappingURL=spring.part01.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spring.part01.d.ts","sourceRoot":"","sources":["../src/spring.part01.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AACD,eAAO,MAAM,cAAc;IACzB,sDAAsD;;;;;;;IAEtD,gDAAgD;;;;;;;IAEhD,gDAAgD;;;;;;;IAEhD,+CAA+C;;;;;;;IAE/C,yCAAyC;;;;;;;IAEzC,uCAAuC;;;;;;;CAEQ,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,cAAc,CAAC;AACvD,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AACD,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,MAAM,GACT,WAAW,CAeb;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAE5D;AACD,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAC5C,YAAY,CAId;AACD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAC7C,eAAO,MAAM,OAAO;IAClB,wCAAwC;yBAC5B,MAAM;IAElB,wCAAwC;yBAC5B,MAAM;IAClB,yCAAyC;0BAC5B,MAAM;IACnB,0DAA0D;4BAC3C,MAAM;IAErB,oCAAoC;8BACnB,MAAM;IACvB,qCAAqC;+BACnB,MAAM;IACxB,sDAAsD;iCAClC,MAAM;IAG1B,sCAAsC;8BACrB,MAAM;IACvB,uCAAuC;+BACrB,MAAM;IACxB,wDAAwD;iCACpC,MAAM;CAEiB,CAAC"}