@esportsplus/ui 0.56.3 → 0.57.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 (1601) hide show
  1. package/NOTICE +232 -0
  2. package/README.md +129 -138
  3. package/build/components/accordion/index.d.ts +23 -9
  4. package/build/components/accordion/index.js +95 -11
  5. package/build/components/accordion/scss/index.scss +1 -1
  6. package/build/components/announcement/index.d.ts +2167 -0
  7. package/build/components/announcement/index.js +35 -0
  8. package/build/components/announcement/scss/index.scss +2 -0
  9. package/build/components/banner/scss/index.scss +1 -1
  10. package/build/components/breadcrumb/index.d.ts +25 -25
  11. package/build/components/breadcrumb/index.js +189 -17
  12. package/build/components/breadcrumb/scss/index.scss +1 -1
  13. package/build/components/button/copy.js +6 -6
  14. package/build/components/button/faces.js +4 -4
  15. package/build/components/button/fan.js +85 -84
  16. package/build/components/button/hold.js +8 -10
  17. package/build/components/button/icons.js +33 -10
  18. package/build/components/button/index.d.ts +6 -0
  19. package/build/components/button/index.js +4 -1
  20. package/build/components/button/kbd.js +25 -25
  21. package/build/components/button/loading.js +7 -7
  22. package/build/components/button/morph.d.ts +22 -0
  23. package/build/components/button/morph.js +115 -0
  24. package/build/components/button/scss/index.scss +1 -1
  25. package/build/components/button/sidebar.d.ts +18 -0
  26. package/build/components/button/sidebar.js +19 -0
  27. package/build/components/button/split.d.ts +23 -0
  28. package/build/components/button/split.js +41 -0
  29. package/build/components/capslock/index.d.ts +19 -0
  30. package/build/components/capslock/index.js +39 -0
  31. package/build/components/capslock/scss/index.scss +2 -0
  32. package/build/components/card/expand.d.ts +22 -0
  33. package/build/components/card/expand.js +118 -0
  34. package/build/components/card/index.d.ts +6 -0
  35. package/build/components/card/index.js +4 -0
  36. package/build/components/card/scss/index.scss +1 -1
  37. package/build/components/cc/index.d.ts +30 -0
  38. package/build/components/cc/index.js +569 -0
  39. package/build/components/cc/scss/index.scss +2 -0
  40. package/build/components/chat-minimap/index.d.ts +28 -0
  41. package/build/components/chat-minimap/index.js +223 -0
  42. package/build/components/chat-minimap/range.d.ts +9 -0
  43. package/build/components/chat-minimap/range.js +30 -0
  44. package/build/components/chat-minimap/scss/index.scss +2 -0
  45. package/build/components/chat-minimap/spy.d.ts +14 -0
  46. package/build/components/chat-minimap/spy.js +107 -0
  47. package/build/components/checkbox/group.d.ts +33 -0
  48. package/build/components/checkbox/group.js +156 -0
  49. package/build/components/checkbox/index.d.ts +3 -1456
  50. package/build/components/checkbox/index.js +3 -69
  51. package/build/components/checkbox/options.d.ts +6513 -0
  52. package/build/components/checkbox/options.js +79 -0
  53. package/build/components/checkbox/scss/index.scss +1 -1
  54. package/build/components/clipboard/copy.js +5 -5
  55. package/build/components/clipboard/index.d.ts +15 -3
  56. package/build/components/color-picker/index.d.ts +5 -7
  57. package/build/components/color-picker/index.js +175 -222
  58. package/build/components/color-picker/scss/index.scss +1 -1
  59. package/build/components/command/index.d.ts +83 -17
  60. package/build/components/command/index.js +556 -143
  61. package/build/components/command/scss/index.scss +1 -1
  62. package/build/components/container/scss/index.scss +1 -1
  63. package/build/components/copy/index.d.ts +23 -0
  64. package/build/components/copy/index.js +61 -0
  65. package/build/components/copy/scss/index.scss +2 -0
  66. package/build/components/counter/index.d.ts +3 -2
  67. package/build/components/counter/index.js +41 -73
  68. package/build/components/counter/scss/index.scss +1 -1
  69. package/build/components/datalist/index.d.ts +5 -0
  70. package/build/components/datalist/index.js +76 -49
  71. package/build/components/datalist/scss/index.scss +1 -1
  72. package/build/components/dock/index.d.ts +5 -4
  73. package/build/components/dock/index.js +62 -171
  74. package/build/components/dock/scss/index.scss +1 -1
  75. package/build/components/editor/code/changes.d.ts +15 -0
  76. package/build/components/editor/code/changes.js +60 -0
  77. package/build/components/editor/code/clipboard.d.ts +6 -0
  78. package/build/components/editor/code/clipboard.js +50 -0
  79. package/build/components/editor/code/colors.d.ts +11 -0
  80. package/build/components/editor/code/colors.js +172 -0
  81. package/build/components/editor/code/commands.d.ts +22 -0
  82. package/build/components/editor/code/commands.js +556 -0
  83. package/build/components/editor/code/composition.d.ts +23 -0
  84. package/build/components/editor/code/composition.js +67 -0
  85. package/build/components/editor/code/conflicts.d.ts +21 -0
  86. package/build/components/editor/code/conflicts.js +91 -0
  87. package/build/components/editor/code/document.d.ts +127 -0
  88. package/build/components/editor/code/document.js +477 -0
  89. package/build/components/editor/code/editor.d.ts +21 -0
  90. package/build/components/editor/code/editor.js +30 -0
  91. package/build/components/editor/code/features.d.ts +77 -0
  92. package/build/components/editor/code/features.js +833 -0
  93. package/build/components/editor/code/field.d.ts +14 -0
  94. package/build/components/editor/code/field.js +57 -0
  95. package/build/components/editor/code/find.d.ts +83 -0
  96. package/build/components/editor/code/find.js +312 -0
  97. package/build/components/editor/code/folding.d.ts +34 -0
  98. package/build/components/editor/code/folding.js +433 -0
  99. package/build/components/editor/code/goto.d.ts +22 -0
  100. package/build/components/editor/code/goto.js +91 -0
  101. package/build/components/editor/code/gutter.d.ts +5 -0
  102. package/build/components/editor/code/gutter.js +22 -0
  103. package/build/components/editor/code/index.d.ts +17 -0
  104. package/build/components/editor/code/index.js +7 -0
  105. package/build/components/editor/code/keymap.d.ts +30 -0
  106. package/build/components/editor/code/keymap.js +356 -0
  107. package/build/components/editor/code/layout.d.ts +67 -0
  108. package/build/components/editor/code/layout.js +350 -0
  109. package/build/components/editor/code/links.d.ts +8 -0
  110. package/build/components/editor/code/links.js +32 -0
  111. package/build/components/editor/code/minimap.d.ts +46 -0
  112. package/build/components/editor/code/minimap.js +172 -0
  113. package/build/components/editor/code/navigation.d.ts +17 -0
  114. package/build/components/editor/code/navigation.js +49 -0
  115. package/build/components/editor/code/pointer.d.ts +40 -0
  116. package/build/components/editor/code/pointer.js +134 -0
  117. package/build/components/editor/code/projection.d.ts +43 -0
  118. package/build/components/editor/code/projection.js +200 -0
  119. package/build/components/editor/code/rows.d.ts +50 -0
  120. package/build/components/editor/code/rows.js +296 -0
  121. package/build/components/editor/code/search.d.ts +24 -0
  122. package/build/components/editor/code/search.js +231 -0
  123. package/build/components/editor/code/selection.d.ts +2 -0
  124. package/build/components/editor/code/selection.js +53 -0
  125. package/build/components/editor/code/services/completion.d.ts +27 -0
  126. package/build/components/editor/code/services/completion.js +90 -0
  127. package/build/components/editor/code/services/diagnostics.d.ts +28 -0
  128. package/build/components/editor/code/services/diagnostics.js +98 -0
  129. package/build/components/editor/code/services/hover.d.ts +14 -0
  130. package/build/components/editor/code/services/hover.js +66 -0
  131. package/build/components/editor/code/services/index.d.ts +27 -0
  132. package/build/components/editor/code/services/index.js +64 -0
  133. package/build/components/editor/code/services/model.d.ts +35 -0
  134. package/build/components/editor/code/services/model.js +167 -0
  135. package/build/components/editor/code/services/protocol.d.ts +68 -0
  136. package/build/components/editor/code/services/protocol.js +1 -0
  137. package/build/components/editor/code/services/session.d.ts +54 -0
  138. package/build/components/editor/code/services/session.js +496 -0
  139. package/build/components/editor/code/services/transport.d.ts +12 -0
  140. package/build/components/editor/code/services/transport.js +18 -0
  141. package/build/components/editor/code/syntax.d.ts +83 -0
  142. package/build/components/editor/code/syntax.js +1106 -0
  143. package/build/components/editor/code/unicode.d.ts +10 -0
  144. package/build/components/editor/code/unicode.js +117 -0
  145. package/build/components/editor/code/view.d.ts +122 -0
  146. package/build/components/editor/code/view.js +1560 -0
  147. package/build/components/editor/diffs/diff3.d.ts +25 -0
  148. package/build/components/editor/diffs/diff3.js +152 -0
  149. package/build/components/editor/diffs/engine.d.ts +18 -0
  150. package/build/components/editor/diffs/engine.js +110 -0
  151. package/build/components/editor/diffs/hunks.d.ts +41 -0
  152. package/build/components/editor/diffs/hunks.js +96 -0
  153. package/build/components/editor/diffs/index.d.ts +18 -0
  154. package/build/components/editor/diffs/index.js +10 -0
  155. package/build/components/editor/diffs/merge.d.ts +23 -0
  156. package/build/components/editor/diffs/merge.js +324 -0
  157. package/build/components/editor/diffs/render.d.ts +6 -0
  158. package/build/components/editor/diffs/render.js +56 -0
  159. package/build/components/editor/diffs/view.d.ts +44 -0
  160. package/build/components/editor/diffs/view.js +363 -0
  161. package/build/components/editor/diffs/words.d.ts +8 -0
  162. package/build/components/editor/diffs/words.js +47 -0
  163. package/build/components/editor/index.d.ts +21 -0
  164. package/build/components/editor/index.js +11 -0
  165. package/build/components/editor/markdown/editing.d.ts +7 -0
  166. package/build/components/editor/markdown/editing.js +55 -0
  167. package/build/components/editor/markdown/html.d.ts +24 -0
  168. package/build/components/editor/markdown/html.js +108 -0
  169. package/build/components/editor/markdown/index.d.ts +25 -0
  170. package/build/components/editor/markdown/index.js +33 -0
  171. package/build/components/editor/markdown/inline.d.ts +16 -0
  172. package/build/components/editor/markdown/inline.js +259 -0
  173. package/build/components/editor/markdown/layout.d.ts +63 -0
  174. package/build/components/editor/markdown/layout.js +252 -0
  175. package/build/components/editor/markdown/model.d.ts +53 -0
  176. package/build/components/editor/markdown/model.js +463 -0
  177. package/build/components/editor/markdown/render.d.ts +29 -0
  178. package/build/components/editor/markdown/render.js +561 -0
  179. package/build/components/editor/markdown/structure.d.ts +7 -0
  180. package/build/components/editor/markdown/structure.js +87 -0
  181. package/build/components/editor/markdown/view.d.ts +18 -0
  182. package/build/components/editor/markdown/view.js +1841 -0
  183. package/build/components/editor/tree/clipboard.d.ts +12 -0
  184. package/build/components/editor/tree/clipboard.js +48 -0
  185. package/build/components/editor/tree/compact.d.ts +23 -0
  186. package/build/components/editor/tree/compact.js +57 -0
  187. package/build/components/editor/tree/decorations.d.ts +39 -0
  188. package/build/components/editor/tree/decorations.js +126 -0
  189. package/build/components/editor/tree/drag.d.ts +45 -0
  190. package/build/components/editor/tree/drag.js +462 -0
  191. package/build/components/editor/tree/edit.d.ts +43 -0
  192. package/build/components/editor/tree/edit.js +134 -0
  193. package/build/components/editor/tree/filter.d.ts +7 -0
  194. package/build/components/editor/tree/filter.js +47 -0
  195. package/build/components/editor/tree/find.d.ts +55 -0
  196. package/build/components/editor/tree/find.js +291 -0
  197. package/build/components/editor/tree/glob.d.ts +2 -0
  198. package/build/components/editor/tree/glob.js +57 -0
  199. package/build/components/editor/tree/glyph.d.ts +6 -0
  200. package/build/components/editor/tree/glyph.js +31 -0
  201. package/build/components/editor/tree/history.d.ts +61 -0
  202. package/build/components/editor/tree/history.js +172 -0
  203. package/build/components/editor/tree/icons.d.ts +29 -0
  204. package/build/components/editor/tree/icons.js +417 -0
  205. package/build/components/editor/tree/index.d.ts +118 -0
  206. package/build/components/editor/tree/index.js +2227 -0
  207. package/build/components/editor/tree/jump.d.ts +8 -0
  208. package/build/components/editor/tree/jump.js +45 -0
  209. package/build/components/editor/tree/lazy.d.ts +24 -0
  210. package/build/components/editor/tree/lazy.js +71 -0
  211. package/build/components/editor/tree/model.d.ts +33 -0
  212. package/build/components/editor/tree/model.js +128 -0
  213. package/build/components/editor/tree/selection.d.ts +13 -0
  214. package/build/components/editor/tree/selection.js +55 -0
  215. package/build/components/editor/tree/shortcuts.d.ts +6 -0
  216. package/build/components/editor/tree/shortcuts.js +44 -0
  217. package/build/components/editor/tree/sort.d.ts +13 -0
  218. package/build/components/editor/tree/sort.js +53 -0
  219. package/build/components/editor/tree/spoken.d.ts +9 -0
  220. package/build/components/editor/tree/spoken.js +38 -0
  221. package/build/components/editor/tree/sprites.d.ts +4 -0
  222. package/build/components/editor/tree/sprites.js +152 -0
  223. package/build/components/editor/tree/sticky.d.ts +11 -0
  224. package/build/components/editor/tree/sticky.js +102 -0
  225. package/build/components/editor/tree/transfer.d.ts +15 -0
  226. package/build/components/editor/tree/transfer.js +75 -0
  227. package/build/components/editor/workspace/index.d.ts +64 -0
  228. package/build/components/editor/workspace/index.js +1125 -0
  229. package/build/components/editor/workspace/model.d.ts +161 -0
  230. package/build/components/editor/workspace/model.js +690 -0
  231. package/build/components/error/index.d.ts +31 -0
  232. package/build/components/error/index.js +150 -0
  233. package/build/components/error/scss/index.scss +2 -0
  234. package/build/components/filter/index.d.ts +38 -0
  235. package/build/components/filter/index.js +307 -0
  236. package/build/components/filter/scss/index.scss +2 -0
  237. package/build/components/form/action.js +1 -2
  238. package/build/components/form/index.d.ts +10 -1
  239. package/build/components/form/input.d.ts +12 -2
  240. package/build/components/form/input.js +12 -7
  241. package/build/components/form/scss/index.scss +1 -1
  242. package/build/components/frame/scss/index.scss +2 -0
  243. package/build/components/grid/scss/index.scss +1 -1
  244. package/build/components/heatmap/index.d.ts +32 -0
  245. package/build/components/heatmap/index.js +209 -0
  246. package/build/components/heatmap/scss/index.scss +2 -0
  247. package/build/components/highlight/easing.d.ts +2 -0
  248. package/build/components/highlight/easing.js +19 -0
  249. package/build/components/highlight/index.d.ts +6 -0
  250. package/build/components/highlight/index.js +334 -112
  251. package/build/components/highlight/scss/index.scss +1 -1
  252. package/build/components/icon/index.js +1 -1
  253. package/build/components/icon/scss/index.scss +1 -1
  254. package/build/components/image/index.d.ts +17 -12
  255. package/build/components/image/index.js +3 -61
  256. package/build/components/image/lazyload.d.ts +15 -0
  257. package/build/components/image/lazyload.js +72 -0
  258. package/build/components/image/scss/index.scss +1 -1
  259. package/build/components/index.d.ts +15 -77
  260. package/build/components/index.js +15 -77
  261. package/build/components/inline-edit/format.d.ts +29 -0
  262. package/build/components/inline-edit/format.js +112 -0
  263. package/build/components/inline-edit/history.d.ts +14 -0
  264. package/build/components/inline-edit/history.js +40 -0
  265. package/build/components/inline-edit/index.d.ts +13 -7
  266. package/build/components/inline-edit/index.js +44 -38
  267. package/build/components/inline-edit/markdown.d.ts +7 -0
  268. package/build/components/inline-edit/markdown.js +314 -0
  269. package/build/components/inline-edit/model.d.ts +61 -0
  270. package/build/components/inline-edit/model.js +192 -0
  271. package/build/components/inline-edit/rich.d.ts +39 -0
  272. package/build/components/inline-edit/rich.js +1236 -0
  273. package/build/components/inline-edit/scss/index.scss +1 -1
  274. package/build/components/inline-edit/selection.d.ts +7 -0
  275. package/build/components/inline-edit/selection.js +114 -0
  276. package/build/components/inline-edit/status.d.ts +24 -0
  277. package/build/components/inline-edit/status.js +196 -0
  278. package/build/components/inline-edit/utilities.d.ts +4 -0
  279. package/build/components/inline-edit/utilities.js +12 -0
  280. package/build/components/input/field.d.ts +14 -0
  281. package/build/components/input/field.js +34 -0
  282. package/build/components/input/index.d.ts +7 -14
  283. package/build/components/input/index.js +5 -41
  284. package/build/components/input/scrub.d.ts +30 -0
  285. package/build/components/input/scrub.js +221 -0
  286. package/build/components/input/scss/index.scss +1 -1
  287. package/build/components/input/tag.d.ts +24 -0
  288. package/build/components/input/tag.js +288 -0
  289. package/build/components/json/download.js +4 -3
  290. package/build/components/link/scss/index.scss +1 -1
  291. package/build/components/loading/index.d.ts +1 -1
  292. package/build/components/loading/scss/index.scss +1 -1
  293. package/build/components/marquee/index.d.ts +10 -1
  294. package/build/components/marquee/index.js +240 -174
  295. package/build/components/marquee/scss/index.scss +1 -1
  296. package/build/components/marquee/velocity.d.ts +17 -0
  297. package/build/components/marquee/velocity.js +78 -0
  298. package/build/components/metric/flash.d.ts +11 -0
  299. package/build/components/metric/flash.js +116 -0
  300. package/build/components/metric/index.d.ts +33 -0
  301. package/build/components/metric/index.js +271 -0
  302. package/build/components/metric/scss/index.scss +2 -0
  303. package/build/components/nav/index.d.ts +13 -0
  304. package/build/components/nav/index.js +6 -0
  305. package/build/components/nav/scss/index.scss +2 -0
  306. package/build/components/nav/spy.d.ts +9 -0
  307. package/build/components/nav/spy.js +157 -0
  308. package/build/components/nav/toc.d.ts +26 -0
  309. package/build/components/nav/toc.js +22 -0
  310. package/build/components/nav/tree.d.ts +39 -0
  311. package/build/components/nav/tree.js +123 -0
  312. package/build/components/notification/index.d.ts +15 -0
  313. package/build/components/notification/index.js +98 -0
  314. package/build/components/notification/scss/index.scss +2 -0
  315. package/build/components/overlay/index.d.ts +28 -9
  316. package/build/components/overlay/index.js +346 -8
  317. package/build/components/overlay/popup.d.ts +31 -0
  318. package/build/components/overlay/popup.js +150 -0
  319. package/build/components/overlay/scss/index.scss +1 -1
  320. package/build/components/page/scss/index.scss +1 -1
  321. package/build/components/pagination/dots.d.ts +21 -0
  322. package/build/components/pagination/dots.js +110 -0
  323. package/build/components/pagination/index.d.ts +8 -3
  324. package/build/components/pagination/index.js +36 -59
  325. package/build/components/pagination/scss/index.scss +1 -1
  326. package/build/components/progress/index.d.ts +7 -2
  327. package/build/components/progress/index.js +14 -10
  328. package/build/components/progress/scss/index.scss +1 -1
  329. package/build/components/progress/text.d.ts +12 -0
  330. package/build/components/progress/text.js +124 -0
  331. package/build/components/pull-to-refresh/index.d.ts +3 -11
  332. package/build/components/pull-to-refresh/index.js +127 -165
  333. package/build/components/pull-to-refresh/scss/index.scss +1 -1
  334. package/build/components/radio/index.d.ts +2 -2
  335. package/build/components/radio/index.js +2 -2
  336. package/build/components/range/filter.d.ts +22 -0
  337. package/build/components/range/filter.js +322 -0
  338. package/build/components/range/index.d.ts +9 -2
  339. package/build/components/range/index.js +13 -9
  340. package/build/components/range/scss/index.scss +1 -1
  341. package/build/components/relative-time/index.d.ts +15 -8
  342. package/build/components/relative-time/index.js +206 -193
  343. package/build/components/relative-time/scss/index.scss +1 -1
  344. package/build/components/root/scss/index.scss +1 -1
  345. package/build/components/select/index.d.ts +35 -16
  346. package/build/components/select/index.js +358 -92
  347. package/build/components/select/placement.d.ts +15 -0
  348. package/build/components/select/placement.js +31 -0
  349. package/build/components/select/scss/index.scss +1 -1
  350. package/build/components/shortcut-recorder/index.d.ts +7 -2
  351. package/build/components/shortcut-recorder/index.js +107 -99
  352. package/build/components/shortcut-recorder/scss/index.scss +1 -1
  353. package/build/components/sortable/index.d.ts +722 -4
  354. package/build/components/sortable/index.js +329 -213
  355. package/build/components/sortable/scss/index.scss +1 -1
  356. package/build/components/sticky-header/index.d.ts +22 -15
  357. package/build/components/sticky-header/index.js +41 -81
  358. package/build/components/sticky-header/scss/index.scss +1 -1
  359. package/build/components/story/index.d.ts +21 -0
  360. package/build/components/story/index.js +253 -0
  361. package/build/components/story/scss/index.scss +2 -0
  362. package/build/components/surface-field/engine.d.ts +65 -0
  363. package/build/components/surface-field/engine.js +970 -0
  364. package/build/components/surface-field/index.d.ts +2247 -1470
  365. package/build/components/surface-field/index.js +394 -371
  366. package/build/components/surface-field/scss/index.scss +1 -1
  367. package/build/components/surface-field/surface.d.ts +39 -0
  368. package/build/components/surface-field/surface.js +159 -0
  369. package/build/components/surface-field/worker/index.d.ts +9 -0
  370. package/build/components/surface-field/worker/index.js +19 -0
  371. package/build/components/switch/index.d.ts +2 -2
  372. package/build/components/switch/index.js +2 -2
  373. package/build/components/tasklist/index.d.ts +25 -717
  374. package/build/components/tasklist/index.js +151 -97
  375. package/build/components/tasklist/scss/index.scss +1 -1
  376. package/build/components/text/scss/index.scss +1 -1
  377. package/build/components/textarea/index.d.ts +15 -3
  378. package/build/components/textarea/index.js +124 -32
  379. package/build/components/textarea/scss/index.scss +1 -1
  380. package/build/components/toast/index.d.ts +40 -7
  381. package/build/components/toast/index.js +192 -145
  382. package/build/components/toast/scss/index.scss +1 -1
  383. package/build/components/tooltip/index.d.ts +3 -4
  384. package/build/components/tooltip/index.js +3 -4
  385. package/build/components/tooltip/menu.d.ts +47 -21
  386. package/build/components/tooltip/menu.js +525 -18
  387. package/build/components/tooltip/onclick.d.ts +1 -0
  388. package/build/components/tooltip/onclick.js +50 -33
  389. package/build/components/tooltip/onhover.d.ts +721 -10
  390. package/build/components/tooltip/onhover.js +129 -43
  391. package/build/components/tooltip/scss/index.scss +1 -1
  392. package/build/components/tooltip/shared.d.ts +34 -0
  393. package/build/components/tooltip/shared.js +569 -0
  394. package/build/components/tooltip/utilities.d.ts +23 -3
  395. package/build/components/tooltip/utilities.js +46 -21
  396. package/build/components/typewriter/index.d.ts +1439 -10
  397. package/build/components/typewriter/index.js +7 -2
  398. package/build/components/typewriter/retype.d.ts +7 -0
  399. package/build/components/typewriter/retype.js +83 -0
  400. package/build/components/typewriter/rotate.d.ts +13 -0
  401. package/build/components/typewriter/rotate.js +186 -0
  402. package/build/components/typewriter/scss/index.scss +1 -1
  403. package/build/components/uptime/index.js +61 -61
  404. package/build/components/uptime/scss/index.scss +1 -1
  405. package/build/components/usage-meter/index.d.ts +15 -3
  406. package/build/components/usage-meter/index.js +19 -19
  407. package/build/components/usage-meter/scss/index.scss +1 -1
  408. package/build/css-utilities/background/scss/index.scss +1 -1
  409. package/build/css-utilities/border/scss/index.scss +1 -1
  410. package/build/css-utilities/color/scss/index.scss +1 -1
  411. package/build/css-utilities/flex/scss/index.scss +1 -1
  412. package/build/css-utilities/font/geist/scss/index.scss +1 -1
  413. package/build/css-utilities/font/montserrat/scss/index.scss +1 -1
  414. package/build/css-utilities/glass/index.d.ts +10 -0
  415. package/build/css-utilities/glass/index.js +26 -0
  416. package/build/css-utilities/glass/scss/index.scss +1 -1
  417. package/build/css-utilities/index.d.ts +3 -0
  418. package/build/css-utilities/index.js +3 -0
  419. package/build/css-utilities/index.scss +1 -1
  420. package/build/css-utilities/inline/scss/index.scss +1 -1
  421. package/build/css-utilities/scrollbar/index.d.ts +42 -0
  422. package/build/css-utilities/scrollbar/index.js +155 -0
  423. package/build/css-utilities/scrollbar/scss/index.scss +1 -1
  424. package/build/css-utilities/skeleton/scss/index.scss +1 -1
  425. package/build/css-utilities/text/scss/index.scss +1 -1
  426. package/build/css-utilities/theme/index.d.ts +16 -0
  427. package/build/css-utilities/theme/index.js +60 -0
  428. package/build/normalize/scss/index.scss +3 -0
  429. package/build/shared/anchor.d.ts +7 -0
  430. package/build/shared/anchor.js +18 -0
  431. package/build/shared/animation.d.ts +6 -0
  432. package/build/shared/animation.js +57 -0
  433. package/build/shared/clamp.d.ts +2 -0
  434. package/build/shared/clamp.js +4 -0
  435. package/build/shared/deadline.d.ts +2 -0
  436. package/build/shared/deadline.js +94 -0
  437. package/build/shared/dismiss.d.ts +2 -0
  438. package/build/shared/dismiss.js +5 -0
  439. package/build/shared/drag.d.ts +47 -0
  440. package/build/shared/drag.js +189 -0
  441. package/build/shared/fuzzy.d.ts +6 -0
  442. package/build/shared/fuzzy.js +153 -0
  443. package/build/shared/keystep.d.ts +2 -0
  444. package/build/shared/keystep.js +21 -0
  445. package/build/shared/platform.d.ts +2 -0
  446. package/build/shared/platform.js +3 -0
  447. package/build/shared/press.d.ts +15 -0
  448. package/build/shared/press.js +83 -0
  449. package/build/shared/resize.d.ts +18 -0
  450. package/build/shared/resize.js +137 -0
  451. package/build/shared/subscribe.d.ts +3 -0
  452. package/build/shared/subscribe.js +12 -0
  453. package/build/shared/ticker.d.ts +3 -0
  454. package/build/shared/ticker.js +34 -0
  455. package/build/shared/transition.d.ts +11 -0
  456. package/build/shared/transition.js +49 -0
  457. package/build/shared/viewport.d.ts +7 -0
  458. package/build/shared/viewport.js +11 -0
  459. package/build/shared/visible.d.ts +8 -0
  460. package/build/shared/visible.js +79 -0
  461. package/build/themes/dark/input.d.ts +3 -721
  462. package/build/themes/dark/input.js +4 -2
  463. package/build/themes/dark/select.js +2 -1
  464. package/build/themes/dark/textarea.d.ts +15 -3
  465. package/build/themes/dark/textarea.js +1 -0
  466. package/package.json +11 -4
  467. package/pnpm-workspace.yaml +3 -18
  468. package/scripts/animation.test.mjs +45 -0
  469. package/scripts/chat-minimap.test.mjs +53 -0
  470. package/scripts/code-editor-features.test.mjs +287 -0
  471. package/scripts/code-editor-markdown.test.mjs +527 -0
  472. package/scripts/code-editor-services.test.mjs +361 -0
  473. package/scripts/code-editor-workspace.test.mjs +398 -0
  474. package/scripts/code-editor.test.mjs +1615 -0
  475. package/scripts/css-variables.test.mjs +1 -1
  476. package/scripts/deadline.test.mjs +191 -0
  477. package/scripts/diffs.test.mjs +189 -0
  478. package/scripts/file-tree-features.test.mjs +137 -0
  479. package/scripts/file-tree-icons.test.mjs +234 -0
  480. package/scripts/highlight.test.mjs +52 -0
  481. package/scripts/resize.test.mjs +247 -0
  482. package/scripts/resolve.mjs +52 -0
  483. package/scripts/slides.test.mjs +126 -0
  484. package/scripts/subscribe.test.mjs +49 -0
  485. package/scripts/ticker.test.mjs +126 -0
  486. package/scripts/transition.test.mjs +83 -0
  487. package/scripts/viewport.test.mjs +82 -0
  488. package/scripts/visible.test.mjs +186 -0
  489. package/shared.scss +2 -0
  490. package/src/components/accordion/index.ts +71 -12
  491. package/src/components/accordion/scss/index.scss +32 -129
  492. package/src/components/accordion/scss/variables.scss +7 -0
  493. package/src/components/announcement/index.ts +26 -0
  494. package/src/components/announcement/scss/index.scss +47 -0
  495. package/src/components/announcement/scss/variables.scss +23 -0
  496. package/src/components/banner/scss/index.scss +4 -8
  497. package/src/components/banner/scss/variables.scss +6 -0
  498. package/src/components/breadcrumb/index.ts +222 -25
  499. package/src/components/breadcrumb/scss/index.scss +217 -34
  500. package/src/components/breadcrumb/scss/variables.scss +73 -8
  501. package/src/components/button/copy.ts +1 -1
  502. package/src/components/button/faces.ts +1 -2
  503. package/src/components/button/fan.ts +111 -114
  504. package/src/components/button/hold.ts +9 -9
  505. package/src/components/button/icons.ts +15 -32
  506. package/src/components/button/index.ts +13 -1
  507. package/src/components/button/kbd.ts +6 -6
  508. package/src/components/button/loading.ts +1 -1
  509. package/src/components/button/morph.ts +153 -0
  510. package/src/components/button/scss/_kbd.scss +2 -1
  511. package/src/components/button/scss/_morph.scss +119 -0
  512. package/src/components/button/scss/_sidebar.scss +50 -0
  513. package/src/components/button/scss/_split.scss +53 -0
  514. package/src/components/button/scss/index.scss +45 -31
  515. package/src/components/button/scss/variables.scss +85 -34
  516. package/src/components/button/sidebar.ts +60 -0
  517. package/src/components/button/split.ts +60 -0
  518. package/src/components/capslock/index.ts +54 -0
  519. package/src/components/capslock/scss/index.scss +55 -0
  520. package/src/components/capslock/scss/variables.scss +26 -0
  521. package/src/components/card/expand.ts +141 -0
  522. package/src/components/card/index.ts +8 -0
  523. package/src/components/card/scss/_expand.scss +240 -0
  524. package/src/components/card/scss/index.scss +52 -9
  525. package/src/components/card/scss/variables.scss +85 -19
  526. package/src/components/cc/index.ts +558 -0
  527. package/src/components/cc/scss/index.scss +429 -0
  528. package/src/components/cc/scss/variables.scss +68 -0
  529. package/src/components/chat-minimap/index.ts +265 -0
  530. package/src/components/chat-minimap/range.ts +59 -0
  531. package/src/components/chat-minimap/scss/index.scss +140 -0
  532. package/src/components/chat-minimap/scss/variables.scss +97 -0
  533. package/src/components/chat-minimap/spy.ts +151 -0
  534. package/src/components/checkbox/group.ts +216 -0
  535. package/src/components/checkbox/index.ts +3 -41
  536. package/src/components/checkbox/options.ts +55 -0
  537. package/src/components/checkbox/scss/index.scss +69 -17
  538. package/src/components/checkbox/scss/variables.scss +28 -7
  539. package/src/components/clipboard/copy.ts +5 -5
  540. package/src/components/color-picker/index.ts +160 -233
  541. package/src/components/color-picker/scss/index.scss +51 -93
  542. package/src/components/color-picker/scss/variables.scss +68 -10
  543. package/src/components/command/index.ts +788 -206
  544. package/src/components/command/scss/index.scss +168 -158
  545. package/src/components/command/scss/variables.scss +118 -25
  546. package/src/components/copy/index.ts +69 -0
  547. package/src/components/copy/scss/index.scss +52 -0
  548. package/src/components/copy/scss/variables.scss +22 -0
  549. package/src/components/counter/index.ts +69 -94
  550. package/src/components/counter/scss/index.scss +20 -48
  551. package/src/components/counter/scss/variables.scss +24 -35
  552. package/src/components/datalist/index.ts +49 -29
  553. package/src/components/datalist/scss/index.scss +43 -24
  554. package/src/components/datalist/scss/variables.scss +7 -4
  555. package/src/components/dock/index.ts +61 -231
  556. package/src/components/dock/scss/index.scss +73 -39
  557. package/src/components/dock/scss/variables.scss +77 -16
  558. package/src/components/editor/code/changes.ts +111 -0
  559. package/src/components/editor/code/clipboard.ts +81 -0
  560. package/src/components/editor/code/colors.ts +278 -0
  561. package/src/components/editor/code/commands.ts +879 -0
  562. package/src/components/editor/code/composition.ts +85 -0
  563. package/src/components/editor/code/conflicts.ts +160 -0
  564. package/src/components/editor/code/document.ts +789 -0
  565. package/src/components/editor/code/editor.ts +68 -0
  566. package/src/components/editor/code/features.ts +1144 -0
  567. package/src/components/editor/code/field.ts +96 -0
  568. package/src/components/editor/code/find.ts +340 -0
  569. package/src/components/editor/code/folding.ts +689 -0
  570. package/src/components/editor/code/goto.ts +89 -0
  571. package/src/components/editor/code/gutter.ts +47 -0
  572. package/src/components/editor/code/index.ts +29 -0
  573. package/src/components/editor/code/keymap.ts +518 -0
  574. package/src/components/editor/code/layout.ts +565 -0
  575. package/src/components/editor/code/links.ts +55 -0
  576. package/src/components/editor/code/minimap.ts +260 -0
  577. package/src/components/editor/code/navigation.ts +95 -0
  578. package/src/components/editor/code/pointer.ts +199 -0
  579. package/src/components/editor/code/projection.ts +342 -0
  580. package/src/components/editor/code/rows.ts +412 -0
  581. package/src/components/editor/code/scss/_editor.scss +432 -0
  582. package/src/components/editor/code/scss/_features.scss +311 -0
  583. package/src/components/editor/code/scss/_services.scss +154 -0
  584. package/src/components/editor/code/scss/index.scss +6 -0
  585. package/src/components/editor/code/scss/variables.scss +194 -0
  586. package/src/components/editor/code/search.ts +391 -0
  587. package/src/components/editor/code/selection.ts +83 -0
  588. package/src/components/editor/code/services/completion.ts +114 -0
  589. package/src/components/editor/code/services/diagnostics.ts +168 -0
  590. package/src/components/editor/code/services/hover.ts +74 -0
  591. package/src/components/editor/code/services/index.ts +118 -0
  592. package/src/components/editor/code/services/model.ts +270 -0
  593. package/src/components/editor/code/services/protocol.ts +55 -0
  594. package/src/components/editor/code/services/session.ts +721 -0
  595. package/src/components/editor/code/services/transport.ts +36 -0
  596. package/src/components/editor/code/syntax.ts +1673 -0
  597. package/src/components/editor/code/unicode.ts +156 -0
  598. package/src/components/editor/code/view.ts +2139 -0
  599. package/src/components/editor/diffs/diff3.ts +280 -0
  600. package/src/components/editor/diffs/engine.ts +192 -0
  601. package/src/components/editor/diffs/hunks.ts +196 -0
  602. package/src/components/editor/diffs/index.ts +20 -0
  603. package/src/components/editor/diffs/merge.ts +377 -0
  604. package/src/components/editor/diffs/render.ts +95 -0
  605. package/src/components/editor/diffs/scss/_diffs.scss +352 -0
  606. package/src/components/editor/diffs/scss/_merge.scss +121 -0
  607. package/src/components/editor/diffs/scss/index.scss +5 -0
  608. package/src/components/editor/diffs/scss/variables.scss +70 -0
  609. package/src/components/editor/diffs/view.ts +464 -0
  610. package/src/components/editor/diffs/words.ts +85 -0
  611. package/src/components/editor/index.ts +59 -0
  612. package/src/components/editor/markdown/editing.ts +92 -0
  613. package/src/components/editor/markdown/html.ts +192 -0
  614. package/src/components/editor/markdown/index.ts +72 -0
  615. package/src/components/editor/markdown/inline.ts +399 -0
  616. package/src/components/editor/markdown/layout.ts +446 -0
  617. package/src/components/editor/markdown/model.ts +737 -0
  618. package/src/components/editor/markdown/render.ts +461 -0
  619. package/src/components/editor/markdown/scss/index.scss +456 -0
  620. package/src/components/editor/markdown/scss/variables.scss +109 -0
  621. package/src/components/editor/markdown/structure.ts +136 -0
  622. package/src/components/editor/markdown/view.ts +2417 -0
  623. package/src/components/editor/tree/clipboard.ts +80 -0
  624. package/src/components/editor/tree/compact.ts +93 -0
  625. package/src/components/editor/tree/decorations.ts +210 -0
  626. package/src/components/editor/tree/drag.ts +652 -0
  627. package/src/components/editor/tree/edit.ts +234 -0
  628. package/src/components/editor/tree/filter.ts +81 -0
  629. package/src/components/editor/tree/find.ts +500 -0
  630. package/src/components/editor/tree/glob.ts +76 -0
  631. package/src/components/editor/tree/glyph.ts +49 -0
  632. package/src/components/editor/tree/history.ts +282 -0
  633. package/src/components/editor/tree/icons.ts +507 -0
  634. package/src/components/editor/tree/index.ts +3438 -0
  635. package/src/components/editor/tree/jump.ts +78 -0
  636. package/src/components/editor/tree/lazy.ts +111 -0
  637. package/src/components/editor/tree/model.ts +235 -0
  638. package/src/components/editor/tree/scss/index.scss +732 -0
  639. package/src/components/editor/tree/scss/variables.scss +260 -0
  640. package/src/components/editor/tree/selection.ts +85 -0
  641. package/src/components/editor/tree/shortcuts.ts +64 -0
  642. package/src/components/editor/tree/sort.ts +104 -0
  643. package/src/components/editor/tree/spoken.ts +67 -0
  644. package/src/components/editor/tree/sprites.ts +159 -0
  645. package/src/components/editor/tree/sticky.ts +154 -0
  646. package/src/components/editor/tree/transfer.ts +134 -0
  647. package/src/components/editor/workspace/index.ts +1357 -0
  648. package/src/components/editor/workspace/model.ts +1023 -0
  649. package/src/components/editor/workspace/scss/index.scss +547 -0
  650. package/src/components/error/index.ts +189 -0
  651. package/src/components/error/scss/index.scss +89 -0
  652. package/src/components/error/scss/variables.scss +13 -0
  653. package/src/components/filter/index.ts +420 -0
  654. package/src/components/filter/scss/index.scss +6 -0
  655. package/src/components/filter/scss/variables.scss +17 -0
  656. package/src/components/form/action.ts +4 -4
  657. package/src/components/form/input.ts +13 -7
  658. package/src/components/frame/scss/index.scss +107 -0
  659. package/src/components/frame/scss/variables.scss +27 -0
  660. package/src/components/heatmap/index.ts +281 -0
  661. package/src/components/heatmap/scss/index.scss +131 -0
  662. package/src/components/heatmap/scss/variables.scss +58 -0
  663. package/src/components/highlight/easing.ts +33 -0
  664. package/src/components/highlight/index.ts +580 -77
  665. package/src/components/highlight/scss/index.scss +49 -9
  666. package/src/components/highlight/scss/variables.scss +62 -3
  667. package/src/components/icon/scss/index.scss +0 -1
  668. package/src/components/image/index.ts +3 -76
  669. package/src/components/image/lazyload.ts +95 -0
  670. package/src/components/image/scss/index.scss +71 -57
  671. package/src/components/image/scss/variables.scss +39 -14
  672. package/src/components/index.ts +27 -77
  673. package/src/components/inline-edit/format.ts +183 -0
  674. package/src/components/inline-edit/history.ts +71 -0
  675. package/src/components/inline-edit/index.ts +44 -38
  676. package/src/components/inline-edit/markdown.ts +485 -0
  677. package/src/components/inline-edit/model.ts +366 -0
  678. package/src/components/inline-edit/rich.ts +1518 -0
  679. package/src/components/inline-edit/scss/index.scss +431 -41
  680. package/src/components/inline-edit/scss/variables.scss +105 -0
  681. package/src/components/inline-edit/selection.ts +188 -0
  682. package/src/components/inline-edit/status.ts +194 -0
  683. package/src/components/inline-edit/utilities.ts +18 -0
  684. package/src/components/input/field.ts +32 -0
  685. package/src/components/input/index.ts +5 -38
  686. package/src/components/input/scrub.ts +338 -0
  687. package/src/components/input/scss/_field.scss +53 -0
  688. package/src/components/input/scss/_scrub.scss +91 -0
  689. package/src/components/input/scss/_tag.scss +162 -0
  690. package/src/components/input/scss/index.scss +5 -18
  691. package/src/components/input/scss/variables.scss +108 -38
  692. package/src/components/input/tag.ts +403 -0
  693. package/src/components/json/download.ts +9 -6
  694. package/src/components/link/scss/index.scss +9 -4
  695. package/src/components/link/scss/variables.scss +1 -31
  696. package/src/components/loading/index.ts +1 -1
  697. package/src/components/loading/scss/index.scss +3 -6
  698. package/src/components/marquee/index.ts +246 -169
  699. package/src/components/marquee/scss/index.scss +21 -28
  700. package/src/components/marquee/scss/variables.scss +16 -0
  701. package/src/components/marquee/velocity.ts +144 -0
  702. package/src/components/metric/flash.ts +128 -0
  703. package/src/components/metric/index.ts +315 -0
  704. package/src/components/metric/scss/_flash.scss +163 -0
  705. package/src/components/metric/scss/index.scss +163 -0
  706. package/src/components/metric/scss/variables.scss +133 -0
  707. package/src/components/nav/index.ts +13 -0
  708. package/src/components/nav/scss/index.scss +123 -0
  709. package/src/components/nav/scss/variables.scss +60 -0
  710. package/src/components/nav/spy.ts +203 -0
  711. package/src/components/nav/toc.ts +48 -0
  712. package/src/components/nav/tree.ts +181 -0
  713. package/src/components/notification/index.ts +111 -0
  714. package/src/components/notification/scss/index.scss +123 -0
  715. package/src/components/notification/scss/variables.scss +54 -0
  716. package/src/components/overlay/index.ts +487 -5
  717. package/src/components/overlay/popup.ts +214 -0
  718. package/src/components/overlay/scss/index.scss +379 -7
  719. package/src/components/overlay/scss/variables.scss +117 -0
  720. package/src/components/pagination/dots.ts +132 -0
  721. package/src/components/pagination/index.ts +34 -45
  722. package/src/components/pagination/scss/_dots.scss +67 -0
  723. package/src/components/pagination/scss/index.scss +15 -8
  724. package/src/components/pagination/scss/variables.scss +59 -0
  725. package/src/components/progress/index.ts +18 -8
  726. package/src/components/progress/scss/_text.scss +132 -0
  727. package/src/components/progress/scss/index.scss +1 -0
  728. package/src/components/progress/scss/variables.scss +42 -0
  729. package/src/components/progress/text.ts +158 -0
  730. package/src/components/pull-to-refresh/index.ts +126 -248
  731. package/src/components/pull-to-refresh/scss/index.scss +65 -29
  732. package/src/components/pull-to-refresh/scss/variables.scss +24 -1
  733. package/src/components/radio/index.ts +3 -3
  734. package/src/components/range/filter.ts +398 -0
  735. package/src/components/range/index.ts +27 -16
  736. package/src/components/range/scss/_filter.scss +374 -0
  737. package/src/components/range/scss/_slider.scss +140 -0
  738. package/src/components/range/scss/_vertical.scss +22 -0
  739. package/src/components/range/scss/index.scss +26 -14
  740. package/src/components/range/scss/variables.scss +78 -13
  741. package/src/components/relative-time/index.ts +218 -233
  742. package/src/components/relative-time/scss/index.scss +42 -18
  743. package/src/components/relative-time/scss/variables.scss +25 -0
  744. package/src/components/root/scss/index.scss +7 -3
  745. package/src/components/root/scss/variables.scss +21 -12
  746. package/src/components/select/index.ts +506 -153
  747. package/src/components/select/placement.ts +75 -0
  748. package/src/components/select/scss/index.scss +182 -45
  749. package/src/components/select/scss/variables.scss +58 -44
  750. package/src/components/shortcut-recorder/index.ts +145 -106
  751. package/src/components/shortcut-recorder/scss/index.scss +34 -121
  752. package/src/components/shortcut-recorder/scss/variables.scss +27 -39
  753. package/src/components/sortable/index.ts +380 -272
  754. package/src/components/sortable/scss/index.scss +107 -38
  755. package/src/components/sortable/scss/variables.scss +12 -1
  756. package/src/components/sticky-header/index.ts +43 -92
  757. package/src/components/sticky-header/scss/index.scss +76 -86
  758. package/src/components/sticky-header/scss/variables.scss +36 -12
  759. package/src/components/story/index.ts +305 -0
  760. package/src/components/story/scss/index.scss +189 -0
  761. package/src/components/story/scss/variables.scss +28 -0
  762. package/src/components/surface-field/engine.ts +1631 -0
  763. package/src/components/surface-field/index.ts +574 -608
  764. package/src/components/surface-field/scss/index.scss +74 -17
  765. package/src/components/surface-field/scss/variables.scss +23 -0
  766. package/src/components/surface-field/surface.ts +260 -0
  767. package/src/components/surface-field/worker/index.ts +41 -0
  768. package/src/components/switch/index.ts +3 -3
  769. package/src/components/tasklist/index.ts +197 -119
  770. package/src/components/tasklist/scss/index.scss +45 -128
  771. package/src/components/tasklist/scss/variables.scss +97 -70
  772. package/src/components/text/scss/index.scss +2 -15
  773. package/src/components/textarea/index.ts +142 -39
  774. package/src/components/textarea/scss/index.scss +41 -18
  775. package/src/components/textarea/scss/variables.scss +5 -46
  776. package/src/components/toast/index.ts +270 -157
  777. package/src/components/toast/scss/index.scss +244 -225
  778. package/src/components/toast/scss/variables.scss +68 -9
  779. package/src/components/tooltip/index.ts +9 -4
  780. package/src/components/tooltip/menu.ts +599 -37
  781. package/src/components/tooltip/onclick.ts +28 -22
  782. package/src/components/tooltip/onhover.ts +155 -73
  783. package/src/components/tooltip/scss/_menu.scss +352 -0
  784. package/src/components/tooltip/scss/_shared.scss +109 -0
  785. package/src/components/tooltip/scss/_south.scss +0 -1
  786. package/src/components/tooltip/scss/index.scss +16 -97
  787. package/src/components/tooltip/scss/variables.scss +103 -59
  788. package/src/components/tooltip/shared.ts +819 -0
  789. package/src/components/tooltip/utilities.ts +78 -23
  790. package/src/components/typewriter/index.ts +8 -1
  791. package/src/components/typewriter/retype.ts +99 -0
  792. package/src/components/typewriter/rotate.ts +279 -0
  793. package/src/components/typewriter/scss/_caret.scss +34 -0
  794. package/src/components/typewriter/scss/_retype.scss +67 -0
  795. package/src/components/typewriter/scss/_rotate.scss +28 -0
  796. package/src/components/typewriter/scss/index.scss +3 -33
  797. package/src/components/typewriter/scss/variables.scss +60 -10
  798. package/src/components/uptime/index.ts +50 -49
  799. package/src/components/uptime/scss/index.scss +67 -47
  800. package/src/components/uptime/scss/variables.scss +32 -4
  801. package/src/components/usage-meter/index.ts +17 -17
  802. package/src/components/usage-meter/scss/index.scss +19 -31
  803. package/src/components/usage-meter/scss/variables.scss +15 -7
  804. package/src/css-utilities/background/scss/index.scss +1 -1
  805. package/src/css-utilities/background/scss/variables.scss +2 -17
  806. package/src/css-utilities/border/scss/index.scss +1 -1
  807. package/src/css-utilities/border/scss/variables.scss +7 -23
  808. package/src/css-utilities/color/scss/index.scss +1 -1
  809. package/src/css-utilities/color/scss/variables.scss +2 -17
  810. package/src/css-utilities/flex/scss/variables.scss +0 -1
  811. package/src/css-utilities/font/geist/scss/index.scss +2 -2
  812. package/src/css-utilities/font/montserrat/scss/index.scss +2 -2
  813. package/src/css-utilities/glass/index.ts +42 -0
  814. package/src/css-utilities/glass/scss/index.scss +65 -1
  815. package/src/css-utilities/glass/scss/variables.scss +6 -1
  816. package/src/css-utilities/index.scss +0 -5
  817. package/src/css-utilities/index.ts +3 -0
  818. package/src/css-utilities/scrollbar/index.ts +200 -0
  819. package/src/css-utilities/scrollbar/scss/index.scss +300 -36
  820. package/src/css-utilities/scrollbar/scss/variables.scss +38 -3
  821. package/src/css-utilities/text/scss/index.scss +97 -6
  822. package/src/css-utilities/text/scss/variables.scss +22 -0
  823. package/src/css-utilities/theme/index.ts +71 -0
  824. package/src/normalize/scss/index.scss +42 -0
  825. package/src/shared/anchor.ts +34 -0
  826. package/src/shared/animation.ts +106 -0
  827. package/src/shared/clamp.ts +6 -0
  828. package/src/shared/deadline.ts +153 -0
  829. package/src/shared/dismiss.ts +6 -0
  830. package/src/shared/drag.ts +348 -0
  831. package/src/shared/fuzzy.ts +263 -0
  832. package/src/shared/keystep.ts +28 -0
  833. package/src/shared/platform.ts +10 -0
  834. package/src/shared/press.ts +144 -0
  835. package/src/shared/resize.ts +232 -0
  836. package/src/shared/scss/absolute.scss +28 -0
  837. package/src/shared/scss/anchor.scss +63 -0
  838. package/src/shared/scss/background.scss +21 -0
  839. package/src/shared/scss/border.scss +21 -0
  840. package/src/shared/scss/color.scss +21 -0
  841. package/src/shared/scss/drag.scss +7 -0
  842. package/src/shared/scss/hidden.scss +22 -0
  843. package/src/shared/scss/icon.scss +36 -0
  844. package/src/shared/scss/index.scss +16 -0
  845. package/src/shared/scss/layer.scss +20 -0
  846. package/src/shared/scss/list.scss +64 -0
  847. package/src/shared/scss/reset.scss +21 -0
  848. package/src/shared/scss/string.scss +18 -0
  849. package/src/shared/scss/text.scss +31 -0
  850. package/src/shared/subscribe.ts +20 -0
  851. package/src/shared/ticker.ts +56 -0
  852. package/src/shared/transition.ts +61 -0
  853. package/src/shared/viewport.ts +23 -0
  854. package/src/shared/visible.ts +127 -0
  855. package/src/themes/dark/input.ts +6 -2
  856. package/src/themes/dark/select.ts +3 -2
  857. package/src/themes/dark/textarea.ts +1 -0
  858. package/src/tokens/scss/box-shadow.scss +12 -16
  859. package/src/tokens/scss/color.scss +3 -2
  860. package/src/tokens/scss/font-family.scss +5 -0
  861. package/src/tokens/scss/index.scss +10 -0
  862. package/src/tokens/scss/state.scss +10 -8
  863. package/storage/code.md +180 -0
  864. package/storage/editor-features.md +227 -0
  865. package/storage/svg/amex.svg +1 -0
  866. package/storage/svg/arrow-down.svg +1 -0
  867. package/storage/svg/arrow-up.svg +1 -0
  868. package/storage/svg/bold.svg +1 -0
  869. package/storage/svg/caps-lock.svg +1 -0
  870. package/storage/svg/card.svg +1 -0
  871. package/storage/svg/chevron-down.svg +1 -0
  872. package/storage/svg/chevron-left.svg +1 -0
  873. package/storage/svg/chevron-right.svg +1 -0
  874. package/storage/svg/chevron-up.svg +1 -0
  875. package/storage/svg/chevrons-up-down.svg +1 -0
  876. package/storage/svg/chip.svg +1 -0
  877. package/storage/svg/circle.svg +1 -0
  878. package/storage/svg/clear-format.svg +1 -0
  879. package/storage/svg/close.svg +1 -0
  880. package/storage/svg/code.svg +1 -0
  881. package/storage/svg/command.svg +1 -0
  882. package/storage/svg/contrast.svg +1 -0
  883. package/storage/svg/copy.svg +1 -0
  884. package/storage/svg/corner-down-right.svg +1 -0
  885. package/storage/svg/credit-card.svg +1 -0
  886. package/storage/svg/dash.svg +1 -0
  887. package/storage/svg/discover.svg +1 -0
  888. package/storage/svg/document.svg +1 -0
  889. package/storage/svg/dots.svg +1 -0
  890. package/storage/svg/download.svg +1 -0
  891. package/storage/svg/enter.svg +1 -0
  892. package/storage/svg/expand.svg +1 -0
  893. package/storage/svg/external-link.svg +1 -0
  894. package/storage/svg/eye-off.svg +1 -0
  895. package/storage/svg/eye.svg +1 -0
  896. package/storage/svg/file-agents.svg +1 -0
  897. package/storage/svg/file-astro.svg +1 -0
  898. package/storage/svg/file-babel.svg +1 -0
  899. package/storage/svg/file-bash.svg +1 -0
  900. package/storage/svg/file-biome.svg +1 -0
  901. package/storage/svg/file-bootstrap.svg +1 -0
  902. package/storage/svg/file-browserslist.svg +1 -0
  903. package/storage/svg/file-bun.svg +1 -0
  904. package/storage/svg/file-c.svg +1 -0
  905. package/storage/svg/file-claude.svg +1 -0
  906. package/storage/svg/file-css.svg +1 -0
  907. package/storage/svg/file-database.svg +1 -0
  908. package/storage/svg/file-docker.svg +1 -0
  909. package/storage/svg/file-eslint.svg +1 -0
  910. package/storage/svg/file-font.svg +1 -0
  911. package/storage/svg/file-git.svg +1 -0
  912. package/storage/svg/file-go.svg +1 -0
  913. package/storage/svg/file-graphql.svg +1 -0
  914. package/storage/svg/file-html.svg +1 -0
  915. package/storage/svg/file-image.svg +1 -0
  916. package/storage/svg/file-javascript.svg +1 -0
  917. package/storage/svg/file-json.svg +1 -0
  918. package/storage/svg/file-markdown.svg +1 -0
  919. package/storage/svg/file-mcp.svg +1 -0
  920. package/storage/svg/file-nextjs.svg +1 -0
  921. package/storage/svg/file-npm.svg +1 -0
  922. package/storage/svg/file-oxc.svg +1 -0
  923. package/storage/svg/file-package.svg +1 -0
  924. package/storage/svg/file-pnpm.svg +1 -0
  925. package/storage/svg/file-postcss.svg +1 -0
  926. package/storage/svg/file-prettier.svg +1 -0
  927. package/storage/svg/file-python.svg +1 -0
  928. package/storage/svg/file-react.svg +1 -0
  929. package/storage/svg/file-readme.svg +1 -0
  930. package/storage/svg/file-ruby.svg +1 -0
  931. package/storage/svg/file-rust.svg +1 -0
  932. package/storage/svg/file-sass.svg +1 -0
  933. package/storage/svg/file-stylelint.svg +1 -0
  934. package/storage/svg/file-svelte.svg +1 -0
  935. package/storage/svg/file-svg.svg +1 -0
  936. package/storage/svg/file-svgo.svg +1 -0
  937. package/storage/svg/file-swift.svg +1 -0
  938. package/storage/svg/file-table.svg +1 -0
  939. package/storage/svg/file-tailwind.svg +1 -0
  940. package/storage/svg/file-terraform.svg +1 -0
  941. package/storage/svg/file-text.svg +1 -0
  942. package/storage/svg/file-tsconfig.svg +1 -0
  943. package/storage/svg/file-typescript.svg +1 -0
  944. package/storage/svg/file-vite.svg +1 -0
  945. package/storage/svg/file-vscode.svg +1 -0
  946. package/storage/svg/file-vue.svg +1 -0
  947. package/storage/svg/file-wasm.svg +1 -0
  948. package/storage/svg/file-webpack.svg +1 -0
  949. package/storage/svg/file-yml.svg +1 -0
  950. package/storage/svg/file-zig.svg +1 -0
  951. package/storage/svg/file-zip.svg +1 -0
  952. package/storage/svg/file.svg +1 -0
  953. package/storage/svg/folder-assets-open.svg +1 -0
  954. package/storage/svg/folder-assets.svg +1 -0
  955. package/storage/svg/folder-components-open.svg +1 -0
  956. package/storage/svg/folder-components.svg +1 -0
  957. package/storage/svg/folder-docs-open.svg +1 -0
  958. package/storage/svg/folder-docs.svg +1 -0
  959. package/storage/svg/folder-git-open.svg +1 -0
  960. package/storage/svg/folder-git.svg +1 -0
  961. package/storage/svg/folder-open.svg +1 -0
  962. package/storage/svg/folder-output-open.svg +1 -0
  963. package/storage/svg/folder-output.svg +1 -0
  964. package/storage/svg/folder-packages-open.svg +1 -0
  965. package/storage/svg/folder-packages.svg +1 -0
  966. package/storage/svg/folder-public-open.svg +1 -0
  967. package/storage/svg/folder-public.svg +1 -0
  968. package/storage/svg/folder-scripts-open.svg +1 -0
  969. package/storage/svg/folder-scripts.svg +1 -0
  970. package/storage/svg/folder-src-open.svg +1 -0
  971. package/storage/svg/folder-src.svg +1 -0
  972. package/storage/svg/folder-test-open.svg +1 -0
  973. package/storage/svg/folder-test.svg +1 -0
  974. package/storage/svg/folder.svg +1 -0
  975. package/storage/svg/gear.svg +1 -0
  976. package/storage/svg/help.svg +1 -0
  977. package/storage/svg/highlight.svg +1 -0
  978. package/storage/svg/home.svg +1 -0
  979. package/storage/svg/inbox.svg +1 -0
  980. package/storage/svg/italic.svg +1 -0
  981. package/storage/svg/keyboard.svg +1 -0
  982. package/storage/svg/link.svg +1 -0
  983. package/storage/svg/list-checks.svg +1 -0
  984. package/storage/svg/lock.svg +1 -0
  985. package/storage/svg/log-out.svg +1 -0
  986. package/storage/svg/map.svg +1 -0
  987. package/storage/svg/mastercard.svg +1 -0
  988. package/storage/svg/pause.svg +1 -0
  989. package/storage/svg/pencil.svg +1 -0
  990. package/storage/svg/play.svg +1 -0
  991. package/storage/svg/plus.svg +1 -0
  992. package/storage/svg/redo.svg +1 -0
  993. package/storage/svg/save.svg +1 -0
  994. package/storage/svg/sidebar-filled.svg +1 -0
  995. package/storage/svg/sidebar.svg +1 -0
  996. package/storage/svg/slash.svg +1 -0
  997. package/storage/svg/sliders.svg +1 -0
  998. package/storage/svg/strikethrough.svg +1 -0
  999. package/storage/svg/trash.svg +1 -0
  1000. package/storage/svg/triangle.svg +1 -0
  1001. package/storage/svg/undo.svg +1 -0
  1002. package/storage/svg/unlink.svg +1 -0
  1003. package/storage/svg/user.svg +1 -0
  1004. package/storage/svg/visa.svg +1 -0
  1005. package/storage/svg/zoom-in.svg +1 -0
  1006. package/storage/svg/zoom-out.svg +1 -0
  1007. package/tokens.scss +1 -1
  1008. package/vite.config.ts +47 -46
  1009. package/build/components/accordion/more.d.ts +0 -20
  1010. package/build/components/accordion/more.js +0 -76
  1011. package/build/components/anchor/scss/index.scss +0 -2
  1012. package/build/components/announcement-banner/index.d.ts +0 -33
  1013. package/build/components/announcement-banner/index.js +0 -61
  1014. package/build/components/announcement-banner/scss/index.scss +0 -2
  1015. package/build/components/autosave/index.d.ts +0 -12
  1016. package/build/components/autosave/index.js +0 -140
  1017. package/build/components/autosave/scss/index.scss +0 -2
  1018. package/build/components/back-to-top/index.d.ts +0 -16
  1019. package/build/components/back-to-top/index.js +0 -182
  1020. package/build/components/back-to-top/scss/index.scss +0 -2
  1021. package/build/components/bento-grid/index.d.ts +0 -25
  1022. package/build/components/bento-grid/index.js +0 -38
  1023. package/build/components/bento-grid/scss/index.scss +0 -2
  1024. package/build/components/bento-grid-spotlight/index.d.ts +0 -35
  1025. package/build/components/bento-grid-spotlight/index.js +0 -108
  1026. package/build/components/bento-grid-spotlight/scss/index.scss +0 -2
  1027. package/build/components/bookmark-button/index.d.ts +0 -23
  1028. package/build/components/bookmark-button/index.js +0 -120
  1029. package/build/components/bookmark-button/scss/index.scss +0 -2
  1030. package/build/components/breadcrumb/ellipsis.d.ts +0 -12
  1031. package/build/components/breadcrumb/ellipsis.js +0 -11
  1032. package/build/components/breadcrumb/item.d.ts +0 -12
  1033. package/build/components/breadcrumb/item.js +0 -9
  1034. package/build/components/breadcrumb/link.d.ts +0 -15
  1035. package/build/components/breadcrumb/link.js +0 -14
  1036. package/build/components/breadcrumb/list.d.ts +0 -12
  1037. package/build/components/breadcrumb/list.js +0 -9
  1038. package/build/components/breadcrumb/menu.d.ts +0 -13
  1039. package/build/components/breadcrumb/menu.js +0 -16
  1040. package/build/components/breadcrumb/page.d.ts +0 -12
  1041. package/build/components/breadcrumb/page.js +0 -9
  1042. package/build/components/breadcrumb/separator.d.ts +0 -12
  1043. package/build/components/breadcrumb/separator.js +0 -11
  1044. package/build/components/breadcrumb/svg/caret.svg +0 -1
  1045. package/build/components/breadcrumb/svg/chevron.svg +0 -1
  1046. package/build/components/breadcrumb/svg/more.svg +0 -1
  1047. package/build/components/breadcrumbs/index.d.ts +0 -27
  1048. package/build/components/breadcrumbs/index.js +0 -324
  1049. package/build/components/breadcrumbs/scss/index.scss +0 -2
  1050. package/build/components/button/svg/plus.svg +0 -1
  1051. package/build/components/card-input/index.d.ts +0 -31
  1052. package/build/components/card-input/index.js +0 -562
  1053. package/build/components/card-input/scss/index.scss +0 -2
  1054. package/build/components/carousel-3d/index.d.ts +0 -27
  1055. package/build/components/carousel-3d/index.js +0 -248
  1056. package/build/components/carousel-3d/scss/index.scss +0 -2
  1057. package/build/components/checkbox-group/index.d.ts +0 -30
  1058. package/build/components/checkbox-group/index.js +0 -101
  1059. package/build/components/checkbox-group/scss/index.scss +0 -2
  1060. package/build/components/code-morph/index.d.ts +0 -25
  1061. package/build/components/code-morph/index.js +0 -401
  1062. package/build/components/code-morph/scss/index.scss +0 -2
  1063. package/build/components/collapsible-sidebar/index.d.ts +0 -41
  1064. package/build/components/collapsible-sidebar/index.js +0 -105
  1065. package/build/components/collapsible-sidebar/scss/index.scss +0 -2
  1066. package/build/components/command/constants.d.ts +0 -3
  1067. package/build/components/command/constants.js +0 -3
  1068. package/build/components/command-palette/index.d.ts +0 -51
  1069. package/build/components/command-palette/index.js +0 -319
  1070. package/build/components/command-palette/scss/index.scss +0 -2
  1071. package/build/components/composer/index.d.ts +0 -29
  1072. package/build/components/composer/index.js +0 -79
  1073. package/build/components/composer/scss/index.scss +0 -2
  1074. package/build/components/composer/svg/arrow-up.svg +0 -1
  1075. package/build/components/contribution-heatmap/index.d.ts +0 -30
  1076. package/build/components/contribution-heatmap/index.js +0 -236
  1077. package/build/components/contribution-heatmap/scss/index.scss +0 -2
  1078. package/build/components/date-range-picker/index.d.ts +0 -28
  1079. package/build/components/date-range-picker/index.js +0 -443
  1080. package/build/components/date-range-picker/scss/index.scss +0 -2
  1081. package/build/components/dynamic-island/index.d.ts +0 -23
  1082. package/build/components/dynamic-island/index.js +0 -179
  1083. package/build/components/dynamic-island/scss/index.scss +0 -2
  1084. package/build/components/email-typo-fix/index.d.ts +0 -28
  1085. package/build/components/email-typo-fix/index.js +0 -416
  1086. package/build/components/email-typo-fix/scss/index.scss +0 -2
  1087. package/build/components/expanding-card/index.d.ts +0 -26
  1088. package/build/components/expanding-card/index.js +0 -265
  1089. package/build/components/expanding-card/scss/index.scss +0 -2
  1090. package/build/components/feature-spotlight/index.d.ts +0 -37
  1091. package/build/components/feature-spotlight/index.js +0 -248
  1092. package/build/components/feature-spotlight/scss/index.scss +0 -2
  1093. package/build/components/file-tree/index.d.ts +0 -31
  1094. package/build/components/file-tree/index.js +0 -208
  1095. package/build/components/file-tree/scss/index.scss +0 -2
  1096. package/build/components/filter-grid/index.d.ts +0 -23
  1097. package/build/components/filter-grid/index.js +0 -240
  1098. package/build/components/filter-grid/scss/index.scss +0 -2
  1099. package/build/components/gradient-text/index.d.ts +0 -19
  1100. package/build/components/gradient-text/index.js +0 -14
  1101. package/build/components/gradient-text/scss/index.scss +0 -2
  1102. package/build/components/header/index.d.ts +0 -41
  1103. package/build/components/header/index.js +0 -281
  1104. package/build/components/header/scss/index.scss +0 -2
  1105. package/build/components/hover-card/index.d.ts +0 -47
  1106. package/build/components/hover-card/index.js +0 -197
  1107. package/build/components/hover-card/scss/index.scss +0 -2
  1108. package/build/components/kanban-board/index.d.ts +0 -23
  1109. package/build/components/kanban-board/index.js +0 -235
  1110. package/build/components/kanban-board/scss/index.scss +0 -2
  1111. package/build/components/lightbox/index.d.ts +0 -32
  1112. package/build/components/lightbox/index.js +0 -396
  1113. package/build/components/lightbox/scss/index.scss +0 -2
  1114. package/build/components/lightbox/spring.d.ts +0 -16
  1115. package/build/components/lightbox/spring.js +0 -71
  1116. package/build/components/line-shadow-text/index.d.ts +0 -17
  1117. package/build/components/line-shadow-text/index.js +0 -15
  1118. package/build/components/line-shadow-text/scss/index.scss +0 -2
  1119. package/build/components/log/index.d.ts +0 -20
  1120. package/build/components/log/index.js +0 -125
  1121. package/build/components/log/scss/index.scss +0 -2
  1122. package/build/components/long-press/bind.d.ts +0 -21
  1123. package/build/components/long-press/bind.js +0 -136
  1124. package/build/components/long-press/button.d.ts +0 -21
  1125. package/build/components/long-press/button.js +0 -25
  1126. package/build/components/long-press/index.d.ts +0 -2181
  1127. package/build/components/long-press/index.js +0 -4
  1128. package/build/components/long-press/scss/index.scss +0 -2
  1129. package/build/components/modal/index.d.ts +0 -24
  1130. package/build/components/modal/index.js +0 -75
  1131. package/build/components/modal/scss/index.scss +0 -2
  1132. package/build/components/morphing-button/index.d.ts +0 -24
  1133. package/build/components/morphing-button/index.js +0 -127
  1134. package/build/components/morphing-button/scss/index.scss +0 -2
  1135. package/build/components/morphing-nav/index.d.ts +0 -38
  1136. package/build/components/morphing-nav/index.js +0 -342
  1137. package/build/components/morphing-nav/scss/index.scss +0 -2
  1138. package/build/components/multi-step-form/index.d.ts +0 -32
  1139. package/build/components/multi-step-form/index.js +0 -305
  1140. package/build/components/multi-step-form/scss/index.scss +0 -2
  1141. package/build/components/nested-menu/index.d.ts +0 -27
  1142. package/build/components/nested-menu/index.js +0 -374
  1143. package/build/components/nested-menu/scss/index.scss +0 -2
  1144. package/build/components/normalize/scss/index.scss +0 -3
  1145. package/build/components/notification-bell/index.d.ts +0 -13
  1146. package/build/components/notification-bell/index.js +0 -87
  1147. package/build/components/notification-bell/scss/index.scss +0 -2
  1148. package/build/components/onboarding-checklist/index.d.ts +0 -29
  1149. package/build/components/onboarding-checklist/index.js +0 -196
  1150. package/build/components/onboarding-checklist/scss/index.scss +0 -2
  1151. package/build/components/page-dots/index.d.ts +0 -24
  1152. package/build/components/page-dots/index.js +0 -116
  1153. package/build/components/page-dots/scss/index.scss +0 -2
  1154. package/build/components/pagination/svg/arrow-left.svg +0 -1
  1155. package/build/components/pagination/svg/arrow-right.svg +0 -1
  1156. package/build/components/password/constants.d.ts +0 -2
  1157. package/build/components/password/constants.js +0 -2
  1158. package/build/components/password/index.d.ts +0 -22
  1159. package/build/components/password/index.js +0 -74
  1160. package/build/components/password/scss/index.scss +0 -2
  1161. package/build/components/radio-cards/index.d.ts +0 -36
  1162. package/build/components/radio-cards/index.js +0 -106
  1163. package/build/components/radio-cards/scss/index.scss +0 -2
  1164. package/build/components/range-filter/index.d.ts +0 -20
  1165. package/build/components/range-filter/index.js +0 -216
  1166. package/build/components/range-filter/scss/index.scss +0 -2
  1167. package/build/components/range-slider/index.d.ts +0 -30
  1168. package/build/components/range-slider/index.js +0 -287
  1169. package/build/components/range-slider/scss/index.scss +0 -2
  1170. package/build/components/reading-progress/index.d.ts +0 -13
  1171. package/build/components/reading-progress/index.js +0 -106
  1172. package/build/components/reading-progress/scss/index.scss +0 -2
  1173. package/build/components/scroll-fade/index.d.ts +0 -39
  1174. package/build/components/scroll-fade/index.js +0 -104
  1175. package/build/components/scroll-fade/scss/index.scss +0 -2
  1176. package/build/components/scroll-spine/index.d.ts +0 -26
  1177. package/build/components/scroll-spine/index.js +0 -204
  1178. package/build/components/scroll-spine/scss/index.scss +0 -2
  1179. package/build/components/scroll-velocity/index.d.ts +0 -22
  1180. package/build/components/scroll-velocity/index.js +0 -160
  1181. package/build/components/scroll-velocity/scss/index.scss +0 -2
  1182. package/build/components/scrub-input/index.d.ts +0 -39
  1183. package/build/components/scrub-input/index.js +0 -221
  1184. package/build/components/scrub-input/scss/index.scss +0 -2
  1185. package/build/components/select-menu/index.d.ts +0 -34
  1186. package/build/components/select-menu/index.js +0 -329
  1187. package/build/components/select-menu/scss/index.scss +0 -2
  1188. package/build/components/selection-toolbar/index.d.ts +0 -36
  1189. package/build/components/selection-toolbar/index.js +0 -442
  1190. package/build/components/selection-toolbar/scss/index.scss +0 -2
  1191. package/build/components/settings/index.d.ts +0 -43
  1192. package/build/components/settings/index.js +0 -147
  1193. package/build/components/settings/scss/index.scss +0 -2
  1194. package/build/components/settings/svg/close.svg +0 -1
  1195. package/build/components/settings/svg/saved.svg +0 -1
  1196. package/build/components/share-button/index.d.ts +0 -29
  1197. package/build/components/share-button/index.js +0 -191
  1198. package/build/components/share-button/scss/index.scss +0 -2
  1199. package/build/components/sheet/index.d.ts +0 -33
  1200. package/build/components/sheet/index.js +0 -110
  1201. package/build/components/sheet/scss/index.scss +0 -2
  1202. package/build/components/shiny-text/index.d.ts +0 -17
  1203. package/build/components/shiny-text/index.js +0 -14
  1204. package/build/components/shiny-text/scss/index.scss +0 -2
  1205. package/build/components/shortcut-sheet/index.d.ts +0 -48
  1206. package/build/components/shortcut-sheet/index.js +0 -304
  1207. package/build/components/shortcut-sheet/scss/index.scss +0 -2
  1208. package/build/components/sidebar/index.d.ts +0 -13
  1209. package/build/components/sidebar/index.js +0 -13
  1210. package/build/components/sidebar/scss/index.scss +0 -2
  1211. package/build/components/slider/index.d.ts +0 -25
  1212. package/build/components/slider/index.js +0 -188
  1213. package/build/components/slider/scss/index.scss +0 -2
  1214. package/build/components/sliding-tabs/index.d.ts +0 -28
  1215. package/build/components/sliding-tabs/index.js +0 -188
  1216. package/build/components/sliding-tabs/scss/index.scss +0 -2
  1217. package/build/components/snap-carousel/index.d.ts +0 -30
  1218. package/build/components/snap-carousel/index.js +0 -233
  1219. package/build/components/snap-carousel/scss/index.scss +0 -2
  1220. package/build/components/sparkline/index.d.ts +0 -26
  1221. package/build/components/sparkline/index.js +0 -173
  1222. package/build/components/sparkline/scss/index.scss +0 -2
  1223. package/build/components/stacked-drawer/index.d.ts +0 -24
  1224. package/build/components/stacked-drawer/index.js +0 -211
  1225. package/build/components/stacked-drawer/scss/index.scss +0 -2
  1226. package/build/components/stat-counter/index.d.ts +0 -32
  1227. package/build/components/stat-counter/index.js +0 -216
  1228. package/build/components/stat-counter/scss/index.scss +0 -2
  1229. package/build/components/status-picker/index.d.ts +0 -32
  1230. package/build/components/status-picker/index.js +0 -198
  1231. package/build/components/status-picker/scss/index.scss +0 -2
  1232. package/build/components/sticky-stack/index.d.ts +0 -33
  1233. package/build/components/sticky-stack/index.js +0 -184
  1234. package/build/components/sticky-stack/scss/index.scss +0 -2
  1235. package/build/components/story-progress/index.d.ts +0 -26
  1236. package/build/components/story-progress/index.js +0 -196
  1237. package/build/components/story-progress/scss/index.scss +0 -2
  1238. package/build/components/swipe-deck/index.d.ts +0 -19
  1239. package/build/components/swipe-deck/index.js +0 -300
  1240. package/build/components/swipe-deck/scss/index.scss +0 -2
  1241. package/build/components/tabs/scss/index.scss +0 -2
  1242. package/build/components/tag-input/index.d.ts +0 -27
  1243. package/build/components/tag-input/index.js +0 -309
  1244. package/build/components/tag-input/scss/index.scss +0 -2
  1245. package/build/components/task-list/index.d.ts +0 -28
  1246. package/build/components/task-list/index.js +0 -107
  1247. package/build/components/task-list/scss/index.scss +0 -2
  1248. package/build/components/tasklist/constants.d.ts +0 -2
  1249. package/build/components/tasklist/constants.js +0 -2
  1250. package/build/components/text-animate/index.d.ts +0 -30
  1251. package/build/components/text-animate/index.js +0 -97
  1252. package/build/components/text-animate/scss/index.scss +0 -2
  1253. package/build/components/text-progress/index.d.ts +0 -13
  1254. package/build/components/text-progress/index.js +0 -114
  1255. package/build/components/text-progress/scss/index.scss +0 -2
  1256. package/build/components/thumbnail/scss/index.scss +0 -2
  1257. package/build/components/toast/manager.d.ts +0 -64
  1258. package/build/components/toast/manager.js +0 -221
  1259. package/build/components/toast/svg/check.svg +0 -1
  1260. package/build/components/toast/svg/chevron.svg +0 -1
  1261. package/build/components/toast/svg/close.svg +0 -1
  1262. package/build/components/toast/svg/copy.svg +0 -1
  1263. package/build/components/toast/svg/info.svg +0 -1
  1264. package/build/components/tooltip/context.d.ts +0 -22
  1265. package/build/components/tooltip/context.js +0 -66
  1266. package/build/components/tooltip/group.d.ts +0 -29
  1267. package/build/components/tooltip/group.js +0 -128
  1268. package/build/components/tooltip/options.d.ts +0 -7
  1269. package/build/components/tooltip/options.js +0 -21
  1270. package/build/components/tree/index.d.ts +0 -28
  1271. package/build/components/tree/index.js +0 -182
  1272. package/build/components/tree/scss/index.scss +0 -2
  1273. package/build/components/tree-view/index.d.ts +0 -25
  1274. package/build/components/tree-view/index.js +0 -205
  1275. package/build/components/tree-view/scss/index.scss +0 -2
  1276. package/build/components/typewriter-retype/index.d.ts +0 -8
  1277. package/build/components/typewriter-retype/index.js +0 -122
  1278. package/build/components/typewriter-retype/scss/index.scss +0 -2
  1279. package/build/components/undo-toast/index.d.ts +0 -30
  1280. package/build/components/undo-toast/index.js +0 -262
  1281. package/build/components/undo-toast/scss/index.scss +0 -2
  1282. package/build/components/value-flash/index.d.ts +0 -12
  1283. package/build/components/value-flash/index.js +0 -106
  1284. package/build/components/value-flash/scss/index.scss +0 -2
  1285. package/build/components/waitlist-join/index.d.ts +0 -34
  1286. package/build/components/waitlist-join/index.js +0 -402
  1287. package/build/components/waitlist-join/scss/index.scss +0 -2
  1288. package/build/components/web-search/brands.d.ts +0 -121
  1289. package/build/components/web-search/brands.js +0 -138
  1290. package/build/components/web-search/index.d.ts +0 -31
  1291. package/build/components/web-search/index.js +0 -245
  1292. package/build/components/web-search/scss/index.scss +0 -2
  1293. package/build/components/word-rotator/index.d.ts +0 -14
  1294. package/build/components/word-rotator/index.js +0 -196
  1295. package/build/components/word-rotator/scss/index.scss +0 -2
  1296. package/build/css-utilities/absolute/scss/index.scss +0 -2
  1297. package/build/css-utilities/disabled/scss/index.scss +0 -2
  1298. package/build/css-utilities/hidden/scss/index.scss +0 -2
  1299. package/build/css-utilities/not-allowed/scss/index.scss +0 -2
  1300. package/build/css-utilities/tabular/scss/index.scss +0 -2
  1301. package/lib.scss +0 -2
  1302. package/src/components/accordion/more.ts +0 -97
  1303. package/src/components/anchor/scss/index.scss +0 -56
  1304. package/src/components/anchor/scss/variables.scss +0 -4
  1305. package/src/components/announcement-banner/index.ts +0 -81
  1306. package/src/components/announcement-banner/scss/index.scss +0 -183
  1307. package/src/components/announcement-banner/scss/variables.scss +0 -18
  1308. package/src/components/autosave/index.ts +0 -113
  1309. package/src/components/autosave/scss/index.scss +0 -155
  1310. package/src/components/autosave/scss/variables.scss +0 -22
  1311. package/src/components/back-to-top/index.ts +0 -293
  1312. package/src/components/back-to-top/scss/index.scss +0 -111
  1313. package/src/components/back-to-top/scss/variables.scss +0 -30
  1314. package/src/components/bento-grid/index.ts +0 -63
  1315. package/src/components/bento-grid/scss/index.scss +0 -174
  1316. package/src/components/bento-grid/scss/variables.scss +0 -19
  1317. package/src/components/bento-grid-spotlight/index.ts +0 -133
  1318. package/src/components/bento-grid-spotlight/scss/index.scss +0 -226
  1319. package/src/components/bento-grid-spotlight/scss/variables.scss +0 -36
  1320. package/src/components/bookmark-button/index.ts +0 -174
  1321. package/src/components/bookmark-button/scss/index.scss +0 -162
  1322. package/src/components/bookmark-button/scss/variables.scss +0 -28
  1323. package/src/components/breadcrumb/ellipsis.ts +0 -17
  1324. package/src/components/breadcrumb/item.ts +0 -10
  1325. package/src/components/breadcrumb/link.ts +0 -21
  1326. package/src/components/breadcrumb/list.ts +0 -10
  1327. package/src/components/breadcrumb/menu.ts +0 -20
  1328. package/src/components/breadcrumb/page.ts +0 -16
  1329. package/src/components/breadcrumb/separator.ts +0 -17
  1330. package/src/components/breadcrumb/svg/caret.svg +0 -1
  1331. package/src/components/breadcrumb/svg/chevron.svg +0 -1
  1332. package/src/components/breadcrumb/svg/more.svg +0 -1
  1333. package/src/components/breadcrumbs/index.ts +0 -479
  1334. package/src/components/breadcrumbs/scss/index.scss +0 -235
  1335. package/src/components/breadcrumbs/scss/variables.scss +0 -30
  1336. package/src/components/button/svg/plus.svg +0 -1
  1337. package/src/components/card-input/index.ts +0 -594
  1338. package/src/components/card-input/scss/index.scss +0 -512
  1339. package/src/components/card-input/scss/variables.scss +0 -29
  1340. package/src/components/carousel-3d/index.ts +0 -405
  1341. package/src/components/carousel-3d/scss/index.scss +0 -155
  1342. package/src/components/carousel-3d/scss/variables.scss +0 -25
  1343. package/src/components/checkbox/svg/check.svg +0 -1
  1344. package/src/components/checkbox-group/index.ts +0 -171
  1345. package/src/components/checkbox-group/scss/index.scss +0 -229
  1346. package/src/components/checkbox-group/scss/variables.scss +0 -28
  1347. package/src/components/code-morph/index.ts +0 -459
  1348. package/src/components/code-morph/scss/index.scss +0 -384
  1349. package/src/components/code-morph/scss/variables.scss +0 -33
  1350. package/src/components/collapsible-sidebar/index.ts +0 -193
  1351. package/src/components/collapsible-sidebar/scss/index.scss +0 -220
  1352. package/src/components/collapsible-sidebar/scss/variables.scss +0 -42
  1353. package/src/components/command/constants.ts +0 -6
  1354. package/src/components/command-palette/index.ts +0 -456
  1355. package/src/components/command-palette/scss/index.scss +0 -235
  1356. package/src/components/command-palette/scss/variables.scss +0 -42
  1357. package/src/components/composer/index.ts +0 -117
  1358. package/src/components/composer/scss/index.scss +0 -105
  1359. package/src/components/composer/scss/variables.scss +0 -82
  1360. package/src/components/composer/svg/arrow-up.svg +0 -1
  1361. package/src/components/contribution-heatmap/index.ts +0 -348
  1362. package/src/components/contribution-heatmap/scss/index.scss +0 -151
  1363. package/src/components/contribution-heatmap/scss/variables.scss +0 -39
  1364. package/src/components/date-range-picker/index.ts +0 -641
  1365. package/src/components/date-range-picker/scss/index.scss +0 -380
  1366. package/src/components/date-range-picker/scss/variables.scss +0 -22
  1367. package/src/components/dynamic-island/index.ts +0 -161
  1368. package/src/components/dynamic-island/scss/index.scss +0 -278
  1369. package/src/components/dynamic-island/scss/variables.scss +0 -39
  1370. package/src/components/email-typo-fix/index.ts +0 -615
  1371. package/src/components/email-typo-fix/scss/index.scss +0 -213
  1372. package/src/components/email-typo-fix/scss/variables.scss +0 -18
  1373. package/src/components/expanding-card/index.ts +0 -377
  1374. package/src/components/expanding-card/scss/index.scss +0 -232
  1375. package/src/components/expanding-card/scss/variables.scss +0 -22
  1376. package/src/components/feature-spotlight/index.ts +0 -437
  1377. package/src/components/feature-spotlight/scss/index.scss +0 -254
  1378. package/src/components/feature-spotlight/scss/variables.scss +0 -36
  1379. package/src/components/file-tree/index.ts +0 -319
  1380. package/src/components/file-tree/scss/index.scss +0 -138
  1381. package/src/components/file-tree/scss/variables.scss +0 -18
  1382. package/src/components/filter-grid/index.ts +0 -344
  1383. package/src/components/filter-grid/scss/index.scss +0 -142
  1384. package/src/components/filter-grid/scss/variables.scss +0 -41
  1385. package/src/components/gradient-text/index.ts +0 -26
  1386. package/src/components/gradient-text/scss/index.scss +0 -20
  1387. package/src/components/gradient-text/scss/variables.scss +0 -6
  1388. package/src/components/header/index.ts +0 -318
  1389. package/src/components/header/scss/index.scss +0 -508
  1390. package/src/components/header/scss/variables.scss +0 -21
  1391. package/src/components/hover-card/index.ts +0 -319
  1392. package/src/components/hover-card/scss/index.scss +0 -117
  1393. package/src/components/hover-card/scss/variables.scss +0 -25
  1394. package/src/components/kanban-board/index.ts +0 -326
  1395. package/src/components/kanban-board/scss/index.scss +0 -126
  1396. package/src/components/kanban-board/scss/variables.scss +0 -39
  1397. package/src/components/lightbox/index.ts +0 -594
  1398. package/src/components/lightbox/scss/index.scss +0 -194
  1399. package/src/components/lightbox/scss/variables.scss +0 -24
  1400. package/src/components/lightbox/spring.ts +0 -118
  1401. package/src/components/line-shadow-text/index.ts +0 -24
  1402. package/src/components/line-shadow-text/scss/index.scss +0 -45
  1403. package/src/components/line-shadow-text/scss/variables.scss +0 -6
  1404. package/src/components/log/index.ts +0 -156
  1405. package/src/components/log/scss/index.scss +0 -269
  1406. package/src/components/log/scss/variables.scss +0 -19
  1407. package/src/components/long-press/bind.ts +0 -159
  1408. package/src/components/long-press/button.ts +0 -46
  1409. package/src/components/long-press/index.ts +0 -6
  1410. package/src/components/long-press/scss/index.scss +0 -60
  1411. package/src/components/long-press/scss/variables.scss +0 -9
  1412. package/src/components/modal/index.ts +0 -91
  1413. package/src/components/modal/scss/index.scss +0 -81
  1414. package/src/components/modal/scss/variables.scss +0 -42
  1415. package/src/components/morphing-button/index.ts +0 -188
  1416. package/src/components/morphing-button/scss/index.scss +0 -154
  1417. package/src/components/morphing-button/scss/variables.scss +0 -21
  1418. package/src/components/morphing-nav/index.ts +0 -496
  1419. package/src/components/morphing-nav/scss/index.scss +0 -284
  1420. package/src/components/morphing-nav/scss/variables.scss +0 -36
  1421. package/src/components/multi-step-form/index.ts +0 -368
  1422. package/src/components/multi-step-form/scss/index.scss +0 -397
  1423. package/src/components/multi-step-form/scss/variables.scss +0 -22
  1424. package/src/components/nested-menu/index.ts +0 -446
  1425. package/src/components/nested-menu/scss/index.scss +0 -219
  1426. package/src/components/nested-menu/scss/variables.scss +0 -26
  1427. package/src/components/normalize/scss/index.scss +0 -35
  1428. package/src/components/notification-bell/index.ts +0 -102
  1429. package/src/components/notification-bell/scss/index.scss +0 -132
  1430. package/src/components/notification-bell/scss/variables.scss +0 -41
  1431. package/src/components/notification-bell/svg/bell.svg +0 -1
  1432. package/src/components/onboarding-checklist/index.ts +0 -252
  1433. package/src/components/onboarding-checklist/scss/index.scss +0 -414
  1434. package/src/components/onboarding-checklist/scss/variables.scss +0 -17
  1435. package/src/components/page-dots/index.ts +0 -137
  1436. package/src/components/page-dots/scss/index.scss +0 -95
  1437. package/src/components/page-dots/scss/variables.scss +0 -26
  1438. package/src/components/pagination/svg/arrow-left.svg +0 -1
  1439. package/src/components/pagination/svg/arrow-right.svg +0 -1
  1440. package/src/components/password/constants.ts +0 -4
  1441. package/src/components/password/index.ts +0 -97
  1442. package/src/components/password/scss/index.scss +0 -188
  1443. package/src/components/password/scss/variables.scss +0 -50
  1444. package/src/components/radio-cards/index.ts +0 -145
  1445. package/src/components/radio-cards/scss/index.scss +0 -232
  1446. package/src/components/radio-cards/scss/variables.scss +0 -32
  1447. package/src/components/range-filter/index.ts +0 -295
  1448. package/src/components/range-filter/scss/index.scss +0 -257
  1449. package/src/components/range-filter/scss/variables.scss +0 -20
  1450. package/src/components/range-slider/index.ts +0 -277
  1451. package/src/components/range-slider/scss/index.scss +0 -234
  1452. package/src/components/range-slider/scss/variables.scss +0 -26
  1453. package/src/components/reading-progress/index.ts +0 -160
  1454. package/src/components/reading-progress/scss/index.scss +0 -115
  1455. package/src/components/reading-progress/scss/variables.scss +0 -31
  1456. package/src/components/scroll-fade/index.ts +0 -131
  1457. package/src/components/scroll-fade/scss/index.scss +0 -104
  1458. package/src/components/scroll-fade/scss/variables.scss +0 -10
  1459. package/src/components/scroll-spine/index.ts +0 -355
  1460. package/src/components/scroll-spine/scss/index.scss +0 -209
  1461. package/src/components/scroll-spine/scss/variables.scss +0 -22
  1462. package/src/components/scroll-velocity/index.ts +0 -269
  1463. package/src/components/scroll-velocity/scss/index.scss +0 -29
  1464. package/src/components/scroll-velocity/scss/variables.scss +0 -3
  1465. package/src/components/scrub-input/index.ts +0 -339
  1466. package/src/components/scrub-input/scss/index.scss +0 -105
  1467. package/src/components/scrub-input/scss/variables.scss +0 -23
  1468. package/src/components/select-menu/index.ts +0 -499
  1469. package/src/components/select-menu/scss/index.scss +0 -192
  1470. package/src/components/select-menu/scss/variables.scss +0 -41
  1471. package/src/components/selection-toolbar/index.ts +0 -510
  1472. package/src/components/selection-toolbar/scss/index.scss +0 -221
  1473. package/src/components/selection-toolbar/scss/variables.scss +0 -24
  1474. package/src/components/settings/index.ts +0 -184
  1475. package/src/components/settings/scss/index.scss +0 -327
  1476. package/src/components/settings/scss/variables.scss +0 -50
  1477. package/src/components/settings/svg/close.svg +0 -1
  1478. package/src/components/settings/svg/saved.svg +0 -1
  1479. package/src/components/share-button/index.ts +0 -328
  1480. package/src/components/share-button/scss/index.scss +0 -191
  1481. package/src/components/share-button/scss/variables.scss +0 -24
  1482. package/src/components/sheet/index.ts +0 -170
  1483. package/src/components/sheet/scss/index.scss +0 -65
  1484. package/src/components/sheet/scss/variables.scss +0 -27
  1485. package/src/components/shiny-text/index.ts +0 -19
  1486. package/src/components/shiny-text/scss/index.scss +0 -32
  1487. package/src/components/shiny-text/scss/variables.scss +0 -7
  1488. package/src/components/shortcut-sheet/index.ts +0 -454
  1489. package/src/components/shortcut-sheet/scss/index.scss +0 -306
  1490. package/src/components/shortcut-sheet/scss/variables.scss +0 -36
  1491. package/src/components/sidebar/index.ts +0 -13
  1492. package/src/components/sidebar/scss/index.scss +0 -49
  1493. package/src/components/sidebar/scss/variables.scss +0 -20
  1494. package/src/components/slider/index.ts +0 -232
  1495. package/src/components/slider/scss/index.scss +0 -182
  1496. package/src/components/slider/scss/variables.scss +0 -15
  1497. package/src/components/sliding-tabs/index.ts +0 -291
  1498. package/src/components/sliding-tabs/scss/index.scss +0 -174
  1499. package/src/components/sliding-tabs/scss/variables.scss +0 -34
  1500. package/src/components/snap-carousel/index.ts +0 -324
  1501. package/src/components/snap-carousel/scss/index.scss +0 -174
  1502. package/src/components/snap-carousel/scss/variables.scss +0 -31
  1503. package/src/components/sparkline/index.ts +0 -234
  1504. package/src/components/sparkline/scss/index.scss +0 -169
  1505. package/src/components/sparkline/scss/variables.scss +0 -30
  1506. package/src/components/stacked-drawer/index.ts +0 -272
  1507. package/src/components/stacked-drawer/scss/index.scss +0 -122
  1508. package/src/components/stacked-drawer/scss/variables.scss +0 -20
  1509. package/src/components/stat-counter/index.ts +0 -337
  1510. package/src/components/stat-counter/scss/index.scss +0 -246
  1511. package/src/components/stat-counter/scss/variables.scss +0 -24
  1512. package/src/components/status-picker/index.ts +0 -323
  1513. package/src/components/status-picker/scss/index.scss +0 -290
  1514. package/src/components/status-picker/scss/variables.scss +0 -29
  1515. package/src/components/sticky-stack/index.ts +0 -313
  1516. package/src/components/sticky-stack/scss/index.scss +0 -167
  1517. package/src/components/sticky-stack/scss/variables.scss +0 -50
  1518. package/src/components/story-progress/index.ts +0 -247
  1519. package/src/components/story-progress/scss/index.scss +0 -205
  1520. package/src/components/story-progress/scss/variables.scss +0 -21
  1521. package/src/components/swipe-deck/index.ts +0 -438
  1522. package/src/components/swipe-deck/scss/index.scss +0 -275
  1523. package/src/components/swipe-deck/scss/variables.scss +0 -24
  1524. package/src/components/tabs/scss/index.scss +0 -62
  1525. package/src/components/tabs/scss/variables.scss +0 -4
  1526. package/src/components/tag-input/index.ts +0 -415
  1527. package/src/components/tag-input/scss/index.scss +0 -186
  1528. package/src/components/tag-input/scss/variables.scss +0 -30
  1529. package/src/components/task-list/index.ts +0 -137
  1530. package/src/components/task-list/scss/index.scss +0 -171
  1531. package/src/components/task-list/scss/variables.scss +0 -8
  1532. package/src/components/tasklist/constants.ts +0 -4
  1533. package/src/components/text/scss/variables.scss +0 -9
  1534. package/src/components/text-animate/index.ts +0 -142
  1535. package/src/components/text-animate/scss/index.scss +0 -106
  1536. package/src/components/text-animate/scss/variables.scss +0 -17
  1537. package/src/components/text-progress/index.ts +0 -170
  1538. package/src/components/text-progress/scss/index.scss +0 -148
  1539. package/src/components/text-progress/scss/variables.scss +0 -26
  1540. package/src/components/thumbnail/scss/index.scss +0 -62
  1541. package/src/components/thumbnail/scss/variables.scss +0 -19
  1542. package/src/components/toast/manager.ts +0 -342
  1543. package/src/components/toast/svg/check.svg +0 -1
  1544. package/src/components/toast/svg/chevron.svg +0 -1
  1545. package/src/components/toast/svg/close.svg +0 -1
  1546. package/src/components/toast/svg/copy.svg +0 -1
  1547. package/src/components/toast/svg/error.svg +0 -1
  1548. package/src/components/toast/svg/info.svg +0 -1
  1549. package/src/components/toast/svg/loading.svg +0 -1
  1550. package/src/components/toast/svg/success.svg +0 -1
  1551. package/src/components/toast/svg/warning.svg +0 -1
  1552. package/src/components/tooltip/context.ts +0 -96
  1553. package/src/components/tooltip/group.ts +0 -162
  1554. package/src/components/tooltip/options.ts +0 -33
  1555. package/src/components/tooltip/scss/_group.scss +0 -164
  1556. package/src/components/tree/index.ts +0 -259
  1557. package/src/components/tree/scss/index.scss +0 -105
  1558. package/src/components/tree/scss/variables.scss +0 -48
  1559. package/src/components/tree-view/index.ts +0 -285
  1560. package/src/components/tree-view/scss/index.scss +0 -169
  1561. package/src/components/tree-view/scss/variables.scss +0 -18
  1562. package/src/components/typewriter-retype/index.ts +0 -164
  1563. package/src/components/typewriter-retype/scss/index.scss +0 -142
  1564. package/src/components/typewriter-retype/scss/variables.scss +0 -46
  1565. package/src/components/undo-toast/index.ts +0 -359
  1566. package/src/components/undo-toast/scss/index.scss +0 -216
  1567. package/src/components/undo-toast/scss/variables.scss +0 -20
  1568. package/src/components/value-flash/index.ts +0 -121
  1569. package/src/components/value-flash/scss/index.scss +0 -193
  1570. package/src/components/value-flash/scss/variables.scss +0 -47
  1571. package/src/components/waitlist-join/index.ts +0 -545
  1572. package/src/components/waitlist-join/scss/index.scss +0 -401
  1573. package/src/components/waitlist-join/scss/variables.scss +0 -23
  1574. package/src/components/web-search/brands.ts +0 -155
  1575. package/src/components/web-search/index.ts +0 -316
  1576. package/src/components/web-search/scss/index.scss +0 -270
  1577. package/src/components/web-search/scss/variables.scss +0 -8
  1578. package/src/components/word-rotator/index.ts +0 -296
  1579. package/src/components/word-rotator/scss/index.scss +0 -33
  1580. package/src/components/word-rotator/scss/variables.scss +0 -7
  1581. package/src/css-utilities/absolute/scss/index.scss +0 -36
  1582. package/src/css-utilities/disabled/scss/index.scss +0 -4
  1583. package/src/css-utilities/hidden/scss/index.scss +0 -28
  1584. package/src/css-utilities/not-allowed/scss/index.scss +0 -7
  1585. package/src/css-utilities/tabular/scss/index.scss +0 -3
  1586. package/src/lib/index.scss +0 -7
  1587. package/src/lib/scss/breakpoint.scss +0 -41
  1588. package/src/lib/scss/color.scss +0 -1
  1589. package/src/lib/scss/list.scss +0 -77
  1590. package/src/lib/scss/string.scss +0 -34
  1591. package/src/tokens/index.scss +0 -9
  1592. package/storage/psd/Color Palette.psd +0 -0
  1593. /package/src/{lib → shared}/scss/css-variables.scss +0 -0
  1594. /package/src/{lib → shared}/scss/map.scss +0 -0
  1595. /package/src/{lib → shared}/scss/position.scss +0 -0
  1596. /package/{build/components/notification-bell → storage}/svg/bell.svg +0 -0
  1597. /package/{build/components/checkbox → storage}/svg/check.svg +0 -0
  1598. /package/{build/components/toast/svg/error.svg → storage/svg/circle-alert.svg} +0 -0
  1599. /package/{build/components/toast/svg/success.svg → storage/svg/circle-check.svg} +0 -0
  1600. /package/{build/components/toast/svg/loading.svg → storage/svg/spinner.svg} +0 -0
  1601. /package/{build/components/toast → storage}/svg/warning.svg +0 -0
@@ -0,0 +1,2417 @@
1
+ import { flush, reactive } from '@esportsplus/reactivity';
2
+ import { html, type Attributes } from '@esportsplus/template';
3
+ import icon from '~/components/icon';
4
+ import { clamp } from '~/shared/clamp';
5
+ import { mac } from '~/shared/platform';
6
+ import { observer, observeSize, type Observer } from '~/shared/resize';
7
+ import { copied, read, write } from '../code/clipboard';
8
+ import { addNextOccurrence, deleteCharacter, indent, insertText, lineCommand, toggleComment } from '../code/commands';
9
+ import { composition } from '../code/composition';
10
+ import { write as writeField } from '../code/field';
11
+ import { find } from '../code/find';
12
+ import { mapFolds, outerFolds, type FoldRange } from '../code/folding';
13
+ import { goto } from '../code/goto';
14
+ import { commands, keymap } from '../code/keymap';
15
+ import { EditorLayout, type Rect } from '../code/layout';
16
+ import { minimap, type Source } from '../code/minimap';
17
+ import { move } from '../code/navigation';
18
+ import { pointer } from '../code/pointer';
19
+ import { inputEdit, NativeText, type Before } from '../code/projection';
20
+ import { syntaxCache, type Token } from '../code/syntax';
21
+ import { markdownCommand } from './editing';
22
+ import { parseInline, type Inline, type References } from './inline';
23
+ import { arrange, cache, headingScale, MarkdownLayout, SCALED_LINE, unitStart, type Unit } from './layout';
24
+ import {
25
+ blockAt,
26
+ contentEnd,
27
+ markdownBackspace,
28
+ markdownReferences,
29
+ parseMarkdown,
30
+ reparse,
31
+ toggleTask,
32
+ type Kind,
33
+ type MarkdownBlock
34
+ } from './model';
35
+ import { renderer } from './render';
36
+ import { foldable, foldAt, markdownFolds } from './structure';
37
+ import type { Change, Edit, EditorDocument, Selection, Snapshot } from '../code/document';
38
+ import type { Callbacks, Controller, Options } from '../code/view';
39
+ import chevron from '@esportsplus/ui/svg/chevron-down.svg';
40
+
41
+
42
+ type Active = { first: number; from: number; last: number; to: number };
43
+
44
+ type Decoration = { kind: string; style: string };
45
+
46
+ type MarkdownController = Omit<Controller, 'setDocument' | 'setOptions'> & {
47
+ bold(): boolean;
48
+ italic(): boolean;
49
+ setDocument(document: EditorDocument, options?: MarkdownOptions): void;
50
+ setOptions(options: MarkdownOptions, replace?: boolean): void;
51
+ };
52
+
53
+ type MarkdownOptions = Options & { spellcheck?: boolean };
54
+
55
+ type Memo = { folds: FoldRange[]; left: number; revision: number; top: number };
56
+
57
+ type Metrics = {
58
+ charWidth: number;
59
+ clientHeight: number;
60
+ fontSize: number;
61
+ lineHeight: number;
62
+ minimap: number;
63
+ padLeft: number;
64
+ padTop: number;
65
+ quoteIndent: number;
66
+ scrollLeft: number;
67
+ scrollTop: number;
68
+ // The surface's content width, unrounded.
69
+ width: number;
70
+ };
71
+
72
+
73
+ const DECORATIONS = 1000;
74
+
75
+ const NAVIGATION = /^(ArrowDown|ArrowLeft|ArrowRight|ArrowUp|End|Home|PageDown|PageUp)$/;
76
+
77
+ const NONE: readonly number[] = [];
78
+
79
+ const NO_TOKENS: readonly Token[] = [];
80
+
81
+ const TOKEN_COLORS = ['comment', 'keyword', 'operator', 'property', 'string', 'type', 'variable'] as const;
82
+
83
+ const VERTICAL = /^(ArrowDown|ArrowUp|PageDown|PageUp)$/;
84
+
85
+
86
+ let uid = 0;
87
+
88
+
89
+ // Brings a reactive list to 'next' with the fewest splices, so units that stay keep their DOM. Both are ordered
90
+ // runs of the same unit list.
91
+ function assign(list: Unit[], next: readonly Unit[]) {
92
+ if (list.length === next.length) {
93
+ let same = true;
94
+
95
+ for (let i = 0, n = list.length; same && i < n; i++) {
96
+ same = list[i] === next[i];
97
+ }
98
+
99
+ if (same) {
100
+ return;
101
+ }
102
+ }
103
+
104
+ let keep = new Set(next),
105
+ kept = 0;
106
+
107
+ for (let i = 0, n = list.length; i < n; i++) {
108
+ if (keep.has(list[i])) {
109
+ kept++;
110
+ }
111
+ }
112
+
113
+ if (!kept) {
114
+ list.splice(0, list.length, ...next);
115
+ return;
116
+ }
117
+
118
+ for (let i = list.length - 1; i >= 0;) {
119
+ if (keep.has(list[i])) {
120
+ i--;
121
+ continue;
122
+ }
123
+
124
+ let end = i;
125
+
126
+ while (i >= 0 && !keep.has(list[i])) {
127
+ i--;
128
+ }
129
+
130
+ list.splice(i + 1, end - i);
131
+ }
132
+
133
+ for (let i = 0; i < next.length;) {
134
+ if (list[i] === next[i]) {
135
+ i++;
136
+ continue;
137
+ }
138
+
139
+ let end = i;
140
+
141
+ while (end < next.length && next[end] !== list[i]) {
142
+ end++;
143
+ }
144
+
145
+ list.splice(i, 0, ...next.slice(i, end));
146
+ i = end;
147
+ }
148
+ }
149
+
150
+ function pixels(value: string) {
151
+ return parseFloat(value) || 0;
152
+ }
153
+
154
+ function prevent(e: Event) {
155
+ e.preventDefault();
156
+ }
157
+
158
+
159
+ // The markdown editor's view: blocks render formatted until the caret enters one, which then edits as source in a
160
+ // native textarea standing in its place. Only units near the viewport are drawn, keyed by block, so edits redraw the
161
+ // block they touched. Returns its template and controller.
162
+ const view = (model: EditorDocument, callbacks: Callbacks, receive?: (controller: MarkdownController) => void) => {
163
+ let active: Active | null = null,
164
+ activeIndex = -1,
165
+ apple = mac(),
166
+ before: Before | null = null,
167
+ beforeRanges: readonly Selection[] = [],
168
+ beforeSelection: Selection | undefined,
169
+ blocks = parseMarkdown(model),
170
+ decorations = reactive([] as Decoration[]),
171
+ definitions: References = new Map(),
172
+ disposed = false,
173
+ drag: { anchor: number; head: number } | null = null,
174
+ // Content height the minimap last drew.
175
+ drawn = 0,
176
+ dropAt: number | null = null,
177
+ editing = false,
178
+ escapeTab = false,
179
+ estimated = false,
180
+ fieldSource = '',
181
+ folds: FoldRange[] = [],
182
+ frame = 0,
183
+ geometry: EditorLayout | null = null,
184
+ goals: number[] = [],
185
+ help = `markdown-editor-help-${++uid}`,
186
+ host: HTMLElement | undefined,
187
+ inlines = new WeakMap<MarkdownBlock, { definitions: References; tokens: readonly Inline[] }>(),
188
+ inputData: string | null = null,
189
+ inputType = '',
190
+ keys = keymap(apple),
191
+ layout = new MarkdownLayout(),
192
+ length = model.value.length,
193
+ listed = { after: reactive([] as Unit[]), before: reactive([] as Unit[]) },
194
+ metrics: Metrics = {
195
+ charWidth: 7.8,
196
+ clientHeight: 320,
197
+ fontSize: 13,
198
+ lineHeight: 20,
199
+ minimap: 0,
200
+ padLeft: 12,
201
+ padTop: 12,
202
+ quoteIndent: 10,
203
+ scrollLeft: 0,
204
+ scrollTop: 0,
205
+ width: 600
206
+ },
207
+ options: MarkdownOptions = { wrap: true },
208
+ palette: Record<string, string> = {},
209
+ parsed = model.revision,
210
+ pendingValue: string | undefined,
211
+ pinned = false,
212
+ pointerId = -1,
213
+ projection = new NativeText(''),
214
+ resize: Observer | undefined = observer(resized),
215
+ revealing = false,
216
+ ruler: HTMLElement | undefined,
217
+ secondary = false,
218
+ shown = new WeakMap<Element, Unit>(),
219
+ state = reactive({
220
+ ...model.state,
221
+ selection: { ...model.selection },
222
+ selections: model.selections.map((range) => ({ ...range }))
223
+ }),
224
+ surface: HTMLElement | undefined,
225
+ textarea: HTMLTextAreaElement | undefined,
226
+ ui = reactive({
227
+ between: 0,
228
+ bottom: 0,
229
+ editing: false,
230
+ foldable: false,
231
+ height: 20,
232
+ input: '',
233
+ label: 'Markdown editor',
234
+ minimap: false,
235
+ name: '',
236
+ next: 0,
237
+ placeholder: '',
238
+ readonly: false,
239
+ spellcheck: true,
240
+ style: '',
241
+ tabSize: 4,
242
+ top: 0,
243
+ wrap: true
244
+ }),
245
+ units = cache(),
246
+ unitsDirty = true,
247
+ unsubscribe: VoidFunction | undefined,
248
+ // Where each document this editor showed was left.
249
+ visited = new WeakMap<EditorDocument, Memo>(),
250
+ whole: { layout: EditorLayout; projection: NativeText; revision: number } | null = null,
251
+ writing = false,
252
+ written = '';
253
+
254
+ let activeUnit: Unit = {
255
+ active: true,
256
+ block: blocks[0],
257
+ continuation: false,
258
+ continues: false,
259
+ estimate: 0,
260
+ estimated: -1,
261
+ height: 0,
262
+ measured: -1,
263
+ raw: false
264
+ };
265
+
266
+ let draw = renderer({
267
+ fold: (unit) => {
268
+ controller.fold(model.lineAt(unit.block.from) + 1);
269
+ },
270
+ foldable: opens,
271
+ inline: inlineOf,
272
+ press,
273
+ readonly: () => ui.readonly,
274
+ shown: (element, unit) => {
275
+ if (unit) {
276
+ shown.set(element, unit);
277
+
278
+ resize?.observe(element);
279
+ }
280
+ else {
281
+ shown.delete(element);
282
+ resize?.unobserve(element);
283
+ }
284
+ },
285
+ task: (block) => {
286
+ if (!disposed && !options.readonly && !ime.busy() && block.task) {
287
+ toggleTask(model, block.task);
288
+ }
289
+ },
290
+ text: () => model.value,
291
+ unfold: (unit) => {
292
+ controller.unfold(unit.fold?.line ?? model.lineAt(unit.block.from) + 1);
293
+ }
294
+ });
295
+
296
+ let ime = composition({
297
+ begin: () => {
298
+ capture();
299
+ beforeRanges = model.selections;
300
+ beforeSelection = model.selection;
301
+ model.breakHistory();
302
+ },
303
+ commit: (conflict) => {
304
+ if (conflict) {
305
+ reset();
306
+ resync();
307
+ }
308
+ else {
309
+ accept(true);
310
+ }
311
+
312
+ if (pendingValue !== undefined) {
313
+ let value = pendingValue;
314
+
315
+ pendingValue = undefined;
316
+ model.setValue(value, { source: 'external' });
317
+ }
318
+ }
319
+ });
320
+
321
+ let gestures = pointer({
322
+ busy: ime.busy,
323
+ capture,
324
+ get document() {
325
+ return model;
326
+ },
327
+ drop: (offset) => {
328
+ dropAt = offset;
329
+ schedule();
330
+ },
331
+ focus: () => controller.focus(),
332
+ insert: (text) => controller.insert(text),
333
+ offsetAt,
334
+ placeholder: () => null,
335
+ readonly: () => !!options.readonly,
336
+ rows: rowsBetween,
337
+ select: (ranges, reveal = false) => {
338
+ model.selectMany(ranges);
339
+ start(reveal);
340
+ },
341
+ transact: (edits, caret) => {
342
+ model.transact(edits, { selection: { start: caret }, source: 'drop' });
343
+ start(true);
344
+ },
345
+ unfold: () => {}
346
+ });
347
+
348
+ let jump = goto({
349
+ focus: () => controller.focus(),
350
+ go: (line, column) => controller.goToLine(line, column)
351
+ });
352
+
353
+ let map = minimap({
354
+ focus: () => {
355
+ if (editing) {
356
+ textarea?.focus({ preventScroll: true });
357
+ }
358
+ },
359
+ scroll: (top, relative) => {
360
+ scrollTo(relative ? metrics.scrollTop + top : top);
361
+ }
362
+ });
363
+
364
+ let search = find({
365
+ get document() {
366
+ return model;
367
+ },
368
+ edit: editable,
369
+ focus: () => controller.focus(),
370
+ readonly: () => !!options.readonly,
371
+ reveal: (match) => {
372
+ model.select({ end: match.to, start: match.from });
373
+ start(true);
374
+ },
375
+ selection: () => {
376
+ capture();
377
+ return model.selection;
378
+ },
379
+ update: schedule
380
+ });
381
+
382
+ let size = observeSize(() => measure());
383
+
384
+ let source: Source = {
385
+ breaks: () => NONE,
386
+ get count() {
387
+ return model.lineCount;
388
+ },
389
+ get height() {
390
+ return layout.total;
391
+ },
392
+ indexAt: (y) => {
393
+ let index = layout.at(y),
394
+ unit = layout.units[index];
395
+
396
+ if (!unit) {
397
+ return 0;
398
+ }
399
+
400
+ let { first, last } = linesOf(index),
401
+ top = layout.top(index),
402
+ height = layout.height(unit);
403
+
404
+ return first + Math.min(last - first, Math.floor(((y - top) / Math.max(1, height)) * (last - first + 1)));
405
+ },
406
+ get lineHeight() {
407
+ return metrics.lineHeight;
408
+ },
409
+ rows: () => 1,
410
+ get tabSize() {
411
+ return options.tabSize ?? 4;
412
+ },
413
+ text: (index) => model.lineText(index),
414
+ tokens: (index) => ui.minimap ? syntaxCache(model, 'markdown').lineTokens(index) : NO_TOKENS,
415
+ top: (index) => {
416
+ let at = layout.indexOf(model.lineStart(index)),
417
+ unit = layout.units[at];
418
+
419
+ if (!unit) {
420
+ return 0;
421
+ }
422
+
423
+ let { first, last } = linesOf(at);
424
+
425
+ return layout.top(at) + (Math.max(0, index - first) * layout.height(unit)) / (last - first + 1);
426
+ }
427
+ };
428
+
429
+ // Applies a native input to the document. 'beforeinput' recorded the field's selection and length, so most inputs
430
+ // resolve without a diff; the rest diff the field's value.
431
+ function accept(composed = false) {
432
+ if (disposed || !textarea || !active) {
433
+ return;
434
+ }
435
+
436
+ if (options.readonly) {
437
+ reset();
438
+ resync();
439
+ return;
440
+ }
441
+
442
+ let after = { end: textarea.selectionEnd, length: textarea.textLength, start: textarea.selectionStart },
443
+ base = active.from,
444
+ direction = textarea.selectionDirection,
445
+ native = before && !composed ? inputEdit(before, after, inputType, inputData) : null,
446
+ ranges = beforeRanges.length ? beforeRanges : model.selections,
447
+ value = textarea.value,
448
+ edit: Edit;
449
+
450
+ if (native) {
451
+ edit = projection.toSourceEdit(model.value, native.from, native.to, native.insert);
452
+ }
453
+ else if (value === projection.value) {
454
+ reset();
455
+ capture();
456
+ return;
457
+ }
458
+ else {
459
+ let selection = beforeSelection
460
+ ? { end: clamp(beforeSelection.end - base, 0, fieldSource.length), start: clamp(beforeSelection.start - base, 0, fieldSource.length) }
461
+ : undefined;
462
+
463
+ edit = projection.edit(model.value, value, selection, inputType);
464
+ }
465
+
466
+ // A native edit the projection can't map would remove text the field doesn't show; the field goes back.
467
+ if (edit.from === edit.to && !edit.insert) {
468
+ reset();
469
+ resync();
470
+ return;
471
+ }
472
+
473
+ let group = !composed && /^(deleteContentBackward|deleteContentForward|insertText)$/.test(inputType) ? inputType : undefined,
474
+ origin = composed ? 'composition' : 'input';
475
+
476
+ written = value;
477
+
478
+ if (ranges.length > 1) {
479
+ reset();
480
+ insertText(model, edit.insert, origin);
481
+ return;
482
+ }
483
+
484
+ let from = base + edit.from,
485
+ caret = native
486
+ ? { direction, end: from + edit.insert.length, start: from + edit.insert.length }
487
+ : caretAfter(edit, after, direction);
488
+
489
+ reset();
490
+ model.replace(from, base + edit.to, edit.insert, { group, selection: caret, source: origin });
491
+ }
492
+
493
+ // Shows the field for the selection.
494
+ function activate(focus: boolean) {
495
+ if (disposed) {
496
+ return;
497
+ }
498
+
499
+ editing = true;
500
+ ui.editing = true;
501
+ refresh();
502
+ schedule();
503
+
504
+ if (focus && textarea && host?.ownerDocument.activeElement !== textarea) {
505
+ // The field must be displayed before it can take focus.
506
+ flush();
507
+ textarea.focus({ preventScroll: true });
508
+ }
509
+ }
510
+
511
+ // Takes over from the previous document: whatever was derived from it goes, and this one's view comes back as
512
+ // this editor left it, folds only while its text is unchanged since.
513
+ function adopt() {
514
+ let memo = visited.get(model),
515
+ { selections, ...single } = model.state;
516
+
517
+ reset();
518
+ active = null;
519
+ activeIndex = -1;
520
+ blocks = parseMarkdown(model);
521
+ activeUnit.block = blocks[0];
522
+ drag = null;
523
+ dropAt = null;
524
+ escapeTab = false;
525
+ fieldSource = '';
526
+ folds = memo?.revision === model.revision ? memo.folds : [];
527
+ geometry = null;
528
+ goals = [];
529
+ length = model.value.length;
530
+ metrics.scrollLeft = memo?.left ?? 0;
531
+ metrics.scrollTop = memo?.top ?? 0;
532
+ parsed = model.revision;
533
+ pendingValue = undefined;
534
+ projection = new NativeText('');
535
+ secondary = selections.length > 1;
536
+ whole = null;
537
+ written = '';
538
+ state.selections.splice(0, state.selections.length, ...selections.map((range) => ({ ...range })));
539
+ Object.assign(state, single, { selection: { ...single.selection } });
540
+ gestures.reset();
541
+ jump.state.open = false;
542
+ map.invalidate();
543
+ references();
544
+
545
+ if (unsubscribe) {
546
+ subscribe();
547
+ }
548
+
549
+ search.result();
550
+ }
551
+
552
+ function capture() {
553
+ if (disposed || !textarea || !active || !editing || ime.busy() || writing || textarea.value !== written) {
554
+ return;
555
+ }
556
+
557
+ let base = active.from,
558
+ next: Selection = {
559
+ direction: textarea.selectionDirection,
560
+ end: base + projection.toSource(textarea.selectionEnd),
561
+ start: base + projection.toSource(textarea.selectionStart)
562
+ };
563
+
564
+ let primary = model.selection;
565
+
566
+ // A field reports a direction even for a caret, and 'forward' where the document has none.
567
+ if (
568
+ next.start === primary.start &&
569
+ next.end === primary.end &&
570
+ (next.start === next.end || next.direction === primary.direction || primary.direction === 'none')
571
+ ) {
572
+ return;
573
+ }
574
+
575
+ model.selectMany([next, ...model.selections.slice(1)]);
576
+ }
577
+
578
+ function caretAfter(edit: Edit, after: Before, direction: Selection['direction']) {
579
+ let base = active!.from,
580
+ next = new NativeText(fieldSource.slice(0, edit.from) + edit.insert + fieldSource.slice(edit.to));
581
+
582
+ return { direction, end: base + next.toSource(after.end), start: base + next.toSource(after.start) };
583
+ }
584
+
585
+ // Client rectangle of a source offset: the field's geometry inside it, the drawn text elsewhere, or else the
586
+ // unit's top.
587
+ function clientRect(offset: number): Rect | null {
588
+ if (!surface) {
589
+ return null;
590
+ }
591
+
592
+ current();
593
+
594
+ let box = surface.getBoundingClientRect(),
595
+ originX = box.left + surface.clientLeft - surface.scrollLeft,
596
+ originY = box.top + surface.clientTop - surface.scrollTop;
597
+
598
+ if (active && editing && geometry && offset >= active.from && offset <= active.to) {
599
+ let rect = geometry.rect(projection.toNative(offset - active.from));
600
+
601
+ return {
602
+ height: rect.height,
603
+ left: originX + fieldLeft() + rect.left,
604
+ top: originY + metrics.padTop + layout.top(activeIndex) + rect.top,
605
+ width: rect.width
606
+ };
607
+ }
608
+
609
+ let index = layout.indexOf(offset),
610
+ unit = layout.units[index];
611
+
612
+ if (!unit) {
613
+ return null;
614
+ }
615
+
616
+ let rects = textRects(unit, offset, offset);
617
+
618
+ if (rects.length) {
619
+ return rects[0];
620
+ }
621
+
622
+ return { height: metrics.lineHeight, left: originX + metrics.padLeft, top: originY + metrics.padTop + layout.top(index), width: 1 };
623
+ }
624
+
625
+ function clip(e: ClipboardEvent, cut: boolean) {
626
+ if (disposed || ime.busy() || !e.clipboardData) {
627
+ return;
628
+ }
629
+
630
+ capture();
631
+
632
+ let ranges = copied(model);
633
+
634
+ write(e.clipboardData, model, ranges);
635
+ e.preventDefault();
636
+
637
+ if (cut && !options.readonly) {
638
+ model.selectMany(ranges);
639
+ controller.insert('');
640
+ }
641
+ }
642
+
643
+ function connect() {
644
+ if (disposed || !host || !ruler || !surface || !textarea || unsubscribe) {
645
+ return;
646
+ }
647
+
648
+ measure();
649
+ subscribe();
650
+ refresh();
651
+ unitsDirty = true;
652
+ schedule();
653
+ void host.ownerDocument.fonts?.ready.then(() => {
654
+ if (!disposed) {
655
+ measure();
656
+ }
657
+ });
658
+ receive?.(controller);
659
+ }
660
+
661
+ // Where a unit's text starts, after any markers.
662
+ function contentStart(unit: Unit) {
663
+ return unit.block.from + (unit.rows ? unit.rows[0].contentFrom : unit.block.contentFrom - unit.block.from);
664
+ }
665
+
666
+ // Brings the unit list up to the document before anything reads positions from it.
667
+ function current() {
668
+ if (unitsDirty) {
669
+ rebuild();
670
+ }
671
+ }
672
+
673
+ // Hides the field; every block shows formatted again.
674
+ function deactivate() {
675
+ if (!editing) {
676
+ return;
677
+ }
678
+
679
+ ime.flush();
680
+ editing = false;
681
+ drag = null;
682
+ ui.editing = false;
683
+ gestures.reset();
684
+ refresh();
685
+ schedule();
686
+ }
687
+
688
+ function decorate() {
689
+ let items: Decoration[] = [],
690
+ ranges = model.selections,
691
+ matches = search.state.open || search.state.query ? search.result() : null;
692
+
693
+ if (ranges.length < 2 && !drag && dropAt === null && !matches?.matches.length) {
694
+ if (decorations.length) {
695
+ decorations.splice(0, decorations.length);
696
+ }
697
+
698
+ return;
699
+ }
700
+
701
+ let box = surface!.getBoundingClientRect(),
702
+ originX = box.left + surface!.clientLeft - surface!.scrollLeft,
703
+ originY = box.top + surface!.clientTop - surface!.scrollTop,
704
+ units = layout.units,
705
+ view = layout.window(metrics.scrollTop - metrics.padTop, metrics.clientHeight, 0),
706
+ from = units[view.start] ? unitStart(units[view.start]) : 0,
707
+ to = view.end < units.length ? unitStart(units[view.end]) : model.value.length;
708
+
709
+ let mark = (start: number, end: number, kind: string) => {
710
+ if (end < from || start > to || items.length >= DECORATIONS) {
711
+ return;
712
+ }
713
+
714
+ let rects = rangeRects(Math.max(start, from), Math.min(end, to));
715
+
716
+ for (let i = 0, n = rects.length; i < n && items.length < DECORATIONS; i++) {
717
+ let rect = rects[i];
718
+
719
+ items.push({
720
+ kind,
721
+ style: `height: ${rect.height}px; left: ${rect.left - originX}px; top: ${rect.top - originY}px;${start === end ? '' : ` width: ${Math.max(1, rect.width)}px;`}`
722
+ });
723
+ }
724
+ };
725
+
726
+ if (matches) {
727
+ let { index, matches: list } = search.matches(from);
728
+
729
+ for (let i = index, n = list.length; i < n && list[i].from <= to && items.length < DECORATIONS; i++) {
730
+ mark(list[i].from, list[i].to, i === search.state.index ? 'markdown-editor-mark markdown-editor-mark--match --active' : 'markdown-editor-mark markdown-editor-mark--match');
731
+ }
732
+ }
733
+
734
+ for (let i = 1, n = ranges.length; i < n; i++) {
735
+ let range = ranges[i];
736
+
737
+ if (range.start !== range.end) {
738
+ mark(range.start, range.end, 'markdown-editor-mark markdown-editor-mark--selection');
739
+ }
740
+
741
+ let head = range.direction === 'backward' ? range.start : range.end;
742
+
743
+ mark(head, head, 'markdown-editor-mark markdown-editor-mark--caret');
744
+ }
745
+
746
+ if (drag) {
747
+ mark(Math.min(drag.anchor, drag.head), Math.max(drag.anchor, drag.head), 'markdown-editor-mark markdown-editor-mark--selection');
748
+ }
749
+
750
+ if (dropAt !== null) {
751
+ mark(dropAt, dropAt, 'markdown-editor-mark markdown-editor-mark--caret');
752
+ }
753
+
754
+ while (decorations.length < items.length) {
755
+ decorations.push(reactive({ kind: '', style: '' }));
756
+ }
757
+
758
+ if (decorations.length > items.length) {
759
+ decorations.splice(items.length, decorations.length - items.length);
760
+ }
761
+
762
+ for (let i = 0, n = items.length; i < n; i++) {
763
+ decorations[i].kind = items[i].kind;
764
+ decorations[i].style = items[i].style;
765
+ }
766
+ }
767
+
768
+ function editable(run: () => boolean) {
769
+ if (disposed || options.readonly || ime.busy()) {
770
+ return false;
771
+ }
772
+
773
+ capture();
774
+ revealFolds(true);
775
+
776
+ let changed = run();
777
+
778
+ start(true);
779
+
780
+ return changed;
781
+ }
782
+
783
+ // Lays out the field's text and sizes it; the field's styles must match what this assumes.
784
+ function fieldGeometry() {
785
+ if (!active) {
786
+ geometry = null;
787
+ return;
788
+ }
789
+
790
+ let block = blocks[active.first],
791
+ scale = headingScale(block.level),
792
+ fontSize = metrics.fontSize * scale,
793
+ lineHeight = block.level && block.level <= 2 ? fontSize * SCALED_LINE : metrics.lineHeight,
794
+ wrap = options.wrap !== false,
795
+ width = Math.max(1, metrics.width - block.quoteDepth * metrics.quoteIndent);
796
+
797
+ geometry = new EditorLayout(projection, fieldSource, wrap ? width : Number.MAX_SAFE_INTEGER, lineHeight, metrics.charWidth * scale, options.tabSize ?? 4, wrap);
798
+ estimated = false;
799
+
800
+ if (wrap) {
801
+ for (let i = 0, n = geometry.count; i < n && !estimated; i++) {
802
+ estimated = geometry.estimated(i);
803
+ }
804
+ }
805
+
806
+ let height = Math.max(lineHeight, geometry.height),
807
+ widest = 0;
808
+
809
+ if (!wrap) {
810
+ for (let i = 0, n = geometry.count; i < n; i++) {
811
+ widest = Math.max(widest, geometry.end(i) - geometry.lineFrom(i));
812
+ }
813
+ }
814
+
815
+ ui.height = height;
816
+ ui.input = `markdown-editor-input markdown-editor-input--${block.kind}${block.level ? ` markdown-editor-input--h${block.level}` : ''}${block.quoteDepth ? ' markdown-editor-input--quoted' : ''}`;
817
+ ui.style = `--depth: ${block.quoteDepth};${wrap ? '' : ` --field-width: ${Math.ceil((widest + 1) * metrics.charWidth * scale)}px;`}`;
818
+
819
+ layout.measure(activeUnit, height);
820
+ }
821
+
822
+ // Left edge of the field's text in the surface's padding box.
823
+ function fieldLeft() {
824
+ return metrics.padLeft + (active ? blocks[active.first].quoteDepth * metrics.quoteIndent : 0);
825
+ }
826
+
827
+ // Client rectangles of [from, to) inside the field, one per row, from its geometry.
828
+ function fieldRects(from: number, to: number, out: Rect[]) {
829
+ if (!active || !geometry || !surface) {
830
+ return;
831
+ }
832
+
833
+ let box = surface.getBoundingClientRect(),
834
+ x = box.left + surface.clientLeft - surface.scrollLeft + fieldLeft(),
835
+ y = box.top + surface.clientTop - surface.scrollTop + metrics.padTop + layout.top(activeIndex),
836
+ end = geometry.rect(projection.toNative(clamp(to, active.from, active.to) - active.from)),
837
+ start = geometry.rect(projection.toNative(clamp(from, active.from, active.to) - active.from)),
838
+ lineHeight = geometry.lineHeight;
839
+
840
+ if (from === to) {
841
+ out.push({ height: lineHeight, left: x + start.left, top: y + start.top, width: 1 });
842
+ return;
843
+ }
844
+
845
+ for (let top = start.top; top <= end.top && out.length < DECORATIONS; top += lineHeight) {
846
+ let left = top === start.top ? start.left : 0,
847
+ right = top === end.top ? end.left : geometry.width;
848
+
849
+ out.push({ height: lineHeight, left: x + left, top: y + top, width: Math.max(1, right - left) });
850
+ }
851
+ }
852
+
853
+ // Applies a drag or click on the drawn text once the pointer comes back up.
854
+ function finish() {
855
+ if (!drag) {
856
+ return;
857
+ }
858
+
859
+ let { anchor, head } = drag;
860
+
861
+ drag = null;
862
+ model.select({ direction: head < anchor ? 'backward' : 'forward', end: Math.max(anchor, head), start: Math.min(anchor, head) });
863
+ activate(true);
864
+ }
865
+
866
+ function inlineOf(block: MarkdownBlock) {
867
+ let entry = inlines.get(block);
868
+
869
+ if (!entry || entry.definitions !== definitions) {
870
+ let base = block.from,
871
+ text = model.value.slice(block.contentFrom, block.contentTo);
872
+
873
+ entry = {
874
+ definitions,
875
+ tokens: parseInline(text, block.contentFrom - base, 0, block.definitions ? new Map() : definitions)
876
+ };
877
+ inlines.set(block, entry);
878
+ }
879
+
880
+ return entry.tokens;
881
+ }
882
+
883
+ // The block kind at a source offset, for commands that leave literal source alone.
884
+ function kindAt(offset: number): Kind | undefined {
885
+ return blocks[blockAt(blocks, offset)]?.kind;
886
+ }
887
+
888
+ // Whether a plain arrow key at the field's edge leaves it for the neighbouring block.
889
+ function leaves(key: string) {
890
+ if (!active || !geometry || !textarea) {
891
+ return false;
892
+ }
893
+
894
+ let head = textarea.selectionDirection === 'backward' ? textarea.selectionStart : textarea.selectionEnd;
895
+
896
+ if (key === 'ArrowLeft') {
897
+ return head === 0 && active.from > 0;
898
+ }
899
+
900
+ if (key === 'ArrowRight') {
901
+ return head === textarea.textLength && active.to < model.value.length;
902
+ }
903
+
904
+ let rect = geometry.rect(head);
905
+
906
+ if (key === 'ArrowUp') {
907
+ return rect.top < geometry.lineHeight / 2 && active.from > 0;
908
+ }
909
+
910
+ return rect.top + geometry.lineHeight >= geometry.height - 0.5 && active.to < model.value.length;
911
+ }
912
+
913
+ // Source lines [first, last] unit 'index' covers.
914
+ function linesOf(index: number) {
915
+ let units = layout.units,
916
+ from = unitStart(units[index]),
917
+ to = index + 1 < units.length ? unitStart(units[index + 1]) - 1 : model.value.length;
918
+
919
+ return { first: model.lineAt(from), last: model.lineAt(Math.max(from, to)) };
920
+ }
921
+
922
+ // Marks which drawn units in [from, to) show a fold marker; only neighbouring blocks are looked at.
923
+ function markFoldable(from: number, to: number) {
924
+ let units = layout.units;
925
+
926
+ for (let i = from; i < to; i++) {
927
+ let unit = units[i],
928
+ state = draw.state(unit);
929
+
930
+ if (!state) {
931
+ continue;
932
+ }
933
+
934
+ let next = opens(unit);
935
+
936
+ if (state.foldable !== next) {
937
+ state.foldable = next;
938
+ }
939
+ }
940
+ }
941
+
942
+ // Reads computed geometry and colors on connect, resize, font load or refresh; never per frame.
943
+ function measure() {
944
+ if (disposed || !host || !ruler || !surface || !textarea) {
945
+ return;
946
+ }
947
+
948
+ let computed = getComputedStyle(surface),
949
+ style = getComputedStyle(host),
950
+ fallback = style.getPropertyValue('--color').trim() || 'currentColor',
951
+ colors: Record<string, string> = {},
952
+ padLeft = pixels(computed.paddingLeft),
953
+ fontSize = pixels(computed.fontSize) || 13;
954
+
955
+ metrics = {
956
+ charWidth: ruler.getBoundingClientRect().width / (ruler.textContent?.length || 1) || 7.8,
957
+ clientHeight: surface.clientHeight,
958
+ fontSize,
959
+ lineHeight: pixels(computed.lineHeight) || fontSize * 1.5,
960
+ minimap: pixels(style.getPropertyValue('--minimap-width')),
961
+ padLeft,
962
+ padTop: pixels(computed.paddingTop),
963
+ quoteIndent: pixels(style.getPropertyValue('--quote-indent')),
964
+ scrollLeft: surface.scrollLeft,
965
+ scrollTop: surface.scrollTop,
966
+ width: surface.getBoundingClientRect().width - (surface.offsetWidth - surface.clientWidth) - padLeft - pixels(computed.paddingRight)
967
+ };
968
+
969
+ for (let i = 0, n = TOKEN_COLORS.length; i < n; i++) {
970
+ colors[TOKEN_COLORS[i]] = style.getPropertyValue(`--${TOKEN_COLORS[i]}-color`).trim() || fallback;
971
+ }
972
+
973
+ palette = colors;
974
+
975
+ if (layout.configure({
976
+ charWidth: metrics.charWidth,
977
+ fontSize: metrics.fontSize,
978
+ lineHeight: metrics.lineHeight,
979
+ quoteIndent: metrics.quoteIndent,
980
+ width: metrics.width
981
+ })) {
982
+ whole = null;
983
+ fieldGeometry();
984
+ map.invalidate();
985
+ unitsDirty = true;
986
+ }
987
+
988
+ schedule();
989
+ }
990
+
991
+ function moveSelection(key: string, extend: boolean, word = false, add = false, boundary = false) {
992
+ if (!VERTICAL.test(key) || boundary || add) {
993
+ goals = [];
994
+ }
995
+
996
+ if (!whole || whole.revision !== model.revision) {
997
+ let native = new NativeText(model.value);
998
+
999
+ whole = {
1000
+ layout: new EditorLayout(native, model.value, Number.MAX_SAFE_INTEGER, metrics.lineHeight, metrics.charWidth, options.tabSize ?? 4, false),
1001
+ projection: native,
1002
+ revision: model.revision
1003
+ };
1004
+ }
1005
+
1006
+ let lineHeight = metrics.lineHeight,
1007
+ ranges = move(model, whole.layout, whole.projection, lineHeight, {
1008
+ boundary,
1009
+ extend,
1010
+ goals,
1011
+ key,
1012
+ page: Math.max(lineHeight, metrics.clientHeight - lineHeight),
1013
+ word
1014
+ });
1015
+
1016
+ model.selectMany(add ? [...model.selections, ...ranges] : ranges, 'navigation');
1017
+ start(true);
1018
+ }
1019
+
1020
+ function offsetAt(clientX: number, clientY: number) {
1021
+ if (disposed || !surface) {
1022
+ return null;
1023
+ }
1024
+
1025
+ current();
1026
+
1027
+ let box = surface.getBoundingClientRect();
1028
+
1029
+ if (box.width && (clientX < box.left || clientX > box.right || clientY < box.top || clientY > box.bottom)) {
1030
+ return null;
1031
+ }
1032
+
1033
+ if (active && editing && textarea && geometry) {
1034
+ let field = textarea.getBoundingClientRect();
1035
+
1036
+ if (clientY >= field.top && clientY < field.bottom) {
1037
+ return active.from + projection.toSource(geometry.offset(clientX - field.left + textarea.scrollLeft, clientY - field.top));
1038
+ }
1039
+ }
1040
+
1041
+ let point = pointAt(clientX, clientY);
1042
+
1043
+ if (point !== null) {
1044
+ return point;
1045
+ }
1046
+
1047
+ // Off the text (a marker, padding, an image): the unit under the point.
1048
+ let under = host!.ownerDocument.elementFromPoint(clientX, clientY)?.closest('.markdown-editor-block'),
1049
+ unit = under && shown.get(under);
1050
+
1051
+ if (unit) {
1052
+ return contentStart(unit);
1053
+ }
1054
+
1055
+ let index = layout.at(clientY - box.top - surface.clientTop + surface.scrollTop - metrics.padTop);
1056
+
1057
+ return layout.units[index] ? contentStart(layout.units[index]) : null;
1058
+ }
1059
+
1060
+ // Whether a drawn unit shows a fold marker; only neighbouring blocks are looked at.
1061
+ function opens(unit: Unit) {
1062
+ return options.fold !== false && !unit.continuation && !unit.raw && !unit.fold && foldable(blocks, blockAt(blocks, unit.block.from), model.value);
1063
+ }
1064
+
1065
+ function paint() {
1066
+ frame = 0;
1067
+
1068
+ if (disposed || !surface) {
1069
+ return;
1070
+ }
1071
+
1072
+ current();
1073
+
1074
+ if (estimated && textarea && editing) {
1075
+ // The arithmetic only estimated some of the field's rows; it takes the height the DOM drew instead.
1076
+ flush();
1077
+
1078
+ let height = textarea.scrollHeight;
1079
+
1080
+ if (height > ui.height + 0.5) {
1081
+ ui.height = height;
1082
+ layout.measure(activeUnit, height);
1083
+ }
1084
+
1085
+ estimated = false;
1086
+ }
1087
+
1088
+ if (revealing) {
1089
+ revealing = false;
1090
+ reveal();
1091
+ }
1092
+
1093
+ let n = layout.units.length,
1094
+ a = activeIndex,
1095
+ view = layout.window(metrics.scrollTop - metrics.padTop, metrics.clientHeight),
1096
+ split = a < 0 ? n : a,
1097
+ s1 = Math.min(view.start, split),
1098
+ e1 = Math.min(view.end, split),
1099
+ s2 = Math.max(view.start, split + 1),
1100
+ e2 = Math.max(view.end, s2);
1101
+
1102
+ if (a < 0) {
1103
+ s2 = e2 = n;
1104
+ }
1105
+
1106
+ if (view.start > split) {
1107
+ s1 = e1 = split;
1108
+ }
1109
+
1110
+ assign(listed.before, layout.units.slice(s1, e1));
1111
+ assign(listed.after, layout.units.slice(s2, e2));
1112
+ ui.top = layout.top(s1);
1113
+ ui.between = a < 0 ? 0 : layout.top(split) - layout.top(e1);
1114
+ ui.next = a < 0 ? 0 : layout.top(s2) - layout.top(a + 1);
1115
+ ui.bottom = layout.total - layout.top(a < 0 ? e1 : e2);
1116
+ ui.foldable = !!active && options.fold !== false && foldable(blocks, active.first, model.value);
1117
+
1118
+ markFoldable(s1, e1);
1119
+ markFoldable(s2, e2);
1120
+ // Rectangles come from the drawn text; units this frame added draw in the list's own pass, queued before.
1121
+ queueMicrotask(() => {
1122
+ if (!disposed) {
1123
+ decorate();
1124
+ }
1125
+ });
1126
+
1127
+ if (options.minimap) {
1128
+ // Heights moved every line below them.
1129
+ if (layout.total !== drawn) {
1130
+ drawn = layout.total;
1131
+ map.invalidate();
1132
+ }
1133
+
1134
+ map.paint(
1135
+ source,
1136
+ { clientHeight: metrics.clientHeight, scrollHeight: layout.total + 2 * metrics.padTop, scrollTop: metrics.scrollTop },
1137
+ palette,
1138
+ metrics.minimap
1139
+ );
1140
+ }
1141
+ }
1142
+
1143
+ // Source offset under a client point from the text node there.
1144
+ function pointAt(clientX: number, clientY: number) {
1145
+ let doc = host!.ownerDocument as Document & {
1146
+ caretPositionFromPoint?: (x: number, y: number) => { offset: number; offsetNode: Node } | null;
1147
+ },
1148
+ point = doc.caretPositionFromPoint?.(clientX, clientY),
1149
+ range = point ? null : doc.caretRangeFromPoint?.(clientX, clientY);
1150
+
1151
+ return draw.offset(point?.offsetNode ?? range?.startContainer ?? null, point?.offset ?? range?.startOffset ?? 0);
1152
+ }
1153
+
1154
+ // Draws the window at the scroll position now rather than next frame, so the surface is as tall as its content
1155
+ // before the position applies.
1156
+ function present() {
1157
+ if (disposed || !surface) {
1158
+ return;
1159
+ }
1160
+
1161
+ if (frame) {
1162
+ cancelAnimationFrame(frame);
1163
+ }
1164
+
1165
+ paint();
1166
+ flush();
1167
+ surface.scrollLeft = metrics.scrollLeft;
1168
+ surface.scrollTop = metrics.scrollTop;
1169
+ }
1170
+
1171
+ // A press on a drawn unit places the caret where it lands, in the same gesture: nothing redraws until the
1172
+ // pointer comes back up, so the press and release meet the same nodes.
1173
+ function press(e: MouseEvent, unit: Unit | null) {
1174
+ if (disposed || ime.busy() || e.button !== 0 || e.altKey || e.defaultPrevented) {
1175
+ return;
1176
+ }
1177
+
1178
+ let target = e.target as Element;
1179
+
1180
+ if ((e.ctrlKey || e.metaKey) && target.closest('a')) {
1181
+ return;
1182
+ }
1183
+
1184
+ e.preventDefault();
1185
+
1186
+ let offset = pointAt(e.clientX, e.clientY) ?? (unit ? contentStart(unit) : offsetAt(e.clientX, e.clientY) ?? 0),
1187
+ selection = model.selection;
1188
+
1189
+ drag = {
1190
+ anchor: e.shiftKey ? (selection.direction === 'backward' ? selection.end : selection.start) : offset,
1191
+ head: offset
1192
+ };
1193
+
1194
+ if (pointerId >= 0 && surface?.isConnected) {
1195
+ try {
1196
+ surface.setPointerCapture(pointerId);
1197
+ }
1198
+ catch {
1199
+ // The pointer may already be gone.
1200
+ }
1201
+ }
1202
+
1203
+ schedule();
1204
+ }
1205
+
1206
+ function rangeRects(from: number, to: number) {
1207
+ let out: Rect[] = [],
1208
+ units = layout.units,
1209
+ first = layout.indexOf(from),
1210
+ last = layout.indexOf(to);
1211
+
1212
+ for (let i = first; i <= last && out.length < DECORATIONS; i++) {
1213
+ let unit = units[i];
1214
+
1215
+ if (unit === activeUnit) {
1216
+ fieldRects(from, to, out);
1217
+ }
1218
+ else {
1219
+ let rects = textRects(unit, from, to);
1220
+
1221
+ for (let j = 0, n = rects.length; j < n; j++) {
1222
+ out.push(rects[j]);
1223
+ }
1224
+ }
1225
+ }
1226
+
1227
+ return out;
1228
+ }
1229
+
1230
+ function rebuild() {
1231
+ let raw: Set<number> | null = null,
1232
+ ranges = model.selections;
1233
+
1234
+ if (ranges.length > 1) {
1235
+ raw = new Set();
1236
+
1237
+ for (let i = 1, n = ranges.length; i < n; i++) {
1238
+ for (let b = blockAt(blocks, ranges[i].start), e = blockAt(blocks, ranges[i].end); b <= e; b++) {
1239
+ raw.add(b);
1240
+ }
1241
+ }
1242
+ }
1243
+
1244
+ if (active) {
1245
+ activeUnit.block = blocks[active.first];
1246
+ }
1247
+
1248
+ let list = arrange(
1249
+ blocks,
1250
+ model.value,
1251
+ options.fold === false ? [] : folds,
1252
+ units,
1253
+ active && editing ? { first: active.first, last: active.last, unit: activeUnit } : null,
1254
+ raw ? (index) => raw.has(index) : null
1255
+ );
1256
+
1257
+ layout.set(list, model.value);
1258
+ activeIndex = -1;
1259
+
1260
+ if (active && editing) {
1261
+ let index = layout.indexOf(active.from);
1262
+
1263
+ activeIndex = list[index] === activeUnit ? index : list.indexOf(activeUnit);
1264
+ }
1265
+
1266
+ unitsDirty = false;
1267
+ }
1268
+
1269
+ // Link reference definitions, from the blocks holding them; links everywhere draw again when they change.
1270
+ function references() {
1271
+ let next = new Map<string, string>();
1272
+
1273
+ for (let i = 0, n = blocks.length; i < n; i++) {
1274
+ let block = blocks[i];
1275
+
1276
+ if (!block.definitions) {
1277
+ continue;
1278
+ }
1279
+
1280
+ for (let [label, href] of markdownReferences(model.value.slice(block.contentFrom, block.contentTo))) {
1281
+ if (!next.has(label)) {
1282
+ next.set(label, href);
1283
+ }
1284
+ }
1285
+ }
1286
+
1287
+ definitions = next;
1288
+ units = cache();
1289
+ unitsDirty = true;
1290
+ }
1291
+
1292
+ // Brings the field to the primary selection: which blocks it covers, its text, its selection and its size.
1293
+ function refresh() {
1294
+ if (disposed) {
1295
+ return;
1296
+ }
1297
+
1298
+ if (!editing || !blocks.length) {
1299
+ if (active) {
1300
+ active = null;
1301
+ geometry = null;
1302
+ unitsDirty = true;
1303
+ }
1304
+
1305
+ return;
1306
+ }
1307
+
1308
+ let selection = model.selection,
1309
+ first = blockAt(blocks, selection.start),
1310
+ last = blockAt(blocks, selection.end) + 1;
1311
+
1312
+ // A drag inside the field never shrinks it under the pointer.
1313
+ if (pinned && active && active.last <= blocks.length) {
1314
+ first = Math.min(first, active.first);
1315
+ last = Math.max(last, active.last);
1316
+ }
1317
+
1318
+ let from = blocks[first].from,
1319
+ to = Math.max(selection.end, contentEnd(model.value, blocks[last - 1]));
1320
+
1321
+ if (!active || active.first !== first || active.last !== last) {
1322
+ unitsDirty = true;
1323
+ }
1324
+
1325
+ active = { first, from, last, to };
1326
+
1327
+ let text = model.value.slice(from, to),
1328
+ shaped = fieldSource !== text || !geometry;
1329
+
1330
+ if (fieldSource !== text) {
1331
+ fieldSource = text;
1332
+ projection = new NativeText(text);
1333
+ }
1334
+
1335
+ if (shaped || activeUnit.block !== blocks[first]) {
1336
+ activeUnit.block = blocks[first];
1337
+ fieldGeometry();
1338
+ }
1339
+
1340
+ if (!textarea || ime.busy()) {
1341
+ return;
1342
+ }
1343
+
1344
+ if (written !== projection.value) {
1345
+ writing = true;
1346
+
1347
+ try {
1348
+ writeField(textarea, written, projection.value, null);
1349
+ }
1350
+ finally {
1351
+ writing = false;
1352
+ }
1353
+
1354
+ written = projection.value;
1355
+ }
1356
+
1357
+ let nativeEnd = projection.toNative(clamp(selection.end - from, 0, text.length)),
1358
+ nativeStart = projection.toNative(clamp(selection.start - from, 0, text.length));
1359
+
1360
+ if (
1361
+ textarea.selectionStart !== nativeStart ||
1362
+ textarea.selectionEnd !== nativeEnd ||
1363
+ (nativeStart !== nativeEnd && selection.direction !== 'none' && textarea.selectionDirection !== selection.direction)
1364
+ ) {
1365
+ textarea.setSelectionRange(nativeStart, nativeEnd, selection.direction);
1366
+ }
1367
+ }
1368
+
1369
+ // Brings the blocks up to the document: only from the edited block until block boundaries line up again. True
1370
+ // when only blocks the field stands for changed, so the units stay as they are.
1371
+ function reparseBlocks() {
1372
+ let deltas = model.deltas(parsed),
1373
+ previous = length;
1374
+
1375
+ length = model.value.length;
1376
+ parsed = model.revision;
1377
+
1378
+ if (!deltas) {
1379
+ blocks = parseMarkdown(model);
1380
+ map.invalidate();
1381
+ references();
1382
+ return false;
1383
+ }
1384
+
1385
+ if (!deltas.length) {
1386
+ return true;
1387
+ }
1388
+
1389
+ let end = -1,
1390
+ moved = 0,
1391
+ start = Number.MAX_SAFE_INTEGER;
1392
+
1393
+ for (let i = 0, n = deltas.length; i < n; i++) {
1394
+ let { inserted, line, removed } = deltas[i];
1395
+
1396
+ moved += inserted - removed;
1397
+
1398
+ if (end < 0) {
1399
+ end = line + inserted;
1400
+ start = line;
1401
+ continue;
1402
+ }
1403
+
1404
+ if (end >= line + removed) {
1405
+ end += inserted - removed;
1406
+ }
1407
+ else if (end > line) {
1408
+ end = line + inserted;
1409
+ }
1410
+
1411
+ end = Math.max(end, line + inserted);
1412
+ start = Math.min(start, line);
1413
+ }
1414
+
1415
+ let count = model.lineCount,
1416
+ from = model.lineStart(Math.min(start, count - 1)),
1417
+ to = end < count ? model.lineStart(end) : length,
1418
+ splice = reparse(blocks, model, from, to, length - previous),
1419
+ changed = false;
1420
+
1421
+ for (let i = 0, n = splice.dropped.length; !changed && i < n; i++) {
1422
+ changed = !!splice.dropped[i].definitions;
1423
+ }
1424
+
1425
+ for (let i = splice.start, n = splice.start + splice.inserted; !changed && i < n; i++) {
1426
+ changed = !!blocks[i].definitions;
1427
+ }
1428
+
1429
+ if (changed) {
1430
+ map.invalidate();
1431
+ references();
1432
+ return false;
1433
+ }
1434
+
1435
+ // Edits that kept the line count only redraw their lines in the minimap.
1436
+ if (moved) {
1437
+ map.invalidate();
1438
+ }
1439
+ else {
1440
+ map.invalidate(start, end);
1441
+ }
1442
+
1443
+ return !!active &&
1444
+ editing &&
1445
+ splice.dropped.length === splice.inserted &&
1446
+ splice.start >= active.first &&
1447
+ splice.start + splice.inserted <= active.last;
1448
+ }
1449
+
1450
+ function reset() {
1451
+ before = null;
1452
+ beforeRanges = [];
1453
+ beforeSelection = undefined;
1454
+ inputData = null;
1455
+ inputType = '';
1456
+ }
1457
+
1458
+ // Heights the DOM drew for units. Units above the viewport that changed move the view by as much, so it stays on
1459
+ // its text.
1460
+ function resized(entries: ResizeObserverEntry[]) {
1461
+ if (disposed) {
1462
+ return;
1463
+ }
1464
+
1465
+ current();
1466
+
1467
+ let anchor = layout.at(metrics.scrollTop - metrics.padTop),
1468
+ changed = false,
1469
+ shift = 0;
1470
+
1471
+ for (let i = 0, n = entries.length; i < n; i++) {
1472
+ let entry = entries[i],
1473
+ unit = shown.get(entry.target);
1474
+
1475
+ if (!unit) {
1476
+ continue;
1477
+ }
1478
+
1479
+ let height = entry.borderBoxSize?.[0]?.blockSize ?? (entry.target as HTMLElement).offsetHeight,
1480
+ previous = layout.height(unit);
1481
+
1482
+ if (layout.measure(unit, height)) {
1483
+ changed = true;
1484
+
1485
+ if (layout.indexOf(unitStart(unit)) < anchor) {
1486
+ shift += height - previous;
1487
+ }
1488
+ }
1489
+ }
1490
+
1491
+ if (shift) {
1492
+ scrollTo(metrics.scrollTop + shift);
1493
+ }
1494
+
1495
+ if (changed) {
1496
+ schedule();
1497
+ }
1498
+ }
1499
+
1500
+ // Writes the field again whatever it holds.
1501
+ function resync() {
1502
+ written = '';
1503
+ refresh();
1504
+ schedule();
1505
+ }
1506
+
1507
+ // Scrolls the primary selection's head into view.
1508
+ function reveal() {
1509
+ let selection = model.selection,
1510
+ head = selection.direction === 'backward' ? selection.start : selection.end,
1511
+ height = metrics.lineHeight,
1512
+ y: number;
1513
+
1514
+ if (active && editing && geometry && head >= active.from && head <= active.to) {
1515
+ let rect = geometry.rect(projection.toNative(head - active.from));
1516
+
1517
+ height = rect.height;
1518
+ y = metrics.padTop + layout.top(activeIndex) + rect.top;
1519
+
1520
+ if (options.wrap === false && surface) {
1521
+ let x = fieldLeft() + rect.left;
1522
+
1523
+ if (x < metrics.scrollLeft + metrics.padLeft) {
1524
+ surface.scrollLeft = metrics.scrollLeft = Math.max(0, x - metrics.padLeft);
1525
+ }
1526
+ else if (x + metrics.padLeft > metrics.scrollLeft + metrics.width) {
1527
+ surface.scrollLeft = metrics.scrollLeft = x + metrics.padLeft - metrics.width;
1528
+ }
1529
+ }
1530
+ }
1531
+ else {
1532
+ let index = layout.indexOf(head),
1533
+ unit = layout.units[index];
1534
+
1535
+ if (!unit) {
1536
+ return;
1537
+ }
1538
+
1539
+ y = metrics.padTop + layout.top(index);
1540
+ height = Math.min(layout.height(unit), metrics.clientHeight);
1541
+ }
1542
+
1543
+ if (y < metrics.scrollTop) {
1544
+ scrollTo(y - metrics.padTop);
1545
+ }
1546
+ else if (y + height > metrics.scrollTop + metrics.clientHeight) {
1547
+ scrollTo(y + height + metrics.padTop - metrics.clientHeight);
1548
+ }
1549
+ }
1550
+
1551
+ // Unfolds whatever hides a selection edge, or with 'edit', whatever an edit of the selection would touch.
1552
+ function revealFolds(edit = false) {
1553
+ if (!folds.length) {
1554
+ return;
1555
+ }
1556
+
1557
+ let ranges = model.selections,
1558
+ next = folds.filter((fold) => !ranges.some((range) =>
1559
+ (range.start >= fold.from && range.start < fold.to) ||
1560
+ (range.end > fold.from && range.end <= fold.to) ||
1561
+ (edit && range.start < fold.to && range.end > fold.from)
1562
+ ));
1563
+
1564
+ if (next.length !== folds.length) {
1565
+ folds = next;
1566
+ unitsDirty = true;
1567
+ }
1568
+ }
1569
+
1570
+ // Client y of the middle of each source line from one client y to another, for rectangular selections.
1571
+ function rowsBetween(from: number, to: number) {
1572
+ let out: number[] = [];
1573
+
1574
+ if (!surface) {
1575
+ return out;
1576
+ }
1577
+
1578
+ let left = surface.getBoundingClientRect().left + metrics.padLeft,
1579
+ a = offsetAt(left, from),
1580
+ b = offsetAt(left, to);
1581
+
1582
+ if (a === null || b === null) {
1583
+ return out;
1584
+ }
1585
+
1586
+ for (let line = model.lineAt(Math.min(a, b)), last = model.lineAt(Math.max(a, b)); line <= last && out.length < 1000; line++) {
1587
+ let rect = clientRect(model.lineStart(line));
1588
+
1589
+ if (rect) {
1590
+ out.push(rect.top + rect.height / 2);
1591
+ }
1592
+ }
1593
+
1594
+ return out;
1595
+ }
1596
+
1597
+ function schedule() {
1598
+ if (!disposed && !frame && surface) {
1599
+ frame = requestAnimationFrame(paint);
1600
+ }
1601
+ }
1602
+
1603
+ function scrollTo(top: number) {
1604
+ if (!surface) {
1605
+ return;
1606
+ }
1607
+
1608
+ surface.scrollTop = Math.max(0, top);
1609
+ metrics.scrollTop = surface.scrollTop;
1610
+ schedule();
1611
+ }
1612
+
1613
+ // Shows the selection once a gesture or command set it, revealing it when asked.
1614
+ function start(reveal: boolean) {
1615
+ if (!editing) {
1616
+ activate(false);
1617
+ }
1618
+
1619
+ revealing ||= reveal;
1620
+ schedule();
1621
+ }
1622
+
1623
+ function subscribe() {
1624
+ unsubscribe?.();
1625
+ unsubscribe = model.subscribe((snapshot, change) => {
1626
+ if (change.source !== 'navigation') {
1627
+ goals = [];
1628
+ }
1629
+
1630
+ let { selections, ...single } = snapshot;
1631
+
1632
+ state.selections.splice(0, state.selections.length, ...selections.map((range) => ({ ...range })));
1633
+ Object.assign(state, single, { selection: { ...snapshot.selection } });
1634
+
1635
+ if (change.textChanged) {
1636
+ ime.conflict();
1637
+ textChanged(change);
1638
+ }
1639
+
1640
+ if (change.selectionChanged) {
1641
+ revealFolds();
1642
+ // Blocks holding secondary carets draw as source.
1643
+ unitsDirty ||= secondary || selections.length > 1;
1644
+ secondary = selections.length > 1;
1645
+ }
1646
+
1647
+ refresh();
1648
+ schedule();
1649
+
1650
+ if (change.selectionChanged) {
1651
+ callbacks.onSelection?.(snapshot.selection, model.position());
1652
+ }
1653
+
1654
+ if (change.textChanged) {
1655
+ callbacks.onChange?.(snapshot.value, change, snapshot);
1656
+ }
1657
+ });
1658
+ }
1659
+
1660
+ function textChanged(change: Change) {
1661
+ let local = reparseBlocks();
1662
+
1663
+ if (folds.length) {
1664
+ folds = outerFolds(mapFolds(folds, change.editBatches ?? [], model));
1665
+ local = false;
1666
+ }
1667
+
1668
+ whole = null;
1669
+ unitsDirty ||= !local || secondary;
1670
+ }
1671
+
1672
+ // Client rectangles of [from, to) in a drawn unit's text; a collapsed range gives its caret.
1673
+ function textRects(unit: Unit, from: number, to: number) {
1674
+ let out: Rect[] = [],
1675
+ segments = draw.segments(unit);
1676
+
1677
+ if (!segments || !host) {
1678
+ return out;
1679
+ }
1680
+
1681
+ let range = host.ownerDocument.createRange();
1682
+
1683
+ for (let i = 0, n = segments.length; i < n; i++) {
1684
+ let segment = segments[i],
1685
+ at = segment.block.from + segment.from,
1686
+ end = at + segment.node.length;
1687
+
1688
+ if (end < from || at > to || (from !== to && (end === from || at === to))) {
1689
+ continue;
1690
+ }
1691
+
1692
+ range.setStart(segment.node, clamp(from - at, 0, segment.node.length));
1693
+ range.setEnd(segment.node, clamp(to - at, 0, segment.node.length));
1694
+
1695
+ let rects = range.getClientRects();
1696
+
1697
+ for (let j = 0, m = rects.length; j < m; j++) {
1698
+ out.push({ height: rects[j].height, left: rects[j].left, top: rects[j].top, width: rects[j].width });
1699
+ }
1700
+
1701
+ if (from === to && out.length) {
1702
+ break;
1703
+ }
1704
+ }
1705
+
1706
+ return out;
1707
+ }
1708
+
1709
+ let controller: MarkdownController = {
1710
+ addNextOccurrence: (all = false) => {
1711
+ if (disposed || ime.busy()) {
1712
+ return false;
1713
+ }
1714
+
1715
+ capture();
1716
+
1717
+ let changed = addNextOccurrence(model, all);
1718
+
1719
+ start(true);
1720
+
1721
+ return changed;
1722
+ },
1723
+ bold: () => editable(() => markdownCommand(model, 'bold', kindAt)),
1724
+ closeFind: () => search.close(),
1725
+ dispose: () => {
1726
+ if (disposed) {
1727
+ return;
1728
+ }
1729
+
1730
+ try {
1731
+ ime.flush();
1732
+ }
1733
+ finally {
1734
+ disposed = true;
1735
+
1736
+ if (frame) {
1737
+ cancelAnimationFrame(frame);
1738
+ frame = 0;
1739
+ }
1740
+
1741
+ unsubscribe?.();
1742
+ unsubscribe = undefined;
1743
+ resize?.disconnect();
1744
+ resize = undefined;
1745
+ size.ondisconnect();
1746
+ pendingValue = undefined;
1747
+ }
1748
+ },
1749
+ get document() {
1750
+ return model;
1751
+ },
1752
+ find: (query, next) => search.find(query, next),
1753
+ findNext: () => search.next(),
1754
+ findPrevious: () => search.previous(),
1755
+ focus: () => {
1756
+ if (!disposed) {
1757
+ activate(true);
1758
+ }
1759
+ },
1760
+ fold: (line) => {
1761
+ if (disposed || ime.busy() || options.fold === false) {
1762
+ return false;
1763
+ }
1764
+
1765
+ let target = line === undefined ? model.position().line : line,
1766
+ index = blockAt(blocks, model.lineStart(target - 1)),
1767
+ range = line === undefined || blocks[index].from === model.lineStart(target - 1) ? foldAt(model, blocks, index) : null;
1768
+
1769
+ if (!range || folds.some((fold) => fold.from === range.from && fold.to === range.to)) {
1770
+ return false;
1771
+ }
1772
+
1773
+ folds = outerFolds([...folds, range]);
1774
+
1775
+ if (model.selections.some((selection) => (selection.start >= range.from && selection.start < range.to) || (selection.end > range.from && selection.end <= range.to))) {
1776
+ model.select({ start: range.open ?? range.from });
1777
+ }
1778
+
1779
+ // A field showing the fold's own lines would hide nothing; the block shows folded instead.
1780
+ if (active && range.from < blocks[active.last - 1].to && range.to > active.from) {
1781
+ deactivate();
1782
+ textarea?.blur();
1783
+ }
1784
+
1785
+ unitsDirty = true;
1786
+ schedule();
1787
+
1788
+ return true;
1789
+ },
1790
+ foldAll: () => {
1791
+ if (disposed || ime.busy() || options.fold === false) {
1792
+ return;
1793
+ }
1794
+
1795
+ model.select({ start: 0 });
1796
+ folds = outerFolds(markdownFolds(model, blocks));
1797
+ deactivate();
1798
+ textarea?.blur();
1799
+ unitsDirty = true;
1800
+ schedule();
1801
+ },
1802
+ goToLine: (line, column = 1) => {
1803
+ if (disposed || ime.busy()) {
1804
+ return;
1805
+ }
1806
+
1807
+ model.select({ start: model.offset(line, column) });
1808
+ revealing = true;
1809
+ controller.focus();
1810
+ },
1811
+ get host() {
1812
+ return host!;
1813
+ },
1814
+ indent: () => editable(() => indent(model, options.indent)),
1815
+ insert: (text) => editable(() => insertText(model, text)),
1816
+ italic: () => editable(() => markdownCommand(model, 'italic', kindAt)),
1817
+ lineCommand: (command) => editable(() => lineCommand(model, command)),
1818
+ newline: () => editable(() => markdownCommand(model, 'enter', kindAt)),
1819
+ offsetAt,
1820
+ openFind: (replace = false) => {
1821
+ if (disposed || ime.busy()) {
1822
+ return;
1823
+ }
1824
+
1825
+ jump.state.open = false;
1826
+ search.open(replace);
1827
+ schedule();
1828
+ },
1829
+ openGoToLine: () => {
1830
+ if (disposed || ime.busy()) {
1831
+ return;
1832
+ }
1833
+
1834
+ capture();
1835
+ search.state.open = false;
1836
+ jump.open(model.position().line);
1837
+ },
1838
+ outdent: () => editable(() => indent(model, options.indent, true)),
1839
+ rectAt: (offset) => {
1840
+ if (disposed || offset < 0 || offset > model.value.length || folds.some((fold) => offset >= fold.from && offset < fold.to)) {
1841
+ return null;
1842
+ }
1843
+
1844
+ return clientRect(offset);
1845
+ },
1846
+ redo: () => editable(() => model.redo()),
1847
+ redoSelection: () => {
1848
+ if (disposed || ime.busy()) {
1849
+ return false;
1850
+ }
1851
+
1852
+ let changed = model.redoSelection();
1853
+
1854
+ start(true);
1855
+
1856
+ return changed;
1857
+ },
1858
+ refresh: () => {
1859
+ if (!disposed) {
1860
+ measure();
1861
+ fieldGeometry();
1862
+ unitsDirty = true;
1863
+ schedule();
1864
+ }
1865
+ },
1866
+ replace: (replacement) => search.replace(replacement),
1867
+ replaceAll: (replacement) => search.replaceAll(replacement),
1868
+ save: () => {
1869
+ if (!disposed && !ime.busy()) {
1870
+ callbacks.onSave?.(model.value, model.state);
1871
+ }
1872
+ },
1873
+ select: (next, reveal = true) => {
1874
+ if (disposed || ime.busy()) {
1875
+ return;
1876
+ }
1877
+
1878
+ model.select(next);
1879
+ start(reveal);
1880
+ },
1881
+ selectMany: (ranges, reveal = true) => {
1882
+ if (disposed || ime.busy()) {
1883
+ return;
1884
+ }
1885
+
1886
+ model.selectMany(ranges);
1887
+ start(reveal);
1888
+ },
1889
+ setDocument: (next, settings) => {
1890
+ if (disposed) {
1891
+ return;
1892
+ }
1893
+
1894
+ if (next === model) {
1895
+ controller.setOptions(settings ?? {}, !!settings);
1896
+ return;
1897
+ }
1898
+
1899
+ let focused = editing && !!textarea && host?.ownerDocument.activeElement === textarea;
1900
+
1901
+ // Hiding the field commits a composition to the document it started in.
1902
+ deactivate();
1903
+
1904
+ if (surface) {
1905
+ visited.set(model, { folds, left: metrics.scrollLeft, revision: model.revision, top: metrics.scrollTop });
1906
+ }
1907
+
1908
+ model = next;
1909
+ adopt();
1910
+ controller.setOptions(settings ?? {}, !!settings);
1911
+ present();
1912
+
1913
+ if (focused) {
1914
+ activate(true);
1915
+ }
1916
+ },
1917
+ setOptions: (next, replace = false) => {
1918
+ if (disposed) {
1919
+ return;
1920
+ }
1921
+
1922
+ options = { ...(replace ? {} : options), ...next };
1923
+ options.tabSize = clamp(Math.trunc(options.tabSize ?? 4) || 4, 1, 16);
1924
+
1925
+ if (!options.indent || !/^[\t ]+$/.test(options.indent)) {
1926
+ options.indent = ' ';
1927
+ }
1928
+
1929
+ ui.label = options.label ?? 'Markdown editor';
1930
+ ui.minimap = !!options.minimap;
1931
+ ui.name = options.name ?? '';
1932
+ ui.placeholder = options.placeholder ?? '';
1933
+ ui.readonly = !!options.readonly;
1934
+ ui.spellcheck = options.spellcheck ?? true;
1935
+ ui.tabSize = options.tabSize;
1936
+ ui.wrap = options.wrap !== false;
1937
+ search.status();
1938
+
1939
+ if (options.fold === false) {
1940
+ folds = [];
1941
+ }
1942
+
1943
+ whole = null;
1944
+ fieldGeometry();
1945
+ map.invalidate();
1946
+ unitsDirty = true;
1947
+ schedule();
1948
+ },
1949
+ setValue: (value) => {
1950
+ if (disposed) {
1951
+ return false;
1952
+ }
1953
+
1954
+ if (ime.busy()) {
1955
+ pendingValue = value;
1956
+ return false;
1957
+ }
1958
+
1959
+ return model.setValue(value, { source: 'external' });
1960
+ },
1961
+ get scroller() {
1962
+ return surface!;
1963
+ },
1964
+ get state() {
1965
+ return state as Snapshot;
1966
+ },
1967
+ get textarea() {
1968
+ return textarea!;
1969
+ },
1970
+ toggleComment: () => editable(() => toggleComment(model, options.lineComment ?? false, options.blockComment ?? ['<!--', '-->'])),
1971
+ undo: () => editable(() => model.undo()),
1972
+ undoSelection: () => {
1973
+ if (disposed || ime.busy()) {
1974
+ return false;
1975
+ }
1976
+
1977
+ let changed = model.undoSelection();
1978
+
1979
+ start(true);
1980
+
1981
+ return changed;
1982
+ },
1983
+ unfold: (line = model.position().line) => {
1984
+ if (disposed || ime.busy()) {
1985
+ return false;
1986
+ }
1987
+
1988
+ let next = folds.filter((fold) => fold.line !== line);
1989
+
1990
+ if (next.length === folds.length) {
1991
+ return false;
1992
+ }
1993
+
1994
+ folds = next;
1995
+ unitsDirty = true;
1996
+ schedule();
1997
+
1998
+ return true;
1999
+ },
2000
+ unfoldAll: () => {
2001
+ if (disposed || ime.busy() || !folds.length) {
2002
+ return;
2003
+ }
2004
+
2005
+ folds = [];
2006
+ unitsDirty = true;
2007
+ schedule();
2008
+ }
2009
+ };
2010
+
2011
+ let run = commands({
2012
+ cache: () => syntaxCache(model, 'markdown'),
2013
+ capture,
2014
+ controller: controller as Controller,
2015
+ deleteVisible: (backwards, word) => deleteCharacter(model, backwards, word),
2016
+ get document() {
2017
+ return model;
2018
+ },
2019
+ edit: editable,
2020
+ language: () => 'markdown',
2021
+ move: moveSelection,
2022
+ options: () => options,
2023
+ select: (selection) => {
2024
+ model.select(selection);
2025
+ start(true);
2026
+ }
2027
+ });
2028
+
2029
+ let field: Attributes = {
2030
+ 'aria-describedby': help,
2031
+ 'aria-label': () => ui.label,
2032
+ class: () => ui.input,
2033
+ name: () => ui.name,
2034
+ onbeforeinput: (e: InputEvent) => {
2035
+ if (writing || ime.busy() || e.isComposing || !textarea) {
2036
+ return;
2037
+ }
2038
+
2039
+ capture();
2040
+ revealFolds(!e.inputType.startsWith('history') && !options.readonly);
2041
+
2042
+ before = { end: textarea.selectionEnd, length: textarea.textLength, start: textarea.selectionStart };
2043
+ beforeRanges = model.selections;
2044
+ beforeSelection = model.selection;
2045
+ inputData = e.data;
2046
+ inputType = e.inputType;
2047
+
2048
+ if (e.inputType === 'historyUndo' || e.inputType === 'historyRedo') {
2049
+ if (e.cancelable) {
2050
+ e.preventDefault();
2051
+ e.inputType === 'historyUndo' ? controller.undo() : controller.redo();
2052
+ }
2053
+
2054
+ return;
2055
+ }
2056
+
2057
+ if (!e.cancelable || options.readonly) {
2058
+ return;
2059
+ }
2060
+
2061
+ if (model.selections.length > 1) {
2062
+ if (e.inputType === 'insertText' && e.data !== null) {
2063
+ e.preventDefault();
2064
+ editable(() => insertText(model, e.data!, 'input'));
2065
+ return;
2066
+ }
2067
+
2068
+ if (/^delete(?:Content|Word)(?:Backward|Forward)$/.test(e.inputType)) {
2069
+ e.preventDefault();
2070
+ editable(() => e.inputType === 'deleteContentBackward'
2071
+ ? markdownCommand(model, 'backspace', kindAt)
2072
+ : deleteCharacter(model, e.inputType.endsWith('Backward'), e.inputType.startsWith('deleteWord')));
2073
+ return;
2074
+ }
2075
+ }
2076
+
2077
+ if (e.inputType === 'insertLineBreak' || e.inputType === 'insertParagraph') {
2078
+ e.preventDefault();
2079
+ controller.newline();
2080
+ }
2081
+ else if (e.inputType === 'deleteContentBackward' && editable(() => markdownBackspace(model))) {
2082
+ e.preventDefault();
2083
+ }
2084
+ },
2085
+ oncompositionend: ime.attributes.oncompositionend,
2086
+ oncompositionstart: ime.attributes.oncompositionstart,
2087
+ oncopy: (e: ClipboardEvent) => clip(e, false),
2088
+ oncut: (e: ClipboardEvent) => clip(e, true),
2089
+ ondragstart: gestures.ondragstart,
2090
+ onfocus: () => {
2091
+ if (!editing) {
2092
+ activate(false);
2093
+ }
2094
+
2095
+ capture();
2096
+ },
2097
+ oninput: (e: InputEvent) => {
2098
+ if (writing) {
2099
+ return;
2100
+ }
2101
+
2102
+ if (ime.input(e)) {
2103
+ // The field grows with a composition the document doesn't hold yet.
2104
+ if (textarea && textarea.scrollHeight > ui.height) {
2105
+ ui.height = textarea.scrollHeight;
2106
+ }
2107
+
2108
+ return;
2109
+ }
2110
+
2111
+ if (e.inputType === 'historyUndo' || e.inputType === 'historyRedo') {
2112
+ e.inputType === 'historyUndo' ? controller.undo() : controller.redo();
2113
+ return;
2114
+ }
2115
+
2116
+ accept();
2117
+ },
2118
+ onkeydown: (e: KeyboardEvent) => {
2119
+ gestures.alt(e);
2120
+
2121
+ if (ime.busy() || e.isComposing || e.keyCode === 229) {
2122
+ return;
2123
+ }
2124
+
2125
+ if (options.onCompletionKey?.(e, controller as Controller)) {
2126
+ e.preventDefault();
2127
+ return;
2128
+ }
2129
+
2130
+ if (e.key === 'Escape') {
2131
+ escapeTab = true;
2132
+
2133
+ if (model.selections.length > 1) {
2134
+ e.preventDefault();
2135
+ model.select(model.selection);
2136
+ }
2137
+
2138
+ return;
2139
+ }
2140
+
2141
+ if (e.key === 'Tab' && escapeTab) {
2142
+ escapeTab = false;
2143
+ return;
2144
+ }
2145
+
2146
+ escapeTab = false;
2147
+ capture();
2148
+
2149
+ let mod = apple ? e.metaKey : e.ctrlKey,
2150
+ key = e.key.toLowerCase();
2151
+
2152
+ if (mod && !e.altKey && !e.shiftKey && (key === 'b' || key === 'i')) {
2153
+ e.preventDefault();
2154
+ key === 'b' ? controller.bold() : controller.italic();
2155
+ return;
2156
+ }
2157
+
2158
+ let command = keys(e);
2159
+
2160
+ if (command) {
2161
+ e.preventDefault();
2162
+ run(command, e);
2163
+ return;
2164
+ }
2165
+
2166
+ if (mod) {
2167
+ if (e.altKey || !NAVIGATION.test(e.key)) {
2168
+ return;
2169
+ }
2170
+
2171
+ if (/^(End|Home)$/.test(e.key) || (apple && /^Arrow(Down|Up)$/.test(e.key))) {
2172
+ e.preventDefault();
2173
+ moveSelection(e.key, e.shiftKey, false, false, true);
2174
+ }
2175
+ else if (model.selections.length > 1 || (/^Arrow(Left|Right)$/.test(e.key) && leaves(e.key))) {
2176
+ e.preventDefault();
2177
+ moveSelection(e.key, e.shiftKey, true);
2178
+ }
2179
+
2180
+ return;
2181
+ }
2182
+
2183
+ if (e.key === 'Tab' && !e.altKey && options.captureTab !== false && !options.readonly) {
2184
+ e.preventDefault();
2185
+ e.shiftKey ? controller.outdent() : controller.indent();
2186
+ }
2187
+ else if (e.key === 'Enter' && !e.altKey && !options.readonly) {
2188
+ e.preventDefault();
2189
+ controller.newline();
2190
+ }
2191
+ else if ((e.key === 'Backspace' || e.key === 'Delete') && !options.readonly && model.selections.length > 1) {
2192
+ e.preventDefault();
2193
+ editable(() => e.key === 'Backspace' && !e.altKey
2194
+ ? markdownCommand(model, 'backspace', kindAt)
2195
+ : deleteCharacter(model, e.key === 'Backspace', e.altKey));
2196
+ }
2197
+ else if ((e.key === 'Backspace' || e.key === 'Delete') && !options.readonly && active) {
2198
+ let selection = model.selection,
2199
+ collapsed = selection.start === selection.end;
2200
+
2201
+ if (e.key === 'Backspace' && collapsed && editable(() => markdownBackspace(model))) {
2202
+ e.preventDefault();
2203
+ }
2204
+ else if (e.key === 'Backspace' && collapsed && selection.start === active.from && active.from > 0) {
2205
+ // The line break before the field isn't in it; joining lines takes the document.
2206
+ e.preventDefault();
2207
+ editable(() => deleteCharacter(model, true, e.altKey));
2208
+ }
2209
+ else if (e.key === 'Delete' && collapsed && selection.end === active.to && active.to < model.value.length) {
2210
+ e.preventDefault();
2211
+ editable(() => deleteCharacter(model, false, e.altKey));
2212
+ }
2213
+ }
2214
+ else if (NAVIGATION.test(e.key) && (model.selections.length > 1 || e.key.startsWith('Page') || leaves(e.key))) {
2215
+ e.preventDefault();
2216
+ moveSelection(e.key, e.shiftKey, e.altKey);
2217
+ }
2218
+ },
2219
+ onkeyup: (e: KeyboardEvent) => {
2220
+ gestures.alt(e);
2221
+ capture();
2222
+ },
2223
+ onpaste: (e: ClipboardEvent) => {
2224
+ if (ime.busy() || options.readonly || !e.clipboardData) {
2225
+ return;
2226
+ }
2227
+
2228
+ e.preventDefault();
2229
+
2230
+ let text = read(e.clipboardData, model.selections.length);
2231
+
2232
+ editable(() => insertText(model, text, 'paste'));
2233
+ },
2234
+ onpointerdown: () => {
2235
+ goals = [];
2236
+ pinned = true;
2237
+ },
2238
+ onpointerup: () => {
2239
+ pinned = false;
2240
+ capture();
2241
+ },
2242
+ onselect: capture,
2243
+ onselectionchange: capture,
2244
+ placeholder: () => ui.placeholder,
2245
+ readOnly: () => ui.readonly,
2246
+ spellcheck: () => ui.spellcheck,
2247
+ style: () => `${ui.style} height: ${ui.height}px;`,
2248
+ wrap: () => ui.wrap ? 'soft' : 'off'
2249
+ };
2250
+
2251
+
2252
+ let body: Attributes = {
2253
+ 'aria-label': () => ui.label,
2254
+ onclick: (e: MouseEvent) => {
2255
+ // Links edit in place on a plain click and open with the platform's modifier.
2256
+ if (!(e.ctrlKey || e.metaKey) && (e.target as Element).closest('a')) {
2257
+ e.preventDefault();
2258
+ }
2259
+ },
2260
+ onconnect: (element: HTMLElement) => {
2261
+ surface = element;
2262
+ connect();
2263
+ },
2264
+ ondragend: gestures.ondragend,
2265
+ ondragleave: gestures.ondragleave,
2266
+ ondragover: gestures.ondragover,
2267
+ ondrop: gestures.ondrop,
2268
+ onfocus: (e: FocusEvent) => {
2269
+ if (e.target === surface) {
2270
+ controller.focus();
2271
+ }
2272
+ },
2273
+ onlostpointercapture: () => {
2274
+ gestures.end();
2275
+ finish();
2276
+ },
2277
+ onmousedown: (e: MouseEvent) => {
2278
+ if (e.target === textarea || (e.target as Element).closest('.markdown-editor-block, .markdown-editor-active')) {
2279
+ return;
2280
+ }
2281
+
2282
+ press(e, null);
2283
+ },
2284
+ onpointercancel: () => {
2285
+ gestures.end();
2286
+ finish();
2287
+ },
2288
+ onpointerdown: (e: PointerEvent) => {
2289
+ pointerId = e.pointerId;
2290
+ gestures.onpointerdown(e);
2291
+ },
2292
+ onpointermove: (e: PointerEvent) => {
2293
+ gestures.onpointermove(e);
2294
+
2295
+ if (!drag) {
2296
+ return;
2297
+ }
2298
+
2299
+ let offset = offsetAt(e.clientX, e.clientY);
2300
+
2301
+ if (offset !== null && offset !== drag.head) {
2302
+ drag.head = offset;
2303
+ schedule();
2304
+ }
2305
+ },
2306
+ onpointerup: () => {
2307
+ pinned = false;
2308
+ pointerId = -1;
2309
+ gestures.end();
2310
+ finish();
2311
+ },
2312
+ onscroll: () => {
2313
+ metrics.scrollLeft = surface!.scrollLeft;
2314
+ metrics.scrollTop = surface!.scrollTop;
2315
+ schedule();
2316
+ },
2317
+ tabindex: () => ui.editing ? -1 : 0
2318
+ };
2319
+
2320
+ let template = (attributes?: Attributes) => html`
2321
+ <div
2322
+ class='markdown-editor'
2323
+ ${attributes}
2324
+ ${{
2325
+ class: [
2326
+ () => ime.state.composing && 'markdown-editor--composing',
2327
+ () => gestures.state.crosshair && 'markdown-editor--crosshair',
2328
+ () => ui.minimap && 'markdown-editor--minimap',
2329
+ () => !ui.wrap && 'markdown-editor--nowrap',
2330
+ () => ui.readonly && 'markdown-editor--readonly'
2331
+ ],
2332
+ onconnect: (element: HTMLElement) => {
2333
+ host = element;
2334
+ connect();
2335
+ },
2336
+ ondisconnect: () => controller.dispose(),
2337
+ onfocusout: (e: FocusEvent) => {
2338
+ let next = e.relatedTarget as Node | null;
2339
+
2340
+ if (!next || !host?.contains(next)) {
2341
+ capture();
2342
+ deactivate();
2343
+ }
2344
+ },
2345
+ style: () => `--tab-size: ${ui.tabSize};`
2346
+ }}
2347
+ >
2348
+ ${search.template()}
2349
+ ${jump.template()}
2350
+ <div class='markdown-editor-body' ${size}>
2351
+ <div class='markdown-editor-surface --scrollbar' ${body}>
2352
+ <div aria-hidden='true' class='markdown-editor-overlay'>
2353
+ ${html.reactive(decorations, (decoration) => html`
2354
+ <div ${{ class: () => decoration.kind, style: () => decoration.style }}></div>
2355
+ `)}
2356
+ </div>
2357
+ <div aria-hidden='true' class='markdown-editor-spacer' ${{ style: () => `height: ${ui.top}px;` }}></div>
2358
+ ${html.reactive(listed.before, draw.template)}
2359
+ <div aria-hidden='true' class='markdown-editor-spacer' ${{ style: () => `height: ${ui.between}px;` }}></div>
2360
+ <div class='markdown-editor-active' ${{ class: () => ui.editing && '--active' }}>
2361
+ <button
2362
+ aria-label='Fold block'
2363
+ class='markdown-editor-fold'
2364
+ tabindex='-1'
2365
+ type='button'
2366
+ ${{
2367
+ class: () => !ui.foldable && 'markdown-editor-fold--none',
2368
+ onclick: () => {
2369
+ if (active) {
2370
+ controller.fold(model.lineAt(blocks[active.first].from) + 1);
2371
+ }
2372
+ },
2373
+ onmousedown: prevent
2374
+ }}
2375
+ >
2376
+ ${icon({ 'aria-hidden': 'true', class: 'markdown-editor-fold-icon' }, chevron)}
2377
+ </button>
2378
+ <textarea
2379
+ autocapitalize='off'
2380
+ autocomplete='off'
2381
+ autocorrect='off'
2382
+ dir='ltr'
2383
+ ${field}
2384
+ ${{
2385
+ onconnect: (element: HTMLTextAreaElement) => {
2386
+ textarea = element;
2387
+ connect();
2388
+ }
2389
+ }}
2390
+ ></textarea>
2391
+ </div>
2392
+ <div aria-hidden='true' class='markdown-editor-spacer' ${{ style: () => `height: ${ui.next}px;` }}></div>
2393
+ ${html.reactive(listed.after, draw.template)}
2394
+ <div aria-hidden='true' class='markdown-editor-spacer' ${{ style: () => `height: ${ui.bottom}px;` }}></div>
2395
+ </div>
2396
+ ${map.template()}
2397
+ <span
2398
+ aria-hidden='true'
2399
+ class='markdown-editor-ruler'
2400
+ ${{
2401
+ onconnect: (element: HTMLElement) => {
2402
+ ruler = element;
2403
+ connect();
2404
+ }
2405
+ }}
2406
+ >0000000000000000000000000000000000000000000000000000000000000000</span>
2407
+ </div>
2408
+ <span class='markdown-editor-help' id='${help}'>Press Escape then Tab to move focus out of the editor.</span>
2409
+ </div>
2410
+ `;
2411
+
2412
+ return { controller, template };
2413
+ };
2414
+
2415
+
2416
+ export { view };
2417
+ export type { MarkdownController, MarkdownOptions };