kempo-ui 0.4.19 → 0.4.21

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 (578) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/Chat.js +10 -10
  3. package/dist/components/CodeEditor.js +23 -24
  4. package/dist/components/ControlGroup.js +17 -0
  5. package/dist/components/HtmlEditor.js +105 -106
  6. package/dist/components/MarkdownEditor.js +49 -49
  7. package/dist/components/Pagination.js +11 -11
  8. package/dist/components/Table.js +1 -1
  9. package/dist/components/controls/AlignCenter.js +1 -0
  10. package/dist/components/controls/AlignJustify.js +1 -0
  11. package/dist/components/controls/AlignLeft.js +1 -0
  12. package/dist/components/controls/AlignRight.js +1 -0
  13. package/dist/components/controls/Bold.js +1 -0
  14. package/dist/components/controls/BulletList.js +1 -0
  15. package/dist/components/controls/ButtonControl.js +33 -0
  16. package/dist/components/controls/CharacterCount.js +4 -0
  17. package/dist/components/controls/ClearFormatting.js +1 -0
  18. package/dist/components/controls/CodeBlock.js +1 -0
  19. package/dist/components/controls/Control.js +12 -0
  20. package/dist/components/controls/CopyCode.js +1 -0
  21. package/dist/components/controls/CreateLink.js +1 -0
  22. package/dist/components/controls/EditorTheme.js +30 -0
  23. package/dist/components/controls/FindReplace.js +1 -0
  24. package/dist/components/controls/FoldAll.js +1 -0
  25. package/dist/components/controls/FontSize.js +8 -0
  26. package/dist/components/controls/FontSizeDecrease.js +1 -0
  27. package/dist/components/controls/FontSizeIncrease.js +1 -0
  28. package/dist/components/controls/FormatBlock.js +8 -0
  29. package/dist/components/controls/FormatCode.js +1 -0
  30. package/dist/components/controls/Fullscreen.js +1 -0
  31. package/dist/components/controls/InlineCode.js +1 -0
  32. package/dist/components/controls/InsertTable.js +1 -0
  33. package/dist/components/controls/Italic.js +1 -0
  34. package/dist/components/controls/Language.js +21 -0
  35. package/dist/components/controls/MdImage.js +23 -0
  36. package/dist/components/controls/MdLink.js +1 -0
  37. package/dist/components/controls/MdSpeechToText.js +10 -0
  38. package/dist/components/controls/MdTable.js +19 -0
  39. package/dist/components/controls/Menu.js +51 -0
  40. package/dist/components/controls/Minimap.js +1 -0
  41. package/dist/components/controls/Mode.js +1 -0
  42. package/dist/components/controls/NumberList.js +1 -0
  43. package/dist/components/controls/PgCount.js +1 -0
  44. package/dist/components/controls/PgFirst.js +1 -0
  45. package/dist/components/controls/PgGotoPage.js +15 -0
  46. package/dist/components/controls/PgItemsPerPage.js +12 -0
  47. package/dist/components/controls/PgLast.js +1 -0
  48. package/dist/components/controls/PgNext.js +1 -0
  49. package/dist/components/controls/PgPageInfo.js +3 -0
  50. package/dist/components/controls/PgPrev.js +1 -0
  51. package/dist/components/controls/Quote.js +1 -0
  52. package/dist/components/controls/Redo.js +1 -0
  53. package/dist/components/{htmlEditorControls/ControlSpacer.js → controls/Spacer.js} +5 -5
  54. package/dist/components/controls/Strikethrough.js +1 -0
  55. package/dist/components/controls/TcDeleteRecord.js +1 -0
  56. package/dist/components/controls/TcDeleteSelected.js +1 -0
  57. package/dist/components/controls/TcEdit.js +12 -0
  58. package/dist/components/controls/TcExportCsv.js +3 -0
  59. package/dist/components/controls/TcExportJson.js +3 -0
  60. package/dist/components/controls/TcFieldSortHide.js +21 -0
  61. package/dist/components/controls/TcFilters.js +34 -0
  62. package/dist/components/controls/TcFirstPage.js +1 -0
  63. package/dist/components/controls/TcHiddenCount.js +1 -0
  64. package/dist/components/controls/TcHide.js +1 -0
  65. package/dist/components/controls/TcLastPage.js +1 -0
  66. package/dist/components/controls/TcNextPage.js +1 -0
  67. package/dist/components/controls/TcPageSelect.js +9 -0
  68. package/dist/components/controls/TcPageSize.js +5 -0
  69. package/dist/components/controls/TcPrevPage.js +1 -0
  70. package/dist/components/controls/TcSearch.js +1 -0
  71. package/dist/components/controls/TcShowAll.js +1 -0
  72. package/dist/components/controls/TextBackgroundColor.js +26 -0
  73. package/dist/components/controls/TextColor.js +26 -0
  74. package/dist/components/controls/Underline.js +1 -0
  75. package/dist/components/controls/Undo.js +1 -0
  76. package/dist/components/controls/WordCount.js +4 -0
  77. package/dist/components/controls/WordWrap.js +1 -0
  78. package/docs/components/code-editor.html +69 -48
  79. package/docs/components/html-editor.html +70 -69
  80. package/docs/components/markdown-editor.html +59 -78
  81. package/docs/components/pagination.html +51 -51
  82. package/docs/components/tableControls.html +5 -5
  83. package/docs/components/tableCustomFields.html +3 -3
  84. package/docs/components/tableFetchRecords.html +13 -13
  85. package/docs/components/tableFieldSortHide.html +4 -4
  86. package/docs/components/tablePagination.html +13 -13
  87. package/docs/components/tablePlaceholder.html +3 -3
  88. package/docs/components/tableRecordEditing.html +4 -4
  89. package/docs/components/tableRecordFiltering.html +5 -5
  90. package/docs/components/tableRecordHiding.html +7 -7
  91. package/docs/components/tableRecordSearching.html +3 -3
  92. package/docs/components/tableRowControls.html +6 -6
  93. package/docs/components/tableServerSync.html +7 -7
  94. package/docs/src/components/Chat.js +10 -10
  95. package/docs/src/components/CodeEditor.js +23 -24
  96. package/docs/src/components/ControlGroup.js +17 -0
  97. package/docs/src/components/HtmlEditor.js +105 -106
  98. package/docs/src/components/MarkdownEditor.js +49 -49
  99. package/docs/src/components/Pagination.js +11 -11
  100. package/docs/src/components/Table.js +1 -1
  101. package/docs/src/components/controls/AlignCenter.js +1 -0
  102. package/docs/src/components/controls/AlignJustify.js +1 -0
  103. package/docs/src/components/controls/AlignLeft.js +1 -0
  104. package/docs/src/components/controls/AlignRight.js +1 -0
  105. package/docs/src/components/controls/Bold.js +1 -0
  106. package/docs/src/components/controls/BulletList.js +1 -0
  107. package/docs/src/components/controls/ButtonControl.js +33 -0
  108. package/docs/src/components/controls/CharacterCount.js +4 -0
  109. package/docs/src/components/controls/ClearFormatting.js +1 -0
  110. package/docs/src/components/controls/CodeBlock.js +1 -0
  111. package/docs/src/components/controls/Control.js +12 -0
  112. package/docs/src/components/controls/CopyCode.js +1 -0
  113. package/docs/src/components/controls/CreateLink.js +1 -0
  114. package/docs/src/components/controls/EditorTheme.js +30 -0
  115. package/docs/src/components/controls/FindReplace.js +1 -0
  116. package/docs/src/components/controls/FoldAll.js +1 -0
  117. package/docs/src/components/controls/FontSize.js +8 -0
  118. package/docs/src/components/controls/FontSizeDecrease.js +1 -0
  119. package/docs/src/components/controls/FontSizeIncrease.js +1 -0
  120. package/docs/src/components/controls/FormatBlock.js +8 -0
  121. package/docs/src/components/controls/FormatCode.js +1 -0
  122. package/docs/src/components/controls/Fullscreen.js +1 -0
  123. package/docs/src/components/controls/InlineCode.js +1 -0
  124. package/docs/src/components/controls/InsertTable.js +1 -0
  125. package/docs/src/components/controls/Italic.js +1 -0
  126. package/docs/src/components/controls/Language.js +21 -0
  127. package/docs/src/components/controls/MdImage.js +23 -0
  128. package/docs/src/components/controls/MdLink.js +1 -0
  129. package/docs/src/components/controls/MdSpeechToText.js +10 -0
  130. package/docs/src/components/controls/MdTable.js +19 -0
  131. package/docs/src/components/controls/Menu.js +51 -0
  132. package/docs/src/components/controls/Minimap.js +1 -0
  133. package/docs/src/components/controls/Mode.js +1 -0
  134. package/docs/src/components/controls/NumberList.js +1 -0
  135. package/docs/src/components/controls/PgCount.js +1 -0
  136. package/docs/src/components/controls/PgFirst.js +1 -0
  137. package/docs/src/components/controls/PgGotoPage.js +15 -0
  138. package/docs/src/components/controls/PgItemsPerPage.js +12 -0
  139. package/docs/src/components/controls/PgLast.js +1 -0
  140. package/docs/src/components/controls/PgNext.js +1 -0
  141. package/docs/src/components/controls/PgPageInfo.js +3 -0
  142. package/docs/src/components/controls/PgPrev.js +1 -0
  143. package/docs/src/components/controls/Quote.js +1 -0
  144. package/docs/src/components/controls/Redo.js +1 -0
  145. package/docs/src/components/{codeEditorControls/ControlSpacer.js → controls/Spacer.js} +5 -5
  146. package/docs/src/components/controls/Strikethrough.js +1 -0
  147. package/docs/src/components/controls/TcDeleteRecord.js +1 -0
  148. package/docs/src/components/controls/TcDeleteSelected.js +1 -0
  149. package/docs/src/components/controls/TcEdit.js +12 -0
  150. package/docs/src/components/controls/TcExportCsv.js +3 -0
  151. package/docs/src/components/controls/TcExportJson.js +3 -0
  152. package/docs/src/components/controls/TcFieldSortHide.js +21 -0
  153. package/docs/src/components/controls/TcFilters.js +34 -0
  154. package/docs/src/components/controls/TcFirstPage.js +1 -0
  155. package/docs/src/components/controls/TcHiddenCount.js +1 -0
  156. package/docs/src/components/controls/TcHide.js +1 -0
  157. package/docs/src/components/controls/TcLastPage.js +1 -0
  158. package/docs/src/components/controls/TcNextPage.js +1 -0
  159. package/docs/src/components/controls/TcPageSelect.js +9 -0
  160. package/docs/src/components/controls/TcPageSize.js +5 -0
  161. package/docs/src/components/controls/TcPrevPage.js +1 -0
  162. package/docs/src/components/controls/TcSearch.js +1 -0
  163. package/docs/src/components/controls/TcShowAll.js +1 -0
  164. package/docs/src/components/controls/TextBackgroundColor.js +26 -0
  165. package/docs/src/components/controls/TextColor.js +26 -0
  166. package/docs/src/components/controls/Underline.js +1 -0
  167. package/docs/src/components/controls/Undo.js +1 -0
  168. package/docs/src/components/controls/WordCount.js +4 -0
  169. package/docs/src/components/controls/WordWrap.js +1 -0
  170. package/docs-src/components/code-editor.page.html +69 -48
  171. package/docs-src/components/html-editor.page.html +70 -69
  172. package/docs-src/components/markdown-editor.page.html +59 -78
  173. package/docs-src/components/pagination.page.html +51 -51
  174. package/docs-src/components/tableControls.page.html +5 -5
  175. package/docs-src/components/tableCustomFields.page.html +3 -3
  176. package/docs-src/components/tableFetchRecords.page.html +13 -13
  177. package/docs-src/components/tableFieldSortHide.page.html +4 -4
  178. package/docs-src/components/tablePagination.page.html +13 -13
  179. package/docs-src/components/tablePlaceholder.page.html +3 -3
  180. package/docs-src/components/tableRecordEditing.page.html +4 -4
  181. package/docs-src/components/tableRecordFiltering.page.html +5 -5
  182. package/docs-src/components/tableRecordHiding.page.html +7 -7
  183. package/docs-src/components/tableRecordSearching.page.html +3 -3
  184. package/docs-src/components/tableRowControls.page.html +6 -6
  185. package/docs-src/components/tableServerSync.page.html +7 -7
  186. package/llms.txt +37 -3
  187. package/package.json +1 -1
  188. package/src/components/Chat.js +14 -14
  189. package/src/components/CodeEditor.js +26 -32
  190. package/src/components/{codeEditorControls/ControlGroup.js → ControlGroup.js} +10 -6
  191. package/src/components/HtmlEditor.js +107 -125
  192. package/src/components/MarkdownEditor.js +117 -59
  193. package/src/components/Pagination.js +18 -23
  194. package/src/components/Table.js +5 -0
  195. package/src/components/controls/AlignCenter.js +19 -0
  196. package/src/components/controls/AlignJustify.js +19 -0
  197. package/src/components/controls/AlignLeft.js +19 -0
  198. package/src/components/controls/AlignRight.js +19 -0
  199. package/src/components/controls/Bold.js +19 -0
  200. package/src/components/controls/BulletList.js +19 -0
  201. package/src/components/controls/ButtonControl.js +114 -0
  202. package/src/components/controls/CharacterCount.js +48 -0
  203. package/src/components/controls/ClearFormatting.js +19 -0
  204. package/src/components/controls/CodeBlock.js +27 -0
  205. package/src/components/controls/Control.js +176 -0
  206. package/src/components/controls/CopyCode.js +19 -0
  207. package/src/components/controls/CreateLink.js +63 -0
  208. package/src/components/controls/EditorTheme.js +71 -0
  209. package/src/components/controls/FindReplace.js +19 -0
  210. package/src/components/controls/FoldAll.js +35 -0
  211. package/src/components/controls/FontSize.js +31 -0
  212. package/src/components/controls/FontSizeDecrease.js +19 -0
  213. package/src/components/controls/FontSizeIncrease.js +19 -0
  214. package/src/components/controls/FormatBlock.js +64 -0
  215. package/src/components/controls/FormatCode.js +19 -0
  216. package/src/components/controls/Fullscreen.js +42 -0
  217. package/src/components/controls/InlineCode.js +19 -0
  218. package/src/components/controls/InsertTable.js +67 -0
  219. package/src/components/controls/Italic.js +19 -0
  220. package/src/components/controls/Language.js +69 -0
  221. package/src/components/controls/MdImage.js +72 -0
  222. package/src/components/controls/MdLink.js +60 -0
  223. package/src/components/controls/MdSpeechToText.js +46 -0
  224. package/src/components/controls/MdTable.js +79 -0
  225. package/src/components/controls/Menu.js +98 -0
  226. package/src/components/controls/Minimap.js +36 -0
  227. package/src/components/controls/Mode.js +30 -0
  228. package/src/components/controls/NumberList.js +19 -0
  229. package/src/components/controls/PgCount.js +12 -0
  230. package/src/components/controls/PgFirst.js +28 -0
  231. package/src/components/controls/PgGotoPage.js +48 -0
  232. package/src/components/controls/PgItemsPerPage.js +36 -0
  233. package/src/components/controls/PgLast.js +28 -0
  234. package/src/components/controls/PgNext.js +25 -0
  235. package/src/components/controls/PgPageInfo.js +22 -0
  236. package/src/components/controls/PgPrev.js +25 -0
  237. package/src/components/controls/Quote.js +19 -0
  238. package/src/components/controls/Redo.js +18 -0
  239. package/src/components/controls/Spacer.js +15 -0
  240. package/src/components/controls/Strikethrough.js +19 -0
  241. package/src/components/controls/TcDeleteRecord.js +30 -0
  242. package/src/components/controls/TcDeleteSelected.js +16 -0
  243. package/src/components/controls/TcEdit.js +73 -0
  244. package/src/components/controls/TcExportCsv.js +60 -0
  245. package/src/components/controls/TcExportJson.js +46 -0
  246. package/src/components/controls/TcFieldSortHide.js +56 -0
  247. package/src/components/controls/TcFilters.js +86 -0
  248. package/src/components/controls/TcFirstPage.js +24 -0
  249. package/src/components/controls/TcHiddenCount.js +39 -0
  250. package/src/components/controls/TcHide.js +30 -0
  251. package/src/components/controls/TcLastPage.js +24 -0
  252. package/src/components/controls/TcNextPage.js +24 -0
  253. package/src/components/controls/TcPageSelect.js +36 -0
  254. package/src/components/controls/TcPageSize.js +23 -0
  255. package/src/components/controls/TcPrevPage.js +24 -0
  256. package/src/components/controls/TcSearch.js +34 -0
  257. package/src/components/controls/TcShowAll.js +18 -0
  258. package/src/components/controls/TextBackgroundColor.js +84 -0
  259. package/src/components/controls/TextColor.js +84 -0
  260. package/src/components/controls/Underline.js +19 -0
  261. package/src/components/controls/Undo.js +18 -0
  262. package/src/components/controls/WordCount.js +48 -0
  263. package/src/components/controls/WordWrap.js +36 -0
  264. package/tasks/released/0006-create-pagination-component.md +1 -1
  265. package/tasks/released/0007-code-editor-updates/branch-custom-controls.png +0 -0
  266. package/tasks/released/0007-code-editor-updates/branch-toolbar.png +0 -0
  267. package/tasks/released/0007-code-editor-updates/docs-overview.png +0 -0
  268. package/tasks/released/0007-code-editor-updates/form-integration.png +0 -0
  269. package/tasks/released/0007-code-editor-updates/live-builtin-controls.png +0 -0
  270. package/tasks/released/0007-code-editor-updates/live-custom-controls.png +0 -0
  271. package/tasks/released/0007-code-editor-updates/live-toolbar.png +0 -0
  272. package/tasks/released/0007-code-editor-updates/local-builtin-controls.png +0 -0
  273. package/tasks/released/0007-code-editor-updates/local-fixed-builtin.png +0 -0
  274. package/tasks/released/0007-code-editor-updates/theme-selector.png +0 -0
  275. package/tasks/released/0007-code-editor-updates.md +96 -0
  276. package/tests/components/CodeEditor.browser-test.js +0 -42
  277. package/tests/components/HtmlEditor.browser-test.js +0 -88
  278. package/tests/components/MarkdownEditor.browser-test.js +0 -72
  279. package/tests/components/Pagination.browser-test.js +12 -90
  280. package/tests/components/{htmlEditorControls → controls}/Align.browser-test.js +16 -16
  281. package/tests/components/{htmlEditorControls → controls}/Bold.browser-test.js +7 -7
  282. package/tests/components/{htmlEditorControls → controls}/BulletList.browser-test.js +7 -7
  283. package/tests/components/{htmlEditorControls → controls}/CharacterCount.browser-test.js +5 -5
  284. package/tests/components/{htmlEditorControls → controls}/ClearFormatting.browser-test.js +7 -7
  285. package/tests/components/{htmlEditorControls → controls}/CodeBlock.browser-test.js +8 -8
  286. package/tests/components/controls/Control.browser-test.js +147 -0
  287. package/tests/components/{htmlEditorControls → controls}/ControlGroup.browser-test.js +9 -9
  288. package/tests/components/{htmlEditorControls → controls}/ControlSpacer.browser-test.js +4 -4
  289. package/tests/components/{codeEditorControls → controls}/CopyCode.browser-test.js +8 -8
  290. package/tests/components/{htmlEditorControls → controls}/CreateLink.browser-test.js +7 -7
  291. package/tests/components/{htmlEditorControls → controls}/DropdownControl.browser-test.js +8 -8
  292. package/tests/components/{codeEditorControls → controls}/EditorTheme.browser-test.js +4 -4
  293. package/tests/components/{tableControls → controls}/ExportControls.browser-test.js +22 -46
  294. package/tests/components/{tableControls → controls}/FieldSortHide.browser-test.js +14 -26
  295. package/tests/components/{tableControls → controls}/Filters.browser-test.js +15 -27
  296. package/tests/components/{codeEditorControls → controls}/FindReplace.browser-test.js +8 -8
  297. package/tests/components/{codeEditorControls → controls}/FoldAll.browser-test.js +10 -10
  298. package/tests/components/{codeEditorControls → controls}/FontSize.browser-test.js +19 -14
  299. package/tests/components/{htmlEditorControls → controls}/FormatBlock.browser-test.js +9 -9
  300. package/tests/components/{htmlEditorControls → controls}/FormatCode.browser-test.js +17 -18
  301. package/tests/components/{codeEditorControls → controls}/Fullscreen.browser-test.js +11 -32
  302. package/tests/components/{tableControls → controls}/HiddenCount.browser-test.js +4 -4
  303. package/tests/components/{htmlEditorControls → controls}/InlineCode.browser-test.js +7 -7
  304. package/tests/components/{htmlEditorControls → controls}/InsertTable.browser-test.js +7 -7
  305. package/tests/components/{htmlEditorControls → controls}/Italic.browser-test.js +7 -7
  306. package/tests/components/{codeEditorControls → controls}/LanguageSelect.browser-test.js +4 -4
  307. package/tests/components/{codeEditorControls → controls}/Minimap.browser-test.js +8 -8
  308. package/tests/components/{htmlEditorControls → controls}/Mode.browser-test.js +7 -7
  309. package/tests/components/{codeEditorControls → controls}/ModeVisibility.browser-test.js +7 -7
  310. package/tests/components/{htmlEditorControls → controls}/NumberList.browser-test.js +7 -7
  311. package/tests/components/{tableControls → controls}/PaginationControls.browser-test.js +45 -45
  312. package/tests/components/{tableControls → controls}/RecordControls.browser-test.js +24 -60
  313. package/tests/components/{tableControls → controls}/Search.browser-test.js +4 -16
  314. package/tests/components/{htmlEditorControls → controls}/Strikethrough.browser-test.js +7 -7
  315. package/tests/components/{htmlEditorControls → controls}/TextBackgroundColor.browser-test.js +5 -5
  316. package/tests/components/{htmlEditorControls → controls}/TextColor.browser-test.js +5 -5
  317. package/tests/components/{htmlEditorControls → controls}/Underline.browser-test.js +7 -7
  318. package/tests/components/{codeEditorControls → controls}/UndoRedo.browser-test.js +15 -15
  319. package/tests/components/{htmlEditorControls → controls}/WordCount.browser-test.js +5 -5
  320. package/tests/components/{codeEditorControls → controls}/WordWrap.browser-test.js +8 -8
  321. package/dist/components/codeEditorControls/CodeEditorControl.js +0 -17
  322. package/dist/components/codeEditorControls/ControlGroup.js +0 -12
  323. package/dist/components/codeEditorControls/ControlSpacer.js +0 -6
  324. package/dist/components/codeEditorControls/CopyCode.js +0 -9
  325. package/dist/components/codeEditorControls/EditorTheme.js +0 -26
  326. package/dist/components/codeEditorControls/FindReplace.js +0 -7
  327. package/dist/components/codeEditorControls/FoldAll.js +0 -7
  328. package/dist/components/codeEditorControls/FontSize.js +0 -13
  329. package/dist/components/codeEditorControls/FormatCode.js +0 -9
  330. package/dist/components/codeEditorControls/Fullscreen.js +0 -12
  331. package/dist/components/codeEditorControls/LanguageSelect.js +0 -15
  332. package/dist/components/codeEditorControls/Minimap.js +0 -8
  333. package/dist/components/codeEditorControls/Redo.js +0 -7
  334. package/dist/components/codeEditorControls/Undo.js +0 -7
  335. package/dist/components/codeEditorControls/WordWrap.js +0 -8
  336. package/dist/components/htmlEditorControls/AlignCenter.js +0 -12
  337. package/dist/components/htmlEditorControls/AlignJustify.js +0 -12
  338. package/dist/components/htmlEditorControls/AlignLeft.js +0 -12
  339. package/dist/components/htmlEditorControls/AlignRight.js +0 -12
  340. package/dist/components/htmlEditorControls/Bold.js +0 -12
  341. package/dist/components/htmlEditorControls/BulletList.js +0 -12
  342. package/dist/components/htmlEditorControls/CharacterCount.js +0 -18
  343. package/dist/components/htmlEditorControls/ClearFormatting.js +0 -12
  344. package/dist/components/htmlEditorControls/CodeBlock.js +0 -12
  345. package/dist/components/htmlEditorControls/ControlGroup.js +0 -12
  346. package/dist/components/htmlEditorControls/CreateLink.js +0 -15
  347. package/dist/components/htmlEditorControls/DropdownControl.js +0 -57
  348. package/dist/components/htmlEditorControls/FormatBlock.js +0 -12
  349. package/dist/components/htmlEditorControls/FormatCode.js +0 -1
  350. package/dist/components/htmlEditorControls/HtmlEditorControl.js +0 -44
  351. package/dist/components/htmlEditorControls/InlineCode.js +0 -12
  352. package/dist/components/htmlEditorControls/InsertTable.js +0 -15
  353. package/dist/components/htmlEditorControls/Italic.js +0 -12
  354. package/dist/components/htmlEditorControls/Mode.js +0 -9
  355. package/dist/components/htmlEditorControls/NumberList.js +0 -12
  356. package/dist/components/htmlEditorControls/Strikethrough.js +0 -12
  357. package/dist/components/htmlEditorControls/TextBackgroundColor.js +0 -97
  358. package/dist/components/htmlEditorControls/TextColor.js +0 -97
  359. package/dist/components/htmlEditorControls/Underline.js +0 -12
  360. package/dist/components/htmlEditorControls/WordCount.js +0 -18
  361. package/dist/components/markdownEditorControls/Bold.js +0 -11
  362. package/dist/components/markdownEditorControls/BulletList.js +0 -11
  363. package/dist/components/markdownEditorControls/Code.js +0 -11
  364. package/dist/components/markdownEditorControls/FormatBlock.js +0 -30
  365. package/dist/components/markdownEditorControls/Heading.js +0 -11
  366. package/dist/components/markdownEditorControls/Image.js +0 -93
  367. package/dist/components/markdownEditorControls/Italic.js +0 -11
  368. package/dist/components/markdownEditorControls/Link.js +0 -11
  369. package/dist/components/markdownEditorControls/MarkdownEditorControl.js +0 -39
  370. package/dist/components/markdownEditorControls/Menu.js +0 -30
  371. package/dist/components/markdownEditorControls/NumberedList.js +0 -11
  372. package/dist/components/markdownEditorControls/Quote.js +0 -11
  373. package/dist/components/markdownEditorControls/SpeechToText.js +0 -16
  374. package/dist/components/markdownEditorControls/Strikethrough.js +0 -11
  375. package/dist/components/markdownEditorControls/Table.js +0 -80
  376. package/dist/components/paginationControls/FirstPage.js +0 -1
  377. package/dist/components/paginationControls/GotoPage.js +0 -17
  378. package/dist/components/paginationControls/ItemsPerPage.js +0 -15
  379. package/dist/components/paginationControls/LastPage.js +0 -1
  380. package/dist/components/paginationControls/NextPage.js +0 -1
  381. package/dist/components/paginationControls/PageCount.js +0 -1
  382. package/dist/components/paginationControls/PageInfo.js +0 -6
  383. package/dist/components/paginationControls/PaginationButtonControl.js +0 -20
  384. package/dist/components/paginationControls/PaginationControl.js +0 -5
  385. package/dist/components/paginationControls/PrevPage.js +0 -1
  386. package/dist/components/tableControls/DeleteRecord.js +0 -7
  387. package/dist/components/tableControls/DeleteSelected.js +0 -7
  388. package/dist/components/tableControls/Edit.js +0 -18
  389. package/dist/components/tableControls/ExportCSV.js +0 -8
  390. package/dist/components/tableControls/ExportJson.js +0 -8
  391. package/dist/components/tableControls/FieldSortHide.js +0 -25
  392. package/dist/components/tableControls/Filters.js +0 -46
  393. package/dist/components/tableControls/FirstPage.js +0 -9
  394. package/dist/components/tableControls/HiddenCount.js +0 -3
  395. package/dist/components/tableControls/Hide.js +0 -5
  396. package/dist/components/tableControls/LastPage.js +0 -9
  397. package/dist/components/tableControls/NextPage.js +0 -9
  398. package/dist/components/tableControls/PageSelect.js +0 -22
  399. package/dist/components/tableControls/PageSize.js +0 -5
  400. package/dist/components/tableControls/PrevPage.js +0 -9
  401. package/dist/components/tableControls/Search.js +0 -9
  402. package/dist/components/tableControls/ShowAll.js +0 -5
  403. package/dist/components/tableControls/TableControl.js +0 -16
  404. package/docs/src/components/codeEditorControls/CodeEditorControl.js +0 -17
  405. package/docs/src/components/codeEditorControls/ControlGroup.js +0 -12
  406. package/docs/src/components/codeEditorControls/CopyCode.js +0 -9
  407. package/docs/src/components/codeEditorControls/EditorTheme.js +0 -26
  408. package/docs/src/components/codeEditorControls/FindReplace.js +0 -7
  409. package/docs/src/components/codeEditorControls/FoldAll.js +0 -7
  410. package/docs/src/components/codeEditorControls/FontSize.js +0 -13
  411. package/docs/src/components/codeEditorControls/FormatCode.js +0 -9
  412. package/docs/src/components/codeEditorControls/Fullscreen.js +0 -12
  413. package/docs/src/components/codeEditorControls/LanguageSelect.js +0 -15
  414. package/docs/src/components/codeEditorControls/Minimap.js +0 -8
  415. package/docs/src/components/codeEditorControls/Redo.js +0 -7
  416. package/docs/src/components/codeEditorControls/Undo.js +0 -7
  417. package/docs/src/components/codeEditorControls/WordWrap.js +0 -8
  418. package/docs/src/components/htmlEditorControls/AlignCenter.js +0 -12
  419. package/docs/src/components/htmlEditorControls/AlignJustify.js +0 -12
  420. package/docs/src/components/htmlEditorControls/AlignLeft.js +0 -12
  421. package/docs/src/components/htmlEditorControls/AlignRight.js +0 -12
  422. package/docs/src/components/htmlEditorControls/Bold.js +0 -12
  423. package/docs/src/components/htmlEditorControls/BulletList.js +0 -12
  424. package/docs/src/components/htmlEditorControls/CharacterCount.js +0 -18
  425. package/docs/src/components/htmlEditorControls/ClearFormatting.js +0 -12
  426. package/docs/src/components/htmlEditorControls/CodeBlock.js +0 -12
  427. package/docs/src/components/htmlEditorControls/ControlGroup.js +0 -12
  428. package/docs/src/components/htmlEditorControls/ControlSpacer.js +0 -6
  429. package/docs/src/components/htmlEditorControls/CreateLink.js +0 -15
  430. package/docs/src/components/htmlEditorControls/DropdownControl.js +0 -57
  431. package/docs/src/components/htmlEditorControls/FormatBlock.js +0 -12
  432. package/docs/src/components/htmlEditorControls/FormatCode.js +0 -1
  433. package/docs/src/components/htmlEditorControls/HtmlEditorControl.js +0 -44
  434. package/docs/src/components/htmlEditorControls/InlineCode.js +0 -12
  435. package/docs/src/components/htmlEditorControls/InsertTable.js +0 -15
  436. package/docs/src/components/htmlEditorControls/Italic.js +0 -12
  437. package/docs/src/components/htmlEditorControls/Mode.js +0 -9
  438. package/docs/src/components/htmlEditorControls/NumberList.js +0 -12
  439. package/docs/src/components/htmlEditorControls/Strikethrough.js +0 -12
  440. package/docs/src/components/htmlEditorControls/TextBackgroundColor.js +0 -97
  441. package/docs/src/components/htmlEditorControls/TextColor.js +0 -97
  442. package/docs/src/components/htmlEditorControls/Underline.js +0 -12
  443. package/docs/src/components/htmlEditorControls/WordCount.js +0 -18
  444. package/docs/src/components/markdownEditorControls/Bold.js +0 -11
  445. package/docs/src/components/markdownEditorControls/BulletList.js +0 -11
  446. package/docs/src/components/markdownEditorControls/Code.js +0 -11
  447. package/docs/src/components/markdownEditorControls/FormatBlock.js +0 -30
  448. package/docs/src/components/markdownEditorControls/Heading.js +0 -11
  449. package/docs/src/components/markdownEditorControls/Image.js +0 -93
  450. package/docs/src/components/markdownEditorControls/Italic.js +0 -11
  451. package/docs/src/components/markdownEditorControls/Link.js +0 -11
  452. package/docs/src/components/markdownEditorControls/MarkdownEditorControl.js +0 -39
  453. package/docs/src/components/markdownEditorControls/Menu.js +0 -30
  454. package/docs/src/components/markdownEditorControls/NumberedList.js +0 -11
  455. package/docs/src/components/markdownEditorControls/Quote.js +0 -11
  456. package/docs/src/components/markdownEditorControls/SpeechToText.js +0 -16
  457. package/docs/src/components/markdownEditorControls/Strikethrough.js +0 -11
  458. package/docs/src/components/markdownEditorControls/Table.js +0 -80
  459. package/docs/src/components/paginationControls/FirstPage.js +0 -1
  460. package/docs/src/components/paginationControls/GotoPage.js +0 -17
  461. package/docs/src/components/paginationControls/ItemsPerPage.js +0 -15
  462. package/docs/src/components/paginationControls/LastPage.js +0 -1
  463. package/docs/src/components/paginationControls/NextPage.js +0 -1
  464. package/docs/src/components/paginationControls/PageCount.js +0 -1
  465. package/docs/src/components/paginationControls/PageInfo.js +0 -6
  466. package/docs/src/components/paginationControls/PaginationButtonControl.js +0 -20
  467. package/docs/src/components/paginationControls/PaginationControl.js +0 -5
  468. package/docs/src/components/paginationControls/PrevPage.js +0 -1
  469. package/docs/src/components/tableControls/DeleteRecord.js +0 -7
  470. package/docs/src/components/tableControls/DeleteSelected.js +0 -7
  471. package/docs/src/components/tableControls/Edit.js +0 -18
  472. package/docs/src/components/tableControls/ExportCSV.js +0 -8
  473. package/docs/src/components/tableControls/ExportJson.js +0 -8
  474. package/docs/src/components/tableControls/FieldSortHide.js +0 -25
  475. package/docs/src/components/tableControls/Filters.js +0 -46
  476. package/docs/src/components/tableControls/FirstPage.js +0 -9
  477. package/docs/src/components/tableControls/HiddenCount.js +0 -3
  478. package/docs/src/components/tableControls/Hide.js +0 -5
  479. package/docs/src/components/tableControls/LastPage.js +0 -9
  480. package/docs/src/components/tableControls/NextPage.js +0 -9
  481. package/docs/src/components/tableControls/PageSelect.js +0 -22
  482. package/docs/src/components/tableControls/PageSize.js +0 -5
  483. package/docs/src/components/tableControls/PrevPage.js +0 -9
  484. package/docs/src/components/tableControls/Search.js +0 -9
  485. package/docs/src/components/tableControls/ShowAll.js +0 -5
  486. package/docs/src/components/tableControls/TableControl.js +0 -16
  487. package/src/components/codeEditorControls/CodeEditorControl.js +0 -134
  488. package/src/components/codeEditorControls/ControlSpacer.js +0 -23
  489. package/src/components/codeEditorControls/CopyCode.js +0 -37
  490. package/src/components/codeEditorControls/EditorTheme.js +0 -81
  491. package/src/components/codeEditorControls/FindReplace.js +0 -35
  492. package/src/components/codeEditorControls/FoldAll.js +0 -49
  493. package/src/components/codeEditorControls/FontSize.js +0 -45
  494. package/src/components/codeEditorControls/FormatCode.js +0 -37
  495. package/src/components/codeEditorControls/Fullscreen.js +0 -72
  496. package/src/components/codeEditorControls/LanguageSelect.js +0 -74
  497. package/src/components/codeEditorControls/Minimap.js +0 -60
  498. package/src/components/codeEditorControls/Redo.js +0 -35
  499. package/src/components/codeEditorControls/Undo.js +0 -35
  500. package/src/components/codeEditorControls/WordWrap.js +0 -60
  501. package/src/components/htmlEditorControls/AlignCenter.js +0 -63
  502. package/src/components/htmlEditorControls/AlignJustify.js +0 -63
  503. package/src/components/htmlEditorControls/AlignLeft.js +0 -63
  504. package/src/components/htmlEditorControls/AlignRight.js +0 -63
  505. package/src/components/htmlEditorControls/Bold.js +0 -63
  506. package/src/components/htmlEditorControls/BulletList.js +0 -63
  507. package/src/components/htmlEditorControls/CharacterCount.js +0 -75
  508. package/src/components/htmlEditorControls/ClearFormatting.js +0 -63
  509. package/src/components/htmlEditorControls/CodeBlock.js +0 -64
  510. package/src/components/htmlEditorControls/ControlGroup.js +0 -70
  511. package/src/components/htmlEditorControls/ControlSpacer.js +0 -23
  512. package/src/components/htmlEditorControls/CreateLink.js +0 -115
  513. package/src/components/htmlEditorControls/DropdownControl.js +0 -149
  514. package/src/components/htmlEditorControls/FormatBlock.js +0 -106
  515. package/src/components/htmlEditorControls/FormatCode.js +0 -7
  516. package/src/components/htmlEditorControls/HtmlEditorControl.js +0 -164
  517. package/src/components/htmlEditorControls/InlineCode.js +0 -63
  518. package/src/components/htmlEditorControls/InsertTable.js +0 -126
  519. package/src/components/htmlEditorControls/Italic.js +0 -63
  520. package/src/components/htmlEditorControls/Mode.js +0 -68
  521. package/src/components/htmlEditorControls/NumberList.js +0 -63
  522. package/src/components/htmlEditorControls/Strikethrough.js +0 -63
  523. package/src/components/htmlEditorControls/TextBackgroundColor.js +0 -189
  524. package/src/components/htmlEditorControls/TextColor.js +0 -189
  525. package/src/components/htmlEditorControls/Underline.js +0 -63
  526. package/src/components/htmlEditorControls/WordCount.js +0 -76
  527. package/src/components/markdownEditorControls/Bold.js +0 -30
  528. package/src/components/markdownEditorControls/BulletList.js +0 -30
  529. package/src/components/markdownEditorControls/Code.js +0 -39
  530. package/src/components/markdownEditorControls/FormatBlock.js +0 -102
  531. package/src/components/markdownEditorControls/Heading.js +0 -46
  532. package/src/components/markdownEditorControls/Image.js +0 -250
  533. package/src/components/markdownEditorControls/Italic.js +0 -30
  534. package/src/components/markdownEditorControls/Link.js +0 -74
  535. package/src/components/markdownEditorControls/MarkdownEditorControl.js +0 -158
  536. package/src/components/markdownEditorControls/Menu.js +0 -86
  537. package/src/components/markdownEditorControls/NumberedList.js +0 -69
  538. package/src/components/markdownEditorControls/Quote.js +0 -30
  539. package/src/components/markdownEditorControls/SpeechToText.js +0 -65
  540. package/src/components/markdownEditorControls/Strikethrough.js +0 -35
  541. package/src/components/markdownEditorControls/Table.js +0 -165
  542. package/src/components/paginationControls/FirstPage.js +0 -26
  543. package/src/components/paginationControls/GotoPage.js +0 -56
  544. package/src/components/paginationControls/ItemsPerPage.js +0 -44
  545. package/src/components/paginationControls/LastPage.js +0 -26
  546. package/src/components/paginationControls/NextPage.js +0 -26
  547. package/src/components/paginationControls/PageCount.js +0 -10
  548. package/src/components/paginationControls/PageInfo.js +0 -23
  549. package/src/components/paginationControls/PaginationButtonControl.js +0 -76
  550. package/src/components/paginationControls/PaginationControl.js +0 -43
  551. package/src/components/paginationControls/PrevPage.js +0 -26
  552. package/src/components/tableControls/DeleteRecord.js +0 -29
  553. package/src/components/tableControls/DeleteSelected.js +0 -27
  554. package/src/components/tableControls/Edit.js +0 -86
  555. package/src/components/tableControls/ExportCSV.js +0 -71
  556. package/src/components/tableControls/ExportJson.js +0 -55
  557. package/src/components/tableControls/FieldSortHide.js +0 -76
  558. package/src/components/tableControls/Filters.js +0 -113
  559. package/src/components/tableControls/FirstPage.js +0 -65
  560. package/src/components/tableControls/HiddenCount.js +0 -43
  561. package/src/components/tableControls/Hide.js +0 -34
  562. package/src/components/tableControls/LastPage.js +0 -65
  563. package/src/components/tableControls/NextPage.js +0 -65
  564. package/src/components/tableControls/PageSelect.js +0 -101
  565. package/src/components/tableControls/PageSize.js +0 -68
  566. package/src/components/tableControls/PrevPage.js +0 -65
  567. package/src/components/tableControls/Search.js +0 -56
  568. package/src/components/tableControls/ShowAll.js +0 -34
  569. package/src/components/tableControls/TableControl.js +0 -103
  570. package/tasks/0006-create-pagination-component/screenshot-01-top.png +0 -0
  571. package/tasks/0006-create-pagination-component/screenshot-02-controls.png +0 -0
  572. package/tasks/0006-create-pagination-component/screenshot-03-preconfigured.png +0 -0
  573. package/tasks/0006-create-pagination-component/screenshot-04-live-demo-page1.png +0 -0
  574. package/tasks/0006-create-pagination-component/screenshot-05-live-demo-page2.png +0 -0
  575. package/tasks/0006-create-pagination-component/screenshot-06-live-demo-last-page.png +0 -0
  576. package/tasks/0006-create-pagination-component/screenshot-07-js-reference.png +0 -0
  577. package/tasks/0006-create-pagination-component.md +0 -136
  578. package/tests/components/tableControls/TableControl.browser-test.js +0 -300
@@ -0,0 +1,35 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class FoldAll extends ButtonControl {
6
+ static requires = ['foldAll', 'unfoldAll'];
7
+ static hostMode = 'code';
8
+
9
+ static properties = {
10
+ ...ButtonControl.properties,
11
+ folded: { type: Boolean, state: true }
12
+ };
13
+
14
+ constructor() {
15
+ super();
16
+ this.folded = false;
17
+ }
18
+
19
+ connectedCallback() {
20
+ super.connectedCallback();
21
+ if(!this.hasAttribute('title')) this.title = 'Fold All';
22
+ }
23
+
24
+ handleAction() {
25
+ this.folded = !this.folded;
26
+ if(this.folded) this.host?.foldAll?.();
27
+ else this.host?.unfoldAll?.();
28
+ }
29
+
30
+ render() {
31
+ return html`<slot><k-icon name="${this.folded ? 'unfold_more' : 'unfold_less'}"></k-icon></slot>`;
32
+ }
33
+ }
34
+
35
+ customElements.define('kc-fold-all', FoldAll);
@@ -0,0 +1,31 @@
1
+ import Control from './Control.js';
2
+ import { html, css } from '../../lit-all.min.js';
3
+ import './FontSizeIncrease.js';
4
+ import './FontSizeDecrease.js';
5
+ import '../ControlGroup.js';
6
+
7
+ /*
8
+ Composite control rendering decrease + increase as a single grouped pair.
9
+ Mode/host visibility follows the children.
10
+ */
11
+ export default class FontSize extends Control {
12
+ static hostMode = 'code';
13
+
14
+ static styles = [
15
+ Control.styles,
16
+ css`
17
+ :host { gap: 0; }
18
+ `
19
+ ];
20
+
21
+ render() {
22
+ return html`
23
+ <k-control-group class="b r mq">
24
+ <kc-font-size-decrease></kc-font-size-decrease>
25
+ <kc-font-size-increase></kc-font-size-increase>
26
+ </k-control-group>
27
+ `;
28
+ }
29
+ }
30
+
31
+ customElements.define('kc-font-size', FontSize);
@@ -0,0 +1,19 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class FontSizeDecrease extends ButtonControl {
6
+ static requires = ['decreaseFontSize'];
7
+ static hostMode = 'code';
8
+
9
+ connectedCallback() {
10
+ super.connectedCallback();
11
+ if(!this.hasAttribute('title')) this.title = 'Decrease Font Size';
12
+ }
13
+
14
+ handleAction() { this.host?.decreaseFontSize?.(); }
15
+
16
+ render() { return html`<slot><k-icon name="text_decrease"></k-icon></slot>`; }
17
+ }
18
+
19
+ customElements.define('kc-font-size-decrease', FontSizeDecrease);
@@ -0,0 +1,19 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class FontSizeIncrease extends ButtonControl {
6
+ static requires = ['increaseFontSize'];
7
+ static hostMode = 'code';
8
+
9
+ connectedCallback() {
10
+ super.connectedCallback();
11
+ if(!this.hasAttribute('title')) this.title = 'Increase Font Size';
12
+ }
13
+
14
+ handleAction() { this.host?.increaseFontSize?.(); }
15
+
16
+ render() { return html`<slot><k-icon name="text_increase"></k-icon></slot>`; }
17
+ }
18
+
19
+ customElements.define('kc-font-size-increase', FontSizeIncrease);
@@ -0,0 +1,64 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html, css } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ const TAG_LABELS = {
6
+ p: 'Paragraph',
7
+ h1: 'Heading 1', h2: 'Heading 2', h3: 'Heading 3',
8
+ h4: 'Heading 4', h5: 'Heading 5', h6: 'Heading 6',
9
+ blockquote: 'Blockquote',
10
+ pre: 'Code Block'
11
+ };
12
+
13
+ const TAG_ICONS = {
14
+ p: 'format_paragraph',
15
+ h1: 'format_h1', h2: 'format_h2', h3: 'format_h3',
16
+ h4: 'format_h4', h5: 'format_h5', h6: 'format_h6',
17
+ blockquote: 'format_quote',
18
+ pre: 'code_blocks'
19
+ };
20
+
21
+ export default class FormatBlock extends ButtonControl {
22
+ static requires = ['formatBlock'];
23
+ static hostMode = ['visual', 'write'];
24
+
25
+ static properties = {
26
+ ...ButtonControl.properties,
27
+ tag: { type: String, reflect: true }
28
+ };
29
+
30
+ constructor() {
31
+ super();
32
+ this.tag = 'p';
33
+ }
34
+
35
+ connectedCallback() {
36
+ super.connectedCallback();
37
+ if(!this.hasAttribute('title')) this.title = TAG_LABELS[this.tag] || this.tag;
38
+ }
39
+
40
+ getDefaultLabel(tag) { return TAG_LABELS[tag || this.tag] || (tag || this.tag).toUpperCase(); }
41
+ getDefaultIcon(tag) { return TAG_ICONS[tag || this.tag] || 'format_paragraph'; }
42
+
43
+ handleAction() { this.host?.formatBlock?.(this.tag); }
44
+
45
+ render() {
46
+ const label = TAG_LABELS[this.tag] || this.tag.toUpperCase();
47
+ const icon = TAG_ICONS[this.tag] || 'format_paragraph';
48
+ return html`
49
+ <slot name="icon"><k-icon name=${icon}></k-icon></slot>
50
+ <slot>${label}</slot>
51
+ `;
52
+ }
53
+
54
+ static styles = [
55
+ ButtonControl.styles,
56
+ css`
57
+ :host {
58
+ gap: 0.5rem;
59
+ }
60
+ `
61
+ ];
62
+ }
63
+
64
+ customElements.define('kc-format-block', FormatBlock);
@@ -0,0 +1,19 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class FormatCode extends ButtonControl {
6
+ static requires = ['formatCode'];
7
+ static hostMode = 'code';
8
+
9
+ connectedCallback() {
10
+ super.connectedCallback();
11
+ if(!this.hasAttribute('title')) this.title = 'Format Code';
12
+ }
13
+
14
+ handleAction() { this.host?.formatCode?.(); }
15
+
16
+ render() { return html`<slot><k-icon name="frame_source"></k-icon></slot>`; }
17
+ }
18
+
19
+ customElements.define('kc-format-code', FormatCode);
@@ -0,0 +1,42 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class Fullscreen extends ButtonControl {
6
+ static requires = ['toggleFullscreen'];
7
+ static hostEvents = ['fullscreen-changed'];
8
+
9
+ static properties = {
10
+ ...ButtonControl.properties,
11
+ fullscreen: { type: Boolean, state: true }
12
+ };
13
+
14
+ constructor() {
15
+ super();
16
+ this.fullscreen = false;
17
+ }
18
+
19
+ connectedCallback() {
20
+ super.connectedCallback();
21
+ if(!this.hasAttribute('title')) this.title = 'Fullscreen';
22
+ if(this.host) this.fullscreen = !!this.host.fullscreen;
23
+ }
24
+
25
+ willUpdate(changed) {
26
+ super.willUpdate?.(changed);
27
+ if(this.host) this.fullscreen = !!this.host.fullscreen;
28
+ }
29
+
30
+ updated(changed) {
31
+ super.updated(changed);
32
+ if(changed.has('fullscreen')) this.toggleAttribute('active', this.fullscreen);
33
+ }
34
+
35
+ handleAction() { this.host?.toggleFullscreen?.(); }
36
+
37
+ render() {
38
+ return html`<slot><k-icon name="${this.fullscreen ? 'fullscreen_exit' : 'fullscreen'}"></k-icon></slot>`;
39
+ }
40
+ }
41
+
42
+ customElements.define('kc-fullscreen', Fullscreen);
@@ -0,0 +1,19 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class InlineCode extends ButtonControl {
6
+ static requires = ['inlineCode'];
7
+ static hostMode = ['visual', 'write'];
8
+
9
+ connectedCallback() {
10
+ super.connectedCallback();
11
+ if(!this.hasAttribute('title')) this.title = 'Inline Code';
12
+ }
13
+
14
+ handleAction() { this.host?.inlineCode?.(); }
15
+
16
+ render() { return html`<slot><k-icon name="code_blocks"></k-icon></slot>`; }
17
+ }
18
+
19
+ customElements.define('kc-inline-code', InlineCode);
@@ -0,0 +1,67 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+ import Dialog from '../Dialog.js';
5
+
6
+ export default class InsertTable extends ButtonControl {
7
+ static requires = ['insertTable'];
8
+ static hostMode = 'visual';
9
+
10
+ connectedCallback() {
11
+ super.connectedCallback();
12
+ if(!this.hasAttribute('title')) this.title = 'Insert Table';
13
+ }
14
+
15
+ handleAction() {
16
+ const host = this.host;
17
+ if(!host) return;
18
+ const existing = host.getTableAtSelection?.();
19
+ const isEditing = !!existing;
20
+ const defRows = existing?.rows ?? 3;
21
+ const defCols = existing?.cols ?? 3;
22
+ const defHeaders = existing?.hasHeaders ?? true;
23
+ const cellData = existing?.cellData ?? null;
24
+
25
+ const rowsInput = document.createElement('input');
26
+ rowsInput.type = 'number'; rowsInput.min = '1'; rowsInput.max = '20'; rowsInput.value = String(defRows);
27
+ rowsInput.style.cssText = 'padding: 0.5rem; border: 1px solid var(--c_border); border-radius: var(--radius); font: inherit;';
28
+
29
+ const colsInput = document.createElement('input');
30
+ colsInput.type = 'number'; colsInput.min = '1'; colsInput.max = '10'; colsInput.value = String(defCols);
31
+ colsInput.style.cssText = 'padding: 0.5rem; border: 1px solid var(--c_border); border-radius: var(--radius); font: inherit;';
32
+
33
+ const headersCheckbox = document.createElement('input');
34
+ headersCheckbox.type = 'checkbox'; headersCheckbox.checked = defHeaders;
35
+ headersCheckbox.id = 'kc-table-headers';
36
+
37
+ const content = document.createElement('div');
38
+ content.className = 'p';
39
+ content.style.cssText = 'display: flex; flex-direction: column; gap: 1rem;';
40
+ content.innerHTML = `
41
+ <div style="display: flex; flex-direction: column; gap: 0.5rem;"><label style="font-weight: bold;">Rows</label></div>
42
+ <div style="display: flex; flex-direction: column; gap: 0.5rem;"><label style="font-weight: bold;">Columns</label></div>
43
+ <div style="display: flex; align-items: center; gap: 0.5rem;"><label for="kc-table-headers" style="font-weight: bold;">Include Headers</label></div>
44
+ `;
45
+ content.children[0].appendChild(rowsInput);
46
+ content.children[1].appendChild(colsInput);
47
+ content.children[2].insertBefore(headersCheckbox, content.children[2].firstChild);
48
+
49
+ Dialog.create(content, {
50
+ title: isEditing ? 'Edit Table' : 'Insert Table',
51
+ cancelText: 'Cancel',
52
+ confirmText: isEditing ? 'Update Table' : 'Insert Table',
53
+ confirmClasses: 'success',
54
+ confirmAction: () => {
55
+ const rows = parseInt(rowsInput.value) || 3;
56
+ const cols = parseInt(colsInput.value) || 3;
57
+ const includeHeaders = headersCheckbox.checked;
58
+ if(isEditing) host.removeTableByKey?.(existing.key);
59
+ host.insertTable(rows, cols, includeHeaders, cellData);
60
+ }
61
+ });
62
+ }
63
+
64
+ render() { return html`<slot><k-icon name="table"></k-icon></slot>`; }
65
+ }
66
+
67
+ customElements.define('kc-insert-table', InsertTable);
@@ -0,0 +1,19 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ export default class Italic extends ButtonControl {
6
+ static requires = ['italic'];
7
+ static hostMode = ['visual', 'write'];
8
+
9
+ connectedCallback() {
10
+ super.connectedCallback();
11
+ if(!this.hasAttribute('title')) this.title = 'Italic';
12
+ }
13
+
14
+ handleAction() { this.host?.italic?.(); }
15
+
16
+ render() { return html`<slot><k-icon name="format_italic"></k-icon></slot>`; }
17
+ }
18
+
19
+ customElements.define('kc-italic', Italic);
@@ -0,0 +1,69 @@
1
+ import Control from './Control.js';
2
+ import { html, css } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ const COMMON_LANGUAGES = [
6
+ 'javascript', 'typescript', 'html', 'css', 'json',
7
+ 'markdown', 'python', 'java', 'csharp', 'cpp',
8
+ 'go', 'rust', 'php', 'ruby', 'sql',
9
+ 'xml', 'yaml', 'shell', 'plaintext'
10
+ ];
11
+
12
+ export default class LanguageSelect extends Control {
13
+ static requires = ['setLanguage'];
14
+ static hostMode = 'code';
15
+ static hostEvents = ['language-changed'];
16
+
17
+ static properties = {
18
+ ...Control.properties,
19
+ value: { type: String, state: true }
20
+ };
21
+
22
+ constructor() {
23
+ super();
24
+ this.value = 'javascript';
25
+ }
26
+
27
+ connectedCallback() {
28
+ super.connectedCallback();
29
+ if(this.host) this.value = this.host.language || 'javascript';
30
+ }
31
+
32
+ willUpdate(changed) {
33
+ super.willUpdate?.(changed);
34
+ if(this.host) this.value = this.host.language || 'javascript';
35
+ }
36
+
37
+ handleChange = e => { this.host?.setLanguage?.(e.target.value); };
38
+
39
+ static styles = [
40
+ Control.styles,
41
+ css`
42
+ :host {
43
+ background-color: var(--input_bg);
44
+ color: var(--input_tc);
45
+ border: var(--input_border_width) solid var(--c_input_border);
46
+ border-radius: var(--radius);
47
+ transition: box-shadow var(--animation_ms);
48
+ margin-right: var(--spacer_q);
49
+ }
50
+ select {
51
+ border: 0;
52
+ padding: var(--spacer_h) var(--spacer);
53
+ min-height: 2.5rem;
54
+ }
55
+ `
56
+ ];
57
+
58
+ render() {
59
+ return html`
60
+ <select .value=${this.value} @change=${this.handleChange} title="Language">
61
+ ${COMMON_LANGUAGES.map(lang => html`
62
+ <option value="${lang}" ?selected=${this.value === lang}>${lang}</option>
63
+ `)}
64
+ </select>
65
+ `;
66
+ }
67
+ }
68
+
69
+ customElements.define('kc-language', LanguageSelect);
@@ -0,0 +1,72 @@
1
+ import Control from './Control.js';
2
+ import { html, css } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+ import '../Dropdown.js';
5
+
6
+ export default class MdImage extends Control {
7
+ static requires = ['replaceSelection'];
8
+ static hostMode = 'write';
9
+
10
+ handleDropdownOpened = () => {
11
+ requestAnimationFrame(() => {
12
+ const url = this.shadowRoot.querySelector('.image-url');
13
+ const alt = this.shadowRoot.querySelector('.image-alt');
14
+ url?.focus();
15
+ const ta = this.host?.textarea;
16
+ if(ta && alt) alt.value = ta.value.substring(ta.selectionStart, ta.selectionEnd) || '';
17
+ });
18
+ };
19
+
20
+ handleDropdownClosed = () => {
21
+ const u = this.shadowRoot.querySelector('.image-url');
22
+ const a = this.shadowRoot.querySelector('.image-alt');
23
+ if(u) u.value = '';
24
+ if(a) a.value = '';
25
+ };
26
+
27
+ handleFormKeydown = (e) => {
28
+ if(e.key === 'Enter'){ e.preventDefault(); this.submit(); }
29
+ else if(e.key === 'Escape') this.shadowRoot.querySelector('k-dropdown')?.close();
30
+ };
31
+
32
+ submit() {
33
+ const url = this.shadowRoot.querySelector('.image-url').value.trim();
34
+ const alt = this.shadowRoot.querySelector('.image-alt').value.trim();
35
+ if(!url){ this.shadowRoot.querySelector('.image-url').focus(); return; }
36
+ this.host?.replaceSelection?.(`![${alt}](${url})`, { selectInserted: false });
37
+ this.shadowRoot.querySelector('k-dropdown')?.close();
38
+ }
39
+
40
+ render() {
41
+ return html`
42
+ <k-dropdown @opened=${this.handleDropdownOpened} @closed=${this.handleDropdownClosed}>
43
+ <button slot="trigger" type="button" class="trigger" title="Image"><k-icon name="image"></k-icon></button>
44
+ <div class="image-form" @keydown=${this.handleFormKeydown}>
45
+ <label>Image URL</label>
46
+ <input class="image-url" type="url" required placeholder="https://example.com/image.png" />
47
+ <label>Alt text</label>
48
+ <input class="image-alt" type="text" placeholder="Description for screen readers" />
49
+ <div class="image-actions">
50
+ <button type="button" @click=${() => this.shadowRoot.querySelector('k-dropdown').close()}>Cancel</button>
51
+ <button type="button" class="primary" @click=${() => this.submit()}>Insert</button>
52
+ </div>
53
+ </div>
54
+ </k-dropdown>
55
+ `;
56
+ }
57
+
58
+ static styles = [
59
+ Control.styles,
60
+ css`
61
+ .trigger { min-width: 2.5rem; min-height: 2.5rem; background: transparent; border: none; cursor: pointer; }
62
+ .image-form { display: flex; flex-direction: column; gap: 0.5rem; padding: 0.75rem; min-width: 16rem; }
63
+ .image-form label { font-weight: bold; font-size: 0.875rem; }
64
+ .image-form input { padding: 0.5rem; border: 1px solid var(--c_border); border-radius: var(--radius); font: inherit; }
65
+ .image-actions { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 0.25rem; }
66
+ .image-actions button { padding: 0.4rem 0.8rem; border: 1px solid var(--c_border); border-radius: var(--radius); cursor: pointer; font: inherit; }
67
+ .image-actions button.primary { background: var(--c_primary); color: white; border-color: var(--c_primary); }
68
+ `
69
+ ];
70
+ }
71
+
72
+ customElements.define('kc-md-image', MdImage);
@@ -0,0 +1,60 @@
1
+ import ButtonControl from './ButtonControl.js';
2
+ import { html } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+
5
+ /*
6
+ Markdown Link control. Toggles `[text](url)` wrapping. If the cursor is
7
+ inside an existing link, unwraps it to just the label.
8
+ */
9
+ export default class MdLink extends ButtonControl {
10
+ static requires = ['replaceSelection'];
11
+ static hostMode = 'write';
12
+
13
+ connectedCallback() {
14
+ super.connectedCallback();
15
+ if(!this.hasAttribute('title')) this.title = 'Link';
16
+ }
17
+
18
+ handleAction() {
19
+ const host = this.host;
20
+ if(!host) return;
21
+ const ta = host.textarea;
22
+ if(!ta) return;
23
+ const start = ta.selectionStart;
24
+ const end = ta.selectionEnd;
25
+ const selText = ta.value.substring(start, end);
26
+
27
+ const re = /\[([^\]]*)\]\([^)]*\)/g;
28
+ let m;
29
+ while((m = re.exec(ta.value)) !== null){
30
+ const ms = m.index;
31
+ const me = ms + m[0].length;
32
+ if(start >= ms && end <= me){
33
+ const label = m[1];
34
+ const next = ta.value.substring(0, ms) + label + ta.value.substring(me);
35
+ ta.value = next;
36
+ ta.selectionStart = ms;
37
+ ta.selectionEnd = ms + label.length;
38
+ ta.focus();
39
+ host.value = next;
40
+ ta.dispatchEvent(new Event('input', { bubbles: true }));
41
+ return;
42
+ }
43
+ }
44
+
45
+ const text = selText || 'link text';
46
+ const inserted = `[${text}](url)`;
47
+ const next = ta.value.substring(0, start) + inserted + ta.value.substring(end);
48
+ const urlStart = start + 1 + text.length + 2;
49
+ ta.value = next;
50
+ ta.selectionStart = urlStart;
51
+ ta.selectionEnd = urlStart + 'url'.length;
52
+ ta.focus();
53
+ host.value = next;
54
+ ta.dispatchEvent(new Event('input', { bubbles: true }));
55
+ }
56
+
57
+ render() { return html`<slot><k-icon name="link"></k-icon></slot>`; }
58
+ }
59
+
60
+ customElements.define('kc-md-link', MdLink);
@@ -0,0 +1,46 @@
1
+ import Control from './Control.js';
2
+ import { html, css } from '../../lit-all.min.js';
3
+ import '../SpeechToText.js';
4
+
5
+ export default class MdSpeechToText extends Control {
6
+ static requires = ['replaceSelection'];
7
+ static hostMode = 'write';
8
+
9
+ static properties = {
10
+ ...Control.properties,
11
+ language: { type: String, reflect: true },
12
+ continuous: { type: Boolean, reflect: true }
13
+ };
14
+
15
+ constructor() {
16
+ super();
17
+ this.language = 'en-US';
18
+ this.continuous = false;
19
+ }
20
+
21
+ handleEnd = (e) => {
22
+ const text = (e.detail?.text || '').trim();
23
+ if(!text) return;
24
+ this.host?.replaceSelection?.(text + ' ', { selectInserted: false });
25
+ };
26
+
27
+ render() {
28
+ return html`
29
+ <k-speech-to-text
30
+ language=${this.language}
31
+ ?continuous=${this.continuous}
32
+ @end=${this.handleEnd}
33
+ ></k-speech-to-text>
34
+ `;
35
+ }
36
+
37
+ static styles = [
38
+ Control.styles,
39
+ css`
40
+ :host { margin: var(--spacer_q); }
41
+ k-speech-to-text { --btn_size: 2rem; }
42
+ `
43
+ ];
44
+ }
45
+
46
+ customElements.define('kc-md-speech-to-text', MdSpeechToText);
@@ -0,0 +1,79 @@
1
+ import Control from './Control.js';
2
+ import { html, css } from '../../lit-all.min.js';
3
+ import '../Icon.js';
4
+ import '../Dropdown.js';
5
+ import { bound } from '../../utils/number.js';
6
+
7
+ export default class MdTable extends Control {
8
+ static requires = ['replaceSelection'];
9
+ static hostMode = 'write';
10
+
11
+ handleDropdownOpened = () => {
12
+ requestAnimationFrame(() => {
13
+ const cols = this.shadowRoot.querySelector('.tbl-cols');
14
+ if(cols){ cols.value = '3'; cols.select(); }
15
+ const rows = this.shadowRoot.querySelector('.tbl-rows');
16
+ if(rows) rows.value = '2';
17
+ });
18
+ };
19
+
20
+ handleFormKeydown = (e) => {
21
+ if(e.key === 'Enter'){ e.preventDefault(); this.submit(); }
22
+ else if(e.key === 'Escape') this.shadowRoot.querySelector('k-dropdown')?.close();
23
+ };
24
+
25
+ submit() {
26
+ const cols = this.clamp(this.shadowRoot.querySelector('.tbl-cols').value, 1, 20);
27
+ const rows = this.clamp(this.shadowRoot.querySelector('.tbl-rows').value, 1, 50);
28
+ if(!cols || !rows) return;
29
+ this.host?.replaceSelection?.(this.buildTable(cols, rows), { selectInserted: false });
30
+ this.shadowRoot.querySelector('k-dropdown')?.close();
31
+ }
32
+
33
+ clamp(raw, min, max) {
34
+ const n = parseInt(raw, 10);
35
+ if(!Number.isFinite(n)) return 0;
36
+ return bound(n, min, max);
37
+ }
38
+
39
+ buildTable(cols, rows) {
40
+ const headerCells = Array.from({ length: cols }, (_, i) => ` Header ${i + 1} `).join('|');
41
+ const separatorCells = Array.from({ length: cols }, () => ' --- ').join('|');
42
+ const bodyCells = Array.from({ length: cols }, () => ' ').join('|');
43
+ const lines = [
44
+ `|${headerCells}|`,
45
+ `|${separatorCells}|`,
46
+ ...Array.from({ length: rows }, () => `|${bodyCells}|`)
47
+ ];
48
+ return `\n${lines.join('\n')}\n`;
49
+ }
50
+
51
+ render() {
52
+ return html`
53
+ <k-dropdown @opened=${this.handleDropdownOpened}>
54
+ <button slot="trigger" type="button" class="trigger" title="Table"><k-icon name="table"></k-icon></button>
55
+ <div class="tbl-form" @keydown=${this.handleFormKeydown}>
56
+ <input class="tbl-cols" type="number" min="1" max="20" inputmode="numeric" aria-label="Columns" value="3" />
57
+ <span class="tbl-x" aria-hidden="true">×</span>
58
+ <input class="tbl-rows" type="number" min="1" max="50" inputmode="numeric" aria-label="Rows" value="2" />
59
+ <button type="button" class="primary" @click=${() => this.submit()}>Insert</button>
60
+ </div>
61
+ </k-dropdown>
62
+ `;
63
+ }
64
+
65
+ static styles = [
66
+ Control.styles,
67
+ css`
68
+ .trigger { min-width: 2.5rem; min-height: 2.5rem; background: transparent; border: none; cursor: pointer; }
69
+ .tbl-form { display: flex; align-items: center; gap: 0.4rem; padding: 0.5rem; }
70
+ .tbl-form input { width: 2.5rem; padding: 0.35rem 0.4rem; border: 1px solid var(--c_border); border-radius: var(--radius); font: inherit; text-align: center; -moz-appearance: textfield; }
71
+ .tbl-form input::-webkit-inner-spin-button,
72
+ .tbl-form input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
73
+ .tbl-x { color: var(--tc_muted); font-weight: bold; }
74
+ .tbl-form button.primary { padding: 0.4rem 0.8rem; border: 1px solid var(--c_primary); border-radius: var(--radius); background: var(--c_primary); color: white; cursor: pointer; font: inherit; }
75
+ `
76
+ ];
77
+ }
78
+
79
+ customElements.define('kc-md-table', MdTable);