@schukai/monster 3.51.5 → 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 (360) hide show
  1. package/CHANGELOG.md +17 -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/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 +223 -103
  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/dom/customcontrol.mjs +5 -4
  348. package/test/cases/math/random.mjs +0 -1
  349. package/test/cases/monster.mjs +1 -1
  350. package/test/cases/net/webconnect/message.mjs +0 -1
  351. package/test/cases/types/node.mjs +1 -1
  352. package/test/util/chai-dom.mjs +2 -2
  353. package/test/util/intersection-mock.mjs +69 -0
  354. package/test/util/jsdom.mjs +41 -25
  355. package/test/util/localstorage.mjs +1 -0
  356. package/test/util/resize-observer.mjs +29 -0
  357. package/test/util/websocket.mjs +4 -1
  358. package/test/web/import.js +16 -1
  359. package/test/web/test.html +28 -5
  360. package/test/web/tests.js +30398 -17879
@@ -21,100 +21,98 @@ export { NodeList };
21
21
  * @summary A NodeList class
22
22
  */
23
23
  class NodeList extends Set {
24
- /**
25
- * @throws {Error} invalid value type
26
- * @param {NodeList|Node|Array<Node>}values
27
- */
28
- constructor(values) {
29
- super();
30
-
31
- const self = this;
32
-
33
- if (values === undefined) return;
34
-
35
- if (isArray(values)) {
36
- values.forEach((value) => self.add(value));
37
- } else if (isInstance(values, NodeList)) {
38
- values.forEach((value) => self.add(value));
39
- } else if (isInstance(values, Node)) {
40
- self.add(values);
41
- } else {
42
- throw new Error("invalid value type");
43
- }
44
- }
45
-
46
- /**
47
- * This method is called by the `instanceof` operator.
48
- * @returns {symbol}
49
- * @since 2.1.0
50
- */
51
- static get [instanceSymbol]() {
52
- return Symbol.for("@schukai/monster/types/node-list");
53
- }
54
-
55
- /**
56
- *
57
- * @param {Node} node
58
- * @return {Monster.Types.NodeList}
59
- */
60
- add(node) {
61
- super.add(validateInstance(node, Node));
62
- return this;
63
- }
64
-
65
- /**
66
- * @param {Node} node
67
- * @returns {NodeList}
68
- */
69
- remove(node) {
70
- super.delete(validateInstance(node, Node));
71
- return this;
72
- }
73
-
74
- /**
75
- * @param {Node} node
76
- * @returns {boolean}
77
- */
78
- has(node) {
79
- return super.has(validateInstance(node, Node));
80
- }
81
-
82
- /**
83
- * @returns {NodeList}
84
- */
85
- clear() {
86
- super.clear();
87
- return this;
88
- }
89
-
90
- /**
91
- * @returns {NodeList}
92
- */
93
- toArray() {
94
- return Array.from(this);
95
- }
96
-
97
- /**
98
- * @returns {NodeList}
99
- */
100
- toJSON() {
101
- return this.toArray();
102
- }
103
-
104
- /**
105
- * @returns {NodeList}
106
- */
107
- toString() {
108
- let parts = [];
109
-
110
- for (const node of this.toArray()) {
111
- parts.push(node.toString());
112
- }
113
-
114
- return parts.join("\n");
115
- }
116
-
117
- get length() {
118
- return super.size;
119
- }
24
+ /**
25
+ * @throws {Error} invalid value type
26
+ * @param {NodeList|Node|Array<Node>}values
27
+ */
28
+ constructor(values) {
29
+ super();
30
+
31
+ if (values === undefined) return;
32
+
33
+ if (isArray(values)) {
34
+ values.forEach((value) => this.add(value));
35
+ } else if (isInstance(values, NodeList)) {
36
+ values.forEach((value) => this.add(value));
37
+ } else if (isInstance(values, Node)) {
38
+ this.add(values);
39
+ } else {
40
+ throw new Error("invalid value type");
41
+ }
42
+ }
43
+
44
+ /**
45
+ * This method is called by the `instanceof` operator.
46
+ * @returns {symbol}
47
+ * @since 2.1.0
48
+ */
49
+ static get [instanceSymbol]() {
50
+ return Symbol.for("@schukai/monster/types/node-list");
51
+ }
52
+
53
+ /**
54
+ *
55
+ * @param {Node} node
56
+ * @return {Monster.Types.NodeList}
57
+ */
58
+ add(node) {
59
+ super.add(validateInstance(node, Node));
60
+ return this;
61
+ }
62
+
63
+ /**
64
+ * @param {Node} node
65
+ * @returns {NodeList}
66
+ */
67
+ remove(node) {
68
+ super.delete(validateInstance(node, Node));
69
+ return this;
70
+ }
71
+
72
+ /**
73
+ * @param {Node} node
74
+ * @returns {boolean}
75
+ */
76
+ has(node) {
77
+ return super.has(validateInstance(node, Node));
78
+ }
79
+
80
+ /**
81
+ * @returns {NodeList}
82
+ */
83
+ clear() {
84
+ super.clear();
85
+ return this;
86
+ }
87
+
88
+ /**
89
+ * @returns {NodeList}
90
+ */
91
+ toArray() {
92
+ return Array.from(this);
93
+ }
94
+
95
+ /**
96
+ * @returns {NodeList}
97
+ */
98
+ toJSON() {
99
+ return this.toArray();
100
+ }
101
+
102
+ /**
103
+ * @returns {NodeList}
104
+ */
105
+ toString() {
106
+ const parts = [];
107
+
108
+ for (const node of this.toArray()) {
109
+ parts.push(node.toString());
110
+ }
111
+
112
+ return parts.join("\n");
113
+ }
114
+
115
+ get length() {
116
+ return super.size;
117
+ }
120
118
  }
@@ -32,63 +32,63 @@ const isNodeListSymbol = Symbol("isNodeList");
32
32
  * @summary An iterator to run recursively through a tree of nodes
33
33
  */
34
34
  class NodeRecursiveIterator extends Base {
35
- /**
36
- * @param {Node} [data]
37
- */
38
- constructor(node) {
39
- super();
35
+ /**
36
+ * @param {Node} [data]
37
+ */
38
+ constructor(node) {
39
+ super();
40
40
 
41
- this[isNodeListSymbol] = false;
41
+ this[isNodeListSymbol] = false;
42
42
 
43
- // iterator is a nodelist
44
- if (isInstance(node, NodeList)) {
45
- let children = node;
46
- node = new Node();
47
- node.childNodes = children;
48
- this[isNodeListSymbol] = true;
49
- }
43
+ // iterator is a nodelist
44
+ if (isInstance(node, NodeList)) {
45
+ const children = node;
46
+ node = new Node();
47
+ node.childNodes = children;
48
+ this[isNodeListSymbol] = true;
49
+ }
50
50
 
51
- this[internalSymbol] = validateInstance(node, Node);
52
- }
51
+ this[internalSymbol] = validateInstance(node, Node);
52
+ }
53
53
 
54
- /**
55
- * @private
56
- * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield
57
- */
58
- [Symbol.iterator] = function* () {
59
- /**
60
- * The end of the generator function is reached. In this case, execution of the generator
61
- * ends and an IteratorResult is returned to the caller in which the value is undefined and done is true.
62
- * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield
63
- */
64
- if (this[internalSymbol] === undefined) {
65
- return;
66
- }
54
+ /**
55
+ * @private
56
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield
57
+ */
58
+ [Symbol.iterator] = function* () {
59
+ /**
60
+ * The end of the generator function is reached. In this case, execution of the generator
61
+ * ends and an IteratorResult is returned to the caller in which the value is undefined and done is true.
62
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield
63
+ */
64
+ if (this[internalSymbol] === undefined) {
65
+ return;
66
+ }
67
67
 
68
- // iterator is a nodelist and the main node is only a placeholder
69
- if (this[isNodeListSymbol] !== true) {
70
- yield this[internalSymbol];
71
- }
68
+ // iterator is a nodelist and the main node is only a placeholder
69
+ if (this[isNodeListSymbol] !== true) {
70
+ yield this[internalSymbol];
71
+ }
72
72
 
73
- if (this[internalSymbol].hasChildNodes()) {
74
- let childNodes = this[internalSymbol].childNodes;
73
+ if (this[internalSymbol].hasChildNodes()) {
74
+ const childNodes = this[internalSymbol].childNodes;
75
75
 
76
- for (let node of childNodes) {
77
- yield* new NodeRecursiveIterator(node);
78
- }
79
- }
76
+ for (const node of childNodes) {
77
+ yield* new NodeRecursiveIterator(node);
78
+ }
79
+ }
80
80
 
81
- return;
82
- };
81
+ return;
82
+ };
83
83
 
84
- /**
85
- * @param {function} callback
86
- * @return {Monster.Types.NodeRecursiveIterator}
87
- */
88
- forEach(callback) {
89
- for (const node of this) {
90
- callback(node);
91
- }
92
- return this;
93
- }
84
+ /**
85
+ * @param {function} callback
86
+ * @return {Monster.Types.NodeRecursiveIterator}
87
+ */
88
+ forEach(callback) {
89
+ for (const node of this) {
90
+ callback(node);
91
+ }
92
+ return this;
93
+ }
94
94
  }
@@ -24,84 +24,84 @@ export { ObservableQueue };
24
24
  * @summary An observable Queue (Fifo)
25
25
  */
26
26
  class ObservableQueue extends Queue {
27
- /**
28
- *
29
- */
30
- constructor() {
31
- super();
32
- this[internalSymbol] = {
33
- observers: new ObserverList(),
34
- };
35
- }
27
+ /**
28
+ *
29
+ */
30
+ constructor() {
31
+ super();
32
+ this[internalSymbol] = {
33
+ observers: new ObserverList(),
34
+ };
35
+ }
36
36
 
37
- /**
38
- * This method is called by the `instanceof` operator.
39
- * @returns {symbol}
40
- * @since 2.1.0
41
- */
42
- static get [instanceSymbol]() {
43
- return Symbol.for("@schukai/monster/types/observablequeue");
44
- }
37
+ /**
38
+ * This method is called by the `instanceof` operator.
39
+ * @returns {symbol}
40
+ * @since 2.1.0
41
+ */
42
+ static get [instanceSymbol]() {
43
+ return Symbol.for("@schukai/monster/types/observablequeue");
44
+ }
45
45
 
46
- /**
47
- * Add a new element to the end of the queue.
48
- *
49
- * @param {*} value
50
- * @returns {Queue}
51
- */
52
- add(value) {
53
- super.add(value);
54
- this.notifyObservers();
55
- return this;
56
- }
46
+ /**
47
+ * Add a new element to the end of the queue.
48
+ *
49
+ * @param {*} value
50
+ * @returns {Queue}
51
+ */
52
+ add(value) {
53
+ super.add(value);
54
+ this.notifyObservers();
55
+ return this;
56
+ }
57
57
 
58
- /**
59
- * remove all entries
60
- *
61
- * @returns {Queue}
62
- */
63
- clear() {
64
- super.clear();
65
- this.notifyObservers();
66
- return this;
67
- }
58
+ /**
59
+ * remove all entries
60
+ *
61
+ * @returns {Queue}
62
+ */
63
+ clear() {
64
+ super.clear();
65
+ this.notifyObservers();
66
+ return this;
67
+ }
68
68
 
69
- /**
70
- * Attach a new observer
71
- *
72
- * @param {Observer} observer
73
- * @returns {ProxyObserver}
74
- */
75
- attachObserver(observer) {
76
- this[internalSymbol].observers.attach(observer);
77
- return this;
78
- }
69
+ /**
70
+ * Attach a new observer
71
+ *
72
+ * @param {Observer} observer
73
+ * @returns {ProxyObserver}
74
+ */
75
+ attachObserver(observer) {
76
+ this[internalSymbol].observers.attach(observer);
77
+ return this;
78
+ }
79
79
 
80
- /**
81
- * Detach a observer
82
- *
83
- * @param {Observer} observer
84
- * @returns {ProxyObserver}
85
- */
86
- detachObserver(observer) {
87
- this[internalSymbol].observers.detach(observer);
88
- return this;
89
- }
80
+ /**
81
+ * Detach a observer
82
+ *
83
+ * @param {Observer} observer
84
+ * @returns {ProxyObserver}
85
+ */
86
+ detachObserver(observer) {
87
+ this[internalSymbol].observers.detach(observer);
88
+ return this;
89
+ }
90
90
 
91
- /**
92
- * Notify all observer
93
- *
94
- * @returns {Promise}
95
- */
96
- notifyObservers() {
97
- return this[internalSymbol].observers.notify(this);
98
- }
91
+ /**
92
+ * Notify all observer
93
+ *
94
+ * @returns {Promise}
95
+ */
96
+ notifyObservers() {
97
+ return this[internalSymbol].observers.notify(this);
98
+ }
99
99
 
100
- /**
101
- * @param {Observer} observer
102
- * @returns {boolean}
103
- */
104
- containsObserver(observer) {
105
- return this[internalSymbol].observers.contains(observer);
106
- }
100
+ /**
101
+ * @param {Observer} observer
102
+ * @returns {boolean}
103
+ */
104
+ containsObserver(observer) {
105
+ return this[internalSymbol].observers.contains(observer);
106
+ }
107
107
  }
@@ -45,108 +45,108 @@ export { Observer };
45
45
  * @memberOf Monster.Types
46
46
  */
47
47
  class Observer extends Base {
48
- /**
49
- *
50
- * @param {function} callback
51
- * @param {*} args
52
- */
53
- constructor(callback, ...args) {
54
- super();
55
-
56
- if (typeof callback !== "function") {
57
- throw new Error("observer callback must be a function");
58
- }
59
-
60
- this.callback = callback;
61
- this.arguments = args;
62
- this.tags = new TokenList();
63
- this.queue = new UniqueQueue();
64
- }
65
-
66
- /**
67
- * This method is called by the `instanceof` operator.
68
- * @returns {symbol}
69
- * @since 2.1.0
70
- */
71
- static get [instanceSymbol]() {
72
- return Symbol.for("@schukai/monster/types/observer");
73
- }
74
-
75
- /**
76
- *
77
- * @param {string} tag
78
- * @returns {Observer}
79
- */
80
- addTag(tag) {
81
- this.tags.add(tag);
82
- return this;
83
- }
84
-
85
- /**
86
- *
87
- * @param {string} tag
88
- * @returns {Observer}
89
- */
90
- removeTag(tag) {
91
- this.tags.remove(tag);
92
- return this;
93
- }
94
-
95
- /**
96
- *
97
- * @returns {Array}
98
- */
99
- getTags() {
100
- return this.tags.entries();
101
- }
102
-
103
- /**
104
- *
105
- * @param {string} tag
106
- * @returns {boolean}
107
- */
108
- hasTag(tag) {
109
- return this.tags.contains(tag);
110
- }
111
-
112
- /**
113
- *
114
- * @param {object} subject
115
- * @returns {Promise}
116
- */
117
- update(subject) {
118
- let self = this;
119
-
120
- return new Promise(function (resolve, reject) {
121
- if (!isObject(subject)) {
122
- reject("subject must be an object");
123
- return;
124
- }
125
-
126
- self.queue.add(subject);
127
-
128
- setTimeout(() => {
129
- try {
130
- // the queue and the settimeout ensure that an object is not
131
- // informed of the same change more than once.
132
- if (self.queue.isEmpty()) {
133
- resolve();
134
- return;
135
- }
136
-
137
- let s = self.queue.poll();
138
- let result = self.callback.apply(s, self.arguments);
139
-
140
- if (isObject(result) && result instanceof Promise) {
141
- result.then(resolve).catch(reject);
142
- return;
143
- }
144
-
145
- resolve(result);
146
- } catch (e) {
147
- reject(e);
148
- }
149
- }, 0);
150
- });
151
- }
48
+ /**
49
+ *
50
+ * @param {function} callback
51
+ * @param {*} args
52
+ */
53
+ constructor(callback, ...args) {
54
+ super();
55
+
56
+ if (typeof callback !== "function") {
57
+ throw new Error("observer callback must be a function");
58
+ }
59
+
60
+ this.callback = callback;
61
+ this.arguments = args;
62
+ this.tags = new TokenList();
63
+ this.queue = new UniqueQueue();
64
+ }
65
+
66
+ /**
67
+ * This method is called by the `instanceof` operator.
68
+ * @returns {symbol}
69
+ * @since 2.1.0
70
+ */
71
+ static get [instanceSymbol]() {
72
+ return Symbol.for("@schukai/monster/types/observer");
73
+ }
74
+
75
+ /**
76
+ *
77
+ * @param {string} tag
78
+ * @returns {Observer}
79
+ */
80
+ addTag(tag) {
81
+ this.tags.add(tag);
82
+ return this;
83
+ }
84
+
85
+ /**
86
+ *
87
+ * @param {string} tag
88
+ * @returns {Observer}
89
+ */
90
+ removeTag(tag) {
91
+ this.tags.remove(tag);
92
+ return this;
93
+ }
94
+
95
+ /**
96
+ *
97
+ * @returns {Array}
98
+ */
99
+ getTags() {
100
+ return this.tags.entries();
101
+ }
102
+
103
+ /**
104
+ *
105
+ * @param {string} tag
106
+ * @returns {boolean}
107
+ */
108
+ hasTag(tag) {
109
+ return this.tags.contains(tag);
110
+ }
111
+
112
+ /**
113
+ *
114
+ * @param {object} subject
115
+ * @returns {Promise}
116
+ */
117
+ update(subject) {
118
+ const self = this;
119
+
120
+ return new Promise(function (resolve, reject) {
121
+ if (!isObject(subject)) {
122
+ reject("subject must be an object");
123
+ return;
124
+ }
125
+
126
+ self.queue.add(subject);
127
+
128
+ setTimeout(() => {
129
+ try {
130
+ // the queue and the settimeout ensure that an object is not
131
+ // informed of the same change more than once.
132
+ if (self.queue.isEmpty()) {
133
+ resolve();
134
+ return;
135
+ }
136
+
137
+ const s = self.queue.poll();
138
+ const result = self.callback.apply(s, self.arguments);
139
+
140
+ if (isObject(result) && result instanceof Promise) {
141
+ result.then(resolve).catch(reject);
142
+ return;
143
+ }
144
+
145
+ resolve(result);
146
+ } catch (e) {
147
+ reject(e);
148
+ }
149
+ }, 0);
150
+ });
151
+ }
152
152
  }