@schukai/monster 3.51.5 → 3.52.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 (361) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +15 -12
  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/example/data/datasource/server/restapi.mjs +7 -1
  12. package/package.json +6 -2
  13. package/source/components/constants.mjs +132 -0
  14. package/source/components/datatable/columnbar.mjs +310 -0
  15. package/source/components/datatable/constants.mjs +121 -0
  16. package/source/components/datatable/dataset.mjs +219 -0
  17. package/source/components/datatable/datasource/dom.mjs +186 -0
  18. package/source/components/datatable/datasource/namespace.mjs +13 -0
  19. package/source/components/datatable/datasource/rest.mjs +400 -0
  20. package/source/components/datatable/datasource.mjs +102 -0
  21. package/source/components/datatable/datatable/header.mjs +268 -0
  22. package/source/components/datatable/datatable/namespace.mjs +13 -0
  23. package/source/components/datatable/datatable.mjs +789 -0
  24. package/source/components/datatable/embedded-pagination.mjs +113 -0
  25. package/source/components/datatable/filter/abstract-base.mjs +31 -0
  26. package/source/components/datatable/filter/date-range.mjs +1041 -0
  27. package/source/components/datatable/filter/input.mjs +175 -0
  28. package/source/components/datatable/filter/namespace.mjs +13 -0
  29. package/source/components/datatable/filter/range.mjs +671 -0
  30. package/source/components/datatable/filter/select.mjs +65 -0
  31. package/source/components/datatable/filter/settings.mjs +116 -0
  32. package/source/components/datatable/filter-button.mjs +98 -0
  33. package/source/components/datatable/filter.mjs +929 -0
  34. package/source/components/datatable/namespace.mjs +11 -0
  35. package/source/components/datatable/pagination.mjs +456 -0
  36. package/source/components/datatable/style/column-bar.pcss +123 -0
  37. package/source/components/datatable/style/dataset.pcss +13 -0
  38. package/source/components/datatable/style/datasource.pcss +16 -0
  39. package/source/components/datatable/style/datatable.pcss +239 -0
  40. package/source/components/datatable/style/embedded-pagination.pcss +101 -0
  41. package/source/components/datatable/style/filter-button.pcss +22 -0
  42. package/source/components/datatable/style/filter-controls-defaults.pcss +46 -0
  43. package/source/components/datatable/style/filter-date-range.pcss +9 -0
  44. package/source/components/datatable/style/filter-range.pcss +5 -0
  45. package/source/components/datatable/style/filter.pcss +156 -0
  46. package/source/components/datatable/style/pagination.pcss +59 -0
  47. package/source/components/datatable/style/select-filter.pcss +27 -0
  48. package/source/components/datatable/stylesheet/column-bar.mjs +27 -0
  49. package/source/components/datatable/stylesheet/dataset.mjs +27 -0
  50. package/source/components/datatable/stylesheet/datasource.mjs +27 -0
  51. package/source/components/datatable/stylesheet/datatable.mjs +27 -0
  52. package/source/components/datatable/stylesheet/embedded-pagination.mjs +27 -0
  53. package/source/components/datatable/stylesheet/filter-button.mjs +27 -0
  54. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +27 -0
  55. package/source/components/datatable/stylesheet/filter-date-range.mjs +27 -0
  56. package/source/components/datatable/stylesheet/filter-range.mjs +27 -0
  57. package/source/components/datatable/stylesheet/filter.mjs +27 -0
  58. package/source/components/datatable/stylesheet/namespace.mjs +13 -0
  59. package/source/components/datatable/stylesheet/pagination.mjs +27 -0
  60. package/source/components/datatable/stylesheet/select-filter.mjs +27 -0
  61. package/source/components/datatable/util.mjs +60 -0
  62. package/source/components/form/action-button.mjs +262 -0
  63. package/source/components/form/api-button.mjs +515 -0
  64. package/source/components/form/button-bar.mjs +739 -0
  65. package/source/components/form/button.mjs +350 -0
  66. package/source/components/form/confirm-button.mjs +330 -0
  67. package/source/components/form/constants.mjs +111 -0
  68. package/source/components/form/context-help.mjs +123 -0
  69. package/source/components/form/events.mjs +84 -0
  70. package/source/components/form/form.mjs +601 -0
  71. package/source/components/form/message-state-button.mjs +396 -0
  72. package/source/components/form/namespace.mjs +13 -0
  73. package/source/components/form/popper-button.mjs +435 -0
  74. package/source/components/form/popper.mjs +487 -0
  75. package/source/components/form/reload.mjs +360 -0
  76. package/source/components/form/select.mjs +2314 -0
  77. package/source/components/form/shadow-reload.mjs +137 -0
  78. package/source/components/form/state-button.mjs +182 -0
  79. package/source/components/form/style/action-button.pcss +41 -0
  80. package/source/components/form/style/api-button.pcss +0 -0
  81. package/source/components/form/style/button-bar.pcss +51 -0
  82. package/source/components/form/style/button.pcss +8 -0
  83. package/source/components/form/style/confirm-button.pcss +17 -0
  84. package/source/components/form/style/context-help.pcss +16 -0
  85. package/source/components/form/style/form.pcss +10 -0
  86. package/source/components/form/style/message-state-button.pcss +10 -0
  87. package/source/components/form/style/popper-button.pcss +16 -0
  88. package/source/components/form/style/popper.pcss +8 -0
  89. package/source/components/form/style/select.pcss +265 -0
  90. package/source/components/form/style/state-button.pcss +116 -0
  91. package/source/components/form/style/tabs.pcss +173 -0
  92. package/source/components/form/style/tree-select.pcss +81 -0
  93. package/source/components/form/stylesheet/action-button.mjs +27 -0
  94. package/source/components/form/stylesheet/api-button.mjs +27 -0
  95. package/source/components/form/stylesheet/button-bar.mjs +27 -0
  96. package/source/components/form/stylesheet/button.mjs +27 -0
  97. package/source/components/form/stylesheet/confirm-button.mjs +27 -0
  98. package/source/components/form/stylesheet/context-help.mjs +27 -0
  99. package/source/components/form/stylesheet/form.mjs +27 -0
  100. package/source/components/form/stylesheet/message-state-button.mjs +27 -0
  101. package/source/components/form/stylesheet/namespace.mjs +13 -0
  102. package/source/components/form/stylesheet/popper-button.mjs +27 -0
  103. package/source/components/form/stylesheet/popper.mjs +27 -0
  104. package/source/components/form/stylesheet/select.mjs +27 -0
  105. package/source/components/form/stylesheet/state-button.mjs +27 -0
  106. package/source/components/form/stylesheet/tabs.mjs +27 -0
  107. package/source/components/form/stylesheet/tree-select.mjs +27 -0
  108. package/source/components/form/tabs.mjs +1029 -0
  109. package/source/components/form/template.mjs +373 -0
  110. package/source/components/form/tree-select.mjs +527 -0
  111. package/source/components/form/types/namespace.mjs +13 -0
  112. package/source/components/form/types/state.mjs +93 -0
  113. package/source/components/form/util/fetch.mjs +133 -0
  114. package/source/components/form/util/floating-ui.mjs +245 -0
  115. package/source/components/form/util/namespace.mjs +13 -0
  116. package/source/components/form/util/popper.mjs +49 -0
  117. package/source/components/host/call-button.mjs +236 -0
  118. package/source/components/host/collapse.mjs +526 -0
  119. package/source/components/host/config-manager.mjs +304 -0
  120. package/source/components/host/constants.mjs +18 -0
  121. package/source/components/host/details.mjs +268 -0
  122. package/source/components/host/events.mjs +131 -0
  123. package/source/components/host/host.mjs +420 -0
  124. package/source/components/host/namespace.mjs +13 -0
  125. package/source/components/host/overlay.mjs +339 -0
  126. package/source/components/host/style/call-button.pcss +36 -0
  127. package/source/components/host/style/collapse.pcss +67 -0
  128. package/source/components/host/style/config-manager.pcss +5 -0
  129. package/source/components/host/style/details.pcss +68 -0
  130. package/source/components/host/style/host.pcss +43 -0
  131. package/source/components/host/style/overlay.pcss +73 -0
  132. package/source/components/host/style/toggle-button.pcss +36 -0
  133. package/source/components/host/style/viewer.pcss +13 -0
  134. package/source/components/host/stylesheet/call-button.mjs +27 -0
  135. package/source/components/host/stylesheet/collapse.mjs +27 -0
  136. package/source/components/host/stylesheet/config-manager.mjs +27 -0
  137. package/source/components/host/stylesheet/details.mjs +27 -0
  138. package/source/components/host/stylesheet/host.mjs +27 -0
  139. package/source/components/host/stylesheet/namespace.mjs +13 -0
  140. package/source/components/host/stylesheet/overlay.mjs +27 -0
  141. package/source/components/host/stylesheet/toggle-button.mjs +27 -0
  142. package/source/components/host/stylesheet/viewer.mjs +27 -0
  143. package/source/components/host/toggle-button.mjs +88 -0
  144. package/source/components/host/util.mjs +23 -0
  145. package/source/components/host/viewer.mjs +309 -0
  146. package/source/components/namespace.mjs +14 -0
  147. package/source/components/notify/constants.mjs +15 -0
  148. package/source/components/notify/events.mjs +15 -0
  149. package/source/components/notify/message.mjs +374 -0
  150. package/source/components/notify/namespace.mjs +15 -0
  151. package/source/components/notify/notify.mjs +236 -0
  152. package/source/components/notify/style/message.pcss +57 -0
  153. package/source/components/notify/style/notify.pcss +118 -0
  154. package/source/components/notify/stylesheet/message.mjs +27 -0
  155. package/source/components/notify/stylesheet/namespace.mjs +15 -0
  156. package/source/components/notify/stylesheet/notify.mjs +27 -0
  157. package/source/components/state/log/entry.mjs +126 -0
  158. package/source/components/state/log/namespace.mjs +13 -0
  159. package/source/components/state/log.mjs +275 -0
  160. package/source/components/state/namespace.mjs +13 -0
  161. package/source/components/state/state.mjs +131 -0
  162. package/source/components/state/style/log.pcss +111 -0
  163. package/source/components/state/style/state.pcss +113 -0
  164. package/source/components/state/stylesheet/log.mjs +27 -0
  165. package/source/components/state/stylesheet/state.mjs +27 -0
  166. package/source/components/style/badge.pcss +92 -0
  167. package/source/components/style/border.pcss +77 -0
  168. package/source/components/style/button.pcss +105 -0
  169. package/source/components/style/card.pcss +108 -0
  170. package/source/components/style/color.pcss +257 -0
  171. package/source/components/style/common.pcss +105 -0
  172. package/source/components/style/control.pcss +11 -0
  173. package/source/components/style/data-grid.pcss +43 -0
  174. package/source/components/style/display.pcss +42 -0
  175. package/source/components/style/floating-ui.pcss +33 -0
  176. package/source/components/style/form.pcss +5 -0
  177. package/source/components/style/host.pcss +15 -0
  178. package/source/components/style/link.pcss +63 -0
  179. package/source/components/style/mixin/badge.pcss +18 -0
  180. package/source/components/style/mixin/button.pcss +52 -0
  181. package/source/components/style/mixin/form.pcss +247 -0
  182. package/source/components/style/mixin/hover.pcss +8 -0
  183. package/source/components/style/mixin/media.pcss +107 -0
  184. package/source/components/style/mixin/property.pcss +292 -0
  185. package/source/components/style/mixin/skeleton.pcss +26 -0
  186. package/source/components/style/mixin/spinner.pcss +24 -0
  187. package/source/components/style/mixin/typography.pcss +52 -0
  188. package/source/components/style/normalize.pcss +14 -0
  189. package/source/components/style/popper.pcss +78 -0
  190. package/source/components/style/property.pcss +17 -0
  191. package/source/components/style/ripple.pcss +14 -0
  192. package/source/components/style/skeleton.pcss +28 -0
  193. package/source/components/style/space.pcss +47 -0
  194. package/source/components/style/spinner.pcss +6 -0
  195. package/source/components/style/table.pcss +46 -0
  196. package/source/components/style/theme.pcss +119 -0
  197. package/source/components/style/typography.pcss +131 -0
  198. package/source/components/stylesheet/badge.mjs +27 -0
  199. package/source/components/stylesheet/border.mjs +27 -0
  200. package/source/components/stylesheet/button.mjs +27 -0
  201. package/source/components/stylesheet/card.mjs +27 -0
  202. package/source/components/stylesheet/color.mjs +27 -0
  203. package/source/components/stylesheet/common.mjs +27 -0
  204. package/source/components/stylesheet/control.mjs +27 -0
  205. package/source/components/stylesheet/data-grid.mjs +27 -0
  206. package/source/components/stylesheet/display.mjs +27 -0
  207. package/source/components/stylesheet/floating-ui.mjs +27 -0
  208. package/source/components/stylesheet/form.mjs +27 -0
  209. package/source/components/stylesheet/host.mjs +27 -0
  210. package/source/components/stylesheet/link.mjs +27 -0
  211. package/source/components/stylesheet/namespace.mjs +13 -0
  212. package/source/components/stylesheet/normalize.mjs +27 -0
  213. package/source/components/stylesheet/popper.mjs +27 -0
  214. package/source/components/stylesheet/property.mjs +27 -0
  215. package/source/components/stylesheet/ripple.mjs +27 -0
  216. package/source/components/stylesheet/skeleton.mjs +27 -0
  217. package/source/components/stylesheet/space.mjs +27 -0
  218. package/source/components/stylesheet/spinner.mjs +27 -0
  219. package/source/components/stylesheet/table.mjs +27 -0
  220. package/source/components/stylesheet/theme.mjs +27 -0
  221. package/source/components/stylesheet/tree-menu.mjs +33 -0
  222. package/source/components/stylesheet/typography.mjs +27 -0
  223. package/source/components/tree-menu/namespace.mjs +13 -0
  224. package/source/components/tree-menu/style/tree-menu.pcss +107 -0
  225. package/source/components/tree-menu/stylesheet/namespace.mjs +13 -0
  226. package/source/components/tree-menu/stylesheet/tree-menu.mjs +27 -0
  227. package/source/components/tree-menu/tree-menu.mjs +660 -0
  228. package/source/constraints/abstract.mjs +17 -24
  229. package/source/constraints/abstractoperator.mjs +27 -22
  230. package/source/constraints/andoperator.mjs +20 -17
  231. package/source/constraints/invalid.mjs +17 -17
  232. package/source/constraints/isarray.mjs +20 -20
  233. package/source/constraints/isobject.mjs +20 -20
  234. package/source/constraints/oroperator.mjs +45 -45
  235. package/source/constraints/valid.mjs +17 -17
  236. package/source/data/buildmap.mjs +108 -103
  237. package/source/data/buildtree.mjs +59 -57
  238. package/source/data/datasource/dom.mjs +80 -84
  239. package/source/data/datasource/namespace.mjs +1 -1
  240. package/source/data/datasource/server/restapi/data-fetch-error.mjs +27 -25
  241. package/source/data/datasource/server/restapi/writeerror.mjs +35 -32
  242. package/source/data/datasource/server/restapi.mjs +176 -177
  243. package/source/data/datasource/server/webconnect.mjs +150 -156
  244. package/source/data/datasource/server.mjs +62 -63
  245. package/source/data/datasource/storage/localstorage.mjs +25 -24
  246. package/source/data/datasource/storage/sessionstorage.mjs +28 -25
  247. package/source/data/datasource/storage.mjs +74 -73
  248. package/source/data/datasource.mjs +177 -168
  249. package/source/data/diff.mjs +98 -97
  250. package/source/data/extend.mjs +42 -42
  251. package/source/data/pathfinder.mjs +301 -288
  252. package/source/data/pipe.mjs +36 -36
  253. package/source/data/transformer.mjs +742 -726
  254. package/source/dom/assembler.mjs +44 -44
  255. package/source/dom/attributes.mjs +142 -122
  256. package/source/dom/constants.mjs +62 -58
  257. package/source/dom/customcontrol.mjs +299 -299
  258. package/source/dom/customelement.mjs +843 -806
  259. package/source/dom/dimension.mjs +56 -46
  260. package/source/dom/events.mjs +74 -69
  261. package/source/dom/focusmanager.mjs +175 -175
  262. package/source/dom/locale.mjs +28 -28
  263. package/source/dom/ready.mjs +13 -13
  264. package/source/dom/resource/data.mjs +117 -111
  265. package/source/dom/resource/link/stylesheet.mjs +16 -16
  266. package/source/dom/resource/link.mjs +94 -96
  267. package/source/dom/resource/script.mjs +72 -74
  268. package/source/dom/resource.mjs +174 -172
  269. package/source/dom/resourcemanager.mjs +152 -156
  270. package/source/dom/slotted.mjs +78 -80
  271. package/source/dom/template.mjs +126 -112
  272. package/source/dom/theme.mjs +35 -35
  273. package/source/dom/updater.mjs +673 -651
  274. package/source/dom/util/extract-keys.mjs +34 -22
  275. package/source/dom/util/init-options-from-attributes.mjs +46 -38
  276. package/source/dom/util/namespace.mjs +13 -0
  277. package/source/dom/util/set-option-from-attribute.mjs +35 -29
  278. package/source/dom/util.mjs +112 -81
  279. package/source/dom/worker/factory.mjs +83 -83
  280. package/source/i18n/formatter.mjs +75 -73
  281. package/source/i18n/locale.mjs +146 -144
  282. package/source/i18n/provider.mjs +70 -64
  283. package/source/i18n/providers/embed.mjs +136 -127
  284. package/source/i18n/providers/fetch.mjs +84 -76
  285. package/source/i18n/translations.mjs +205 -195
  286. package/source/logging/handler/console.mjs +36 -36
  287. package/source/logging/handler.mjs +140 -140
  288. package/source/logging/logentry.mjs +25 -25
  289. package/source/logging/logger.mjs +177 -175
  290. package/source/math/random.mjs +63 -59
  291. package/source/monster.mjs +223 -103
  292. package/source/net/webconnect/message.mjs +31 -31
  293. package/source/net/webconnect.mjs +278 -271
  294. package/source/text/bracketed-key-value-hash.mjs +182 -179
  295. package/source/text/formatter.mjs +235 -210
  296. package/source/text/generate-range-comparison-expression.mjs +56 -34
  297. package/source/text/namespace.mjs +1 -1
  298. package/source/types/base.mjs +69 -61
  299. package/source/types/basewithoptions.mjs +46 -46
  300. package/source/types/binary.mjs +20 -20
  301. package/source/types/dataurl.mjs +96 -90
  302. package/source/types/global.mjs +45 -39
  303. package/source/types/id.mjs +25 -25
  304. package/source/types/internal.mjs +115 -114
  305. package/source/types/is.mjs +56 -40
  306. package/source/types/mediatype.mjs +119 -119
  307. package/source/types/namespace.mjs +1 -1
  308. package/source/types/node.mjs +160 -150
  309. package/source/types/nodelist.mjs +94 -96
  310. package/source/types/noderecursiveiterator.mjs +50 -50
  311. package/source/types/observablequeue.mjs +73 -73
  312. package/source/types/observer.mjs +114 -106
  313. package/source/types/observerlist.mjs +66 -66
  314. package/source/types/proxyobserver.mjs +210 -210
  315. package/source/types/queue.mjs +63 -63
  316. package/source/types/randomid.mjs +13 -13
  317. package/source/types/regex.mjs +3 -1
  318. package/source/types/stack.mjs +64 -64
  319. package/source/types/tokenlist.mjs +206 -205
  320. package/source/types/typeof.mjs +12 -10
  321. package/source/types/uniquequeue.mjs +48 -48
  322. package/source/types/uuid.mjs +32 -32
  323. package/source/types/validate.mjs +67 -67
  324. package/source/types/version.mjs +115 -105
  325. package/source/util/clone.mjs +103 -91
  326. package/source/util/comparator.mjs +97 -97
  327. package/source/util/deadmansswitch.mjs +40 -44
  328. package/source/util/freeze.mjs +10 -9
  329. package/source/util/namespace.mjs +1 -1
  330. package/source/util/processing.mjs +104 -105
  331. package/source/util/runtime.mjs +56 -44
  332. package/source/util/trimspaces.mjs +24 -24
  333. package/test/cases/components/form/button.mjs +122 -0
  334. package/test/cases/components/form/confirm-button.mjs +127 -0
  335. package/test/cases/components/form/form.mjs +317 -0
  336. package/test/cases/components/form/reload.mjs +188 -0
  337. package/test/cases/components/form/select.mjs +229 -0
  338. package/test/cases/components/form/state-button.mjs +130 -0
  339. package/test/cases/components/form/tabs.mjs +98 -0
  340. package/test/cases/components/form/template.mjs +189 -0
  341. package/test/cases/components/form/tree-select.mjs +216 -0
  342. package/test/cases/components/host/details.mjs +68 -0
  343. package/test/cases/components/host/host.mjs +70 -0
  344. package/test/cases/components/host/overlay.mjs +60 -0
  345. package/test/cases/components/host/util.mjs +79 -0
  346. package/test/cases/components/notify/message.mjs +39 -0
  347. package/test/cases/components/notify/notify.mjs +89 -0
  348. package/test/cases/dom/customcontrol.mjs +5 -4
  349. package/test/cases/math/random.mjs +0 -1
  350. package/test/cases/monster.mjs +1 -1
  351. package/test/cases/net/webconnect/message.mjs +0 -1
  352. package/test/cases/types/node.mjs +1 -1
  353. package/test/util/chai-dom.mjs +2 -2
  354. package/test/util/intersection-mock.mjs +69 -0
  355. package/test/util/jsdom.mjs +41 -25
  356. package/test/util/localstorage.mjs +1 -0
  357. package/test/util/resize-observer.mjs +29 -0
  358. package/test/util/websocket.mjs +4 -1
  359. package/test/web/import.js +16 -1
  360. package/test/web/test.html +28 -5
  361. package/test/web/tests.js +30398 -17879
@@ -0,0 +1,420 @@
1
+ /**
2
+ * Copyright 2023 schukai GmbH
3
+ * SPDX-License-Identifier: AGPL-3.0
4
+ */
5
+
6
+ import {
7
+ assembleMethodSymbol,
8
+ CustomElement,
9
+ registerCustomElement,
10
+ } from "../../dom/customelement.mjs";
11
+ import "../notify/notify.mjs";
12
+ import { HostStyleSheet } from "./stylesheet/host.mjs";
13
+ import { getLocaleOfDocument } from "../../dom/locale.mjs";
14
+ import { Embed } from "../../i18n/providers/embed.mjs";
15
+ import { getDocumentTranslations } from "../../i18n/translations.mjs";
16
+ import { windowReady } from "../../dom/ready.mjs";
17
+ import { FocusManager } from "../../dom/focusmanager.mjs";
18
+ import { ResourceManager } from "../../dom/resourcemanager.mjs";
19
+ import { fireCustomEvent } from "../../dom/events.mjs";
20
+ import { isIterable } from "../../types/is.mjs";
21
+ import "./config-manager.mjs";
22
+ import { instanceSymbol } from "../../constants.mjs";
23
+
24
+ export { Host };
25
+
26
+ /**
27
+ * @private
28
+ * @type {symbol}
29
+ */
30
+ const promisesSymbol = Symbol("promisesSymbol");
31
+
32
+ /**
33
+ * @private
34
+ * @type {symbol}
35
+ */
36
+ const notifyElementSymbol = Symbol("notifyElement");
37
+
38
+ /**
39
+ * @private
40
+ * @type {symbol}
41
+ */
42
+ const overlayElementSymbol = Symbol("overlayElement");
43
+
44
+ /**
45
+ * @private
46
+ * @type {symbol}
47
+ */
48
+ const configManagerElementSymbol = Symbol("configManagerElement");
49
+
50
+ /**
51
+ * @private
52
+ * @type {symbol}
53
+ */
54
+ const focusManagerSymbol = Symbol("focusManager");
55
+
56
+ /**
57
+ * @private
58
+ * @type {symbol}
59
+ */
60
+ const resourceManagerSymbol = Symbol("resourceManager");
61
+
62
+ /**
63
+ * The Host component is used to encapsulate the content of a web app.
64
+ *
65
+ * <img src="./images/host.png">
66
+ *
67
+ * Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
68
+ *
69
+ * You can create this control either by specifying the HTML tag <monster-host />` directly in the HTML or using
70
+ * Javascript via the `document.createElement('monster-host');` method.
71
+ *
72
+ * ```html
73
+ * <monster-host></monster-host>
74
+ * ```
75
+ *
76
+ * Or you can create this CustomControl directly in Javascript:
77
+ *
78
+ * ```js
79
+ * import '@schukai/component-state/source/host.mjs';
80
+ * document.createElement('monster-host');
81
+ * ```
82
+ *
83
+ * The Body should have a class "hidden" to ensure that the styles are applied correctly.
84
+ *
85
+ * ```css
86
+ * body.hidden {
87
+ * visibility: hidden;
88
+ * }
89
+ * ```
90
+ *
91
+ * @startuml host.png
92
+ * skinparam monochrome true
93
+ * skinparam shadowing false
94
+ * HTMLElement <|-- CustomElement
95
+ * CustomElement <|-- Host
96
+ * @enduml
97
+ *
98
+ * @copyright schukai GmbH
99
+ * @memberOf Monster.Components.Host
100
+ * @summary A simple host component
101
+ * @fires Monster.Components.Host.Host#monster-host-connected
102
+ * @fires Monster.Components.Host.Host#monster-host-disconnected
103
+ */
104
+ class Host extends CustomElement {
105
+ /**
106
+ * This method is called by the `instanceof` operator.
107
+ * @returns {symbol}
108
+ */
109
+ static get [instanceSymbol]() {
110
+ return Symbol.for("@schukai/component-host/Host@@instance");
111
+ }
112
+
113
+ /**
114
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
115
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
116
+ *
117
+ * The individual configuration values can be found in the table.
118
+ *
119
+ * @property {Object} templates Template definitions
120
+ * @property {string} templates.main Main template
121
+ * @property {Object} features Feature definitions
122
+ */
123
+ get defaults() {
124
+ return Object.assign({}, super.defaults, {
125
+ templates: {
126
+ main: getTemplate(),
127
+ },
128
+ });
129
+ }
130
+
131
+ /**
132
+ * @param key
133
+ * @returns {Promise}
134
+ */
135
+ getConfig(key) {
136
+ if (this[configManagerElementSymbol] instanceof HTMLElement === false) {
137
+ throw new Error("There is no config manager element");
138
+ }
139
+ return this[configManagerElementSymbol].getConfig(key);
140
+ }
141
+
142
+ /**
143
+ *
144
+ * @param {string} key
145
+ * @param {*} value
146
+ * @returns {Promise}
147
+ */
148
+ setConfig(key, value) {
149
+ if (this[configManagerElementSymbol] instanceof HTMLElement === false) {
150
+ throw new Error("There is no config manager element");
151
+ }
152
+
153
+ return this[configManagerElementSymbol].setConfig(key, value);
154
+ }
155
+
156
+ /**
157
+ * @private
158
+ * @fires Monster.Components.Host.Host#monster-host-connected
159
+ */
160
+ connectedCallback() {
161
+ super.connectedCallback();
162
+
163
+ /**
164
+ * show the scroll bar always
165
+ * @type {string}
166
+ */
167
+ document.documentElement.style.overflowY = "scroll";
168
+
169
+ const classNames = this.getOption("classes.body");
170
+
171
+ if (document.body.classList.contains(classNames)) {
172
+ document.body.classList.remove(classNames);
173
+ }
174
+
175
+ fireCustomEvent(this, "monster-host-connected");
176
+ }
177
+
178
+ /**
179
+ * @private
180
+ * @fires Monster.Components.Host.Host#monster-host-disconnected
181
+ */
182
+ disconnectedCallback() {;
183
+
184
+ super.disconnectedCallback();
185
+ document.documentElement.style.overflowY = "";
186
+
187
+ const classNames = this.getOption("classes.body");
188
+ if (!document.body.classList.contains(classNames)) {
189
+ document.body.classList.add(classNames);
190
+ }
191
+
192
+ if (isIterable(this[promisesSymbol]) === false) {
193
+ this[promisesSymbol] = [];
194
+ }
195
+
196
+ this[promisesSymbol].push(
197
+ new Promise((resolve, reject) => {
198
+ this.addEventListener(
199
+ "monster-host-connected",
200
+ () => {
201
+ resolve();
202
+ },
203
+ { once: true },
204
+ );
205
+ }),
206
+ );
207
+
208
+ fireCustomEvent(this, "monster-host-disconnected");
209
+ }
210
+
211
+ /**
212
+ *
213
+ * @return {Monster.Components.Host.Host}
214
+ */
215
+ [assembleMethodSymbol]() {;
216
+
217
+ this[promisesSymbol] = [];
218
+ this[promisesSymbol].push(windowReady);
219
+
220
+ super[assembleMethodSymbol]();
221
+
222
+ initControlReferences.call(this);
223
+ initEventHandler.call(this);
224
+ initTranslations.call(this);
225
+
226
+ this[focusManagerSymbol] = new FocusManager(this);
227
+ this[resourceManagerSymbol] = new ResourceManager(this);
228
+
229
+ try {
230
+ this[promisesSymbol].push(this[resourceManagerSymbol].available());
231
+ } catch (e) {
232
+ return Promise.reject(e);
233
+ }
234
+
235
+ if (this.isConnected === false) {
236
+ this[promisesSymbol].push(
237
+ new Promise((resolve, reject) => {
238
+ this.addEventListener(
239
+ "monster-host-connected",
240
+ () => {
241
+ resolve();
242
+ },
243
+ { once: true },
244
+ );
245
+ }),
246
+ );
247
+ }
248
+ }
249
+
250
+ /**
251
+ * The Promise is resolved when the element is connected to the DOM and all resources are available.
252
+ * If the element is not connected to the DOM, the Promise is rejected.
253
+ *
254
+ * @return {Promise}
255
+ */
256
+ onReady() {;
257
+
258
+ if (isIterable(this[promisesSymbol]) === false) {
259
+ this[promisesSymbol] = [];
260
+ }
261
+
262
+ return Promise.all(this[promisesSymbol]).then(() => {
263
+ this[promisesSymbol] = [];
264
+ return this;
265
+ });
266
+ }
267
+
268
+ /**
269
+ * @see {@link https://monsterjs.org/en/doc/monster/Monster.DOM.FocusManager.html|Monster.DOM.FocusManager}
270
+ * @returns {*}
271
+ */
272
+ get focusManager() {
273
+ return this[focusManagerSymbol];
274
+ }
275
+
276
+ /**
277
+ * @see {@link https://monsterjs.org/en/doc/monster/Monster.DOM.ResourceManager.html|Monster.DOM.ResourceManager}
278
+ * @returns {*}
279
+ */
280
+ get resourceManager() {
281
+ return this[resourceManagerSymbol];
282
+ }
283
+
284
+ /**
285
+ *
286
+ * @returns {Monster.Components.Host.Host}
287
+ * @throws {Error} There is no overlay element defined.
288
+ */
289
+ toggleOverlay() {
290
+ if (this[overlayElementSymbol] instanceof HTMLElement === false) {
291
+ throw new Error("There is no overlay element defined.");
292
+ }
293
+
294
+ this[overlayElementSymbol].toggle();
295
+ return this;
296
+ }
297
+
298
+ /**
299
+ * @return {Host}
300
+ * @throws {Error} There is no overlay element defined.
301
+ */
302
+ openOverlay() {
303
+ if (this[overlayElementSymbol] instanceof HTMLElement === false) {
304
+ throw new Error("There is no overlay element defined.");
305
+ }
306
+
307
+ this[overlayElementSymbol].open();
308
+ return this;
309
+ }
310
+
311
+ /**
312
+ * @return {Host}
313
+ * @throws {Error} There is no overlay element defined.
314
+ */
315
+ closeOverlay() {
316
+ if (this[overlayElementSymbol] instanceof HTMLElement === false) {
317
+ throw new Error("There is no overlay element defined.");
318
+ }
319
+
320
+ this[overlayElementSymbol].close();
321
+ return this;
322
+ }
323
+
324
+ /**
325
+ *
326
+ * @return {string}
327
+ */
328
+ static getTag() {
329
+ return "monster-host";
330
+ }
331
+
332
+ /**
333
+ * @return {CSSStyleSheet[]}
334
+ */
335
+ static getCSSStyleSheet() {
336
+ return [HostStyleSheet];
337
+ }
338
+
339
+ /**
340
+ *
341
+ * @returns {Monster.I18n.Locale}
342
+ */
343
+ get locale() {
344
+ return getLocaleOfDocument();
345
+ }
346
+
347
+ /**
348
+ *
349
+ * @returns {Translations}
350
+ */
351
+ get translations() {
352
+ return getDocumentTranslations();
353
+ }
354
+
355
+ /**
356
+ *
357
+ * @param {string|Message} message
358
+ */
359
+ pushNotification(message) {;
360
+ if (this[notifyElementSymbol] instanceof HTMLElement === false) {
361
+ throw new Error("There is no notify element defined.");
362
+ }
363
+
364
+ this[notifyElementSymbol].push(message);
365
+ return this;
366
+ }
367
+ }
368
+
369
+ /**
370
+ * @private
371
+ * @return {Select}
372
+ * @throws {Error} no shadow-root is defined
373
+ */
374
+ function initControlReferences() {;
375
+
376
+ if (!this.shadowRoot) {
377
+ throw new Error("no shadow-root is defined");
378
+ }
379
+
380
+ this[overlayElementSymbol] = this.querySelector("monster-overlay");
381
+ this[notifyElementSymbol] = this.querySelector("monster-notify");
382
+ this[configManagerElementSymbol] = this.querySelector(
383
+ "monster-config-manager",
384
+ );
385
+ }
386
+
387
+ function initTranslations() {;
388
+
389
+ if (isIterable(this[promisesSymbol]) === false) {
390
+ this[promisesSymbol] = [];
391
+ }
392
+
393
+ this[promisesSymbol].push(Embed.assignTranslationsToElement());
394
+ }
395
+
396
+ /**
397
+ * @private
398
+ */
399
+ function initEventHandler() {;
400
+ return this;
401
+ }
402
+
403
+ /**
404
+ * @private
405
+ * @return {string}
406
+ */
407
+ function getTemplate() {
408
+ // language=HTML
409
+ return `
410
+ <template id="host-container">
411
+ <div data-monster-replace="path:host-container.content"
412
+ data-monster-attributes="part path:host-container.name, data-monster-role path:host-container.name"></div>
413
+ </template>
414
+
415
+ <div data-monster-role="host-container">
416
+ <slot></slot>
417
+ </div>`;
418
+ }
419
+
420
+ registerCustomElement(Host);
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright 2023 schukai GmbH
3
+ * SPDX-License-Identifier: AGPL-3.0
4
+ */
5
+
6
+ /**
7
+ * Namespace for all host related functions.
8
+ *
9
+ * @namespace Monster.Components.Host
10
+ * @memberOf Monster
11
+ * @author schukai GmbH
12
+ */
13
+ const ns = {};