@soxa-ui/webc 0.0.0-stage → 0.3.0-beta.1

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 (592) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +622 -2
  3. package/dist/adapter/common/attributes.d.ts +22 -0
  4. package/dist/adapter/common/attributes.js +74 -0
  5. package/dist/adapter/common/createWebcAdapterContext.d.ts +8 -0
  6. package/dist/adapter/common/createWebcAdapterContext.js +17 -0
  7. package/dist/adapter/common/icon.d.ts +9 -0
  8. package/dist/adapter/common/icon.js +25 -0
  9. package/dist/adapter/common/index.d.ts +5 -0
  10. package/dist/adapter/common/index.js +6 -0
  11. package/dist/adapter/common/naming.d.ts +7 -0
  12. package/dist/adapter/common/naming.js +9 -0
  13. package/dist/adapter/common/profile.d.ts +3 -0
  14. package/dist/adapter/common/profile.js +6 -0
  15. package/dist/adapter/context/index.d.ts +1 -0
  16. package/dist/adapter/context/place-context.class.d.ts +22 -0
  17. package/dist/adapter/context/place-context.class.js +40 -0
  18. package/dist/adapter/elevator/elevator.class.d.ts +13 -0
  19. package/dist/adapter/elevator/elevator.class.js +34 -0
  20. package/dist/adapter/elevator/factory.d.ts +3 -0
  21. package/dist/adapter/elevator/factory.js +8 -0
  22. package/dist/adapter/elevator/index.d.ts +2 -0
  23. package/dist/adapter/elevator/index.js +2 -0
  24. package/dist/adapter/index.d.ts +5 -0
  25. package/dist/adapter/index.js +21 -0
  26. package/dist/adapter/locale/LocaleProvider.element.d.ts +26 -0
  27. package/dist/adapter/locale/LocaleProvider.element.js +51 -0
  28. package/dist/adapter/locale/context.d.ts +4 -0
  29. package/dist/adapter/locale/context.js +12 -0
  30. package/dist/adapter/locale/index.d.ts +2 -0
  31. package/dist/adapter/locale/index.js +1 -0
  32. package/dist/adapter/runtime/content.d.ts +6 -0
  33. package/dist/adapter/runtime/content.js +13 -0
  34. package/dist/adapter/runtime/deferral.d.ts +22 -0
  35. package/dist/adapter/runtime/deferral.js +100 -0
  36. package/dist/adapter/runtime/defineElement.d.ts +23 -0
  37. package/dist/adapter/runtime/defineElement.js +97 -0
  38. package/dist/adapter/runtime/display-contents.d.ts +5 -0
  39. package/dist/adapter/runtime/display-contents.js +14 -0
  40. package/dist/adapter/runtime/element.base.d.ts +84 -0
  41. package/dist/adapter/runtime/element.base.js +347 -0
  42. package/dist/adapter/runtime/index.d.ts +4 -0
  43. package/dist/adapter/runtime/index.js +4 -0
  44. package/dist/adapter/runtime/light.d.ts +33 -0
  45. package/dist/adapter/runtime/light.js +131 -0
  46. package/dist/adapter/runtime/marks.d.ts +19 -0
  47. package/dist/adapter/runtime/marks.js +46 -0
  48. package/dist/adapter/runtime/paint.d.ts +91 -0
  49. package/dist/adapter/runtime/paint.js +208 -0
  50. package/dist/adapter/runtime/props.d.ts +36 -0
  51. package/dist/adapter/runtime/props.js +58 -0
  52. package/dist/adapter/runtime/relocation.d.ts +16 -0
  53. package/dist/adapter/runtime/relocation.js +58 -0
  54. package/dist/adapter/runtime/root.d.ts +77 -0
  55. package/dist/adapter/runtime/root.js +77 -0
  56. package/dist/adapter/runtime/subtree.d.ts +22 -0
  57. package/dist/adapter/runtime/subtree.js +44 -0
  58. package/dist/adapter/runtime/teleport.d.ts +57 -0
  59. package/dist/adapter/runtime/teleport.js +190 -0
  60. package/dist/adapter/runtime/useAdapter.d.ts +45 -0
  61. package/dist/adapter/runtime/useAdapter.js +151 -0
  62. package/dist/adapter/runtime/waiting.d.ts +10 -0
  63. package/dist/adapter/runtime/waiting.js +53 -0
  64. package/dist/adapter/template/index.d.ts +6 -0
  65. package/dist/adapter/template/index.js +6 -0
  66. package/dist/adapter/template/lend.d.ts +13 -0
  67. package/dist/adapter/template/lend.js +30 -0
  68. package/dist/adapter/template/loop.d.ts +21 -0
  69. package/dist/adapter/template/loop.js +59 -0
  70. package/dist/adapter/template/owner.d.ts +13 -0
  71. package/dist/adapter/template/owner.js +15 -0
  72. package/dist/adapter/template/parts.d.ts +37 -0
  73. package/dist/adapter/template/parts.js +61 -0
  74. package/dist/adapter/template/types.d.ts +69 -0
  75. package/dist/adapter/template/types.js +9 -0
  76. package/dist/adapter/toasts/index.d.ts +1 -0
  77. package/dist/adapter/toasts/index.js +1 -0
  78. package/dist/adapter/toasts/toastsOf.d.ts +12 -0
  79. package/dist/adapter/toasts/toastsOf.js +21 -0
  80. package/dist/components/accordion/Accordion.element.d.ts +9 -0
  81. package/dist/components/accordion/Accordion.element.js +27 -0
  82. package/dist/components/accordion/accordion.template.d.ts +10 -0
  83. package/dist/components/accordion/accordion.template.js +44 -0
  84. package/dist/components/accordion/index.d.ts +5 -0
  85. package/dist/components/accordion/index.js +3 -0
  86. package/dist/components/accordion/item/AccordionItem.element.d.ts +10 -0
  87. package/dist/components/accordion/item/AccordionItem.element.js +25 -0
  88. package/dist/components/accordion/item/accordion-item.template.d.ts +8 -0
  89. package/dist/components/accordion/item/accordion-item.template.js +123 -0
  90. package/dist/components/accordion/item/index.d.ts +3 -0
  91. package/dist/components/accordion/item/index.js +3 -0
  92. package/dist/components/accordion/item/setup.component.d.ts +3 -0
  93. package/dist/components/accordion/item/setup.component.js +22 -0
  94. package/dist/components/accordion/setup.component.d.ts +3 -0
  95. package/dist/components/accordion/setup.component.js +26 -0
  96. package/dist/components/button/Button.element.d.ts +12 -0
  97. package/dist/components/button/Button.element.js +22 -0
  98. package/dist/components/button/button.template.d.ts +8 -0
  99. package/dist/components/button/button.template.js +30 -0
  100. package/dist/components/button/index.d.ts +3 -0
  101. package/dist/components/button/index.js +1 -0
  102. package/dist/components/button/setup.component.d.ts +3 -0
  103. package/dist/components/button/setup.component.js +14 -0
  104. package/dist/components/calendar/Calendar.element.d.ts +9 -0
  105. package/dist/components/calendar/Calendar.element.js +23 -0
  106. package/dist/components/calendar/calendar.template.d.ts +10 -0
  107. package/dist/components/calendar/calendar.template.js +309 -0
  108. package/dist/components/calendar/index.d.ts +5 -0
  109. package/dist/components/calendar/index.js +3 -0
  110. package/dist/components/calendar/item/CalendarItem.element.d.ts +10 -0
  111. package/dist/components/calendar/item/CalendarItem.element.js +19 -0
  112. package/dist/components/calendar/item/calendar-item.template.d.ts +7 -0
  113. package/dist/components/calendar/item/calendar-item.template.js +22 -0
  114. package/dist/components/calendar/item/index.d.ts +3 -0
  115. package/dist/components/calendar/item/index.js +3 -0
  116. package/dist/components/calendar/item/setup.component.d.ts +3 -0
  117. package/dist/components/calendar/item/setup.component.js +22 -0
  118. package/dist/components/calendar/setup.component.d.ts +3 -0
  119. package/dist/components/calendar/setup.component.js +25 -0
  120. package/dist/components/check-box/CheckBox.element.d.ts +9 -0
  121. package/dist/components/check-box/CheckBox.element.js +24 -0
  122. package/dist/components/check-box/check-box.template.d.ts +10 -0
  123. package/dist/components/check-box/check-box.template.js +94 -0
  124. package/dist/components/check-box/index.d.ts +3 -0
  125. package/dist/components/check-box/index.js +1 -0
  126. package/dist/components/check-box/setup.component.d.ts +7 -0
  127. package/dist/components/check-box/setup.component.js +16 -0
  128. package/dist/components/common/clear.d.ts +34 -0
  129. package/dist/components/common/clear.js +67 -0
  130. package/dist/components/common/drawn-rows.d.ts +35 -0
  131. package/dist/components/common/drawn-rows.js +79 -0
  132. package/dist/components/common/icon-button.d.ts +24 -0
  133. package/dist/components/common/icon-button.js +42 -0
  134. package/dist/components/component/index.d.ts +1 -0
  135. package/dist/components/component/index.js +1 -0
  136. package/dist/components/component/setup.component.d.ts +3 -0
  137. package/dist/components/component/setup.component.js +2 -0
  138. package/dist/components/component-view/ComponentView.element.d.ts +6 -0
  139. package/dist/components/component-view/ComponentView.element.js +16 -0
  140. package/dist/components/component-view/component-view.template.d.ts +4 -0
  141. package/dist/components/component-view/component-view.template.js +10 -0
  142. package/dist/components/component-view/index.d.ts +3 -0
  143. package/dist/components/component-view/index.js +1 -0
  144. package/dist/components/component-view/setup.component.d.ts +3 -0
  145. package/dist/components/component-view/setup.component.js +14 -0
  146. package/dist/components/control/index.d.ts +1 -0
  147. package/dist/components/control/index.js +1 -0
  148. package/dist/components/control/setup.component.d.ts +3 -0
  149. package/dist/components/control/setup.component.js +2 -0
  150. package/dist/components/date-input/DateInput.element.d.ts +11 -0
  151. package/dist/components/date-input/DateInput.element.js +21 -0
  152. package/dist/components/date-input/date-input.template.d.ts +11 -0
  153. package/dist/components/date-input/date-input.template.js +102 -0
  154. package/dist/components/date-input/index.d.ts +3 -0
  155. package/dist/components/date-input/index.js +1 -0
  156. package/dist/components/date-input/setup.component.d.ts +8 -0
  157. package/dist/components/date-input/setup.component.js +16 -0
  158. package/dist/components/date-picker/DatePicker.element.d.ts +11 -0
  159. package/dist/components/date-picker/DatePicker.element.js +24 -0
  160. package/dist/components/date-picker/date-picker.template.d.ts +15 -0
  161. package/dist/components/date-picker/date-picker.template.js +310 -0
  162. package/dist/components/date-picker/index.d.ts +3 -0
  163. package/dist/components/date-picker/index.js +1 -0
  164. package/dist/components/date-picker/setup.component.d.ts +9 -0
  165. package/dist/components/date-picker/setup.component.js +16 -0
  166. package/dist/components/dialog/Dialog.element.d.ts +11 -0
  167. package/dist/components/dialog/Dialog.element.js +25 -0
  168. package/dist/components/dialog/dialog.template.d.ts +9 -0
  169. package/dist/components/dialog/dialog.template.js +148 -0
  170. package/dist/components/dialog/index.d.ts +3 -0
  171. package/dist/components/dialog/index.js +1 -0
  172. package/dist/components/dialog/setup.component.d.ts +5 -0
  173. package/dist/components/dialog/setup.component.js +14 -0
  174. package/dist/components/drag-and-drop/DragAndDrop.element.d.ts +10 -0
  175. package/dist/components/drag-and-drop/DragAndDrop.element.js +20 -0
  176. package/dist/components/drag-and-drop/drag-and-drop.template.d.ts +4 -0
  177. package/dist/components/drag-and-drop/drag-and-drop.template.js +14 -0
  178. package/dist/components/drag-and-drop/index.d.ts +3 -0
  179. package/dist/components/drag-and-drop/index.js +1 -0
  180. package/dist/components/drag-and-drop/setup.component.d.ts +4 -0
  181. package/dist/components/drag-and-drop/setup.component.js +17 -0
  182. package/dist/components/drawer/Drawer.element.d.ts +10 -0
  183. package/dist/components/drawer/Drawer.element.js +27 -0
  184. package/dist/components/drawer/drawer.template.d.ts +11 -0
  185. package/dist/components/drawer/drawer.template.js +100 -0
  186. package/dist/components/drawer/index.d.ts +3 -0
  187. package/dist/components/drawer/index.js +1 -0
  188. package/dist/components/drawer/setup.component.d.ts +6 -0
  189. package/dist/components/drawer/setup.component.js +14 -0
  190. package/dist/components/field/Field.element.d.ts +10 -0
  191. package/dist/components/field/Field.element.js +20 -0
  192. package/dist/components/field/field.template.d.ts +9 -0
  193. package/dist/components/field/field.template.js +110 -0
  194. package/dist/components/field/index.d.ts +3 -0
  195. package/dist/components/field/index.js +1 -0
  196. package/dist/components/field/setup.component.d.ts +4 -0
  197. package/dist/components/field/setup.component.js +17 -0
  198. package/dist/components/frame/Frame.element.d.ts +10 -0
  199. package/dist/components/frame/Frame.element.js +27 -0
  200. package/dist/components/frame/frame.template.d.ts +4 -0
  201. package/dist/components/frame/frame.template.js +10 -0
  202. package/dist/components/frame/index.d.ts +3 -0
  203. package/dist/components/frame/index.js +1 -0
  204. package/dist/components/frame/setup.component.d.ts +3 -0
  205. package/dist/components/frame/setup.component.js +14 -0
  206. package/dist/components/icon/Icon.element.d.ts +10 -0
  207. package/dist/components/icon/Icon.element.js +21 -0
  208. package/dist/components/icon/icon.template.d.ts +7 -0
  209. package/dist/components/icon/icon.template.js +32 -0
  210. package/dist/components/icon/index.d.ts +4 -0
  211. package/dist/components/icon/index.js +3 -0
  212. package/dist/components/icon/setup.component.d.ts +3 -0
  213. package/dist/components/icon/setup.component.js +14 -0
  214. package/dist/components/index.d.ts +44 -0
  215. package/dist/components/index.js +104 -0
  216. package/dist/components/input/Input.element.d.ts +9 -0
  217. package/dist/components/input/Input.element.js +24 -0
  218. package/dist/components/input/index.d.ts +3 -0
  219. package/dist/components/input/index.js +1 -0
  220. package/dist/components/input/input.template.d.ts +10 -0
  221. package/dist/components/input/input.template.js +82 -0
  222. package/dist/components/input/setup.component.d.ts +7 -0
  223. package/dist/components/input/setup.component.js +16 -0
  224. package/dist/components/input-control/index.d.ts +1 -0
  225. package/dist/components/input-control/index.js +1 -0
  226. package/dist/components/input-control/setup.component.d.ts +4 -0
  227. package/dist/components/input-control/setup.component.js +2 -0
  228. package/dist/components/interactive/index.d.ts +1 -0
  229. package/dist/components/interactive/index.js +1 -0
  230. package/dist/components/interactive/setup.component.d.ts +3 -0
  231. package/dist/components/interactive/setup.component.js +2 -0
  232. package/dist/components/item-row/ItemRow.element.d.ts +26 -0
  233. package/dist/components/item-row/ItemRow.element.js +53 -0
  234. package/dist/components/item-row/index.d.ts +1 -0
  235. package/dist/components/item-row/index.js +1 -0
  236. package/dist/components/item-row/setup.component.d.ts +3 -0
  237. package/dist/components/item-row/setup.component.js +14 -0
  238. package/dist/components/label/Label.element.d.ts +9 -0
  239. package/dist/components/label/Label.element.js +19 -0
  240. package/dist/components/label/index.d.ts +3 -0
  241. package/dist/components/label/index.js +1 -0
  242. package/dist/components/label/label.template.d.ts +8 -0
  243. package/dist/components/label/label.template.js +33 -0
  244. package/dist/components/label/setup.component.d.ts +3 -0
  245. package/dist/components/label/setup.component.js +14 -0
  246. package/dist/components/list-box/ListBox.element.d.ts +10 -0
  247. package/dist/components/list-box/ListBox.element.js +32 -0
  248. package/dist/components/list-box/group/ListBoxGroup.element.d.ts +9 -0
  249. package/dist/components/list-box/group/ListBoxGroup.element.js +17 -0
  250. package/dist/components/list-box/group/index.d.ts +3 -0
  251. package/dist/components/list-box/group/index.js +3 -0
  252. package/dist/components/list-box/group/list-box-group.template.d.ts +8 -0
  253. package/dist/components/list-box/group/list-box-group.template.js +32 -0
  254. package/dist/components/list-box/group/setup.component.d.ts +3 -0
  255. package/dist/components/list-box/group/setup.component.js +16 -0
  256. package/dist/components/list-box/index.d.ts +7 -0
  257. package/dist/components/list-box/index.js +4 -0
  258. package/dist/components/list-box/item/ListBoxItem.element.d.ts +10 -0
  259. package/dist/components/list-box/item/ListBoxItem.element.js +25 -0
  260. package/dist/components/list-box/item/index.d.ts +3 -0
  261. package/dist/components/list-box/item/index.js +3 -0
  262. package/dist/components/list-box/item/list-box-item.template.d.ts +8 -0
  263. package/dist/components/list-box/item/list-box-item.template.js +116 -0
  264. package/dist/components/list-box/item/setup.component.d.ts +3 -0
  265. package/dist/components/list-box/item/setup.component.js +22 -0
  266. package/dist/components/list-box/list-box.template.d.ts +11 -0
  267. package/dist/components/list-box/list-box.template.js +77 -0
  268. package/dist/components/list-box/setup.component.d.ts +3 -0
  269. package/dist/components/list-box/setup.component.js +26 -0
  270. package/dist/components/menu/Menu.element.d.ts +10 -0
  271. package/dist/components/menu/Menu.element.js +49 -0
  272. package/dist/components/menu/checkbox-item/MenuCheckboxItem.element.d.ts +10 -0
  273. package/dist/components/menu/checkbox-item/MenuCheckboxItem.element.js +24 -0
  274. package/dist/components/menu/checkbox-item/index.d.ts +3 -0
  275. package/dist/components/menu/checkbox-item/index.js +3 -0
  276. package/dist/components/menu/checkbox-item/menu-checkbox-item.template.d.ts +8 -0
  277. package/dist/components/menu/checkbox-item/menu-checkbox-item.template.js +58 -0
  278. package/dist/components/menu/checkbox-item/setup.component.d.ts +3 -0
  279. package/dist/components/menu/checkbox-item/setup.component.js +22 -0
  280. package/dist/components/menu/group/MenuGroup.element.d.ts +9 -0
  281. package/dist/components/menu/group/MenuGroup.element.js +17 -0
  282. package/dist/components/menu/group/index.d.ts +3 -0
  283. package/dist/components/menu/group/index.js +3 -0
  284. package/dist/components/menu/group/menu-group.template.d.ts +12 -0
  285. package/dist/components/menu/group/menu-group.template.js +37 -0
  286. package/dist/components/menu/group/setup.component.d.ts +3 -0
  287. package/dist/components/menu/group/setup.component.js +16 -0
  288. package/dist/components/menu/index.d.ts +19 -0
  289. package/dist/components/menu/index.js +10 -0
  290. package/dist/components/menu/item/MenuItem.element.d.ts +10 -0
  291. package/dist/components/menu/item/MenuItem.element.js +24 -0
  292. package/dist/components/menu/item/index.d.ts +3 -0
  293. package/dist/components/menu/item/index.js +3 -0
  294. package/dist/components/menu/item/menu-item.template.d.ts +8 -0
  295. package/dist/components/menu/item/menu-item.template.js +36 -0
  296. package/dist/components/menu/item/setup.component.d.ts +3 -0
  297. package/dist/components/menu/item/setup.component.js +22 -0
  298. package/dist/components/menu/items.d.ts +25 -0
  299. package/dist/components/menu/items.js +112 -0
  300. package/dist/components/menu/menu.template.d.ts +17 -0
  301. package/dist/components/menu/menu.template.js +100 -0
  302. package/dist/components/menu/popover-item/MenuPopoverItem.element.d.ts +10 -0
  303. package/dist/components/menu/popover-item/MenuPopoverItem.element.js +24 -0
  304. package/dist/components/menu/popover-item/index.d.ts +3 -0
  305. package/dist/components/menu/popover-item/index.js +3 -0
  306. package/dist/components/menu/popover-item/menu-popover-item.template.d.ts +14 -0
  307. package/dist/components/menu/popover-item/menu-popover-item.template.js +83 -0
  308. package/dist/components/menu/popover-item/setup.component.d.ts +6 -0
  309. package/dist/components/menu/popover-item/setup.component.js +22 -0
  310. package/dist/components/menu/radio-group/MenuRadioGroup.element.d.ts +9 -0
  311. package/dist/components/menu/radio-group/MenuRadioGroup.element.js +17 -0
  312. package/dist/components/menu/radio-group/index.d.ts +3 -0
  313. package/dist/components/menu/radio-group/index.js +3 -0
  314. package/dist/components/menu/radio-group/menu-radio-group.template.d.ts +7 -0
  315. package/dist/components/menu/radio-group/menu-radio-group.template.js +10 -0
  316. package/dist/components/menu/radio-group/setup.component.d.ts +3 -0
  317. package/dist/components/menu/radio-group/setup.component.js +17 -0
  318. package/dist/components/menu/radio-item/MenuRadioItem.element.d.ts +10 -0
  319. package/dist/components/menu/radio-item/MenuRadioItem.element.js +24 -0
  320. package/dist/components/menu/radio-item/index.d.ts +3 -0
  321. package/dist/components/menu/radio-item/index.js +3 -0
  322. package/dist/components/menu/radio-item/menu-radio-item.template.d.ts +7 -0
  323. package/dist/components/menu/radio-item/menu-radio-item.template.js +54 -0
  324. package/dist/components/menu/radio-item/setup.component.d.ts +3 -0
  325. package/dist/components/menu/radio-item/setup.component.js +23 -0
  326. package/dist/components/menu/row.d.ts +27 -0
  327. package/dist/components/menu/row.js +72 -0
  328. package/dist/components/menu/separator/MenuSeparator.element.d.ts +9 -0
  329. package/dist/components/menu/separator/MenuSeparator.element.js +17 -0
  330. package/dist/components/menu/separator/index.d.ts +3 -0
  331. package/dist/components/menu/separator/index.js +3 -0
  332. package/dist/components/menu/separator/menu-separator.template.d.ts +4 -0
  333. package/dist/components/menu/separator/menu-separator.template.js +7 -0
  334. package/dist/components/menu/separator/setup.component.d.ts +3 -0
  335. package/dist/components/menu/separator/setup.component.js +14 -0
  336. package/dist/components/menu/setup.component.d.ts +6 -0
  337. package/dist/components/menu/setup.component.js +25 -0
  338. package/dist/components/menu/submenu/MenuSubmenu.element.d.ts +11 -0
  339. package/dist/components/menu/submenu/MenuSubmenu.element.js +26 -0
  340. package/dist/components/menu/submenu/index.d.ts +3 -0
  341. package/dist/components/menu/submenu/index.js +3 -0
  342. package/dist/components/menu/submenu/menu-submenu.template.d.ts +13 -0
  343. package/dist/components/menu/submenu/menu-submenu.template.js +103 -0
  344. package/dist/components/menu/submenu/setup.component.d.ts +11 -0
  345. package/dist/components/menu/submenu/setup.component.js +36 -0
  346. package/dist/components/number-input/NumberInput.element.d.ts +11 -0
  347. package/dist/components/number-input/NumberInput.element.js +26 -0
  348. package/dist/components/number-input/index.d.ts +3 -0
  349. package/dist/components/number-input/index.js +1 -0
  350. package/dist/components/number-input/number-input.template.d.ts +9 -0
  351. package/dist/components/number-input/number-input.template.js +166 -0
  352. package/dist/components/number-input/setup.component.d.ts +7 -0
  353. package/dist/components/number-input/setup.component.js +16 -0
  354. package/dist/components/pagination/Pagination.element.d.ts +10 -0
  355. package/dist/components/pagination/Pagination.element.js +24 -0
  356. package/dist/components/pagination/index.d.ts +3 -0
  357. package/dist/components/pagination/index.js +1 -0
  358. package/dist/components/pagination/item/PaginationItem.element.d.ts +11 -0
  359. package/dist/components/pagination/item/PaginationItem.element.js +23 -0
  360. package/dist/components/pagination/item/index.d.ts +3 -0
  361. package/dist/components/pagination/item/index.js +3 -0
  362. package/dist/components/pagination/item/pagination-item.template.d.ts +8 -0
  363. package/dist/components/pagination/item/pagination-item.template.js +55 -0
  364. package/dist/components/pagination/item/setup.component.d.ts +3 -0
  365. package/dist/components/pagination/item/setup.component.js +22 -0
  366. package/dist/components/pagination/pagination.template.d.ts +11 -0
  367. package/dist/components/pagination/pagination.template.js +109 -0
  368. package/dist/components/pagination/setup.component.d.ts +3 -0
  369. package/dist/components/pagination/setup.component.js +25 -0
  370. package/dist/components/popover/Popover.element.d.ts +16 -0
  371. package/dist/components/popover/Popover.element.js +46 -0
  372. package/dist/components/popover/index.d.ts +6 -0
  373. package/dist/components/popover/index.js +1 -0
  374. package/dist/components/popover/popover.template.d.ts +9 -0
  375. package/dist/components/popover/popover.template.js +126 -0
  376. package/dist/components/popover/setup.component.d.ts +5 -0
  377. package/dist/components/popover/setup.component.js +14 -0
  378. package/dist/components/progress-linear/ProgressLinear.element.d.ts +10 -0
  379. package/dist/components/progress-linear/ProgressLinear.element.js +24 -0
  380. package/dist/components/progress-linear/index.d.ts +3 -0
  381. package/dist/components/progress-linear/index.js +1 -0
  382. package/dist/components/progress-linear/progress-linear.template.d.ts +8 -0
  383. package/dist/components/progress-linear/progress-linear.template.js +12 -0
  384. package/dist/components/progress-linear/setup.component.d.ts +3 -0
  385. package/dist/components/progress-linear/setup.component.js +14 -0
  386. package/dist/components/progress-spinner/ProgressSpinner.element.d.ts +10 -0
  387. package/dist/components/progress-spinner/ProgressSpinner.element.js +24 -0
  388. package/dist/components/progress-spinner/index.d.ts +3 -0
  389. package/dist/components/progress-spinner/index.js +1 -0
  390. package/dist/components/progress-spinner/progress-spinner.template.d.ts +8 -0
  391. package/dist/components/progress-spinner/progress-spinner.template.js +41 -0
  392. package/dist/components/progress-spinner/setup.component.d.ts +3 -0
  393. package/dist/components/progress-spinner/setup.component.js +14 -0
  394. package/dist/components/radio-group/RadioGroup.element.d.ts +9 -0
  395. package/dist/components/radio-group/RadioGroup.element.js +23 -0
  396. package/dist/components/radio-group/index.d.ts +5 -0
  397. package/dist/components/radio-group/index.js +3 -0
  398. package/dist/components/radio-group/item/RadioGroupItem.element.d.ts +11 -0
  399. package/dist/components/radio-group/item/RadioGroupItem.element.js +25 -0
  400. package/dist/components/radio-group/item/index.d.ts +3 -0
  401. package/dist/components/radio-group/item/index.js +3 -0
  402. package/dist/components/radio-group/item/radio-group-item.template.d.ts +8 -0
  403. package/dist/components/radio-group/item/radio-group-item.template.js +61 -0
  404. package/dist/components/radio-group/item/setup.component.d.ts +3 -0
  405. package/dist/components/radio-group/item/setup.component.js +22 -0
  406. package/dist/components/radio-group/radio-group.template.d.ts +10 -0
  407. package/dist/components/radio-group/radio-group.template.js +34 -0
  408. package/dist/components/radio-group/setup.component.d.ts +3 -0
  409. package/dist/components/radio-group/setup.component.js +25 -0
  410. package/dist/components/rating/Rating.element.d.ts +10 -0
  411. package/dist/components/rating/Rating.element.js +25 -0
  412. package/dist/components/rating/index.d.ts +3 -0
  413. package/dist/components/rating/index.js +1 -0
  414. package/dist/components/rating/rating.template.d.ts +12 -0
  415. package/dist/components/rating/rating.template.js +89 -0
  416. package/dist/components/rating/setup.component.d.ts +7 -0
  417. package/dist/components/rating/setup.component.js +16 -0
  418. package/dist/components/scroller/Scroller.element.d.ts +9 -0
  419. package/dist/components/scroller/Scroller.element.js +19 -0
  420. package/dist/components/scroller/index.d.ts +3 -0
  421. package/dist/components/scroller/index.js +1 -0
  422. package/dist/components/scroller/scroller.template.d.ts +9 -0
  423. package/dist/components/scroller/scroller.template.js +82 -0
  424. package/dist/components/scroller/setup.component.d.ts +3 -0
  425. package/dist/components/scroller/setup.component.js +14 -0
  426. package/dist/components/select/Select.element.d.ts +12 -0
  427. package/dist/components/select/Select.element.js +33 -0
  428. package/dist/components/select/group/SelectGroup.element.d.ts +9 -0
  429. package/dist/components/select/group/SelectGroup.element.js +17 -0
  430. package/dist/components/select/group/index.d.ts +3 -0
  431. package/dist/components/select/group/index.js +3 -0
  432. package/dist/components/select/group/select-group.template.d.ts +7 -0
  433. package/dist/components/select/group/select-group.template.js +32 -0
  434. package/dist/components/select/group/setup.component.d.ts +4 -0
  435. package/dist/components/select/group/setup.component.js +17 -0
  436. package/dist/components/select/index.d.ts +7 -0
  437. package/dist/components/select/index.js +4 -0
  438. package/dist/components/select/item/SelectItem.element.d.ts +11 -0
  439. package/dist/components/select/item/SelectItem.element.js +26 -0
  440. package/dist/components/select/item/index.d.ts +3 -0
  441. package/dist/components/select/item/index.js +3 -0
  442. package/dist/components/select/item/select-item.template.d.ts +9 -0
  443. package/dist/components/select/item/select-item.template.js +113 -0
  444. package/dist/components/select/item/setup.component.d.ts +3 -0
  445. package/dist/components/select/item/setup.component.js +22 -0
  446. package/dist/components/select/select.template.d.ts +12 -0
  447. package/dist/components/select/select.template.js +216 -0
  448. package/dist/components/select/setup.component.d.ts +9 -0
  449. package/dist/components/select/setup.component.js +26 -0
  450. package/dist/components/skeleton/Skeleton.element.d.ts +10 -0
  451. package/dist/components/skeleton/Skeleton.element.js +24 -0
  452. package/dist/components/skeleton/index.d.ts +3 -0
  453. package/dist/components/skeleton/index.js +1 -0
  454. package/dist/components/skeleton/setup.component.d.ts +3 -0
  455. package/dist/components/skeleton/setup.component.js +14 -0
  456. package/dist/components/skeleton/skeleton.template.d.ts +8 -0
  457. package/dist/components/skeleton/skeleton.template.js +25 -0
  458. package/dist/components/slider/Slider.element.d.ts +11 -0
  459. package/dist/components/slider/Slider.element.js +25 -0
  460. package/dist/components/slider/index.d.ts +3 -0
  461. package/dist/components/slider/index.js +1 -0
  462. package/dist/components/slider/setup.component.d.ts +3 -0
  463. package/dist/components/slider/setup.component.js +16 -0
  464. package/dist/components/slider/slider.template.d.ts +8 -0
  465. package/dist/components/slider/slider.template.js +149 -0
  466. package/dist/components/stylable/index.d.ts +1 -0
  467. package/dist/components/stylable/index.js +1 -0
  468. package/dist/components/stylable/setup.component.d.ts +3 -0
  469. package/dist/components/stylable/setup.component.js +2 -0
  470. package/dist/components/switch/Switch.element.d.ts +9 -0
  471. package/dist/components/switch/Switch.element.js +24 -0
  472. package/dist/components/switch/index.d.ts +3 -0
  473. package/dist/components/switch/index.js +1 -0
  474. package/dist/components/switch/setup.component.d.ts +7 -0
  475. package/dist/components/switch/setup.component.js +16 -0
  476. package/dist/components/switch/switch.template.d.ts +9 -0
  477. package/dist/components/switch/switch.template.js +63 -0
  478. package/dist/components/table/Table.element.d.ts +11 -0
  479. package/dist/components/table/Table.element.js +29 -0
  480. package/dist/components/table/column/TableColumn.element.d.ts +10 -0
  481. package/dist/components/table/column/TableColumn.element.js +22 -0
  482. package/dist/components/table/column/index.d.ts +3 -0
  483. package/dist/components/table/column/index.js +3 -0
  484. package/dist/components/table/column/setup.component.d.ts +4 -0
  485. package/dist/components/table/column/setup.component.js +15 -0
  486. package/dist/components/table/column/table-column.template.d.ts +8 -0
  487. package/dist/components/table/column/table-column.template.js +123 -0
  488. package/dist/components/table/index.d.ts +7 -0
  489. package/dist/components/table/index.js +4 -0
  490. package/dist/components/table/row/TableRow.element.d.ts +10 -0
  491. package/dist/components/table/row/TableRow.element.js +19 -0
  492. package/dist/components/table/row/index.d.ts +3 -0
  493. package/dist/components/table/row/index.js +3 -0
  494. package/dist/components/table/row/setup.component.d.ts +3 -0
  495. package/dist/components/table/row/setup.component.js +22 -0
  496. package/dist/components/table/row/table-row.template.d.ts +8 -0
  497. package/dist/components/table/row/table-row.template.js +98 -0
  498. package/dist/components/table/setup.component.d.ts +3 -0
  499. package/dist/components/table/setup.component.js +26 -0
  500. package/dist/components/table/table.template.d.ts +12 -0
  501. package/dist/components/table/table.template.js +164 -0
  502. package/dist/components/tabs/Tabs.element.d.ts +10 -0
  503. package/dist/components/tabs/Tabs.element.js +32 -0
  504. package/dist/components/tabs/content/TabsContent.element.d.ts +10 -0
  505. package/dist/components/tabs/content/TabsContent.element.js +24 -0
  506. package/dist/components/tabs/content/index.d.ts +3 -0
  507. package/dist/components/tabs/content/index.js +3 -0
  508. package/dist/components/tabs/content/setup.component.d.ts +3 -0
  509. package/dist/components/tabs/content/setup.component.js +22 -0
  510. package/dist/components/tabs/content/tabs-content.template.d.ts +4 -0
  511. package/dist/components/tabs/content/tabs-content.template.js +15 -0
  512. package/dist/components/tabs/index.d.ts +7 -0
  513. package/dist/components/tabs/index.js +4 -0
  514. package/dist/components/tabs/item/TabsItem.element.d.ts +10 -0
  515. package/dist/components/tabs/item/TabsItem.element.js +25 -0
  516. package/dist/components/tabs/item/index.d.ts +3 -0
  517. package/dist/components/tabs/item/index.js +3 -0
  518. package/dist/components/tabs/item/setup.component.d.ts +3 -0
  519. package/dist/components/tabs/item/setup.component.js +22 -0
  520. package/dist/components/tabs/item/tabs-item.template.d.ts +8 -0
  521. package/dist/components/tabs/item/tabs-item.template.js +113 -0
  522. package/dist/components/tabs/setup.component.d.ts +3 -0
  523. package/dist/components/tabs/setup.component.js +26 -0
  524. package/dist/components/tabs/tabs.template.d.ts +12 -0
  525. package/dist/components/tabs/tabs.template.js +76 -0
  526. package/dist/components/tags/Tags.element.d.ts +10 -0
  527. package/dist/components/tags/Tags.element.js +24 -0
  528. package/dist/components/tags/index.d.ts +5 -0
  529. package/dist/components/tags/index.js +3 -0
  530. package/dist/components/tags/item/TagsItem.element.d.ts +11 -0
  531. package/dist/components/tags/item/TagsItem.element.js +26 -0
  532. package/dist/components/tags/item/index.d.ts +3 -0
  533. package/dist/components/tags/item/index.js +3 -0
  534. package/dist/components/tags/item/setup.component.d.ts +3 -0
  535. package/dist/components/tags/item/setup.component.js +22 -0
  536. package/dist/components/tags/item/tags-item.template.d.ts +9 -0
  537. package/dist/components/tags/item/tags-item.template.js +115 -0
  538. package/dist/components/tags/setup.component.d.ts +3 -0
  539. package/dist/components/tags/setup.component.js +25 -0
  540. package/dist/components/tags/tags.template.d.ts +10 -0
  541. package/dist/components/tags/tags.template.js +43 -0
  542. package/dist/components/textable/index.d.ts +1 -0
  543. package/dist/components/textable/index.js +1 -0
  544. package/dist/components/textable/setup.component.d.ts +3 -0
  545. package/dist/components/textable/setup.component.js +2 -0
  546. package/dist/components/textarea/Textarea.element.d.ts +9 -0
  547. package/dist/components/textarea/Textarea.element.js +24 -0
  548. package/dist/components/textarea/index.d.ts +3 -0
  549. package/dist/components/textarea/index.js +1 -0
  550. package/dist/components/textarea/setup.component.d.ts +7 -0
  551. package/dist/components/textarea/setup.component.js +16 -0
  552. package/dist/components/textarea/textarea.template.d.ts +9 -0
  553. package/dist/components/textarea/textarea.template.js +81 -0
  554. package/dist/components/toasts/Toasts.element.d.ts +11 -0
  555. package/dist/components/toasts/Toasts.element.js +29 -0
  556. package/dist/components/toasts/index.d.ts +5 -0
  557. package/dist/components/toasts/index.js +3 -0
  558. package/dist/components/toasts/item/ToastsItem.element.d.ts +11 -0
  559. package/dist/components/toasts/item/ToastsItem.element.js +19 -0
  560. package/dist/components/toasts/item/index.d.ts +3 -0
  561. package/dist/components/toasts/item/index.js +3 -0
  562. package/dist/components/toasts/item/setup.component.d.ts +3 -0
  563. package/dist/components/toasts/item/setup.component.js +22 -0
  564. package/dist/components/toasts/item/toasts-item.template.d.ts +9 -0
  565. package/dist/components/toasts/item/toasts-item.template.js +133 -0
  566. package/dist/components/toasts/setup.component.d.ts +3 -0
  567. package/dist/components/toasts/setup.component.js +26 -0
  568. package/dist/components/toasts/toasts.template.d.ts +11 -0
  569. package/dist/components/toasts/toasts.template.js +53 -0
  570. package/dist/components/tooltip/Tooltip.element.d.ts +10 -0
  571. package/dist/components/tooltip/Tooltip.element.js +24 -0
  572. package/dist/components/tooltip/index.d.ts +3 -0
  573. package/dist/components/tooltip/index.js +1 -0
  574. package/dist/components/tooltip/setup.component.d.ts +6 -0
  575. package/dist/components/tooltip/setup.component.js +14 -0
  576. package/dist/components/tooltip/tooltip.template.d.ts +11 -0
  577. package/dist/components/tooltip/tooltip.template.js +68 -0
  578. package/dist/components/value-control/index.d.ts +1 -0
  579. package/dist/components/value-control/index.js +1 -0
  580. package/dist/components/value-control/setup.component.d.ts +4 -0
  581. package/dist/components/value-control/setup.component.js +2 -0
  582. package/dist/components/virtual/Virtual.element.d.ts +10 -0
  583. package/dist/components/virtual/Virtual.element.js +20 -0
  584. package/dist/components/virtual/index.d.ts +3 -0
  585. package/dist/components/virtual/index.js +1 -0
  586. package/dist/components/virtual/setup.component.d.ts +4 -0
  587. package/dist/components/virtual/setup.component.js +17 -0
  588. package/dist/components/virtual/virtual.template.d.ts +4 -0
  589. package/dist/components/virtual/virtual.template.js +14 -0
  590. package/dist/index.d.ts +7 -0
  591. package/dist/index.js +65 -0
  592. package/package.json +200 -4
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Регистрация элементов с защитой от повторной (HMR, тесты) и признаком
3
+ * «ожил при регистрации»: такую разметку база откладывает в очередь
4
+ * регистрации, а собирает её регистрация, когда оживлять больше некого — в
5
+ * браузере сразу после синхронной части, с полифилом в Safari после его
6
+ * микрозадач оживления. AGENTS.md (Web Components), «Регистрация и полифил».
7
+ */
8
+ import '@ungap/custom-elements';
9
+ export type TRegistration = {
10
+ readonly name: string;
11
+ readonly tag: string;
12
+ };
13
+ export declare function registrationOf(ctor: object): TRegistration | undefined;
14
+ export declare function isUpgradedOnRegistration(element: Element): boolean;
15
+ /** Ждёт ли снимок оживления элемента выше по месту: теневые корни снимок не видит. */
16
+ export declare function isUnderUpgrade(node: Node): boolean;
17
+ /** Элемент, расширяющий встроенный элемент тега: `<button is="so-button">`. */
18
+ export declare function defineElement(name: string, ctor: CustomElementConstructor, tag: string): void;
19
+ /**
20
+ * Автономный элемент без коробки — тот, у которого в остальных адаптерах узла
21
+ * нет: `<so-locale-provider>`, `<so-virtual>`, `<so-toasts>`.
22
+ */
23
+ export declare function defineAutonomousElement(name: string, ctor: CustomElementConstructor): void;
@@ -0,0 +1,97 @@
1
+ import { TPlaceContext } from "../context/place-context.class.js";
2
+ import { TDeferral } from "./deferral.js";
3
+ import "@ungap/custom-elements";
4
+ //#region src/adapter/runtime/defineElement.ts
5
+ /** Идёт `customElements.define`: браузер оживляет разметку внутри него. */
6
+ var defining = false;
7
+ /** Фаза, чей снимок впереди: встроенные имена фазы. */
8
+ var phase;
9
+ /** Элементы, которых снимок ждёт от полифила. */
10
+ var expected = /* @__PURE__ */ new Set();
11
+ /** Сколько снимков ждут конца своей фазы. */
12
+ var ending = 0;
13
+ /** Класс → имя и тег, под которыми он зарегистрирован: по ним шаблон строит его узел. */
14
+ var registrations = /* @__PURE__ */ new WeakMap();
15
+ function registrationOf(ctor) {
16
+ return registrations.get(ctor);
17
+ }
18
+ function isUpgradedOnRegistration(element) {
19
+ return defining || expected.has(element);
20
+ }
21
+ /** Ждёт ли снимок оживления элемента выше по месту: теневые корни снимок не видит. */
22
+ function isUnderUpgrade(node) {
23
+ if (expected.size === 0) return false;
24
+ for (const place of TPlaceContext.ancestors(node)) if (expected.has(place)) return true;
25
+ return false;
26
+ }
27
+ /** Встроенные элементы с именами фазы, ещё не ставшие экземплярами своего класса. */
28
+ function awaited(names) {
29
+ if (names.size === 0) return [];
30
+ const selector = [...names].map(([name, { tag }]) => `${tag}[is="${name}"]`).join(",");
31
+ return [...document.querySelectorAll(selector)].filter((element) => {
32
+ const builtIn = names.get(element.getAttribute("is") ?? "");
33
+ return builtIn !== void 0 && !(element instanceof builtIn.ctor);
34
+ });
35
+ }
36
+ function settle() {
37
+ if (phase !== void 0 || ending > 0) return;
38
+ TDeferral.registration.release();
39
+ }
40
+ /** Снимок фазы — один обход документа на все её регистрации. */
41
+ function snapshot(names) {
42
+ phase = void 0;
43
+ const waiting = awaited(names);
44
+ if (waiting.length === 0) {
45
+ settle();
46
+ return;
47
+ }
48
+ for (const element of waiting) expected.add(element);
49
+ ending += 1;
50
+ queueMicrotask(() => {
51
+ for (const element of waiting) expected.delete(element);
52
+ ending -= 1;
53
+ settle();
54
+ });
55
+ }
56
+ function enter(name, ctor, tag) {
57
+ let names = phase;
58
+ if (names === void 0) {
59
+ const opened = /* @__PURE__ */ new Map();
60
+ phase = opened;
61
+ names = opened;
62
+ queueMicrotask(() => snapshot(opened));
63
+ }
64
+ if (tag !== void 0) names.set(name, {
65
+ ctor,
66
+ tag
67
+ });
68
+ }
69
+ function register(name, ctor, options) {
70
+ if (typeof customElements === "undefined") return;
71
+ if (customElements.get(name)) return;
72
+ enter(name, ctor, options?.extends);
73
+ const outer = defining;
74
+ defining = true;
75
+ try {
76
+ customElements.define(name, ctor, options);
77
+ } finally {
78
+ defining = outer;
79
+ }
80
+ }
81
+ /** Элемент, расширяющий встроенный элемент тега: `<button is="so-button">`. */
82
+ function defineElement(name, ctor, tag) {
83
+ registrations.set(ctor, {
84
+ name,
85
+ tag
86
+ });
87
+ register(name, ctor, { extends: tag });
88
+ }
89
+ /**
90
+ * Автономный элемент без коробки — тот, у которого в остальных адаптерах узла
91
+ * нет: `<so-locale-provider>`, `<so-virtual>`, `<so-toasts>`.
92
+ */
93
+ function defineAutonomousElement(name, ctor) {
94
+ register(name, ctor);
95
+ }
96
+ //#endregion
97
+ export { defineAutonomousElement, defineElement, isUnderUpgrade, isUpgradedOnRegistration, registrationOf };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Элемент без своей коробки: теневой корень несёт только `<slot>` и правило
3
+ * `:host`, содержимое остаётся светом, а `display` потребителя главнее.
4
+ */
5
+ export declare function displayContents(element: HTMLElement): void;
@@ -0,0 +1,14 @@
1
+ //#region src/adapter/runtime/display-contents.ts
2
+ var HOST_STYLE = ":host { display: contents }";
3
+ /**
4
+ * Элемент без своей коробки: теневой корень несёт только `<slot>` и правило
5
+ * `:host`, содержимое остаётся светом, а `display` потребителя главнее.
6
+ */
7
+ function displayContents(element) {
8
+ const { ownerDocument } = element;
9
+ const style = ownerDocument.createElement("style");
10
+ style.textContent = HOST_STYLE;
11
+ element.attachShadow({ mode: "open" }).append(style, ownerDocument.createElement("slot"));
12
+ }
13
+ //#endregion
14
+ export { displayContents };
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Element base: a built-in element of a tag, extended by the component's class
3
+ * (customized built-in). `<button is="so-button">` is a real button, and its
4
+ * form, `<label>`, focus and accessibility are native. The factory
5
+ * `ElementBase(HTMLButtonElement, spec)` builds the class over the tag's native
6
+ * class: one base, a native class per tag.
7
+ *
8
+ * The template structure and the light are built once, on the first
9
+ * connection. Each connection is a new binding over the same instance and a
10
+ * full paint; a disconnection drops the binding. A first connection that comes
11
+ * too early goes to the deferral queue, one inside another's connection waits
12
+ * for it. Updates are targeted: names of changed props gather until a
13
+ * microtask, and the flush applies only their bindings. AGENTS.md (Web
14
+ * Components), «База элемента».
15
+ */
16
+ import '@ungap/custom-elements';
17
+ import type { IComponent, IComponentProps } from '@soxa-ui/core';
18
+ import { type DescriptorComponentProps, type IComponentDescriptor } from '@soxa-ui/setup';
19
+ import { type THostProp } from '../common';
20
+ import type { ITemplate } from '../template';
21
+ import { type TRootSpec } from './root';
22
+ import type { TBinding, TBindingState, TUpdateListener } from './useAdapter';
23
+ export interface IElementBase<TInstance, TFacade = unknown, TOwnerFacade = unknown> {
24
+ readonly state: TBindingState<TInstance, TFacade, unknown, TOwnerFacade>;
25
+ /** The next assembly gets the instance of the first one: a move doesn't replace `el.ctrl`. */
26
+ ctrl: TInstance | undefined;
27
+ connectedCallback(): void;
28
+ disconnectedCallback(): void;
29
+ attributeChangedCallback(name: string, old: string | null, value: string | null): void;
30
+ }
31
+ /**
32
+ * Prop properties on the prototype: the descriptor's contract, like React and
33
+ * Solid props, minus what the element has by its tag, `HOST_PROPS` and `ctrl`.
34
+ */
35
+ export type TElementProps<TDescriptorFn extends (...args: any[]) => IComponentDescriptor, TNative extends HTMLElement> = Omit<DescriptorComponentProps<TDescriptorFn>, keyof TNative | THostProp | 'ctrl'>;
36
+ export type TDescriptorFactory = () => IComponentDescriptor;
37
+ /** Own attributes as properties: the value is the attribute, `null` without it; `undefined` and `null` remove it. */
38
+ export type TOwnAttributes<TOwn extends string> = {
39
+ [K in TOwn]: string | null | undefined;
40
+ };
41
+ /** Element type: the tag's native element, the base's members, prop and own attribute properties. */
42
+ export type TElementOf<TNative extends HTMLElement, TDescriptor extends TDescriptorFactory, TInstance, TFacade = unknown, TOwnerFacade = unknown, TOwn extends string = never> = TNative & IElementBase<TInstance, TFacade, TOwnerFacade> & TElementProps<TDescriptor, TNative> & TOwnAttributes<TOwn>;
43
+ /** `TOutputs` are the outputs of the descriptor's plugins: the template reads them typed in the state. */
44
+ export interface IElementSpec<TInstance, TFacade = unknown, TOutputs = unknown, TOwnerFacade = unknown, TDescriptor extends TDescriptorFactory = TDescriptorFactory, TOwn extends string = never> {
45
+ readonly descriptor: TDescriptor;
46
+ /** Descriptor of the collection facade: its props are inputs of the element too. */
47
+ readonly facade?: TDescriptorFactory;
48
+ /** Descriptor of the facade of its own collection, on an item with a submenu. */
49
+ readonly ownerFacade?: TDescriptorFactory;
50
+ readonly template: ITemplate<TInstance, TFacade, TOutputs, TOwnerFacade>;
51
+ readonly root?: TRootSpec;
52
+ /** Own attributes beyond props (`icon`): the attribute holds the value, the property reflects it. */
53
+ readonly attributes?: readonly TOwn[];
54
+ setup(host: HTMLElement, ctrl: TInstance | undefined, props: Record<string, unknown>, onUpdate: TUpdateListener): TBinding<TInstance, TFacade, TOutputs, TOwnerFacade>;
55
+ }
56
+ /** Rest `any[]` is the mixin constructor shape: without it the base class doesn't combine with the native one. */
57
+ export type TNativeElementClass = new (...args: any[]) => HTMLElement;
58
+ /**
59
+ * `instanceof` with the class narrows a node to the element with its full
60
+ * type, by the predicate of `[Symbol.hasInstance]` (TypeScript 5.3+): the base
61
+ * sets the prop properties on the prototype at run time, and the instance type
62
+ * of the class doesn't know them. `prototype` and the constructor stay native:
63
+ * typed as the element, they would not hold for the class the base builds
64
+ * without a cast.
65
+ */
66
+ export type TElementClass<TInstance, TFacade = unknown, TOwnerFacade = unknown, TElement = IElementBase<TInstance, TFacade, TOwnerFacade>> = (new (...args: any[]) => IElementBase<TInstance, TFacade, TOwnerFacade>) & {
67
+ readonly observedAttributes: string[];
68
+ [Symbol.hasInstance](node: unknown): node is TElement;
69
+ };
70
+ /**
71
+ * Element class by the tag's native class and the descriptor. The annotation of
72
+ * an element export: the declaration names the descriptor (`typeof
73
+ * ButtonDescriptor`) instead of spelling out the inferred type.
74
+ */
75
+ export type TElementClassOf<TNative extends TNativeElementClass, TDescriptor extends TDescriptorFactory, TInstance, TFacade = unknown, TOwnerFacade = unknown, TOwn extends string = never> = TNative & TElementClass<TInstance, TFacade, TOwnerFacade, TElementOf<InstanceType<TNative>, TDescriptor, TInstance, TFacade, TOwnerFacade, TOwn>>;
76
+ /** Element type of a class: `TElementType<typeof TButtonElement>`. */
77
+ export type TElementType<TClass> = TClass extends {
78
+ [Symbol.hasInstance](node: unknown): node is infer T;
79
+ } ? T : never;
80
+ /**
81
+ * The result type is declared: TypeScript doesn't emit a class inferred from an
82
+ * expression into a declaration, it has private members.
83
+ */
84
+ export declare function ElementBase<TNative extends TNativeElementClass, TInstance extends IComponent<IComponentProps, any>, TFacade = unknown, TOutputs = unknown, TOwnerFacade = unknown, TDescriptor extends TDescriptorFactory = TDescriptorFactory, TOwn extends string = never>(Native: TNative, spec: IElementSpec<TInstance, TFacade, TOutputs, TOwnerFacade, TDescriptor, TOwn>): TElementClassOf<TNative, TDescriptor, TInstance, TFacade, TOwnerFacade, TOwn>;
@@ -0,0 +1,347 @@
1
+ import { WebcProfile } from "../common/profile.js";
2
+ import { buildAttributeMap, coerceAttribute, isHostProp, toAttributeName } from "../common/attributes.js";
3
+ import "../common/index.js";
4
+ import { TElementAttributes, TPaint, classesOf, orderOf, setOf, stylesOf } from "./paint.js";
5
+ import { markPlaceOwner } from "./marks.js";
6
+ import { keepsBinding } from "./relocation.js";
7
+ import { connecting, isConnecting, wait } from "./waiting.js";
8
+ import { TTeleport } from "./teleport.js";
9
+ import { TDeferral } from "./deferral.js";
10
+ import { isUnderUpgrade, isUpgradedOnRegistration } from "./defineElement.js";
11
+ import { TLight } from "./light.js";
12
+ import { TPropStore } from "./props.js";
13
+ import { placeOf, planOf, presenceOf } from "./root.js";
14
+ import { TSubtree, followAbove, provideSubtree } from "./subtree.js";
15
+ import { TSurface } from "@soxa-ui/setup";
16
+ import "@ungap/custom-elements";
17
+ //#region src/adapter/runtime/element.base.ts
18
+ /**
19
+ * The `id` attribute is a prop of `TIdPlugin`. On a root with a field it is the
20
+ * field's prop, not an input of the root: two nodes with one `id` would break
21
+ * `<label for>`. A root without a field carries the `id` itself (a tab panel),
22
+ * and there the attribute is an input.
23
+ */
24
+ var ID = "id";
25
+ /** `id` from the attribute: an empty one removes the prop, like a native `id`. */
26
+ function idOf(raw) {
27
+ return raw === null || raw === "" ? void 0 : raw;
28
+ }
29
+ /** An own prop wins over a facade prop of the same name: both bindings get the delta. */
30
+ function attributesOf(descriptors) {
31
+ const map = /* @__PURE__ */ new Map();
32
+ for (const descriptor of descriptors) for (const [name, binding] of buildAttributeMap(descriptor)) if (!map.has(name)) map.set(name, binding);
33
+ return map;
34
+ }
35
+ /** The root spec names a node the template didn't build: nowhere to carry it. */
36
+ function built(node, what) {
37
+ if (!node) throw new Error(`[soxa] Описание корня объявляет ${what}, а шаблон его не построил`);
38
+ return node;
39
+ }
40
+ /**
41
+ * The result type is declared: TypeScript doesn't emit a class inferred from an
42
+ * expression into a declaration, it has private members.
43
+ */
44
+ function ElementBase(Native, spec) {
45
+ const descriptors = [
46
+ spec.descriptor(),
47
+ spec.facade?.(),
48
+ spec.ownerFacade?.()
49
+ ].filter((descriptor) => descriptor !== void 0);
50
+ const plan = planOf(spec.root);
51
+ const attributes = attributesOf(descriptors);
52
+ if (plan.fieldId && !attributes.has(ID)) throw new Error("[soxa] Описание корня объявляет id поля, а у дескриптора пропа id нет");
53
+ const fieldId = (plan.control || plan.fieldId) && attributes.has(ID);
54
+ if (fieldId) attributes.delete(ID);
55
+ /** Prop inputs on the root: their value in the core's set is always right. A wrapper has none. */
56
+ const inputs = new Set(plan.wrapped ? [] : attributes.keys());
57
+ /** Own attributes: attribute name → property name. */
58
+ const own = new Map((spec.attributes ?? []).map((name) => [toAttributeName(name), name]));
59
+ class TElementBase extends Native {
60
+ static get observedAttributes() {
61
+ return [
62
+ ...attributes.keys(),
63
+ ...own.keys(),
64
+ ...fieldId ? [ID] : []
65
+ ];
66
+ }
67
+ /**
68
+ * The inherited check, typed with the element: through `super`, since
69
+ * `instanceof` the class itself would call this method again. The
70
+ * polyfill leaves `Symbol.hasInstance` of the native classes alone.
71
+ */
72
+ static [Symbol.hasInstance](node) {
73
+ return super[Symbol.hasInstance](node);
74
+ }
75
+ _binding;
76
+ _ctrl;
77
+ _props = new TPropStore();
78
+ _light = new TLight(this);
79
+ _dirty = /* @__PURE__ */ new Set();
80
+ _flushQueued = false;
81
+ _connected = false;
82
+ /** In the deferral queue or waiting for another element's connection. */
83
+ _deferred = false;
84
+ /** The node that gets what the core writes and goes to `TElementPlugin`. */
85
+ _root = this;
86
+ /** The outer node: hiding goes on it. */
87
+ _outer = this;
88
+ _companion = null;
89
+ _teleport;
90
+ /** The root is in its place: a layer's root is in the target or in place. */
91
+ _placed = true;
92
+ /** Own subtree flag, one for the whole lifetime. */
93
+ _subtree = new TSubtree();
94
+ /** The ancestor's flag, for this assembly. */
95
+ _above;
96
+ _view = this._viewOf();
97
+ constructor(...args) {
98
+ super(...args);
99
+ markPlaceOwner(this);
100
+ provideSubtree(this, this._subtree);
101
+ if (plan.control) TElementAttributes.of(this).awaitField();
102
+ }
103
+ get state() {
104
+ return this._binding?.state ?? {};
105
+ }
106
+ get ctrl() {
107
+ return this._binding?.ctrl ?? this._ctrl;
108
+ }
109
+ set ctrl(value) {
110
+ this._ctrl = value;
111
+ }
112
+ connectedCallback() {
113
+ if (!this.isConnected) return;
114
+ if (this._connected || this._deferred) return;
115
+ const deferral = this._light.built ? void 0 : this._deferralOf();
116
+ if (deferral) {
117
+ this._deferred = true;
118
+ deferral.defer(this, this._resume);
119
+ return;
120
+ }
121
+ if (isConnecting()) {
122
+ this._deferred = true;
123
+ wait(this._resume);
124
+ return;
125
+ }
126
+ connecting(() => this._connect());
127
+ }
128
+ disconnectedCallback() {
129
+ if (keepsBinding(this)) return;
130
+ this._connected = false;
131
+ this._above?.stop();
132
+ this._above = void 0;
133
+ this._binding?.detach();
134
+ this._binding?.destroy();
135
+ this._binding = void 0;
136
+ this._teleport?.release();
137
+ if (!this.isConnected) TTeleport.recall(this);
138
+ }
139
+ attributeChangedCallback(name, _old, value) {
140
+ if (fieldId && name === ID) {
141
+ if (value !== null) this._takeFieldId();
142
+ return;
143
+ }
144
+ if (name === ID && attributes.has(ID)) {
145
+ if (value === null || TElementAttributes.of(this).wanted(name) !== value) this._write(ID, idOf(value));
146
+ return;
147
+ }
148
+ const attribute = attributes.get(name);
149
+ if (attribute) {
150
+ this._write(attribute.prop, coerceAttribute(value, attribute));
151
+ return;
152
+ }
153
+ const property = own.get(name);
154
+ if (property !== void 0) this._mark(property);
155
+ }
156
+ _resume = () => {
157
+ this._deferred = false;
158
+ if (this.isConnected) this.connectedCallback();
159
+ };
160
+ /** A parsing document wins; under a waiting element, its queue; upgraded on registration, the registration's. */
161
+ _deferralOf() {
162
+ const owner = this.ownerDocument;
163
+ if (owner.readyState === "loading") return TDeferral.parsing(owner);
164
+ return TDeferral.above(this) ?? (isUpgradedOnRegistration(this) || isUnderUpgrade(this) ? TDeferral.registration : void 0);
165
+ }
166
+ _connect() {
167
+ const again = this._light.built;
168
+ this._connected = true;
169
+ if (!again) {
170
+ this._readAttributes();
171
+ this._build();
172
+ }
173
+ this._assemble();
174
+ this._above = followAbove(this, this._onAbove);
175
+ if (again) TTeleport.recall(this);
176
+ this._flush(true);
177
+ }
178
+ _onAbove = () => {
179
+ this._hide(this.state);
180
+ };
181
+ /** With the polyfill, attribute callbacks come after the connection: the base doesn't wait for them. */
182
+ _readAttributes() {
183
+ for (const [name, attribute] of attributes) {
184
+ if (this._props.isGiven(attribute.prop) || !this.hasAttribute(name)) continue;
185
+ const raw = this.getAttribute(name);
186
+ this._write(attribute.prop, name === ID ? idOf(raw) : coerceAttribute(raw, attribute));
187
+ }
188
+ }
189
+ _write(name, value) {
190
+ this._props.write(name, value, this._binding);
191
+ }
192
+ _assemble() {
193
+ const props = this._props.open(this._root.localName);
194
+ const binding = spec.setup(this, this._ctrl, props, this._onUpdate);
195
+ this._binding = binding;
196
+ this._ctrl = binding.ctrl;
197
+ this._props.close(binding);
198
+ }
199
+ _build() {
200
+ const groups = this._light.gather();
201
+ const parts = spec.template.create(this, this._view);
202
+ if (fieldId) this._takeFieldId();
203
+ if (plan.wrapped) this._root = built(parts.root, "обёртку");
204
+ const field = this._receiverOf(parts);
205
+ if (field) {
206
+ this._handOver(field);
207
+ if (plan.control) TElementAttributes.of(this).bindField(field);
208
+ }
209
+ if (plan.outerIsRoot) this._outer = this._root;
210
+ this._teleport = this._teleportOf(parts.companion);
211
+ this._light.distribute(groups, parts.slots);
212
+ }
213
+ /** Who gets the markup's statics: the root's field or the root inside the wrapper. */
214
+ _receiverOf(parts) {
215
+ if (plan.wrapped) return this._root;
216
+ if (plan.control) return built(parts.control, "поле");
217
+ }
218
+ /** The field's `id` goes from the root to the prop; an empty one removes it, like a native `id`. */
219
+ _takeFieldId() {
220
+ const id = this.getAttribute(ID);
221
+ if (id === null) return;
222
+ this._write(ID, idOf(id));
223
+ this.removeAttribute(ID);
224
+ }
225
+ /** The removal calls no callbacks: the element observes none of these attributes. */
226
+ _handOver(target) {
227
+ for (const name of this.getAttributeNames()) {
228
+ if (plan.keep.has(name) || attributes.has(name) || own.has(name)) continue;
229
+ target.setAttribute(name, this.getAttribute(name) ?? "");
230
+ this.removeAttribute(name);
231
+ }
232
+ }
233
+ _teleportOf(companion) {
234
+ if (plan.layer === void 0) {
235
+ if (companion) throw new Error("[soxa] Шаблон построил спутник корня, а описание корня слоя не объявляет");
236
+ return;
237
+ }
238
+ this._companion = companion ?? null;
239
+ return new TTeleport(this, this._root, this._companion);
240
+ }
241
+ _onUpdate = (name, value) => {
242
+ this._props.remember(name, value);
243
+ this._mark(name);
244
+ };
245
+ /** No flush without a connection: the name waits for the full paint of the next one. */
246
+ _mark(name) {
247
+ this._dirty.add(name);
248
+ this._queueFlush();
249
+ }
250
+ _queueFlush() {
251
+ if (this._flushQueued || !this._connected) return;
252
+ this._flushQueued = true;
253
+ queueMicrotask(() => {
254
+ this._flushQueued = false;
255
+ if (this._connected) this._flush();
256
+ });
257
+ }
258
+ _viewOf() {
259
+ const light = this._light;
260
+ const state = () => this._binding?.state ?? {};
261
+ const instance = () => this.ctrl;
262
+ const facade = () => this._binding?.facade;
263
+ return {
264
+ root: this,
265
+ get content() {
266
+ return light.content;
267
+ },
268
+ get state() {
269
+ return state();
270
+ },
271
+ get ctrl() {
272
+ return instance();
273
+ },
274
+ get facade() {
275
+ return facade();
276
+ },
277
+ hasSlot: (name) => light.has(name),
278
+ slotted: (name) => light.slotted(name),
279
+ showSlot: (name, shown) => light.show(name, shown),
280
+ sample: (name) => light.sample(name)
281
+ };
282
+ }
283
+ _flush(full = false) {
284
+ const state = this.state;
285
+ const paint = TPaint.of(this._root);
286
+ const dirty = new Set(this._dirty);
287
+ const changed = (name) => full || dirty.has(name);
288
+ this._dirty.clear();
289
+ if (changed("classes")) paint.classes("own", classesOf(state["classes"]));
290
+ for (const [layer, output] of plan.sets) if (changed(output)) TElementAttributes.of(this._root).set(layer, setOf(state[output]), inputs);
291
+ if (changed("layout_styles") || plan.style !== void 0 && changed(plan.style) || plan.order && changed("order")) paint.styles("own", stylesOf(state["layout_styles"], plan.style === void 0 ? void 0 : state[plan.style], plan.order ? orderOf(state["order"]) : void 0));
292
+ const layer = plan.layer;
293
+ const teleport = this._teleport;
294
+ const placing = layer !== void 0 && teleport !== void 0 && (full || changed(layer.target) || layer.contained !== void 0 && changed(layer.contained));
295
+ if (placing) this._placed = teleport.place(placeOf(state, layer));
296
+ if (changed("rendered") || changed("visible") || placing || plan.shownBy !== void 0 && changed(plan.shownBy)) this._hide(state);
297
+ for (const binding of spec.template.bindings) if (full || binding.props.some(changed)) binding.apply(this._view);
298
+ }
299
+ /** Hiding, the node for plugins and the own flag; the node goes on every call, the plugin skips the same one. */
300
+ _hide(state) {
301
+ const { hidden, present, subtree } = presenceOf(plan, state, this._above?.present ?? true, this._placed);
302
+ TPaint.of(this._outer).hidden(hidden);
303
+ if (this._companion) TPaint.of(this._companion).hidden(hidden);
304
+ this._binding?.bindElement(present ? this._root : null);
305
+ this._subtree.present = subtree;
306
+ }
307
+ /**
308
+ * Prop properties of all descriptors, except `ctrl`, `HOST_PROPS` and the
309
+ * tag's properties: a button's `disabled` stays native and reaches the core
310
+ * as an attribute. Then the properties of own attributes; a taken name is an
311
+ * error of the spec.
312
+ */
313
+ static {
314
+ const props = new Set(descriptors.flatMap((descriptor) => Object.keys(TSurface.of(descriptor, WebcProfile).exportProps)));
315
+ for (const prop of props) {
316
+ if (prop === "ctrl" || isHostProp(prop) || prop in Native.prototype) continue;
317
+ Object.defineProperty(this.prototype, prop, {
318
+ configurable: true,
319
+ enumerable: true,
320
+ get() {
321
+ return this._props.read(prop, this._binding);
322
+ },
323
+ set(value) {
324
+ this._write(prop, value);
325
+ }
326
+ });
327
+ }
328
+ for (const [attribute, property] of own) {
329
+ if (attributes.has(attribute) || isHostProp(property) || property in this.prototype) throw new Error(`[soxa] Свой атрибут «${attribute}» занят: это имя уже у пропа, класса элемента или нативного элемента`);
330
+ Object.defineProperty(this.prototype, property, {
331
+ configurable: true,
332
+ enumerable: true,
333
+ get() {
334
+ return this.getAttribute(attribute);
335
+ },
336
+ set(value) {
337
+ if (value === null || value === void 0) this.removeAttribute(attribute);
338
+ else this.setAttribute(attribute, String(value));
339
+ }
340
+ });
341
+ }
342
+ }
343
+ }
344
+ return TElementBase;
345
+ }
346
+ //#endregion
347
+ export { ElementBase };
@@ -0,0 +1,4 @@
1
+ export { useAdapter, useCollectionAdapter, joinBindings, type TBinding, type TBindingState, type TCollectionBinding, type TUpdateListener, } from './useAdapter';
2
+ export { ElementBase, type IElementBase, type IElementSpec, type TDescriptorFactory, type TElementClass, type TElementClassOf, type TElementOf, type TElementProps, type TElementType, type TOwnAttributes, type TNativeElementClass, } from './element.base';
3
+ export type { TRootSet, TRootSpec, TRootTeleport } from './root';
4
+ export { defineElement } from './defineElement';
@@ -0,0 +1,4 @@
1
+ import { defineElement } from "./defineElement.js";
2
+ import { joinBindings, useAdapter, useCollectionAdapter } from "./useAdapter.js";
3
+ import { ElementBase } from "./element.base.js";
4
+ export { ElementBase, defineElement, joinBindings, useAdapter, useCollectionAdapter };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Свет элемента — его содержимое из разметки, разложенное по точкам шаблона.
3
+ * Shadow DOM нет: тема — глобальные классы, и через теневую границу они не
4
+ * проходят. Слот — по атрибуту `slot` (назначенный шаблоном владельца
5
+ * главнее), слот без содержимого не задан, слот, которого шаблон не объявил,
6
+ * не выводится. Раскладывается один раз, переносом силами базы. AGENTS.md
7
+ * (Web Components), «Свет и слоты».
8
+ */
9
+ import type { TSlotTargets } from '../template';
10
+ export declare class TLight {
11
+ private readonly _host;
12
+ /** Заданные слоты; `null` — структура ещё не построена. */
13
+ private _slots;
14
+ private _targets;
15
+ /** Слоты, которые привязка сняла: их содержимое вне документа. */
16
+ private readonly _hidden;
17
+ private _content;
18
+ constructor(_host: HTMLElement);
19
+ get built(): boolean;
20
+ /** Узел слота по умолчанию; его нет (ProgressSpinner) — сам элемент. */
21
+ get content(): HTMLElement;
22
+ has(name: string): boolean;
23
+ /** Свет по слотам — до построения шаблона: обёртку слота он строит, только когда она нужна. */
24
+ gather(): ReadonlyMap<string, ChildNode[]>;
25
+ /** По точкам в порядке их объявления; образец уходит из документа, лишнее снимается. */
26
+ distribute(groups: ReadonlyMap<string, ChildNode[]>, targets: TSlotTargets): void;
27
+ /** Слот, который выводит привязка (`showSlot`): снятое уходит из документа. */
28
+ show(name: string, shown: boolean): void;
29
+ /** Узлы слота в его точке — копией списка; образец — пусто. */
30
+ slotted(name: string): readonly ChildNode[];
31
+ /** Новая копия образца на каждый вызов. */
32
+ sample(name: string): DocumentFragment | null;
33
+ }