kempo-ui 0.3.7 → 0.3.8

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 (266) hide show
  1. package/dist/components/Accordion.js +5 -5
  2. package/dist/components/Aside.js +16 -16
  3. package/dist/components/Card.js +3 -3
  4. package/dist/components/ColorPicker.js +4 -4
  5. package/dist/components/ContentSlider.js +3 -3
  6. package/dist/components/Context.js +1 -1
  7. package/dist/components/Dialog.js +7 -7
  8. package/dist/components/Dropdown.js +7 -4
  9. package/dist/components/FilterItem.js +2 -2
  10. package/dist/components/FilterList.js +2 -2
  11. package/dist/components/FocusCapture.js +2 -2
  12. package/dist/components/HtmlEditor.js +62 -39
  13. package/dist/components/HybridComponent.js +1 -1
  14. package/dist/components/Icon.js +2 -2
  15. package/dist/components/Import.js +1 -1
  16. package/dist/components/LightComponent.js +1 -1
  17. package/dist/components/Main.js +3 -3
  18. package/dist/components/Nav.js +2 -2
  19. package/dist/components/NavSpacer.js +6 -0
  20. package/dist/components/PhotoViewer.js +3 -3
  21. package/dist/components/Resize.js +3 -3
  22. package/dist/components/ShadowComponent.js +1 -1
  23. package/dist/components/ShowMore.js +3 -3
  24. package/dist/components/Sortable.js +3 -3
  25. package/dist/components/Spinner.js +2 -2
  26. package/dist/components/Split.js +3 -3
  27. package/dist/components/Table.js +27 -27
  28. package/dist/components/Tabs.js +7 -7
  29. package/dist/components/Tags.js +4 -4
  30. package/dist/components/ThemeSelect.js +4 -4
  31. package/dist/components/ThemeSwitcher.js +5 -5
  32. package/dist/components/Timestamp.js +1 -1
  33. package/dist/components/Toast.js +3 -3
  34. package/dist/components/Toggle.js +3 -3
  35. package/dist/components/Tree.js +10 -10
  36. package/dist/components/htmlEditorControls/AlignCenter.js +4 -4
  37. package/dist/components/htmlEditorControls/AlignJustify.js +4 -4
  38. package/dist/components/htmlEditorControls/AlignLeft.js +4 -4
  39. package/dist/components/htmlEditorControls/AlignRight.js +4 -4
  40. package/dist/components/htmlEditorControls/Bold.js +4 -4
  41. package/dist/components/htmlEditorControls/BulletList.js +4 -4
  42. package/dist/components/htmlEditorControls/CharacterCount.js +3 -3
  43. package/dist/components/htmlEditorControls/ClearFormatting.js +4 -4
  44. package/dist/components/htmlEditorControls/CodeBlock.js +3 -3
  45. package/dist/components/htmlEditorControls/ControlGroup.js +2 -2
  46. package/dist/components/htmlEditorControls/ControlSpacer.js +2 -2
  47. package/dist/components/htmlEditorControls/CreateLink.js +3 -3
  48. package/dist/components/htmlEditorControls/DropdownControl.js +3 -3
  49. package/dist/components/htmlEditorControls/FormatBlock.js +4 -4
  50. package/dist/components/htmlEditorControls/HtmlEditorControl.js +2 -2
  51. package/dist/components/htmlEditorControls/InlineCode.js +3 -3
  52. package/dist/components/htmlEditorControls/InsertTable.js +3 -3
  53. package/dist/components/htmlEditorControls/Italic.js +4 -4
  54. package/dist/components/htmlEditorControls/Mode.js +3 -3
  55. package/dist/components/htmlEditorControls/NumberList.js +4 -4
  56. package/dist/components/htmlEditorControls/Strikethrough.js +4 -4
  57. package/dist/components/htmlEditorControls/TextBackgroundColor.js +6 -6
  58. package/dist/components/htmlEditorControls/TextColor.js +7 -7
  59. package/dist/components/htmlEditorControls/Underline.js +4 -4
  60. package/dist/components/htmlEditorControls/WordCount.js +3 -3
  61. package/dist/components/htmlEditorNodes/HtmlComment.js +24 -0
  62. package/dist/components/tableControls/DeleteRecord.js +2 -2
  63. package/dist/components/tableControls/DeleteSelected.js +2 -2
  64. package/dist/components/tableControls/Edit.js +4 -4
  65. package/dist/components/tableControls/ExportCSV.js +2 -2
  66. package/dist/components/tableControls/ExportJson.js +2 -2
  67. package/dist/components/tableControls/FieldSortHide.js +4 -4
  68. package/dist/components/tableControls/Filters.js +17 -17
  69. package/dist/components/tableControls/FirstPage.js +2 -2
  70. package/dist/components/tableControls/HiddenCount.js +2 -2
  71. package/dist/components/tableControls/Hide.js +2 -2
  72. package/dist/components/tableControls/LastPage.js +2 -2
  73. package/dist/components/tableControls/NextPage.js +2 -2
  74. package/dist/components/tableControls/PageSelect.js +4 -4
  75. package/dist/components/tableControls/PageSize.js +3 -3
  76. package/dist/components/tableControls/PrevPage.js +2 -2
  77. package/dist/components/tableControls/Search.js +2 -2
  78. package/dist/components/tableControls/ShowAll.js +2 -2
  79. package/dist/components/tableControls/TableControl.js +2 -2
  80. package/dist/utils/context.js +1 -1
  81. package/dist/utils/debounce.js +1 -1
  82. package/dist/utils/object.js +1 -1
  83. package/dist/utils/theme.js +1 -1
  84. package/dist/utils/wait.js +0 -1
  85. package/docs/components/accordion.html +2 -0
  86. package/docs/components/aside.html +9 -8
  87. package/docs/components/card.html +2 -0
  88. package/docs/components/color-picker.html +2 -0
  89. package/docs/components/content-slider.html +2 -0
  90. package/docs/components/context.html +2 -0
  91. package/docs/components/dialog.html +2 -0
  92. package/docs/components/dropdown.html +2 -0
  93. package/docs/components/filter-list.html +2 -0
  94. package/docs/components/focus-capture.html +2 -0
  95. package/docs/components/html-editor.html +54 -6
  96. package/docs/components/hybrid-component.html +2 -0
  97. package/docs/components/icon.html +2 -0
  98. package/docs/components/import.html +2 -0
  99. package/docs/components/light-component.html +2 -0
  100. package/docs/components/nav-spacer.html +315 -0
  101. package/docs/components/nav.html +2 -0
  102. package/docs/components/photo-viewer.html +2 -0
  103. package/docs/components/resize.html +2 -0
  104. package/docs/components/shadow-component.html +2 -0
  105. package/docs/components/show-more.html +2 -0
  106. package/docs/components/sortable.html +2 -0
  107. package/docs/components/spinner.html +2 -0
  108. package/docs/components/split.html +2 -0
  109. package/docs/components/table.html +2 -0
  110. package/docs/components/tableControls.html +2 -0
  111. package/docs/components/tableCustomFields.html +2 -0
  112. package/docs/components/tableFetchRecords.html +2 -0
  113. package/docs/components/tableFieldSortHide.html +2 -0
  114. package/docs/components/tablePagination.html +2 -0
  115. package/docs/components/tablePlaceholder.html +2 -0
  116. package/docs/components/tableRecordEditing.html +2 -0
  117. package/docs/components/tableRecordFiltering.html +2 -0
  118. package/docs/components/tableRecordHiding.html +2 -0
  119. package/docs/components/tableRecordSearching.html +2 -0
  120. package/docs/components/tableRecordSelection.html +2 -0
  121. package/docs/components/tableRowControls.html +2 -0
  122. package/docs/components/tableServerSync.html +2 -0
  123. package/docs/components/tableSorting.html +2 -0
  124. package/docs/components/tabs.html +2 -0
  125. package/docs/components/tags.html +2 -0
  126. package/docs/components/theme-select.html +2 -0
  127. package/docs/components/theme-switcher.html +2 -0
  128. package/docs/components/timestamp.html +2 -0
  129. package/docs/components/toast.html +2 -0
  130. package/docs/components/toggle.html +2 -0
  131. package/docs/components/tree.html +2 -0
  132. package/docs/icons/comment.svg +1 -0
  133. package/docs/index.html +8 -0
  134. package/docs/src/components/Accordion.js +5 -5
  135. package/docs/src/components/Aside.js +16 -16
  136. package/docs/src/components/Card.js +3 -3
  137. package/docs/src/components/ColorPicker.js +4 -4
  138. package/docs/src/components/ContentSlider.js +3 -3
  139. package/docs/src/components/Context.js +1 -1
  140. package/docs/src/components/Dialog.js +7 -7
  141. package/docs/src/components/Dropdown.js +7 -4
  142. package/docs/src/components/FilterItem.js +2 -2
  143. package/docs/src/components/FilterList.js +2 -2
  144. package/docs/src/components/FocusCapture.js +2 -2
  145. package/docs/src/components/HtmlEditor.js +62 -39
  146. package/docs/src/components/HybridComponent.js +1 -1
  147. package/docs/src/components/Icon.js +2 -2
  148. package/docs/src/components/Import.js +1 -1
  149. package/docs/src/components/LightComponent.js +1 -1
  150. package/docs/src/components/Main.js +3 -3
  151. package/docs/src/components/Nav.js +2 -2
  152. package/docs/src/components/NavSpacer.js +6 -0
  153. package/docs/src/components/PhotoViewer.js +3 -3
  154. package/docs/src/components/Resize.js +3 -3
  155. package/docs/src/components/ShadowComponent.js +1 -1
  156. package/docs/src/components/ShowMore.js +3 -3
  157. package/docs/src/components/Sortable.js +3 -3
  158. package/docs/src/components/Spinner.js +2 -2
  159. package/docs/src/components/Split.js +3 -3
  160. package/docs/src/components/Table.js +27 -27
  161. package/docs/src/components/Tabs.js +7 -7
  162. package/docs/src/components/Tags.js +4 -4
  163. package/docs/src/components/ThemeSelect.js +4 -4
  164. package/docs/src/components/ThemeSwitcher.js +5 -5
  165. package/docs/src/components/Timestamp.js +1 -1
  166. package/docs/src/components/Toast.js +3 -3
  167. package/docs/src/components/Toggle.js +3 -3
  168. package/docs/src/components/Tree.js +10 -10
  169. package/docs/src/components/htmlEditorControls/AlignCenter.js +4 -4
  170. package/docs/src/components/htmlEditorControls/AlignJustify.js +4 -4
  171. package/docs/src/components/htmlEditorControls/AlignLeft.js +4 -4
  172. package/docs/src/components/htmlEditorControls/AlignRight.js +4 -4
  173. package/docs/src/components/htmlEditorControls/Bold.js +4 -4
  174. package/docs/src/components/htmlEditorControls/BulletList.js +4 -4
  175. package/docs/src/components/htmlEditorControls/CharacterCount.js +3 -3
  176. package/docs/src/components/htmlEditorControls/ClearFormatting.js +4 -4
  177. package/docs/src/components/htmlEditorControls/CodeBlock.js +3 -3
  178. package/docs/src/components/htmlEditorControls/ControlGroup.js +2 -2
  179. package/docs/src/components/htmlEditorControls/ControlSpacer.js +2 -2
  180. package/docs/src/components/htmlEditorControls/CreateLink.js +3 -3
  181. package/docs/src/components/htmlEditorControls/DropdownControl.js +3 -3
  182. package/docs/src/components/htmlEditorControls/FormatBlock.js +4 -4
  183. package/docs/src/components/htmlEditorControls/HtmlEditorControl.js +2 -2
  184. package/docs/src/components/htmlEditorControls/InlineCode.js +3 -3
  185. package/docs/src/components/htmlEditorControls/InsertTable.js +3 -3
  186. package/docs/src/components/htmlEditorControls/Italic.js +4 -4
  187. package/docs/src/components/htmlEditorControls/Mode.js +3 -3
  188. package/docs/src/components/htmlEditorControls/NumberList.js +4 -4
  189. package/docs/src/components/htmlEditorControls/Strikethrough.js +4 -4
  190. package/docs/src/components/htmlEditorControls/TextBackgroundColor.js +6 -6
  191. package/docs/src/components/htmlEditorControls/TextColor.js +7 -7
  192. package/docs/src/components/htmlEditorControls/Underline.js +4 -4
  193. package/docs/src/components/htmlEditorControls/WordCount.js +3 -3
  194. package/docs/src/components/htmlEditorNodes/HtmlComment.js +24 -0
  195. package/docs/src/components/tableControls/DeleteRecord.js +2 -2
  196. package/docs/src/components/tableControls/DeleteSelected.js +2 -2
  197. package/docs/src/components/tableControls/Edit.js +4 -4
  198. package/docs/src/components/tableControls/ExportCSV.js +2 -2
  199. package/docs/src/components/tableControls/ExportJson.js +2 -2
  200. package/docs/src/components/tableControls/FieldSortHide.js +4 -4
  201. package/docs/src/components/tableControls/Filters.js +17 -17
  202. package/docs/src/components/tableControls/FirstPage.js +2 -2
  203. package/docs/src/components/tableControls/HiddenCount.js +2 -2
  204. package/docs/src/components/tableControls/Hide.js +2 -2
  205. package/docs/src/components/tableControls/LastPage.js +2 -2
  206. package/docs/src/components/tableControls/NextPage.js +2 -2
  207. package/docs/src/components/tableControls/PageSelect.js +4 -4
  208. package/docs/src/components/tableControls/PageSize.js +3 -3
  209. package/docs/src/components/tableControls/PrevPage.js +2 -2
  210. package/docs/src/components/tableControls/Search.js +2 -2
  211. package/docs/src/components/tableControls/ShowAll.js +2 -2
  212. package/docs/src/components/tableControls/TableControl.js +2 -2
  213. package/docs/src/utils/context.js +1 -1
  214. package/docs/src/utils/debounce.js +1 -1
  215. package/docs/src/utils/object.js +1 -1
  216. package/docs/src/utils/theme.js +1 -1
  217. package/docs/src/utils/wait.js +0 -1
  218. package/docs/utils/context.html +2 -0
  219. package/docs/utils/cookie.html +2 -0
  220. package/docs/utils/debounce.html +2 -0
  221. package/docs/utils/drag.html +2 -0
  222. package/docs/utils/elevation.html +2 -0
  223. package/docs/utils/formatTimestamp.html +2 -0
  224. package/docs/utils/object.html +2 -0
  225. package/docs/utils/propConverters.html +2 -0
  226. package/docs/utils/string.html +2 -0
  227. package/docs/utils/theme.html +2 -0
  228. package/docs/utils/toTitleCase.html +2 -0
  229. package/docs/utils/type.html +2 -0
  230. package/docs/utils/wait.html +2 -0
  231. package/docs-src/components/aside.page.html +7 -8
  232. package/docs-src/components/html-editor.page.html +52 -6
  233. package/docs-src/components/nav-spacer.page.html +65 -0
  234. package/docs-src/index.page.html +6 -0
  235. package/docs-src/nav.fragment.html +2 -0
  236. package/icons/comment.svg +1 -0
  237. package/llm.txt +1 -0
  238. package/package.json +1 -1
  239. package/scripts/build.js +1 -1
  240. package/src/components/Accordion.js +1 -1
  241. package/src/components/Dropdown.js +7 -3
  242. package/src/components/HtmlEditor.js +699 -1206
  243. package/src/components/NavSpacer.js +55 -0
  244. package/src/components/htmlEditorControls/AlignCenter.js +5 -5
  245. package/src/components/htmlEditorControls/AlignJustify.js +5 -5
  246. package/src/components/htmlEditorControls/AlignLeft.js +5 -5
  247. package/src/components/htmlEditorControls/AlignRight.js +5 -5
  248. package/src/components/htmlEditorControls/Bold.js +5 -5
  249. package/src/components/htmlEditorControls/BulletList.js +5 -5
  250. package/src/components/htmlEditorControls/ClearFormatting.js +5 -5
  251. package/src/components/htmlEditorControls/CodeBlock.js +16 -8
  252. package/src/components/htmlEditorControls/CreateLink.js +3 -7
  253. package/src/components/htmlEditorControls/FormatBlock.js +5 -5
  254. package/src/components/htmlEditorControls/InlineCode.js +1 -13
  255. package/src/components/htmlEditorControls/InsertTable.js +43 -44
  256. package/src/components/htmlEditorControls/Italic.js +5 -5
  257. package/src/components/htmlEditorControls/Mode.js +1 -1
  258. package/src/components/htmlEditorControls/NumberList.js +5 -5
  259. package/src/components/htmlEditorControls/Strikethrough.js +5 -5
  260. package/src/components/htmlEditorControls/Underline.js +5 -5
  261. package/src/components/htmlEditorNodes/HtmlComment.js +118 -0
  262. package/tests/components/Accordion.browser-test.js +154 -0
  263. package/tests/components/Dropdown.browser-test.js +85 -0
  264. package/tests/components/HtmlComment.browser-test.js +115 -0
  265. package/tests/components/HtmlEditor.browser-test.js +379 -0
  266. package/tests/components/NavSpacer.browser-test.js +81 -0
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class BulletList extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static properties={editorMode:{type:String,state:!0}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleClick=()=>{this.editor&&this.editor.unorderedList()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,html`
6
- <button class="${this.buttonClasses}" @click="${this.handleClick}">
5
+ `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.unorderedList()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,e`
6
+ <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="format_list_bulleted"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}}customElements.define("k-hec-bullet-list",BulletList);
12
+ `}}customElements.define("k-hec-bullet-list",s);
@@ -1,8 +1,8 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";export default class CharacterCount extends HtmlEditorControl{static properties={count:{type:Number,state:!0}};constructor(){super(),this.count=0}connectedCallback(){super.connectedCallback(),this.editor&&(this.editor.addEventListener("ready",()=>{this.updateCount()}),this.editor.addEventListener("change",()=>{this.updateCount()}),setTimeout(()=>this.updateCount(),0))}updateCount=()=>{if(!this.editor)return;const t=(new DOMParser).parseFromString(this.editor.getValue(),"text/html").body.innerText||"";this.count=t.length};render(){return html`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as r}from"../../lit-all.min.js";export default class s extends t{static properties={count:{type:Number,state:!0}};constructor(){super(),this.count=0}connectedCallback(){super.connectedCallback(),this.editor&&(this.editor.addEventListener("ready",()=>{this.updateCount()}),this.editor.addEventListener("change",()=>{this.updateCount()}),setTimeout(()=>this.updateCount(),0))}updateCount=()=>{if(!this.editor)return;const t=(new DOMParser).parseFromString(this.editor.getValue(),"text/html").body.innerText||"";this.count=t.length};render(){return e`
2
2
  <span class="character-count">
3
3
  <slot name="label">Characters:</slot> ${this.count}
4
4
  </span>
5
- `}static styles=[HtmlEditorControl.styles,css`
5
+ `}static styles=[t.styles,r`
6
6
  :host {
7
7
  display: inline-flex;
8
8
  align-items: center;
@@ -15,4 +15,4 @@ import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../..
15
15
  align-items: center;
16
16
  gap: 0.25rem;
17
17
  }
18
- `]}customElements.define("k-hec-character-count",CharacterCount);
18
+ `]}customElements.define("k-hec-character-count",s);
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class ClearFormatting extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static properties={editorMode:{type:String,state:!0}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleClick=()=>{this.editor&&this.editor.removeFormat()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,html`
6
- <button class="${this.buttonClasses}" @click="${this.handleClick}">
5
+ `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.removeFormat()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,e`
6
+ <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="format_clear"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}}customElements.define("k-hec-clear-formatting",ClearFormatting);
12
+ `}}customElements.define("k-hec-clear-formatting",s);
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class CodeBlock extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class i extends t{static properties={editorMode:{type:String,state:!0}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{const o=window.getSelection()?.toString();t.preventDefault(),t.stopPropagation(),this.editor&&(o?this.editor.wrapSelection("<pre>","</pre>",o):this.editor.formatBlock("pre"))};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,html`
5
+ `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.formatBlock(this.isInCodeBlock()?"p":"pre")};isInCodeBlock(){if(!this.editor?.lexicalEditor)return!1;let t=!1;const{lexical:e,code:o}=this.editor.lx;return this.editor.lexicalEditor.getEditorState().read(()=>{const i=e.$getSelection();if(!e.$isRangeSelection(i))return;const s=i.anchor.getNode().getTopLevelElementOrThrow();t=o.$isCodeNode(s)}),t}updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,e`
6
6
  <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="code_blocks"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}}customElements.define("k-hec-code-block",CodeBlock);
12
+ `}}customElements.define("k-hec-code-block",i);
@@ -1,4 +1,4 @@
1
- import ShadowComponent from"../ShadowComponent.js";import{html,css}from"../../lit-all.min.js";export default class ControlGroup extends ShadowComponent{static properties={editorMode:{type:String,state:!0},hidden:{type:Boolean,reflect:!0}};constructor(){super()}connectedCallback(){super.connectedCallback(),this.hasAttribute("class")||this.setAttribute("class","b r mq"),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}get editor(){return this.closest("k-html-editor")}updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode,this.requestUpdate())}hasVisibleChildren(){return Array.from(this.children).filter(t=>t.tagName.startsWith("K-HEC-")&&"K-HEC-SPACER"!==t.tagName).some(t=>{if(!1===t.hidden||void 0===t.hidden){return"none"!==window.getComputedStyle(t).display}return!1})}static styles=css`
1
+ import t from"../ShadowComponent.js";import{html as e,css as i}from"../../lit-all.min.js";export default class s extends t{static properties={editorMode:{type:String,state:!0},hidden:{type:Boolean,reflect:!0}};constructor(){super()}connectedCallback(){super.connectedCallback(),this.hasAttribute("class")||this.setAttribute("class","b r mq"),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}get editor(){return this.closest("k-html-editor")}updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode,this.requestUpdate())}hasVisibleChildren(){return Array.from(this.children).filter(t=>t.tagName.startsWith("K-HEC-")&&"K-HEC-SPACER"!==t.tagName).some(t=>{if(!1===t.hidden||void 0===t.hidden){return"none"!==window.getComputedStyle(t).display}return!1})}static styles=i`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
@@ -11,4 +11,4 @@ import ShadowComponent from"../ShadowComponent.js";import{html,css}from"../../li
11
11
  margin-top: -1px;
12
12
  margin-bottom: -1px;
13
13
  }
14
- `;render(){return html`<slot></slot>`}updated(){super.updated(),requestAnimationFrame(()=>{this.hidden=!this.hasVisibleChildren()})}}customElements.define("k-hec-group",ControlGroup);
14
+ `;render(){return e`<slot></slot>`}updated(){super.updated(),requestAnimationFrame(()=>{this.hidden=!this.hasVisibleChildren()})}}customElements.define("k-hec-group",s);
@@ -1,6 +1,6 @@
1
- import ShadowComponent from"../ShadowComponent.js";import{html,css}from"../../lit-all.min.js";export default class ControlSpacer extends ShadowComponent{static styles=css`
1
+ import e from"../ShadowComponent.js";import{html as t,css as s}from"../../lit-all.min.js";export default class l extends e{static styles=s`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  flex: 1;
5
5
  }
6
- `;render(){return html``}}customElements.define("k-hec-spacer",ControlSpacer);
6
+ `;render(){return t``}}customElements.define("k-hec-spacer",l);
@@ -1,4 +1,4 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";import Dialog from"../Dialog.js";export default class CreateLink extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};constructor(){super()}connectedCallback(){super.connectedCallback(),this.editor&&(this.editorMode=this.editor.mode,this.editor?.addEventListener("mode-changed",()=>{this.editor&&(this.editorMode=this.editor.mode)}))}handleMouseDown=t=>{if(!this.editor)return;t.preventDefault(),t.stopPropagation();const e=this.editor.selection?.text||"",o=document.createElement("input");o.type="text",o.placeholder="https://example.com",o.style.cssText="padding: 0.5rem; border: 1px solid var(--border-color, #ccc); border-radius: 4px; font-size: 1rem;";const i=document.createElement("input");i.type="text",i.placeholder="Enter link text",i.value=e,i.style.cssText="padding: 0.5rem; border: 1px solid var(--border-color, #ccc); border-radius: 4px; font-size: 1rem;";const n=document.createElement("div");n.className="p",n.style.cssText="display: flex; flex-direction: column; gap: 1rem;",n.innerHTML='\n\t\t\t<div style="display: flex; flex-direction: column; gap: 0.5rem;">\n\t\t\t\t<label style="font-weight: bold;">URL</label>\n\t\t\t</div>\n\t\t\t<div style="display: flex; flex-direction: column; gap: 0.5rem;">\n\t\t\t\t<label style="font-weight: bold;">Link Text</label>\n\t\t\t</div>\n\t\t',n.children[0].appendChild(o),n.children[1].appendChild(i),Dialog.create(n,{title:"Create Link",cancelText:"Cancel",confirmText:"Insert Link",confirmClasses:"success ml",confirmAction:t=>{const e=o.value.trim(),n=i.value.trim();if(!e)return void(t.keepDialogOpen=!0);const l=document.createElement("a");l.href=e,l.textContent=n||e,this.editor.selection?this.editor.replaceSelectionWithElement(l,!0):this.editor.insertElementAtCursor(l,!0)}})};render(){return this.hidden="code"===this.editorMode,html`
1
+ import e from"./HtmlEditorControl.js";import{html as t,css as i}from"../../lit-all.min.js";import"../Icon.js";import o from"../Dialog.js";export default class n extends e{static properties={editorMode:{type:String,state:!0}};constructor(){super()}connectedCallback(){super.connectedCallback(),this.editor&&(this.editorMode=this.editor.mode,this.editor?.addEventListener("mode-changed",()=>{this.editor&&(this.editorMode=this.editor.mode)}))}handleMouseDown=e=>{if(!this.editor)return;e.preventDefault(),e.stopPropagation();const t=this.editor.selection?.text||"",i=document.createElement("input");i.type="text",i.placeholder="https://example.com",i.style.cssText="padding: 0.5rem; border: 1px solid var(--border-color, #ccc); border-radius: 4px; font-size: 1rem;";const n=document.createElement("input");n.type="text",n.placeholder="Enter link text",n.value=t,n.style.cssText="padding: 0.5rem; border: 1px solid var(--border-color, #ccc); border-radius: 4px; font-size: 1rem;";const s=document.createElement("div");s.className="p",s.style.cssText="display: flex; flex-direction: column; gap: 1rem;",s.innerHTML='\n\t\t\t<div style="display: flex; flex-direction: column; gap: 0.5rem;">\n\t\t\t\t<label style="font-weight: bold;">URL</label>\n\t\t\t</div>\n\t\t\t<div style="display: flex; flex-direction: column; gap: 0.5rem;">\n\t\t\t\t<label style="font-weight: bold;">Link Text</label>\n\t\t\t</div>\n\t\t',s.children[0].appendChild(i),s.children[1].appendChild(n),o.create(s,{title:"Create Link",cancelText:"Cancel",confirmText:"Insert Link",confirmClasses:"success ml",confirmAction:e=>{const o=i.value.trim(),s=n.value.trim();o?!this.editor.selection||s&&s!==t?this.editor.createLinkWithText(o,s||o):this.editor.createLink(o):e.keepDialogOpen=!0}})};render(){return this.hidden="code"===this.editorMode,t`
2
2
  <button
3
3
  class="${this.buttonClasses}"
4
4
  @mousedown="${this.handleMouseDown}"
@@ -8,8 +8,8 @@ import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../..
8
8
  </slot>
9
9
  <slot></slot>
10
10
  </button>
11
- `}static styles=[HtmlEditorControl.styles,css`
11
+ `}static styles=[e.styles,i`
12
12
  :host {
13
13
  display: inline-flex;
14
14
  }
15
- `]}customElements.define("k-hec-create-link",CreateLink);
15
+ `]}customElements.define("k-hec-create-link",n);
@@ -1,4 +1,4 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Dropdown.js";import"../Icon.js";export default class DropdownControl extends HtmlEditorControl{static properties={opened:{type:Boolean,reflect:!0},editorMode:{type:String,state:!0}};constructor(){super(),this.opened=!1}connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}updated(t){super.updated(t),t.has("editorMode")&&requestAnimationFrame(()=>{this.hidden="code"===this.editorMode&&!this.hasVisibleChildren()})}updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}hasVisibleChildren(){return Array.from(this.children).filter(t=>!t.hasAttribute("slot")).some(t=>{if(!1===t.hidden||void 0===t.hidden){return"none"!==window.getComputedStyle(t).display}return!1})}static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as o,css as e}from"../../lit-all.min.js";import"../Dropdown.js";import"../Icon.js";export default class n extends t{static properties={opened:{type:Boolean,reflect:!0},editorMode:{type:String,state:!0}};constructor(){super(),this.opened=!1}connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}updated(t){super.updated(t),t.has("editorMode")&&requestAnimationFrame(()=>{this.hidden="code"===this.editorMode&&!this.hasVisibleChildren()})}updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}hasVisibleChildren(){return Array.from(this.children).filter(t=>!t.hasAttribute("slot")).some(t=>{if(!1===t.hidden||void 0===t.hidden){return"none"!==window.getComputedStyle(t).display}return!1})}static styles=[t.styles,e`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
@@ -37,7 +37,7 @@ import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../..
37
37
  ::slotted(:not([slot="icon"]):not([slot="label"]):last-of-type) button {
38
38
  border-bottom: none !important;
39
39
  }
40
- `];handleToggle=()=>{this.opened=!this.opened};handleOpened=()=>{this.opened=!0};handleClosed=()=>{this.opened=!1};render(){return html`
40
+ `];handleToggle=()=>{this.opened=!this.opened};handleOpened=()=>{this.opened=!0};handleClosed=()=>{this.opened=!1};render(){return o`
41
41
  <k-dropdown
42
42
  ?opened=${this.opened}
43
43
  @opened=${this.handleOpened}
@@ -54,4 +54,4 @@ import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../..
54
54
  </button>
55
55
  <slot></slot>
56
56
  </k-dropdown>
57
- `}}customElements.define("k-hec-dropdown",DropdownControl);
57
+ `}}customElements.define("k-hec-dropdown",n);
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class FormatBlock extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0},tag:{type:String},label:{type:String}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class a extends t{static properties={editorMode:{type:String,state:!0},tag:{type:String},label:{type:String}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];constructor(){super(),this.tag="p",this.label=""}connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleClick=()=>{this.editor&&this.editor.formatBlock(this.tag)};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){this.hidden="code"===this.editorMode;this.label||this.getDefaultLabel();const t=this.getDefaultIcon();return html`
6
- <button class="${this.buttonClasses}" @click="${this.handleClick}">
5
+ `];constructor(){super(),this.tag="p",this.label=""}connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.formatBlock(this.tag)};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){this.hidden="code"===this.editorMode;this.label||this.getDefaultLabel();const t=this.getDefaultIcon();return e`
6
+ <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="${t}"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}getDefaultLabel(){return{h1:"Heading 1",h2:"Heading 2",h3:"Heading 3",h4:"Heading 4",h5:"Heading 5",h6:"Heading 6",p:"Paragraph"}[this.tag]||this.tag.toUpperCase()}getDefaultIcon(){return{h1:"format_h1",h2:"format_h2",h3:"format_h3",h4:"format_h4",h5:"format_h5",h6:"format_h6",p:"format_paragraph"}[this.tag]||"format_paragraph"}}customElements.define("k-hec-format-block",FormatBlock);
12
+ `}getDefaultLabel(){return{h1:"Heading 1",h2:"Heading 2",h3:"Heading 3",h4:"Heading 4",h5:"Heading 5",h6:"Heading 6",p:"Paragraph"}[this.tag]||this.tag.toUpperCase()}getDefaultIcon(){return{h1:"format_h1",h2:"format_h2",h3:"format_h3",h4:"format_h4",h5:"format_h5",h6:"format_h6",p:"format_paragraph"}[this.tag]||"format_paragraph"}}customElements.define("k-hec-format-block",a);
@@ -1,4 +1,4 @@
1
- import ShadowComponent from"../ShadowComponent.js";import{html,css}from"../../lit-all.min.js";export default class HtmlEditorControl extends ShadowComponent{static properties={btnClass:{type:String,attribute:"btn-class"},groupBtnClass:{type:String,attribute:"group-btn-class"},groupLastBtnClass:{type:String,attribute:"group-last-btn-class"},hidden:{type:Boolean,reflect:!0}};constructor(){super(),this.btnClass="b r mq ph",this.groupBtnClass="br ph",this.groupLastBtnClass="ph"}get editor(){let t=this.getRootNode();for(;t instanceof ShadowRoot;){const o=t.host,n=o.closest("k-html-editor");if(n)return n;t=o.getRootNode()}return this.closest("k-html-editor")}get isInGroup(){const t=this.parentElement;return t&&"K-HEC-GROUP"===t.tagName}get isInDropdown(){const t=this.parentElement;return t&&"K-HEC-DROPDOWN"===t.tagName}get isLastInGroup(){if(!this.isInGroup)return!1;const t=this.parentElement,o=Array.from(t.children).filter(t=>t.tagName.startsWith("K-HEC-")&&"K-HEC-SPACER"!==t.tagName);return o[o.length-1]===this}get buttonClasses(){let t;return t=this.isInDropdown?"dropdown-item":this.isInGroup?this.isLastInGroup?this.groupLastBtnClass:this.groupBtnClass:this.btnClass,`no-btn icon-btn ${t}`.trim()}static styles=css`
1
+ import t from"../ShadowComponent.js";import{html as n,css as o}from"../../lit-all.min.js";export default class r extends t{static properties={btnClass:{type:String,attribute:"btn-class"},groupBtnClass:{type:String,attribute:"group-btn-class"},groupLastBtnClass:{type:String,attribute:"group-last-btn-class"},hidden:{type:Boolean,reflect:!0}};constructor(){super(),this.btnClass="b r mq ph",this.groupBtnClass="br ph",this.groupLastBtnClass="ph"}get editor(){let t=this.getRootNode();for(;t instanceof ShadowRoot;){const n=t.host,o=n.closest("k-html-editor");if(o)return o;t=n.getRootNode()}return this.closest("k-html-editor")}get isInGroup(){const t=this.parentElement;return t&&"K-HEC-GROUP"===t.tagName}get isInDropdown(){const t=this.parentElement;return t&&"K-HEC-DROPDOWN"===t.tagName}get isLastInGroup(){if(!this.isInGroup)return!1;const t=this.parentElement,n=Array.from(t.children).filter(t=>t.tagName.startsWith("K-HEC-")&&"K-HEC-SPACER"!==t.tagName);return n[n.length-1]===this}get buttonClasses(){let t;return t=this.isInDropdown?"dropdown-item":this.isInGroup?this.isLastInGroup?this.groupLastBtnClass:this.groupBtnClass:this.btnClass,`no-btn icon-btn ${t}`.trim()}static styles=o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
@@ -41,4 +41,4 @@ import ShadowComponent from"../ShadowComponent.js";import{html,css}from"../../li
41
41
  :host(:last-child) .icon-btn.dropdown-item {
42
42
  border-bottom: none !important;
43
43
  }
44
- `}customElements.define("k-html-editor-control",HtmlEditorControl);
44
+ `}customElements.define("k-html-editor-control",r);
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class InlineCode extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class i extends t{static properties={editorMode:{type:String,state:!0}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{if(!this.editor)return;t.preventDefault(),t.stopPropagation();const e=document.createElement("code"),o=this.editor.getValueWithSelectionMarkers();o.hasSelection?(e.textContent=o.selectedText,this.editor.replaceSelectionWithElement(e,!0)):(e.textContent="",this.editor.insertElementAtCursor(e,!0))};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,html`
5
+ `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.lexicalFormat("code")};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,e`
6
6
  <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="code_blocks"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}}customElements.define("k-hec-inline-code",InlineCode);
12
+ `}}customElements.define("k-hec-inline-code",i);
@@ -1,4 +1,4 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";import Dialog from"../Dialog.js";export default class InsertTable extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};constructor(){super()}connectedCallback(){super.connectedCallback(),this.editor&&(this.editorMode=this.editor.mode,this.editor?.addEventListener("mode-changed",()=>{this.editor&&(this.editorMode=this.editor.mode)}))}handleMouseDown=e=>{if(!this.editor)return;e.preventDefault(),e.stopPropagation();const t=this.editor.shadowRoot.getSelection()||window.getSelection();let o=null,l=null;if(t.rangeCount){let e=t.getRangeAt(0).startContainer;e.nodeType===Node.TEXT_NODE&&(e=e.parentElement),o=e.closest("table")}const n=!!o;let r=3,s=3,i=!0;if(n){const e=o.querySelector("thead"),t=o.querySelector("tbody"),n=!!e;if(l=[],n){const t=e.querySelector("tr"),o=Array.from(t.cells).map(e=>e.innerHTML);l.push(o),s=o.length}const d=t.querySelectorAll("tr");d.forEach(e=>{const t=Array.from(e.cells).map(e=>e.innerHTML);l.push(t),t.length>s&&(s=t.length)}),r=d.length,i=n,o.remove()}const d=document.createElement("input");d.type="number",d.min="1",d.max="20",d.value=r.toString(),d.style.cssText="padding: 0.5rem; border: 1px solid var(--border-color, #ccc); border-radius: 4px; font-size: 1rem;";const c=document.createElement("input");c.type="number",c.min="1",c.max="10",c.value=s.toString(),c.style.cssText="padding: 0.5rem; border: 1px solid var(--border-color, #ccc); border-radius: 4px; font-size: 1rem;";const a=document.createElement("input");a.type="checkbox",a.checked=i,a.id="table-headers-checkbox";const m=document.createElement("div");m.className="p",m.style.cssText="display: flex; flex-direction: column; gap: 1rem;",m.innerHTML='\n\t\t\t<div style="display: flex; flex-direction: column; gap: 0.5rem;">\n\t\t\t\t<label style="font-weight: bold;">Rows</label>\n\t\t\t</div>\n\t\t\t<div style="display: flex; flex-direction: column; gap: 0.5rem;">\n\t\t\t\t<label style="font-weight: bold;">Columns</label>\n\t\t\t</div>\n\t\t\t<div style="display: flex; align-items: center; gap: 0.5rem;">\n\t\t\t\t<label for="table-headers-checkbox" style="font-weight: bold;">Include Headers</label>\n\t\t\t</div>\n\t\t',m.children[0].appendChild(d),m.children[1].appendChild(c),m.children[2].insertBefore(a,m.children[2].firstChild),Dialog.create(m,{title:n?"Edit Table":"Insert Table",cancelText:"Cancel",confirmText:n?"Update Table":"Insert Table",confirmClasses:"success",confirmAction:()=>{const e=parseInt(d.value)||3,t=parseInt(c.value)||3,o=a.checked;this.editor.insertTable(e,t,o,l)}})};render(){return this.hidden="code"===this.editorMode,html`
1
+ import e from"./HtmlEditorControl.js";import{html as t,css as l}from"../../lit-all.min.js";import"../Icon.js";import i from"../Dialog.js";export default class o extends e{static properties={editorMode:{type:String,state:!0}};constructor(){super()}connectedCallback(){super.connectedCallback(),this.editor&&(this.editorMode=this.editor.mode,this.editor?.addEventListener("mode-changed",()=>{this.editor&&(this.editorMode=this.editor.mode)}))}handleMouseDown=e=>{if(!this.editor)return;e.preventDefault(),e.stopPropagation();let t=!1,l=3,o=3,n=!0,r=null,s=null;if(this.editor.lexicalEditor){const{lexical:e,table:i}=this.editor.lx;this.editor.lexicalEditor.getEditorState().read(()=>{const d=e.$getSelection();if(!e.$isRangeSelection(d))return;let a=d.anchor.getNode();for(;a;){if(i.$isTableNode(a)){t=!0,s=a.getKey(),r=[];const e=a.getChildren();let d=!1;e.forEach((e,t)=>{const l=[];e.getChildren().forEach(e=>{0===t&&i.$isTableCellNode(e)&&e.getHeaderStyles()===i.TableCellHeaderStates.ROW&&(d=!0),l.push(e.getTextContent())}),r.push(l),l.length>o&&(o=l.length)}),n=d,l=d?e.length-1:e.length;break}a=a.getParent()}})}const d=document.createElement("input");d.type="number",d.min="1",d.max="20",d.value=l.toString(),d.style.cssText="padding: 0.5rem; border: 1px solid var(--border-color, #ccc); border-radius: 4px; font-size: 1rem;";const a=document.createElement("input");a.type="number",a.min="1",a.max="10",a.value=o.toString(),a.style.cssText="padding: 0.5rem; border: 1px solid var(--border-color, #ccc); border-radius: 4px; font-size: 1rem;";const c=document.createElement("input");c.type="checkbox",c.checked=n,c.id="table-headers-checkbox";const h=document.createElement("div");h.className="p",h.style.cssText="display: flex; flex-direction: column; gap: 1rem;",h.innerHTML='\n\t\t\t<div style="display: flex; flex-direction: column; gap: 0.5rem;">\n\t\t\t\t<label style="font-weight: bold;">Rows</label>\n\t\t\t</div>\n\t\t\t<div style="display: flex; flex-direction: column; gap: 0.5rem;">\n\t\t\t\t<label style="font-weight: bold;">Columns</label>\n\t\t\t</div>\n\t\t\t<div style="display: flex; align-items: center; gap: 0.5rem;">\n\t\t\t\t<label for="table-headers-checkbox" style="font-weight: bold;">Include Headers</label>\n\t\t\t</div>\n\t\t',h.children[0].appendChild(d),h.children[1].appendChild(a),h.children[2].insertBefore(c,h.children[2].firstChild),i.create(h,{title:t?"Edit Table":"Insert Table",cancelText:"Cancel",confirmText:t?"Update Table":"Insert Table",confirmClasses:"success",confirmAction:()=>{const e=parseInt(d.value)||3,l=parseInt(a.value)||3,i=c.checked;if(t&&s){const{lexical:e}=this.editor.lx;this.editor.lexicalEditor.update(()=>{const t=e.$getNodeByKey(s);t&&t.remove()},{discrete:!0})}this.editor.insertTable(e,l,i,r)}})};render(){return this.hidden="code"===this.editorMode,t`
2
2
  <button
3
3
  class="${this.buttonClasses}"
4
4
  @mousedown="${this.handleMouseDown}"
@@ -8,8 +8,8 @@ import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../..
8
8
  </slot>
9
9
  <slot></slot>
10
10
  </button>
11
- `}static styles=[HtmlEditorControl.styles,css`
11
+ `}static styles=[e.styles,l`
12
12
  :host {
13
13
  display: inline-flex;
14
14
  }
15
- `]}customElements.define("k-hec-insert-table",InsertTable);
15
+ `]}customElements.define("k-hec-insert-table",o);
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class Italic extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class i extends t{static properties={editorMode:{type:String,state:!0}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleClick=()=>{this.editor&&this.editor.italic()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,html`
6
- <button class="${this.buttonClasses}" @click="${this.handleClick}">
5
+ `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.italic()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,e`
6
+ <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="format_italic"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}}customElements.define("k-hec-italic",Italic);
12
+ `}}customElements.define("k-hec-italic",i);
@@ -1,9 +1,9 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class Mode extends HtmlEditorControl{static properties={mode:{type:String,reflect:!0}};connectedCallback(){super.connectedCallback(),this.updateMode(),this.editor?.addEventListener("mode-changed",()=>this.updateMode())}handleClick=()=>{this.editor&&(this.editor.mode="visual"===this.editor.mode?"code":"visual")};updateMode(){this.editor&&(this.mode=this.editor.mode)}static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static properties={mode:{type:String,reflect:!0}};connectedCallback(){super.connectedCallback(),this.updateMode(),this.editor?.addEventListener("mode-changed",()=>this.updateMode())}handleClick=()=>{this.editor&&this.editor.toggleMode()};updateMode(){this.editor&&(this.mode=this.editor.mode)}static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];render(){const t="code"===this.mode?`${this.buttonClasses} bg-primary`:this.buttonClasses;return html`
5
+ `];render(){const t="code"===this.mode?`${this.buttonClasses} bg-primary`:this.buttonClasses;return e`
6
6
  <button class="${t}" @click="${this.handleClick}">
7
7
  <k-icon name="code"></k-icon>
8
8
  </button>
9
- `}}customElements.define("k-hec-mode",Mode);
9
+ `}}customElements.define("k-hec-mode",s);
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class NumberList extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static properties={editorMode:{type:String,state:!0}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleClick=()=>{this.editor&&this.editor.orderedList()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,html`
6
- <button class="${this.buttonClasses}" @click="${this.handleClick}">
5
+ `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.orderedList()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,e`
6
+ <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="format_list_numbered"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}}customElements.define("k-hec-number-list",NumberList);
12
+ `}}customElements.define("k-hec-number-list",s);
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class Strikethrough extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class s extends t{static properties={editorMode:{type:String,state:!0}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleClick=()=>{this.editor&&this.editor.strikethrough()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,html`
6
- <button class="${this.buttonClasses}" @click="${this.handleClick}">
5
+ `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.strikethrough()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,e`
6
+ <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="strikethrough_s"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}}customElements.define("k-hec-strikethrough",Strikethrough);
12
+ `}}customElements.define("k-hec-strikethrough",s);
@@ -1,4 +1,4 @@
1
- import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class TextBackgroundColor extends DropdownControl{static properties={editorMode:{type:String,state:!0},colors:{type:String},disableRemove:{type:Boolean,attribute:"disable-remove"},disablePicker:{type:Boolean,attribute:"disable-picker"}};static styles=[DropdownControl.styles,css`
1
+ import o from"./DropdownControl.js";import{html as e,css as t}from"../../lit-all.min.js";import"../Icon.js";export default class r extends o{static properties={editorMode:{type:String,state:!0},colors:{type:String},disableRemove:{type:Boolean,attribute:"disable-remove"},disablePicker:{type:Boolean,attribute:"disable-picker"}};static styles=[o.styles,t`
2
2
  .dropdown-content {
3
3
  padding: 8px;
4
4
  min-width: 200px;
@@ -53,7 +53,7 @@ import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit
53
53
  border-radius: 4px;
54
54
  cursor: pointer;
55
55
  }
56
- `];constructor(){super(),this.colors="#ffff00,#00ffff,#ff66ff,#99ff99,#ffcc99,#ff9999,#cccccc,#ffffff,#ffffcc,#ccffff,#ffccff,#ccffcc",this.disableRemove=!1,this.disablePicker=!1,this.icon="format_color_fill"}connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleRemove=o=>{o.preventDefault(),o.stopPropagation(),this.editor&&this.editor.removeTextBackgroundColor(),this.opened=!1};handleSwatchClick=o=>{o.preventDefault(),o.stopPropagation();const e=o.target.style.backgroundColor;if(this.editor&&e){const o=e.match(/\d+/g),t=o?"#"+o.map(o=>parseInt(o).toString(16).padStart(2,"0")).join(""):e;this.editor.setTextBackgroundColor(t)}this.opened=!1};handlePickerChange=o=>{o.preventDefault(),o.stopPropagation();const e=o.target.value;this.editor&&e&&this.editor.setTextBackgroundColor(e),this.opened=!1};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}getColorArray(){return this.colors.split(",").map(o=>o.trim()).filter(o=>o)}render(){this.hidden="code"===this.editorMode;const o=this.getColorArray();return html`
56
+ `];constructor(){super(),this.colors="#ffff00,#00ffff,#ff66ff,#99ff99,#ffcc99,#ff9999,#cccccc,#ffffff,#ffffcc,#ccffff,#ffccff,#ccffcc",this.disableRemove=!1,this.disablePicker=!1,this.icon="format_color_fill"}connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleRemove=o=>{o.preventDefault(),o.stopPropagation(),this.editor&&this.editor.removeTextBackgroundColor(),this.opened=!1};handleSwatchClick=o=>{o.preventDefault(),o.stopPropagation();const e=o.target.style.backgroundColor;if(this.editor&&e){const o=e.match(/\d+/g),t=o?"#"+o.map(o=>parseInt(o).toString(16).padStart(2,"0")).join(""):e;this.editor.setTextBackgroundColor(t)}this.opened=!1};handlePickerChange=o=>{o.preventDefault(),o.stopPropagation();const e=o.target.value;this.editor&&e&&this.editor.setTextBackgroundColor(e),this.opened=!1};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}getColorArray(){return this.colors.split(",").map(o=>o.trim()).filter(o=>o)}render(){this.hidden="code"===this.editorMode;const o=this.getColorArray();return e`
57
57
  <k-dropdown
58
58
  ?opened=${this.opened}
59
59
  @opened=${this.handleOpened}
@@ -67,14 +67,14 @@ import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit
67
67
  </button>
68
68
 
69
69
  <div class="dropdown-content">
70
- ${this.disableRemove?"":html`
70
+ ${this.disableRemove?"":e`
71
71
  <button class="remove-btn" @click=${this.handleRemove}>
72
72
  Remove Color
73
73
  </button>
74
74
  `}
75
75
 
76
76
  <div class="color-swatches">
77
- ${o.map(o=>html`
77
+ ${o.map(o=>e`
78
78
  <button
79
79
  class="color-swatch"
80
80
  style="background-color: ${o}"
@@ -83,7 +83,7 @@ import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit
83
83
  `)}
84
84
  </div>
85
85
 
86
- ${this.disablePicker?"":html`
86
+ ${this.disablePicker?"":e`
87
87
  <div class="picker-row">
88
88
  <label>Custom:</label>
89
89
  <input
@@ -94,4 +94,4 @@ import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit
94
94
  `}
95
95
  </div>
96
96
  </k-dropdown>
97
- `}}customElements.define("k-hec-text-background-color",TextBackgroundColor);
97
+ `}}customElements.define("k-hec-text-background-color",r);
@@ -1,4 +1,4 @@
1
- import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class TextColor extends DropdownControl{static properties={editorMode:{type:String,state:!0},colors:{type:String},disableRemove:{type:Boolean,attribute:"disable-remove"},disablePicker:{type:Boolean,attribute:"disable-picker"}};static styles=[DropdownControl.styles,css`
1
+ import e from"./DropdownControl.js";import{html as o,css as t}from"../../lit-all.min.js";import"../Icon.js";export default class r extends e{static properties={editorMode:{type:String,state:!0},colors:{type:String},disableRemove:{type:Boolean,attribute:"disable-remove"},disablePicker:{type:Boolean,attribute:"disable-picker"}};static styles=[e.styles,t`
2
2
  .dropdown-content {
3
3
  padding: 8px;
4
4
  min-width: 200px;
@@ -53,7 +53,7 @@ import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit
53
53
  border-radius: 4px;
54
54
  cursor: pointer;
55
55
  }
56
- `];constructor(){super(),this.colors="#000000,#e60000,#ff9900,#ffff00,#008a00,#0066cc,#9933ff,#ffffff,#facccc,#ffebcc,#ffffcc,#cce8cc,#cce0f5,#ebd6ff",this.disableRemove=!1,this.disablePicker=!1,this.icon="format_color_text"}connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleRemove=o=>{o.preventDefault(),o.stopPropagation(),this.editor&&this.editor.removeTextColor(),this.opened=!1};handleSwatchClick=o=>{o.preventDefault(),o.stopPropagation();const e=o.target.style.backgroundColor;if(this.editor&&e){const o=e.match(/\d+/g),t=o?"#"+o.map(o=>parseInt(o).toString(16).padStart(2,"0")).join(""):e;this.editor.setTextColor(t)}this.opened=!1};handlePickerChange=o=>{o.preventDefault(),o.stopPropagation();const e=o.target.value;this.editor&&e&&this.editor.setTextColor(e),this.opened=!1};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}getColorArray(){return this.colors.split(",").map(o=>o.trim()).filter(o=>o)}render(){this.hidden="code"===this.editorMode;const o=this.getColorArray();return html`
56
+ `];constructor(){super(),this.colors="#000000,#e60000,#ff9900,#ffff00,#008a00,#0066cc,#9933ff,#ffffff,#facccc,#ffebcc,#ffffcc,#cce8cc,#cce0f5,#ebd6ff",this.disableRemove=!1,this.disablePicker=!1,this.icon="format_color_text"}connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleRemove=e=>{e.preventDefault(),e.stopPropagation(),this.editor&&this.editor.removeTextColor(),this.opened=!1};handleSwatchClick=e=>{e.preventDefault(),e.stopPropagation();const o=e.target.style.backgroundColor;if(this.editor&&o){const e=o.match(/\d+/g),t=e?"#"+e.map(e=>parseInt(e).toString(16).padStart(2,"0")).join(""):o;this.editor.setTextColor(t)}this.opened=!1};handlePickerChange=e=>{e.preventDefault(),e.stopPropagation();const o=e.target.value;this.editor&&o&&this.editor.setTextColor(o),this.opened=!1};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}getColorArray(){return this.colors.split(",").map(e=>e.trim()).filter(e=>e)}render(){this.hidden="code"===this.editorMode;const e=this.getColorArray();return o`
57
57
  <k-dropdown
58
58
  ?opened=${this.opened}
59
59
  @opened=${this.handleOpened}
@@ -67,23 +67,23 @@ import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit
67
67
  </button>
68
68
 
69
69
  <div class="dropdown-content">
70
- ${this.disableRemove?"":html`
70
+ ${this.disableRemove?"":o`
71
71
  <button class="remove-btn" @click=${this.handleRemove}>
72
72
  Remove Color
73
73
  </button>
74
74
  `}
75
75
 
76
76
  <div class="color-swatches">
77
- ${o.map(o=>html`
77
+ ${e.map(e=>o`
78
78
  <button
79
79
  class="color-swatch"
80
- style="background-color: ${o}"
80
+ style="background-color: ${e}"
81
81
  @click=${this.handleSwatchClick}
82
82
  ></button>
83
83
  `)}
84
84
  </div>
85
85
 
86
- ${this.disablePicker?"":html`
86
+ ${this.disablePicker?"":o`
87
87
  <div class="picker-row">
88
88
  <label>Custom:</label>
89
89
  <input
@@ -94,4 +94,4 @@ import DropdownControl from"./DropdownControl.js";import{html,css}from"../../lit
94
94
  `}
95
95
  </div>
96
96
  </k-dropdown>
97
- `}}customElements.define("k-hec-text-color",TextColor);
97
+ `}}customElements.define("k-hec-text-color",r);
@@ -1,12 +1,12 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class Underline extends HtmlEditorControl{static properties={editorMode:{type:String,state:!0}};static styles=[HtmlEditorControl.styles,css`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as o}from"../../lit-all.min.js";import"../Icon.js";export default class i extends t{static properties={editorMode:{type:String,state:!0}};static styles=[t.styles,o`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  }
5
- `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleClick=()=>{this.editor&&this.editor.underline()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,html`
6
- <button class="${this.buttonClasses}" @click="${this.handleClick}">
5
+ `];connectedCallback(){super.connectedCallback(),this.updateEditorMode(),this.editor?.addEventListener("mode-changed",()=>this.updateEditorMode())}handleMouseDown=t=>{t.preventDefault(),t.stopPropagation(),this.editor&&this.editor.underline()};updateEditorMode(){this.editor&&(this.editorMode=this.editor.mode)}render(){return this.hidden="code"===this.editorMode,e`
6
+ <button class="${this.buttonClasses}" @mousedown="${this.handleMouseDown}">
7
7
  <slot name="icon">
8
8
  <k-icon name="format_underlined"></k-icon>
9
9
  </slot>
10
10
  <slot></slot>
11
11
  </button>
12
- `}}customElements.define("k-hec-underline",Underline);
12
+ `}}customElements.define("k-hec-underline",i);
@@ -1,8 +1,8 @@
1
- import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../../lit-all.min.js";export default class WordCount extends HtmlEditorControl{static properties={count:{type:Number,state:!0}};constructor(){super(),this.count=0}connectedCallback(){super.connectedCallback(),this.editor&&(this.editor.addEventListener("ready",()=>{this.updateCount()}),this.editor.addEventListener("change",()=>{this.updateCount()}),setTimeout(()=>this.updateCount(),0))}updateCount=()=>{if(!this.editor)return;const t=((new DOMParser).parseFromString(this.editor.getValue(),"text/html").body.innerText||"").trim().split(/\s+/).filter(t=>t.length>0);this.count=t.length};render(){return html`
1
+ import t from"./HtmlEditorControl.js";import{html as e,css as s}from"../../lit-all.min.js";export default class r extends t{static properties={count:{type:Number,state:!0}};constructor(){super(),this.count=0}connectedCallback(){super.connectedCallback(),this.editor&&(this.editor.addEventListener("ready",()=>{this.updateCount()}),this.editor.addEventListener("change",()=>{this.updateCount()}),setTimeout(()=>this.updateCount(),0))}updateCount=()=>{if(!this.editor)return;const t=((new DOMParser).parseFromString(this.editor.getValue(),"text/html").body.innerText||"").trim().split(/\s+/).filter(t=>t.length>0);this.count=t.length};render(){return e`
2
2
  <span class="word-count">
3
3
  <slot name="label">Words:</slot> ${this.count}
4
4
  </span>
5
- `}static styles=[HtmlEditorControl.styles,css`
5
+ `}static styles=[t.styles,s`
6
6
  :host {
7
7
  display: inline-flex;
8
8
  align-items: center;
@@ -15,4 +15,4 @@ import HtmlEditorControl from"./HtmlEditorControl.js";import{html,css}from"../..
15
15
  align-items: center;
16
16
  gap: 0.25rem;
17
17
  }
18
- `]}customElements.define("k-hec-word-count",WordCount);
18
+ `]}customElements.define("k-hec-word-count",r);
@@ -0,0 +1,24 @@
1
+ import{html as t,render as e}from"../../lit-all.min.js";import"../Icon.js";import"../Dropdown.js";const{DecoratorNode:o,$applyNodeReplacement:n,$getNodeByKey:m}=await import("https://esm.sh/lexical@0.43.0");class r extends o{static getType(){return"html-comment"}static clone(t){return new r(t.__comment,t.__key)}static isVisualCompatible(t){return t.nodeType===Node.COMMENT_NODE}static preprocessHtml(t){return t.replace(/<!--(.*?)-->/gs,(t,e)=>`<span data-html-comment="${e.replace(/"/g,"&quot;")}"></span>`)}static importDOM(){return{span:t=>t.hasAttribute("data-html-comment")?{conversion:t=>({node:s(t.getAttribute("data-html-comment")||"")}),priority:2}:null}}static importJSON(t){return s(t.comment||"")}constructor(t="",e){super(e),this.__comment=t}getComment(){return this.getLatest().__comment}setComment(t){const e=this.getWritable();return e.__comment=t,e}createDOM(o,n){const r=document.createElement("span"),s=this.__key;return e(t`
2
+ <k-dropdown close-on-select="false" open-direction="down left"
3
+ contenteditable="false"
4
+ data-html-comment=${this.__comment}
5
+ title=${this.__comment||"HTML Comment (empty)"}
6
+ @mousedown=${t=>t.stopPropagation()}
7
+ >
8
+ <k-icon slot="trigger" name="comment" class="tc-muted"
9
+ style="cursor:pointer"
10
+ @mousedown=${t=>{t.preventDefault(),t.stopPropagation()}}
11
+ ></k-icon>
12
+ <div class="pq">
13
+ <div class="small tc-muted mbh">HTML Comment</div>
14
+ <textarea class="ff-mono full p0"
15
+ style="resize: both"
16
+ .value=${this.__comment}
17
+ @input=${t=>{const e=t.target.closest("[data-html-comment]");e&&(e.setAttribute("data-html-comment",t.target.value),e.title=t.target.value)}}
18
+ @blur=${t=>{n.update(()=>{const e=m(s);e&&e.setComment(t.target.value)})}}
19
+ @keydown=${t=>t.stopPropagation()}
20
+ @beforeinput=${t=>t.stopPropagation()}
21
+ ></textarea>
22
+ </div>
23
+ </k-dropdown>
24
+ `,r),r.firstElementChild}updateDOM(t,e){return t.__comment!==this.__comment&&(e.setAttribute("data-html-comment",this.__comment),e.title=this.__comment||"HTML Comment (empty)"),!1}exportDOM(){return{element:document.createComment(this.__comment)}}exportJSON(){return{...super.exportJSON(),type:"html-comment",comment:this.__comment}}isInline(){return!0}isKeyboardSelectable(){return!0}decorate(){return null}}const s=(t="")=>n(new r(t)),a=t=>t instanceof r;export{r as HtmlCommentLexicalNode,s as $createHtmlCommentNode,a as $isHtmlCommentNode};export default class c extends HTMLElement{static lexicalNode=r}customElements.define("k-hen-html-comment",c);
@@ -1,7 +1,7 @@
1
- import TableControl from"./TableControl.js";import{html}from"../../lit-all.min.js";import"../Icon.js";export default class DeleteRecord extends TableControl{delete=()=>{this.record&&this.table.deleteRecord(this.record)};render(){return html`
1
+ import e from"./TableControl.js";import{html as t}from"../../lit-all.min.js";import"../Icon.js";export default class o extends e{delete=()=>{this.record&&this.table.deleteRecord(this.record)};render(){return t`
2
2
  <button class="no-btn icon-btn" @click="${this.delete}">
3
3
  <slot>
4
4
  <k-icon name="delete"></k-icon>
5
5
  </slot>
6
6
  </button>
7
- `}}customElements.define("k-tc-delete-record",DeleteRecord);
7
+ `}}customElements.define("k-tc-delete-record",o);
@@ -1,7 +1,7 @@
1
- import TableControl from"./TableControl.js";import{html}from"../../lit-all.min.js";import"../Icon.js";export default class DeleteSelected extends TableControl{deleteSelected=()=>{this.table.deleteSelected()};render(){return html`
1
+ import e from"./TableControl.js";import{html as t}from"../../lit-all.min.js";import"../Icon.js";export default class l extends e{deleteSelected=()=>{this.table.deleteSelected()};render(){return t`
2
2
  <button class="no-btn icon-btn" title="Delete Selected" @click="${this.deleteSelected}">
3
3
  <slot>
4
4
  <k-icon name="delete_sweep"></k-icon>
5
5
  </slot>
6
6
  </button>
7
- `}}customElements.define("k-tc-delete-selected",DeleteSelected);
7
+ `}}customElements.define("k-tc-delete-selected",l);
@@ -1,18 +1,18 @@
1
- import TableControl from"./TableControl.js";import{html,css}from"../../lit-all.min.js";import"../Icon.js";export default class Edit extends TableControl{static properties={isEditing:{type:Boolean}};static styles=[TableControl.styles,css`
1
+ import t from"./TableControl.js";import{html as e,css as i}from"../../lit-all.min.js";import"../Icon.js";export default class n extends t{static properties={isEditing:{type:Boolean}};static styles=[t.styles,i`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  width: max-content;
5
5
  align-items: baseline;
6
6
  }
7
- `];constructor(){super({maxWidth:80})}connectedCallback(){super.connectedCallback(),this.onTableEvent("editingChange",this.handleEditingChange)}handleEditingChange=t=>{t.detail.record===this.record&&(this.isEditing=t.detail.editing)};handleEdit=()=>{this.record&&this.table.editRecord(this.record)};handleSave=()=>{this.record&&this.table.saveEditedRecord(this.record)};handleCancel=()=>{this.record&&this.table.cancelEditedRecord(this.record)};render(){return this.isEditing?html`
7
+ `];constructor(){super({maxWidth:80})}connectedCallback(){super.connectedCallback(),this.onTableEvent("editingChange",this.handleEditingChange)}handleEditingChange=t=>{t.detail.record===this.record&&(this.isEditing=t.detail.editing)};handleEdit=()=>{this.record&&this.table.editRecord(this.record)};handleSave=()=>{this.record&&this.table.saveEditedRecord(this.record)};handleCancel=()=>{this.record&&this.table.cancelEditedRecord(this.record)};render(){return this.isEditing?e`
8
8
  <button class="no-btn icon-btn bg-success" @click="${this.handleSave}">
9
9
  <k-icon name="check"></k-icon>
10
10
  </button>
11
11
  <button class="no-btn icon-btn bg-danger" @click="${this.handleCancel}">
12
12
  <k-icon name="close"></k-icon>
13
13
  </button>
14
- `:html`
14
+ `:e`
15
15
  <button class="no-btn icon-btn" @click="${this.handleEdit}">
16
16
  <k-icon name="edit"></k-icon>
17
17
  </button>
18
- `}}customElements.define("k-tc-edit",Edit);
18
+ `}}customElements.define("k-tc-edit",n);
@@ -1,8 +1,8 @@
1
- import TableControl from"./TableControl.js";import{html}from"../../lit-all.min.js";import"../Icon.js";export default class ExportCSV extends TableControl{constructor(){super(),this.maxWidth=136}getCSV(){const t=this.table;if(!t)return"";let e="";const o=[];if(t.fields.forEach(({name:t,calculator:e})=>{e||o.push(t)}),e+=o.join(",")+"\n",this.record){const t=o.map(t=>this.record[t]||"");e+=t.join(",")+"\n"}else t.records.forEach(t=>{const r=o.map(e=>t[e]||"");e+=r.join(",")+"\n"});return e}export=()=>{const t=this.getCSV(),e=new Blob([t],{type:"text/csv"}),o=URL.createObjectURL(e),r=document.createElement("a");r.href=o,r.download="data.csv",r.click(),URL.revokeObjectURL(o)};render(){return html`
1
+ import t from"./TableControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class o extends t{constructor(){super(),this.maxWidth=136}getCSV(){const t=this.table;if(!t)return"";let e="";const o=[];if(t.fields.forEach(({name:t,calculator:e})=>{e||o.push(t)}),e+=o.join(",")+"\n",this.record){const t=o.map(t=>this.record[t]||"");e+=t.join(",")+"\n"}else t.records.forEach(t=>{const r=o.map(e=>t[e]||"");e+=r.join(",")+"\n"});return e}export=()=>{const t=this.getCSV(),e=new Blob([t],{type:"text/csv"}),o=URL.createObjectURL(e),r=document.createElement("a");r.href=o,r.download="data.csv",r.click(),URL.revokeObjectURL(o)};render(){return e`
2
2
  <button class="no-btn ph" @click="${this.export}">
3
3
  <slot>
4
4
  <k-icon name="export-file"></k-icon>
5
5
  Export CSV
6
6
  </slot>
7
7
  </button>
8
- `}}customElements.define("k-tc-export-csv",ExportCSV);
8
+ `}}customElements.define("k-tc-export-csv",o);
@@ -1,8 +1,8 @@
1
- import TableControl from"./TableControl.js";import{html}from"../../lit-all.min.js";import"../Icon.js";export default class ExportJson extends TableControl{constructor(){super(),this.maxWidth=136}export=()=>{const t=this.record;if(t){const e=JSON.stringify(t),o=new Blob([e],{type:"application/json"}),n=URL.createObjectURL(o),r=document.createElement("a");r.href=n,r.download="data.json",r.click(),URL.revokeObjectURL(n)}else{const t=JSON.stringify(this.table.records),e=new Blob([t],{type:"application/json"}),o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download="data.json",n.click(),URL.revokeObjectURL(o)}};render(){return html`
1
+ import t from"./TableControl.js";import{html as e}from"../../lit-all.min.js";import"../Icon.js";export default class o extends t{constructor(){super(),this.maxWidth=136}export=()=>{const t=this.record;if(t){const e=JSON.stringify(t),o=new Blob([e],{type:"application/json"}),n=URL.createObjectURL(o),r=document.createElement("a");r.href=n,r.download="data.json",r.click(),URL.revokeObjectURL(n)}else{const t=JSON.stringify(this.table.records),e=new Blob([t],{type:"application/json"}),o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download="data.json",n.click(),URL.revokeObjectURL(o)}};render(){return e`
2
2
  <button class="no-btn ph" @click="${this.export}">
3
3
  <slot>
4
4
  <k-icon name="export-file"></k-icon>
5
5
  Export JSON
6
6
  </slot>
7
7
  </button>
8
- `}}customElements.define("k-tc-export-json",ExportJson);
8
+ `}}customElements.define("k-tc-export-json",o);