@aquera/nile-elements 0.1.67-beta-1.5 → 0.1.67-beta-1.7

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 (223) hide show
  1. package/demo/index.html +24 -11
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +130 -58
  5. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  6. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -1
  7. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  8. package/dist/nile-badge/index.cjs.js +1 -1
  9. package/dist/nile-badge/index.esm.js +1 -1
  10. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  11. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  12. package/dist/nile-badge/nile-badge.esm.js +1 -1
  13. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  14. package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -1
  15. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  16. package/dist/nile-button/index.cjs.js +1 -1
  17. package/dist/nile-button/index.esm.js +1 -1
  18. package/dist/nile-button/nile-button.cjs.js +1 -1
  19. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  20. package/dist/nile-button/nile-button.esm.js +1 -1
  21. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  22. package/dist/nile-button/nile-button.test.cjs.js.map +1 -1
  23. package/dist/nile-button/nile-button.test.esm.js +1 -1
  24. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  25. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  26. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  27. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  28. package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
  29. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  30. package/dist/nile-dialog/index.cjs.js +1 -1
  31. package/dist/nile-dialog/index.esm.js +1 -1
  32. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  33. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  34. package/dist/nile-dialog/nile-dialog.esm.js +2 -2
  35. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  36. package/dist/nile-dialog/nile-dialog.test.cjs.js.map +1 -1
  37. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  38. package/dist/nile-drawer/index.cjs.js +1 -1
  39. package/dist/nile-drawer/index.esm.js +1 -1
  40. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  41. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  42. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  43. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  44. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -1
  45. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  46. package/dist/nile-icon/icons/svg/format_clear.cjs.js +2 -0
  47. package/dist/nile-icon/icons/svg/format_clear.cjs.js.map +1 -0
  48. package/dist/nile-icon/icons/svg/format_clear.esm.js +1 -0
  49. package/dist/nile-icon/icons/svg/format_list_bulleted.cjs.js +2 -0
  50. package/dist/nile-icon/icons/svg/format_list_bulleted.cjs.js.map +1 -0
  51. package/dist/nile-icon/icons/svg/format_list_bulleted.esm.js +1 -0
  52. package/dist/nile-icon/icons/svg/format_list_numbered.cjs.js +2 -0
  53. package/dist/nile-icon/icons/svg/format_list_numbered.cjs.js.map +1 -0
  54. package/dist/nile-icon/icons/svg/format_list_numbered.esm.js +1 -0
  55. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  56. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  57. package/dist/nile-icon/index.cjs.js +1 -1
  58. package/dist/nile-icon/index.cjs.js.map +1 -1
  59. package/dist/nile-icon/index.esm.js +2 -2
  60. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  61. package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -1
  62. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  63. package/dist/nile-icon-button/index.cjs.js +1 -1
  64. package/dist/nile-icon-button/index.esm.js +1 -1
  65. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  66. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  67. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  68. package/dist/nile-input/index.cjs.js +1 -1
  69. package/dist/nile-input/index.esm.js +1 -1
  70. package/dist/nile-input/nile-input.cjs.js +1 -1
  71. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  72. package/dist/nile-input/nile-input.esm.js +1 -1
  73. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  74. package/dist/nile-input/nile-input.test.cjs.js.map +1 -1
  75. package/dist/nile-input/nile-input.test.esm.js +1 -1
  76. package/dist/nile-menu-item/index.cjs.js +1 -1
  77. package/dist/nile-menu-item/index.esm.js +1 -1
  78. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  79. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  80. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  81. package/dist/nile-option/index.cjs.js +1 -1
  82. package/dist/nile-option/index.esm.js +1 -1
  83. package/dist/nile-option/nile-option.cjs.js +1 -1
  84. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  85. package/dist/nile-option/nile-option.esm.js +1 -1
  86. package/dist/nile-rich-text-editor/index.cjs.js +1 -1
  87. package/dist/nile-rich-text-editor/index.esm.js +1 -1
  88. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +1 -1
  89. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -1
  90. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +1 -1
  91. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -1
  92. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +14 -13
  93. package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
  94. package/dist/nile-rich-text-editor/nile-rte-color.cjs.js +1 -1
  95. package/dist/nile-rich-text-editor/nile-rte-color.cjs.js.map +1 -1
  96. package/dist/nile-rich-text-editor/nile-rte-color.esm.js +54 -1
  97. package/dist/nile-rich-text-editor/nile-rte-link.cjs.js +2 -0
  98. package/dist/nile-rich-text-editor/nile-rte-link.cjs.js.map +1 -0
  99. package/dist/nile-rich-text-editor/nile-rte-link.esm.js +19 -0
  100. package/dist/nile-rich-text-editor/nile-rte-select.cjs.js +1 -1
  101. package/dist/nile-rich-text-editor/nile-rte-select.cjs.js.map +1 -1
  102. package/dist/nile-rich-text-editor/nile-rte-select.esm.js +39 -39
  103. package/dist/nile-rich-text-editor/utils.cjs.js +1 -1
  104. package/dist/nile-rich-text-editor/utils.cjs.js.map +1 -1
  105. package/dist/nile-rich-text-editor/utils.esm.js +1 -1
  106. package/dist/nile-select/index.cjs.js +1 -1
  107. package/dist/nile-select/index.esm.js +1 -1
  108. package/dist/nile-select/nile-select.cjs.js +1 -1
  109. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  110. package/dist/nile-select/nile-select.esm.js +1 -1
  111. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  112. package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
  113. package/dist/nile-select/nile-select.test.esm.js +1 -1
  114. package/dist/nile-tab/index.cjs.js +1 -1
  115. package/dist/nile-tab/index.esm.js +1 -1
  116. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  117. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  118. package/dist/nile-tab/nile-tab.esm.js +1 -1
  119. package/dist/nile-tab-group/index.cjs.js +1 -1
  120. package/dist/nile-tab-group/index.esm.js +1 -1
  121. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  122. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  123. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  124. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  125. package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +1 -1
  126. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  127. package/dist/nile-tag/index.cjs.js +1 -1
  128. package/dist/nile-tag/index.esm.js +1 -1
  129. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  130. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  131. package/dist/nile-tag/nile-tag.esm.js +1 -1
  132. package/dist/nile-toast/index.cjs.js +1 -1
  133. package/dist/nile-toast/index.esm.js +1 -1
  134. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  135. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  136. package/dist/nile-toast/nile-toast.esm.js +1 -1
  137. package/dist/nile-tree/index.cjs.js +1 -1
  138. package/dist/nile-tree/index.esm.js +1 -1
  139. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  140. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  141. package/dist/nile-tree/nile-tree.esm.js +1 -1
  142. package/dist/nile-tree-item/index.cjs.js +1 -1
  143. package/dist/nile-tree-item/index.esm.js +1 -1
  144. package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
  145. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
  146. package/dist/nile-tree-item/nile-tree-item.esm.js +1 -1
  147. package/dist/nile-virtual-select/index.cjs.js +1 -1
  148. package/dist/nile-virtual-select/index.esm.js +1 -1
  149. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +1 -1
  150. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  151. package/dist/nile-virtual-select/nile-virtual-select.esm.js +1 -1
  152. package/dist/src/nile-icon/icons/svg/format_clear.d.ts +5 -0
  153. package/dist/src/nile-icon/icons/svg/format_clear.js +5 -0
  154. package/dist/src/nile-icon/icons/svg/format_clear.js.map +1 -0
  155. package/dist/src/nile-icon/icons/svg/format_list_bulleted.d.ts +5 -0
  156. package/dist/src/nile-icon/icons/svg/format_list_bulleted.js +5 -0
  157. package/dist/src/nile-icon/icons/svg/format_list_bulleted.js.map +1 -0
  158. package/dist/src/nile-icon/icons/svg/format_list_numbered.d.ts +5 -0
  159. package/dist/src/nile-icon/icons/svg/format_list_numbered.js +5 -0
  160. package/dist/src/nile-icon/icons/svg/format_list_numbered.js.map +1 -0
  161. package/dist/src/nile-icon/icons/svg/index.d.ts +3 -0
  162. package/dist/src/nile-icon/icons/svg/index.js +3 -0
  163. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  164. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +14 -13
  165. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -1
  166. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.d.ts +1 -0
  167. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +38 -90
  168. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
  169. package/dist/src/nile-rich-text-editor/nile-rte-color.d.ts +11 -3
  170. package/dist/src/nile-rich-text-editor/nile-rte-color.js +171 -6
  171. package/dist/src/nile-rich-text-editor/nile-rte-color.js.map +1 -1
  172. package/dist/src/nile-rich-text-editor/nile-rte-link.d.ts +19 -0
  173. package/dist/src/nile-rich-text-editor/nile-rte-link.js +172 -0
  174. package/dist/src/nile-rich-text-editor/nile-rte-link.js.map +1 -0
  175. package/dist/src/nile-rich-text-editor/nile-rte-select.js +62 -57
  176. package/dist/src/nile-rich-text-editor/nile-rte-select.js.map +1 -1
  177. package/dist/src/nile-rich-text-editor/rte-utils/content.d.ts +2 -0
  178. package/dist/src/nile-rich-text-editor/rte-utils/content.js +25 -0
  179. package/dist/src/nile-rich-text-editor/rte-utils/content.js.map +1 -0
  180. package/dist/src/nile-rich-text-editor/rte-utils/css.d.ts +1 -0
  181. package/dist/src/nile-rich-text-editor/rte-utils/css.js +9 -0
  182. package/dist/src/nile-rich-text-editor/rte-utils/css.js.map +1 -0
  183. package/dist/src/nile-rich-text-editor/rte-utils/dom.d.ts +2 -0
  184. package/dist/src/nile-rich-text-editor/rte-utils/dom.js +48 -0
  185. package/dist/src/nile-rich-text-editor/rte-utils/dom.js.map +1 -0
  186. package/dist/src/nile-rich-text-editor/rte-utils/formatting.d.ts +2 -0
  187. package/dist/src/nile-rich-text-editor/rte-utils/formatting.js +69 -0
  188. package/dist/src/nile-rich-text-editor/rte-utils/formatting.js.map +1 -0
  189. package/dist/src/nile-rich-text-editor/rte-utils/keys.d.ts +2 -0
  190. package/dist/src/nile-rich-text-editor/rte-utils/keys.js +38 -0
  191. package/dist/src/nile-rich-text-editor/rte-utils/keys.js.map +1 -0
  192. package/dist/src/nile-rich-text-editor/rte-utils/lists.d.ts +2 -0
  193. package/dist/src/nile-rich-text-editor/rte-utils/lists.js +28 -0
  194. package/dist/src/nile-rich-text-editor/rte-utils/lists.js.map +1 -0
  195. package/dist/src/nile-rich-text-editor/rte-utils/selection.d.ts +17 -0
  196. package/dist/src/nile-rich-text-editor/rte-utils/selection.js +39 -0
  197. package/dist/src/nile-rich-text-editor/rte-utils/selection.js.map +1 -0
  198. package/dist/src/nile-rich-text-editor/rte-utils/toolbar.d.ts +28 -0
  199. package/dist/src/nile-rich-text-editor/rte-utils/toolbar.js +161 -0
  200. package/dist/src/nile-rich-text-editor/rte-utils/toolbar.js.map +1 -0
  201. package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.d.ts +13 -0
  202. package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.js +119 -0
  203. package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.js.map +1 -0
  204. package/dist/src/nile-rich-text-editor/rte-utils/vars.d.ts +1 -0
  205. package/dist/src/nile-rich-text-editor/rte-utils/vars.js +14 -0
  206. package/dist/src/nile-rich-text-editor/rte-utils/vars.js.map +1 -0
  207. package/dist/src/nile-rich-text-editor/sanatize.d.ts +1 -0
  208. package/dist/src/nile-rich-text-editor/sanatize.js +40 -0
  209. package/dist/src/nile-rich-text-editor/sanatize.js.map +1 -0
  210. package/dist/src/nile-rich-text-editor/utils.js.map +1 -1
  211. package/dist/tsconfig.tsbuildinfo +1 -1
  212. package/package.json +1 -1
  213. package/src/nile-icon/icons/svg/format_clear.ts +5 -0
  214. package/src/nile-icon/icons/svg/format_list_bulleted.ts +5 -0
  215. package/src/nile-icon/icons/svg/format_list_numbered.ts +5 -0
  216. package/src/nile-icon/icons/svg/index.ts +3 -0
  217. package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +14 -13
  218. package/src/nile-rich-text-editor/nile-rich-text-editor.ts +56 -90
  219. package/src/nile-rich-text-editor/nile-rte-color.ts +182 -6
  220. package/src/nile-rich-text-editor/nile-rte-link.ts +161 -0
  221. package/src/nile-rich-text-editor/nile-rte-select.ts +178 -173
  222. package/src/nile-rich-text-editor/utils.ts +342 -341
  223. package/vscode-html-custom-data.json +33 -3
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent nile-elements following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "nile-elements",
6
- "version": "0.1.67-beta-1.5",
6
+ "version": "0.1.67-beta-1.7",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Do not edit directly
3
+ */
4
+
5
+ export default "PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNy43MDM1NSA1LjM4MTI5TDcuMDM5MzcgNC43MTcxMUw3LjU5NjIgMy4zNzI2N0g1LjY2Nzc3TDQuNzk0NTYgMi40OTkyN0gxMi4zNDI3VjMuMzY4NjFIOC41NTkxTDcuNzAzNTUgNS4zODEyOVpNMTIuNTAwMiAxM0w2Ljg2OTcxIDcuMzU1ODRMNS4yMzk5OSAxMS4xOTExSDQuMjg1MjFMNi4yMDk1OSA2LjY5NTg5TDEgMS40OTk4MkwxLjQ5OTgxIDFMMTMgMTIuNTAwNEwxMi41MDAyIDEzWiIgZmlsbD0iYmxhY2siLz48L3N2Zz4=";
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Do not edit directly
3
+ */
4
+
5
+ export default "PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yMTE2MyAxMS44NzkyVjExLjEyODZIMTNWMTEuODc5Mkg1LjIxMTYzWk01LjIxMTYzIDcuMzc1MzJWNi42MjQ2OEgxM1Y3LjM3NTMySDUuMjExNjNaTTUuMjExNjMgMi44NzE0M1YyLjEyMDc5SDEzVjIuODcxNDNINS4yMTE2M1pNMS45OTUyNSAxMi41QzEuNzIxNSAxMi41IDEuNDg3MTkgMTIuNDAyNSAxLjI5MjMxIDEyLjIwNzRDMS4wOTc0NCAxMi4wMTIzIDEgMTEuNzc3OCAxIDExLjUwMzlDMSAxMS4yMyAxLjA5NzQ0IDEwLjk5NTUgMS4yOTIzMSAxMC44MDAzQzEuNDg3MTkgMTAuNjA1MyAxLjcyMTUgMTAuNTA3OCAxLjk5NTI1IDEwLjUwNzhDMi4yNjg4OCAxMC41MDc4IDIuNTAzMTMgMTAuNjA1MyAyLjY5OCAxMC44MDAzQzIuODkyODggMTAuOTk1NSAyLjk5MDMxIDExLjIzIDIuOTkwMzEgMTEuNTAzOUMyLjk5MDMxIDExLjc3NzggMi44OTI4OCAxMi4wMTIzIDIuNjk4IDEyLjIwNzRDMi41MDMxMyAxMi40MDI1IDIuMjY4ODggMTIuNSAxLjk5NTI1IDEyLjVaTTEuOTk1MjUgNy45OTYxMUMxLjcyMTUgNy45OTYxMSAxLjQ4NzE5IDcuODk4NTkgMS4yOTIzMSA3LjcwMzU0QzEuMDk3NDQgNy41MDgzOCAxIDcuMjczODYgMSA3QzEgNi43MjYxNCAxLjA5NzQ0IDYuNDkxNjIgMS4yOTIzMSA2LjI5NjQ1QzEuNDg3MTkgNi4xMDE0MSAxLjcyMTUgNi4wMDM4OSAxLjk5NTI1IDYuMDAzODlDMi4yNjg4OCA2LjAwMzg5IDIuNTAzMTMgNi4xMDE0MSAyLjY5OCA2LjI5NjQ1QzIuODkyODggNi40OTE2MiAyLjk5MDMxIDYuNzI2MTQgMi45OTAzMSA3QzIuOTkwMzEgNy4yNzM4NiAyLjg5Mjg4IDcuNTA4MzggMi42OTggNy43MDM1NEMyLjUwMzEzIDcuODk4NTkgMi4yNjg4OCA3Ljk5NjExIDEuOTk1MjUgNy45OTYxMVpNMS45OTUyNSAzLjQ5MjIyQzEuNzIxNSAzLjQ5MjIyIDEuNDg3MTkgMy4zOTQ3IDEuMjkyMzEgMy4xOTk2NkMxLjA5NzQ0IDMuMDA0NDkgMSAyLjc2OTk3IDEgMi40OTYxMUMxIDIuMjIyMjUgMS4wOTc0NCAxLjk4NzczIDEuMjkyMzEgMS43OTI1N0MxLjQ4NzE5IDEuNTk3NTIgMS43MjE1IDEuNSAxLjk5NTI1IDEuNUMyLjI2ODg4IDEuNSAyLjUwMzEzIDEuNTk3NTIgMi42OTggMS43OTI1N0MyLjg5Mjg4IDEuOTg3NzMgMi45OTAzMSAyLjIyMjI1IDIuOTkwMzEgMi40OTYxMUMyLjk5MDMxIDIuNzY5OTcgMi44OTI4OCAzLjAwNDQ5IDIuNjk4IDMuMTk5NjZDMi41MDMxMyAzLjM5NDcgMi4yNjg4OCAzLjQ5MjIyIDEuOTk1MjUgMy40OTIyMloiIGZpbGw9ImJsYWNrIi8+PC9zdmc+";
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Do not edit directly
3
+ */
4
+
5
+ export default "PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMS41IDEzVjEyLjQxMDNIMy4yMTg3NVYxMS41SDIuMTg3NVYxMC45MTAzSDMuMjE4NzVWMTBIMS41VjkuNDEwMzNIMy4zNTA5MkMzLjQ4NTc5IDkuNDEwMzMgMy41OTg4MiA5LjQ1NDU2IDMuNjkwMDMgOS41NDNDMy43ODEyNCA5LjYzMTQ0IDMuODI2ODQgOS43NDEwNiAzLjgyNjg0IDkuODcxODNWMTAuNzk0OEMzLjgyNjg0IDEwLjkyNTYgMy43ODEyNCAxMS4wMzUyIDMuNjkwMDMgMTEuMTIzN0MzLjU5ODgyIDExLjIxMjEgMy40ODU3OSAxMS4yNTYzIDMuMzUwOTIgMTEuMjU2M0MzLjQ4NTc5IDExLjI1NjMgMy41OTg4MiAxMS4zMDA2IDMuNjkwMDMgMTEuMzg5MkMzLjc4MTI0IDExLjQ3NzYgMy44MjY4NCAxMS41ODcyIDMuODI2ODQgMTEuNzE4VjEyLjUzODVDMy44MjY4NCAxMi42NjkzIDMuNzgxMjQgMTIuNzc4OSAzLjY5MDAzIDEyLjg2NzNDMy41OTg4MiAxMi45NTU4IDMuNDg1NzkgMTMgMy4zNTA5MiAxM0gxLjVaTTEuNSA4Ljc5NDgzVjcuMTY2NjdDMS41IDcuMDM1ODkgMS41NDU2IDYuOTI2MjggMS42MzY4MSA2LjgzNzgzQzEuNzI4MDIgNi43NDkzOSAxLjg0MTA2IDYuNzA1MTcgMS45NzU5MiA2LjcwNTE3SDMuMjE4NzVWNS43OTQ4M0gxLjVWNS4yMDUxN0gzLjM1MDkyQzMuNDg1NzkgNS4yMDUxNyAzLjU5ODgyIDUuMjQ5MzkgMy42OTAwMyA1LjMzNzgzQzMuNzgxMjQgNS40MjYyOCAzLjgyNjg0IDUuNTM1ODkgMy44MjY4NCA1LjY2NjY3VjYuODMzMzNDMy44MjY4NCA2Ljk2NDExIDMuNzgxMjQgNy4wNzM3MiAzLjY5MDAzIDcuMTYyMTdDMy41OTg4MiA3LjI1MDYxIDMuNDg1NzkgNy4yOTQ4MyAzLjM1MDkyIDcuMjk0ODNIMi4xMDgwOVY4LjIwNTE3SDMuODI2ODRWOC43OTQ4M0gxLjVaTTIuNTMxMjUgNC41ODk2N1YxLjU4OTY3SDEuNVYxSDMuMTM5MzRWNC41ODk2N0gyLjUzMTI1Wk01LjM2MDY2IDExLjMzMzNWMTAuNjY2N0gxMi41VjExLjMzMzNINS4zNjA2NlpNNS4zNjA2NiA3LjMzMzMzVjYuNjY2NjdIMTIuNVY3LjMzMzMzSDUuMzYwNjZaTTUuMzYwNjYgMy4zMzMzM1YyLjY2NjY3SDEyLjVWMy4zMzMzM0g1LjM2MDY2WiIgZmlsbD0iYmxhY2siLz48L3N2Zz4=";
@@ -176,7 +176,10 @@ export { default as format_align_left } from './format_align_left';
176
176
  export { default as format_align_middle } from './format_align_middle';
177
177
  export { default as format_align_right } from './format_align_right';
178
178
  export { default as format_bold } from './format_bold';
179
+ export { default as format_clear } from './format_clear';
179
180
  export { default as format_italic } from './format_italic';
181
+ export { default as format_list_bulleted } from './format_list_bulleted';
182
+ export { default as format_list_numbered } from './format_list_numbered';
180
183
  export { default as format_underline } from './format_underline';
181
184
  export { default as frequency } from './frequency';
182
185
  export { default as fullunion } from './full-union';
@@ -2,9 +2,7 @@
2
2
  import { css } from 'lit';
3
3
 
4
4
  export const styles = css`
5
- .editor * {
6
- all: revert;
7
- }
5
+
8
6
 
9
7
  nile-rich-text-editor { position: relative; display: block; font-family: inherit; }
10
8
 
@@ -19,7 +17,7 @@ nile-rte-toolbar-item > nile-button::part(base) {
19
17
 
20
18
 
21
19
  .toolbar, nile-rte-toolbar {
22
- display:flex; align-items:center; gap:8px; padding:8px;
20
+ display:flex; align-items:center; gap:6px; padding:8px;
23
21
  border:1px solid #e5e7eb; border-bottom:none; border-radius:8px 8px 0 0; background:#fff;
24
22
  }
25
23
 
@@ -38,14 +36,14 @@ nile-rte-toolbar-item > nile-button::part(base) {
38
36
  nile-rte-divider { width:1px; height:20px; background:#e5e7eb; display:inline-block; margin:0 4px; }
39
37
 
40
38
  .editor p { margin:1em 0; }
41
- .editor h1 { font-size:2em, all: revert; display: block;
39
+ .editor h1, .preview h1 { font-size:2em, all: revert; display: block;
42
40
  font-size: 2em;
43
41
  margin-top: 0.67em;
44
42
  margin-bottom: 0.67em;
45
43
  margin-left: 0;
46
44
  margin-right: 0;
47
45
  font-weight: bold; }
48
- .editor h2 { all: revert; display: block;
46
+ .editor h2, .preview h2 { all: revert; display: block;
49
47
  font-size: 1.5em;
50
48
  margin-top: 0.83em;
51
49
  margin-bottom: 0.83em;
@@ -66,14 +64,17 @@ font-weight: bold;}
66
64
  display: inline-flex;
67
65
  align-items: center;
68
66
  justify-content: center;
69
- height: 28px;
70
- padding: 0 8px;
71
- border: 1px solid var(--nile-color-border, #d9d9d9);
67
+ /* border: 1px solid var(--nile-color-border, #d9d9d9); */
72
68
  border-radius: 6px;
73
69
  background: #fff;
74
70
  cursor: pointer;
75
- }
71
+ border:none;
72
+
76
73
 
74
+ }
75
+ nile-button.rte-color-trigger::part(base){
76
+ width:32px; height:32px; padding:0px 6px;
77
+ }
77
78
  .rte-color-trigger .glyph-stack {
78
79
  display: grid; /* stack vertically */
79
80
  grid-auto-rows: max-content;
@@ -85,17 +86,17 @@ font-weight: bold;}
85
86
  .rte-color-trigger .glyph {
86
87
  font-size: 14px;
87
88
  line-height: 1;
88
- margin-bottom: 2px; /* little breathing space above underline */
89
+ margin-bottom: 2px;
89
90
  }
90
91
 
91
92
  .rte-color-trigger .underline {
92
93
  width: 18px;
93
94
  height: 3px;
94
95
  border-radius: 2px;
95
- background: currentColor; /* we override via JS with backgroundColor */
96
+ background: currentColor;
96
97
  }
97
98
 
98
- /* (unchanged) highlight square */
99
+
99
100
  .rte-color-trigger .swatch-box {
100
101
  width: 18px;
101
102
  height: 16px;
@@ -9,11 +9,12 @@ import './nile-rte-color';
9
9
  import './nile-rte-divider';
10
10
  import './nile-rte-preview';
11
11
  import './nile-rte-mentions';
12
+ import './nile-rte-link';
12
13
 
13
14
  import {
14
15
  closestBlock, nearestElement, rgbToHex,
15
16
  toggleInlineTag, setBlockTag, setAlignment,
16
- setFontFamily, setForeColor, insertOrEditLink, setBackColor
17
+ setFontFamily, setForeColor, setBackColor,
17
18
  } from './utils';
18
19
 
19
20
  import {styles} from './nile-rich-text-editor.css';
@@ -33,9 +34,9 @@ const DEFAULT_ICONS: Record<string, string> = {
33
34
  center: 'format_align_middle',
34
35
  right: 'format_align_right',
35
36
  justify: 'format_align_justify',
36
- ul: 'nile-ul',
37
- ol: 'nile-ol',
38
- clear: 'error',
37
+ ul: 'format_list_bulleted',
38
+ ol: 'format_list_numbered',
39
+ clear: 'format_clear',
39
40
  };
40
41
 
41
42
  @customElement('nile-rich-text-editor')
@@ -259,7 +260,16 @@ private bgSwatchEl: HTMLElement | null = null;
259
260
  });
260
261
  return;
261
262
  }
262
-
263
+ if (tag === 'nile-rte-link') {
264
+ (child as any).editorEl = this.editorEl;
265
+ child.addEventListener('link-changed', () => {
266
+ this.updateContent();
267
+ this.updateToolbarState();
268
+ });
269
+ return;
270
+ }
271
+
272
+
263
273
 
264
274
  if (tag === 'nile-rte-toolbar-item') {
265
275
 
@@ -327,97 +337,33 @@ private bgSwatchEl: HTMLElement | null = null;
327
337
  setFontFamily(this.editorEl, val);
328
338
  }
329
339
 
330
- // update the editor content & toolbar UI
340
+
331
341
  this.updateContent();
332
342
  this.updateToolbarState();
333
343
  });
334
344
 
335
- // nothing else to inject into the DOM
345
+
336
346
  return;
337
347
  }
338
348
 
339
349
 
340
350
  if (tag === 'nile-rte-color') {
341
- const label = child.getAttribute('label') ?? 'Text color';
342
- const value = child.getAttribute('value') ?? '#000000';
343
- const mode = child.getAttribute('mode') ?? 'text'; // 'text' | 'background'
344
-
345
- // Create/attach the hidden color input
346
- let input = child.querySelector(':scope > input[type="color"]') as HTMLInputElement | null;
347
- if (!input) {
348
- input = document.createElement('input');
349
- input.type = 'color';
350
- input.style.position = 'absolute';
351
- input.style.opacity = '0';
352
- input.style.pointerEvents = 'none'; // we'll click it programmatically
353
- child.appendChild(input);
354
- }
355
- input.title = label;
356
- input.value = value;
357
-
358
- // Build a custom trigger that shows the current color
359
- let trigger = child.querySelector(':scope > button.rte-color-trigger') as HTMLButtonElement | null;
360
- if (!trigger) {
361
- trigger = document.createElement('button');
362
- trigger.type = 'button';
363
- trigger.className = 'rte-color-trigger';
364
- trigger.setAttribute('aria-label', label);
365
-
366
- if (mode === 'background') {
367
- trigger.innerHTML = `
368
- <span class="swatch-box" aria-hidden="true"></span>
369
- `;
370
- } else {
371
- trigger.innerHTML = `
372
- <span class="glyph-stack" aria-hidden="true">
373
- <span class="glyph">A</span>
374
- <span class="underline"></span>
375
- </span>
376
- `;
377
- }
378
- child.appendChild(trigger);
379
- }
380
-
381
- // Cache swatch elements to update later
382
- const underline = trigger.querySelector('.underline') as HTMLElement | null;
383
- const square = trigger.querySelector('.swatch-box') as HTMLElement | null;
384
-
385
- if (mode === 'background') {
386
- this.bgColorInput = input;
387
- this.bgSwatchEl = square;
388
- if (this.bgSwatchEl) this.bgSwatchEl.style.backgroundColor = input.value;
389
- } else {
390
- this.colorInput = input;
391
- this.colorSwatchEl = underline;
392
- if (this.colorSwatchEl) this.colorSwatchEl.style.backgroundColor = input.value;
393
- }
394
-
395
- // Open native picker on trigger click
396
- trigger.addEventListener('click', (e) => {
397
- e.preventDefault();
398
- // Keep selection before opening the picker
351
+ child.addEventListener('change', (e: any) => {
399
352
  this.focusAndRestore();
400
- input!.click();
401
- });
353
+ const { mode, value } = e.detail;
402
354
 
403
- // When the user picks a color, apply it + update swatch
404
- input.addEventListener('input', () => {
405
- this.focusAndRestore();
406
- if (mode === 'background') {
407
- setBackColor(this.editorEl, input!.value);
408
- if (this.bgSwatchEl) this.bgSwatchEl.style.backgroundColor = input!.value;
355
+ if (mode === 'backColor') {
356
+ setBackColor(this.editorEl, value);
409
357
  } else {
410
- setForeColor(this.editorEl, input!.value);
411
- if (this.colorSwatchEl) this.colorSwatchEl.style.backgroundColor = input!.value;
358
+ setForeColor(this.editorEl, value);
412
359
  }
360
+
413
361
  this.updateContent();
414
362
  this.updateToolbarState();
415
363
  });
416
-
417
- // Prevent losing selection when interacting
418
- trigger.addEventListener('mousedown', e => e.preventDefault());
419
- input.addEventListener('mousedown', e => e.preventDefault());
364
+ return;
420
365
  }
366
+
421
367
  });
422
368
  }
423
369
  private onSelectionChange = () => {
@@ -441,12 +387,12 @@ private bgSwatchEl: HTMLElement | null = null;
441
387
  }
442
388
  private focusAndRestore() { this.editorEl?.focus(); this.restoreSelection(); }
443
389
 
444
- /*──────────────────────── LIST HELPERS ────────────────────────*/
390
+
445
391
  private insertList(type: 'ul' | 'ol') {
446
392
  this.restoreSelection();
447
393
  if (!this.lastRange) return;
448
394
 
449
- // build <ul>/<ol>
395
+
450
396
  const list = document.createElement(type);
451
397
 
452
398
  // grab the selected fragment
@@ -526,7 +472,7 @@ private ensureAtLeastOneParagraph() {
526
472
  case 'justify': setAlignment(this.editorEl, 'justify'); break;
527
473
  case 'ul': this.insertList('ul'); break;
528
474
  case 'ol': this.insertList('ol'); break;
529
- case 'link': insertOrEditLink(this.editorEl); break;
475
+ case 'link': break;
530
476
  case 'clear':
531
477
  const walker = document.createTreeWalker(this.editorEl, NodeFilter.SHOW_ELEMENT);
532
478
  const toUnwrap: HTMLElement[] = [];
@@ -672,33 +618,52 @@ private ensureAtLeastOneParagraph() {
672
618
  if (!this.editorEl) return;
673
619
  this.ensureAtLeastOneParagraph();
674
620
 
675
- // Clone content for safe manipulation
621
+
676
622
  const clone = this.editorEl.cloneNode(true) as HTMLElement;
677
623
 
678
- // Walk the original DOM and the clone in parallel
624
+
679
625
  const origWalker = document.createTreeWalker(this.editorEl, NodeFilter.SHOW_ELEMENT);
680
626
  const cloneWalker = document.createTreeWalker(clone, NodeFilter.SHOW_ELEMENT);
681
627
 
628
+
629
+ const importantProps = [
630
+ 'font-weight',
631
+ 'font-style',
632
+ 'text-decoration',
633
+ 'color',
634
+ 'background-color',
635
+ 'font-size',
636
+ 'font-family',
637
+ 'text-align',
638
+ 'line-height',
639
+ 'letter-spacing',
640
+ 'white-space',
641
+ 'vertical-align'
642
+ ];
643
+
682
644
  while (origWalker.nextNode() && cloneWalker.nextNode()) {
683
645
  const origEl = origWalker.currentNode as HTMLElement;
684
646
  const cloneEl = cloneWalker.currentNode as HTMLElement;
685
647
  const computed = window.getComputedStyle(origEl);
686
648
 
687
- // Dump *all* computed styles into a single inline style attribute
688
- const cssText = Array.from(computed)
649
+
650
+ const cssText = importantProps
689
651
  .map(prop => `${prop}:${computed.getPropertyValue(prop)}`)
690
652
  .join(';');
691
653
 
692
- cloneEl.setAttribute('style', cssText);
654
+
655
+ if (cssText.trim()) {
656
+ cloneEl.setAttribute('style', cssText);
657
+ }
693
658
  }
694
659
 
695
- // Store the fully inlined HTML
660
+
696
661
  this.content = clone.innerHTML;
697
662
 
698
- // Live preview updates
663
+
699
664
  if (this.previewEl) this.previewEl.innerHTML = this.content;
700
665
 
701
- // Emit event with full inline styles
666
+
702
667
  this.dispatchEvent(new CustomEvent('content-changed', {
703
668
  detail: { content: this.content },
704
669
  bubbles: true,
@@ -708,6 +673,7 @@ private ensureAtLeastOneParagraph() {
708
673
 
709
674
 
710
675
 
676
+
711
677
  }
712
678
 
713
679
  declare global {
@@ -1,14 +1,190 @@
1
- import { LitElement } from 'lit';
2
- import { customElement, property } from 'lit/decorators.js';
1
+ import { LitElement, html } from 'lit';
2
+ import { customElement, property, state } from 'lit/decorators.js';
3
3
 
4
4
  @customElement('nile-rte-color')
5
5
  export class NileRteColor extends LitElement {
6
6
  protected createRenderRoot() { return this; }
7
- protected shouldUpdate() { return false; }
8
7
 
9
- /** 'foreColor' (reserved for future: 'backColor') */
10
- @property({ type: String }) type = 'foreColor';
8
+ /** Whether this is text color or background color */
9
+ @property({ type: String }) mode: 'foreColor' | 'backColor' = 'foreColor';
11
10
  @property({ type: String }) label = 'Text Color';
12
11
  @property({ type: String }) value = '#000000';
12
+
13
+ /** Default palette, user can override via property or attribute */
14
+ @property({ type: Array })
15
+ palette: string[] = [
16
+ '#000000','#444444','#666666','#999999','#cccccc','#eeeeee','#ffffff',
17
+ '#d32f2f','#f44336','#ff9800','#ffeb3b','#4caf50','#2196f3','#3f51b5','#9c27b0',
18
+ '#03a9f4','#00bcd4','#009688','#8bc34a','#cddc39','#ffc107','#ff5722'
19
+ ];
20
+
21
+ @state() private recentColors: string[] = [];
22
+ private inputEl!: HTMLInputElement;
23
+
24
+ connectedCallback() {
25
+ super.connectedCallback();
26
+
27
+ // Inject styles once
28
+ this.injectCss(`
29
+ nile-button.rte-color-trigger::part(base){
30
+ width:32px; height:32px; padding:0px 6px;
31
+ }
32
+
33
+ .glyph-stack { display:grid; align-items:center; justify-items:center; line-height:1; }
34
+ .glyph { font-size:14px; margin-bottom:2px; }
35
+ .underline { width:18px; height:3px; border-radius:2px; }
36
+ .swatch-box { width:18px; height:16px; border-radius:4px; border:1px solid rgba(0,0,0,0.35); }
37
+
38
+ nile-popover::part(popover) {
39
+ min-width: 225px;
40
+ height: 250px;
41
+ padding: 0px;
42
+ gap: 0px;
43
+ }
44
+
45
+ .swatch-dropdown {
46
+ height: 245px;
47
+ width: 275px;
48
+ padding: 12px;
49
+ background: #fff;
50
+ border-radius: 8px;
51
+ box-sizing: border-box;
52
+ overflow-y: auto;
53
+ }
54
+
55
+ .section { margin-bottom: 12px; }
56
+ .title { font-size: 13px; font-weight: 600; margin-bottom: 8px; color:#111; }
57
+
58
+ .swatches {
59
+ display: grid;
60
+ grid-template-columns: repeat(auto-fill, 24px);
61
+ gap: 8px;
62
+ }
63
+
64
+ .swatch {
65
+ width: 24px;
66
+ height: 24px;
67
+ border-radius: 50%;
68
+ border: 1px solid rgba(0,0,0,0.25);
69
+ cursor: pointer;
70
+ position: relative;
71
+ background-clip: content-box;
72
+ }
73
+
74
+ .swatch.add {
75
+ display:flex;
76
+ align-items:center;
77
+ justify-content:center;
78
+ font-weight:bold;
79
+ font-size:16px;
80
+ background:#fff;
81
+ }
82
+
83
+ .checkmark {
84
+ position: absolute;
85
+ top: 50%; left: 50%;
86
+ transform: translate(-50%,-50%);
87
+ font-size: 13px;
88
+ color: white;
89
+ text-shadow: 0 0 2px rgba(0,0,0,0.6);
90
+ }
91
+ `);
92
+
93
+ // hidden native color input
94
+ this.inputEl = document.createElement('input');
95
+ this.inputEl.type = 'color';
96
+ this.inputEl.style.position = 'absolute';
97
+ this.inputEl.style.opacity = '0';
98
+ this.inputEl.style.pointerEvents = 'none';
99
+ this.inputEl.value = this.value;
100
+ this.appendChild(this.inputEl);
101
+
102
+ this.inputEl.addEventListener('input', () => this.setColor(this.inputEl.value));
103
+ }
104
+
105
+ private injectCss(cssText: string) {
106
+ if (this.querySelector('style[data-rte-color-style]')) return;
107
+ const style = document.createElement('style');
108
+ style.setAttribute('data-rte-color-style', 'true');
109
+ style.textContent = cssText;
110
+ this.insertBefore(style, this.firstChild);
111
+ }
112
+
113
+ private setColor(color: string) {
114
+ this.value = color;
115
+ this.recentColors = [color, ...this.recentColors.filter(c => c !== color)].slice(0, 8);
116
+
117
+ this.dispatchEvent(new CustomEvent('change', {
118
+ detail: { mode: this.mode, value: color },
119
+ bubbles: true,
120
+ composed: true
121
+ }));
122
+ }
123
+
124
+ private pickCustom = () => this.inputEl.click();
125
+
126
+ render() {
127
+ return html`
128
+ <nile-popover placement="bottom-start" distance="6" .arrow=${false}>
129
+ <nile-button
130
+ slot="anchor"
131
+ variant="ghost"
132
+ size="small"
133
+ aria-label=${this.label}
134
+ class="rte-color-trigger"
135
+ >
136
+ ${this.mode === 'backColor'
137
+ ? html`<span class="swatch-box" style="background:${this.value}"></span>`
138
+ : html`
139
+ <span class="glyph-stack">
140
+ <span class="glyph">A</span>
141
+ <span class="underline" style="background:${this.value}"></span>
142
+ </span>
143
+ `}
144
+ </nile-button>
145
+
146
+ <div part="base" class="swatch-dropdown">
147
+ <div class="section">
148
+ <div class="title">Default</div>
149
+ <div class="swatches">
150
+ ${this.palette.map(c => html`
151
+ <button class="swatch" style="background:${c}"
152
+ @click=${() => this.setColor(c)}
153
+ title=${c}>
154
+ ${this.value === c ? html`<span class="checkmark">✓</span>` : ''}
155
+ </button>
156
+ `)}
157
+ </div>
158
+ </div>
159
+
160
+ ${this.recentColors.length > 0 ? html`
161
+ <div class="section">
162
+ <div class="title">Recently Used</div>
163
+ <div class="swatches">
164
+ ${this.recentColors.map(c => html`
165
+ <button class="swatch" style="background:${c}"
166
+ @click=${() => this.setColor(c)}
167
+ title=${c}></button>
168
+ `)}
169
+ </div>
170
+ </div>
171
+ ` : ''}
172
+
173
+ <div class="section">
174
+ <div class="title">Custom</div>
175
+ <div class="swatches">
176
+ <button class="swatch add" @click=${this.pickCustom}>+</button>
177
+ <nile-icon name="eyedropper"></nile-icon>
178
+ </div>
179
+ </div>
180
+ </div>
181
+ </nile-popover>
182
+ `;
183
+ }
184
+ }
185
+
186
+ declare global {
187
+ interface HTMLElementTagNameMap {
188
+ 'nile-rte-color': NileRteColor;
189
+ }
13
190
  }
14
- declare global { interface HTMLElementTagNameMap { 'nile-rte-color': NileRteColor; } }