@nldd/design-system 0.8.64 → 0.8.65

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 (459) hide show
  1. package/dist/components/actions/button/button.d.ts.map +1 -1
  2. package/dist/components/actions/button/button.js +7 -6
  3. package/dist/components/actions/button/button.js.map +1 -1
  4. package/dist/components/actions/button/button.styles.d.ts.map +1 -1
  5. package/dist/components/actions/button/button.styles.js +9 -5
  6. package/dist/components/actions/button/button.styles.js.map +1 -1
  7. package/dist/components/actions/button-bar/button-bar.d.ts.map +1 -1
  8. package/dist/components/actions/button-bar/button-bar.js +3 -2
  9. package/dist/components/actions/button-bar/button-bar.js.map +1 -1
  10. package/dist/components/actions/button-group/button-group.d.ts.map +1 -1
  11. package/dist/components/actions/button-group/button-group.js +3 -2
  12. package/dist/components/actions/button-group/button-group.js.map +1 -1
  13. package/dist/components/actions/icon-button/icon-button.d.ts +4 -0
  14. package/dist/components/actions/icon-button/icon-button.d.ts.map +1 -1
  15. package/dist/components/actions/icon-button/icon-button.js +13 -5
  16. package/dist/components/actions/icon-button/icon-button.js.map +1 -1
  17. package/dist/components/actions/icon-button/icon-button.styles.d.ts.map +1 -1
  18. package/dist/components/actions/icon-button/icon-button.styles.js +15 -10
  19. package/dist/components/actions/icon-button/icon-button.styles.js.map +1 -1
  20. package/dist/components/actions/icon-button/icon-button.template.d.ts.map +1 -1
  21. package/dist/components/actions/icon-button/icon-button.template.js +2 -0
  22. package/dist/components/actions/icon-button/icon-button.template.js.map +1 -1
  23. package/dist/components/actions/menu/menu.d.ts +1 -0
  24. package/dist/components/actions/menu/menu.d.ts.map +1 -1
  25. package/dist/components/actions/menu/menu.js +33 -15
  26. package/dist/components/actions/menu/menu.js.map +1 -1
  27. package/dist/components/actions/menu/menu.styles.d.ts.map +1 -1
  28. package/dist/components/actions/menu/menu.styles.js +8 -0
  29. package/dist/components/actions/menu/menu.styles.js.map +1 -1
  30. package/dist/components/actions/split-button/split-button.d.ts.map +1 -1
  31. package/dist/components/actions/split-button/split-button.js +5 -4
  32. package/dist/components/actions/split-button/split-button.js.map +1 -1
  33. package/dist/components/actions/toolbar/toolbar.d.ts +11 -0
  34. package/dist/components/actions/toolbar/toolbar.d.ts.map +1 -1
  35. package/dist/components/actions/toolbar/toolbar.js +112 -40
  36. package/dist/components/actions/toolbar/toolbar.js.map +1 -1
  37. package/dist/components/actions/toolbar/toolbar.styles.d.ts.map +1 -1
  38. package/dist/components/actions/toolbar/toolbar.styles.js +3 -12
  39. package/dist/components/actions/toolbar/toolbar.styles.js.map +1 -1
  40. package/dist/components/components.js +104 -102
  41. package/dist/components/content/blockquote/blockquote.styles.d.ts.map +1 -1
  42. package/dist/components/content/blockquote/blockquote.styles.js +0 -3
  43. package/dist/components/content/blockquote/blockquote.styles.js.map +1 -1
  44. package/dist/components/content/byline/byline.d.ts.map +1 -1
  45. package/dist/components/content/byline/byline.js +3 -2
  46. package/dist/components/content/byline/byline.js.map +1 -1
  47. package/dist/components/content/code-viewer/code-viewer.d.ts +24 -64
  48. package/dist/components/content/code-viewer/code-viewer.d.ts.map +1 -1
  49. package/dist/components/content/code-viewer/code-viewer.js +239 -156
  50. package/dist/components/content/code-viewer/code-viewer.js.map +1 -1
  51. package/dist/components/content/code-viewer/code-viewer.styles.d.ts.map +1 -1
  52. package/dist/components/content/code-viewer/code-viewer.styles.js +33 -92
  53. package/dist/components/content/code-viewer/code-viewer.styles.js.map +1 -1
  54. package/dist/components/content/code-viewer/code-viewer.template.d.ts.map +1 -1
  55. package/dist/components/content/code-viewer/code-viewer.template.js +10 -29
  56. package/dist/components/content/code-viewer/code-viewer.template.js.map +1 -1
  57. package/dist/components/content/icon/icon-aliases.d.ts.map +1 -1
  58. package/dist/components/content/icon/icon-aliases.js +22 -1
  59. package/dist/components/content/icon/icon-aliases.js.map +1 -1
  60. package/dist/components/content/icon/icon-registry.d.ts.map +1 -1
  61. package/dist/components/content/icon/icon-registry.js +18 -0
  62. package/dist/components/content/icon/icon-registry.js.map +1 -1
  63. package/dist/components/content/icon/icon.d.ts.map +1 -1
  64. package/dist/components/content/icon/icon.js +3 -2
  65. package/dist/components/content/icon/icon.js.map +1 -1
  66. package/dist/components/content/image/image.d.ts.map +1 -1
  67. package/dist/components/content/image/image.js +7 -6
  68. package/dist/components/content/image/image.js.map +1 -1
  69. package/dist/components/content/image/image.styles.d.ts.map +1 -1
  70. package/dist/components/content/image/image.styles.js +2 -6
  71. package/dist/components/content/image/image.styles.js.map +1 -1
  72. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.d.ts.map +1 -1
  73. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.js +8 -7
  74. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
  75. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.styles.d.ts.map +1 -1
  76. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.styles.js +5 -1
  77. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.styles.js.map +1 -1
  78. package/dist/components/content/rich-text/rich-text.d.ts.map +1 -1
  79. package/dist/components/content/rich-text/rich-text.js +3 -2
  80. package/dist/components/content/rich-text/rich-text.js.map +1 -1
  81. package/dist/components/content/tag/tag.d.ts.map +1 -1
  82. package/dist/components/content/tag/tag.js +5 -4
  83. package/dist/components/content/tag/tag.js.map +1 -1
  84. package/dist/components/content/title/title.d.ts.map +1 -1
  85. package/dist/components/content/title/title.js +2 -1
  86. package/dist/components/content/title/title.js.map +1 -1
  87. package/dist/components/content/token/token.d.ts +70 -0
  88. package/dist/components/content/token/token.d.ts.map +1 -0
  89. package/dist/components/content/token/token.js +170 -0
  90. package/dist/components/content/token/token.js.map +1 -0
  91. package/dist/components/content/token/token.styles.d.ts.map +1 -0
  92. package/dist/components/content/token/token.styles.js +122 -0
  93. package/dist/components/content/token/token.styles.js.map +1 -0
  94. package/dist/components/content/token/token.template.d.ts +6 -0
  95. package/dist/components/content/token/token.template.d.ts.map +1 -0
  96. package/dist/components/content/token/token.template.js +47 -0
  97. package/dist/components/content/token/token.template.js.map +1 -0
  98. package/dist/components/content/tooltip/tooltip.d.ts.map +1 -1
  99. package/dist/components/content/tooltip/tooltip.js +14 -5
  100. package/dist/components/content/tooltip/tooltip.js.map +1 -1
  101. package/dist/components/content/tooltip/tooltip.styles.d.ts.map +1 -1
  102. package/dist/components/content/tooltip/tooltip.styles.js +11 -0
  103. package/dist/components/content/tooltip/tooltip.styles.js.map +1 -1
  104. package/dist/components/gherkin-DhZlEZiy.js +115 -0
  105. package/dist/components/index-BI4lrehT.js +66595 -0
  106. package/dist/components/index-BcdqzZql.js +703 -0
  107. package/dist/components/index-BlMqctke.js +81 -0
  108. package/dist/components/index-BseMFLNF.js +688 -0
  109. package/dist/components/index-ChjtFo6I.js +177 -0
  110. package/dist/components/index-D3NSlPL5.js +405 -0
  111. package/dist/components/index-D7B3n3QJ.js +384 -0
  112. package/dist/components/index.d.ts +20 -18
  113. package/dist/components/index.d.ts.map +1 -1
  114. package/dist/components/index.js +20 -18
  115. package/dist/components/index.js.map +1 -1
  116. package/dist/components/inputs/code-editor/code-editor.d.ts +58 -29
  117. package/dist/components/inputs/code-editor/code-editor.d.ts.map +1 -1
  118. package/dist/components/inputs/code-editor/code-editor.js +241 -52
  119. package/dist/components/inputs/code-editor/code-editor.js.map +1 -1
  120. package/dist/components/inputs/code-editor/code-editor.styles.d.ts.map +1 -1
  121. package/dist/components/inputs/code-editor/code-editor.styles.js +58 -46
  122. package/dist/components/inputs/code-editor/code-editor.styles.js.map +1 -1
  123. package/dist/components/inputs/code-editor/code-editor.template.d.ts +1 -1
  124. package/dist/components/inputs/code-editor/code-editor.template.d.ts.map +1 -1
  125. package/dist/components/inputs/code-editor/code-editor.template.js +5 -22
  126. package/dist/components/inputs/code-editor/code-editor.template.js.map +1 -1
  127. package/dist/components/inputs/combo-box/combo-box.d.ts +15 -4
  128. package/dist/components/inputs/combo-box/combo-box.d.ts.map +1 -1
  129. package/dist/components/inputs/combo-box/combo-box.js +53 -9
  130. package/dist/components/inputs/combo-box/combo-box.js.map +1 -1
  131. package/dist/components/inputs/dropdown/dropdown.d.ts.map +1 -1
  132. package/dist/components/inputs/dropdown/dropdown.js +2 -1
  133. package/dist/components/inputs/dropdown/dropdown.js.map +1 -1
  134. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.d.ts +1 -1
  135. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.d.ts.map +1 -1
  136. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.js +6 -5
  137. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.js.map +1 -1
  138. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.d.ts.map +1 -1
  139. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.js +8 -11
  140. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.js.map +1 -1
  141. package/dist/components/inputs/number-field/number-field.d.ts.map +1 -1
  142. package/dist/components/inputs/number-field/number-field.js +2 -1
  143. package/dist/components/inputs/number-field/number-field.js.map +1 -1
  144. package/dist/components/inputs/password-field/password-field.d.ts.map +1 -1
  145. package/dist/components/inputs/password-field/password-field.js +3 -2
  146. package/dist/components/inputs/password-field/password-field.js.map +1 -1
  147. package/dist/components/inputs/radio-button-group/radio-button-group.js +1 -1
  148. package/dist/components/inputs/radio-button-group/radio-button-group.js.map +1 -1
  149. package/dist/components/inputs/search-field/search-field.d.ts.map +1 -1
  150. package/dist/components/inputs/search-field/search-field.js +2 -1
  151. package/dist/components/inputs/search-field/search-field.js.map +1 -1
  152. package/dist/components/inputs/segmented-control/segmented-control.d.ts +1 -1
  153. package/dist/components/inputs/segmented-control/segmented-control.d.ts.map +1 -1
  154. package/dist/components/inputs/segmented-control/segmented-control.js +10 -9
  155. package/dist/components/inputs/segmented-control/segmented-control.js.map +1 -1
  156. package/dist/components/inputs/segmented-control/segmented-control.styles.d.ts.map +1 -1
  157. package/dist/components/inputs/segmented-control/segmented-control.styles.js +70 -36
  158. package/dist/components/inputs/segmented-control/segmented-control.styles.js.map +1 -1
  159. package/dist/components/inputs/stepper/stepper.d.ts.map +1 -1
  160. package/dist/components/inputs/stepper/stepper.js +2 -1
  161. package/dist/components/inputs/stepper/stepper.js.map +1 -1
  162. package/dist/components/inputs/switch/switch.d.ts.map +1 -1
  163. package/dist/components/inputs/switch/switch.js +2 -1
  164. package/dist/components/inputs/switch/switch.js.map +1 -1
  165. package/dist/components/inputs/text-editor/text-editor.annotation-sentinels.d.ts +51 -0
  166. package/dist/components/inputs/text-editor/text-editor.annotation-sentinels.d.ts.map +1 -0
  167. package/dist/components/inputs/text-editor/text-editor.annotation-sentinels.js +148 -0
  168. package/dist/components/inputs/text-editor/text-editor.annotation-sentinels.js.map +1 -0
  169. package/dist/components/inputs/text-editor/text-editor.annotations.d.ts +47 -0
  170. package/dist/components/inputs/text-editor/text-editor.annotations.d.ts.map +1 -0
  171. package/dist/components/inputs/text-editor/text-editor.annotations.js +327 -0
  172. package/dist/components/inputs/text-editor/text-editor.annotations.js.map +1 -0
  173. package/dist/components/inputs/text-editor/text-editor.caret.d.ts +13 -0
  174. package/dist/components/inputs/text-editor/text-editor.caret.d.ts.map +1 -0
  175. package/dist/components/inputs/text-editor/text-editor.caret.js +27 -0
  176. package/dist/components/inputs/text-editor/text-editor.caret.js.map +1 -0
  177. package/dist/components/inputs/text-editor/text-editor.commands.d.ts +61 -0
  178. package/dist/components/inputs/text-editor/text-editor.commands.d.ts.map +1 -0
  179. package/dist/components/inputs/text-editor/text-editor.commands.js +376 -0
  180. package/dist/components/inputs/text-editor/text-editor.commands.js.map +1 -0
  181. package/dist/components/inputs/text-editor/text-editor.d.ts +241 -0
  182. package/dist/components/inputs/text-editor/text-editor.d.ts.map +1 -0
  183. package/dist/components/inputs/text-editor/text-editor.drag.d.ts +30 -0
  184. package/dist/components/inputs/text-editor/text-editor.drag.d.ts.map +1 -0
  185. package/dist/components/inputs/text-editor/text-editor.drag.js +231 -0
  186. package/dist/components/inputs/text-editor/text-editor.drag.js.map +1 -0
  187. package/dist/components/inputs/text-editor/text-editor.i18n.d.ts +8 -0
  188. package/dist/components/inputs/text-editor/text-editor.i18n.d.ts.map +1 -0
  189. package/dist/components/inputs/text-editor/text-editor.i18n.js +13 -0
  190. package/dist/components/inputs/text-editor/text-editor.i18n.js.map +1 -0
  191. package/dist/components/inputs/text-editor/text-editor.js +782 -0
  192. package/dist/components/inputs/text-editor/text-editor.js.map +1 -0
  193. package/dist/components/inputs/text-editor/text-editor.links.d.ts +18 -0
  194. package/dist/components/inputs/text-editor/text-editor.links.d.ts.map +1 -0
  195. package/dist/components/inputs/text-editor/text-editor.links.js +147 -0
  196. package/dist/components/inputs/text-editor/text-editor.links.js.map +1 -0
  197. package/dist/components/inputs/text-editor/text-editor.markdown.d.ts +20 -0
  198. package/dist/components/inputs/text-editor/text-editor.markdown.d.ts.map +1 -0
  199. package/dist/components/inputs/text-editor/text-editor.markdown.js +372 -0
  200. package/dist/components/inputs/text-editor/text-editor.markdown.js.map +1 -0
  201. package/dist/components/inputs/text-editor/text-editor.mentions.d.ts +32 -0
  202. package/dist/components/inputs/text-editor/text-editor.mentions.d.ts.map +1 -0
  203. package/dist/components/inputs/text-editor/text-editor.mentions.js +153 -0
  204. package/dist/components/inputs/text-editor/text-editor.mentions.js.map +1 -0
  205. package/dist/components/inputs/text-editor/text-editor.ordered-list.d.ts +12 -0
  206. package/dist/components/inputs/text-editor/text-editor.ordered-list.d.ts.map +1 -0
  207. package/dist/components/inputs/text-editor/text-editor.ordered-list.js +85 -0
  208. package/dist/components/inputs/text-editor/text-editor.ordered-list.js.map +1 -0
  209. package/dist/components/inputs/text-editor/text-editor.styles.d.ts +2 -0
  210. package/dist/components/inputs/text-editor/text-editor.styles.d.ts.map +1 -0
  211. package/dist/components/inputs/text-editor/text-editor.styles.js +592 -0
  212. package/dist/components/inputs/text-editor/text-editor.styles.js.map +1 -0
  213. package/dist/components/inputs/text-editor/text-editor.template.d.ts +4 -0
  214. package/dist/components/inputs/text-editor/text-editor.template.d.ts.map +1 -0
  215. package/dist/components/inputs/text-editor/text-editor.template.js +7 -0
  216. package/dist/components/inputs/text-editor/text-editor.template.js.map +1 -0
  217. package/dist/components/inputs/text-field/text-field.d.ts.map +1 -1
  218. package/dist/components/inputs/text-field/text-field.js +3 -2
  219. package/dist/components/inputs/text-field/text-field.js.map +1 -1
  220. package/dist/components/inputs/toggle-button/toggle-button.d.ts.map +1 -1
  221. package/dist/components/inputs/toggle-button/toggle-button.js +4 -3
  222. package/dist/components/inputs/toggle-button/toggle-button.js.map +1 -1
  223. package/dist/components/inputs/toggle-button/toggle-button.styles.d.ts.map +1 -1
  224. package/dist/components/inputs/toggle-button/toggle-button.styles.js +14 -10
  225. package/dist/components/inputs/toggle-button/toggle-button.styles.js.map +1 -1
  226. package/dist/components/inputs/toggle-button-group/toggle-button-group.d.ts +1 -1
  227. package/dist/components/inputs/toggle-button-group/toggle-button-group.d.ts.map +1 -1
  228. package/dist/components/inputs/toggle-button-group/toggle-button-group.js +5 -4
  229. package/dist/components/inputs/toggle-button-group/toggle-button-group.js.map +1 -1
  230. package/dist/components/inputs/token-field/token-field.d.ts +257 -0
  231. package/dist/components/inputs/token-field/token-field.d.ts.map +1 -0
  232. package/dist/components/inputs/token-field/token-field.i18n.d.ts +9 -0
  233. package/dist/components/inputs/token-field/token-field.i18n.d.ts.map +1 -0
  234. package/dist/components/inputs/token-field/token-field.i18n.js +8 -0
  235. package/dist/components/inputs/token-field/token-field.i18n.js.map +1 -0
  236. package/dist/components/inputs/token-field/token-field.js +877 -0
  237. package/dist/components/inputs/token-field/token-field.js.map +1 -0
  238. package/dist/components/inputs/token-field/token-field.styles.d.ts +2 -0
  239. package/dist/components/inputs/token-field/token-field.styles.d.ts.map +1 -0
  240. package/dist/components/inputs/token-field/token-field.styles.js +194 -0
  241. package/dist/components/inputs/token-field/token-field.styles.js.map +1 -0
  242. package/dist/components/inputs/token-field/token-field.template.d.ts +8 -0
  243. package/dist/components/inputs/token-field/token-field.template.d.ts.map +1 -0
  244. package/dist/components/inputs/token-field/token-field.template.js +136 -0
  245. package/dist/components/inputs/token-field/token-field.template.js.map +1 -0
  246. package/dist/components/layout/app-view/app-view.d.ts.map +1 -1
  247. package/dist/components/layout/app-view/app-view.js +2 -1
  248. package/dist/components/layout/app-view/app-view.js.map +1 -1
  249. package/dist/components/layout/box/box.d.ts.map +1 -1
  250. package/dist/components/layout/box/box.js +2 -1
  251. package/dist/components/layout/box/box.js.map +1 -1
  252. package/dist/components/layout/box/box.styles.d.ts.map +1 -1
  253. package/dist/components/layout/box/box.styles.js +1 -6
  254. package/dist/components/layout/box/box.styles.js.map +1 -1
  255. package/dist/components/layout/collection/collection.d.ts +5 -0
  256. package/dist/components/layout/collection/collection.d.ts.map +1 -1
  257. package/dist/components/layout/collection/collection.js +17 -1
  258. package/dist/components/layout/collection/collection.js.map +1 -1
  259. package/dist/components/layout/collection/collection.styles.d.ts.map +1 -1
  260. package/dist/components/layout/collection/collection.styles.js +18 -17
  261. package/dist/components/layout/collection/collection.styles.js.map +1 -1
  262. package/dist/components/layout/page-footer/page-footer.d.ts.map +1 -1
  263. package/dist/components/layout/page-footer/page-footer.js +2 -1
  264. package/dist/components/layout/page-footer/page-footer.js.map +1 -1
  265. package/dist/components/layout/page-sections/hero/hero.d.ts +7 -23
  266. package/dist/components/layout/page-sections/hero/hero.d.ts.map +1 -1
  267. package/dist/components/layout/page-sections/hero/hero.js +12 -73
  268. package/dist/components/layout/page-sections/hero/hero.js.map +1 -1
  269. package/dist/components/layout/page-sections/hero/hero.styles.d.ts.map +1 -1
  270. package/dist/components/layout/page-sections/hero/hero.styles.js +13 -159
  271. package/dist/components/layout/page-sections/hero/hero.styles.js.map +1 -1
  272. package/dist/components/layout/popover/popover.d.ts +1 -0
  273. package/dist/components/layout/popover/popover.d.ts.map +1 -1
  274. package/dist/components/layout/popover/popover.js +14 -1
  275. package/dist/components/layout/popover/popover.js.map +1 -1
  276. package/dist/components/layout/popover/popover.styles.d.ts.map +1 -1
  277. package/dist/components/layout/popover/popover.styles.js +11 -0
  278. package/dist/components/layout/popover/popover.styles.js.map +1 -1
  279. package/dist/components/layout/sheet/sheet.d.ts +1 -1
  280. package/dist/components/layout/sheet/sheet.d.ts.map +1 -1
  281. package/dist/components/layout/sheet/sheet.js +16 -6
  282. package/dist/components/layout/sheet/sheet.js.map +1 -1
  283. package/dist/components/layout/sheet/sheet.styles.d.ts.map +1 -1
  284. package/dist/components/layout/sheet/sheet.styles.js +60 -83
  285. package/dist/components/layout/sheet/sheet.styles.js.map +1 -1
  286. package/dist/components/layout/spacer/spacer.d.ts.map +1 -1
  287. package/dist/components/layout/spacer/spacer.js +2 -1
  288. package/dist/components/layout/spacer/spacer.js.map +1 -1
  289. package/dist/components/layout/spacer/spacer.styles.d.ts.map +1 -1
  290. package/dist/components/layout/spacer/spacer.styles.js +0 -1
  291. package/dist/components/layout/spacer/spacer.styles.js.map +1 -1
  292. package/dist/components/layout/split-views/split-view-divider/split-view-divider.d.ts.map +1 -1
  293. package/dist/components/layout/split-views/split-view-divider/split-view-divider.js +2 -1
  294. package/dist/components/layout/split-views/split-view-divider/split-view-divider.js.map +1 -1
  295. package/dist/components/layout/split-views/split-view-divider/split-view-divider.styles.js +10 -10
  296. package/dist/components/layout/window/window.d.ts.map +1 -1
  297. package/dist/components/layout/window/window.js +11 -2
  298. package/dist/components/layout/window/window.js.map +1 -1
  299. package/dist/components/lists-and-tables/cells/cell/cell.d.ts.map +1 -1
  300. package/dist/components/lists-and-tables/cells/cell/cell.js +4 -3
  301. package/dist/components/lists-and-tables/cells/cell/cell.js.map +1 -1
  302. package/dist/components/lists-and-tables/cells/description-cell/description-cell.d.ts.map +1 -1
  303. package/dist/components/lists-and-tables/cells/description-cell/description-cell.js +3 -2
  304. package/dist/components/lists-and-tables/cells/description-cell/description-cell.js.map +1 -1
  305. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.d.ts.map +1 -1
  306. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.js +2 -1
  307. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.js.map +1 -1
  308. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.d.ts.map +1 -1
  309. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.js +3 -2
  310. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.js.map +1 -1
  311. package/dist/components/lists-and-tables/cells/text-cell/text-cell.d.ts.map +1 -1
  312. package/dist/components/lists-and-tables/cells/text-cell/text-cell.js +10 -9
  313. package/dist/components/lists-and-tables/cells/text-cell/text-cell.js.map +1 -1
  314. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.d.ts.map +1 -1
  315. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.js +3 -2
  316. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.js.map +1 -1
  317. package/dist/components/lists-and-tables/cells/title-cell/title-cell.d.ts.map +1 -1
  318. package/dist/components/lists-and-tables/cells/title-cell/title-cell.js +9 -8
  319. package/dist/components/lists-and-tables/cells/title-cell/title-cell.js.map +1 -1
  320. package/dist/components/lists-and-tables/list/list.d.ts.map +1 -1
  321. package/dist/components/lists-and-tables/list/list.js +5 -4
  322. package/dist/components/lists-and-tables/list/list.js.map +1 -1
  323. package/dist/components/lists-and-tables/list/list.styles.d.ts.map +1 -1
  324. package/dist/components/lists-and-tables/list/list.styles.js +3 -2
  325. package/dist/components/lists-and-tables/list/list.styles.js.map +1 -1
  326. package/dist/components/lists-and-tables/list-item/list-item.d.ts.map +1 -1
  327. package/dist/components/lists-and-tables/list-item/list-item.js +2 -1
  328. package/dist/components/lists-and-tables/list-item/list-item.js.map +1 -1
  329. package/dist/components/lists-and-tables/table/table.d.ts.map +1 -1
  330. package/dist/components/lists-and-tables/table/table.js +4 -3
  331. package/dist/components/lists-and-tables/table/table.js.map +1 -1
  332. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  333. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +2 -1
  334. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  335. package/dist/components/navigation/document-tab-bar/document-tab-bar.d.ts.map +1 -1
  336. package/dist/components/navigation/document-tab-bar/document-tab-bar.js +5 -4
  337. package/dist/components/navigation/document-tab-bar/document-tab-bar.js.map +1 -1
  338. package/dist/components/navigation/link/link.d.ts.map +1 -1
  339. package/dist/components/navigation/link/link.js +2 -1
  340. package/dist/components/navigation/link/link.js.map +1 -1
  341. package/dist/components/navigation/menu-bar/menu-bar.d.ts.map +1 -1
  342. package/dist/components/navigation/menu-bar/menu-bar.js +2 -1
  343. package/dist/components/navigation/menu-bar/menu-bar.js.map +1 -1
  344. package/dist/components/navigation/menu-bar-item/menu-bar-item.d.ts.map +1 -1
  345. package/dist/components/navigation/menu-bar-item/menu-bar-item.js +4 -3
  346. package/dist/components/navigation/menu-bar-item/menu-bar-item.js.map +1 -1
  347. package/dist/components/navigation/skip-link/skip-link.d.ts.map +1 -1
  348. package/dist/components/navigation/skip-link/skip-link.js +2 -1
  349. package/dist/components/navigation/skip-link/skip-link.js.map +1 -1
  350. package/dist/components/navigation/tab-bar/tab-bar.d.ts +7 -0
  351. package/dist/components/navigation/tab-bar/tab-bar.d.ts.map +1 -1
  352. package/dist/components/navigation/tab-bar/tab-bar.js +31 -5
  353. package/dist/components/navigation/tab-bar/tab-bar.js.map +1 -1
  354. package/dist/components/navigation/tab-bar/tab-bar.styles.d.ts.map +1 -1
  355. package/dist/components/navigation/tab-bar/tab-bar.styles.js +74 -78
  356. package/dist/components/navigation/tab-bar/tab-bar.styles.js.map +1 -1
  357. package/dist/components/navigation/tab-bar/tab-bar.template.d.ts.map +1 -1
  358. package/dist/components/navigation/tab-bar/tab-bar.template.js +8 -1
  359. package/dist/components/navigation/tab-bar/tab-bar.template.js.map +1 -1
  360. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.d.ts.map +1 -1
  361. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.js +7 -6
  362. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.js.map +1 -1
  363. package/dist/components/navigation/top-title-bar/top-title-bar.d.ts.map +1 -1
  364. package/dist/components/navigation/top-title-bar/top-title-bar.js +5 -4
  365. package/dist/components/navigation/top-title-bar/top-title-bar.js.map +1 -1
  366. package/dist/components/shell-BlsXDxCn.js +222 -0
  367. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.d.ts.map +1 -1
  368. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.js +4 -3
  369. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.js.map +1 -1
  370. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.d.ts.map +1 -1
  371. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +0 -1
  372. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js.map +1 -1
  373. package/dist/components/status-and-feedback/badge/badge.d.ts.map +1 -1
  374. package/dist/components/status-and-feedback/badge/badge.js +4 -3
  375. package/dist/components/status-and-feedback/badge/badge.js.map +1 -1
  376. package/dist/components/status-and-feedback/banner/banner.d.ts +0 -1
  377. package/dist/components/status-and-feedback/banner/banner.d.ts.map +1 -1
  378. package/dist/components/status-and-feedback/banner/banner.js +13 -13
  379. package/dist/components/status-and-feedback/banner/banner.js.map +1 -1
  380. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.d.ts.map +1 -1
  381. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js +5 -4
  382. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js.map +1 -1
  383. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.d.ts +1 -0
  384. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.d.ts.map +1 -1
  385. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.js +35 -4
  386. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.js.map +1 -1
  387. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.d.ts.map +1 -1
  388. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js +11 -0
  389. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js.map +1 -1
  390. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.d.ts.map +1 -1
  391. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.js +4 -3
  392. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.js.map +1 -1
  393. package/dist/components/status-and-feedback/progress-bar/progress-bar.d.ts.map +1 -1
  394. package/dist/components/status-and-feedback/progress-bar/progress-bar.js +9 -8
  395. package/dist/components/status-and-feedback/progress-bar/progress-bar.js.map +1 -1
  396. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.d.ts.map +1 -1
  397. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js +0 -6
  398. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js.map +1 -1
  399. package/dist/components/status-and-feedback/progress-circle/progress-circle.d.ts.map +1 -1
  400. package/dist/components/status-and-feedback/progress-circle/progress-circle.js +8 -7
  401. package/dist/components/status-and-feedback/progress-circle/progress-circle.js.map +1 -1
  402. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.d.ts.map +1 -1
  403. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js +0 -2
  404. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js.map +1 -1
  405. package/dist/components/status-and-feedback/status-bar/status-bar.d.ts.map +1 -1
  406. package/dist/components/status-and-feedback/status-bar/status-bar.js +3 -2
  407. package/dist/components/status-and-feedback/status-bar/status-bar.js.map +1 -1
  408. package/dist/components/toml-BOuWGMcf.js +76 -0
  409. package/dist/css/fouc.css +30 -0
  410. package/dist/css/global.css +1 -0
  411. package/dist/css/rich-text.css +0 -5
  412. package/dist/css/settings.css +25 -10
  413. package/dist/utilities/codemirror/codemirror-element.d.ts +66 -0
  414. package/dist/utilities/codemirror/codemirror-element.d.ts.map +1 -0
  415. package/dist/utilities/codemirror/codemirror-element.js +121 -0
  416. package/dist/utilities/codemirror/codemirror-element.js.map +1 -0
  417. package/dist/utilities/codemirror/languages.d.ts +4 -0
  418. package/dist/utilities/codemirror/languages.d.ts.map +1 -0
  419. package/dist/utilities/codemirror/languages.js +39 -0
  420. package/dist/utilities/codemirror/languages.js.map +1 -0
  421. package/dist/utilities/codemirror/theme.d.ts +4 -0
  422. package/dist/utilities/codemirror/theme.d.ts.map +1 -0
  423. package/dist/utilities/codemirror/theme.js +84 -0
  424. package/dist/utilities/codemirror/theme.js.map +1 -0
  425. package/dist/utilities/dismiss-from-title-bar.d.ts +19 -0
  426. package/dist/utilities/dismiss-from-title-bar.d.ts.map +1 -0
  427. package/dist/utilities/dismiss-from-title-bar.js +21 -0
  428. package/dist/utilities/dismiss-from-title-bar.js.map +1 -0
  429. package/dist/utilities/reflect-non-default.d.ts +30 -0
  430. package/dist/utilities/reflect-non-default.d.ts.map +1 -0
  431. package/dist/utilities/reflect-non-default.js +34 -0
  432. package/dist/utilities/reflect-non-default.js.map +1 -0
  433. package/package.json +92 -68
  434. package/dist/components/index-BNhqNvDd.js +0 -36784
  435. package/dist/components/inputs/token/token.d.ts +0 -42
  436. package/dist/components/inputs/token/token.d.ts.map +0 -1
  437. package/dist/components/inputs/token/token.js +0 -86
  438. package/dist/components/inputs/token/token.js.map +0 -1
  439. package/dist/components/inputs/token/token.styles.d.ts.map +0 -1
  440. package/dist/components/inputs/token/token.styles.js +0 -142
  441. package/dist/components/inputs/token/token.styles.js.map +0 -1
  442. package/dist/components/inputs/token/token.template.d.ts +0 -4
  443. package/dist/components/inputs/token/token.template.d.ts.map +0 -1
  444. package/dist/components/inputs/token/token.template.js +0 -41
  445. package/dist/components/inputs/token/token.template.js.map +0 -1
  446. package/dist/components/prism-bash-vbqaw3JR.js +0 -226
  447. package/dist/components/prism-css-B93tXdOU.js +0 -59
  448. package/dist/components/prism-gherkin-CMPYyXOQ.js +0 -82
  449. package/dist/components/prism-javascript-DeC_17Pw.js +0 -140
  450. package/dist/components/prism-json-DIMpow89.js +0 -25
  451. package/dist/components/prism-markdown-D-uFBkiz.js +0 -339
  452. package/dist/components/prism-markup-DfJYPYHA.js +0 -177
  453. package/dist/components/prism-python--N285k7w.js +0 -99
  454. package/dist/components/prism-rust-Cnm1tSdo.js +0 -157
  455. package/dist/components/prism-sql-BGqCBMyJ.js +0 -33
  456. package/dist/components/prism-toml-Ubdq-a5x.js +0 -45
  457. package/dist/components/prism-typescript-BPJAiB1s.js +0 -87
  458. package/dist/components/prism-yaml-DO0f9pf6.js +0 -71
  459. /package/dist/components/{inputs → content}/token/token.styles.d.ts +0 -0
@@ -0,0 +1,376 @@
1
+ import { EditorSelection } from '@codemirror/state';
2
+ import { syntaxTree } from '@codemirror/language';
3
+ export const EMPTY_FORMATS = {
4
+ bold: false,
5
+ italic: false,
6
+ inlineCode: false,
7
+ codeBlock: false,
8
+ strikethrough: false,
9
+ link: false,
10
+ bulletList: false,
11
+ orderedList: false,
12
+ quote: false,
13
+ heading: 0,
14
+ };
15
+ function enclosing(view, pos, nodeName, side = 1) {
16
+ for (let n = syntaxTree(view.state).resolveInner(pos, side); n; n = n.parent) {
17
+ if (n.name === nodeName)
18
+ return n;
19
+ }
20
+ return null;
21
+ }
22
+ /** An inline format is "active" for the caret only when the node encloses it on
23
+ * *both* sides. At the outer edge (just before the opening marker or just after
24
+ * the closing one) only one side is inside, and text typed there lands outside
25
+ * the format — so the toolbar must not light up. This mirrors what typing does. */
26
+ function enclosingInline(view, pos, nodeName) {
27
+ const left = enclosing(view, pos, nodeName, -1);
28
+ const right = enclosing(view, pos, nodeName, 1);
29
+ return left && right && left.from === right.from && left.to === right.to ? right : null;
30
+ }
31
+ /** Wrap (or, if already wrapped, unwrap) each selection range with `marker`. */
32
+ export function toggleInlineWrap(view, marker, nodeName) {
33
+ // CodeMirror's `readOnly` facet only gates its own built-in commands, not a raw
34
+ // `view.dispatch`, so every editing helper here must refuse a read-only view
35
+ // itself — otherwise the command API and the Mod-b/i/e/k keymap would mutate a
36
+ // read-only (or disabled) editor.
37
+ if (view.state.readOnly)
38
+ return;
39
+ const len = marker.length;
40
+ view.dispatch(view.state.changeByRange((range) => {
41
+ const wrap = enclosing(view, range.from, nodeName);
42
+ if (wrap) {
43
+ return {
44
+ changes: [
45
+ { from: wrap.from, to: wrap.from + len },
46
+ { from: wrap.to - len, to: wrap.to },
47
+ ],
48
+ range: EditorSelection.range(Math.max(wrap.from, range.from - len), Math.max(wrap.from, range.to - len)),
49
+ };
50
+ }
51
+ return {
52
+ changes: [
53
+ { from: range.from, insert: marker },
54
+ { from: range.to, insert: marker },
55
+ ],
56
+ range: EditorSelection.range(range.from + len, range.to + len),
57
+ };
58
+ }));
59
+ view.focus();
60
+ }
61
+ /** Build a change that turns `line.text` into `next` by touching only the span
62
+ * that differs (shared prefix and suffix are left untouched). Replacing the whole
63
+ * line would collapse any annotation anchored inside it — its offsets map to the
64
+ * line boundary. Returns null when nothing changed. */
65
+ function minimalLineChange(line, next) {
66
+ const old = line.text;
67
+ if (next === old)
68
+ return null;
69
+ let p = 0;
70
+ while (p < old.length && p < next.length && old[p] === next[p])
71
+ p++;
72
+ let s = 0;
73
+ while (s < old.length - p && s < next.length - p && old[old.length - 1 - s] === next[next.length - 1 - s])
74
+ s++;
75
+ return { from: line.from + p, to: line.from + old.length - s, insert: next.slice(p, next.length - s) };
76
+ }
77
+ function mapSelectedLines(view, transform) {
78
+ if (view.state.readOnly)
79
+ return; // guards toggleHeading/setHeading/toggleBulletList/toggleQuote
80
+ const { state } = view;
81
+ const { from, to } = state.selection.main;
82
+ const first = state.doc.lineAt(from).number;
83
+ const last = state.doc.lineAt(to).number;
84
+ const changes = [];
85
+ for (let i = first; i <= last; i++) {
86
+ const line = state.doc.line(i);
87
+ const change = minimalLineChange(line, transform(line.text));
88
+ if (change)
89
+ changes.push(change);
90
+ }
91
+ if (changes.length)
92
+ view.dispatch({ changes });
93
+ view.focus();
94
+ }
95
+ function everySelectedLine(view, predicate) {
96
+ const { state } = view;
97
+ const { from, to } = state.selection.main;
98
+ const first = state.doc.lineAt(from).number;
99
+ const last = state.doc.lineAt(to).number;
100
+ for (let i = first; i <= last; i++) {
101
+ if (!predicate(state.doc.line(i).text))
102
+ return false;
103
+ }
104
+ return true;
105
+ }
106
+ /** Set the selected lines to heading `level`, or toggle them back to body. */
107
+ export function toggleHeading(view, level) {
108
+ mapSelectedLines(view, (text) => {
109
+ const match = text.match(/^(#{1,6})\s+/);
110
+ const current = match ? match[1].length : 0;
111
+ const body = match ? text.slice(match[0].length) : text;
112
+ if (level === 0 || current === level)
113
+ return body;
114
+ return `${'#'.repeat(level)} ${body}`;
115
+ });
116
+ }
117
+ /** Set the selected lines to heading `level` (0 = paragraph), without toggling.
118
+ * Suited to a picker where choosing a level always applies it. */
119
+ export function setHeading(view, level) {
120
+ mapSelectedLines(view, (text) => {
121
+ const body = text.replace(/^#{1,6}\s+/, '');
122
+ return level === 0 ? body : `${'#'.repeat(level)} ${body}`;
123
+ });
124
+ }
125
+ export function toggleBulletList(view) {
126
+ // Accept every markdown bullet char (- * +), matching readActiveFormats and the
127
+ // render guard. If the toggle recognised fewer chars than the state reader, a
128
+ // "+ item" line would report active yet the toggle couldn't strip it (it'd add
129
+ // another "- " instead), so state and toggle would disagree.
130
+ const re = /^(\s*)[-*+]\s+/;
131
+ const allBulleted = everySelectedLine(view, (t) => re.test(t) || t.trim() === '');
132
+ mapSelectedLines(view, (t) => {
133
+ if (t.trim() === '')
134
+ return t;
135
+ if (allBulleted)
136
+ return t.replace(re, '$1');
137
+ return re.test(t) ? t : t.replace(/^(\s*)/, '$1- ');
138
+ });
139
+ }
140
+ const LIST_STRIP_RE = /^(\s*)(?:[-*+]|\d+[.)])\s+/;
141
+ /** Set the selected lines to a list of `type`, replacing any existing list
142
+ * marker; `'none'` strips it. Ordered items are numbered within the selection.
143
+ * Unlike the toggles, this cleanly switches between list types (for a picker). */
144
+ export function setList(view, type) {
145
+ if (view.state.readOnly)
146
+ return;
147
+ const { state } = view;
148
+ const { from, to } = state.selection.main;
149
+ const first = state.doc.lineAt(from).number;
150
+ const last = state.doc.lineAt(to).number;
151
+ const changes = [];
152
+ let number = 0;
153
+ for (let i = first; i <= last; i++) {
154
+ const line = state.doc.line(i);
155
+ // 'none' clears the leading indent too — bare text can't carry list
156
+ // indentation (4+ spaces would even parse as a code block); the list types
157
+ // keep it ($1) so nesting survives a switch between bullet and ordered.
158
+ const stripped = line.text.replace(LIST_STRIP_RE, type === 'none' ? '' : '$1');
159
+ let next = stripped;
160
+ if (type !== 'none' && stripped.trim() !== '') {
161
+ number += 1;
162
+ const marker = type === 'bullet' ? '- ' : `${number}. `;
163
+ next = stripped.replace(/^(\s*)/, `$1${marker}`);
164
+ }
165
+ // Only rewrite the marker, not the whole line — keeps annotations alive.
166
+ const change = minimalLineChange(line, next);
167
+ if (change)
168
+ changes.push(change);
169
+ }
170
+ if (changes.length)
171
+ view.dispatch({ changes });
172
+ view.focus();
173
+ }
174
+ /** Nest the selected list item(s) under the nearest preceding item at the same
175
+ * level, indenting only as far as that parent's content column. That keeps the
176
+ * item a valid nested list — 4+ spaces with no parent would parse as an indented
177
+ * code block — so a first or standalone item (no parent) is left untouched. */
178
+ export function indentListItems(view) {
179
+ if (view.state.readOnly)
180
+ return;
181
+ const { state } = view;
182
+ const { from, to } = state.selection.main;
183
+ const first = state.doc.lineAt(from).number;
184
+ const last = state.doc.lineAt(to).number;
185
+ const changes = [];
186
+ for (let i = first; i <= last; i++) {
187
+ const line = state.doc.line(i);
188
+ const match = line.text.match(LIST_STRIP_RE);
189
+ if (!match)
190
+ continue;
191
+ const indent = match[1].length;
192
+ // Walk up to the nearest list item at this level or shallower — the item we
193
+ // nest under. A blank line is skipped (loose lists); a non-list line ends it.
194
+ let parentContentColumn = -1;
195
+ for (let j = i - 1; j >= 1; j--) {
196
+ const text = state.doc.line(j).text;
197
+ if (text.trim() === '')
198
+ continue;
199
+ const prev = text.match(LIST_STRIP_RE);
200
+ if (!prev)
201
+ break;
202
+ if (prev[1].length <= indent) {
203
+ parentContentColumn = prev[0].length;
204
+ break;
205
+ }
206
+ }
207
+ if (parentContentColumn > indent) {
208
+ changes.push({ from: line.from, insert: ' '.repeat(parentContentColumn - indent) });
209
+ }
210
+ }
211
+ if (changes.length)
212
+ view.dispatch({ changes });
213
+ view.focus();
214
+ }
215
+ /** Whether the list item at the caret can be nested deeper (it has a preceding
216
+ * item at the same level to nest under). Drives the indent button's disabled state. */
217
+ export function canIndentListItem(view) {
218
+ const { state } = view;
219
+ const line = state.doc.lineAt(state.selection.main.head);
220
+ const match = line.text.match(LIST_STRIP_RE);
221
+ if (!match)
222
+ return false;
223
+ const indent = match[1].length;
224
+ for (let j = line.number - 1; j >= 1; j--) {
225
+ const text = state.doc.line(j).text;
226
+ if (text.trim() === '')
227
+ continue;
228
+ const prev = text.match(LIST_STRIP_RE);
229
+ if (!prev)
230
+ return false;
231
+ if (prev[1].length <= indent)
232
+ return prev[0].length > indent;
233
+ }
234
+ return false;
235
+ }
236
+ /** Whether the list item at the caret is nested (indented) and so can be outdented. */
237
+ export function canOutdentListItem(view) {
238
+ const match = view.state.doc.lineAt(view.state.selection.main.head).text.match(LIST_STRIP_RE);
239
+ return !!match && match[1].length > 0;
240
+ }
241
+ /** Backspace at a list item's content start (right after the marker) removes the
242
+ * marker and its trailing space — the item's own indent is kept — so a top-level
243
+ * item cleanly returns to column 0 for every number, not just the first. CodeMirror's
244
+ * default deleteMarkupBackward instead aligns the content under the previous item,
245
+ * leaving stray whitespace on items 2, 3, … Returns false (so other handlers run)
246
+ * unless the caret sits exactly at a list marker's end outside a code block. */
247
+ export function clearListMarkerBackward(view) {
248
+ // Consume Backspace entirely on a read-only editor. Returning false would hand it
249
+ // to the markdown language's deleteMarkupBackward, which (unlike @codemirror/commands)
250
+ // does NOT check readOnly and would delete the marker anyway. This binding is
251
+ // already Prec.highest to sit in front of it, so swallowing here is the fix.
252
+ if (view.state.readOnly)
253
+ return true;
254
+ const { state } = view;
255
+ const sel = state.selection.main;
256
+ if (!sel.empty)
257
+ return false;
258
+ const line = state.doc.lineAt(sel.head);
259
+ const marker = line.text.match(/^(\s*)(?:\d+[.)]|[-*+])\s/);
260
+ if (!marker || sel.head !== line.from + marker[0].length)
261
+ return false;
262
+ // A leading marker in a code block is literal text, not a list.
263
+ if (enclosing(view, line.from, 'FencedCode') || enclosing(view, line.from, 'CodeBlock'))
264
+ return false;
265
+ const from = line.from + marker[1].length; // keep the item's own indent
266
+ view.dispatch({
267
+ changes: { from, to: line.from + marker[0].length },
268
+ selection: { anchor: from },
269
+ userEvent: 'delete.backward',
270
+ });
271
+ return true;
272
+ }
273
+ export function toggleQuote(view) {
274
+ const re = /^(\s*)>\s?/;
275
+ const allQuoted = everySelectedLine(view, (t) => re.test(t) || t.trim() === '');
276
+ mapSelectedLines(view, (t) => {
277
+ if (t.trim() === '')
278
+ return t;
279
+ if (allQuoted)
280
+ return t.replace(re, '$1');
281
+ return re.test(t) ? t : t.replace(/^(\s*)/, '$1> ');
282
+ });
283
+ }
284
+ /** Wrap the selection as a markdown link. Caret lands where the user types next:
285
+ * inside `[]` if there's no text, inside `()` if there's no href, else after. */
286
+ // The non-mention Link node enclosing `pos`, or null. Mentions own their click,
287
+ // so they don't count as a "link" for the link button.
288
+ function realLinkAt(view, pos) {
289
+ const link = enclosing(view, pos, 'Link');
290
+ if (!link)
291
+ return null;
292
+ for (let child = link.firstChild; child; child = child.nextSibling) {
293
+ if (child.name === 'URL' && view.state.sliceDoc(child.from, child.to).startsWith('user:'))
294
+ return null;
295
+ }
296
+ return link;
297
+ }
298
+ export function toggleLink(view, href = '') {
299
+ if (view.state.readOnly)
300
+ return;
301
+ // In a link already → unwrap it (drop the [ ]( ) markers, keep the text).
302
+ const link = realLinkAt(view, view.state.selection.main.head);
303
+ if (link) {
304
+ const text = view.state.sliceDoc(link.from, link.to).replace(/^\[(.*)\]\([^)]*\)$/, '$1');
305
+ view.dispatch({
306
+ changes: { from: link.from, to: link.to, insert: text },
307
+ selection: EditorSelection.range(link.from, link.from + text.length),
308
+ });
309
+ view.focus();
310
+ return;
311
+ }
312
+ view.dispatch(view.state.changeByRange((range) => {
313
+ const text = view.state.sliceDoc(range.from, range.to);
314
+ const insert = `[${text}](${href})`;
315
+ let caret;
316
+ if (!text)
317
+ caret = range.from + 1;
318
+ else if (!href)
319
+ caret = range.from + 1 + text.length + 2;
320
+ else
321
+ caret = range.from + insert.length;
322
+ return { changes: { from: range.from, to: range.to, insert }, range: EditorSelection.cursor(caret) };
323
+ }));
324
+ view.focus();
325
+ }
326
+ /** Wrap the selected lines in a ``` fenced code block, or unwrap if already in one. */
327
+ export function toggleCodeBlock(view) {
328
+ if (view.state.readOnly)
329
+ return;
330
+ const { state } = view;
331
+ const { from, to } = state.selection.main;
332
+ const first = state.doc.lineAt(from);
333
+ const last = state.doc.lineAt(to);
334
+ const prev = first.number > 1 ? state.doc.line(first.number - 1) : null;
335
+ const next = last.number < state.doc.lines ? state.doc.line(last.number + 1) : null;
336
+ const fenced = !!prev?.text.trim().startsWith('```') && !!next?.text.trim().startsWith('```');
337
+ if (fenced && prev && next) {
338
+ view.dispatch({ changes: [{ from: prev.from, to: first.from }, { from: last.to, to: next.to }] });
339
+ }
340
+ else {
341
+ view.dispatch({ changes: [{ from: first.from, insert: '```\n' }, { from: last.to, insert: '\n```' }] });
342
+ }
343
+ view.focus();
344
+ }
345
+ export function readActiveFormats(view) {
346
+ const { state } = view;
347
+ const pos = state.selection.main.head;
348
+ // Inline marks light up only when the caret is *within* them on both sides,
349
+ // so an edge caret (where typed text lands outside the format) stays inactive.
350
+ const has = (name) => enclosingInline(view, pos, name) !== null;
351
+ const lineText = state.doc.lineAt(pos).text;
352
+ const lineStart = state.doc.lineAt(pos).from;
353
+ const headingMatch = lineText.match(/^(#{1,6})\s/);
354
+ // In a code block a leading marker is literal text, not a list/heading — the
355
+ // regex-based checks below would otherwise report it. (The syntax-tree checks,
356
+ // like bold or quote, already ignore code content.)
357
+ const codeBlock = enclosing(view, lineStart, 'FencedCode') !== null || enclosing(view, lineStart, 'CodeBlock') !== null;
358
+ return {
359
+ bold: has('StrongEmphasis'),
360
+ italic: has('Emphasis'),
361
+ inlineCode: has('InlineCode'),
362
+ codeBlock,
363
+ strikethrough: has('Strikethrough'),
364
+ link: realLinkAt(view, pos) !== null,
365
+ // Lists from the line's own marker. (Resolving the tree at a line-end caret
366
+ // can spill into the next line and flip-flop the toolbar state.)
367
+ bulletList: !codeBlock && /^\s*[-*+]\s/.test(lineText),
368
+ orderedList: !codeBlock && /^\s*\d+[.)]\s/.test(lineText),
369
+ // Quote from the Blockquote node at the line's *start* — that catches lazy
370
+ // continuation lines (part of the quote but with no '>') too, while resolving
371
+ // at line.from (not the caret) keeps it stable at the line end.
372
+ quote: enclosing(view, lineStart, 'Blockquote') !== null,
373
+ heading: (codeBlock || !headingMatch ? 0 : headingMatch[1].length),
374
+ };
375
+ }
376
+ //# sourceMappingURL=text-editor.commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-editor.commands.js","sourceRoot":"","sources":["../../../../src/components/inputs/text-editor/text-editor.commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Nederlandse Digitale Dienst Text Editor Component (Lit + TypeScript)
3
+ *
4
+ * A hybrid markdown editor built on CodeMirror 6 (via NLDDCodeMirrorElement):
5
+ * the document stays plain markdown text, but formatting is shown inline (bold
6
+ * is bold, headings are larger, links are coloured) while the syntax markers
7
+ * stay visible, only dimmed — the iA Writer / Kirby approach. No WYSIWYG tree,
8
+ * so the data stays portable.
9
+ *
10
+ * Default `variant="simple"` is bare (no frame, no focus ring) for use inside
11
+ * a composition (e.g. a message field) that owns its chrome and focus; the
12
+ * caret is a prominent accent. `variant="input-field"` adds a framed surface + focus
13
+ * ring. `font` is `sans` (default, best for prose) or `mono`.
14
+ *
15
+ * Headless: there is no built-in toolbar. A consumer drives formatting via the
16
+ * command methods (toggleBold/toggleItalic/toggleInlineCode/toggleStrikethrough/
17
+ * toggleHeading/toggleBulletList/toggleQuote/toggleLink/runCommand to toggle, and
18
+ * setHeading/setList for picker-style "set" semantics), reads the active formats
19
+ * with getState(), listens to the nldd-text-editor-state event to render toggle
20
+ * states, and forwards padding clicks with focusFromPoint(). Cmd/Ctrl+B/I/E/K are
21
+ * bound out of the box. Commands keep focus on the editor. An @-mention typeahead
22
+ * (mentionSource) collapses to an atomic token, and a W3C-style annotation overlay
23
+ * (annotations) marks ranges with a dashed underline, light tint and a count badge
24
+ * without touching the underlying text.
25
+ *
26
+ * @element nldd-text-editor
27
+ *
28
+ * @attr {string} value - Editor content (markdown)
29
+ * @attr {string} placeholder - Placeholder text shown while empty
30
+ * @attr {string} input-id - Sets the id on the editable element. Set automatically by nldd-form-field.
31
+ * @attr {boolean} disabled - Disabled state
32
+ * @attr {string} name - Field name for form submission
33
+ * @attr {boolean} readonly - Readonly state (focusable and selectable, not editable)
34
+ * @attr {boolean} required - Required state
35
+ * @attr {boolean} wrap - Wrap long lines (default true; prose wraps)
36
+ * @attr {number} rows - Minimum visible rows (the floor in every resize mode). Default: 6.
37
+ * @attr {string} resize - 'none' (fixed) | 'vertical' (drag) | 'auto' (grow, default)
38
+ * @attr {string} variant - 'simple' (default, bare) | 'input-field' (framed surface)
39
+ * @attr {string} font - 'sans' (default) | 'mono'
40
+ * @attr {string} accessible-label - Accessible label forwarded to the editor. Set automatically by nldd-form-field.
41
+ *
42
+ * @prop {MentionSource} mentionSource - Consumer-supplied @-mention candidate source (property only). Without it, @-typeahead is inert.
43
+ * @attr {boolean} annotatable - Enable the annotation overlay (off by default). Annotations only render when this is set.
44
+ * @prop {Annotation[]} annotations - Consumer-supplied annotation overlay (property only). Anchored by offset and mapped through edits; the text stays clean. Requires `annotatable`. Assign a NEW array to apply changes (Lit dirty-checks by identity, so in-place mutation like `.push()` won't re-render): `editor.annotations = [...editor.annotations, next]`.
45
+ * @attr {object} translations - Override the editor's assistive-tech strings (the open-in-new-tab link badge and the annotation count badge). Unset keys fall back to Dutch.
46
+ *
47
+ * @fires input - When the content changes (detail: { value })
48
+ * @fires change - When the content is committed on blur (detail: { value })
49
+ * @fires nldd-text-editor-state - When the selection or content changes (detail: TextEditorState), for toolbar toggle state
50
+ * @fires nldd-text-editor-mention - When an @-mention is inserted (detail: MentionInsertedDetail with id, label, from, to)
51
+ * @fires nldd-text-editor-annotation-click - When an annotation's count badge is clicked (detail: { ids: string[], rect: DOMRect }); rect is the badge's viewport box so a consumer can anchor its own note UI to it
52
+ */
53
+ import { type PropertyValues } from 'lit';
54
+ import { type Extension } from '@codemirror/state';
55
+ import { NLDDCodeMirrorElement } from '../../../utilities/codemirror/codemirror-element.js';
56
+ import { type MentionSource } from './text-editor.mentions.js';
57
+ import { type Annotation } from './text-editor.annotations.js';
58
+ import { type HeadingLevel, type TextEditorState } from './text-editor.commands.js';
59
+ import { type NLDDTextEditorTranslations } from './text-editor.i18n.js';
60
+ export type ResizeMode = 'none' | 'vertical' | 'auto';
61
+ export type TextEditorVariant = 'input-field' | 'simple';
62
+ export type TextEditorFont = 'sans' | 'mono';
63
+ export type { HeadingLevel, TextEditorState, TextEditorActiveFormats } from './text-editor.commands.js';
64
+ export type { MentionCandidate, MentionSource, MentionInsertedDetail } from './text-editor.mentions.js';
65
+ export type { Annotation } from './text-editor.annotations.js';
66
+ export declare class NLDDTextEditor extends NLDDCodeMirrorElement {
67
+ static formAssociated: boolean;
68
+ static shadowRootOptions: {
69
+ delegatesFocus: boolean;
70
+ clonable?: boolean;
71
+ customElementRegistry?: CustomElementRegistry;
72
+ mode: ShadowRootMode;
73
+ serializable?: boolean;
74
+ slotAssignment?: SlotAssignmentMode;
75
+ };
76
+ static styles: import("lit").CSSResult;
77
+ private _internals;
78
+ private _initialValue;
79
+ private _valueAtFocus;
80
+ private _accessibleLabelWarned;
81
+ value: string;
82
+ inputId: string;
83
+ placeholder: string;
84
+ disabled: boolean;
85
+ name: string;
86
+ readonly: boolean;
87
+ required: boolean;
88
+ wrap: boolean;
89
+ rows: number;
90
+ resize: ResizeMode;
91
+ variant: TextEditorVariant;
92
+ font: TextEditorFont;
93
+ accessibleLabel: string;
94
+ /** Consumer-supplied @-mention source: called with the text typed after `@`
95
+ * and returns (a promise of) candidates. Property only (set via JS); without
96
+ * it, @-typeahead is inert. */
97
+ mentionSource?: MentionSource;
98
+ /** Whether the annotation overlay is enabled. Off by default; set the
99
+ * `annotatable` attribute to turn it on (so the comment affordance and the
100
+ * overlay only appear when the consumer opts in). */
101
+ annotatable: boolean;
102
+ /** Consumer-supplied annotations (W3C-style overlay). Property only (set via
103
+ * JS). Render only when `annotatable` is on. The text stays clean; these
104
+ * render as a light tint and a count badge, anchored by offset and mapped
105
+ * through edits.
106
+ *
107
+ * IMPORTANT: assign a NEW array to apply changes. Lit dirty-checks this
108
+ * property by identity, so mutating the existing array in place
109
+ * (`editor.annotations.push(next)`, `editor.annotations[0].end = 9`, …) does
110
+ * NOT trigger a re-render. Always replace it:
111
+ * `editor.annotations = [...editor.annotations, next]`. */
112
+ annotations: Annotation[];
113
+ /** Override translation keys for the editor's assistive-tech strings (the
114
+ * open-in-new-tab link badge and the annotation count badge). Unset keys fall
115
+ * back to Dutch. */
116
+ translations: Partial<NLDDTextEditorTranslations>;
117
+ private _container;
118
+ private _editableCompartment;
119
+ private _wrapCompartment;
120
+ private _placeholderCompartment;
121
+ private _attrsCompartment;
122
+ private _historyCompartment;
123
+ protected getEditorParent(): HTMLElement | null | undefined;
124
+ /** Resolve a translation key, applying `{name}` placeholder substitution from
125
+ * `vars`. Consumer overrides via `translations` win; unset keys fall back to the
126
+ * Dutch defaults. */
127
+ _t(key: keyof NLDDTextEditorTranslations, vars?: Record<string, string | number>): string;
128
+ protected buildExtensions(): Extension[];
129
+ private _editableExtension;
130
+ private _placeholderExtension;
131
+ private _attrsExtension;
132
+ firstUpdated(): void;
133
+ protected onEditorMounted(): void;
134
+ updated(changed: PropertyValues): void;
135
+ private _syncAnnotations;
136
+ private _selectMentionBeforeDelete;
137
+ toggleBold(): void;
138
+ toggleItalic(): void;
139
+ toggleInlineCode(): void;
140
+ toggleStrikethrough(): void;
141
+ toggleHeading(level: HeadingLevel): void;
142
+ /** Set the block to a heading level (0 = paragraph) without toggling — for a
143
+ * picker where choosing a level always applies it. */
144
+ setHeading(level: HeadingLevel): void;
145
+ toggleBulletList(): void;
146
+ /** Set the list type, replacing any existing list ('none' strips it) — for an
147
+ * exclusive list picker. */
148
+ setList(type: 'none' | 'bullet' | 'ordered'): void;
149
+ toggleQuote(): void;
150
+ toggleLink(href?: string): void;
151
+ toggleCodeBlock(): void;
152
+ /** Nest the selected list item(s) under the preceding item at the same level.
153
+ * Only list items move, and only as far as that parent's content column — so a
154
+ * first or standalone item can't be over-indented into an indented code block. */
155
+ indent(): void;
156
+ /** Decrease the leading indentation of the selected lines. */
157
+ outdent(): void;
158
+ /** Undo the last change. History is built in, so Cmd/Ctrl+Z works too. */
159
+ undo(): void;
160
+ /** Redo the last undone change (Cmd/Ctrl+Shift+Z / Ctrl+Y also work). */
161
+ redo(): void;
162
+ /** Drop the undo/redo history, leaving the document untouched. Use after a
163
+ * consumer-driven discard so a later undo can't step back into the
164
+ * thrown-away edits. Reconfiguring the history compartment off and back on
165
+ * re-initialises it with empty stacks. */
166
+ clearHistory(): void;
167
+ /** Text and annotations of the last cut, so a same-editor paste can move the
168
+ * annotations along with their text. Cleared by copy and by a matching paste. */
169
+ private _cutBuffer;
170
+ /** The annotations lying fully inside the current selection, offset relative to
171
+ * the selection's clean start. */
172
+ private _annotationsInSelection;
173
+ /** Copy the current selection to the clipboard, sentinel-free. No-op when the
174
+ * selection is empty or the clipboard is unavailable (e.g. permission denied). */
175
+ copy(): Promise<void>;
176
+ /** Cut the current selection to the clipboard and remove it from the document.
177
+ * Its annotations are remembered so a paste back into this editor moves them
178
+ * along. No-op when the selection is empty. */
179
+ cut(): Promise<void>;
180
+ /** Paste clipboard text at the caret, replacing any selection. Sentinels that
181
+ * rode in from another editor are stripped. When the text matches a cut made in
182
+ * this editor, its annotations travel with it (a move); otherwise it's plain
183
+ * text. No-op when the clipboard is empty or unreadable. */
184
+ paste(): Promise<void>;
185
+ /** Insert `text` at the selection, re-attaching the cut annotations when it matches
186
+ * a cut made in this editor (a move, one-shot). Shared by the toolbar's paste()
187
+ * and the native Cmd/Ctrl+V handler. */
188
+ private _pasteText;
189
+ /** Escape hatch: run a command by name (bold, italic, inlineCode,
190
+ * strikethrough, bulletList, quote, heading [payload: level], link
191
+ * [payload: href], copy, cut, paste). */
192
+ runCommand(name: string, payload?: unknown): void;
193
+ /** The formats active at the current selection (drives a toolbar's state). */
194
+ getState(): TextEditorState;
195
+ /** The current selection in CLEAN (annotation-sentinel-free) coordinates plus
196
+ * the quoted text — the anchor a consumer needs to attach a new annotation to
197
+ * the selection (e.g. from a toolbar "comment" button). `empty` mirrors
198
+ * getState().empty for gating that button.
199
+ *
200
+ * `rect` is the selection's bounding box in viewport coordinates (or the
201
+ * caret box when empty), so a consumer can anchor a popover to the selected
202
+ * text itself instead of to its own button. Use it as a Floating UI virtual
203
+ * anchor: `{ getBoundingClientRect: () => rect, contextElement: editorEl }`.
204
+ * It is computed from CodeMirror's layout, so it is correct even when the
205
+ * editor is not focused (clicking a toolbar button blurs the editor but the
206
+ * selection state survives). `null` when there is no view or the selection
207
+ * is scrolled out of sight. */
208
+ getSelection(): {
209
+ start: number;
210
+ end: number;
211
+ quote: string;
212
+ empty: boolean;
213
+ rect: DOMRect | null;
214
+ };
215
+ /** The annotations currently in the editor, in CLEAN coordinates, each quote
216
+ * re-sliced from the current text — so a consumer can persist positions that
217
+ * moved with edits (read this on save, then write the anchors back). */
218
+ getAnnotations(): Annotation[];
219
+ private _emitState;
220
+ private _emitMention;
221
+ private _onScrollerPointerDown;
222
+ private _onMentionPointerDown;
223
+ /** A click on an annotation's count badge emits nldd-text-editor-annotation-click
224
+ * with the id(s) it covers (a merged badge carries several) and the badge's
225
+ * viewport rect, so the consumer can anchor its own note UI to the badge. The
226
+ * tinted text stays plain-clickable for caret placement. */
227
+ private _onAnnotationBadgeClick;
228
+ private _onDocChanged;
229
+ private _emitChange;
230
+ private _checkAccessibleLabel;
231
+ formResetCallback(): void;
232
+ formDisabledCallback(disabled: boolean): void;
233
+ formStateRestoreCallback(state: File | string | FormData | null): void;
234
+ render(): import("lit-html").TemplateResult;
235
+ }
236
+ declare global {
237
+ interface HTMLElementTagNameMap {
238
+ 'nldd-text-editor': NLDDTextEditor;
239
+ }
240
+ }
241
+ //# sourceMappingURL=text-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-editor.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/text-editor/text-editor.ts"],"names":[],"mappings":"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"}