@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
@@ -5,51 +5,50 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {internalSymbol} from "../constants.mjs";
9
- import {Base} from "../types/base.mjs";
10
- import {getGlobalFunction} from "../types/global.mjs";
11
- import {isFunction, isInteger} from "../types/is.mjs";
12
- import {Queue} from "../types/queue.mjs";
13
- import {validateFunction, validateInteger} from "../types/validate.mjs";
8
+ import { internalSymbol } from "../constants.mjs";
9
+ import { Base } from "../types/base.mjs";
10
+ import { getGlobalFunction } from "../types/global.mjs";
11
+ import { isFunction, isInteger } from "../types/is.mjs";
12
+ import { Queue } from "../types/queue.mjs";
13
+ import { validateFunction, validateInteger } from "../types/validate.mjs";
14
14
 
15
- export {Processing};
15
+ export { Processing };
16
16
 
17
17
  /**
18
18
  * @private
19
19
  */
20
20
  class Callback {
21
- /**
22
- *
23
- * @param {function} callback
24
- * @param {int|undefined} time
25
- * @throws {TypeError} value is not a function
26
- * @throws {TypeError} value is not an integer
27
- * @private
28
- */
29
- constructor(callback, time) {
30
- this[internalSymbol] = {
31
- callback: validateFunction(callback),
32
- time: validateInteger(time ?? 0),
33
- };
34
- }
21
+ /**
22
+ *
23
+ * @param {function} callback
24
+ * @param {int|undefined} time
25
+ * @throws {TypeError} value is not a function
26
+ * @throws {TypeError} value is not an integer
27
+ * @private
28
+ */
29
+ constructor(callback, time) {
30
+ this[internalSymbol] = {
31
+ callback: validateFunction(callback),
32
+ time: validateInteger(time ?? 0),
33
+ };
34
+ }
35
35
 
36
- /**
37
- * @private
38
- * @param {*} data
39
- * @return {Promise}
40
- */
41
- run(data) {
42
- const self = this;
43
- return new Promise((resolve, reject) => {
44
- getGlobalFunction("setTimeout")(() => {
45
- try {
46
- resolve(self[internalSymbol].callback(data));
47
- } catch (e) {
48
- reject(e);
49
- }
50
- }, self[internalSymbol].time);
51
- });
52
- }
36
+ /**
37
+ * @private
38
+ * @param {*} data
39
+ * @return {Promise}
40
+ */
41
+ run(data) {
42
+ return new Promise((resolve, reject) => {
43
+ getGlobalFunction("setTimeout")(() => {
44
+ try {
45
+ resolve(this[internalSymbol].callback(data));
46
+ } catch (e) {
47
+ reject(e);
48
+ }
49
+ }, this[internalSymbol].time);
50
+ });
51
+ }
53
52
  }
54
53
 
55
54
  /**
@@ -74,80 +73,80 @@ class Callback {
74
73
  * @summary Class to be able to execute function chains
75
74
  */
76
75
  class Processing extends Base {
77
- /**
78
- * Create new Processing
79
- *
80
- * Functions and timeouts can be passed. If a timeout is passed, it applies to all further functions.
81
- * In the example
82
- *
83
- * `timeout1, function1, function2, function3, timeout2, function4`
84
- *
85
- * the timeout1 is valid for the functions 1, 2 and 3 and the timeout2 for the function4.
86
- *
87
- * So the execution time is timeout1+timeout1+timeout1+timeout2
88
- *
89
- * @throw {TypeError} the arguments must be either integer or functions
90
- * @param {...(int|function)} args
91
- */
92
- constructor(...args) {
93
- super();
76
+ /**
77
+ * Create new Processing
78
+ *
79
+ * Functions and timeouts can be passed. If a timeout is passed, it applies to all further functions.
80
+ * In the example
81
+ *
82
+ * `timeout1, function1, function2, function3, timeout2, function4`
83
+ *
84
+ * the timeout1 is valid for the functions 1, 2 and 3 and the timeout2 for the function4.
85
+ *
86
+ * So the execution time is timeout1+timeout1+timeout1+timeout2
87
+ *
88
+ * @throw {TypeError} the arguments must be either integer or functions
89
+ * @param {...(int|function)} args
90
+ */
91
+ constructor(...args) {
92
+ super();
94
93
 
95
- this[internalSymbol] = {
96
- queue: new Queue(),
97
- };
94
+ this[internalSymbol] = {
95
+ queue: new Queue(),
96
+ };
98
97
 
99
- let time = 0;
98
+ let time = 0;
100
99
 
101
- if (typeof args !== "object" || args[0] === null) {
102
- throw new TypeError("the arguments must be either integer or functions");
103
- }
100
+ if (typeof args !== "object" || args[0] === null) {
101
+ throw new TypeError("the arguments must be either integer or functions");
102
+ }
104
103
 
105
- for (const [, arg] of Object.entries(args)) {
106
- if (isInteger(arg) && arg >= 0) {
107
- time = arg;
108
- } else if (isFunction(arg)) {
109
- this[internalSymbol].queue.add(new Callback(arg, time));
110
- } else {
111
- throw new TypeError("the arguments must be either integer or functions");
112
- }
113
- }
114
- }
104
+ for (const [, arg] of Object.entries(args)) {
105
+ if (isInteger(arg) && arg >= 0) {
106
+ time = arg;
107
+ } else if (isFunction(arg)) {
108
+ this[internalSymbol].queue.add(new Callback(arg, time));
109
+ } else {
110
+ throw new TypeError(
111
+ "the arguments must be either integer or functions",
112
+ );
113
+ }
114
+ }
115
+ }
115
116
 
116
- /**
117
- * Adds a function with the desired timeout
118
- * If no timeout is specified, the timeout of the previous function is used.
119
- *
120
- * @param {function} callback
121
- * @param {int|undefined} time
122
- * @throws {TypeError} value is not a function
123
- * @throws {TypeError} value is not an integer
124
- */
125
- add(callback, time) {
126
- this[internalSymbol].queue.add(new Callback(callback, time));
127
- return this;
128
- }
117
+ /**
118
+ * Adds a function with the desired timeout
119
+ * If no timeout is specified, the timeout of the previous function is used.
120
+ *
121
+ * @param {function} callback
122
+ * @param {int|undefined} time
123
+ * @throws {TypeError} value is not a function
124
+ * @throws {TypeError} value is not an integer
125
+ */
126
+ add(callback, time) {
127
+ this[internalSymbol].queue.add(new Callback(callback, time));
128
+ return this;
129
+ }
129
130
 
130
- /**
131
- * Executes the defined functions in order.
132
- *
133
- * @param {*} data
134
- * @return {Promise}
135
- */
136
- run(data) {
137
- const self = this;
138
- if (self[internalSymbol].queue.isEmpty()) {
139
- return Promise.resolve(data);
140
- }
131
+ /**
132
+ * Executes the defined functions in order.
133
+ *
134
+ * @param {*} data
135
+ * @return {Promise}
136
+ */
137
+ run(data) {
138
+ if (this[internalSymbol].queue.isEmpty()) {
139
+ return Promise.resolve(data);
140
+ }
141
141
 
142
- const callback = self[internalSymbol].queue.poll();
142
+ const callback = this[internalSymbol].queue.poll();
143
143
 
144
- if (callback === null || callback === undefined) {
145
- return Promise.resolve(data);
146
- }
144
+ if (callback === null || callback === undefined) {
145
+ return Promise.resolve(data);
146
+ }
147
147
 
148
- return callback.run(data)
149
- .then((result) => {
150
- return self.run(result);
151
- });
152
- }
148
+ return callback.run(data).then((result) => {
149
+ return this.run(result);
150
+ });
151
+ }
153
152
  }
@@ -64,56 +64,68 @@ const ENV_UNKNOWN = "unknown";
64
64
  * @returns {string} The detected runtime environment. Possible values are:
65
65
  */
66
66
  function detectRuntimeEnvironment() {
67
- // AWS Lambda environment
68
- if (typeof process !== "undefined" && process.env != null && process.env.AWS_LAMBDA_FUNCTION_NAME) {
69
- return ENV_AWS_LAMBDA;
70
- }
67
+ // AWS Lambda environment
68
+ if (
69
+ typeof process !== "undefined" &&
70
+ process.env != null &&
71
+ process.env.AWS_LAMBDA_FUNCTION_NAME
72
+ ) {
73
+ return ENV_AWS_LAMBDA;
74
+ }
71
75
 
72
- // Google Cloud Functions environment
73
- if (typeof process !== "undefined" && process.env != null && process.env.FUNCTION_NAME) {
74
- return ENV_GOOGLE_FUNCTIONS;
75
- }
76
+ // Google Cloud Functions environment
77
+ if (
78
+ typeof process !== "undefined" &&
79
+ process.env != null &&
80
+ process.env.FUNCTION_NAME
81
+ ) {
82
+ return ENV_GOOGLE_FUNCTIONS;
83
+ }
76
84
 
77
- // Node.js environment
78
- if (typeof process !== "undefined" && process.versions != null && process.versions.node != null) {
79
- // Electron environment
80
- if (process.versions.electron != null) {
81
- return ENV_ELECTRON;
82
- }
83
- return ENV_NODE;
84
- }
85
+ // Node.js environment
86
+ if (
87
+ typeof process !== "undefined" &&
88
+ process.versions != null &&
89
+ process.versions.node != null
90
+ ) {
91
+ // Electron environment
92
+ if (process.versions.electron != null) {
93
+ return ENV_ELECTRON;
94
+ }
95
+ return ENV_NODE;
96
+ }
85
97
 
86
- // Browser environment
87
- if (
88
- typeof window !== "undefined" &&
89
- typeof window.document !== "undefined" &&
90
- typeof navigator !== "undefined" &&
91
- typeof navigator.userAgent === "string"
92
- ) {
93
- // Web Worker environment
94
- if (typeof self === "object" && typeof importScripts === "function") {
95
- return ENV_WEB_WORKER;
96
- }
97
- return ENV_BROWSER;
98
- }
98
+ // Browser environment
99
+ if (
100
+ typeof window !== "undefined" &&
101
+ typeof window.document !== "undefined" &&
102
+ typeof navigator !== "undefined" &&
103
+ typeof navigator.userAgent === "string"
104
+ ) {
105
+ // Web Worker environment
106
+ if (typeof self === "object" && typeof importScripts === "function") {
107
+ return ENV_WEB_WORKER;
108
+ }
109
+ return ENV_BROWSER;
110
+ }
99
111
 
100
- // Deno environment
101
- if (typeof Deno !== "undefined") {
102
- return ENV_DENO;
103
- }
112
+ // Deno environment
113
+ if (typeof Deno !== "undefined") {
114
+ return ENV_DENO;
115
+ }
104
116
 
105
- // Unknown environment
106
- return ENV_UNKNOWN;
117
+ // Unknown environment
118
+ return ENV_UNKNOWN;
107
119
  }
108
120
 
109
121
  export {
110
- ENV_AWS_LAMBDA,
111
- ENV_GOOGLE_FUNCTIONS,
112
- ENV_ELECTRON,
113
- ENV_NODE,
114
- ENV_BROWSER,
115
- ENV_WEB_WORKER,
116
- ENV_DENO,
117
- ENV_UNKNOWN,
118
- detectRuntimeEnvironment,
122
+ ENV_AWS_LAMBDA,
123
+ ENV_GOOGLE_FUNCTIONS,
124
+ ENV_ELECTRON,
125
+ ENV_NODE,
126
+ ENV_BROWSER,
127
+ ENV_WEB_WORKER,
128
+ ENV_DENO,
129
+ ENV_UNKNOWN,
130
+ detectRuntimeEnvironment,
119
131
  };
@@ -37,35 +37,35 @@ export { trimSpaces };
37
37
  * @throws {TypeError} value is not a string
38
38
  */
39
39
  function trimSpaces(value) {
40
- validateString(value);
40
+ validateString(value);
41
41
 
42
- let placeholder = new Map();
43
- const regex = /((?<pattern>\\(?<char>.)){1})/gim;
42
+ const placeholder = new Map();
43
+ const regex = /((?<pattern>\\(?<char>.)){1})/gim;
44
44
 
45
- // The separator for args must be escaped
46
- // undefined string which should not occur normally and is also not a regex
47
- let result = value.matchAll(regex);
45
+ // The separator for args must be escaped
46
+ // undefined string which should not occur normally and is also not a regex
47
+ const result = value.matchAll(regex);
48
48
 
49
- for (let m of result) {
50
- let g = m?.["groups"];
51
- if (!isObject(g)) {
52
- continue;
53
- }
49
+ for (const m of result) {
50
+ const g = m?.["groups"];
51
+ if (!isObject(g)) {
52
+ continue;
53
+ }
54
54
 
55
- let p = g?.["pattern"];
56
- let c = g?.["char"];
55
+ const p = g?.["pattern"];
56
+ const c = g?.["char"];
57
57
 
58
- if (p && c) {
59
- let r = `__${new ID().toString()}__`;
60
- placeholder.set(r, c);
61
- value = value.replace(p, r);
62
- }
63
- }
58
+ if (p && c) {
59
+ const r = `__${new ID().toString()}__`;
60
+ placeholder.set(r, c);
61
+ value = value.replace(p, r);
62
+ }
63
+ }
64
64
 
65
- value = value.trim();
66
- placeholder.forEach((v, k) => {
67
- value = value.replace(k, `\\${v}`);
68
- });
65
+ value = value.trim();
66
+ placeholder.forEach((v, k) => {
67
+ value = value.replace(k, `\\${v}`);
68
+ });
69
69
 
70
- return value;
70
+ return value;
71
71
  }
@@ -0,0 +1,122 @@
1
+ import {getGlobal} from "../../../../source/types/global.mjs";
2
+ import chai from "chai"
3
+ import {chaiDom} from "../../../util/chai-dom.mjs";
4
+ import {initJSDOM} from "../../../util/jsdom.mjs";
5
+
6
+ let expect = chai.expect;
7
+ chai.use(chaiDom);
8
+
9
+ const global = getGlobal();
10
+
11
+ let html1 = `
12
+ <div id="test1">
13
+ </div>
14
+ `;
15
+
16
+ let html2 = `
17
+ <div id="test2">
18
+ <monster-button
19
+ tabindex="0"
20
+ data-monster-bind="path:values.checkbox"
21
+ data-monster-options='{
22
+ "url": "mock-data.json",
23
+ "mapping": {
24
+ "valuePath": "\${first_name} \${last_name}",
25
+ "keyPath": "id"
26
+ },
27
+ "type":"checkbox"
28
+
29
+ }'></monster-button>
30
+ </div>
31
+ `;
32
+
33
+ let Button;
34
+
35
+ describe('Button', function () {
36
+
37
+ before(function (done) {
38
+ initJSDOM().then(() => {
39
+
40
+ import("element-internals-polyfill").catch(e => done(e));
41
+
42
+ import("../../../../source/components/form/button.mjs").then((m) => {
43
+ Button = m['Button'];
44
+ done()
45
+ }).catch(e => done(e))
46
+
47
+
48
+ });
49
+ })
50
+
51
+ describe('new Button', function () {
52
+
53
+ beforeEach(() => {
54
+ let mocks = document.getElementById('mocks');
55
+ mocks.innerHTML = html1;
56
+ })
57
+
58
+ afterEach(() => {
59
+ let mocks = document.getElementById('mocks');
60
+ mocks.innerHTML = "";
61
+ })
62
+
63
+ describe('create from template', function () {
64
+ beforeEach(() => {
65
+ let mocks = document.getElementById('mocks');
66
+ mocks.innerHTML = html2;
67
+ });
68
+
69
+ afterEach(() => {
70
+ let mocks = document.getElementById('mocks');
71
+ mocks.innerHTML = "";
72
+
73
+ })
74
+
75
+ describe('create from template', function () {
76
+ it('should contains monster-button', function () {
77
+ expect(document.getElementById('test2')).contain.html('<monster-button');
78
+ });
79
+ });
80
+
81
+ });
82
+
83
+ describe('document.createElement', function () {
84
+ it('should instance of button', function () {
85
+ expect(document.createElement('monster-button')).is.instanceof(Button);
86
+ });
87
+ });
88
+
89
+ });
90
+
91
+ describe('document.createElement()', function () {
92
+
93
+ afterEach(() => {
94
+ let mocks = document.getElementById('mocks');
95
+ mocks.innerHTML = "";
96
+ })
97
+
98
+ it('should has no options', function (done) {
99
+
100
+ let mocks = document.getElementById('mocks');
101
+ const button = document.createElement('monster-button');
102
+ mocks.appendChild(button);
103
+
104
+ setTimeout(() => {
105
+ try {
106
+ const options = button.shadowRoot.querySelector('button');
107
+
108
+ expect(options).is.instanceof(HTMLButtonElement);
109
+ expect(options.hasChildNodes()).to.be.true;
110
+ } catch (e) {
111
+ return done(e);
112
+ }
113
+
114
+ done();
115
+ }, 0)
116
+
117
+
118
+ });
119
+ });
120
+
121
+
122
+ });
@@ -0,0 +1,127 @@
1
+ import {DataUrl} from "../../../../source/types/dataurl.mjs";
2
+
3
+ import {getGlobal} from "../../../../source/types/global.mjs";
4
+ import chai from "chai"
5
+ import {chaiDom} from "../../../util/chai-dom.mjs";
6
+ import {initJSDOM} from "../../../util/jsdom.mjs";
7
+ import {ResizeObserverMock} from "../../../util/resize-observer.mjs";
8
+
9
+ let expect = chai.expect;
10
+ chai.use(chaiDom);
11
+
12
+ const global = getGlobal();
13
+
14
+ let html1, options, html2, ConfirmButton;
15
+
16
+ describe('ConfirmButton', function () {
17
+
18
+ before(function (done) {
19
+
20
+ import("element-internals-polyfill").catch(e => done(e));
21
+
22
+ if(!global.ResizeObserver) {
23
+ global.ResizeObserver = ResizeObserverMock;
24
+ }
25
+
26
+ options = new DataUrl(btoa(JSON.stringify({
27
+ popper: {
28
+ placement: "top"
29
+ },
30
+ })), 'application/json', true).toString()
31
+
32
+ html2 = `
33
+ <div id="test2">
34
+ <monster-confirm-button
35
+ tabindex="0"
36
+ data-monster-bind="path:values.checkbox"
37
+ data-monster-options="` + options + `"></monster-confirm-button>
38
+ </div>
39
+ `;
40
+
41
+ html1 = `
42
+ <div id="test1">
43
+ </div>
44
+ `
45
+
46
+
47
+ initJSDOM().then(() => {
48
+
49
+ import("../../../../source/components/form/confirm-button.mjs").then((m) => {
50
+ ConfirmButton = m['ConfirmButton'];
51
+ done()
52
+ }).catch(e => done(e))
53
+
54
+
55
+ });
56
+ })
57
+
58
+ describe('new ConfirmButton', function () {
59
+
60
+ beforeEach(() => {
61
+ let mocks = document.getElementById('mocks');
62
+ mocks.innerHTML = html1;
63
+ })
64
+
65
+ afterEach(() => {
66
+ let mocks = document.getElementById('mocks');
67
+ mocks.innerHTML = "";
68
+ })
69
+
70
+ describe('create from template', function () {
71
+ beforeEach(() => {
72
+ let mocks = document.getElementById('mocks');
73
+ mocks.innerHTML = html2;
74
+ });
75
+
76
+ afterEach(() => {
77
+ let mocks = document.getElementById('mocks');
78
+ mocks.innerHTML = "";
79
+
80
+ })
81
+
82
+ describe('create from template', function () {
83
+ it('should contains monster-confirm-button', function () {
84
+ expect(document.getElementById('test2')).contain.html('<monster-confirm-button');
85
+ });
86
+ });
87
+
88
+ });
89
+
90
+ describe('document.createElement', function () {
91
+ it('should instance of button', function () {
92
+ expect(document.createElement('monster-confirm-button')).is.instanceof(ConfirmButton);
93
+ });
94
+ });
95
+
96
+ });
97
+
98
+ describe('document.createElement()', function () {
99
+
100
+ afterEach(() => {
101
+ let mocks = document.getElementById('mocks');
102
+ mocks.innerHTML = "";
103
+ })
104
+
105
+ it('should has childs', function (done) {
106
+
107
+ let mocks = document.getElementById('mocks');
108
+ const button = document.createElement('monster-confirm-button');
109
+ mocks.appendChild(button);
110
+
111
+ setTimeout(() => {
112
+ try {
113
+ const content = button.shadowRoot.querySelector('monster-button');
114
+ expect(content.hasChildNodes()).to.be.true;
115
+ } catch (e) {
116
+ return done(e);
117
+ }
118
+
119
+ done();
120
+ }, 0)
121
+
122
+
123
+ });
124
+ });
125
+
126
+
127
+ });