@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,360 @@
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 { 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 { Reload };
25
+
26
+ /**
27
+ * @private
28
+ * @type {symbol}
29
+ */
30
+ const intersectionObserverWasInitialized = Symbol("wasInitialized");
31
+
32
+ /**
33
+ * This CustomControl reloads the content of a url and embeds it into the dom.
34
+ *
35
+ * <img src="./images/reload.png">
36
+ *
37
+ * You can create this control either by specifying the HTML tag `<monster-reload />` directly in the HTML or using
38
+ * Javascript via the `document.createElement('monster-reload');` method.
39
+ *
40
+ * ```html
41
+ * <monster-reload></monster-reload>
42
+ *
43
+ * <script type="module">
44
+ * import {Reload} from '@schukai/component-form/source/reload.js';
45
+ * document.createElement('monster-reload');
46
+ * </script>
47
+ * ```
48
+ *
49
+ * A simple configuration can look like this
50
+ *
51
+ * ```html
52
+ * <script id="config"
53
+ * type="application/json">
54
+ * {
55
+ * "url": "./content.html",
56
+ * }
57
+ * </script>
58
+ *
59
+ * <monster-reload data-monster-options-selector="#config">
60
+ * </monster-reload>
61
+ * ```
62
+ *
63
+ * If you want to display a loader, you can insert a div with the attribute `data-monster-role="container"`.
64
+ * The content of this div will be replaced by the loaded code.
65
+ *
66
+ * ```html
67
+ * <monster-reload data-monster-options-selector="#config">
68
+ * <div data-monster-role="container">
69
+ * LOADER ...
70
+ * </div>
71
+ * </monster-reload>
72
+ * ```
73
+ *
74
+ * If you need additional structure, you can simply specify it.
75
+ *
76
+ * ```html
77
+ * <monster-reload data-monster-options-selector="#config">
78
+ * <div class="row">
79
+ * <div class="col" data-monster-role="container">
80
+ * LOADER ...
81
+ * </div>
82
+ * </div>
83
+ * </monster-reload>
84
+ * ```
85
+ *
86
+ * @startuml reload.png
87
+ * skinparam monochrome true
88
+ * skinparam shadowing false
89
+ * HTMLElement <|-- CustomElement
90
+ * CustomElement <|-- CustomControl
91
+ * CustomControl <|-- Reload
92
+ * @enduml
93
+ *
94
+ * @since 1.13.0
95
+ * @copyright schukai GmbH
96
+ * @memberOf Monster.Components.Form
97
+ * @summary A reload control
98
+ * @fires Monster.Components.Form.event:monster-fetched
99
+ */
100
+ class Reload extends CustomElement {
101
+ /**
102
+ * This method is called by the `instanceof` operator.
103
+ * @returns {symbol}
104
+ * @since 2.1.0
105
+ */
106
+ static get [instanceSymbol]() {
107
+ return Symbol.for("@schukai/component-form/reload");
108
+ }
109
+
110
+ /**
111
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
112
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
113
+ *
114
+ * The individual configuration values can be found in the table.
115
+ *
116
+ * @property {Object} templates Template definitions
117
+ * @property {string} templates.main Main template
118
+ * @property {string} url=undefined
119
+ * @property {string} reload=undefined currently the values defined are `onshow` and `always`. The default `onshow` removes the IntersectionObserver. This means that the content is only loaded once. reloading of the content does not occur.
120
+ * @property {string} filter=undefined dom selectors to search for elements, if undefined then everything is taken
121
+ * @property {Monster.Components.Form.Processor[]} processors
122
+ * @property {Object} fetch Fetch [see Using Fetch mozilla.org](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)
123
+ * @property {String} fetch.redirect=error
124
+ * @property {String} fetch.method=GET
125
+ * @property {String} fetch.mode=same-origin
126
+ * @property {String} fetch.credentials=same-origin
127
+ * @property {Object} fetch.headers={"accept":"text/html"}}
128
+ */
129
+ get defaults() {
130
+ return Object.assign(
131
+ {},
132
+ super.defaults,
133
+ {
134
+ templates: {
135
+ main: getTemplate.call(this),
136
+ },
137
+ shadowMode: false,
138
+ url: undefined,
139
+ reload: "onshow",
140
+ filter: undefined,
141
+ fetch: {
142
+ redirect: "error",
143
+ method: "GET",
144
+ mode: "same-origin",
145
+ credentials: "same-origin",
146
+ headers: {
147
+ accept: "text/html",
148
+ },
149
+ },
150
+ },
151
+ initOptionsFromArguments.call(this),
152
+ );
153
+ }
154
+
155
+ /**
156
+ * This method determines which attributes are to be monitored by `attributeChangedCallback()`.
157
+ *
158
+ * @return {string[]}
159
+ */
160
+ static get observedAttributes() {
161
+ const list = super.observedAttributes;
162
+ list.push(ATTRIBUTE_FORM_URL);
163
+ return list;
164
+ }
165
+
166
+ /**
167
+ *
168
+ */
169
+ [initMethodSymbol]() {;
170
+ super[initMethodSymbol]();
171
+
172
+ // data-monster-options
173
+ this[attributeObserverSymbol][ATTRIBUTE_FORM_URL] = (url) => {
174
+ if (this.hasAttribute(ATTRIBUTE_FORM_URL)) {
175
+ this.setOption("url", new URL(url, document.location).toString());
176
+ } else {
177
+ this.setOption("url", undefined);
178
+ }
179
+ };
180
+ }
181
+
182
+ /**
183
+ * This method is called internal and should not be called directly.
184
+ * @throws {Error} missing default slot
185
+ * @throws {Error} no shadow-root is defined
186
+ * @throws {Error} missing url
187
+ * @throws {Error} we won't be able to read the data
188
+ * @throws {Error} request failed
189
+ * @throws {Error} not found
190
+ * @throws {Error} undefined status or type
191
+ * @fires Monster.Components.Form.event:monster-fetched
192
+ * @return {Monster.Components.Form.Form}
193
+ */
194
+ [assembleMethodSymbol]() {;
195
+ super[assembleMethodSymbol]();
196
+ initIntersectionObserver.call(this);
197
+ }
198
+
199
+ /**
200
+ * This method is called internal and should not be called directly.
201
+ *
202
+ * @return {string}
203
+ */
204
+ static getTag() {
205
+ return "monster-reload";
206
+ }
207
+
208
+ /**
209
+ * load content from url
210
+ *
211
+ * It is important to know that with this function the loading is executed
212
+ * directly. it is loaded as well when the element is not visible.
213
+ *
214
+ * @param {string|undefined} url
215
+ */
216
+ fetch(url) {
217
+ if (isString(url) || url instanceof URL) {
218
+ this.setAttribute(ATTRIBUTE_FORM_URL, `${url}`);
219
+ }
220
+
221
+ return loadContent.call(this);
222
+ }
223
+ }
224
+
225
+ /**
226
+ * This attribute can be used to pass a URL to this select.
227
+ *
228
+ * ```
229
+ * <monster-select data-monster-url="https://example.com/"></monster-select>
230
+ * ```
231
+ *
232
+ * @private
233
+ * @return {object}
234
+ */
235
+ function initOptionsFromArguments() {;
236
+ const options = {};
237
+
238
+ const url = this.getAttribute(ATTRIBUTE_FORM_URL);
239
+
240
+ if (isString(url)) {
241
+ options["url"] = new URL(url, document.location).toString();
242
+ }
243
+
244
+ if (this.hasAttribute(ATTRIBUTE_FORM_RELOAD)) {
245
+ options["reload"] = this.getAttribute(ATTRIBUTE_FORM_RELOAD).toLowerCase();
246
+ }
247
+
248
+ return options;
249
+ }
250
+
251
+ /**
252
+ * @private
253
+ * @throws {Error} missing default slot
254
+ * @throws {Error} no shadow-root is defined
255
+ * @throws {Error} missing url
256
+ * @throws {Error} we won't be able to read the data
257
+ * @throws {Error} request failed
258
+ * @throws {Error} not found
259
+ * @throws {Error} undefined status or type
260
+ * @fires Monster.Components.Form.event:monster-fetched
261
+ */
262
+ function initIntersectionObserver() {;
263
+
264
+ if (this[intersectionObserverWasInitialized] === true) {
265
+ return;
266
+ }
267
+
268
+ this[intersectionObserverWasInitialized] = true;
269
+
270
+ const options = {
271
+ threshold: [0.5],
272
+ };
273
+
274
+ const callback = (entries, observer) => {
275
+ for (const [, entry] of entries.entries()) {
276
+ if (entry.isIntersecting === true) {
277
+ // undefined or always do the same
278
+ if (this.getOption("reload") === "onshow") {
279
+ observer.disconnect();
280
+ }
281
+
282
+ try {
283
+ loadContent.call(this).catch((e) => {
284
+ addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.toString());
285
+ });
286
+ } catch (e) {
287
+ addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.toString());
288
+ }
289
+ }
290
+ }
291
+ };
292
+
293
+ const observer = new IntersectionObserver(callback, options);
294
+ observer.observe(this);
295
+ }
296
+
297
+ /**
298
+ * @private
299
+ * @throws {Error} missing default slot
300
+ * @throws {Error} no shadow-root is defined
301
+ * @throws {Error} missing url
302
+ * @throws {Error} we won't be able to read the data
303
+ * @throws {Error} request failed
304
+ * @throws {Error} not found
305
+ * @throws {Error} undefined status or type
306
+ * @throws {Error} client error
307
+ * @throws {Error} undefined status or type
308
+ * @throws {TypeError} value is not an instance of
309
+ * @throws {TypeError} value is not a string
310
+ * @fires Monster.Components.Form.event:monster-fetched
311
+ * @return {Promise}
312
+ */
313
+ function loadContent() {;
314
+
315
+ const url = this.getOption("url", undefined);
316
+ if (!isString(url) || url === "") {
317
+ throw new Error("missing url");
318
+ }
319
+
320
+ const options = this.getOption("fetch", {});
321
+
322
+ let parentNode = this;
323
+ if (this.shadowRoot) {
324
+ parentNode = this.shadowRoot;
325
+ }
326
+
327
+ let container = parentNode.querySelector(`[${ATTRIBUTE_ROLE}=container]`);
328
+ let currentDisplayMode = container?.style?.display;
329
+
330
+ if (currentDisplayMode === undefined) {
331
+ currentDisplayMode = "inherit";
332
+ }
333
+
334
+ if (!(container instanceof HTMLElement)) {
335
+ container = document.createElement("div");
336
+ container.style.display = "none";
337
+ container.setAttribute(ATTRIBUTE_ROLE, "container");
338
+ parentNode.appendChild(container);
339
+ }
340
+
341
+ return loadAndAssignContent(container, url, options, this.getOption("filter"))
342
+ .then(() => {
343
+ if (currentDisplayMode !== undefined) {
344
+ container.style.display = currentDisplayMode;
345
+ }
346
+ })
347
+ .catch((e) => {
348
+ throw e;
349
+ });
350
+ }
351
+
352
+ /**
353
+ * @private
354
+ * @return {string}
355
+ */
356
+ function getTemplate() {
357
+ return this.innerHTML;
358
+ }
359
+
360
+ registerCustomElement(Reload);