le-kit 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/LICENSE +1 -1
  2. package/dist/admin/index.d.ts +23 -0
  3. package/dist/admin/index.js +74 -0
  4. package/dist/cjs/index-CO4npcak.js +1796 -0
  5. package/dist/cjs/index-CO4npcak.js.map +1 -0
  6. package/dist/cjs/index.cjs.js +117 -0
  7. package/dist/cjs/index.cjs.js.map +1 -0
  8. package/dist/cjs/le-box.cjs.entry.js +184 -0
  9. package/dist/cjs/le-box.entry.cjs.js.map +1 -0
  10. package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.cjs.js.map +1 -0
  11. package/dist/cjs/le-button_6.cjs.entry.js +1199 -0
  12. package/dist/cjs/le-card.cjs.entry.js +29 -0
  13. package/dist/cjs/le-card.entry.cjs.js.map +1 -0
  14. package/dist/cjs/le-kit.cjs.js +25 -0
  15. package/dist/cjs/le-kit.cjs.js.map +1 -0
  16. package/dist/cjs/le-number-input.cjs.entry.js +202 -0
  17. package/dist/cjs/le-number-input.entry.cjs.js.map +1 -0
  18. package/dist/cjs/le-popup.cjs.entry.js +212 -0
  19. package/dist/cjs/le-popup.entry.cjs.js.map +1 -0
  20. package/dist/cjs/le-round-progress.cjs.entry.js +106 -0
  21. package/dist/cjs/le-round-progress.entry.cjs.js.map +1 -0
  22. package/dist/cjs/le-stack.cjs.entry.js +135 -0
  23. package/dist/cjs/le-stack.entry.cjs.js.map +1 -0
  24. package/dist/cjs/le-text.cjs.entry.js +335 -0
  25. package/dist/cjs/le-text.entry.cjs.js.map +1 -0
  26. package/dist/cjs/le-turntable.cjs.entry.js +139 -0
  27. package/dist/cjs/le-turntable.entry.cjs.js.map +1 -0
  28. package/dist/cjs/loader.cjs.js +13 -0
  29. package/dist/cjs/loader.cjs.js.map +1 -0
  30. package/dist/cjs/utils-BeT0iyCQ.js +152 -0
  31. package/dist/cjs/utils-BeT0iyCQ.js.map +1 -0
  32. package/dist/collection/collection-manifest.json +20 -102
  33. package/dist/collection/components/le-box/le-box.default.css +37 -0
  34. package/dist/collection/components/le-box/le-box.js +614 -0
  35. package/dist/collection/components/le-box/le-box.js.map +1 -0
  36. package/dist/collection/components/le-button/le-button.default.css +263 -0
  37. package/dist/collection/components/le-button/le-button.js +368 -0
  38. package/dist/collection/components/le-button/le-button.js.map +1 -0
  39. package/dist/collection/components/le-card/le-card.default.css +74 -0
  40. package/dist/collection/components/le-card/le-card.js +102 -0
  41. package/dist/collection/components/le-card/le-card.js.map +1 -0
  42. package/dist/collection/components/le-checkbox/le-checkbox.css +93 -0
  43. package/dist/collection/components/le-checkbox/le-checkbox.js +192 -0
  44. package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -0
  45. package/dist/collection/components/le-component/le-component.css +189 -0
  46. package/dist/collection/components/le-component/le-component.js +359 -0
  47. package/dist/collection/components/le-component/le-component.js.map +1 -0
  48. package/dist/collection/components/le-number-input/le-number-input.css +135 -0
  49. package/dist/collection/components/le-number-input/le-number-input.js +515 -0
  50. package/dist/collection/components/le-number-input/le-number-input.js.map +1 -0
  51. package/dist/collection/components/le-popover/le-popover.css +143 -0
  52. package/dist/collection/components/le-popover/le-popover.js +693 -0
  53. package/dist/collection/components/le-popover/le-popover.js.map +1 -0
  54. package/dist/collection/components/le-popup/le-popup.api.js +101 -0
  55. package/dist/collection/components/le-popup/le-popup.api.js.map +1 -0
  56. package/dist/collection/components/le-popup/le-popup.css +222 -0
  57. package/dist/collection/components/le-popup/le-popup.js +596 -0
  58. package/dist/collection/components/le-popup/le-popup.js.map +1 -0
  59. package/dist/collection/components/le-round-progress/le-round-progress.js +184 -84
  60. package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -0
  61. package/dist/collection/components/le-slot/le-slot.default.css +222 -0
  62. package/dist/collection/components/le-slot/le-slot.js +636 -0
  63. package/dist/collection/components/le-slot/le-slot.js.map +1 -0
  64. package/dist/collection/components/le-stack/le-stack.default.css +37 -0
  65. package/dist/collection/components/le-stack/le-stack.js +389 -0
  66. package/dist/collection/components/le-stack/le-stack.js.map +1 -0
  67. package/dist/collection/components/le-string-input/le-string-input.css +83 -0
  68. package/dist/collection/components/le-string-input/le-string-input.js +359 -0
  69. package/dist/collection/components/le-string-input/le-string-input.js.map +1 -0
  70. package/dist/collection/components/le-text/le-text.default.css +169 -0
  71. package/dist/collection/components/le-text/le-text.js +475 -0
  72. package/dist/collection/components/le-text/le-text.js.map +1 -0
  73. package/dist/collection/components/le-turntable/le-turntable.js +210 -102
  74. package/dist/collection/components/le-turntable/le-turntable.js.map +1 -0
  75. package/dist/collection/global/app.js +130 -0
  76. package/dist/collection/global/app.js.map +1 -0
  77. package/dist/collection/index-admin.js +27 -0
  78. package/dist/collection/index-admin.js.map +1 -0
  79. package/dist/collection/index-core.js +25 -0
  80. package/dist/collection/index-core.js.map +1 -0
  81. package/dist/collection/index.js +15 -0
  82. package/dist/collection/index.js.map +1 -0
  83. package/dist/collection/types/blocks.js +115 -0
  84. package/dist/collection/types/blocks.js.map +1 -0
  85. package/dist/collection/types/options.js +2 -0
  86. package/dist/collection/types/options.js.map +1 -0
  87. package/dist/collection/utils/utils.js +141 -5
  88. package/dist/collection/utils/utils.js.map +1 -0
  89. package/dist/components/index.d.ts +64 -0
  90. package/dist/components/index.js +122 -0
  91. package/dist/components/index.js.map +1 -0
  92. package/dist/components/le-box.d.ts +11 -0
  93. package/dist/components/le-box.js +256 -0
  94. package/dist/components/le-box.js.map +1 -0
  95. package/dist/components/le-button.d.ts +11 -0
  96. package/dist/components/le-button.js +9 -0
  97. package/dist/components/le-button.js.map +1 -0
  98. package/dist/components/le-card.d.ts +11 -0
  99. package/dist/components/le-card.js +83 -0
  100. package/dist/components/le-card.js.map +1 -0
  101. package/dist/components/le-checkbox.d.ts +11 -0
  102. package/dist/components/le-checkbox.js +9 -0
  103. package/dist/components/le-checkbox.js.map +1 -0
  104. package/dist/components/le-component.d.ts +11 -0
  105. package/dist/components/le-component.js +9 -0
  106. package/dist/components/le-component.js.map +1 -0
  107. package/dist/components/le-number-input.d.ts +11 -0
  108. package/dist/components/le-number-input.js +271 -0
  109. package/dist/components/le-number-input.js.map +1 -0
  110. package/dist/components/le-popover.d.ts +11 -0
  111. package/dist/components/le-popover.js +9 -0
  112. package/dist/components/le-popover.js.map +1 -0
  113. package/dist/components/le-popup.d.ts +11 -0
  114. package/dist/components/le-popup.js +279 -0
  115. package/dist/components/le-popup.js.map +1 -0
  116. package/dist/components/le-round-progress.d.ts +11 -0
  117. package/dist/components/le-round-progress.js +135 -0
  118. package/dist/components/le-round-progress.js.map +1 -0
  119. package/dist/components/le-slot.d.ts +11 -0
  120. package/dist/components/le-slot.js +9 -0
  121. package/dist/components/le-slot.js.map +1 -0
  122. package/dist/components/le-stack.d.ts +11 -0
  123. package/dist/components/le-stack.js +198 -0
  124. package/dist/components/le-stack.js.map +1 -0
  125. package/dist/components/le-string-input.d.ts +11 -0
  126. package/dist/components/le-string-input.js +9 -0
  127. package/dist/components/le-string-input.js.map +1 -0
  128. package/dist/components/le-text.d.ts +11 -0
  129. package/dist/components/le-text.js +398 -0
  130. package/dist/components/le-text.js.map +1 -0
  131. package/dist/components/le-turntable.d.ts +11 -0
  132. package/dist/components/le-turntable.js +164 -0
  133. package/dist/components/le-turntable.js.map +1 -0
  134. package/dist/components/p-CXeWQG7d.js +382 -0
  135. package/dist/components/p-CXeWQG7d.js.map +1 -0
  136. package/dist/components/p-DxxFRStS.js +1370 -0
  137. package/dist/components/p-DxxFRStS.js.map +1 -0
  138. package/dist/components/p-IPZGv1ea.js +1442 -0
  139. package/dist/components/p-IPZGv1ea.js.map +1 -0
  140. package/dist/core/components/index.d.ts +64 -0
  141. package/dist/core/components/index.js +122 -0
  142. package/dist/core/components/index.js.map +1 -0
  143. package/dist/core/components/le-box.d.ts +11 -0
  144. package/dist/core/components/le-box.js +246 -0
  145. package/dist/core/components/le-box.js.map +1 -0
  146. package/dist/core/components/le-button.d.ts +11 -0
  147. package/dist/core/components/le-button.js +9 -0
  148. package/dist/core/components/le-button.js.map +1 -0
  149. package/dist/core/components/le-card.d.ts +11 -0
  150. package/dist/core/components/le-card.js +73 -0
  151. package/dist/core/components/le-card.js.map +1 -0
  152. package/dist/core/components/le-checkbox.d.ts +11 -0
  153. package/dist/core/components/le-checkbox.js +9 -0
  154. package/dist/core/components/le-checkbox.js.map +1 -0
  155. package/dist/core/components/le-component.js.map +1 -0
  156. package/dist/core/components/le-number-input.d.ts +11 -0
  157. package/dist/core/components/le-number-input.js +261 -0
  158. package/dist/core/components/le-number-input.js.map +1 -0
  159. package/dist/core/components/le-popover.d.ts +11 -0
  160. package/dist/core/components/le-popover.js +9 -0
  161. package/dist/core/components/le-popover.js.map +1 -0
  162. package/dist/core/components/le-popup.d.ts +11 -0
  163. package/dist/core/components/le-popup.js +269 -0
  164. package/dist/core/components/le-popup.js.map +1 -0
  165. package/dist/core/components/le-round-progress.d.ts +11 -0
  166. package/dist/core/components/le-round-progress.js +135 -0
  167. package/dist/core/components/le-round-progress.js.map +1 -0
  168. package/dist/core/components/le-slot.js.map +1 -0
  169. package/dist/core/components/le-stack.d.ts +11 -0
  170. package/dist/core/components/le-stack.js +188 -0
  171. package/dist/core/components/le-stack.js.map +1 -0
  172. package/dist/core/components/le-string-input.d.ts +11 -0
  173. package/dist/core/components/le-string-input.js +9 -0
  174. package/dist/core/components/le-string-input.js.map +1 -0
  175. package/dist/core/components/le-text.d.ts +11 -0
  176. package/dist/core/components/le-text.js +388 -0
  177. package/dist/core/components/le-text.js.map +1 -0
  178. package/dist/core/components/le-turntable.d.ts +11 -0
  179. package/dist/core/components/le-turntable.js +164 -0
  180. package/dist/core/components/le-turntable.js.map +1 -0
  181. package/dist/core/components/p-CXeWQG7d.js +382 -0
  182. package/dist/core/components/p-CXeWQG7d.js.map +1 -0
  183. package/dist/core/components/p-DxxFRStS.js +1370 -0
  184. package/dist/core/components/p-DxxFRStS.js.map +1 -0
  185. package/dist/core/components/p-IPZGv1ea.js +1442 -0
  186. package/dist/core/components/p-IPZGv1ea.js.map +1 -0
  187. package/dist/core/index.d.ts +21 -0
  188. package/dist/core/index.js +68 -0
  189. package/dist/core/stencil-runtime.js +1 -0
  190. package/dist/docs.d.ts +443 -0
  191. package/dist/docs.json +5183 -0
  192. package/dist/esm/index-D71TXvJa.js +1781 -0
  193. package/dist/esm/index-D71TXvJa.js.map +1 -0
  194. package/dist/esm/index.js +105 -5
  195. package/dist/esm/index.js.map +1 -0
  196. package/dist/esm/le-box.entry.js +182 -0
  197. package/dist/esm/le-box.entry.js.map +1 -0
  198. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.js.map +1 -0
  199. package/dist/esm/le-button_6.entry.js +1192 -0
  200. package/dist/esm/le-card.entry.js +27 -0
  201. package/dist/esm/le-card.entry.js.map +1 -0
  202. package/dist/esm/le-kit.js +21 -0
  203. package/dist/esm/le-kit.js.map +1 -0
  204. package/dist/esm/le-number-input.entry.js +200 -0
  205. package/dist/esm/le-number-input.entry.js.map +1 -0
  206. package/dist/esm/le-popup.entry.js +210 -0
  207. package/dist/esm/le-popup.entry.js.map +1 -0
  208. package/dist/esm/le-round-progress.entry.js +104 -0
  209. package/dist/esm/le-round-progress.entry.js.map +1 -0
  210. package/dist/esm/le-stack.entry.js +133 -0
  211. package/dist/esm/le-stack.entry.js.map +1 -0
  212. package/dist/esm/le-text.entry.js +333 -0
  213. package/dist/esm/le-text.entry.js.map +1 -0
  214. package/dist/esm/le-turntable.entry.js +137 -0
  215. package/dist/esm/le-turntable.entry.js.map +1 -0
  216. package/dist/esm/loader.js +11 -0
  217. package/dist/esm/loader.js.map +1 -0
  218. package/dist/esm/utils-CJLZrrdC.js +146 -0
  219. package/dist/esm/utils-CJLZrrdC.js.map +1 -0
  220. package/dist/index.cjs.js +1 -0
  221. package/dist/index.js +1 -2
  222. package/dist/le-kit/index-D21JjI31.js.map +1 -0
  223. package/dist/le-kit/index.esm.js +2 -0
  224. package/dist/le-kit/index.esm.js.map +1 -0
  225. package/dist/le-kit/le-box.entry.esm.js.map +1 -0
  226. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js.map +1 -0
  227. package/dist/le-kit/le-card.entry.esm.js.map +1 -0
  228. package/dist/le-kit/le-kit.css +1 -0
  229. package/dist/le-kit/le-kit.esm.js +2 -0
  230. package/dist/le-kit/le-kit.esm.js.map +1 -0
  231. package/dist/le-kit/le-number-input.entry.esm.js.map +1 -0
  232. package/dist/le-kit/le-popup.entry.esm.js.map +1 -0
  233. package/dist/le-kit/le-round-progress.entry.esm.js.map +1 -0
  234. package/dist/le-kit/le-stack.entry.esm.js.map +1 -0
  235. package/dist/le-kit/le-text.entry.esm.js.map +1 -0
  236. package/dist/le-kit/le-turntable.entry.esm.js.map +1 -0
  237. package/dist/le-kit/loader.esm.js.map +1 -0
  238. package/dist/le-kit/p-024a764e.entry.js +2 -0
  239. package/dist/le-kit/p-024a764e.entry.js.map +1 -0
  240. package/dist/le-kit/p-073cf0b9.entry.js +2 -0
  241. package/dist/le-kit/p-073cf0b9.entry.js.map +1 -0
  242. package/dist/le-kit/p-0955b105.entry.js +2 -0
  243. package/dist/le-kit/p-0955b105.entry.js.map +1 -0
  244. package/dist/le-kit/p-18d79ee2.entry.js +2 -0
  245. package/dist/le-kit/p-18d79ee2.entry.js.map +1 -0
  246. package/dist/le-kit/p-4b1d3b6d.entry.js +2 -0
  247. package/dist/le-kit/p-4b1d3b6d.entry.js.map +1 -0
  248. package/dist/le-kit/p-79d179bd.entry.js +2 -0
  249. package/dist/le-kit/p-79d179bd.entry.js.map +1 -0
  250. package/dist/le-kit/p-D71TXvJa.js +3 -0
  251. package/dist/le-kit/p-D71TXvJa.js.map +1 -0
  252. package/dist/le-kit/p-c8a9288e.entry.js +2 -0
  253. package/dist/le-kit/p-c8a9288e.entry.js.map +1 -0
  254. package/dist/le-kit/p-cfc35bd3.entry.js +2 -0
  255. package/dist/le-kit/p-cfc35bd3.entry.js.map +1 -0
  256. package/dist/le-kit/p-d04da1f5.entry.js +2 -0
  257. package/dist/le-kit/p-d04da1f5.entry.js.map +1 -0
  258. package/dist/le-kit/p-qIai5-eB.js +2 -0
  259. package/dist/le-kit/p-qIai5-eB.js.map +1 -0
  260. package/dist/le-kit/utils-apol-Xc_.js.map +1 -0
  261. package/dist/themes/base.css +89 -0
  262. package/dist/themes/dark.css +100 -0
  263. package/dist/themes/default.css +108 -0
  264. package/dist/themes/gradient.css +100 -0
  265. package/dist/themes/index.css +413 -0
  266. package/dist/themes/minimal.css +100 -0
  267. package/dist/themes/warm.css +100 -0
  268. package/dist/types/components/le-box/le-box.d.ts +111 -0
  269. package/dist/types/components/le-button/le-button.d.ts +78 -0
  270. package/dist/types/components/le-card/le-card.d.ts +37 -0
  271. package/dist/types/components/le-checkbox/le-checkbox.d.ts +46 -0
  272. package/dist/types/components/le-component/le-component.d.ts +115 -0
  273. package/dist/types/components/le-number-input/le-number-input.d.ts +106 -0
  274. package/dist/types/components/le-popover/le-popover.d.ts +109 -0
  275. package/dist/types/components/le-popup/le-popup.api.d.ts +73 -0
  276. package/dist/types/components/le-popup/le-popup.d.ts +122 -0
  277. package/dist/types/components/le-round-progress/le-round-progress.d.ts +2 -3
  278. package/dist/types/components/le-slot/le-slot.d.ts +149 -0
  279. package/dist/types/components/le-stack/le-stack.d.ts +73 -0
  280. package/dist/types/components/le-string-input/le-string-input.d.ts +83 -0
  281. package/dist/types/components/le-text/le-text.d.ts +141 -0
  282. package/dist/types/components/le-turntable/le-turntable.d.ts +1 -2
  283. package/dist/types/components.d.ts +2030 -62
  284. package/dist/types/global/app.d.ts +40 -0
  285. package/dist/types/index-admin.d.ts +29 -0
  286. package/dist/types/index-core.d.ts +27 -0
  287. package/dist/types/index.d.ts +15 -0
  288. package/dist/types/stencil-public-runtime.d.ts +1756 -0
  289. package/dist/types/types/blocks.d.ts +136 -0
  290. package/dist/types/types/options.d.ts +124 -0
  291. package/dist/types/utils/utils.d.ts +54 -1
  292. package/loader/cdn.js +1 -0
  293. package/loader/index.cjs.js +1 -0
  294. package/loader/index.d.ts +24 -0
  295. package/loader/index.es2017.js +1 -0
  296. package/loader/index.js +2 -0
  297. package/package.json +64 -13
  298. package/readme.md +177 -46
  299. package/dist/cjs/es5/build/jqoqzji9.entry.js +0 -6
  300. package/dist/cjs/es5/build/jqoqzji9.sc.entry.js +0 -6
  301. package/dist/cjs/es5/build/novg0vs0.entry.js +0 -9
  302. package/dist/cjs/es5/build/novg0vs0.sc.entry.js +0 -9
  303. package/dist/cjs/es5/index.js +0 -1
  304. package/dist/cjs/es5/le-kit.components.js +0 -4
  305. package/dist/cjs/es5/le-kit.core.js +0 -459
  306. package/dist/cjs/es5/le-kit.define.js +0 -9
  307. package/dist/cjs/es5/polyfills/array.js +0 -63
  308. package/dist/cjs/es5/polyfills/css-shim.js +0 -178
  309. package/dist/cjs/es5/polyfills/dom.js +0 -125
  310. package/dist/cjs/es5/polyfills/fetch.js +0 -186
  311. package/dist/cjs/es5/polyfills/map.js +0 -54
  312. package/dist/cjs/es5/polyfills/object.js +0 -27
  313. package/dist/cjs/es5/polyfills/promise.js +0 -80
  314. package/dist/cjs/es5/polyfills/string.js +0 -15
  315. package/dist/cjs/es5/polyfills/tslib.js +0 -244
  316. package/dist/cjs/es5/polyfills/url.js +0 -68
  317. package/dist/collection/interface.js +0 -0
  318. package/dist/esm/es2017/build/jqoqzji9.entry.js +0 -88
  319. package/dist/esm/es2017/build/jqoqzji9.sc.entry.js +0 -88
  320. package/dist/esm/es2017/build/novg0vs0.entry.js +0 -106
  321. package/dist/esm/es2017/build/novg0vs0.sc.entry.js +0 -106
  322. package/dist/esm/es2017/index.js +0 -1
  323. package/dist/esm/es2017/le-kit.components.js +0 -2
  324. package/dist/esm/es2017/le-kit.core.js +0 -5
  325. package/dist/esm/es2017/le-kit.define.js +0 -9
  326. package/dist/esm/es5/build/jqoqzji9.entry.js +0 -1
  327. package/dist/esm/es5/build/jqoqzji9.sc.entry.js +0 -1
  328. package/dist/esm/es5/build/novg0vs0.entry.js +0 -1
  329. package/dist/esm/es5/build/novg0vs0.sc.entry.js +0 -1
  330. package/dist/esm/es5/index.js +0 -1
  331. package/dist/esm/es5/le-kit.components.js +0 -2
  332. package/dist/esm/es5/le-kit.core.js +0 -5
  333. package/dist/esm/es5/le-kit.define.js +0 -9
  334. package/dist/esm/es5/polyfills/array.js +0 -23
  335. package/dist/esm/es5/polyfills/css-shim.js +0 -8
  336. package/dist/esm/es5/polyfills/dom.js +0 -22
  337. package/dist/esm/es5/polyfills/fetch.js +0 -20
  338. package/dist/esm/es5/polyfills/map.js +0 -7
  339. package/dist/esm/es5/polyfills/object.js +0 -20
  340. package/dist/esm/es5/polyfills/promise.js +0 -8
  341. package/dist/esm/es5/polyfills/string.js +0 -12
  342. package/dist/esm/es5/polyfills/tslib.js +0 -160
  343. package/dist/esm/es5/polyfills/url.js +0 -7
  344. package/dist/le-kit/jqoqzji9.entry.js +0 -1
  345. package/dist/le-kit/jqoqzji9.es5.entry.js +0 -1
  346. package/dist/le-kit/jqoqzji9.sc.entry.js +0 -1
  347. package/dist/le-kit/jqoqzji9.sc.es5.entry.js +0 -1
  348. package/dist/le-kit/le-kit.lfyfa4jd.js +0 -123
  349. package/dist/le-kit/le-kit.rzqb8hph.js +0 -4
  350. package/dist/le-kit/novg0vs0.entry.js +0 -1
  351. package/dist/le-kit/novg0vs0.es5.entry.js +0 -1
  352. package/dist/le-kit/novg0vs0.sc.entry.js +0 -1
  353. package/dist/le-kit/novg0vs0.sc.es5.entry.js +0 -1
  354. package/dist/le-kit.js +0 -1
  355. package/dist/loader/index.cjs.js +0 -1
  356. package/dist/loader/index.d.ts +0 -1
  357. package/dist/loader/index.es2017.js +0 -1
  358. package/dist/loader/index.js +0 -1
  359. package/dist/loader/package.json +0 -9
  360. package/dist/types/stencil.core.d.ts +0 -1203
  361. package/dist/web-components.json +0 -41
@@ -0,0 +1,636 @@
1
+ import { h, Host } from "@stencil/core";
2
+ import { classnames, observeModeChanges } from "../../utils/utils";
3
+ /**
4
+ * Slot placeholder component for admin/CMS mode.
5
+ *
6
+ * This component renders a visual placeholder for slots when in admin mode,
7
+ * allowing CMS systems to show available drop zones for content or inline editing.
8
+ *
9
+ * In non-admin mode, this component renders nothing and acts as a passthrough.
10
+ *
11
+ * @slot - Default slot for placeholder content or drop zone UI
12
+ *
13
+ * @cmsInternal true
14
+ * @cmsCategory System
15
+ */
16
+ export class LeSlot {
17
+ el;
18
+ /**
19
+ * The type of slot content.
20
+ * - `slot`: Default, shows a dropzone for components (default)
21
+ * - `text`: Shows a single-line text input
22
+ * - `textarea`: Shows a multi-line text area
23
+ */
24
+ type = 'slot';
25
+ /**
26
+ * The name of the slot this placeholder represents.
27
+ * Should match the slot name in the parent component.
28
+ */
29
+ name = '';
30
+ /**
31
+ * Label to display in admin mode.
32
+ * If not provided, the slot name will be used.
33
+ */
34
+ label;
35
+ /**
36
+ * Description of what content this slot accepts.
37
+ * Shown in admin mode to guide content editors.
38
+ */
39
+ description;
40
+ /**
41
+ * Comma-separated list of allowed component tags for this slot.
42
+ * Used by CMS to filter available components.
43
+ *
44
+ * @example "le-card,le-button,le-text"
45
+ */
46
+ allowedComponents;
47
+ /**
48
+ * Whether multiple components can be dropped in this slot.
49
+ */
50
+ multiple = true;
51
+ /**
52
+ * Whether this slot is required to have content.
53
+ */
54
+ required = false;
55
+ /**
56
+ * Placeholder text for text/textarea inputs in admin mode.
57
+ */
58
+ placeholder;
59
+ /**
60
+ * The HTML tag to create when there's no slotted element.
61
+ * Used with type="text" or type="textarea" to auto-create elements.
62
+ *
63
+ * @example "h3" - creates <h3 slot="header">content</h3>
64
+ * @example "p" - creates <p slot="content">content</p>
65
+ */
66
+ tag;
67
+ /**
68
+ * CSS styles for the slot dropzone container.
69
+ * Useful for layouts - e.g., "flex-direction: row" for horizontal stacks.
70
+ * Only applies in admin mode for type="slot".
71
+ */
72
+ slotStyle;
73
+ /**
74
+ * Internal state to track admin mode
75
+ */
76
+ adminMode = false;
77
+ /**
78
+ * Internal state for text input value (synced from slot content)
79
+ */
80
+ textValue = '';
81
+ /**
82
+ * Whether the current textValue contains valid HTML
83
+ */
84
+ isValidHtml = true;
85
+ /**
86
+ * Available components loaded from Custom Elements Manifest
87
+ */
88
+ availableComponents = [];
89
+ /**
90
+ * Whether the component picker popover is open
91
+ */
92
+ pickerOpen = false;
93
+ /**
94
+ * Reference to the slot element to access assignedNodes
95
+ */
96
+ slotRef;
97
+ /**
98
+ * The original slotted element (e.g., <h3 slot="header">)
99
+ */
100
+ slottedElement;
101
+ /**
102
+ * Emitted when text content changes in admin mode.
103
+ * The event detail contains the new text value and validity.
104
+ */
105
+ leSlotChange;
106
+ disconnectModeObserver;
107
+ connectedCallback() {
108
+ this.disconnectModeObserver = observeModeChanges(this.el, (mode) => {
109
+ const wasAdmin = this.adminMode;
110
+ this.adminMode = mode === 'admin';
111
+ // When entering admin mode, read content from slotted elements
112
+ if (this.adminMode && !wasAdmin) {
113
+ // Need to wait for render to access slot ref
114
+ requestAnimationFrame(() => this.readSlottedContent());
115
+ // Load available components for the component picker
116
+ if (this.type === 'slot') {
117
+ this.loadAvailableComponents();
118
+ }
119
+ }
120
+ });
121
+ }
122
+ disconnectedCallback() {
123
+ this.disconnectModeObserver?.();
124
+ }
125
+ /**
126
+ * Flag to prevent re-reading content right after we updated it
127
+ */
128
+ isUpdating = false;
129
+ /**
130
+ * Read content from slotted elements via assignedNodes()
131
+ */
132
+ readSlottedContent() {
133
+ if (!this.slotRef)
134
+ return;
135
+ // Skip if we just updated the content ourselves
136
+ if (this.isUpdating) {
137
+ this.isUpdating = false;
138
+ return;
139
+ }
140
+ const assignedNodes = this.slotRef.assignedNodes({ flatten: true });
141
+ // For text/textarea types, we want to edit the innerHTML of slotted elements
142
+ if (this.type === 'text' || this.type === 'textarea') {
143
+ // Find the first element node (skip text nodes that are just whitespace)
144
+ const elementNode = assignedNodes.find(node => node.nodeType === Node.ELEMENT_NODE);
145
+ if (elementNode) {
146
+ // Only update textValue if slotted element changed or we don't have one yet
147
+ if (this.slottedElement !== elementNode) {
148
+ this.slottedElement = elementNode;
149
+ this.textValue = elementNode.innerHTML?.trim() || '';
150
+ // console.log(`[le-slot "${this.name}"] Read slotted content:`, this.textValue);
151
+ }
152
+ }
153
+ else {
154
+ // No element, check for direct text content
155
+ const textContent = assignedNodes
156
+ .filter(node => node.nodeType === Node.TEXT_NODE)
157
+ .map(node => node.textContent)
158
+ .join('')
159
+ .trim();
160
+ if (textContent && !this.textValue) {
161
+ this.textValue = textContent;
162
+ // console.log(`[le-slot "${this.name}"] Read text content:`, this.textValue);
163
+ }
164
+ }
165
+ }
166
+ }
167
+ /**
168
+ * Validates if a string contains valid HTML
169
+ */
170
+ validateHtml(html) {
171
+ // Empty string is valid
172
+ if (!html.trim())
173
+ return true;
174
+ // Create a template element to parse the HTML
175
+ const template = document.createElement('template');
176
+ template.innerHTML = html;
177
+ // Check that we don't have obviously broken HTML
178
+ // Count opening and closing tags for common elements
179
+ const openTags = (html.match(/<[a-z][^>]*(?<!\/)>/gi) || []).length;
180
+ const closeTags = (html.match(/<\/[a-z][^>]*>/gi) || []).length;
181
+ const selfClosing = (html.match(/<[a-z][^>]*\/>/gi) || []).length;
182
+ // Simple validation: opening tags (minus self-closing) should roughly match closing tags
183
+ // Allow some tolerance for void elements like <br>, <img>, etc.
184
+ const voidElements = (html.match(/<(br|hr|img|input|meta|link|area|base|col|embed|param|source|track|wbr)[^>]*>/gi) || []).length;
185
+ const effectiveOpenTags = openTags - selfClosing - voidElements;
186
+ // If difference is too large, HTML is likely broken
187
+ if (Math.abs(effectiveOpenTags - closeTags) > 1) {
188
+ return false;
189
+ }
190
+ return true;
191
+ }
192
+ handleTextInput = (event) => {
193
+ const target = event.target;
194
+ this.textValue = target.value;
195
+ this.isValidHtml = this.validateHtml(this.textValue);
196
+ if (this.isValidHtml) {
197
+ // Set flag to prevent slotchange from re-reading what we just wrote
198
+ this.isUpdating = true;
199
+ console.log('Updating text value:', this.textValue, 'slottedElement:', this.slottedElement);
200
+ if (this.slottedElement) {
201
+ // Update existing slotted element's innerHTML
202
+ this.slottedElement.innerHTML = this.textValue;
203
+ }
204
+ else if (this.tag && this.textValue) {
205
+ // No slotted element exists
206
+ // If the slot doesn't have a name, then it's the default slot
207
+ // remove the existing non-slotted content (text nodes and elements without slot attribute)
208
+ const rootNode = this.el.getRootNode();
209
+ if (!this.name && rootNode instanceof ShadowRoot) {
210
+ const hostComponent = rootNode.host;
211
+ Array.from(hostComponent.childNodes).forEach(node => {
212
+ if (node.nodeType === Node.TEXT_NODE ||
213
+ (node.nodeType === Node.ELEMENT_NODE && !node.hasAttribute('slot'))) {
214
+ node.remove();
215
+ }
216
+ });
217
+ }
218
+ // create one using the specified tag
219
+ this.createSlottedElement();
220
+ }
221
+ else if (this.textValue) {
222
+ // no tag specified - just replace everything in the host component
223
+ const rootNode = this.el.getRootNode();
224
+ if (rootNode instanceof ShadowRoot) {
225
+ const hostComponent = rootNode.host;
226
+ hostComponent.innerHTML = this.textValue;
227
+ }
228
+ }
229
+ }
230
+ this.leSlotChange.emit({
231
+ name: this.name,
232
+ value: this.textValue,
233
+ isValid: this.isValidHtml
234
+ });
235
+ };
236
+ /**
237
+ * Create a new slotted element when none exists.
238
+ * The element is appended to the host component's light DOM.
239
+ */
240
+ createSlottedElement() {
241
+ if (!this.tag)
242
+ return;
243
+ // Find the host component (le-card, etc.) by traversing up through shadow DOM
244
+ // le-slot is inside le-card's shadow DOM, so we need to find le-card's host
245
+ const rootNode = this.el.getRootNode();
246
+ if (!(rootNode instanceof ShadowRoot))
247
+ return;
248
+ const hostComponent = rootNode.host;
249
+ if (!hostComponent)
250
+ return;
251
+ // Create the new element
252
+ const newElement = document.createElement(this.tag);
253
+ newElement.innerHTML = this.textValue;
254
+ // Set the slot attribute if this is a named slot
255
+ if (this.name) {
256
+ newElement.setAttribute('slot', this.name);
257
+ }
258
+ // Append to the host component's light DOM
259
+ hostComponent.appendChild(newElement);
260
+ // Store reference to the new element
261
+ this.slottedElement = newElement;
262
+ // console.log(`[le-slot "${this.name}"] Created new <${this.tag}> element`);
263
+ }
264
+ /**
265
+ * Load available components from Custom Elements Manifest
266
+ */
267
+ async loadAvailableComponents() {
268
+ try {
269
+ const response = await fetch('/custom-elements.json');
270
+ const manifest = await response.json();
271
+ const components = [];
272
+ const allowedList = this.allowedComponents?.split(',').map(s => s.trim()) || [];
273
+ for (const module of manifest.modules) {
274
+ for (const declaration of module.declarations || []) {
275
+ if (declaration.tagName && declaration.customElement) {
276
+ // Skip internal components (le-slot, le-component, le-popover)
277
+ const isInternal = ['le-slot', 'le-component', 'le-popover'].includes(declaration.tagName);
278
+ if (isInternal)
279
+ continue;
280
+ // If allowedComponents is specified, filter by it
281
+ if (allowedList.length > 0 && !allowedList.includes(declaration.tagName)) {
282
+ continue;
283
+ }
284
+ components.push({
285
+ tagName: declaration.tagName,
286
+ name: this.formatComponentName(declaration.tagName),
287
+ description: declaration.description || '',
288
+ });
289
+ }
290
+ }
291
+ }
292
+ this.availableComponents = components;
293
+ }
294
+ catch (error) {
295
+ console.warn('[le-slot] Failed to load component manifest:', error);
296
+ }
297
+ }
298
+ /**
299
+ * Format a tag name into a display name
300
+ * e.g., 'le-card' -> 'Card'
301
+ */
302
+ formatComponentName(tagName) {
303
+ return tagName
304
+ .replace(/^le-/, '')
305
+ .split('-')
306
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
307
+ .join(' ');
308
+ }
309
+ /**
310
+ * Add a new component to the slot
311
+ */
312
+ addComponent(tagName) {
313
+ // Find the host component by traversing up through shadow DOM
314
+ const rootNode = this.el.getRootNode();
315
+ if (!(rootNode instanceof ShadowRoot))
316
+ return;
317
+ const hostComponent = rootNode.host;
318
+ if (!hostComponent)
319
+ return;
320
+ // Create the new component element
321
+ const newElement = document.createElement(tagName);
322
+ // Set the slot attribute if this is a named slot
323
+ if (this.name) {
324
+ newElement.setAttribute('slot', this.name);
325
+ }
326
+ // Append to the host component's light DOM
327
+ hostComponent.appendChild(newElement);
328
+ // Emit change event so the page can save
329
+ this.leSlotChange.emit({
330
+ name: this.name,
331
+ value: hostComponent.innerHTML,
332
+ isValid: true,
333
+ });
334
+ }
335
+ /**
336
+ * Handle slot change event to re-read content when nodes are assigned
337
+ */
338
+ handleSlotChange = () => {
339
+ this.readSlottedContent();
340
+ };
341
+ render() {
342
+ const displayLabel = this.label || this.name;
343
+ // Always render the same structure, CSS handles visibility via .admin-mode class
344
+ return (h(Host, { key: 'bae03733e0443c10f1abe8b4c846d3eae0723d3d', class: {
345
+ 'admin-mode': this.adminMode,
346
+ 'invalid-html': !this.isValidHtml
347
+ }, role: this.adminMode ? 'region' : undefined, "aria-label": this.adminMode ? `Slot: ${displayLabel}` : undefined, "data-slot-name": this.name, "data-slot-type": this.type, "data-allowed": this.allowedComponents, "data-multiple": this.multiple, "data-required": this.required }, this.adminMode ? (h("div", { class: "le-slot-container" }, h("div", { class: classnames('le-slot-header', {
348
+ 'le-slot-header-no-label': !displayLabel,
349
+ 'le-slot-header-text': this.type === 'text',
350
+ 'le-slot-header-error': !this.isValidHtml
351
+ }) }, displayLabel && (h("span", { class: "le-slot-label" }, displayLabel, this.required && h("span", { class: "le-slot-required" }, "*"))), !this.isValidHtml && h("span", { class: "le-slot-invalid" }, "\u26A0 Invalid HTML"), this.type === 'slot' && this.adminMode && (h("le-popover", { mode: "default", showClose: true, align: "start", position: "right", popoverTitle: "Add Component", open: this.pickerOpen, onLePopoverOpen: () => this.pickerOpen = true, onLePopoverClose: () => this.pickerOpen = false }, h("le-button", { type: "button", class: "le-slot-button", slot: "trigger", variant: "clear", size: "small", "aria-label": "Add component", "icon-only": true }, h("span", { class: "le-slot-add-btn", slot: "icon-only" }, "+")), h("div", { class: "le-slot-picker" }, this.availableComponents.length > 0 ? (h("ul", { class: "le-slot-picker-list" }, this.availableComponents.map(component => (h("li", { key: component.tagName }, h("button", { class: "le-slot-picker-item", onClick: () => {
352
+ this.addComponent(component.tagName);
353
+ this.pickerOpen = false;
354
+ } }, h("span", { class: "le-slot-picker-name" }, component.name), component.description && (h("span", { class: "le-slot-picker-desc" }, component.description)))))))) : (h("div", { class: "le-slot-picker-empty" }, "No components available")))))), this.renderContent())) : (
355
+ // In default mode, just pass through the slot - slotted content renders naturally
356
+ // Note: We use unnamed slot here because named slots from parent component
357
+ // are passed as le-slot's light DOM children
358
+ h("slot", null))));
359
+ }
360
+ renderContent() {
361
+ // Create the slot element with ref for reading assignedNodes
362
+ // Wrap in a hidden div since slot elements can't have style prop in Stencil
363
+ // Note: We use unnamed slot here because named slots from parent component
364
+ // are passed as le-slot's light DOM children
365
+ const slotElement = (h("div", { class: "hidden-slot" }, h("slot", { ref: (el) => this.slotRef = el, onSlotchange: this.handleSlotChange })));
366
+ switch (this.type) {
367
+ case 'text':
368
+ return (h("div", { class: { 'le-slot-input': true, 'has-error': !this.isValidHtml } }, h("le-string-input", { mode: "default", value: this.textValue, placeholder: this.placeholder || `Enter ${this.label || this.name || 'text'}...`, onChange: this.handleTextInput }), slotElement));
369
+ case 'textarea':
370
+ return (h("div", { class: { 'le-slot-input': true, 'has-error': !this.isValidHtml } }, h("textarea", { value: this.textValue, placeholder: this.placeholder || `Enter ${this.label || this.name || 'text'}...`, onInput: this.handleTextInput, required: this.required, rows: 3 }), slotElement));
371
+ case 'slot':
372
+ default:
373
+ // Parse slotStyle string into style object if provided
374
+ const dropzoneStyle = {};
375
+ if (this.slotStyle) {
376
+ this.slotStyle.split(';').forEach(rule => {
377
+ const [prop, value] = rule.split(':').map(s => s.trim());
378
+ if (prop && value) {
379
+ // Convert kebab-case to camelCase for style object
380
+ const camelProp = prop.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
381
+ dropzoneStyle[camelProp] = value;
382
+ }
383
+ });
384
+ }
385
+ return (h("div", { class: "le-slot-dropzone", style: dropzoneStyle }, h("slot", { ref: (el) => this.slotRef = el, onSlotchange: this.handleSlotChange })));
386
+ }
387
+ }
388
+ static get is() { return "le-slot"; }
389
+ static get encapsulation() { return "shadow"; }
390
+ static get originalStyleUrls() {
391
+ return {
392
+ "$": ["le-slot.default.css"]
393
+ };
394
+ }
395
+ static get styleUrls() {
396
+ return {
397
+ "$": ["le-slot.default.css"]
398
+ };
399
+ }
400
+ static get properties() {
401
+ return {
402
+ "type": {
403
+ "type": "string",
404
+ "mutable": false,
405
+ "complexType": {
406
+ "original": "'slot' | 'text' | 'textarea'",
407
+ "resolved": "\"slot\" | \"text\" | \"textarea\"",
408
+ "references": {}
409
+ },
410
+ "required": false,
411
+ "optional": false,
412
+ "docs": {
413
+ "tags": [],
414
+ "text": "The type of slot content.\n- `slot`: Default, shows a dropzone for components (default)\n- `text`: Shows a single-line text input\n- `textarea`: Shows a multi-line text area"
415
+ },
416
+ "getter": false,
417
+ "setter": false,
418
+ "reflect": false,
419
+ "attribute": "type",
420
+ "defaultValue": "'slot'"
421
+ },
422
+ "name": {
423
+ "type": "string",
424
+ "mutable": false,
425
+ "complexType": {
426
+ "original": "string",
427
+ "resolved": "string",
428
+ "references": {}
429
+ },
430
+ "required": false,
431
+ "optional": false,
432
+ "docs": {
433
+ "tags": [],
434
+ "text": "The name of the slot this placeholder represents.\nShould match the slot name in the parent component."
435
+ },
436
+ "getter": false,
437
+ "setter": false,
438
+ "reflect": false,
439
+ "attribute": "name",
440
+ "defaultValue": "''"
441
+ },
442
+ "label": {
443
+ "type": "string",
444
+ "mutable": false,
445
+ "complexType": {
446
+ "original": "string",
447
+ "resolved": "string",
448
+ "references": {}
449
+ },
450
+ "required": false,
451
+ "optional": true,
452
+ "docs": {
453
+ "tags": [],
454
+ "text": "Label to display in admin mode.\nIf not provided, the slot name will be used."
455
+ },
456
+ "getter": false,
457
+ "setter": false,
458
+ "reflect": false,
459
+ "attribute": "label"
460
+ },
461
+ "description": {
462
+ "type": "string",
463
+ "mutable": false,
464
+ "complexType": {
465
+ "original": "string",
466
+ "resolved": "string",
467
+ "references": {}
468
+ },
469
+ "required": false,
470
+ "optional": true,
471
+ "docs": {
472
+ "tags": [],
473
+ "text": "Description of what content this slot accepts.\nShown in admin mode to guide content editors."
474
+ },
475
+ "getter": false,
476
+ "setter": false,
477
+ "reflect": false,
478
+ "attribute": "description"
479
+ },
480
+ "allowedComponents": {
481
+ "type": "string",
482
+ "mutable": false,
483
+ "complexType": {
484
+ "original": "string",
485
+ "resolved": "string",
486
+ "references": {}
487
+ },
488
+ "required": false,
489
+ "optional": true,
490
+ "docs": {
491
+ "tags": [{
492
+ "name": "example",
493
+ "text": "\"le-card,le-button,le-text\""
494
+ }],
495
+ "text": "Comma-separated list of allowed component tags for this slot.\nUsed by CMS to filter available components."
496
+ },
497
+ "getter": false,
498
+ "setter": false,
499
+ "reflect": false,
500
+ "attribute": "allowed-components"
501
+ },
502
+ "multiple": {
503
+ "type": "boolean",
504
+ "mutable": false,
505
+ "complexType": {
506
+ "original": "boolean",
507
+ "resolved": "boolean",
508
+ "references": {}
509
+ },
510
+ "required": false,
511
+ "optional": false,
512
+ "docs": {
513
+ "tags": [],
514
+ "text": "Whether multiple components can be dropped in this slot."
515
+ },
516
+ "getter": false,
517
+ "setter": false,
518
+ "reflect": false,
519
+ "attribute": "multiple",
520
+ "defaultValue": "true"
521
+ },
522
+ "required": {
523
+ "type": "boolean",
524
+ "mutable": false,
525
+ "complexType": {
526
+ "original": "boolean",
527
+ "resolved": "boolean",
528
+ "references": {}
529
+ },
530
+ "required": false,
531
+ "optional": false,
532
+ "docs": {
533
+ "tags": [],
534
+ "text": "Whether this slot is required to have content."
535
+ },
536
+ "getter": false,
537
+ "setter": false,
538
+ "reflect": false,
539
+ "attribute": "required",
540
+ "defaultValue": "false"
541
+ },
542
+ "placeholder": {
543
+ "type": "string",
544
+ "mutable": false,
545
+ "complexType": {
546
+ "original": "string",
547
+ "resolved": "string",
548
+ "references": {}
549
+ },
550
+ "required": false,
551
+ "optional": true,
552
+ "docs": {
553
+ "tags": [],
554
+ "text": "Placeholder text for text/textarea inputs in admin mode."
555
+ },
556
+ "getter": false,
557
+ "setter": false,
558
+ "reflect": false,
559
+ "attribute": "placeholder"
560
+ },
561
+ "tag": {
562
+ "type": "string",
563
+ "mutable": false,
564
+ "complexType": {
565
+ "original": "string",
566
+ "resolved": "string",
567
+ "references": {}
568
+ },
569
+ "required": false,
570
+ "optional": true,
571
+ "docs": {
572
+ "tags": [{
573
+ "name": "example",
574
+ "text": "\"h3\" - creates <h3 slot=\"header\">content</h3>"
575
+ }, {
576
+ "name": "example",
577
+ "text": "\"p\" - creates <p slot=\"content\">content</p>"
578
+ }],
579
+ "text": "The HTML tag to create when there's no slotted element.\nUsed with type=\"text\" or type=\"textarea\" to auto-create elements."
580
+ },
581
+ "getter": false,
582
+ "setter": false,
583
+ "reflect": false,
584
+ "attribute": "tag"
585
+ },
586
+ "slotStyle": {
587
+ "type": "string",
588
+ "mutable": false,
589
+ "complexType": {
590
+ "original": "string",
591
+ "resolved": "string",
592
+ "references": {}
593
+ },
594
+ "required": false,
595
+ "optional": true,
596
+ "docs": {
597
+ "tags": [],
598
+ "text": "CSS styles for the slot dropzone container.\nUseful for layouts - e.g., \"flex-direction: row\" for horizontal stacks.\nOnly applies in admin mode for type=\"slot\"."
599
+ },
600
+ "getter": false,
601
+ "setter": false,
602
+ "reflect": false,
603
+ "attribute": "slot-style"
604
+ }
605
+ };
606
+ }
607
+ static get states() {
608
+ return {
609
+ "adminMode": {},
610
+ "textValue": {},
611
+ "isValidHtml": {},
612
+ "availableComponents": {},
613
+ "pickerOpen": {}
614
+ };
615
+ }
616
+ static get events() {
617
+ return [{
618
+ "method": "leSlotChange",
619
+ "name": "leSlotChange",
620
+ "bubbles": true,
621
+ "cancelable": true,
622
+ "composed": true,
623
+ "docs": {
624
+ "tags": [],
625
+ "text": "Emitted when text content changes in admin mode.\nThe event detail contains the new text value and validity."
626
+ },
627
+ "complexType": {
628
+ "original": "{ name: string; value: string; isValid: boolean }",
629
+ "resolved": "{ name: string; value: string; isValid: boolean; }",
630
+ "references": {}
631
+ }
632
+ }];
633
+ }
634
+ static get elementRef() { return "el"; }
635
+ }
636
+ //# sourceMappingURL=le-slot.js.map