@schukai/monster 3.51.4 → 3.52.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 (451) hide show
  1. package/CHANGELOG.md +706 -0
  2. package/README.md +16 -13
  3. package/example/components/form/button.mjs +10 -0
  4. package/example/components/form/select.mjs +25 -0
  5. package/example/components/form/tree-select.mjs +27 -0
  6. package/example/components/host/host.mjs +0 -0
  7. package/example/components/notify/message.mjs +4 -0
  8. package/example/components/notify/notify.mjs +4 -0
  9. package/example/components/state/log.mjs +0 -0
  10. package/example/components/state/state.mjs +0 -0
  11. package/package.json +6 -2
  12. package/source/components/constants.mjs +132 -0
  13. package/source/components/datatable/columnbar.mjs +310 -0
  14. package/source/components/datatable/constants.mjs +121 -0
  15. package/source/components/datatable/dataset.mjs +219 -0
  16. package/source/components/datatable/datasource/dom.mjs +186 -0
  17. package/source/components/datatable/datasource/namespace.mjs +13 -0
  18. package/source/components/datatable/datasource/rest.mjs +400 -0
  19. package/source/components/datatable/datasource.mjs +102 -0
  20. package/source/components/datatable/datatable/header.mjs +268 -0
  21. package/source/components/datatable/datatable/namespace.mjs +13 -0
  22. package/source/components/datatable/datatable.mjs +789 -0
  23. package/source/components/datatable/embedded-pagination.mjs +113 -0
  24. package/source/components/datatable/filter/abstract-base.mjs +31 -0
  25. package/source/components/datatable/filter/date-range.mjs +1041 -0
  26. package/source/components/datatable/filter/input.mjs +175 -0
  27. package/source/components/datatable/filter/namespace.mjs +13 -0
  28. package/source/components/datatable/filter/range.mjs +671 -0
  29. package/source/components/datatable/filter/select.mjs +65 -0
  30. package/source/components/datatable/filter/settings.mjs +116 -0
  31. package/source/components/datatable/filter-button.mjs +98 -0
  32. package/source/components/datatable/filter.mjs +929 -0
  33. package/source/components/datatable/namespace.mjs +11 -0
  34. package/source/components/datatable/pagination.mjs +456 -0
  35. package/source/components/datatable/style/column-bar.pcss +123 -0
  36. package/source/components/datatable/style/dataset.pcss +13 -0
  37. package/source/components/datatable/style/datasource.pcss +16 -0
  38. package/source/components/datatable/style/datatable.pcss +239 -0
  39. package/source/components/datatable/style/embedded-pagination.pcss +101 -0
  40. package/source/components/datatable/style/filter-button.pcss +22 -0
  41. package/source/components/datatable/style/filter-controls-defaults.pcss +46 -0
  42. package/source/components/datatable/style/filter-date-range.pcss +9 -0
  43. package/source/components/datatable/style/filter-range.pcss +5 -0
  44. package/source/components/datatable/style/filter.pcss +156 -0
  45. package/source/components/datatable/style/pagination.pcss +59 -0
  46. package/source/components/datatable/style/select-filter.pcss +27 -0
  47. package/source/components/datatable/stylesheet/column-bar.mjs +33 -0
  48. package/source/components/datatable/stylesheet/dataset.mjs +33 -0
  49. package/source/components/datatable/stylesheet/datasource.mjs +33 -0
  50. package/source/components/datatable/stylesheet/datatable.mjs +33 -0
  51. package/source/components/datatable/stylesheet/embedded-pagination.mjs +33 -0
  52. package/source/components/datatable/stylesheet/filter-button.mjs +33 -0
  53. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +33 -0
  54. package/source/components/datatable/stylesheet/filter-date-range.mjs +33 -0
  55. package/source/components/datatable/stylesheet/filter-range.mjs +33 -0
  56. package/source/components/datatable/stylesheet/filter.mjs +33 -0
  57. package/source/components/datatable/stylesheet/namespace.mjs +13 -0
  58. package/source/components/datatable/stylesheet/pagination.mjs +33 -0
  59. package/source/components/datatable/stylesheet/select-filter.mjs +33 -0
  60. package/source/components/datatable/util.mjs +60 -0
  61. package/source/components/form/action-button.mjs +262 -0
  62. package/source/components/form/api-button.mjs +515 -0
  63. package/source/components/form/button-bar.mjs +739 -0
  64. package/source/components/form/button.mjs +350 -0
  65. package/source/components/form/confirm-button.mjs +330 -0
  66. package/source/components/form/constants.mjs +111 -0
  67. package/source/components/form/context-help.mjs +123 -0
  68. package/source/components/form/events.mjs +84 -0
  69. package/source/components/form/form.mjs +601 -0
  70. package/source/components/form/message-state-button.mjs +396 -0
  71. package/source/components/form/namespace.mjs +13 -0
  72. package/source/components/form/popper-button.mjs +435 -0
  73. package/source/components/form/popper.mjs +487 -0
  74. package/source/components/form/reload.mjs +360 -0
  75. package/source/components/form/select.mjs +2314 -0
  76. package/source/components/form/shadow-reload.mjs +137 -0
  77. package/source/components/form/state-button.mjs +182 -0
  78. package/source/components/form/style/action-button.pcss +41 -0
  79. package/source/components/form/style/api-button.pcss +0 -0
  80. package/source/components/form/style/button-bar.pcss +51 -0
  81. package/source/components/form/style/button.pcss +8 -0
  82. package/source/components/form/style/confirm-button.pcss +17 -0
  83. package/source/components/form/style/context-help.pcss +16 -0
  84. package/source/components/form/style/form.pcss +10 -0
  85. package/source/components/form/style/message-state-button.pcss +10 -0
  86. package/source/components/form/style/popper-button.pcss +16 -0
  87. package/source/components/form/style/popper.pcss +8 -0
  88. package/source/components/form/style/select.pcss +265 -0
  89. package/source/components/form/style/state-button.pcss +116 -0
  90. package/source/components/form/style/tabs.pcss +170 -0
  91. package/source/components/form/style/tree-select.pcss +81 -0
  92. package/source/components/form/stylesheet/action-button.mjs +33 -0
  93. package/source/components/form/stylesheet/api-button.mjs +33 -0
  94. package/source/components/form/stylesheet/button-bar.mjs +33 -0
  95. package/source/components/form/stylesheet/button.mjs +33 -0
  96. package/source/components/form/stylesheet/confirm-button.mjs +33 -0
  97. package/source/components/form/stylesheet/context-help.mjs +33 -0
  98. package/source/components/form/stylesheet/form.mjs +33 -0
  99. package/source/components/form/stylesheet/message-state-button.mjs +33 -0
  100. package/source/components/form/stylesheet/namespace.mjs +13 -0
  101. package/source/components/form/stylesheet/popper-button.mjs +33 -0
  102. package/source/components/form/stylesheet/popper.mjs +33 -0
  103. package/source/components/form/stylesheet/select.mjs +33 -0
  104. package/source/components/form/stylesheet/state-button.mjs +33 -0
  105. package/source/components/form/stylesheet/tabs.mjs +33 -0
  106. package/source/components/form/stylesheet/tree-select.mjs +33 -0
  107. package/source/components/form/tabs.mjs +1011 -0
  108. package/source/components/form/template.mjs +373 -0
  109. package/source/components/form/tree-select.mjs +527 -0
  110. package/source/components/form/types/namespace.mjs +13 -0
  111. package/source/components/form/types/state.mjs +93 -0
  112. package/source/components/form/util/fetch.mjs +133 -0
  113. package/source/components/form/util/floating-ui.mjs +245 -0
  114. package/source/components/form/util/namespace.mjs +13 -0
  115. package/source/components/form/util/popper.mjs +49 -0
  116. package/source/components/host/call-button.mjs +236 -0
  117. package/source/components/host/collapse.mjs +526 -0
  118. package/source/components/host/config-manager.mjs +304 -0
  119. package/source/components/host/constants.mjs +18 -0
  120. package/source/components/host/details.mjs +268 -0
  121. package/source/components/host/events.mjs +131 -0
  122. package/source/components/host/host.mjs +420 -0
  123. package/source/components/host/namespace.mjs +13 -0
  124. package/source/components/host/overlay.mjs +339 -0
  125. package/source/components/host/style/call-button.pcss +36 -0
  126. package/source/components/host/style/collapse.pcss +67 -0
  127. package/source/components/host/style/config-manager.pcss +5 -0
  128. package/source/components/host/style/details.pcss +68 -0
  129. package/source/components/host/style/host.pcss +43 -0
  130. package/source/components/host/style/overlay.pcss +73 -0
  131. package/source/components/host/style/toggle-button.pcss +36 -0
  132. package/source/components/host/style/viewer.pcss +13 -0
  133. package/source/components/host/stylesheet/call-button.mjs +33 -0
  134. package/source/components/host/stylesheet/collapse.mjs +33 -0
  135. package/source/components/host/stylesheet/config-manager.mjs +33 -0
  136. package/source/components/host/stylesheet/details.mjs +33 -0
  137. package/source/components/host/stylesheet/host.mjs +33 -0
  138. package/source/components/host/stylesheet/namespace.mjs +13 -0
  139. package/source/components/host/stylesheet/overlay.mjs +33 -0
  140. package/source/components/host/stylesheet/toggle-button.mjs +33 -0
  141. package/source/components/host/stylesheet/viewer.mjs +33 -0
  142. package/source/components/host/toggle-button.mjs +88 -0
  143. package/source/components/host/util.mjs +23 -0
  144. package/source/components/host/viewer.mjs +309 -0
  145. package/source/components/namespace.mjs +14 -0
  146. package/source/components/notify/constants.mjs +15 -0
  147. package/source/components/notify/events.mjs +15 -0
  148. package/source/components/notify/message.mjs +374 -0
  149. package/source/components/notify/namespace.mjs +15 -0
  150. package/source/components/notify/notify.mjs +236 -0
  151. package/source/components/notify/style/message.pcss +57 -0
  152. package/source/components/notify/style/notify.pcss +118 -0
  153. package/source/components/notify/stylesheet/message.mjs +33 -0
  154. package/source/components/notify/stylesheet/namespace.mjs +15 -0
  155. package/source/components/notify/stylesheet/notify.mjs +33 -0
  156. package/source/components/state/log/entry.mjs +126 -0
  157. package/source/components/state/log/namespace.mjs +13 -0
  158. package/source/components/state/log.mjs +275 -0
  159. package/source/components/state/namespace.mjs +13 -0
  160. package/source/components/state/state.mjs +131 -0
  161. package/source/components/state/style/log.pcss +111 -0
  162. package/source/components/state/style/state.pcss +113 -0
  163. package/source/components/state/stylesheet/log.mjs +33 -0
  164. package/source/components/state/stylesheet/state.mjs +33 -0
  165. package/source/components/style/badge.pcss +92 -0
  166. package/source/components/style/border.pcss +77 -0
  167. package/source/components/style/button.pcss +105 -0
  168. package/source/components/style/card.pcss +108 -0
  169. package/source/components/style/color.pcss +257 -0
  170. package/source/components/style/common.pcss +103 -0
  171. package/source/components/style/control.pcss +11 -0
  172. package/source/components/style/data-grid.pcss +43 -0
  173. package/source/components/style/display.pcss +42 -0
  174. package/source/components/style/floating-ui.pcss +33 -0
  175. package/source/components/style/form.pcss +5 -0
  176. package/source/components/style/host.pcss +15 -0
  177. package/source/components/style/link.pcss +63 -0
  178. package/source/components/style/mixin/badge.pcss +18 -0
  179. package/source/components/style/mixin/button.pcss +54 -0
  180. package/source/components/style/mixin/form.pcss +247 -0
  181. package/source/components/style/mixin/hover.pcss +8 -0
  182. package/source/components/style/mixin/media.pcss +107 -0
  183. package/source/components/style/mixin/property.pcss +288 -0
  184. package/source/components/style/mixin/skeleton.pcss +26 -0
  185. package/source/components/style/mixin/spinner.pcss +24 -0
  186. package/source/components/style/mixin/typography.pcss +52 -0
  187. package/source/components/style/normalize.pcss +14 -0
  188. package/source/components/style/popper.pcss +78 -0
  189. package/source/components/style/property.pcss +17 -0
  190. package/source/components/style/ripple.pcss +14 -0
  191. package/source/components/style/skeleton.pcss +28 -0
  192. package/source/components/style/space.pcss +47 -0
  193. package/source/components/style/spinner.pcss +6 -0
  194. package/source/components/style/table.pcss +46 -0
  195. package/source/components/style/theme.pcss +119 -0
  196. package/source/components/style/typography.pcss +131 -0
  197. package/source/components/stylesheet/badge.mjs +33 -0
  198. package/source/components/stylesheet/border.mjs +33 -0
  199. package/source/components/stylesheet/button.mjs +33 -0
  200. package/source/components/stylesheet/card.mjs +33 -0
  201. package/source/components/stylesheet/color.mjs +33 -0
  202. package/source/components/stylesheet/common.mjs +33 -0
  203. package/source/components/stylesheet/control.mjs +33 -0
  204. package/source/components/stylesheet/data-grid.mjs +33 -0
  205. package/source/components/stylesheet/display.mjs +33 -0
  206. package/source/components/stylesheet/floating-ui.mjs +33 -0
  207. package/source/components/stylesheet/form.mjs +33 -0
  208. package/source/components/stylesheet/host.mjs +33 -0
  209. package/source/components/stylesheet/link.mjs +33 -0
  210. package/source/components/stylesheet/namespace.mjs +13 -0
  211. package/source/components/stylesheet/normalize.mjs +33 -0
  212. package/source/components/stylesheet/popper.mjs +33 -0
  213. package/source/components/stylesheet/property.mjs +33 -0
  214. package/source/components/stylesheet/ripple.mjs +33 -0
  215. package/source/components/stylesheet/skeleton.mjs +33 -0
  216. package/source/components/stylesheet/space.mjs +33 -0
  217. package/source/components/stylesheet/spinner.mjs +33 -0
  218. package/source/components/stylesheet/table.mjs +33 -0
  219. package/source/components/stylesheet/theme.mjs +33 -0
  220. package/source/components/stylesheet/tree-menu.mjs +33 -0
  221. package/source/components/stylesheet/typography.mjs +33 -0
  222. package/source/components/tree-menu/namespace.mjs +13 -0
  223. package/source/components/tree-menu/style/tree-menu.pcss +107 -0
  224. package/source/components/tree-menu/stylesheet/namespace.mjs +13 -0
  225. package/source/components/tree-menu/stylesheet/tree-menu.mjs +33 -0
  226. package/source/components/tree-menu/tree-menu.mjs +660 -0
  227. package/source/constraints/abstract.mjs +17 -24
  228. package/source/constraints/abstractoperator.mjs +27 -22
  229. package/source/constraints/andoperator.mjs +20 -17
  230. package/source/constraints/invalid.mjs +17 -17
  231. package/source/constraints/isarray.mjs +20 -20
  232. package/source/constraints/isobject.mjs +20 -20
  233. package/source/constraints/oroperator.mjs +45 -45
  234. package/source/constraints/valid.mjs +17 -17
  235. package/source/data/buildmap.mjs +108 -103
  236. package/source/data/buildtree.mjs +59 -57
  237. package/source/data/datasource/dom.mjs +80 -84
  238. package/source/data/datasource/namespace.mjs +1 -1
  239. package/source/data/datasource/server/restapi/data-fetch-error.mjs +27 -25
  240. package/source/data/datasource/server/restapi/writeerror.mjs +34 -32
  241. package/source/data/datasource/server/restapi.mjs +176 -177
  242. package/source/data/datasource/server/webconnect.mjs +150 -156
  243. package/source/data/datasource/server.mjs +58 -59
  244. package/source/data/datasource/storage/localstorage.mjs +25 -24
  245. package/source/data/datasource/storage/sessionstorage.mjs +28 -25
  246. package/source/data/datasource/storage.mjs +74 -73
  247. package/source/data/datasource.mjs +176 -167
  248. package/source/data/diff.mjs +98 -97
  249. package/source/data/extend.mjs +42 -42
  250. package/source/data/pathfinder.mjs +301 -288
  251. package/source/data/pipe.mjs +36 -36
  252. package/source/data/transformer.mjs +742 -726
  253. package/source/dom/assembler.mjs +44 -44
  254. package/source/dom/attributes.mjs +142 -122
  255. package/source/dom/constants.mjs +62 -58
  256. package/source/dom/customcontrol.mjs +299 -299
  257. package/source/dom/customelement.mjs +843 -806
  258. package/source/dom/dimension.mjs +56 -46
  259. package/source/dom/events.mjs +74 -69
  260. package/source/dom/focusmanager.mjs +175 -175
  261. package/source/dom/locale.mjs +28 -28
  262. package/source/dom/ready.mjs +13 -13
  263. package/source/dom/resource/data.mjs +117 -111
  264. package/source/dom/resource/link/stylesheet.mjs +16 -16
  265. package/source/dom/resource/link.mjs +94 -96
  266. package/source/dom/resource/script.mjs +72 -74
  267. package/source/dom/resource.mjs +174 -172
  268. package/source/dom/resourcemanager.mjs +152 -156
  269. package/source/dom/slotted.mjs +78 -80
  270. package/source/dom/template.mjs +126 -112
  271. package/source/dom/theme.mjs +35 -35
  272. package/source/dom/updater.mjs +673 -651
  273. package/source/dom/util/extract-keys.mjs +34 -22
  274. package/source/dom/util/init-options-from-attributes.mjs +46 -38
  275. package/source/dom/util/namespace.mjs +13 -0
  276. package/source/dom/util/set-option-from-attribute.mjs +35 -29
  277. package/source/dom/util.mjs +112 -81
  278. package/source/dom/worker/factory.mjs +83 -83
  279. package/source/i18n/formatter.mjs +75 -73
  280. package/source/i18n/locale.mjs +146 -144
  281. package/source/i18n/provider.mjs +70 -64
  282. package/source/i18n/providers/embed.mjs +136 -127
  283. package/source/i18n/providers/fetch.mjs +84 -76
  284. package/source/i18n/translations.mjs +205 -195
  285. package/source/logging/handler/console.mjs +36 -36
  286. package/source/logging/handler.mjs +140 -140
  287. package/source/logging/logentry.mjs +25 -25
  288. package/source/logging/logger.mjs +177 -175
  289. package/source/math/random.mjs +63 -59
  290. package/source/monster.mjs +226 -217
  291. package/source/net/webconnect/message.mjs +31 -31
  292. package/source/net/webconnect.mjs +278 -271
  293. package/source/text/bracketed-key-value-hash.mjs +182 -179
  294. package/source/text/formatter.mjs +235 -210
  295. package/source/text/generate-range-comparison-expression.mjs +56 -34
  296. package/source/text/namespace.mjs +1 -1
  297. package/source/types/base.mjs +69 -61
  298. package/source/types/basewithoptions.mjs +46 -46
  299. package/source/types/binary.mjs +20 -20
  300. package/source/types/dataurl.mjs +96 -90
  301. package/source/types/global.mjs +45 -39
  302. package/source/types/id.mjs +25 -25
  303. package/source/types/internal.mjs +115 -114
  304. package/source/types/is.mjs +56 -40
  305. package/source/types/mediatype.mjs +119 -119
  306. package/source/types/namespace.mjs +1 -1
  307. package/source/types/node.mjs +160 -150
  308. package/source/types/nodelist.mjs +94 -96
  309. package/source/types/noderecursiveiterator.mjs +50 -50
  310. package/source/types/observablequeue.mjs +73 -73
  311. package/source/types/observer.mjs +104 -104
  312. package/source/types/observerlist.mjs +66 -66
  313. package/source/types/proxyobserver.mjs +210 -210
  314. package/source/types/queue.mjs +63 -63
  315. package/source/types/randomid.mjs +13 -13
  316. package/source/types/regex.mjs +3 -1
  317. package/source/types/stack.mjs +64 -64
  318. package/source/types/tokenlist.mjs +206 -205
  319. package/source/types/typeof.mjs +12 -10
  320. package/source/types/uniquequeue.mjs +48 -48
  321. package/source/types/uuid.mjs +32 -32
  322. package/source/types/validate.mjs +67 -67
  323. package/source/types/version.mjs +115 -105
  324. package/source/util/clone.mjs +103 -91
  325. package/source/util/comparator.mjs +97 -97
  326. package/source/util/deadmansswitch.mjs +40 -44
  327. package/source/util/freeze.mjs +10 -9
  328. package/source/util/namespace.mjs +1 -1
  329. package/source/util/processing.mjs +104 -105
  330. package/source/util/runtime.mjs +56 -44
  331. package/source/util/trimspaces.mjs +24 -24
  332. package/test/cases/components/form/button.mjs +122 -0
  333. package/test/cases/components/form/confirm-button.mjs +127 -0
  334. package/test/cases/components/form/form.mjs +317 -0
  335. package/test/cases/components/form/reload.mjs +188 -0
  336. package/test/cases/components/form/select.mjs +229 -0
  337. package/test/cases/components/form/state-button.mjs +130 -0
  338. package/test/cases/components/form/tabs.mjs +98 -0
  339. package/test/cases/components/form/template.mjs +189 -0
  340. package/test/cases/components/form/tree-select.mjs +216 -0
  341. package/test/cases/components/host/details.mjs +68 -0
  342. package/test/cases/components/host/host.mjs +70 -0
  343. package/test/cases/components/host/overlay.mjs +60 -0
  344. package/test/cases/components/host/util.mjs +79 -0
  345. package/test/cases/components/notify/message.mjs +39 -0
  346. package/test/cases/components/notify/notify.mjs +89 -0
  347. package/test/cases/constraint/abstractoperator.mjs +2 -2
  348. package/test/cases/constraint/andoperator.mjs +3 -3
  349. package/test/cases/constraint/invalid.mjs +1 -1
  350. package/test/cases/constraint/isarray.mjs +1 -1
  351. package/test/cases/constraint/isobject.mjs +1 -1
  352. package/test/cases/constraint/oroperator.mjs +3 -3
  353. package/test/cases/constraint/valid.mjs +1 -1
  354. package/test/cases/data/buildmap.mjs +1 -1
  355. package/test/cases/data/buildtree.mjs +2 -2
  356. package/test/cases/data/datasource/dom.mjs +1 -1
  357. package/test/cases/data/datasource/server/restapi.mjs +2 -2
  358. package/test/cases/data/datasource/server/websocket.mjs +1 -1
  359. package/test/cases/data/datasource/server.mjs +1 -1
  360. package/test/cases/data/datasource/storage/localstorage.mjs +1 -1
  361. package/test/cases/data/datasource/storage/sessionstorage.mjs +1 -1
  362. package/test/cases/data/datasource.mjs +1 -1
  363. package/test/cases/data/diff.mjs +2 -2
  364. package/test/cases/data/extend.mjs +1 -1
  365. package/test/cases/data/pathfinder.mjs +1 -1
  366. package/test/cases/data/pipe.mjs +2 -2
  367. package/test/cases/data/transformer.mjs +3 -4
  368. package/test/cases/dom/assembler.mjs +1 -1
  369. package/test/cases/dom/attributes.mjs +1 -1
  370. package/test/cases/dom/customcontrol.mjs +8 -7
  371. package/test/cases/dom/customelement-initfromscripthost.mjs +6 -6
  372. package/test/cases/dom/customelement.mjs +7 -7
  373. package/test/cases/dom/dimension.mjs +4 -4
  374. package/test/cases/dom/events.mjs +1 -1
  375. package/test/cases/dom/find.mjs +1 -1
  376. package/test/cases/dom/focusmanager.mjs +1 -1
  377. package/test/cases/dom/locale.mjs +2 -2
  378. package/test/cases/dom/ready.mjs +1 -1
  379. package/test/cases/dom/resource/data.mjs +3 -3
  380. package/test/cases/dom/resource/link/stylesheet.mjs +3 -3
  381. package/test/cases/dom/resource/link.mjs +3 -3
  382. package/test/cases/dom/resource/script.mjs +3 -3
  383. package/test/cases/dom/resource.mjs +1 -1
  384. package/test/cases/dom/resourcemanager.mjs +1 -1
  385. package/test/cases/dom/slotted-nodes.mjs +1 -1
  386. package/test/cases/dom/template.mjs +2 -2
  387. package/test/cases/dom/theme.mjs +2 -2
  388. package/test/cases/dom/updater.mjs +4 -4
  389. package/test/cases/dom/util/extract-keys.mjs +1 -1
  390. package/test/cases/dom/util/init-options-from-attributes.mjs +1 -1
  391. package/test/cases/dom/util.mjs +2 -2
  392. package/test/cases/dom/worker/factory.mjs +2 -2
  393. package/test/cases/i18n/formatter.mjs +2 -2
  394. package/test/cases/i18n/locale.mjs +1 -1
  395. package/test/cases/i18n/provider.mjs +4 -4
  396. package/test/cases/i18n/providers/embed.mjs +3 -3
  397. package/test/cases/i18n/providers/fetch.mjs +3 -3
  398. package/test/cases/i18n/translations.mjs +3 -3
  399. package/test/cases/logging/handler/console.mjs +3 -3
  400. package/test/cases/logging/handler.mjs +3 -3
  401. package/test/cases/logging/logentry.mjs +1 -1
  402. package/test/cases/logging/logger.mjs +1 -1
  403. package/test/cases/math/random.mjs +1 -2
  404. package/test/cases/monster.mjs +2 -2
  405. package/test/cases/net/webconnect/message.mjs +1 -2
  406. package/test/cases/net/webconnect.mjs +3 -3
  407. package/test/cases/text/bracketed-key-value-hash.mjs +1 -1
  408. package/test/cases/text/formatter.mjs +1 -1
  409. package/test/cases/text/util.mjs +1 -1
  410. package/test/cases/types/base.mjs +2 -2
  411. package/test/cases/types/basewithoptions.mjs +1 -1
  412. package/test/cases/types/binary.mjs +1 -1
  413. package/test/cases/types/dataurl.mjs +1 -1
  414. package/test/cases/types/global.mjs +1 -1
  415. package/test/cases/types/id.mjs +1 -1
  416. package/test/cases/types/internal.mjs +2 -2
  417. package/test/cases/types/is.mjs +2 -2
  418. package/test/cases/types/mediatype.mjs +1 -1
  419. package/test/cases/types/node.mjs +4 -4
  420. package/test/cases/types/nodelist.mjs +2 -2
  421. package/test/cases/types/noderecursiveiterator.mjs +3 -3
  422. package/test/cases/types/observablequeue.mjs +2 -2
  423. package/test/cases/types/observer.mjs +1 -1
  424. package/test/cases/types/observerlist.mjs +2 -2
  425. package/test/cases/types/proxyobserver.mjs +4 -4
  426. package/test/cases/types/queue.mjs +1 -1
  427. package/test/cases/types/randomid.mjs +1 -1
  428. package/test/cases/types/regex.mjs +1 -1
  429. package/test/cases/types/stack.mjs +1 -1
  430. package/test/cases/types/tokenlist.mjs +1 -1
  431. package/test/cases/types/typeof.mjs +2 -2
  432. package/test/cases/types/uniquequeue.mjs +1 -1
  433. package/test/cases/types/uuid.mjs +1 -1
  434. package/test/cases/types/validate.mjs +3 -3
  435. package/test/cases/types/version.mjs +1 -1
  436. package/test/cases/util/clone.mjs +1 -1
  437. package/test/cases/util/comparator.mjs +1 -1
  438. package/test/cases/util/deadmansswitch.mjs +1 -1
  439. package/test/cases/util/freeze.mjs +1 -1
  440. package/test/cases/util/processing.mjs +1 -1
  441. package/test/cases/util/trimspaces.mjs +1 -1
  442. package/test/util/chai-dom.mjs +2 -2
  443. package/test/util/intersection-mock.mjs +69 -0
  444. package/test/util/jsdom.mjs +43 -27
  445. package/test/util/localstorage.mjs +1 -0
  446. package/test/util/resize-observer.mjs +29 -0
  447. package/test/util/websocket.mjs +5 -2
  448. package/test/web/import.js +92 -73
  449. package/test/web/test.html +28 -5
  450. package/test/web/tests.js +29430 -15209
  451. package/CHANGELOG +0 -438
@@ -0,0 +1,373 @@
1
+ /**
2
+ * Copyright schukai GmbH and contributors 2023. All Rights Reserved.
3
+ * Node module: @schukai/monster
4
+ * This file is licensed under the AGPLv3 License.
5
+ * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
+ */
7
+ import { instanceSymbol } from "../../constants.mjs";
8
+ import { addAttributeToken } from "../../dom/attributes.mjs";
9
+ import {
10
+ ATTRIBUTE_ERRORMESSAGE,
11
+ ATTRIBUTE_ROLE,
12
+ } from "../../dom/constants.mjs";
13
+ import {
14
+ assembleMethodSymbol,
15
+ attributeObserverSymbol,
16
+ CustomElement,
17
+ initMethodSymbol,
18
+ registerCustomElement,
19
+ } from "../../dom/customelement.mjs";
20
+ import { isArray, isString } from "../../types/is.mjs";
21
+ import { ATTRIBUTE_FORM_RELOAD, ATTRIBUTE_FORM_URL } from "./constants.mjs";
22
+ import { loadAndAssignContent } from "./util/fetch.mjs";
23
+
24
+ export { Template };
25
+
26
+ /**
27
+ * @private
28
+ * @type {symbol}
29
+ */
30
+ const intersectionObserverWasInitialized = Symbol("wasInitialized");
31
+
32
+ /**
33
+ * This CustomElement `monster-template` reloads a content and adds it to the ShadowRoot.
34
+ * The content is set to not visible,
35
+ *
36
+ * <img src="./images/template.png">
37
+ *
38
+ * You can create this control either by specifying the HTML tag `<monster-template />` directly in the HTML or using
39
+ * Javascript via the `document.createElement('monster-template');` method.
40
+ *
41
+ * ```html
42
+ * <monster-template></monster-template>
43
+ * ```
44
+ *
45
+ * Or you can create this CustomControl directly in Javascript:
46
+ *
47
+ * ```js
48
+ * import {Template} from '@schukai/component-form/source/template.js';
49
+ * document.createElement('monster-template');
50
+ * ```
51
+ *
52
+ * The content will not be loaded until this element is visible. If the element is invisible again and becomes visible again,
53
+ * the content is reloaded as well. you can disable this behavior by setting `reload=onshow`. *
54
+ *
55
+ * @startuml template.png
56
+ * skinparam monochrome true
57
+ * skinparam shadowing false
58
+ * HTMLElement <|-- CustomElement
59
+ * CustomElement <|-- CustomControl
60
+ * CustomControl <|-- Template
61
+ * @enduml
62
+ *
63
+ * @since 1.11.0
64
+ * @copyright schukai GmbH
65
+ * @memberOf Monster.Components.Form
66
+ * @summary A template control
67
+ * @fires Monster.Components.Form.event:monster-fetched
68
+ */
69
+ class Template extends CustomElement {
70
+ /**
71
+ * This method is called by the `instanceof` operator.
72
+ * @returns {symbol}
73
+ * @since 2.1.0
74
+ */
75
+ static get [instanceSymbol]() {
76
+ return Symbol.for("@schukai/component-form/template");
77
+ }
78
+
79
+ /**
80
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
81
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
82
+ *
83
+ * The individual configuration values can be found in the table.
84
+ *
85
+ * @property {Object} templates Template definitions
86
+ * @property {string} templates.main Main template
87
+ * @property {string} url=undefined
88
+ * @property {string} reload=undefined currently the only value defined is `onshow`. Currently the only value defined is onshow. this removes the IntersectionObserver. this means that the content is only loaded once. reloading of the content does not occur.
89
+ * @property {Monster.Components.Form.Processor[]} processors
90
+ * @property {Object} fetch Fetch [see Using Fetch mozilla.org](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)
91
+ * @property {String} fetch.redirect=error
92
+ * @property {String} fetch.method=GET
93
+ * @property {String} fetch.mode=same-origin
94
+ * @property {String} fetch.credentials=same-origin
95
+ * @property {Object} fetch.headers={"accept":"text/html"}}
96
+ */
97
+ get defaults() {
98
+ return Object.assign(
99
+ {},
100
+ super.defaults,
101
+ {
102
+ templates: {
103
+ main: getTemplate(),
104
+ },
105
+ url: undefined,
106
+ reload: undefined,
107
+ processors: [],
108
+ fetch: {
109
+ redirect: "error",
110
+ method: "GET",
111
+ mode: "same-origin",
112
+ credentials: "same-origin",
113
+ headers: {
114
+ accept: "text/html",
115
+ },
116
+ },
117
+ },
118
+ initOptionsFromArguments.call(this),
119
+ );
120
+ }
121
+
122
+ /**
123
+ * This method determines which attributes are to be monitored by `attributeChangedCallback()`.
124
+ *
125
+ * @return {string[]}
126
+ */
127
+ static get observedAttributes() {
128
+ const list = super.observedAttributes;
129
+ list.push(ATTRIBUTE_FORM_URL);
130
+ return list;
131
+ }
132
+
133
+ /**
134
+ *
135
+ */
136
+ [initMethodSymbol]() {;
137
+ super[initMethodSymbol]();
138
+
139
+ // data-monster-options
140
+ this[attributeObserverSymbol][ATTRIBUTE_FORM_URL] = (url) => {
141
+ if (this.hasAttribute(ATTRIBUTE_FORM_URL)) {
142
+ this.setOption("url", new URL(url, document.location).toString());
143
+ } else {
144
+ this.setOption("url", undefined);
145
+ }
146
+ };
147
+ }
148
+
149
+ /**
150
+ * This method is called internal and should not be called directly.
151
+ * @throws {Error} missing default slot
152
+ * @throws {Error} no shadow-root is defined
153
+ * @throws {Error} missing url
154
+ * @throws {Error} we won't be able to read the data
155
+ * @throws {Error} request failed
156
+ * @throws {Error} not found
157
+ * @throws {Error} undefined status or type
158
+ * @fires Monster.Components.Form.event:monster-fetched
159
+ * @return {Monster.Components.Form.Form}
160
+ */
161
+ [assembleMethodSymbol]() {;
162
+ super[assembleMethodSymbol]();
163
+ initIntersectionObserver.call(this);
164
+ }
165
+
166
+ /**
167
+ * This method is called internal and should not be called directly.
168
+ *
169
+ * @return {CSSStyleSheet[]}
170
+ */
171
+ static getCSSStyleSheet() {
172
+ return [];
173
+ }
174
+
175
+ /**
176
+ * This method is called internal and should not be called directly.
177
+ *
178
+ * @return {string}
179
+ */
180
+ static getTag() {
181
+ return "monster-template";
182
+ }
183
+
184
+ /**
185
+ * load content from url
186
+ *
187
+ * It is important to know that with this function the loading is executed
188
+ * directly. it is loaded as well when the element is not visible.
189
+ *
190
+ * @param {string|undefined} url
191
+ */
192
+ fetch(url) {
193
+ if (isString(url) || url instanceof URL) {
194
+ this.setAttribute(ATTRIBUTE_FORM_URL, `${url}`);
195
+ }
196
+
197
+ return loadContent.call(this);
198
+ }
199
+ }
200
+
201
+ /**
202
+ * @typedef {Object} Processor
203
+ * @property {String} destination
204
+ * @property {String} source
205
+ * @memberOf Monster.Components.Form
206
+ * @since 1.11.8
207
+ */
208
+
209
+ /**
210
+ * This attribute can be used to pass a URL to this select.
211
+ *
212
+ * ```
213
+ * <monster-select data-monster-url="https://example.com/"></monster-select>
214
+ * ```
215
+ *
216
+ * @private
217
+ * @return {object}
218
+ */
219
+ function initOptionsFromArguments() {;
220
+ const options = {};
221
+
222
+ const url = this.getAttribute(ATTRIBUTE_FORM_URL);
223
+
224
+ if (isString(url)) {
225
+ options["url"] = new URL(url, document.location).toString();
226
+ }
227
+
228
+ if (this.hasAttribute(ATTRIBUTE_FORM_RELOAD)) {
229
+ options["reload"] = this.getAttribute(ATTRIBUTE_FORM_RELOAD).toLowerCase();
230
+ }
231
+
232
+ return options;
233
+ }
234
+
235
+ /**
236
+ * @private
237
+ * @throws {Error} missing default slot
238
+ * @throws {Error} no shadow-root is defined
239
+ * @throws {Error} missing url
240
+ * @throws {Error} we won't be able to read the data
241
+ * @throws {Error} request failed
242
+ * @throws {Error} not found
243
+ * @throws {Error} undefined status or type
244
+ * @fires Monster.Components.Form.event:monster-fetched
245
+ */
246
+ function initIntersectionObserver() {;
247
+
248
+ if (this[intersectionObserverWasInitialized] === true) {
249
+ return;
250
+ }
251
+
252
+ this[intersectionObserverWasInitialized] = true;
253
+
254
+ const options = {
255
+ threshold: [0.5],
256
+ };
257
+
258
+ const callback = (entries, observer) => {
259
+ for (const [, entry] of entries.entries()) {
260
+ if (entry.isIntersecting === true) {
261
+ if (this.getOption("reload") === "onshow") {
262
+ observer.disconnect();
263
+ }
264
+
265
+ try {
266
+ loadContent.call(this);
267
+ } catch (e) {
268
+ addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.toString());
269
+ }
270
+ }
271
+ }
272
+ };
273
+
274
+ const observer = new IntersectionObserver(callback, options);
275
+ observer.observe(this);
276
+ }
277
+
278
+ /**
279
+ * @private
280
+ * @throws {Error} missing default slot
281
+ * @throws {Error} no shadow-root is defined
282
+ * @throws {Error} missing url
283
+ * @throws {Error} we won't be able to read the data
284
+ * @throws {Error} request failed
285
+ * @throws {Error} not found
286
+ * @throws {Error} undefined status or type
287
+ * @throws {Error} client error
288
+ * @throws {Error} undefined status or type
289
+ * @throws {TypeError} value is not an instance of
290
+ * @throws {TypeError} value is not a string
291
+ * @fires Monster.Components.Form.event:monster-fetched
292
+ */
293
+ function loadContent() {;
294
+
295
+ if (!this.shadowRoot) {
296
+ throw new Error("no shadow-root is defined");
297
+ }
298
+
299
+ const url = this.getOption("url", undefined);
300
+ if (!isString(url) || url === "") {
301
+ throw new Error("missing url");
302
+ }
303
+
304
+ const options = this.getOption("fetch", {});
305
+
306
+ const defaultSlot = this.shadowRoot.querySelector("slot[name=default]");
307
+ if (!(defaultSlot instanceof HTMLElement)) {
308
+ throw new Error("missing default slot");
309
+ }
310
+
311
+ defaultSlot.style.display = "block";
312
+
313
+ let container = this.shadowRoot.querySelector(
314
+ `[${ATTRIBUTE_ROLE}=container]`,
315
+ );
316
+ if (!(container instanceof HTMLElement)) {
317
+ container = document.createElement("div");
318
+ container.style.display = "none";
319
+ container.setAttribute(ATTRIBUTE_ROLE, "container");
320
+ this.shadowRoot.appendChild(container);
321
+ }
322
+
323
+ loadAndAssignContent(container, url, options)
324
+ .then(() => {
325
+ defaultSlot.style.display = "none";
326
+ runProcessors.call(this);
327
+ })
328
+ .catch((e) => {
329
+ throw e;
330
+ });
331
+ }
332
+
333
+ /**
334
+ * @private
335
+ * @return {runProcessors}
336
+ */
337
+ function runProcessors() {;
338
+
339
+ const processors = this.getOption("processors");
340
+ if (!isArray(processors)) return;
341
+
342
+ for (const [, processor] of processors.entries()) {
343
+ const source = processor?.source;
344
+ const destination = processor?.destination;
345
+
346
+ if (isString(source) && isString(destination)) {
347
+ const sourceNode = this.shadowRoot.querySelector(source);
348
+ const destinationNode = document.querySelector(destination);
349
+
350
+ if (
351
+ sourceNode instanceof HTMLElement &&
352
+ destinationNode instanceof HTMLElement
353
+ ) {
354
+ destinationNode.innerHTML = sourceNode.cloneNode(true).innerHTML;
355
+ }
356
+ }
357
+ }
358
+
359
+ return this;
360
+ }
361
+
362
+ /**
363
+ * @private
364
+ * @return {string}
365
+ */
366
+ function getTemplate() {
367
+ // language=HTML
368
+ return `
369
+ <slot name="default"></slot>
370
+ `;
371
+ }
372
+
373
+ registerCustomElement(Template);