@schukai/monster 1.17.0 → 1.17.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. package/CHANGELOG +6 -0
  2. package/README.md +3 -3
  3. package/dist/modules/constants.js +1 -1
  4. package/dist/modules/constraints/abstract.js +1 -1
  5. package/dist/modules/constraints/abstractoperator.js +1 -1
  6. package/dist/modules/constraints/andoperator.js +1 -1
  7. package/dist/modules/constraints/invalid.js +1 -1
  8. package/dist/modules/constraints/isarray.js +1 -1
  9. package/dist/modules/constraints/isobject.js +1 -1
  10. package/dist/modules/constraints/namespace.js +1 -1
  11. package/dist/modules/constraints/oroperator.js +1 -1
  12. package/dist/modules/constraints/valid.js +1 -1
  13. package/dist/modules/data/buildmap.js +1 -1
  14. package/dist/modules/data/diff.js +2 -2
  15. package/dist/modules/data/extend.js +1 -1
  16. package/dist/modules/data/namespace.js +1 -1
  17. package/dist/modules/data/pathfinder.js +1 -1
  18. package/dist/modules/data/pipe.js +1 -1
  19. package/dist/modules/data/transformer.js +1 -1
  20. package/dist/modules/dom/assembler.js +1 -1
  21. package/dist/modules/dom/attributes.js +1 -1
  22. package/dist/modules/dom/constants.js +1 -1
  23. package/dist/modules/dom/customcontrol.js +1 -1
  24. package/dist/modules/dom/customelement.js +1 -1
  25. package/dist/modules/dom/events.js +1 -1
  26. package/dist/modules/dom/locale.js +1 -1
  27. package/dist/modules/dom/namespace.js +1 -1
  28. package/dist/modules/dom/template.js +1 -1
  29. package/dist/modules/dom/theme.js +1 -1
  30. package/dist/modules/dom/updater.js +1 -1
  31. package/dist/modules/dom/util.js +1 -1
  32. package/dist/modules/i18n/locale.js +1 -1
  33. package/dist/modules/i18n/namespace.js +1 -1
  34. package/dist/modules/i18n/provider.js +1 -1
  35. package/dist/modules/i18n/providers/fetch.js +1 -1
  36. package/dist/modules/i18n/providers/namespace.js +1 -1
  37. package/dist/modules/i18n/translations.js +1 -1
  38. package/dist/modules/logging/handler/console.js +1 -1
  39. package/dist/modules/logging/handler/namespace.js +1 -1
  40. package/dist/modules/logging/handler.js +1 -1
  41. package/dist/modules/logging/logentry.js +1 -1
  42. package/dist/modules/logging/logger.js +1 -1
  43. package/dist/modules/logging/namespace.js +1 -1
  44. package/dist/modules/math/namespace.js +1 -1
  45. package/dist/modules/math/random.js +1 -1
  46. package/dist/modules/monster.js +1 -1
  47. package/dist/modules/namespace.js +1 -1
  48. package/dist/modules/text/formatter.js +1 -1
  49. package/dist/modules/text/namespace.js +1 -1
  50. package/dist/modules/types/base.js +1 -1
  51. package/dist/modules/types/basewithoptions.js +1 -1
  52. package/dist/modules/types/global.js +1 -1
  53. package/dist/modules/types/id.js +1 -1
  54. package/dist/modules/types/is.js +1 -1
  55. package/dist/modules/types/namespace.js +1 -1
  56. package/dist/modules/types/observer.js +1 -1
  57. package/dist/modules/types/observerlist.js +1 -1
  58. package/dist/modules/types/proxyobserver.js +1 -1
  59. package/dist/modules/types/queue.js +1 -1
  60. package/dist/modules/types/randomid.js +1 -1
  61. package/dist/modules/types/stack.js +1 -1
  62. package/dist/modules/types/tokenlist.js +1 -1
  63. package/dist/modules/types/typeof.js +1 -1
  64. package/dist/modules/types/uniquequeue.js +1 -1
  65. package/dist/modules/types/validate.js +1 -1
  66. package/dist/modules/types/version.js +2 -2
  67. package/dist/modules/util/clone.js +1 -1
  68. package/dist/modules/util/comparator.js +1 -1
  69. package/dist/modules/util/freeze.js +1 -1
  70. package/dist/modules/util/namespace.js +1 -1
  71. package/dist/monster.dev.js +295 -289
  72. package/dist/monster.dev.js.map +1 -1
  73. package/dist/monster.js +2 -2
  74. package/package.json +1 -1
  75. package/source/constraints/andoperator.js +5 -5
  76. package/source/constraints/invalid.js +3 -3
  77. package/source/constraints/isarray.js +3 -3
  78. package/source/constraints/isobject.js +3 -3
  79. package/source/constraints/oroperator.js +5 -5
  80. package/source/constraints/valid.js +3 -3
  81. package/source/data/buildmap.js +14 -11
  82. package/source/data/diff.js +6 -5
  83. package/source/data/extend.js +2 -2
  84. package/source/data/pathfinder.js +4 -4
  85. package/source/data/pipe.js +3 -3
  86. package/source/data/transformer.js +3 -3
  87. package/source/dom/assembler.js +2 -2
  88. package/source/dom/attributes.js +24 -24
  89. package/source/dom/customcontrol.js +2 -2
  90. package/source/dom/customelement.js +2 -2
  91. package/source/dom/events.js +4 -4
  92. package/source/dom/locale.js +2 -2
  93. package/source/dom/template.js +4 -4
  94. package/source/dom/theme.js +3 -3
  95. package/source/dom/updater.js +3 -3
  96. package/source/dom/util.js +6 -6
  97. package/source/i18n/locale.js +4 -4
  98. package/source/i18n/provider.js +2 -2
  99. package/source/i18n/providers/fetch.js +2 -2
  100. package/source/i18n/translations.js +2 -2
  101. package/source/logging/handler/console.js +2 -2
  102. package/source/logging/handler.js +2 -2
  103. package/source/logging/logentry.js +2 -2
  104. package/source/logging/logger.js +2 -2
  105. package/source/math/random.js +2 -2
  106. package/source/namespace.js +1 -1
  107. package/source/text/formatter.js +2 -2
  108. package/source/types/base.js +2 -2
  109. package/source/types/basewithoptions.js +2 -2
  110. package/source/types/global.js +4 -4
  111. package/source/types/id.js +2 -2
  112. package/source/types/is.js +20 -20
  113. package/source/types/observer.js +3 -3
  114. package/source/types/observerlist.js +2 -2
  115. package/source/types/proxyobserver.js +5 -5
  116. package/source/types/queue.js +3 -3
  117. package/source/types/randomid.js +2 -2
  118. package/source/types/stack.js +2 -2
  119. package/source/types/tokenlist.js +2 -2
  120. package/source/types/typeof.js +3 -3
  121. package/source/types/uniquequeue.js +2 -2
  122. package/source/types/validate.js +20 -20
  123. package/source/types/version.js +6 -6
  124. package/source/util/clone.js +2 -2
  125. package/source/util/comparator.js +3 -3
  126. package/source/util/freeze.js +2 -2
  127. package/test/cases/data/diff.js +36 -3
  128. package/test/cases/monster.js +1 -1
  129. package/test/web/monster-dev.html +3 -3
  130. package/test/web/monster.html +2 -2
  131. package/test/web/test.html +2 -2
  132. package/test/web/tests.js +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"monster.dev.js","mappings":"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B;;;;;;;;;;;;;;;ACxDa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC;;;;;;;;;;;;;;AAEF;AACJ;AACA;AACA;AACA;AACA;AACI,qBAAQd,KAAR,EAAe;AACX,UAAIR,qDAAO,CAACQ,KAAD,CAAX,EAAoB;AAChB,eAAOC,OAAO,CAACc,OAAR,CAAgBf,KAAhB,CAAP;AACH;;AAED,aAAOC,OAAO,CAACC,MAAR,CAAeF,KAAf,CAAP;AACH;;;;EAdiBD;;AAkBtBvB,gEAAiB,CAAC,qBAAD,EAAwBsC,OAAxB,CAAjB;;;;;;;;;;;;;;;;;;;;;;AChEa;AAEb;AACA;AACA;;;;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASE,UAAT,CAAoBhB,KAApB,EAA2B;AACvB,MAAIA,KAAK,KAAK3B,SAAd,EAAyB,OAAO,KAAP;AACzB,MAAI2B,KAAK,KAAK,IAAd,EAAoB,OAAO,KAAP;AACpB,SAAO,QAAOA,KAAP,aAAOA,KAAP,uBAAOA,KAAK,CAAGiB,MAAM,CAACC,QAAV,CAAZ,MAAoC,UAA3C;AACH;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,WAAT,CAAqBnB,KAArB,EAA4B;AACxB,MAAIoB,IAAJ;;AAEA,MAAIpB,KAAK,KAAK3B,SAAV,IAAuB2B,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAKqB,GAAvD,EAA4D;AACxD,WAAO,IAAP;AACH;;AAEDD,EAAAA,IAAI,WAAUpB,KAAV,CAAJ;;AAEA,MAAIoB,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAA9B,IAA0CA,IAAI,KAAK,SAAnD,IAAgEA,IAAI,KAAK,QAA7E,EAAuF;AACnF,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,QAAT,CAAkBtB,KAAlB,EAAyB;AACrB,SAAQ,qBAAoBA,KAApB,CAAD,GAA8B,IAA9B,GAAqC,KAA5C;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuB,SAAT,CAAmBvB,KAAnB,EAA0B;AAEtB,MAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,KAAhC,EAAuC;AACnC,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwB,QAAT,CAAkBxB,KAAlB,EAAyB;AACrB,MAAIA,KAAK,KAAK3B,SAAV,IAAuB,OAAO2B,KAAP,KAAiB,QAA5C,EAAsD;AAClD,WAAO,KAAP;AACH;;AACD,SAAO,IAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASyB,QAAT,CAAkBzB,KAAlB,EAAyB;AAErB,MAAIR,OAAO,CAACQ,KAAD,CAAX,EAAoB,OAAO,KAAP;AACpB,MAAImB,WAAW,CAACnB,KAAD,CAAf,EAAwB,OAAO,KAAP;;AAExB,MAAI,QAAOA,KAAP,MAAiB,QAArB,EAA+B;AAC3B,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0B,UAAT,CAAoB1B,KAApB,EAA2B2B,QAA3B,EAAqC;AAEjC,MAAI,CAACF,QAAQ,CAACzB,KAAD,CAAb,EAAsB,OAAO,KAAP;AACtB,MAAI,CAAC4B,UAAU,CAACD,QAAD,CAAf,EAA2B,OAAO,KAAP;AAC3B,MAAI,CAACA,QAAQ,CAAC1C,cAAT,CAAwB,WAAxB,CAAL,EAA2C,OAAO,KAAP;AAC3C,SAAQe,KAAK,YAAY2B,QAAlB,GAA8B,IAA9B,GAAqC,KAA5C;AAEH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASnC,OAAT,CAAiBQ,KAAjB,EAAwB;AACpB,MAAIT,KAAK,CAACC,OAAN,CAAcQ,KAAd,CAAJ,EAA0B;AACtB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4B,UAAT,CAAoB5B,KAApB,EAA2B;AACvB,MAAIR,OAAO,CAACQ,KAAD,CAAX,EAAoB,OAAO,KAAP;AACp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,CAAP;AACH;;;;EAVeD;;AAcpBvB,gEAAiB,CAAC,qBAAD,EAAwB8D,KAAxB,CAAjB;;;;;;;;;;;;;;;;;ACxDa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASM,QAAT,CAAkBC,OAAlB,EAA2BC,QAA3B,EAAqCC,aAArC,EAAoDC,WAApD,EAAiEC,MAAjE,EAAyE;AAErE,MAAMC,MAAM,GAAG,IAAIC,GAAJ,EAAf;AAEA,MAAIC,GAAJ;;AACA,MAAIxB,wDAAU,CAACkB,QAAD,CAAd,EAA0B;AACtBM,IAAAA,GAAG,GAAGN,QAAQ,CAACD,OAAD,CAAd;;AACA,QAAI,EAAEO,GAAG,YAAYD,GAAjB,CAAJ,EAA2B;AACvB,YAAM,IAAI1C,SAAJ,CAAc,yCAAd,CAAN;AACH;AACJ,GALD,MAKO,IAAIe,sDAAQ,CAACsB,QAAD,CAAZ,EAAwB;AAC3BM,IAAAA,GAAG,GAAG,IAAID,GAAJ,EAAN;AACAE,IAAAA,YAAY,CAACC,IAAb,CAAkBF,GAAlB,EAAuBP,OAAvB,EAAgCC,QAAhC;AACH,GAHM,MAGA;AACH,UAAM,IAAIrC,SAAJ,CAAc,0CAAd,CAAN;AACH;;AAED,MAAI,EAAE2C,GAAG,YAAYD,GAAjB,CAAJ,EAA2B;AACvB,WAAOD,MAAP;AACH;;AAGDE,EAAAA,GAAG,CAACG,OAAJ,CAAY,UAACC,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAa;AACrB,QAAI9B,wDAAU,CAACqB,MAAD,CAAd,EAAwB;AACpB,UAAIA,MAAM,CAACK,IAAP,CAAYI,CAAZ,EAAeF,CAAf,EAAkBC,CAAlB,MAAyB,IAA7B,EAAmC;AACtC;;AAEDA,IAAAA,CAAC,GAAGE,KAAK,CAACH,CAAD,EAAIR,WAAJ,EAAiBS,CAAjB,CAAT;AACAD,IAAAA,CAAC,GAAGG,KAAK,CAACH,CAAD,EAAIT,aAAJ,CAAT;AAEAG,IAAAA,MAAM,CAACU,GAAP,CAAWH,CAAX,EAAcD,CAAd;AACH,GATD;AAWA,SAAON,MAAP;AACH;;AAGD,SAASG,YAAT,CAAsBR,OAAtB,EAA+BC,QAA/B,EAAyCe,GAAzC,EAA8CC,SAA9C,EAAyD;AAErD,MAAMZ,MAAM,GAAG,IAAf;AACA,MAAMa,UAAU,GAAG,IAAIZ,GAAJ,EAAnB;AAEA,MAAMa,YAAY,GAAGd,MAAM,CAACe,IAA5B;AAEA,MAAIJ,GAAG,KAAKxF,SAAZ,EAAuBwF,GAAG,GAAG,EAAN;AAEvB,MAAIlE,KAAK,GAAGmD,QAAQ,CAAClE,KAAT,CAAe6D,qDAAf,CAAZ;AACA,MAAI/D,OAAO,GAAG,EAAd;AAAA,MAAkBwF,WAAW,GAAG,EAAhC;;AACA,KAAG;AAECxF,IAAAA,OAAO,GAAGiB,KAAK,CAACwE,KAAN,EAAV;AACAD,IAAAA,WAAW,CAACE,IAAZ,CAAiB1F,OAAjB;;AAEA,QAAIA,OAAO,KAAKiE,oDAAhB,EAA0B;AAEtB,UAAI0B,MAAM,GAAG,IAAI3B,sDAAJ,CAAeG,OAAf,CAAb;AACA,UAAIO,GAAG,SAAP;;AACA,UAAI;AACAA,QAAAA,GAAG,GAAGiB,MAAM,CAACC,MAAP,CAAcJ,WAAW,CAACK,IAAZ,CAAiB9B,qDAAjB,CAAd,CAAN;AACH,OAFD,CAEE,OAAO/C,CAAP,EAAU;AACR,YAAIwC,CAAC,GAAGxC,CAAR;AACA0D,QAAAA,GAAG,GAAG,IAAID,GAAJ,EAAN;AACH;;AATqB,iDAYDC,GAZC;AAAA;;AAAA;AAAA;AAAA;AAAA,cAYVK,CAZU;AAAA,cAYPe,CAZO;;AAclB,cAAIC,OAAO,GAAGjC,qDAAK,CAACqB,GAAD,CAAnB;AAEAK,UAAAA,WAAW,CAACd,GAAZ,CAAgB,UAAClB,CAAD,EAAO;AACnBuC,YAAAA,OAAO,CAACL,IAAR,CAAclC,CAAC,KAAKS,oDAAP,GAAmBc,CAAnB,GAAuBvB,CAApC;AACH,WAFD;AAIA,cAAIwC,EAAE,GAAGD,OAAO,CAACF,IAAR,CAAa9B,qDAAb,CAAT;AACA,cAAIkC,GAAG,GAAGtB,YAAY,CAACC,IAAb,CAAkBJ,MAAlB,EAA0BsB,CAA1B,EAA6B7E,KAAK,CAAC4E,IAAN,CAAW9B,qDAAX,CAA7B,EAAoDgC,OAApD,EAA6DD,CAA7D,CAAV;;AAEA,cAAI/C,sDAAQ,CAACkD,GAAD,CAAZ,EAAmB;AACfA,YAAAA,GAAG,CAAC,GAAD,CAAH,GAAWb,SAAX;AACH;;AAEDC,UAAAA,UAAU,CAACH,GAAX,CAAec,EAAf,EAAmBC,GAAnB;AA3BkB;;AAYtB,4DAA0B;AAAA;AAgBzB;AA5BqB;AAAA;AAAA;AAAA;AAAA;AA8BzB;AAGJ,GAtCD,QAsCShF,KAAK,CAACE,MAAN,GAAe,CAtCxB,EAXqD,CAmDrD;;;AACA,MAAImE,YAAY,KAAKd,MAAM,CAACe,IAA5B,EAAkC;AAAA,gDACTF,UADS;AAAA;;AAAA;AAC9B,6DAAiC;AAAA;AAAA,YAArBN,CAAqB;AAAA,YAAlBe,CAAkB;;AAC7BtB,QAAAA,MAAM,CAACU,GAAP,CAAWH,CAAX,EAAce,CAAd;AACH;AAH6B;AAAA;AAAA;AAAA;AAAA;AAIjC,GAxDoD,CA0DrD;AACA;AACA;;;AAEA,SAAO3B,OAAP;AAEH;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASc,KAAT,CAAed,OAAf,EAAwB+B,UAAxB,EAAoCC,YAApC,EAAkD;AAC9C,MAAID,UAAU,KAAKvG,SAAnB,EAA8B,OAAOwG,YAAY,GAAGA,YAAH,GAAkBhC,OAArC;AAC9BN,EAAAA,kEAAc,CAACqC,UAAD,CAAd;;AAEA,MAAME,MAAM,4BAAG,mCAAH;AAAA;AAAA;AAAA,IAAZ;;AACA,MAAMC,KAAK,sBAAOH,UAAU,CAACI,QAAX,CAAoBF,MAApB,CAAP,CAAX;;AAEA,MAAIT,MAAM,GAAG,IAAI3B,sDAAJ,CAAeG,OAAf,CAAb;;AAEA,MAAIkC,KAAK,CAAClF,MAAN,KAAiB,CAArB,EAAwB;AACpB,WAAOwE,MAAM,CAACC,MAAP,CAAcM,UAAd,CAAP;AACH;;AAEDG,EAAAA,KAAK,CAACxB,OAAN,CAAc,UAACrB,CAAD,EAAO;AACjB,QAAI+C,MAAM,GAAG/C,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAG,QAAH,CAAd;AACA,QAAIgD,WAAW,GAAGD,MAAH,aAAGA,MAAH,uBAAGA,MAAM,CAAG,aAAH,CAAxB;AACA,QAAIC,WAAW,KAAK7G,SAApB,EAA+B;AAE/B,QAAI8G,IAAI,GAAGF,MAAH,aAAGA,MAAH,uBAAGA,MAAM,CAAG,MAAH,CAAjB;AAEA,QAAIzB,CAAC,GAAGa,MAAM,CAACC,MAAP,CAAca,IAAd,CAAR;AACA,QAAI3B,CAAC,KAAKnF,SAAV,EAAqBmF,CAAC,GAAGqB,YAAJ;AAErBD,IAAAA,UAAU,GAAGA,UAAU,CAACQ,UAAX,CAAsBF,WAAtB,EAAmC1B,CAAnC,CAAb;AAGH,GAbD;AAeA,SAAOoB,UAAP;AAEH;;AAGDpG,gEAAiB,CAAC,cAAD,EAAiBoE,QAAjB,CAAjB;;;;;;;;;;;;;;;;;;;;;;;ACtZa;AAEb;AACA;AACA;;AAEA;AACA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASyC,gBAAT,CAA0BrF,KAA1B,EAAiC;AAC7B,MAAI,CAACgB,kDAAU,CAAChB,KAAD,CAAf,EAAwB;AACpB,UAAM,IAAIS,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASsF,iBAAT,CAA2BtF,KAA3B,EAAkC;AAC9B,MAAI,CAACmB,mDAAW,CAACnB,KAAD,CAAhB,EAAyB;AACrB,UAAM,IAAIS,SAAJ,CAAc,0BAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuF,eAAT,CAAyBvF,KAAzB,EAAgC;AAC5B,MAAI,CAACuB,iDAAS,CAACvB,KAAD,CAAd,EAAuB;AACnB,UAAM,IAAIS,SAAJ,CAAc,wBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuC,cAAT,CAAwBvC,KAAxB,EAA+B;AAC3B,MAAI,CAACwB,gDAAQ,CAACxB,KAAD,CAAb,EAAsB;AAClB,UAAM,IAAIS,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwF,cAAT,CAAwBxF,KAAxB,EAA+B;AAC3B,MAAI,CAACyB,gDAAQ,CAACzB,KAAD,CAAb,EAAsB;AAClB,UAAM,IAAIS,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASyF,gBAAT,CAA0BzF,KAA1B,EAAiC2B,QAAjC,EAA2C;AACvC,MAAI,CAACD,kDAAU,CAAC1B,KAAD,EAAQ2B,QAAR,CAAf,EAAkC;AAC9B,QAAI+D,CAAC,GAAG,EAAR;;AACA,QAAIjE,gDAAQ,CAACE,QAAD,CAAR,IAAsBC,kDAAU,CAACD,QAAD,CAApC,EAAgD;AAC5C+D,MAAAA,CAAC,GAAG/D,QAAH,aAAGA,QAAH,uBAAGA,QAAQ,CAAG,MAAH,CAAZ;AACH;;AAED,QAAI+D,CAAJ,EAAO;AACHA,MAAAA,CAAC,GAAG,MAAMA,CAAV;AACH;;AAED,UAAM,IAAIjF,SAAJ,CAAc,gCAAgCiF,CAA9C,CAAN;AACH;;AACD,SAAO1F,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2F,aAAT,CAAuB3F,KAAvB,EAA8B;AAC1B,MAAI,CAACR,+CAAO,CAACQ,KAAD,CAAZ,EAAqB;AACjB,UAAM,IAAIS,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4F,cAAT,CAAwB5F,KAAxB,EAA+B;AAC3B,MAAI,CAACsB,gDAAQ,CAACtB,KAAD,CAAb,EAAsB;AAClB,UAAM,IAAIS,SAAJ,CAAc,wBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6F,gBAAT,CAA0B7F,KAA1B,EAAiC;AAC7B,MAAI,CAAC4B,kDAAU,CAAC5B,KAAD,CAAf,EAAwB;AACpB,UAAM,IAAIS,SAAJ,CAAc,yBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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8DAAgB,CAACxG,CAAD,CAAhB;AACA,SAAOA,CAAP;AACH;;AAGDb,gEAAiB,CAAC,eAAD,EAAkBuH,SAAlB,EAA6B2B,eAA7B,EAA8CC,iBAA9C,CAAjB;;;;;;;;;;;;;;;;;;;ACpJa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMlF,SAAS,GAAG,GAAlB;AACP;AACA;AACA;AACA;;AACO,IAAME,QAAQ,GAAG,GAAjB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMD;;;;;AAEF;AACJ;AACA;AACA;AACA;AACI,sBAAYmF,MAAZ,EAAoB;AAAA;;AAAA;;AAChB;;AAEA,QAAI1G,yDAAW,CAAC0G,MAAD,CAAf,EAAyB;AACrB,YAAM,IAAIvJ,KAAJ,CAAU,yCAAV,CAAN;AACH;;AAED,UAAKuJ,MAAL,GAAcA,MAAd;AACA,UAAKC,QAAL,GAAgBnF,QAAhB;AARgB;AASnB;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;;WACI,qBAAYoF,QAAZ,EAAsB;AAClBxF,MAAAA,kEAAc,CAACwF,QAAD,CAAd;AAC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AKA,IAAL,CAAUxJ,MAAV,GAAmB,CAA/B,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,cAAKG,KAAL,EAAY;AACR,WAAKqJ,IAAL,CAAUjF,IAAV,CAAepE,KAAf;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ,WAAKqJ,IAAL,GAAY,EAAZ;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,eAAM;AACF,UAAI,KAAKL,OAAL,EAAJ,EAAoB;AAChB,eAAO3K,SAAP;AACH;;AACD,aAAO,KAAKgL,IAAL,CAAUR,GAAV,EAAP;AACH;;;;EAhEe/I;;AAqEpBtB,gEAAiB,CAAC,eAAD,EAAkBoJ,KAAlB,CAAjB;;;;;;;;;;;;;;ACrGa;AAEb;AACA;AACA;;;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAAS0B,IAAT,CAAcC,KAAd,EAAqBC,MAArB,EAA6B;AACzB,SAAOC,MAAM,CAACF,KAAD,EAAQC,MAAR,CAAb;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,OAAT,CAAiBxH,CAAjB,EAAoBC,CAApB,EAAuBf,IAAvB,EAA6B;AACzB,MAAI5B,qDAAO,CAAC4B,IAAD,CAAX,EAAmB;AACf,QAAMuI,IAAI,GAAGzH,CAAC,CAACrC,MAAF,GAAWsC,CAAC,CAACtC,MAAb,GAAsB,IAAIN,KAAJ,CAAU2C,CAAC,CAACrC,MAAZ,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A;AACA;AAOA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMD;;;;;AACF;AACJ;AACA;AACA;AACI,uBAAYnG,UAAZ,EAAwB;AAAA;;AAAA;;AACpB;AACArC,IAAAA,kEAAc,CAACqC,UAAD,CAAd;AAEA,UAAKgH,IAAL,GAAYC,WAAW,CAACjH,UAAD,CAAvB;AACA,UAAKkH,OAAL,GAAe,MAAKF,IAAL,CAAUzH,KAAV,EAAf;AACA,UAAK4H,SAAL,GAAiB,IAAI5I,GAAJ,EAAjB;AANoB;AAQvB;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACI,qBAAYjE,IAAZ,EAAkBgM,QAAlB,EAA4BC,OAA5B,EAAqC;AACjC5I,MAAAA,kEAAc,CAACrD,IAAD,CAAd;AACA2G,MAAAA,oEAAgB,CAACqF,QAAD,CAAhB;;AAEA,UAAIC,OAAO,KAAK9M,SAAhB,EAA2B;AACvBmH,QAAAA,kEAAc,CAAC2F,OAAD,CAAd;AACH;;AAED,WAAKY,SAAL,CAAenI,GAAf,CAAmB1E,IAAnB,EAAyB;AACrBgM,QAAAA,QAAQ,EAAEA,QADW;AAErBC,QAAAA,OAAO,EAAEA;AAFY,OAAzB;AAKA,aAAO,IAA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a;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA,IAAMoB,kBAAkB,GAAGnU,MAAM,CAACoU,GAAP,CAAWnX,oEAAX,CAA3B;AAEA;AACA;AACA;AACA;;AACA,IAAMoX,gBAAgB,GAAGrU,MAAM,CAACoU,GAAP,CAAWxB,kEAAX,CAAzB;AAEA;AACA;AACA;AACA;;AACA,IAAM0B,gBAAgB,GAAGtU,MAAM,CAAC,kBAAD,CAA/B;AAEA;AACA;AACA;AACA;;AACA,IAAMuU,oBAAoB,GAAGvU,MAAM,CAAC,sBAAD,CAAnC;AAGA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM6S;;;;;AAEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACI,2BAAc;AAAA;;AAAA;;AACV;AACA,UAAKsB,kBAAL,IAA2B,IAAIjH,kEAAJ,CAAkB;AAAC,iBAAWzD,uDAAM,CAAC,EAAD,EAAK,MAAK+K,QAAV,EAAoBC,wBAAwB,CAACpS,IAAzB,+BAApB;AAAlB,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AR,GAAkB,KAAlB;AACH;;AAED;;AACJ,WAAK,MAAL;AACA;AACI,YAAI1b,IAAI,KAAK,OAAb,EAAsB;AAClB2S,UAAAA,OAAO,CAAC7R,KAAR,GAAiBA,KAAK,KAAK3B,SAAV,GAAsB,EAAtB,GAA2B2B,KAA5C;AACH;;AAED;AAzBR;AA6BH,GA9BM,MA8BA,IAAI6R,OAAO,YAAYgJ,mBAAvB,EAA4C;AAC/C,QAAI3b,IAAI,KAAK,OAAb,EAAsB;AAClB2S,MAAAA,OAAO,CAAC7R,KAAR,GAAiBA,KAAK,KAAK3B,SAAV,GAAsB,EAAtB,GAA2B2B,KAA5C;AACH;AACJ;AAEJ;;AAEDxB,gEAAiB,CAAC,aAAD,EAAgB2W,OAAhB,CAAjB;;;;;;;;;;;;;;;;;ACjvBa;AAEb;AACA;AACA;;;;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASuE,WAAT,GAAuB;AAAA;;AACnB,MAAI/S,QAAQ,iBAAGZ,2DAAS,EAAZ,+CAAG,WAAc,UAAd,CAAf;;AACA,MAAI,QAAOY,QAAP,MAAoB,QAAxB,EAAkC;AAC9B,UAAM,IAAIrI,KAAJ,CAAU,2BAAV,CAAN;AACH;;AAED,SAAOqI,QAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuW,SAA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B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,mBAAT,GAA+B;AAE3B,MAAMtX,QAAQ,GAAG+S,qDAAW,EAA5B;AAEA,MAAI3B,IAAI,GAAGpR,QAAQ,CAAC8S,aAAT,CAAuB,MAAvB,CAAX;;AACA,MAAI1B,IAAI,YAAY9F,WAAhB,IAA+B8F,IAAI,CAACtF,YAAL,CAAkB,MAAlB,CAAnC,EAA8D;AAC1D,QAAIyL,MAAM,GAAGnG,IAAI,CAACpF,YAAL,CAAkB,MAAlB,CAAb;;AACA,QAAIuL,MAAJ,EAAY;AACR,aAAO,IAAIH,wDAAJ,CAAgBG,MAAhB,CAAP;AACH;AACJ;;AAED,SAAOH,4DAAW,CAACC,gBAAD,CAAlB;AACH;;AAEDxf,gEAAiB,CAAC,aAAD,EAAgByf,mBAAhB,CAAjB;;;;;;;;;;;;;;;;;AC1Da;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA,IAAME,gBAAgB,GAAGld,MAAM,CAAC,YAAD,CAA/B;AAEA;AACA;AACA;AACA;;AACA,IAAMmd,kBAAkB,GAAGnd,MAAM,CAAC,cAAD,CAAjC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMod;;;;;AAEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,kBAAYC,QAAZ,EAAsBC,MAAtB,EAA8BC,MAA9B,EAAsCC,QAAtC,EAAgDC,OAAhD,EAAyDC,UAAzD,EAAqE;AAAA;;AAAA;;AACjE;AAEA,UAAKR,gBAAL,IAAyB;AACrBG,MAAAA,QAAQ,EAAGA,QAAQ,KAAKjgB,SAAd,GAA2BA,SAA3B,GAAuCkE,kEAAc,CAAC+b,QAAD,CAD1C;AAErBE,MAAAA,MAAM,EAAGA,MAAM,KAAKngB,SAAZ,GAAyBA,SAAzB,GAAqCkE,kEAAc,CAACic,MAAD,CAFtC;AAGrBD,MAAAA,MAAM,EAAGA,MAAM,KAAKlgB,SAAZ,GAAyBA,SAAzB,GAAqCkE,kEAAc,CAACgc,MAAD,CAHtC;AAIrBE,MAAAA,QAAQ,EAAGA,QAAQ,KAAKpgB,SAAd,GAA2BA,SAA3B,GAAuCkE,kEAAc,CAACkc,QAAD,CAJ1C;AAKrBC,MAAAA,OAAO,EAAGA,OAAO,KAAKrgB,SAAb,GAA0BA,SAA1B,GAAsCkE,kEAAc,CAACmc,OAAD,CALxC;AAMrBC,MAAAA,UAAU,EAAGA,UAAU,KAAKtgB,SAAhB,GAA6BA,SAA7B,GAAyCkE,kEAAc,CAACoc,UAAD;AAN9C,KAAzB;AASA,QAAIvf,CAAC,GAAG,EAAR;AACA,QAAIkf,QAAQ,KAAKjgB,SAAjB,EAA4Be,CAAC,CAACgF,IAAF,CAAOka,QAAP;AAC5B,QAAIE,MAAM,KAAKngB,SAAf,EAA0Be,CAAC,CAACgF,IAAF,CAAOoa,MAAP;AAC1B,QAAID,MAAM,KAAKlgB,SAAf,EAA0Be,CAAC,CAACgF,IAAF,CAAOma,MAAP;AAC1B,QAAIE,QAAQ,KAAKpgB,SAAjB,EAA4Be,CAAC,CAACgF,IAAF,CAAOqa,QAAP;AAC5B,QAAIC,OAAO,KAAKrgB,SAAhB,EAA2Be,CAAC,CAACgF,IAAF,CAAOsa,OAAP;AAC3B,QAAIC,UAAU,KAAKtgB,SAAnB,EAA8Be,CAAC,CAACgF,IAAF,CAAOua,UAAP;;AAE9B,QAAIvf,CAAC,CAACS,MAAF,KAAa,CAAjB,EAAoB;AAChB,YAAM,IAAIvB,KAAJ,CAAU,oBAAV,CAAN;AACH;;AAED,UAAK8f,kBAAL,IAA2Bhf,CAAC,CAACmF,IAAF,CAAO,GAAP,CAA3B;AAxBiE;AA0BpE;AAED;AACJ;AACA;;;;;SACI,eAAmB;AACf,aAAO,KAAK6Z,kBAAL,CAAP;AACH;AAED;AACJ;AACA;;;;SACI,eAAe;AACX,aAAO,KAAKD,gBAAL,EAAuBG,QAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAa;AACT,aAAO,KAAKH,gBAAL,EAAuBI,MAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAa;AACT,aAAO,KAAKJ,gBAAL,EAAuBK,MAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAe;AACX,aAAO,KAAKL,gBAAL,EAAuBM,QAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAc;AACV,aAAO,KAAKN,gBAAL,EAAuBO,OAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAiB;AACb,aAAO,KAAKP,gBAAL,EAAuBS,YAA9B;AACH;AAGD;AACJ;AACA;;;;WACI,oBAAW;AACP,aAAO,KAAK,KAAKC,YAAjB;AACH;AAED;AACJ;AACA;;;;WACI,kBAAS;AACL,aAAOrc,qDAAK,CAAC,KAAK2b,gBAAL,CAAD,CAAZ;AACH;;;;EArGgBre;AA0GrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASie,WAAT,CAAqBG,MAArB,EAA6B;AAEzBA,EAAAA,MAAM,GAAG3b,kEAAc,CAAC2b,MAAD,CAAd,CAAuB5R,OAAvB,CAA+B,IAA/B,EAAqC,GAArC,CAAT;AAEA,MAAIgS,QAAJ;AAAA,MAAcC,MAAd;AAAA,MAA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;;;;WACI,qBAAYF,QAAZ,EAAsB;AAClBjd,MAAAA,mEAAe,CAACid,QAAD,CAAf;AACA,WAAKA,QAAL,GAAgBA,QAAhB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,uBAAc;AACV,aAAO,KAAKA,QAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,kBAAS;AACL,WAAKG,WAAL,CAAiBZ,2CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,wBAAW;AACP,WAAKY,WAAL,CAAiBN,6CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,wBAAW;AACP,WAAKM,WAAL,CAAiBX,6CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,uBAAU;AACN,WAAKW,WAAL,CAAiBR,4CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,uBAAU;AACN,WAAKQ,WAAL,CAAiBL,4CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,wBAAW;AACP,WAAKK,WAAL,CAAiBV,6CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,wBAAW;AACP,WAAKU,WAAL,CAAiBT,6CAAjB;AACA,aAAO,IAAP;AACH;;;;AAGD;AACJ;AACA;AACA;AACA;AACA;AACI,sBAAS;AACL,WAAKS,WAAL,CAAiBP,2CAAjB;AACA,aAAO,IAAP;AACH;;;;EA7IiB7iB;;AAmJtBtB,gEAAiB,CAAC,iBAAD,EAAoBskB,OAApB,CAAjB;;;;;;;;;;;;;;;ACtLa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMT;;;;;AACF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A;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA,8CAA8C;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AAEa;;AAEb;AACA;AACA;AACA;AACA;CAGA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,IAAII,QAAJ;;AACA,IAAI;AACAA,EAAAA,QAAQ,GAAGhoB,yEAAA,CAA8B,qBAA9B,CAAX;AACH,CAFD,CAEE,OAAOyB,CAAP,EAAU,CAEX;;AAED,IAAI,CAACumB,QAAL,EAAeA,QAAQ,GAAG,SAAX;AAEfhoB,mEAAA,GAA0BgoB,QAA1B,IAAsChoB,mDAAtC","sources":["webpack:///webpack/universalModuleDefinition","webpack:///../../../../packages/monster/source/constants.js","webpack:///../../../../packages/monster/source/namespace.js","webpack:///../../../../packages/monster/source/constraints/abstract.js","webpack:///../../../../packages/monster/source/types/base.js","webpack:///../../../../packages/monster/source/constraints/abstractoperator.js","webpack:///../../../../packages/monster/source/constraints/andoperator.js","webpack:///../../../../packages/monster/source/constraints/invalid.js","webpack:///../../../../packages/monster/source/constraints/isarray.js","webpack:///../../../../packages/monster/source/types/is.js","webpack:///../../../../packages/monster/source/constraints/isobject.js","webpack:///../../../../packages/monster/source/constraints/oroperator.js","webpack:///../../../../packages/monster/source/constraints/valid.js","webpack:///../../../../packages/monster/source/data/buildmap.js","webpack:///../../../../packages/monster/source/types/validate.js","webpack:///../../../../packages/monster/source/util/clone.js","webpack:///../../../../packages/monster/source/types/global.js","webpack:///../../../../packages/monster/source/data/pathfinder.js","webpack:///../../../../packages/monster/source/types/stack.js","webpack:///../../../../packages/monster/source/data/diff.js","webpack:///../../../../packages/monster/source/data/extend.js","webpack:///../../../../packages/monster/source/types/typeof.js","webpack:///../../../../packages/monster/source/data/pipe.js","webpack:///../../../../packages/monster/source/data/transformer.js","webpack:///../../../../packages/monster/source/types/id.js","webpack:///../../../../packages/monster/source/dom/assembler.js","webpack:///../../../../packages/monster/source/types/proxyobserver.js","webpack:///../../../../packages/monster/source/types/observer.js","webpack:///../../../../packages/monster/source/types/tokenlist.js","webpack:///../../../../packages/monster/source/types/uniquequeue.js","webpack:///../../../../packages/monster/source/types/queue.js","webpack:///../../../../packages/monster/source/types/observerlist.js","webpack:///../../../../packages/monster/source/dom/attributes.js","webpack:///../../../../packages/monster/source/dom/constants.js","webpack:///../../../../packages/monster/source/dom/customcontrol.js","webpack:///../../../../packages/monster/source/dom/customelement.js","webpack:///../../../../packages/monster/source/dom/template.js","webpack:///../../../../packages/monster/source/dom/theme.js","webpack:///../../../../packages/monster/source/dom/updater.js","webpack:///../../../../packages/monster/source/dom/util.js","webpack:///../../../../packages/monster/source/dom/events.js","webpack:///../../../../packages/monster/source/dom/locale.js","webpack:///../../../../packages/monster/source/i18n/locale.js","webpack:///../../../../packages/monster/source/i18n/provider.js","webpack:///../../../../packages/monster/source/types/basewithoptions.js","webpack:///../../../../packages/monster/source/i18n/translations.js","webpack:///../../../../packages/monster/source/i18n/providers/fetch.js","webpack:///../../../../packages/monster/source/text/formatter.js","webpack:///../../../../packages/monster/source/logging/handler.js","webpack:///../../../../packages/monster/source/logging/logentry.js","webpack:///../../../../packages/monster/source/logging/logger.js","webpack:///../../../../packages/monster/source/logging/handler/console.js","webpack:///../../../../packages/monster/source/math/random.js","webpack:///../../../../packages/monster/source/types/randomid.js","webpack:///../../../../packages/monster/source/types/version.js","webpack:///../../../../packages/monster/source/util/comparator.js","webpack:///../../../../packages/monster/source/util/freeze.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///../../../../packages/monster/source/monster.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"window\"] = factory();\n\telse\n\t\troot[\"window\"] = factory();\n})(self, function() {\nreturn ","'use strict';\n\nimport {Monster} from './namespace.js';\n/**\n * Property-Keys\n * @author schukai GmbH\n */\n\n/**\n * formerly known as PROPERTY_KEY_OPTIONS\n *\n * @memberOf Monster\n * @type {string}\n * @since 1.15.0\n */\nconst PROPERTY_KEY_INTERNALDATA = 'monsterInternalData';\n\n\nexport {\n Monster,\n PROPERTY_KEY_INTERNALDATA\n}","'use strict';\n\n/**\n * Main namespace for Monster.\n *\n * @namespace Monster\n * @author schukai GmbH\n */\n\n\n/**\n * namespace class objects form the basic framework of the namespace administration.\n *\n * all functions, classes and objects of the library hang within the namespace tree.\n *\n * via `obj instanceof Monster.Namespace` it is also easy to check whether it is an object or a namespace.\n *\n * @memberOf Monster\n * @copyright schukai GmbH\n * @since 1.0.0\n */\nclass Namespace {\n\n /**\n *\n * @param namespace\n * @param obj\n */\n constructor(namespace) {\n if (namespace === undefined || typeof namespace !== 'string') {\n throw new Error(\"namespace is not a string\")\n }\n this.namespace = namespace;\n }\n\n /**\n *\n * @returns {string}\n */\n getNamespace() {\n return this.namespace;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.getNamespace();\n }\n}\n\n/**\n * @type {Namespace}\n * @global\n */\nexport const Monster = new Namespace(\"Monster\");\n\n/**\n * To expand monster, the `Monster.assignToNamespace()` method can be used.\n *\n * you must call the method in the monster namespace. this allows you to mount your own classes, objects and functions into the namespace.\n *\n * To avoid confusion and so that you do not accidentally overwrite existing functions, you should use the custom namespace `X`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/namespace.js';\n * function hello() {\n * console.log('Hello World!');\n * }\n * Monster.assignToNamespace(\"Monster.X\", hello)\n * Monster.X.hello(); // ↦ Hello World!\n * </script>\n *\n * ```\n *\n * @param {string} ns\n * @param {function} obj\n * @return {current}\n * @memberOf Monster\n * @throws {Error} no functions have been passed.\n * @throws {Error} the name of the class or function cannot be resolved.\n * @throws {Error} the first argument is not a function or class.\n * @throws {Error} exception\n * @since 1.0.0\n */\nfunction assignToNamespace(ns, ...obj) {\n let current = namespaceFor(ns.split(\".\"));\n\n if (obj.length === 0) {\n throw new Error('no functions have been passed.');\n }\n\n for (let i = 0, l = obj.length; i < l; i++) {\n current[objectName(obj[i])] = obj[i];\n }\n\n return current\n}\n\n/**\n *\n * @param {class|function} fn\n * @returns {string}\n * @private\n * @throws {Error} the name of the class or function cannot be resolved.\n * @throws {Error} the first argument is not a function or class.\n * @throws {Error} exception\n */\nfunction objectName(fn) {\n try {\n\n if (typeof fn !== 'function') {\n throw new Error(\"the first argument is not a function or class.\");\n }\n\n if (fn.hasOwnProperty('name')) {\n return fn.name;\n }\n\n if (\"function\" === typeof fn.toString) {\n let s = fn.toString();\n let f = s.match(/^\\s*function\\s+([^\\s(]+)/);\n if (Array.isArray(f) && typeof f[1] === 'string') {\n return f[1];\n }\n let c = s.match(/^\\s*class\\s+([^\\s(]+)/);\n if (Array.isArray(c) && typeof c[1] === 'string') {\n return c[1];\n }\n }\n\n } catch (e) {\n throw new Error(\"exception \" + e);\n }\n\n throw new Error(\"the name of the class or function cannot be resolved.\");\n}\n\n/**\n *\n * @param parts\n * @returns {Namespace}\n * @private\n */\nfunction namespaceFor(parts) {\n let space = Monster, ns = 'Monster';\n\n for (let i = 0; i < parts.length; i++) {\n\n if (\"Monster\" === parts[i]) {\n continue;\n }\n\n ns += '.' + parts[i];\n\n if (!space.hasOwnProperty(parts[i])) {\n space[parts[i]] = new Namespace(ns);\n }\n\n space = space[parts[i]];\n }\n\n return space;\n}\n\n\nassignToNamespace('Monster', assignToNamespace, Namespace);\nexport {assignToNamespace}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\n\n\n/**\n * The abstract constraint defines the api for all constraints. mainly the method isValid() is defined.\n *\n * derived classes must implement the method isValid().\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass AbstractConstraint extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n }\n\n /**\n * this method must return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n return Promise.reject(value);\n }\n}\n\nassignToNamespace('Monster.Constraints', AbstractConstraint);\nexport {Monster, AbstractConstraint}","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\n\n/**\n * This is the base class from which all monster classes are derived.\n *\n * You can call the method via the monster namespace `new Monster.Types.Base()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/base.js';\n * console.log(new Monster.Types.Base())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Base} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/base.js';\n * console.log(new Base())\n * </script>\n * ```\n *\n * The class was formerly called Object.\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Base extends Object {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return JSON.stringify(this);\n };\n\n\n}\n\nassignToNamespace('Monster.Types', Base);\nexport {Monster, Base}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * Operators allow you to link constraints together. for example, you can check whether a value is an object or an array. each operator has two operands that are linked together.\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass AbstractOperator extends AbstractConstraint {\n\n /**\n *\n * @param {AbstractConstraint} operantA\n * @param {AbstractConstraint} operantB\n * @throws {TypeError} \"parameters must be from type AbstractConstraint\"\n */\n constructor(operantA, operantB) {\n super();\n\n if (!(operantA instanceof AbstractConstraint) || !(operantB instanceof AbstractConstraint)) {\n throw new TypeError(\"parameters must be from type AbstractConstraint\")\n }\n\n this.operantA = operantA;\n this.operantB = operantB;\n\n }\n\n\n}\n\nassignToNamespace('Monster.Constraints', AbstractOperator);\nexport {Monster, AbstractOperator}","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractOperator} from \"./abstractoperator.js\";\n\n/**\n * The AndOperator is used to link several contraints. The constraint is fulfilled if all constraints of the operators are fulfilled.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/andoperator.js';\n * new Monster.Constraint.AndOperator();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/andoperator.js';\n * new AndOperator();\n * </script>\n * ```\n *\n * @example\n *\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/valid.js';\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/invalid.js';\n * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/andoperator.js';\n *\n * new AndOperator(\n * new Valid(), new Valid()).isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ true\n *\n * new AndOperator(\n * new Invalid(), new Valid()).isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ false\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass AndOperator extends AbstractOperator {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n return Promise.all([this.operantA.isValid(value), this.operantB.isValid(value)]);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', AndOperator);\nexport {Monster, AndOperator}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * The invalid constraint allows an always invalid query to be performed. this constraint is mainly intended for testing.\n *\n * You can call the method via the monster namespace `new Monster.Constraint.Invalid()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/invalid.js';\n * new Monster.Constraint.Invalid();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/invalid.js';\n * new Invalid();\n * </script>\n * ```\n *\n * @example\n *\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/invalid.js';\n *\n * new Invalid().isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ false\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass Invalid extends AbstractConstraint {\n\n /**\n * this method return a rejected promise\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n return Promise.reject(value);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', Invalid);\nexport {Monster, Invalid}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isArray} from \"../types/is.js\";\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * You can call the method via the monster namespace `new Monster.Constraint.IsObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/isarray.js';\n * console.log(new Monster.Constraint.IsArray())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/isarray.js';\n * console.log(new IsArray())\n * </script>\n * ```\n *\n * @example\n *\n * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/isarray.js';\n *\n * new IsArray()\n * .isValid([])\n * .then(()=>console.log(true));\n * // ↦ true\n *\n * new IsArray()\n * .isValid(99)\n * .catch(e=>console.log(e));\n * // ↦ 99\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass IsArray extends AbstractConstraint {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n if (isArray(value)) {\n return Promise.resolve(value);\n }\n\n return Promise.reject(value);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', IsArray);\nexport {Monster, IsArray}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\n\n/**\n * With this function you can check if a value is iterable\n *\n * You can call the method via the monster namespace `Monster.Types.isPrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isIterable(null)) // ↦ false\n * console.log(Monster.Types.isIterable('hello')) // ↦ true\n * console.log(Monster.Types.isIterable([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isIterable(null)) // ↦ false\n * console.log(isIterable('hello')) // ↦ true\n * console.log(isIterable([])) // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isIterable(value) {\n if (value === undefined) return false;\n if (value === null) return false;\n return typeof value?.[Symbol.iterator] === 'function';\n}\n\n\n/**\n * Checks whether the value passed is a primitive (string, number, boolean, NaN, undefined, null or symbol)\n *\n * You can call the method via the monster namespace `Monster.Types.isPrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isPrimitive('2')) // ↦ false\n * console.log(Monster.Types.isPrimitive([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isPrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isPrimitive('2')) // ↦ true\n * console.log(isPrimitive([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isPrimitive(value) {\n var type;\n\n if (value === undefined || value === null || value === NaN) {\n return true;\n }\n\n type = typeof value;\n\n if (type === 'string' || type === 'number' || type === 'boolean' || type === 'symbol') {\n return true;\n }\n\n return false;\n}\n\n/**\n * Checks whether the value passed is a symbol\n *\n * You can call the method via the monster namespace `Monster.Types.isSymbol()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isSymbol('2')) // ↦ false\n * console.log(Monster.Types.isSymbol(Symbol('test')) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isSymbol} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isSymbol(Symbol('a'))) // ↦ true\n * console.log(isSymbol([]) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isSymbol(value) {\n return ('symbol' === typeof value) ? true : false;\n}\n\n/**\n * Checks whether the value passed is a boolean\n *\n * You can call the method via the monster namespace `Monster.Types.isBoolean()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isBoolean('2')) // ↦ false\n * console.log(Monster.Types.isBoolean([])) // ↦ false\n * console.log(Monster.Types.isBoolean(true)) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isBoolean('2')) // ↦ false\n * console.log(isBoolean([])) // ↦ false\n * console.log(isBoolean(2>4)) // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isBoolean(value) {\n\n if (value === true || value === false) {\n return true;\n }\n\n return false;\n}\n\n/**\n * checks whether the value passed is a string\n *\n * you can call the method via the monster namespace `Monster.Types.isString()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isString('2')) // ↦ true\n * console.log(Monster.Types.isString([])) // ↦ false\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isString('2')) // ↦ true\n * console.log(isString([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isString(value) {\n if (value === undefined || typeof value !== 'string') {\n return false;\n }\n return true;\n}\n\n/**\n * checks whether the value passed is a object\n *\n * you can call the method via the monster namespace `Monster.Types.isObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isObject('2')) // ↦ false\n * console.log(Monster.Types.isObject([])) // ↦ false\n * console.log(Monster.Types.isObject({})) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isObject('2')) // ↦ false\n * console.log(isObject([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isObject(value) {\n\n if (isArray(value)) return false;\n if (isPrimitive(value)) return false;\n\n if (typeof value === 'object') {\n return true;\n }\n\n return false;\n}\n\n/**\n * checks whether the value passed is a object and instance of instance\n *\n * you can call the method via the monster namespace `Monster.Types.isInstance()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isInstance('2')) // ↦ false\n * console.log(Monster.Types.isInstance([])) // ↦ false\n * console.log(Monster.Types.isInstance({})) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isInstance('2')) // ↦ false\n * console.log(isInstance([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @param {*} instance\n * @returns {boolean}\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isInstance(value, instance) {\n\n if (!isObject(value)) return false;\n if (!isFunction(instance)) return false;\n if (!instance.hasOwnProperty('prototype')) return false;\n return (value instanceof instance) ? true : false;\n\n}\n\n/**\n * checks whether the value passed is a array\n *\n * you can call the method via the monster namespace `Monster.Types.isArray()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isArray('2')) // ↦ false\n * console.log(Monster.Types.isArray([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isArray('2')) // ↦ false\n * console.log(isArray([])) // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isArray(value) {\n if (Array.isArray(value)) {\n return true;\n }\n return false;\n}\n\n/**\n * checks whether the value passed is a function\n *\n * you can call the method via the monster namespace `Monster.Types.isFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isFunction(()=>{})) // ↦ true\n * console.log(Monster.Types.isFunction('2')) // ↦ false\n * console.log(Monster.Types.isFunction([])) // ↦ false\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isFunction(()=>{})) // ↦ true\n * console.log(isFunction('2')) // ↦ false\n * console.log(isFunction([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isFunction(value) {\n if (isArray(value)) return false;\n if (isPrimitive(value)) return false;\n\n if (typeof value === 'function') {\n return true;\n }\n\n return false;\n\n}\n\n/**\n * checks whether the value passed is an integer\n *\n * you can call the method via the monster namespace `Monster.Types.isFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isInteger(()=>{})) // ↦ true\n * console.log(Monster.Types.isInteger('2')) // ↦ false\n * console.log(Monster.Types.isInteger(2)) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isInteger} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n * console.log(isInteger(()=>{})) // ↦ true\n * console.log(isInteger('2')) // ↦ false\n * console.log(isInteger(2)) // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isInteger(value) {\n return Number.isInteger(value);\n}\n\n\nassignToNamespace('Monster.Types', isPrimitive, isBoolean, isString, isObject, isArray, isFunction, isIterable, isInteger, isSymbol);\nexport {\n Monster,\n isPrimitive,\n isBoolean,\n isString,\n isObject,\n isInstance,\n isArray,\n isFunction,\n isIterable,\n isInteger,\n isSymbol\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isObject} from \"../types/is.js\";\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * You can call the method via the monster namespace `new Monster.Constraint.IsObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/isobject.js';\n * console.log(new Monster.Constraint.IsObject())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/isobject.js';\n * console.log(new IsObject())\n * </script>\n * ```\n *\n * @example\n *\n * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/isobject.js';\n *\n * new IsObject()\n * .isValid({})\n * .then(()=>console.log(true));\n * // ↦ true\n *\n *\n * new IsObject()\n * .isValid(99)\n * .catch(e=>console.log(e));\n * // ↦ 99\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass IsObject extends AbstractConstraint {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n if (isObject(value)) {\n return Promise.resolve(value);\n }\n\n return Promise.reject(value);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', IsObject);\nexport {Monster, IsObject}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractOperator} from \"./abstractoperator.js\";\n\n/**\n * The OrOperator is used to link several constraints. The constraint is fulfilled if one of the constraints is fulfilled.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraint/oroperator.js';\n * new Monster.Constraint.OrOperator();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {OrOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraint/oroperator.js';\n * new OrOperator();\n * </script>\n * ```\n *\n * @example\n *\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/valid.js';\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/invalid.js';\n * import {OrOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/oroperator.js';\n *\n * new OrOperator(\n * new Valid(), new Invalid()).isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ true\n *\n * new OrOperator(\n * new Invalid(), new Invalid()).isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ false\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass OrOperator extends AbstractOperator {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n var self = this;\n\n return new Promise(function (resolve, reject) {\n let a, b;\n\n self.operantA.isValid(value)\n .then(function () {\n resolve();\n }).catch(function () {\n a = false;\n /** b has already been evaluated and was not true */\n if (b === false) {\n reject();\n }\n });\n\n self.operantB.isValid(value)\n .then(function () {\n resolve();\n }).catch(function () {\n b = false;\n /** b has already been evaluated and was not true */\n if (a === false) {\n reject();\n }\n });\n });\n }\n\n\n}\n\nassignToNamespace('Monster.Constraints', OrOperator);\nexport {Monster, OrOperator}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * The valid constraint allows an always valid query to be performed. this constraint is mainly intended for testing.\n *\n * You can call the method via the monster namespace `new Monster.Constraint.Valid()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/valid.js';\n * new Monster.Constraint.Valid();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/valid.js';\n * new Valid();\n * </script>\n * ```\n *\n * @example\n *\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/constraints/valid.js';\n *\n * new Valid().isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ true\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass Valid extends AbstractConstraint {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n return Promise.resolve(value);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', Valid);\nexport {Monster, Valid}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isFunction, isObject, isString} from \"../types/is.js\";\nimport {validateString} from \"../types/validate.js\";\nimport {clone} from \"../util/clone.js\";\nimport {DELIMITER, Pathfinder, WILDCARD} from \"./pathfinder.js\";\n\n/**\n * With the help of the function `buildMap()`, maps can be easily created from data objects.\n *\n * Either a simple definition `a.b.c` or a template `${a.b.c}` can be specified as the path.\n * Key and value can be either a definition or a template. The key does not have to be defined.\n *\n * You can call the method via the monster namespace `Monster.Data.buildMap()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/buildmap.js';\n * console.log(Monster.Data.buildMap())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/buildmap.js';\n * console.log(buildMap())\n * </script>\n * ```\n * \n * The templates determine the appearance of the keys and the value of the map. Either a single value `id` can be taken or a composite key `${id} ${name}` can be used.\n * \n * If you want to access values of the parent data set, you have to use the `^` character `${id} ${^.name}`.\n *\n * @example\n *\n * import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/buildmap.js';\n * // a typical data structure as reported by an api\n *\n * let map;\n * let obj = {\n * \"data\": [\n * {\n * \"id\": 10,\n * \"name\": \"Cassandra\",\n * \"address\": {\n * \"street\": \"493-4105 Vulputate Street\",\n * \"city\": \"Saumur\",\n * \"zip\": \"52628\"\n * }\n * },\n * {\n * \"id\": 20,\n * \"name\": \"Holly\",\n * \"address\": {\n * \"street\": \"1762 Eget Rd.\",\n * \"city\": \"Schwalbach\",\n * \"zip\": \"952340\"\n * }\n * },\n * {\n * \"id\": 30,\n * \"name\": \"Guy\",\n * \"address\": {\n * \"street\": \"957-388 Sollicitudin Avenue\",\n * \"city\": \"Panchià\",\n * \"zip\": \"420729\"\n * }\n * }\n * ]\n * };\n *\n * // The function is passed this data structure and with the help of the selector `'data.*'` the data to be considered are selected.\n * // The key is given by a simple definition `'id'` and the value is given by a template `'${name} (${address.zip} ${address.city})'`.\n * map = buildMap(obj, 'data.*', '${name} (${address.zip} ${address.city})', 'id');\n * console.log(map);\n *\n * // ↦ Map(3) {\n * // '10' => 'Cassandra (52628 Saumur)',\n * // '20' => 'Holly (952340 Schwalbach)',\n * // '30' => 'Guy (420729 Panchià)'\n * // }\n *\n * // If no key is specified, the key from the selection, here the array index, is taken.\n * map = buildMap(obj, 'data.*', '${name} (${address.zip} ${address.city})');\n * console.log(map);\n *\n * // ↦ Map(3) {\n * // '0' => 'Cassandra (52628 Saumur)',\n * // '1' => 'Holly (952340 Schwalbach)',\n * // '2' => 'Guy (420729 Panchià)'\n * // }\n *\n * // a filter (function(value, key) {}) can be specified to accept only defined entries.\n * map = buildMap(obj, 'data.*', '${name} (${address.zip} ${address.city})', 'id', function (value, key) {\n * return (value['id'] >= 20) ? true : false\n * });\n * console.log(map);\n *\n * // ↦ Map(2) {\n * // 20 => 'Holly (952340 Schwalbach)',\n * // 30 => 'Guy (420729 Panchià)'\n * // }\n *\n * @param {*} subject\n * @param {string|Monster.Data~exampleSelectorCallback} selector\n * @param {string} [valueTemplate]\n * @param {string} [keyTemplate]\n * @param {Monster.Data~exampleBuildMapCallback} [filter]\n * @return {*}\n * @memberOf Monster.Data\n * @throws {TypeError} value is neither a string nor a function\n * @throws {TypeError} the selector callback must return a map\n */\nfunction buildMap(subject, selector, valueTemplate, keyTemplate, filter) {\n\n const result = new Map\n\n let map;\n if (isFunction(selector)) {\n map = selector(subject)\n if (!(map instanceof Map)) {\n throw new TypeError('the selector callback must return a map');\n }\n } else if (isString(selector)) {\n map = new Map;\n buildFlatMap.call(map, subject, selector);\n } else {\n throw new TypeError('value is neither a string nor a function')\n }\n\n if (!(map instanceof Map)) {\n return result;\n }\n\n\n map.forEach((v, k, m) => {\n if (isFunction(filter)) {\n if (filter.call(m, v, k) !== true) return;\n }\n\n k = build(v, keyTemplate, k);\n v = build(v, valueTemplate);\n\n result.set(k, v);\n });\n\n return result;\n}\n\n\nfunction buildFlatMap(subject, selector, key, parentMap) {\n\n const result = this;\n const currentMap = new Map;\n\n const resultLength = result.size;\n\n if (key === undefined) key = [];\n\n let parts = selector.split(DELIMITER);\n let current = \"\", currentPath = [];\n do {\n\n current = parts.shift();\n currentPath.push(current);\n\n if (current === WILDCARD) {\n\n let finder = new Pathfinder(subject);\n let map\n try {\n map = finder.getVia(currentPath.join(DELIMITER));\n } catch (e) {\n let a = e;\n map = new Map();\n }\n\n\n for (const [k, o] of map) {\n\n let copyKey = clone(key);\n\n currentPath.map((a) => {\n copyKey.push((a === WILDCARD) ? k : a)\n })\n\n let kk = copyKey.join(DELIMITER);\n let sub = buildFlatMap.call(result, o, parts.join(DELIMITER), copyKey, o);\n\n if (isObject(sub)) {\n sub['^'] = parentMap;\n }\n\n currentMap.set(kk, sub);\n }\n\n }\n\n\n } while (parts.length > 0);\n\n // no set in child run\n if (resultLength === result.size) {\n for (const [k, o] of currentMap) {\n result.set(k, o);\n }\n }\n\n // if (isObject(subject)) {\n // subject['^'] = parentMap;\n // }\n\n return subject;\n\n}\n\n\n/**\n * With the help of this filter callback, values can be filtered out. Only if the filter function returns true, the value is taken for the map.\n *\n * @callback Monster.Data~exampleBuildMapCallback\n * @param {*} value Value\n * @param {string} key Key\n * @memberOf Monster.Data\n * @see Monster.Data.buildMap\n */\n\n/**\n * Alternatively to a string selector a callback can be specified. this must return a map.\n *\n * @example\n * import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/buildmap.js';\n *\n * let obj = {\n * \"data\": [\n * {\n * \"id\": 10,\n * \"name\": \"Cassandra\",\n * \"enrichment\": {\n * variants: [\n * {\n * sku: 1, label: \"XXS\", price: [\n * {vk: '12.12 €'},\n * {vk: '12.12 €'}\n * ]\n * },\n * {\n * sku: 2, label: \"XS\", price: [\n * {vk: '22.12 €'},\n * {vk: '22.12 €'}\n * ]\n * },\n * {\n * sku: 3, label: \"S\", price: [\n * {vk: '32.12 €'},\n * {vk: '32.12 €'}\n * ]\n * },\n * {\n * sku: 4, label: \"L\", price: [\n * {vk: '42.12 €'},\n * {vk: '42.12 €'}\n * ]\n * }\n * ]\n *\n * }\n * },\n * {\n * \"id\": 20,\n * \"name\": \"Yessey!\",\n * \"enrichment\": {\n * variants: [\n * {\n * sku: 1, label: \"XXS\", price: [\n * {vk: '12.12 €'},\n * {vk: '12.12 €'}\n * ]\n * },\n * {\n * sku: 2, label: \"XS\", price: [\n * {vk: '22.12 €'},\n * {vk: '22.12 €'}\n * ]\n * },\n * {\n * sku: 3, label: \"S\", price: [\n * {vk: '32.12 €'},\n * {vk: '32.12 €'}\n * ]\n * },\n * {\n * sku: 4, label: \"L\", price: [\n * {vk: '42.12 €'},\n * {vk: '42.12 €'}\n * ]\n * }\n * ]\n *\n * }\n * }\n * ]\n * };\n *\n * let callback = function (subject) {\n * let m = new Map;\n *\n * for (const [i, b] of Object.entries(subject.data)) {\n *\n * let key1 = i;\n *\n * for (const [j, c] of Object.entries(b.enrichment.variants)) {\n * let key2 = j;\n *\n * for (const [k, d] of Object.entries(c.price)) {\n *\n * let key3 = k;\n *\n * d.name = b.name;\n * d.label = c.label;\n * d.id = [key1, key2, key3].join('.');\n *\n * m.set(d.id, d);\n * }\n *\n * }\n * }\n * return m;\n * }\n *\n * let map = buildMap(obj, callback, '${name} ${vk}', '${id}')\n *\n * // ↦ Map(3) {\n * // \"0.0.0\":\"Cassandra 12.12 €\",\n * // \"0.0.1\":\"Cassandra 12.12 €\",\n * // \"0.1.0\":\"Cassandra 22.12 €\",\n * // \"0.1.1\":\"Cassandra 22.12 €\",\n * // \"0.2.0\":\"Cassandra 32.12 €\",\n * // \"0.2.1\":\"Cassandra 32.12 €\",\n * // \"0.3.0\":\"Cassandra 42.12 €\",\n * // \"0.3.1\":\"Cassandra 42.12 €\",\n * // \"1.0.0\":\"Yessey! 12.12 €\",\n * // \"1.0.1\":\"Yessey! 12.12 €\",\n * // \"1.1.0\":\"Yessey! 22.12 €\",\n * // \"1.1.1\":\"Yessey! 22.12 €\",\n * // \"1.2.0\":\"Yessey! 32.12 €\",\n * // \"1.2.1\":\"Yessey! 32.12 €\",\n * // \"1.3.0\":\"Yessey! 42.12 €\",\n * // \"1.3.1\":\"Yessey! 42.12 €\"\n * // }\n *\n * @callback Monster.Data~exampleSelectorCallback\n * @param {*} subject subject\n * @return Map\n * @since 1.17.0\n * @memberOf Monster.Data\n * @see Monster.Data.buildMap\n */\n\n/**\n * @private\n * @param {*} subject\n * @param {string|undefined} definition\n * @param {*} defaultValue\n * @return {*}\n */\nfunction build(subject, definition, defaultValue) {\n if (definition === undefined) return defaultValue ? defaultValue : subject;\n validateString(definition);\n\n const regexp = /(?<placeholder>\\${(?<path>[a-z\\^A-Z.\\-_0-9]*)})/gm\n const array = [...definition.matchAll(regexp)];\n\n let finder = new Pathfinder(subject);\n\n if (array.length === 0) {\n return finder.getVia(definition);\n }\n\n array.forEach((a) => {\n let groups = a?.['groups'];\n let placeholder = groups?.['placeholder']\n if (placeholder === undefined) return;\n\n let path = groups?.['path']\n\n let v = finder.getVia(path);\n if (v === undefined) v = defaultValue;\n\n definition = definition.replaceAll(placeholder, v);\n\n\n })\n\n return definition;\n\n}\n\n\nassignToNamespace('Monster.Data', buildMap);\nexport {Monster, buildMap}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {\n isArray,\n isBoolean,\n isFunction,\n isInstance,\n isInteger,\n isIterable,\n isObject,\n isPrimitive,\n isString,\n isSymbol\n} from './is.js';\n\n/**\n * This method checks if the type matches the primitive type. this function is identical to isPrimitive() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validatePrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateIterable('2')) // ↦ TypeError\n * console.log(Monster.Types.validateIterable([])) // ↦ value\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateIterable('2')) // ↦ TypeError\n * console.log(validateIterable([])) // ↦ value\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a primitive\n * @see {@link isPrimitive}\n * @see {@link Monster.Types.isPrimitive}\n * @see {@link Monster.Types#isPrimitive}\n */\nfunction validateIterable(value) {\n if (!isIterable(value)) {\n throw new TypeError('value is not iterable')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the primitive type. this function is identical to isPrimitive() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validatePrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validatePrimitive('2')) // ↦ value\n * console.log(Monster.Types.validatePrimitive([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validatePrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validatePrimitive('2')) // ↦ value\n * console.log(validatePrimitive([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a primitive\n * @see {@link isPrimitive}\n * @see {@link Monster.Types.isPrimitive}\n * @see {@link Monster.Types#isPrimitive}\n */\nfunction validatePrimitive(value) {\n if (!isPrimitive(value)) {\n throw new TypeError('value is not a primitive')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the boolean type. this function is identical to isBoolean() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateBoolean()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateBoolean(true)) // ↦ value\n * console.log(Monster.Types.validateBoolean('2')) // ↦ TypeError\n * console.log(Monster.Types.validateBoolean([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateBoolean(false)) // ↦ value\n * console.log(validateBoolean('2')) // ↦ TypeError\n * console.log(validateBoolean([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n\n * @throws {TypeError} value is not primitive\n */\nfunction validateBoolean(value) {\n if (!isBoolean(value)) {\n throw new TypeError('value is not a boolean')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the string type. this function is identical to isString() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateString()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateString('2')) // ↦ value\n * console.log(Monster.Types.validateString([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateString('2')) // ↦ value\n * console.log(validateString([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a string\n */\nfunction validateString(value) {\n if (!isString(value)) {\n throw new TypeError('value is not a string')\n }\n return value\n}\n\n\n/**\n * This method checks if the type matches the object type. this function is identical to isObject() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateObject({})) // ↦ value\n * console.log(Monster.Types.validateObject('2')) // ↦ TypeError\n * console.log(Monster.Types.validateObject([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateObject({})) // ↦ value\n * console.log(validateObject('2')) // ↦ TypeError\n * console.log(validateObject([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a object\n */\nfunction validateObject(value) {\n if (!isObject(value)) {\n throw new TypeError('value is not a object')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the object instance.\n *\n * You can call the method via the monster namespace `Monster.Types.validateInstance()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateInstance({}, Object)) // ↦ value\n * console.log(Monster.Types.validateInstance('2', Object)) // ↦ TypeError\n * console.log(Monster.Types.validateInstance([], Object)) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateInstance({}, Object)) // ↦ value\n * console.log(validateInstance('2', Object)) // ↦ TypeError\n * console.log(validateInstance([], Object)) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not an instance of\n */\nfunction validateInstance(value, instance) {\n if (!isInstance(value, instance)) {\n let n = \"\";\n if (isObject(instance) || isFunction(instance)) {\n n = instance?.['name']\n }\n\n if (n) {\n n = \" \" + n;\n }\n\n throw new TypeError('value is not an instance of' + n)\n }\n return value\n}\n\n/**\n * This method checks if the type matches the array type. this function is identical to isArray() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateArray()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateArray('2')) // ↦ TypeError\n * console.log(Monster.Types.validateArray([])) // ↦ value\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateArray('2')) // ↦ TypeError\n * console.log(validateArray([])) // ↦ value\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not an array\n */\nfunction validateArray(value) {\n if (!isArray(value)) {\n throw new TypeError('value is not an array')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the symbol type. this function is identical to isSymbol() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateSymbol()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateSymbol('2')) // ↦ TypeError\n * console.log(Monster.Types.validateSymbol([])) // ↦ value\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateSymbol} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateSymbol('2')) // ↦ TypeError\n * console.log(validateSymbol()) // ↦ value\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not an symbol\n */\nfunction validateSymbol(value) {\n if (!isSymbol(value)) {\n throw new TypeError('value is not an symbol')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the function type. this function is identical to isFunction() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateFunction(()=>{})) // ↦ value\n * console.log(Monster.Types.validateFunction('2')) // ↦ TypeError\n * console.log(Monster.Types.validateFunction([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateFunction(()=>{})) // ↦ value\n * console.log(validateFunction('2')) // ↦ TypeError\n * console.log(validateFunction([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a function\n */\nfunction validateFunction(value) {\n if (!isFunction(value)) {\n throw new TypeError('value is not a function')\n }\n return value\n}\n\n/**\n * This method checks if the type is an integer. this function is identical to isInteger() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateInteger()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateInteger(true)) // ↦ TypeError\n * console.log(Monster.Types.validateInteger('2')) // ↦ TypeError\n * console.log(Monster.Types.validateInteger(2)) // ↦ value\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/validate.js';\n * console.log(validateInteger(true)) // ↦ TypeError\n * console.log(validateInteger('2')) // ↦ TypeError\n * console.log(validateInteger(2)) // ↦ value\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not an integer\n */\nfunction validateInteger(value) {\n if (!isInteger(value)) {\n throw new TypeError('value is not an integer')\n }\n return value\n}\n\nassignToNamespace('Monster.Types', validatePrimitive, validateBoolean, validateString, validateObject, validateArray, validateFunction, validateIterable, validateInteger);\nexport {\n Monster,\n validatePrimitive,\n validateBoolean,\n validateString,\n validateObject,\n validateInstance,\n validateArray,\n validateFunction,\n validateIterable,\n validateInteger,\n validateSymbol\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobal} from '../types/global.js';\nimport {isArray, isFunction, isObject, isPrimitive} from '../types/is.js';\n\n\n/**\n * With this function, objects can be cloned.\n * The entire object tree is run through.\n *\n * Proxy, Element, HTMLDocument and DocumentFragment instances are not cloned.\n * Global objects such as windows are also not cloned,\n *\n * If an object has a method `getClone()`, this method is used to create the clone.\n *\n * You can call the method via the monster namespace `Monster.Util.clone()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/util/clone.js';\n * console.log(Monster.Util.clone({}))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {clone} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/util/clone.js';\n * console.log(clone({}))\n * </script>\n * ```\n *\n * @param {*} obj object to be cloned\n * @returns {*}\n *\n * @since 1.0.0\n * @memberOf Monster.Util\n * @copyright schukai GmbH\n * @throws {Error} unable to clone obj! its type isn't supported.\n */\nfunction clone(obj) {\n\n // typeof null results in 'object'. https://2ality.com/2013/10/typeof-null.html\n if (null === obj) {\n return obj;\n }\n\n // Handle the two simple types, null and undefined\n if (isPrimitive(obj)) {\n return obj;\n }\n\n // Handle the two simple types, null and undefined\n if (isFunction(obj)) {\n return obj;\n }\n\n // Handle Array\n if (isArray(obj)) {\n let copy = [];\n for (var i = 0, len = obj.length; i < len; i++) {\n copy[i] = clone(obj[i]);\n }\n\n return copy;\n }\n\n if (isObject(obj)) {\n\n\n // Handle Date\n if (obj instanceof Date) {\n let copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n\n /** Do not clone DOM nodes */\n if (typeof Element !== 'undefined' && obj instanceof Element) return obj;\n if (typeof HTMLDocument !== 'undefined' && obj instanceof HTMLDocument) return obj;\n if (typeof DocumentFragment !== 'undefined' && obj instanceof DocumentFragment) return obj;\n\n /** Do not clone global objects */\n if (obj === getGlobal()) return obj;\n if (typeof globalContext !== 'undefined' && obj === globalContext) return obj;\n if (typeof window !== 'undefined' && obj === window) return obj;\n if (typeof document !== 'undefined' && obj === document) return obj;\n if (typeof navigator !== 'undefined' && obj === navigator) return obj;\n if (typeof JSON !== 'undefined' && obj === JSON) return obj;\n\n // Handle Proxy-Object\n try {\n // try/catch because possible: TypeError: Function has non-object prototype 'undefined' in instanceof check\n if (obj instanceof Proxy) {\n return obj;\n }\n } catch (e) {\n }\n\n return cloneObject(obj)\n\n }\n\n throw new Error(\"unable to clone obj! its type isn't supported.\");\n}\n\n/**\n *\n * @param {object} obj\n * @returns {object}\n * @private\n */\nfunction cloneObject(obj) {\n var copy;\n\n /** Object has clone method */\n if (typeof obj.hasOwnProperty('getClone') && obj.getClone === 'function') {\n return obj.getClone();\n }\n\n copy = {};\n if (typeof obj.constructor === 'function' &&\n typeof obj.constructor.call === 'function') {\n copy = new obj.constructor();\n }\n\n for (let key in obj) {\n\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n if (Monster.Types.isPrimitive(obj[key])) {\n copy[key] = obj[key];\n continue;\n }\n\n copy[key] = clone(obj[key]);\n }\n\n return copy;\n}\n\nassignToNamespace('Monster.Util', clone);\nexport {Monster, clone}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {validateFunction, validateObject, validateString} from \"./validate.js\";\n\n/**\n * @type {objec}\n * @private\n */\nlet globalReference;\n\n/**\n * @private\n * @throws {Error} unsupported environment.\n */\n(function () {\n\n if (typeof globalThis === 'object') {\n globalReference = globalThis;\n return;\n }\n\n if (typeof self !== 'undefined') {\n globalReference = self;\n return;\n } else if (typeof window !== 'undefined') {\n globalReference = window;\n return;\n }\n\n Object.defineProperty(Object.prototype, '__monster__', {\n get: function () {\n return this;\n },\n configurable: true\n });\n\n if (typeof __monster__ === 'object') {\n __monster__.globalThis = __monster__;\n delete Object.prototype.__monster__;\n\n globalReference = globalThis;\n return;\n }\n\n try {\n globalReference = Function('return this')();\n } catch (e) {\n\n }\n\n throw new Error(\"unsupported environment.\")\n\n\n}());\n\n/**\n * Return globalThis\n *\n * If globalThis is not available, it will be polyfilled\n *\n * @since 1.6.0\n * @memberOf Monster.Types\n * @returns {objec} globalThis\n */\nfunction getGlobal() {\n return globalReference;\n}\n\n/**\n * Return global object or throw Error\n *\n * You can call the method via the monster namespace `Monster.Types.getGlobalObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/global.js';\n * console.log(Monster.Types.getGlobalObject('document')) // ↦ { }\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getGlobalObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/global.js';\n * console.log(getGlobalObject('document')) // ↦ { }\n * </script>\n * ```\n *\n * @since 1.6.0\n * @memberOf Monster.Types\n * @param {string} name\n * @returns {objec}\n * @throws {Error} the object is not defined\n * @throws {TypeError} value is not a object\n * @throws {TypeError} value is not a string\n */\nfunction getGlobalObject(name) {\n validateString(name);\n let o = globalReference?.[name];\n if (typeof o === 'undefined') throw new Error('the object ' + name + ' is not defined');\n validateObject(o);\n return o;\n}\n\n/**\n * Return global function or throw Error\n *\n * You can call the method via the monster namespace `Monster.Types.getGlobalFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/global.js';\n * console.log(Monster.Types.getGlobalFunction('parseInt')) // ↦ f parseInt() { }\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getGlobalFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/global.js';\n * console.log(getGlobalFunction('parseInt')) // ↦ f parseInt() { }\n * </script>\n * ```\n *\n * @since 1.6.0\n * @memberOf Monster.Types\n * @param {string} name\n * @returns {objec}\n * @throws {TypeError} value is not a function\n * @throws {Error} the function is not defined\n * @throws {TypeError} value is not a string\n */\nfunction getGlobalFunction(name) {\n validateString(name);\n let f = globalReference?.[name];\n if (typeof f === 'undefined') throw new Error('the function ' + name + ' is not defined');\n validateFunction(f);\n return f;\n}\n\n\nassignToNamespace('Monster.Types', getGlobal, getGlobalObject, getGlobalFunction);\nexport {Monster, getGlobal, getGlobalObject, getGlobalFunction}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {isArray, isInteger, isObject, isPrimitive} from '../types/is.js';\nimport {Stack} from \"../types/stack.js\";\nimport {validateInteger, validateString} from '../types/validate.js';\n\n/**\n * path separator\n *\n * @private\n * @type {string}\n */\nexport const DELIMITER = '.';\n/**\n * @private\n * @type {string}\n */\nexport const WILDCARD = '*';\n\n/**\n * You can call the method via the monster namespace `new Monster.Data.Pathfinder()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/pathfinder.js';\n * console.log(new Monster.Data.Pathfinder())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/pathfinder.js';\n * console.log(new Pathfinder())\n * </script>\n * ```\n *\n * With the help of the pathfinder, values can be read and written from an object construct.\n *\n * ```\n * new Pathfinder({\n * a: {\n * b: {\n * f: [\n * {\n * g: false,\n * }\n * ],\n * }\n * }\n * }).getVia(\"a.b.f.0.g\"); // ↦ false\n * ```\n *\n * if a value is not present or has the wrong type, a corresponding exception is thrown.\n *\n * ```\n * new Pathfinder({}).getVia(\"a.b.f.0.g\"); // ↦ Error\n * ```\n *\n * The `Pathfinder.exists()` method can be used to check whether access to the path is possible.\n *\n * ```\n * new Pathfinder({}).exists(\"a.b.f.0.g\"); // ↦ false\n * ```\n *\n * pathfinder can also be used to build object structures. to do this, the `Pathfinder.setVia()` method must be used.\n *\n * ```\n * obj = {};\n * new Pathfinder(obj).setVia('a.b.0.c', true); // ↦ {a:{b:[{c:true}]}}\n * ```\n *\n * @example\n *\n * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/pathfinder.js';\n *\n * let value = new Pathfinder({\n * a: {\n * b: {\n * f: [\n * {\n * g: false,\n * }\n * ],\n * }\n * }\n * }).getVia(\"a.b.f.0.g\");\n *\n * console.log(value);\n * // ↦ false\n *\n * try {\n * new Pathfinder({}).getVia(\"a.b.f.0.g\"); \n * } catch(e) {\n * console.log(e.toString());\n * // ↦ Error: the journey is not at its end (b.f.0.g)\n * }\n *\n * @example\n *\n * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/pathfinder.js';\n *\n * let p = new Pathfinder({\n * a: {\n * x: [\n * {c: 1}, {c: 2}\n * ],\n * y: true\n * },\n * b: {\n * x: [\n * {c: 1, d: false}, {c: 2}\n * ],\n * y: true\n * },\n * });\n *\n * let r = p.getVia(\"*.x.*.c\");\n * console.log(r);\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n */\nclass Pathfinder extends Base {\n\n /**\n * @param {array|object|Map|Set} value\n * @since 1.4.0\n * @throws {Error} the parameter must not be a simple type\n **/\n constructor(object) {\n super();\n\n if (isPrimitive(object)) {\n throw new Error('the parameter must not be a simple type');\n }\n\n this.object = object;\n this.wildCard = WILDCARD;\n }\n\n /**\n * set wildcard\n *\n * @param {string} wildcard\n * @return {Pathfinder}\n * @since 1.7.0\n */\n setWildCard(wildcard) {\n validateString(wildcard);\n this.wildCard = wildcard;\n return this;\n }\n\n /**\n *\n * @param {string} path\n * @since 1.4.0\n * @returns {*}\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an integer\n * @throws {Error} unsupported action for this data type\n */\n getVia(path) {\n return getValueViaPath.call(this, this.object, validateString(path));\n }\n\n /**\n *\n * @param {string} path\n * @param {*} value\n * @returns {Pathfinder}\n * @since 1.4.0\n * @throws {TypeError} unsupported type\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an integer\n * @throws {Error} unsupported action for this data type\n */\n setVia(path, value) {\n validateString(path);\n setValueViaPath.call(this, this.object, path, value);\n return this;\n }\n\n /**\n * Delete Via Path\n *\n * @param {string} path\n * @returns {Pathfinder}\n * @since 1.6.0\n * @throws {TypeError} unsupported type\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an integer\n * @throws {Error} unsupported action for this data type\n */\n deleteVia(path) {\n validateString(path);\n deleteValueViaPath.call(this, this.object, path);\n return this;\n }\n\n /**\n *\n * @param {string} path\n * @return {bool}\n * @throws {TypeError} unsupported type\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an integer\n * @since 1.4.0\n */\n exists(path) {\n validateString(path);\n try {\n getValueViaPath.call(this, this.object, path, true);\n return true;\n } catch (e) {\n\n }\n\n return false;\n }\n\n}\n\nassignToNamespace('Monster.Data', Pathfinder);\nexport {Monster, Pathfinder}\n\n/**\n *\n * @param {*} subject\n * @param {string} path\n * @param {string} check\n * @return {Map}\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @private\n */\nfunction iterate(subject, path, check) {\n\n const result = new Map;\n\n if (isObject(subject) || isArray(subject)) {\n for (const [key, value] of Object.entries(subject)) {\n result.set(key, getValueViaPath.call(this, value, path, check))\n }\n } else {\n let key = path.split(DELIMITER).shift();\n result.set(key, getValueViaPath.call(this, subject, path, check));\n }\n\n return result;\n\n\n}\n\n/**\n *\n * @param {*} subject\n * @param [string} path\n * @param [boolean} check \n * @returns {*}\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @private\n */\nfunction getValueViaPath(subject, path, check) {\n\n if (path === \"\") {\n return subject;\n }\n\n let parts = path.split(DELIMITER)\n let current = parts.shift();\n\n if (current === this.wildCard) {\n return iterate.call(this, subject, parts.join(DELIMITER), check);\n }\n\n if (isObject(subject) || isArray(subject)) {\n\n let anchor;\n if (subject instanceof Map || subject instanceof WeakMap) {\n anchor = subject.get(current);\n\n } else if (subject instanceof Set || subject instanceof WeakSet) {\n current = parseInt(current);\n validateInteger(current)\n anchor = [...subject]?.[current];\n\n } else if (typeof WeakRef === 'function' && subject instanceof WeakRef) {\n throw Error('unsupported action for this data type');\n\n } else if (isArray(subject)) {\n current = parseInt(current);\n validateInteger(current)\n anchor = subject?.[current];\n } else {\n anchor = subject?.[current];\n }\n\n if (isObject(anchor) || isArray(anchor)) {\n return getValueViaPath.call(this, anchor, parts.join(DELIMITER), check)\n }\n\n if (parts.length > 0) {\n throw Error(\"the journey is not at its end (\" + parts.join(DELIMITER) + \")\");\n }\n\n if (check === true && !subject.hasOwnProperty(current)) {\n throw Error('unknown value');\n }\n\n return anchor;\n\n }\n\n throw TypeError(\"unsupported type \" + typeof subject)\n\n}\n\n/**\n *\n * @param object\n * @param path\n * @param value\n * @returns {void}\n * @throws {TypeError} unsupported type\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @private\n */\nfunction setValueViaPath(object, path, value) {\n\n validateString(path);\n\n let parts = path.split(DELIMITER)\n let last = parts.pop();\n let subpath = parts.join(DELIMITER);\n\n let stack = new Stack()\n let current = subpath;\n while (true) {\n\n try {\n getValueViaPath.call(this, object, current, true)\n break;\n } catch (e) {\n\n }\n\n stack.push(current);\n parts.pop();\n current = parts.join(DELIMITER);\n\n if (current === \"\") break;\n }\n\n while (!stack.isEmpty()) {\n current = stack.pop();\n let obj = {};\n\n if (!stack.isEmpty()) {\n let n = stack.peek().split(DELIMITER).pop();\n if (isInteger(parseInt(n))) {\n obj = [];\n }\n\n }\n\n setValueViaPath.call(this, object, current, obj);\n }\n\n let anchor = getValueViaPath.call(this, object, subpath);\n\n if (!isObject(object) && !isArray(object)) {\n throw TypeError(\"unsupported type: \" + typeof object);\n }\n\n if (anchor instanceof Map || anchor instanceof WeakMap) {\n anchor.set(last, value);\n } else if (anchor instanceof Set || anchor instanceof WeakSet) {\n anchor.append(value)\n\n } else if (typeof WeakRef === 'function' && anchor instanceof WeakRef) {\n throw Error('unsupported action for this data type');\n\n } else if (isArray(anchor)) {\n last = parseInt(last);\n validateInteger(last)\n assignProperty(anchor, last, value);\n } else {\n assignProperty(anchor, last, value);\n }\n\n\n}\n\n/**\n * @private\n * @param {object} object\n * @param {string} key\n * @param {*} value\n */\nfunction assignProperty(object, key, value) {\n\n if (!object.hasOwnProperty(key)) {\n object[key] = value;\n return;\n }\n\n if (value === undefined) {\n delete object[key];\n }\n\n object[key] = value;\n\n}\n\n/**\n *\n * @param object\n * @param path\n * @returns {void}\n * @throws {TypeError} unsupported type\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @since 1.6.0\n * @private\n */\nfunction deleteValueViaPath(object, path) {\n\n const parts = path.split(DELIMITER)\n let last = parts.pop();\n const subpath = parts.join(DELIMITER);\n\n const anchor = getValueViaPath.call(this, object, subpath);\n\n if (anchor instanceof Map) {\n anchor.delete(last);\n } else if (anchor instanceof Set || anchor instanceof WeakMap || anchor instanceof WeakSet || (typeof WeakRef === 'function' && anchor instanceof WeakRef)) {\n throw Error('unsupported action for this data type');\n\n } else if (isArray(anchor)) {\n last = parseInt(last);\n validateInteger(last)\n delete anchor[last];\n } else {\n delete anchor[last];\n }\n\n\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\n\n/**\n * You can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/stack.js';\n * console.log(new Monster.Types.Stack())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/stack.js';\n * console.log(new Stack())\n * </script>\n * ```\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Stack extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n this.data = [];\n }\n\n\n /**\n * @return {boolean}\n */\n isEmpty() {\n return this.data.length === 0;\n }\n\n /**\n * looks at the object at the top of this stack without removing it from the stack.\n *\n * @return {*}\n */\n peek() {\n if (this.isEmpty()) {\n return undefined;\n }\n\n return this.data?.[this.data.length - 1];\n }\n\n /**\n * pushes an item onto the top of this stack.\n *\n * @param {*} value\n * @returns {Queue}\n */\n push(value) {\n this.data.push(value)\n return this;\n }\n\n /**\n * remove all entries\n *\n * @returns {Queue}\n */\n clear() {\n this.data = [];\n return this;\n }\n\n /**\n * removes the object at the top of this stack and returns\n * that object as the value of this function. is the stack empty\n * the return value is undefined.\n *\n * @return {*}\n */\n pop() {\n if (this.isEmpty()) {\n return undefined;\n }\n return this.data.pop();\n }\n\n\n}\n\nassignToNamespace('Monster.Types', Stack);\nexport {Monster, Stack}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isArray, isObject} from \"../types/is.js\";\n\n/**\n * With the diff function you can perform the change of one object to another. The result shows the changes of the second object to the first object.\n *\n * The operator `add` means that something has been added to the second object. `delete` means that something has been deleted from the second object compared to the first object.\n *\n * You can call the method via the monster namespace `Monster.Data.Diff()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/diff.js';\n * console.log(Monster.Data.Diff(a, b))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Diff} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/diff.js';\n * console.log(Diff(a, b))\n * </script>\n * ```\n *\n * @example\n *\n * import {Diff} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/diff.js';\n *\n * // given are two objects x and y.\n *\n * let x = {\n * a: 1,\n * b: \"Hello!\"\n * }\n *\n * let y = {\n * a: 2,\n * c: true\n * }\n *\n * // These two objects can be compared with each other.\n *\n * console.log(Diff(x, y));\n *\n * // the result is then the following\n *\n * //\n * // [\n * // {\n * // operator: 'update',\n * // path: [ 'a' ],\n * // first: { value: 1, type: 'number' },\n * // second: { value: 2, type: 'number' }\n * // },\n * // {\n * // operator: 'delete',\n * // path: [ 'b' ],\n * // first: { value: 'Hello!', type: 'string' }\n * // },\n * // {\n * // operator: 'add',\n * // path: [ 'c' ],\n * // second: { value: true, type: 'boolean' }\n * // }\n * // ]\n *\n * @param {*} first\n * @param {*} second\n * @return {array}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n */\nfunction Diff(first, second) {\n return doDiff(first, second)\n}\n\n/**\n * @private\n * @param a\n * @param b\n * @param type\n * @return {Set<string>|Set<number>}\n */\nfunction getKeys(a, b, type) {\n if (isArray(type)) {\n const keys = a.length > b.length ? new Array(a.length) : new Array(b.length);\n keys.fill(0);\n return new Set(keys.map((_, i) => i));\n }\n\n return new Set(Object.keys(a).concat(Object.keys(b)));\n}\n\n/**\n * @private\n * @param a\n * @param b\n * @param path\n * @param diff\n * @return {array}\n */\nfunction doDiff(a, b, path, diff) {\n\n let typeA = typeof a\n let typeB = typeof b\n\n const currPath = path || [];\n const currDiff = diff || [];\n\n if (typeA === typeB && typeA === 'object') { // array is object too\n\n getKeys(a, b, typeA).forEach((v) => {\n\n if (!(Object.prototype.hasOwnProperty.call(a, v))) {\n currDiff.push(buildResult(a[v], b[v], 'add', currPath.concat(v)));\n } else if (!(Object.prototype.hasOwnProperty.call(b, v))) {\n currDiff.push(buildResult(a[v], b[v], 'delete', currPath.concat(v)));\n } else {\n doDiff(a[v], b[v], currPath.concat(v), currDiff);\n }\n });\n\n } else {\n\n const o = getOperator(a, b, typeA, typeB);\n if (o !== undefined) {\n currDiff.push(buildResult(a, b, o, path));\n }\n\n }\n\n return currDiff;\n\n}\n\n/**\n *\n * @param {*} a\n * @param {*} b\n * @param {string} operator\n * @param {array} path\n * @return {{path: array, operator: string}}\n * @private\n */\nfunction buildResult(a, b, operator, path) {\n\n const result = {\n operator,\n path,\n };\n\n if (operator !== 'add') {\n result.first = {\n value: a,\n type: typeof a\n };\n\n if (isObject(a)) {\n const name = Object.getPrototypeOf(a)?.constructor?.name;\n if (name !== undefined) {\n result.first.instance = name;\n }\n }\n }\n\n if (operator === 'add' || operator === 'update') {\n result.second = {\n value: b,\n type: typeof b\n };\n\n if (isObject(b)) {\n const name = Object.getPrototypeOf(b)?.constructor?.name;\n if (name !== undefined) {\n result.second.instance = name;\n }\n }\n\n }\n\n return result;\n}\n\n/**\n * @private\n * @param {*} a\n * @param {*} b\n * @return {boolean}\n */\nfunction isNotEqual(a, b) {\n\n if (typeof a !== typeof b) {\n return true;\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() !== b.getTime();\n }\n\n return a !== b;\n}\n\n/**\n * @private\n * @param {*} a\n * @param {*} b\n * @return {string|undefined}\n */\nfunction getOperator(a, b) {\n\n /**\n * @type {string|undefined}\n */\n let operator;\n\n /**\n * @type {string}\n */\n let typeA = typeof a;\n\n /**\n * @type {string}\n */\n let typeB = typeof b;\n\n if (typeA === 'undefined' && typeB !== 'undefined') {\n operator = 'add';\n } else if (typeA !== 'undefined' && typeB === 'undefined') {\n operator = 'delete';\n } else if (isNotEqual(a, b)) {\n operator = 'update';\n }\n\n return operator;\n\n}\n\nassignToNamespace('Monster.Data', Diff);\nexport {Monster, Diff}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isArray, isObject} from \"../types/is.js\";\nimport {typeOf} from \"../types/typeof.js\";\n\n/**\n * extend copies all enumerable own properties from one or\n * more source objects to a target object. It returns the modified target object.\n *\n * You can call the method via the monster namespace `Monster.Data.extend()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/extend.js';\n * console.log(Monster.Data.extend(a, b))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {extend} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/extend.js';\n * console.log(extend(a, b))\n * </script>\n * ```\n *\n * @param {object} target\n * @param {object}\n * @return {object}\n * @since 1.10.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n * @throws {Error} unsuported argument\n * @throws {Error} type mismatch\n */\nfunction extend() {\n let o, i;\n\n for (i = 0; i < arguments.length; i++) {\n let a = arguments[i];\n\n if (!(isObject(a) || isArray(a))) {\n throw new Error('unsuported argument ' + JSON.stringify(a));\n }\n\n if (o === undefined) {\n o = a;\n continue;\n }\n\n for (let k in a) {\n\n let v = a?.[k];\n\n if (v === o?.[k]) {\n continue;\n }\n\n if ((isObject(v) || isArray(v))) {\n\n if (o[k] === undefined) {\n if (isArray(v)) {\n o[k] = [];\n } else {\n o[k] = {};\n }\n }\n\n if (typeOf(o[k]) !== typeOf(v)) {\n throw new Error(\"type mismatch: \" + JSON.stringify(o[k]) + \" != \" + JSON.stringify(v));\n }\n\n o[k] = extend(o[k], v);\n\n } else {\n o[k] = v;\n }\n\n }\n }\n\n return o;\n}\n\n\nassignToNamespace('Monster.Data', extend);\nexport {Monster, extend}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\n\nimport {assignToNamespace, Monster} from '../namespace.js';\n\n/**\n * The built-in typeof method is known to have some historical weaknesses. This function tries to provide a better and more accurate result.\n *\n * You can call the method via the monster namespace `Monster.Types.typeOf()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/typeof.js';\n * console.log(Monster.Types.typeOf())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/typeof.js';\n * console.log(typeOf())\n * </script>\n * ```\n *\n * @example\n *\n * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/typeof.js';\n *\n * console.log(typeOf(undefined)); // ↦ undefined\n * console.log(typeOf(\"\")); // ↦ string\n * console.log(typeOf(5)); // ↦ number\n * console.log(typeOf({})); // ↦ object\n * console.log(typeOf([])); // ↦ array\n * console.log(typeOf(new Map)); // ↦ map\n * console.log(typeOf(true)); // ↦ boolean\n *\n * @param {*} value\n * @return {string}\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a primitive\n */\nfunction typeOf(value) {\n let type = ({}).toString.call(value).match(/\\s([a-zA-Z]+)/)[1];\n if ('Object' === type) {\n const results = (/^(class|function)\\s+(\\w+)/).exec(value.constructor.toString());\n type = (results && results.length > 2) ? results[2] : '';\n }\n return type.toLowerCase();\n}\n\nassignToNamespace('Monster.Types', typeOf);\nexport {\n Monster,\n typeOf\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateString} from '../types/validate.js';\nimport {Transformer} from './transformer.js';\n\n\nconst DELIMITER = '|';\n\n/**\n * The pipe class makes it possible to combine several processing steps.\n *\n * You can call the method via the monster namespace `new Monster.Data.Pipe()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/pipe.js';\n * console.log(new Monster.Data.Pipe())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/pipe.js';\n * console.log(new Pipe())\n * </script>\n * ```\n *\n * A pipe consists of commands whose input and output are connected with the pipe symbol `|`.\n *\n * With the Pipe, processing steps can be combined. Here, the value of an object is accessed via the pathfinder (path command).\n * the word is then converted to uppercase letters and a prefix Hello is added. the two backslash safe the space char.\n *\n * @example\n * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/pipe.js';\n *\n * let obj = {\n * a: {\n * b: {\n * c: {\n * d: \"world\"\n * }\n * }\n * }\n * }\n *\n * console.log(new Pipe('path:a.b.c.d | toupper | prefix:Hello\\\\ ').run(obj));\n * // ↦ Hello WORLD\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n */\nclass Pipe extends Base {\n\n /**\n *\n * @param {string} pipe a pipe consists of commands whose input and output are connected with the pipe symbol `|`.\n * @throws {TypeError}\n */\n constructor(pipe) {\n super();\n validateString(pipe);\n this.pipe = pipe.split(DELIMITER).map((v) => {\n return new Transformer(v);\n });\n\n\n }\n\n /**\n *\n * @param {string} name\n * @param {function} callback\n * @param {object} context\n * @returns {Transformer}\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not a function\n */\n setCallback(name, callback, context) {\n\n for (const [, t] of Object.entries(this.pipe)) {\n t.setCallback(name, callback, context);\n }\n\n return this;\n }\n\n /**\n * run a pipe\n *\n * @param {*} value\n * @returns {*}\n */\n run(value) {\n return this.pipe.reduce((accumulator, transformer, currentIndex, array) => {\n return transformer.run(accumulator);\n }, value);\n }\n}\n\nassignToNamespace('Monster.Data', Pipe);\nexport {Monster, Pipe}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {getGlobal} from \"../types/global.js\";\nimport {ID} from '../types/id.js';\nimport {isArray, isObject, isString} from '../types/is.js';\nimport {\n validateFunction,\n validateInteger,\n validateObject,\n validatePrimitive,\n validateString\n} from '../types/validate.js';\nimport {clone} from \"../util/clone.js\";\nimport {Pathfinder} from \"./pathfinder.js\";\n\n/**\n * The transformer class is a swiss army knife for manipulating values. especially in combination with the pipe, processing chains can be built up.\n *\n * You can call the method via the monster namespace `new Monster.Data.Transformer()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/transformer.js';\n * console.log(new Monster.Data.Transformer())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/transformer.js';\n * console.log(new Transformer())\n * </script>\n * ```\n *\n * A simple example is the conversion of all characters to lowercase. for this purpose the command tolower must be used.\n *\n * ```\n * let t = new Transformer('tolower').run('ABC'); // ↦ abc\n * ```\n *\n * **all commands**\n *\n * in the following table all commands, parameters and existing aliases are described.\n *\n * | command | parameter | alias | description |\n * |:-------------|:---------------------------|:------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n * | base64 | | | Converts the value to base64 |\n * | call | function,param1:param2:... | | Calling a callback function. The function can be defined in three places: either globally, in the context `addCallback` or in the passed object |\n * | default | | | If the value is undefined the first argument is returned, otherwise the value. (since 1.12.0) |\n * | empty | | | Return empty String \"\" |\n * | fromjson | | | Type conversion from a JSON string (since 1.12.0) |\n * | if | statement1:statement2 | ? | Is the ternary operator, the first parameter is the valid statement, the second is the false part. To use the current value in the queue, you can set the value keyword. On the other hand, if you want to have the static string \"value\", you have to put one backslash \\\\ in front of it and write value. the follow values are true: 'on', true, 'true' |\n * | index | key:default | property, key | Fetches a value from an object, an array, a map or a set |\n * | length | | count | Length of the string or entries of an array or object |\n * | nop | | | Do nothing |\n * | path | path | | The access to an object is done via a Pathfinder object |\n * | plaintext | | plain | All HTML tags are removed (*) |\n * | prefix | text | | Adds a prefix |\n * | rawurlencode | | | URL coding |\n * | static | | none | The Arguments value is used and passed to the value. Special characters \\ <space> and : can be quotet by a preceding \\. |\n * | substring | start:length | | Returns a substring |\n * | suffix | text | | Adds a suffix |\n * | tointeger | | | Type conversion to an integer value |\n * | tojson | | | Type conversion to a JSON string (since 1.8.0) |\n * | tolower | | strtolower, tolowercase | The input value is converted to lowercase letters |\n * | tostring | | | Type conversion to a string |\n * | toupper | | strtoupper, touppercase | The input value is converted to uppercase letters |\n * | trim | | | Remove spaces at the beginning and end |\n * | ucfirst | | | First character large |\n * | ucwords | | | Any word beginning large |\n * | undefined | | | Return undefined |\n * | uniqid | | | Creates a string with a unique value (**) |\n *\n * (*) for this functionality the extension [jsdom](https://www.npmjs.com/package/jsdom) must be loaded in the nodejs context.\n *\n * ```\n * // polyfill\n * if (typeof window !== \"object\") {\n * const {window} = new JSDOM('', {\n * url: 'http://example.com/',\n * pretendToBeVisual: true\n * });\n * \n * [\n * 'self',\n * 'document',\n * 'Node',\n * 'Element',\n * 'HTMLElement',\n * 'DocumentFragment',\n * 'DOMParser',\n * 'XMLSerializer',\n * 'NodeFilter',\n * 'InputEvent',\n * 'CustomEvent'\n * ].forEach(key => (global[key] = window[key]));\n * }\n * ```\n *\n * (**) for this command the crypt library is necessary in the nodejs context.\n *\n * ```\n * import * as Crypto from \"@peculiar/webcrypto\";\n * global['crypto'] = new Crypto.Crypto();\n * ```\n *\n * @example\n *\n * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/data/transformer.js';\n *\n * const transformer = new Transformer(\"tolower\")\n *\n * console.log(transformer.run(\"HELLO\"))\n * // ↦ hello\n *\n * console.log(transformer.run(\"WORLD\"))\n * // ↦ world\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n */\nclass Transformer extends Base {\n /**\n *\n * @param {string} definition\n */\n constructor(definition) {\n super();\n validateString(definition);\n\n this.args = disassemble(definition);\n this.command = this.args.shift()\n this.callbacks = new Map();\n\n }\n\n /**\n *\n * @param {string} name\n * @param {function} callback\n * @param {object} context\n * @returns {Transformer}\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not a function\n */\n setCallback(name, callback, context) {\n validateString(name)\n validateFunction(callback)\n\n if (context !== undefined) {\n validateObject(context);\n }\n\n this.callbacks.set(name, {\n callback: callback,\n context: context,\n });\n\n return this;\n }\n\n /**\n *\n * @param {*} value\n * @returns {*}\n * @throws {Error} unknown command\n * @throws {TypeError} unsupported type\n * @throws {Error} type not supported\n */\n run(value) {\n return transform.apply(this, [value])\n }\n}\n\nassignToNamespace('Monster.Data', Transformer);\nexport {Monster, Transformer}\n\n/**\n *\n * @param {string} command\n * @returns {array}\n * @private\n */\nfunction disassemble(command) {\n\n validateString(command);\n\n let placeholder = new Map;\n const regex = /((?<pattern>\\\\(?<char>.)){1})/mig;\n\n // The separator for args must be quotable\n // undefined string which should not occur normally and is also not a regex\n let result = command.matchAll(regex)\n\n for (let m of result) {\n let g = m?.['groups'];\n if (!isObject(g)) {\n continue;\n }\n\n let p = g?.['pattern'];\n let c = g?.['char'];\n\n if (p && c) {\n let r = '__' + new ID().toString() + '__';\n placeholder.set(r, c);\n command = command.replace(p, r);\n }\n\n }\n let parts = command.split(':');\n\n parts = parts.map(function (value) {\n let v = value.trim();\n for (let k of placeholder) {\n v = v.replace(k[0], k[1]);\n }\n return v;\n\n\n });\n\n return parts\n}\n\n/**\n * tries to make a string out of value and if this succeeds to return it back\n *\n * @param {*} value\n * @returns {string}\n * @private\n */\nfunction convertToString(value) {\n\n if (isObject(value) && value.hasOwnProperty('toString')) {\n value = value.toString();\n }\n\n validateString(value)\n return value;\n}\n\n/**\n *\n * @param {*} value\n * @returns {*}\n * @private\n * @throws {Error} unknown command\n * @throws {TypeError} unsupported type\n * @throws {Error} type not supported\n */\nfunction transform(value) {\n\n let args = clone(this.args);\n let key\n\n switch (this.command) {\n\n case 'static':\n return this.args.join(':');\n\n case 'tolower':\n case 'strtolower':\n case 'tolowercase':\n validateString(value)\n return value.toLowerCase();\n\n case 'toupper':\n case 'strtoupper':\n case 'touppercase':\n validateString(value)\n return value.toUpperCase();\n\n case 'tostring':\n return \"\" + value;\n\n case 'tointeger':\n let n = parseInt(value);\n validateInteger(n);\n return n\n\n case 'tojson':\n return JSON.stringify(value);\n\n case 'fromjson':\n return JSON.parse(value);\n\n case 'trim':\n validateString(value)\n return value.trim();\n\n case 'rawurlencode':\n validateString(value)\n return encodeURIComponent(value)\n .replace(/!/g, '%21')\n .replace(/'/g, '%27')\n .replace(/\\(/g, '%28')\n .replace(/\\)/g, '%29')\n .replace(/\\*/g, '%2A');\n\n\n case 'call':\n\n /**\n * callback-definition\n * function callback(value, ...args) {\n * return value;\n * }\n */\n\n let callback;\n let callbackName = args.shift();\n let context = getGlobal();\n\n if (isObject(value) && value.hasOwnProperty(callbackName)) {\n callback = value[callbackName];\n } else if (this.callbacks.has(callbackName)) {\n let s = this.callbacks.get(callbackName);\n callback = s?.['callback'];\n context = s?.['context'];\n } else if (typeof window === 'object' && window.hasOwnProperty(callbackName)) {\n callback = window[callbackName];\n }\n validateFunction(callback);\n\n args.unshift(value);\n return callback.call(context, ...args);\n\n case 'plain':\n case 'plaintext':\n validateString(value);\n let doc = new DOMParser().parseFromString(value, 'text/html');\n return doc.body.textContent || \"\";\n\n case 'if':\n case '?':\n\n validatePrimitive(value);\n\n let trueStatement = (args.shift() || undefined);\n let falseStatement = (args.shift() || undefined);\n\n if (trueStatement === 'value') {\n trueStatement = value;\n }\n if (trueStatement === '\\\\value') {\n trueStatement = 'value';\n }\n if (falseStatement === 'value') {\n falseStatement = value;\n }\n if (falseStatement === '\\\\value') {\n falseStatement = 'value';\n }\n\n let condition = ((value !== undefined && value !== '' && value !== 'off' && value !== 'false' && value !== false) || value === 'on' || value === 'true' || value === true);\n return condition ? trueStatement : falseStatement;\n\n\n case 'ucfirst':\n validateString(value);\n\n let firstchar = value.charAt(0).toUpperCase();\n return firstchar + value.substr(1);\n case 'ucwords':\n validateString(value);\n\n return value.replace(/^([a-z\\u00E0-\\u00FC])|\\s+([a-z\\u00E0-\\u00FC])/g, function (v) {\n return v.toUpperCase();\n });\n\n case 'count':\n case 'length':\n\n if ((isString(value) || isObject(value) || isArray(value)) && value.hasOwnProperty('length')) {\n return value.length;\n }\n\n throw new TypeError(\"unsupported type \" + typeof value);\n\n case 'base64':\n convertToString(value);\n return btoa(value);\n\n case 'empty':\n return '';\n\n case 'undefined':\n return undefined;\n\n case 'prefix':\n validateString(value);\n let prefix = args?.[0];\n return prefix + value;\n\n case 'suffix':\n validateString(value);\n let suffix = args?.[0];\n return value + suffix;\n\n case 'uniqid':\n return (new ID()).toString();\n\n case 'key':\n case 'property':\n case 'index':\n\n key = (args.shift() || 'undefined');\n let defaultValue = (args.shift() || '');\n\n if (value instanceof Map) {\n if (!value.has(key)) {\n return defaultValue;\n }\n return value.get(key);\n }\n\n if (isObject(value) || isArray(value)) {\n\n if (value?.[key]) {\n return value?.[key];\n }\n\n return defaultValue;\n }\n\n throw new Error(\"type not supported\")\n\n case 'path':\n\n key = (args.shift() || 'undefined');\n return new Pathfinder(value).getVia(key);\n\n\n case 'substring':\n\n validateString(value);\n\n let start = parseInt(args[0]) || 0;\n let end = (parseInt(args[1]) || 0) + start;\n\n return value.substring(start, end);\n\n case 'nop':\n return value;\n\n case 'default':\n if (value !== undefined) {\n return value;\n }\n return args[0];\n\n default:\n throw new Error(\"unknown command \" + this.command)\n }\n\n return value;\n}\n\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {validateString} from \"./validate.js\";\n\n/**\n * @private\n * @type {Map<string, integer>}\n */\nlet internalCounter = new Map;\n\n/**\n * With the id class, sequences of ids can be created. for this purpose, an internal counter is incremented for each prefix.\n * thus, the first id with the prefix `myid` will be `myid1` and the second id `myid2`.\n * The ids are the same for every call, for example on a web page.\n *\n * So the ids can also be used for navigation. you just have to take care that the order stays the same.\n *\n * You can call the method via the monster namespace `new Monster.Types.ID()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/id.js';\n * console.log(new Monster.Types.ID())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/id.js';\n * console.log(new ID())\n * </script>\n * ```\n *\n * As of version 1.6.0 there is the new RandomID. this ID class is continuous from now on.\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass ID extends Base {\n\n /**\n * create new object\n */\n constructor(prefix) {\n super();\n\n if (prefix === undefined) {\n prefix = \"id\";\n }\n\n validateString(prefix);\n\n if (!internalCounter.has(prefix)) {\n internalCounter.set(prefix, 1);\n }\n\n let count = internalCounter.get(prefix);\n this.id = prefix + count;\n\n internalCounter.set(prefix, ++count);\n }\n\n /**\n * @return {string}\n */\n toString() {\n return this.id;\n }\n\n}\n\nassignToNamespace('Monster.Types', ID);\nexport {Monster, ID}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {getGlobalFunction} from \"../types/global.js\";\nimport {ProxyObserver} from \"../types/proxyobserver.js\";\nimport {validateInstance, validateString} from \"../types/validate.js\";\n\n\n/**\n * attribute prefix\n *\n * @type {string}\n * @memberOf Monster.DOM\n */\nconst ATTRIBUTEPREFIX = \"data-monster-\";\n\n/**\n * you can call the method via the monster namespace `new Monster.DOM.Assembler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/assembler.js';\n * console.log(new Monster.DOM.Assembler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Assembler} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/assembler.js';\n * console.log(new Assembler())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass Assembler extends Base {\n\n /**\n * @param {DocumentFragment} fragment\n * @throws {TypeError} value is not an instance of\n * @throws {TypeError} value is not a function\n * @throws {Error} the function is not defined\n */\n constructor(fragment) {\n super();\n this.attributePrefix = ATTRIBUTEPREFIX;\n validateInstance(fragment, getGlobalFunction('DocumentFragment'));\n this.fragment = fragment;\n }\n\n /**\n *\n * @param {string} prefix\n * @returns {Assembler}\n * @throws {TypeError} value is not a string\n */\n setAttributePrefix(prefix) {\n validateString(prefix);\n this.attributePrefix = prefix;\n return this;\n }\n\n /**\n *\n * @returns {string}\n */\n getAttributePrefix() {\n return this.attributePrefix;\n }\n\n /**\n *\n * @param {ProxyObserver|undefined} data\n * @return {DocumentFragment}\n * @throws {TypeError} value is not an instance of\n */\n createDocumentFragment(data) {\n\n if (data === undefined) {\n data = new ProxyObserver({});\n }\n\n validateInstance(data, ProxyObserver);\n let fragment = this.fragment.cloneNode(true);\n return fragment;\n }\n\n}\n\nassignToNamespace('Monster.DOM', Assembler);\nexport {Monster, ATTRIBUTEPREFIX, Assembler}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {isArray, isObject, isPrimitive} from \"./is.js\";\nimport {Observer} from \"./observer.js\";\nimport {ObserverList} from \"./observerlist.js\";\nimport {validateObject} from \"./validate.js\";\n\n/**\n * An observer manages a callback function\n *\n * You can call create the class via the monster namespace `new Monster.Types.ProxyObserver()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/proxyobserver.js';\n * console.log(new Monster.Types.ProxyObserver())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/proxyobserver.js';\n * console.log(new ProxyObserver())\n * </script>\n * ```\n *\n * with the ProxyObserver you can attach observer for observation. with each change at the object to be observed an update takes place.\n *\n * this also applies to nested objects.\n *\n * @example\n *\n * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/proxyobserver.js';\n * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/observer.js';\n * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/is.js';\n *\n * const o = new Observer(function () { \n * if (isObject(this) && this instanceof ProxyObserver) {\n * // do something (this ist ProxyObserver)\n * const subject = this.getSubject();\n * console.log(subject);\n * }\n * });\n *\n * let realSubject = {\n * a: {\n * b: {\n * c: true\n * },\n * d: 9\n * }\n * }\n *\n * const p = new ProxyObserver(realSubject);\n * p.attachObserver(o);\n * const s = p.getSubject();\n * s.a.b.c = false;\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass ProxyObserver extends Base {\n\n /**\n *\n * @param {object} object\n * @throws {TypeError} value is not a object\n */\n constructor(object) {\n super();\n\n this.realSubject = validateObject(object);\n this.subject = new Proxy(object, getHandler.call(this));\n\n this.objectMap = new WeakMap();\n this.objectMap.set(this.realSubject, this.subject);\n\n this.proxyMap = new WeakMap();\n this.proxyMap.set(this.subject, this.realSubject);\n\n this.observers = new ObserverList;\n }\n\n /**\n * get the real object\n *\n * changes to this object are not noticed by the observers, so you can make a large number of changes and inform the observers later.\n *\n * @returns {object}\n */\n getSubject() {\n return this.subject\n }\n\n /**\n * get the proxied object\n *\n * @returns {object}\n */\n getRealSubject() {\n return this.realSubject\n }\n\n /**\n * attach a new observer\n *\n * @param {Observer} observer\n * @returns {ProxyObserver}\n */\n attachObserver(observer) {\n this.observers.attach(observer)\n return this;\n }\n\n /**\n * detach a observer\n *\n * @param {Observer} observer\n * @returns {ProxyObserver}\n */\n detachObserver(observer) {\n this.observers.detach(observer)\n return this;\n }\n\n /**\n * notify all observer\n *\n * @returns {Promise}\n */\n notifyObservers() {\n return this.observers.notify(this);\n }\n\n /**\n * @param {Observer} observer\n * @returns {boolean}\n */\n containsObserver(observer) {\n return this.observers.contains(observer)\n }\n\n}\n\nassignToNamespace('Monster.Types', ProxyObserver);\nexport {Monster, ProxyObserver}\n\n/**\n *\n * @returns {{defineProperty: (function(*=, *=, *=): *), setPrototypeOf: (function(*, *=): boolean), set: (function(*, *, *, *): boolean), get: ((function(*=, *=, *=): (undefined))|*), deleteProperty: ((function(*, *): (boolean))|*)}}\n * @private\n * @see {@link https://gitlab.schukai.com/-/snippets/49}\n */\nfunction getHandler() {\n\n const proxy = this;\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots\n const handler = {\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver\n get: function (target, key, receiver) {\n\n const value = Reflect.get(target, key, receiver);\n\n if (typeof key === \"symbol\") {\n return value;\n }\n\n if (isPrimitive(value)) {\n return value;\n }\n\n // set value as proxy if object or array\n if ((isArray(value) || isObject(value))) {\n if (proxy.objectMap.has(value)) {\n return proxy.objectMap.get(value);\n } else if (proxy.proxyMap.has(value)) {\n return value;\n } else {\n let p = new Proxy(value, handler);\n proxy.objectMap.set(value, p);\n proxy.proxyMap.set(p, value);\n return p;\n }\n\n }\n\n return value;\n\n },\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver \n set: function (target, key, value, receiver) {\n\n if (proxy.proxyMap.has(value)) {\n value = proxy.proxyMap.get(value);\n }\n\n if (proxy.proxyMap.has(target)) {\n target = proxy.proxyMap.get(target);\n }\n\n let current = Reflect.get(target, key, receiver);\n if (proxy.proxyMap.has(current)) {\n current = proxy.proxyMap.get(current);\n }\n\n if (current === value) {\n return true;\n }\n\n let result;\n let descriptor = Reflect.getOwnPropertyDescriptor(target, key);\n\n if (descriptor === undefined) {\n descriptor = {\n writable: true,\n enumerable: true,\n configurable: true\n }\n }\n\n descriptor['value'] = value;\n result = Reflect.defineProperty(target, key, descriptor);\n\n if (typeof key !== \"symbol\") {\n proxy.observers.notify(proxy);\n }\n\n return result;\n },\n\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-delete-p\n deleteProperty: function (target, key) {\n if (key in target) {\n delete target[key];\n\n if (typeof key !== \"symbol\") {\n proxy.observers.notify(proxy);\n }\n\n return true;\n }\n return false;\n },\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc\n defineProperty: function (target, key, descriptor) {\n\n let result = Reflect.defineProperty(target, key, descriptor);\n if (typeof key !== \"symbol\") {\n proxy.observers.notify(proxy);\n }\n return result;\n },\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v\n setPrototypeOf: function (target, key) {\n let result = Reflect.setPrototypeOf(object1, key);\n\n if (typeof key !== \"symbol\") {\n proxy.observers.notify(proxy);\n }\n\n return result;\n }\n\n };\n\n\n return handler;\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {isObject} from './is.js';\nimport {TokenList} from './tokenlist.js';\nimport {UniqueQueue} from './uniquequeue.js';\n\n/**\n * An observer manages a callback function\n *\n * You can call the method via the monster namespace `new Monster.Types.Observer()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/observer.js';\n * console.log(new Monster.Types.Observer())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/observer.js';\n * console.log(new Observer())\n * </script>\n * ```\n *\n * The update method is called with the subject object as this pointer. For this reason the callback should not\n * be an arrow function, because it gets the this pointer of its own context.\n *\n * ```\n * <script>\n * new Observer(()=>{\n * // this is not subject\n * })\n *\n * new Observer(function() {\n * // this is subject\n * })\n * </script>\n * ```\n *\n * Additional arguments can be passed to the callback. To do this, simply specify them.\n *\n * ```\n * <script>\n * Observer(function(a, b, c) {\n * console.log(a, b, c); // ↦ \"a\", 2, true \n * }, \"a\", 2, true)\n * </script>\n * ```\n *\n * The callback function must have as many parameters as arguments are given.\n *\n * @example\n *\n * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/observer.js';\n *\n * const observer = new Observer(function(a, b, c) {\n * console.log(this, a, b, c); // ↦ \"a\", 2, true \n * }, \"a\", 2, true);\n *\n * observer.update({value:true}).then(()=>{});\n * // ↦ {value: true} \"a\" 2 true\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Observer extends Base {\n\n /**\n *\n * @param {function} callback\n * @param {*} args\n */\n constructor(callback, ...args) {\n super();\n\n if (typeof callback !== 'function') {\n throw new Error(\"observer callback must be a function\")\n }\n\n this.callback = callback;\n this.arguments = args;\n this.tags = new TokenList;\n this.queue = new UniqueQueue();\n }\n\n /**\n *\n * @param {string} tag\n * @returns {Observer}\n */\n addTag(tag) {\n this.tags.add(tag);\n return this;\n }\n\n /**\n *\n * @param {string} tag\n * @returns {Observer}\n */\n removeTag(tag) {\n this.tags.remove(tag);\n return this;\n }\n\n /**\n *\n * @returns {Array}\n */\n getTags() {\n return this.tags.entries()\n }\n\n /**\n *\n * @param {string} tag\n * @returns {boolean}\n */\n hasTag(tag) {\n return this.tags.contains(tag)\n }\n\n /**\n *\n * @param {object} subject\n * @returns {Promise}\n */\n update(subject) {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n if (!isObject(subject)) {\n reject(\"subject must be an object\");\n return;\n }\n\n self.queue.add(subject);\n\n setTimeout(() => {\n\n try {\n // the queue and the settimeout ensure that an object is not \n // informed of the same change more than once.\n if (self.queue.isEmpty()) {\n resolve();\n return;\n }\n\n let s = self.queue.poll();\n let result = self.callback.apply(s, self.arguments);\n\n if (isObject(result) && result instanceof Promise) {\n result.then(resolve).catch(reject);\n return;\n }\n\n resolve(result);\n\n } catch (e) {\n reject(e);\n }\n }, 0)\n\n });\n\n };\n\n}\n\nassignToNamespace('Monster.Types', Observer);\nexport {Monster, Observer}\n\n\n\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isIterable, isString} from '../types/is.js';\nimport {validateFunction, validateString} from '../types/validate.js';\nimport {Base} from './base.js';\n\n/**\n * A tokenlist allows you to manage tokens (individual character strings such as css classes in an attribute string).\n *\n * The tokenlist offers various functions to manipulate values. For example, you can add, remove or replace a class in a CSS list.\n *\n * You can call the method via the monster namespace `new Monster.Types.TokenList()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/tokenlist.js';\n * console.log(new Monster.Types.TokenList(\"myclass row\"))\n * console.log(new Monster.Types.TokenList(\"myclass row\"))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/tokenlist.js';\n * console.log(new TokenList(\"myclass row\"))\n * console.log(new TokenList(\"myclass row\"))\n * </script>\n * ```\n *\n * This class implements the [iteration protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols).\n *\n * ```\n * console.log(typeof new TokenList(\"myclass row\")[Symbol.iterator]); // \"function\"\n * ```\n *\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass TokenList extends Base {\n\n /**\n *\n * @param {array|string|iteratable} init\n */\n constructor(init) {\n super();\n this.tokens = new Set();\n\n if (typeof init !== \"undefined\") {\n this.add(init);\n }\n\n }\n\n /**\n * Iterator protocol\n *\n * @returns {Symbol.iterator}\n */\n getIterator() {\n return this[Symbol.iterator]();\n }\n\n /**\n * Iterator\n *\n * @returns {{next: ((function(): ({value: *, done: boolean}))|*)}}\n */\n [Symbol.iterator]() {\n // Use a new index for each iterator. This makes multiple\n // iterations over the iterable safe for non-trivial cases,\n // such as use of break or nested looping over the same iterable.\n let index = 0;\n let entries = this.entries()\n\n return {\n next: () => {\n if (index < entries.length) {\n return {value: entries?.[index++], done: false}\n } else {\n return {done: true}\n }\n }\n }\n }\n\n /**\n * Returns true if it contains token, otherwise false\n *\n * ```\n * new TokenList(\"start middle end\").contains('start')); // ↦ true\n * new TokenList(\"start middle end\").contains('end')); // ↦ true\n * new TokenList(\"start middle end\").contains('xyz')); // ↦ false\n * new TokenList(\"start middle end\").contains(['end','start','middle'])); // ↦ true\n * new TokenList(\"start middle end\").contains(['end','start','xyz'])); // ↦ false\n * ```\n *\n * @param {array|string|iteratable} value\n * @returns {boolean}\n */\n contains(value) {\n if (isString(value)) {\n value = value.trim()\n let counter = 0;\n value.split(\" \").forEach(token => {\n if (this.tokens.has(token.trim()) === false) return false;\n counter++\n })\n return counter > 0 ? true : false;\n }\n\n if (isIterable(value)) {\n let counter = 0;\n for (let token of value) {\n validateString(token);\n if (this.tokens.has(token.trim()) === false) return false;\n counter++\n }\n return counter > 0 ? true : false;\n }\n\n return false;\n }\n\n /**\n * add tokens\n *\n * ```\n * new TokenList().add(\"abc xyz\").toString(); // ↦ \"abc xyz\"\n * new TokenList().add([\"abc\",\"xyz\"]).toString(); // ↦ \"abc xyz\"\n * new TokenList().add(undefined); // ↦ add nothing\n * ```\n *\n * @param {array|string|iteratable} value\n * @returns {TokenList}\n * @throws {TypeError} unsupported value\n */\n add(value) {\n if (isString(value)) {\n value.split(\" \").forEach(token => {\n this.tokens.add(token.trim());\n })\n } else if (isIterable(value)) {\n for (let token of value) {\n validateString(token);\n this.tokens.add(token.trim());\n }\n } else if (typeof value !== \"undefined\") {\n throw new TypeError(\"unsupported value\");\n }\n\n return this;\n }\n\n /**\n * remove all tokens\n *\n * @returns {TokenList}\n */\n clear() {\n this.tokens.clear();\n return this;\n }\n\n /**\n * Removes token\n *\n * ```\n * new TokenList(\"abc xyz\").remove(\"xyz\").toString(); // ↦ \"abc\"\n * new TokenList(\"abc xyz\").remove([\"xyz\"]).toString(); // ↦ \"abc\"\n * new TokenList(\"abc xyz\").remove(undefined); // ↦ remove nothing\n * ```\n *\n * @param {array|string|iteratable} value\n * @returns {TokenList}\n * @throws {TypeError} unsupported value\n */\n remove(value) {\n if (isString(value)) {\n value.split(\" \").forEach(token => {\n this.tokens.delete(token.trim());\n })\n } else if (isIterable(value)) {\n for (let token of value) {\n validateString(token);\n this.tokens.delete(token.trim());\n }\n } else if (typeof value !== \"undefined\") {\n throw new TypeError(\"unsupported value\");\n }\n\n return this;\n }\n\n /**\n * this method replaces a token with a new token.\n *\n * if the passed token exists, it is replaced with newToken and TokenList is returned.\n * if the token does not exist, newToken is not set and TokenList is returned.\n *\n * @param {string} token\n * @param {string} newToken\n * @returns {TokenList}\n */\n replace(token, newToken) {\n validateString(token);\n validateString(newToken);\n if (!this.contains(token)) {\n return this;\n }\n\n let a = Array.from(this.tokens)\n let i = a.indexOf(token);\n if (i === -1) return this;\n\n a.splice(i, 1, newToken);\n this.tokens = new Set();\n this.add(a);\n\n return this;\n\n\n }\n\n /**\n * Removes token from string. If token doesn't exist it's added.\n *\n * ```\n * new TokenList(\"abc def ghi\").toggle(\"def xyz\").toString(); // ↦ \"abc ghi xyz\"\n * new TokenList(\"abc def ghi\").toggle([\"abc\",\"xyz\"]).toString(); // ↦ \"def ghi xyz\"\n * new TokenList().toggle(undefined); // ↦ nothing\n * ```\n *\n * @param {array|string|iteratable} value\n * @returns {boolean}\n * @throws {TypeError} unsupported value\n */\n toggle(value) {\n\n if (isString(value)) {\n value.split(\" \").forEach(token => {\n toggleValue.call(this, token);\n })\n } else if (isIterable(value)) {\n for (let token of value) {\n toggleValue.call(this, token);\n }\n } else if (typeof value !== \"undefined\") {\n throw new TypeError(\"unsupported value\");\n }\n\n return this;\n\n }\n\n /**\n * returns an array with all tokens\n *\n * @returns {array}\n */\n entries() {\n return Array.from(this.tokens)\n }\n\n /**\n * executes the provided function with each value of the set\n *\n * @param {function} callback\n * @returns {TokenList}\n */\n forEach(callback) {\n validateFunction(callback);\n this.tokens.forEach(callback);\n return this;\n }\n\n /**\n * returns the individual tokens separated by a blank character\n *\n * @returns {string}\n */\n toString() {\n return this.entries().join(' ');\n }\n\n}\n\n/**\n * @private\n * @param token\n * @returns {toggleValue}\n * @throws {Error} must be called with TokenList.call\n */\nfunction toggleValue(token) {\n if (!(this instanceof TokenList)) throw Error(\"must be called with TokenList.call\")\n validateString(token);\n token = token.trim();\n if (this.contains(token)) {\n this.remove(token);\n return this;\n }\n this.add(token);\n return this;\n}\n\nassignToNamespace('Monster.Types', TokenList);\nexport {Monster, TokenList}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Queue} from \"./queue.js\";\nimport {validateObject} from \"./validate.js\";\n\n/**\n * You can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/uniquequeue.js';\n * console.log(new Monster.Types.UniqueQueue())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/uniquequeue.js';\n * console.log(new UniqueQueue())\n * </script>\n * ```\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass UniqueQueue extends Queue {\n\n /**\n *\n */\n constructor() {\n super();\n this.unique = new WeakSet();\n }\n\n /**\n * Add a new element to the end of the queue.\n *\n * @param {object} value\n * @returns {Queue}\n * @throws {TypeError} value is not a object\n */\n add(value) {\n\n validateObject(value);\n\n if (!this.unique.has(value)) {\n this.unique.add(value);\n super.add(value);\n }\n\n return this;\n }\n\n /**\n * remove all entries\n *\n * @returns {Queue}\n */\n clear() {\n super.clear();\n this.unique = new WeakSet;\n return this;\n }\n\n /**\n * Remove the element at the front of the queue\n * If the queue is empty, return undefined.\n *\n * @return {object}\n */\n poll() {\n\n if (this.isEmpty()) {\n return undefined;\n }\n let value = this.data.shift();\n this.unique.delete(value);\n return value;\n }\n\n\n}\n\nassignToNamespace('Monster.Types', UniqueQueue);\nexport {Monster, UniqueQueue}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\n\n/**\n * You can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/queue.js';\n * console.log(new Monster.Types.Queue())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/queue.js';\n * console.log(new Queue())\n * </script>\n * ```\n *\n * @example\n *\n * import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/queue.js';\n *\n * const queue = new Queue;\n *\n * queue.add(2);\n * queue.add(true);\n * queue.add(\"Hello\");\n * queue.add(4.5);\n *\n * console.log(queue.poll());\n * // ↦ 2\n * console.log(queue.poll());\n * // ↦ true\n * console.log(queue.poll());\n * // ↦ \"Hello\"\n * console.log(queue.poll());\n * // ↦ 4.5\n * console.log(queue.poll());\n * // ↦ undefined\n *\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Queue extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n this.data = [];\n }\n\n\n /**\n * @return {boolean}\n */\n isEmpty() {\n return this.data.length === 0;\n }\n\n /**\n * Read the element at the front of the queue without removing it.\n *\n * @return {*}\n */\n peek() {\n if (this.isEmpty()) {\n return undefined;\n }\n\n return this.data[0];\n }\n\n /**\n * Add a new element to the end of the queue.\n *\n * @param {*} value\n * @returns {Queue}\n */\n add(value) {\n this.data.push(value)\n return this;\n }\n\n /**\n * remove all entries\n *\n * @returns {Queue}\n */\n clear() {\n this.data = [];\n return this;\n }\n\n /**\n * Remove the element at the front of the queue\n * If the queue is empty, return undefined.\n *\n * @return {*}\n */\n poll() {\n if (this.isEmpty()) {\n return undefined;\n }\n return this.data.shift();\n }\n\n\n}\n\nassignToNamespace('Monster.Types', Queue);\nexport {Monster, Queue}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {Observer} from \"./observer.js\";\nimport {validateInstance} from \"./validate.js\";\n\n/**\n * With the help of the ObserverList class, observer can be managed.\n *\n * You can call the method via the monster namespace `new Monster.Types.ObserverList()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/observerlist.js';\n * console.log(new Monster.Types.ObserverList())\n * console.log(new Monster.Types.ObserverList())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/observerlist.js';\n * console.log(ObserverList())\n * console.log(ObserverList())\n * </script>\n * ```\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass ObserverList extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n this.observers = [];\n }\n\n /**\n *\n * @param {Observer} observer\n * @return {ObserverList}\n * @throws {TypeError} value is not an instance of Observer\n */\n attach(observer) {\n validateInstance(observer, Observer)\n\n this.observers.push(observer);\n return this;\n };\n\n /**\n *\n * @param {Observer} observer\n * @return {ObserverList}\n * @throws {TypeError} value is not an instance of Observer\n */\n detach(observer) {\n validateInstance(observer, Observer)\n\n var i = 0, l = this.observers.length;\n for (; i < l; i++) {\n if (this.observers[i] === observer) {\n this.observers.splice(i, 1);\n }\n }\n\n return this;\n };\n\n /**\n *\n * @param {Observer} observer\n * @return {boolean}\n * @throws {TypeError} value is not an instance of Observer\n */\n contains(observer) {\n validateInstance(observer, Observer)\n var i = 0, l = this.observers.length;\n for (; i < l; i++) {\n if (this.observers[i] === observer) {\n return true;\n }\n }\n return false;\n };\n\n /**\n *\n * @param subject\n * @return {Promise}\n */\n notify(subject) {\n\n let pomises = []\n\n var i = 0, l = this.observers.length;\n for (; i < l; i++) {\n pomises.push(this.observers[i].update(subject));\n }\n\n return Promise.all(pomises);\n };\n\n}\n\nassignToNamespace('Monster.Types', ObserverList);\nexport {Monster, ObserverList}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobalFunction} from \"../types/global.js\";\nimport {TokenList} from \"../types/tokenlist.js\";\nimport {validateInstance, validateString, validateSymbol} from \"../types/validate.js\";\nimport {ATTRIBUTE_OBJECTLINK} from \"./constants.js\";\n\n/**\n * get the closest object link of a node\n *\n * if a node is specified without a object link, a recursive search upwards is performed until the corresponding\n * object link is found, or undefined is returned.\n *\n * you can call the method via the monster namespace `Monster.DOM.getUpdaterFromNode()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/updater.js';\n * console.log(Monster.DOM.findClosestObjectLink())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getUpdaterFromNode} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/updater.js';\n * console.log(findClosestObjectLink())\n * </script>\n * ```\n *\n * @param {HTMLElement} element\n * @return {HTMLElement|undefined}\n * @since 1.10.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {TypeError} value is not an instance of HTMLElement\n */\nfunction findClosestObjectLink(element) {\n return findClosestByAttribute(element, ATTRIBUTE_OBJECTLINK);\n}\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.addToObjectLink()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.addToObjectLink();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {addToObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * addToObjectLink();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {Symbol} symbol\n * @param {Object} object\n * @return {boolean}\n */\nfunction addToObjectLink(element, symbol, object) {\n\n validateInstance(element, HTMLElement);\n validateSymbol(symbol)\n\n if (element?.[symbol] === undefined) {\n element[symbol] = new Set;\n }\n\n addAttributeToken(element, ATTRIBUTE_OBJECTLINK, symbol.toString());\n element[symbol].add(object);\n return element;\n\n}\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.removeObjectLink()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.removeObjectLink();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {removeObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * removeObjectLink();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {Symbol} symbol\n * @return {boolean}\n */\nfunction removeObjectLink(element, symbol) {\n\n validateInstance(element, HTMLElement);\n validateSymbol(symbol)\n\n if (element?.[symbol] === undefined) {\n return element\n }\n\n removeAttributeToken(element, ATTRIBUTE_OBJECTLINK, symbol.toString());\n delete element[symbol];\n return element;\n\n}\n\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.hasObjectLink()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.hasObjectLink();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {hasObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * hasObjectLink();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {Symbol} symbol\n * @return {boolean}\n */\nfunction hasObjectLink(element, symbol) {\n\n validateInstance(element, HTMLElement);\n validateSymbol(symbol)\n\n if (element?.[symbol] === undefined) {\n return false\n }\n\n return containsAttributeToken(element, ATTRIBUTE_OBJECTLINK, symbol.toString());\n\n}\n\n/**\n * The ObjectLink can be used to attach objects to HTMLElements. The elements are kept in a set under a unique\n * symbol and can be read via an iterator {@see getLinkedObjects}.\n *\n * In addition, elements with an objectLink receive the attribute `data-monster-objectlink`.\n *\n * With the method {@see addToObjectLink} the objects can be added.\n *\n * You can call the method via the monster namespace `new Monster.DOM.getLinkedObjects()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.getLinkedObjects();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getLinkedObjects} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * getLinkedObjects();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {Symbol} symbol\n * @return {Iterator}\n * @throws {Error} there is no object link for symbol\n */\nfunction getLinkedObjects(element, symbol) {\n\n validateInstance(element, HTMLElement);\n validateSymbol(symbol)\n\n if (element?.[symbol] === undefined) {\n throw new Error('there is no object link for ' + symbol.toString());\n }\n\n return element?.[symbol][Symbol.iterator]();\n\n}\n\n\n/**\n * With this method tokens in an attribute can be switched on or off. For example, classes can be switched on and off in the elements class attribute.\n *\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.toggleAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.toggleAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {toggleAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * toggleAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} token\n * @return {HTMLElement}\n */\nfunction toggleAttributeToken(element, key, token) {\n validateInstance(element, HTMLElement);\n validateString(token)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n element.setAttribute(key, token);\n return element;\n }\n\n element.setAttribute(key, new TokenList(element.getAttribute(key)).toggle(token).toString());\n\n return element\n}\n\n/**\n * this method can be used to add a token to an attribute. Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.addAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.addAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {addAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * addAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} token\n * @return {HTMLElement}\n */\nfunction addAttributeToken(element, key, token) {\n validateInstance(element, HTMLElement);\n validateString(token)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n element.setAttribute(key, token);\n return element;\n }\n\n element.setAttribute(key, new TokenList(element.getAttribute(key)).add(token).toString());\n\n return element\n}\n\n/**\n * This function can be used to remove tokens from an attribute.\n *\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.removeAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.removeAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {removeAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * removeAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} token\n * @return {HTMLElement}\n */\nfunction removeAttributeToken(element, key, token) {\n validateInstance(element, HTMLElement);\n validateString(token)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n return element;\n }\n\n element.setAttribute(key, new TokenList(element.getAttribute(key)).remove(token).toString());\n\n return element\n}\n\n/**\n * This method can be used to determine whether an attribute has a token.\n *\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.containsAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.containsAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {containsAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * containsAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} token\n * @return {boolean}\n */\nfunction containsAttributeToken(element, key, token) {\n validateInstance(element, HTMLElement);\n validateString(token)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n return false;\n }\n\n return new TokenList(element.getAttribute(key)).contains(token);\n\n}\n\n/**\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.replaceAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.replaceAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {replaceAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * replaceAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} from\n * @param {string} to\n * @return {HTMLElement}\n */\nfunction replaceAttributeToken(element, key, from, to) {\n validateInstance(element, HTMLElement);\n validateString(from)\n validateString(to)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n return element;\n }\n\n element.setAttribute(key, new TokenList(element.getAttribute(key)).replace(from, to).toString());\n\n return element\n}\n\n/**\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.clearAttributeTokens()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.clearAttributeTokens();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {clearAttributeTokens} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * clearAttributeTokens();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @return {HTMLElement}\n */\nfunction clearAttributeTokens(element, key) {\n validateInstance(element, HTMLElement);\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n return element;\n }\n\n element.setAttribute(key, \"\");\n\n return element\n}\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.findClosestByAttribute()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * Monster.DOM.findClosestByAttribute();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {findClosestByAttribute} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/attributes.js';\n * findClosestByAttribute();\n * </script>\n * ```\n *\n * @since 1.14.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string|undefined} value\n * @return {HTMLElement|undefined}\n */\nfunction findClosestByAttribute(element, key, value) {\n validateInstance(element, getGlobalFunction('HTMLElement'));\n\n if (element.hasAttribute(key) && element.getAttribute(key) === value) {\n return element;\n }\n\n let selector = validateString(key);\n if (value !== undefined) selector += \"=\" + validateString(value);\n let result = element.closest('[' + selector + ']');\n if (result instanceof HTMLElement) {\n return result;\n }\n return undefined;\n}\n\n// exports\nassignToNamespace('Monster.DOM', getLinkedObjects, addToObjectLink, removeObjectLink, findClosestByAttribute, hasObjectLink, clearAttributeTokens, replaceAttributeToken, containsAttributeToken, removeAttributeToken, addAttributeToken, toggleAttributeToken);\nexport {\n Monster,\n addToObjectLink,\n removeObjectLink,\n hasObjectLink,\n findClosestByAttribute,\n clearAttributeTokens,\n replaceAttributeToken,\n containsAttributeToken,\n removeAttributeToken,\n addAttributeToken,\n toggleAttributeToken,\n getLinkedObjects,\n findClosestObjectLink\n}\n","'use strict';\n\nimport {Monster} from '../namespace.js';\n/**\n * @author schukai GmbH\n */\n\n/**\n * @memberOf Monster.DOM\n * @since 1.8.0\n * @type {string}\n */\nconst ATTRIBUTE_PREFIX = 'data-monster-';\n\n/**\n * This is the name of the attribute to pass options to a control\n * \n * @memberOf Monster.DOM\n * @since 1.8.0\n * @type {string}\n */\nconst ATTRIBUTE_OPTIONS = ATTRIBUTE_PREFIX + 'options';\n\n\n/**\n * default theme\n * @memberOf Monster.DOM\n * @type {string}\n */\nconst DEFAULT_THEME = 'monster';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_THEME_PREFIX = ATTRIBUTE_PREFIX + 'theme-';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n */\nconst ATTRIBUTE_THEME_NAME = ATTRIBUTE_THEME_PREFIX + 'name';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_ATTRIBUTES = ATTRIBUTE_PREFIX + 'attributes';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_REPLACE = ATTRIBUTE_PREFIX + 'replace';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_INSERT = ATTRIBUTE_PREFIX + 'insert';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_INSERT_REFERENCE = ATTRIBUTE_PREFIX + 'insert-reference';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_REMOVE = ATTRIBUTE_PREFIX + 'remove';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.9.0\n */\nconst ATTRIBUTE_UPDATER_BIND = ATTRIBUTE_PREFIX + 'bind';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.14.0\n */\nconst ATTRIBUTE_ROLE = ATTRIBUTE_PREFIX + 'role';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.9.0\n */\nconst ATTRIBUTE_OBJECTLINK = ATTRIBUTE_PREFIX + 'objectlink';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.10.0\n */\nconst OBJECTLINK_KEY_UPDATER = 'monsterUpdater';\n\n\nexport {\n Monster,\n ATTRIBUTE_PREFIX,\n ATTRIBUTE_OPTIONS,\n DEFAULT_THEME,\n ATTRIBUTE_THEME_PREFIX,\n ATTRIBUTE_ROLE,\n ATTRIBUTE_THEME_NAME,\n ATTRIBUTE_UPDATER_ATTRIBUTES,\n ATTRIBUTE_UPDATER_REPLACE,\n ATTRIBUTE_UPDATER_INSERT,\n ATTRIBUTE_UPDATER_INSERT_REFERENCE,\n ATTRIBUTE_UPDATER_REMOVE,\n ATTRIBUTE_UPDATER_BIND,\n ATTRIBUTE_OBJECTLINK,\n OBJECTLINK_KEY_UPDATER\n}","'use strict';\n\nimport {extend} from \"../data/extend.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {CustomElement} from \"./customelement.js\";\n\n\n/**\n * @private\n * @type {symbol}\n */\nconst internalSymbol = Symbol('internalSymbol');\n\n/**\n * To define a new HTML control we need the power of CustomElement\n *\n * IMPORTANT: after defining a `CustomElement`, the `registerCustomElement` method must be called\n * with the new class name. only then will the tag defined via the `getTag` method be made known to the DOM.\n *\n * This control uses `attachInternals()` to integrate the control into a form.\n * If the target environment does not support this method, the [polyfill](https://www.npmjs.com/package/element-internals-polyfill ) can be used.\n *\n * You can create the object via the monster namespace `new Monster.DOM.CustomControl()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/customcontrol.js';\n * console.log(new Monster.DOM.CustomControl())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {CustomControl} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/customcontrol.js';\n * console.log(new CustomControl())\n * </script>\n * ```\n *\n * @summary A base class for customcontrols\n * @see https://www.npmjs.com/package/element-internals-polyfill\n * @see https://github.com/WICG/webcomponents\n * @see https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements\n * @since 1.14.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass CustomControl extends CustomElement {\n\n /**\n * IMPORTANT: CustomControls instances are not created via the constructor, but either via a tag in the HTML or via <code>document.createElement()</code>.\n *\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @summary create new Instance\n */\n constructor() {\n super();\n\n if (typeof this['attachInternals'] === 'function') {\n /**\n * currently only supported by chrome\n * @property {Object}\n * @private\n */\n this[internalSymbol] = this.attachInternals();\n }\n\n }\n\n /**\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals\n * @since 1.14.0\n * @return {boolean}\n */\n static get formAssociated() {\n return true;\n }\n\n /**\n * Derived classes can override and extend this method as follows.\n *\n * ```\n * get defaults() {\n * return extends{}, super.defaults, {\n * myValue:true\n * });\n * }\n * ```\n *\n * @see https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals\n * @return {object}\n * @since 1.14.0\n */\n get defaults() {\n return extend({}, super.defaults);\n }\n\n /**\n * Must be overridden by a derived class and return the value of the control.\n *\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @since 1.14.0\n * @throws {Error} the value getter must be overwritten by the derived class\n */\n get value() {\n throw Error('the value getter must be overwritten by the derived class');\n }\n\n /**\n * Must be overridden by a derived class and return the value of the control.\n *\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @param {*} value\n * @since 1.14.0\n * @throws {Error} the value setter must be overwritten by the derived class\n */\n set value(value) {\n throw Error('the value setter must be overwritten by the derived class');\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {NodeList}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/labels\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get labels() {\n return getInternal.call(this)?.labels;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {string|null}\n */\n get name() {\n return this.getAttribute('name');\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {string}\n */\n get type() {\n return this.constructor.getTag();\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {ValidityState}\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ValidityState\n * @see https://developer.mozilla.org/en-US/docs/Web/API/validity\n */\n get validity() {\n return getInternal.call(this)?.validity;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {string}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/validationMessage\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get validationMessage() {\n return getInternal.call(this)?.validationMessage;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {boolean}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/willValidate\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get willValidate() {\n return getInternal.call(this)?.willValidate;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {CustomStateSet}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/states\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get states() {\n return getInternal.call(this)?.states;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {HTMLFontElement|null}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/form\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get form() {\n return getInternal.call(this)?.form;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * ```\n * // Use the control's name as the base name for submitted data\n * const n = this.getAttribute('name');\n * const entries = new FormData();\n * entries.append(n + '-first-name', this.firstName_);\n * entries.append(n + '-last-name', this.lastName_);\n * this.setFormValue(entries);\n * ```\n *\n * @param {File|string|FormData} value\n * @param {File|string|FormData} state\n * @since 1.14.0\n * @return {undefined}\n * @throws {DOMException} NotSupportedError\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/setFormValue\n */\n setFormValue(value, state) {\n getInternal.call(this).setFormValue(value, state);\n }\n\n /**\n *\n * @param {object} flags\n * @param {string|undefined} message\n * @param {HTMLElement} anchor\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/setValidity\n * @since 1.14.0\n * @return {undefined}\n * @throws {DOMException} NotSupportedError\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n setValidity(flags, message, anchor) {\n getInternal.call(this).setValidity(flags, message, anchor);\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/checkValidity\n * @since 1.14.0\n * @return {boolean}\n * @throws {DOMException} NotSupportedError\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n checkValidity() {\n return getInternal.call(this)?.checkValidity();\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {boolean}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/reportValidity\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @throws {DOMException} NotSupportedError\n */\n reportValidity() {\n return getInternal.call(this)?.reportValidity();\n }\n\n}\n\n/**\n * @private\n * @return {object}\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @this CustomControl\n */\nfunction getInternal() {\n const self = this;\n\n if (!(internalSymbol in this)) {\n throw new Error('ElementInternals is not supported and a polyfill is necessary');\n }\n\n return this[internalSymbol];\n}\n\nassignToNamespace('Monster.DOM', CustomControl);\nexport {Monster, CustomControl}\n","'use strict';\n\nimport {PROPERTY_KEY_INTERNALDATA} from \"../constants.js\";\nimport {extend} from \"../data/extend.js\";\nimport {Pathfinder} from \"../data/pathfinder.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobalObject} from \"../types/global.js\";\nimport {isArray, isString} from \"../types/is.js\";\nimport {Observer} from \"../types/observer.js\";\nimport {ProxyObserver} from \"../types/proxyobserver.js\";\nimport {validateFunction, validateObject} from \"../types/validate.js\";\nimport {clone} from \"../util/clone.js\";\nimport {addToObjectLink, getLinkedObjects, hasObjectLink} from \"./attributes.js\";\nimport {ATTRIBUTE_OPTIONS, OBJECTLINK_KEY_UPDATER} from \"./constants.js\";\nimport {findDocumentTemplate, Template} from \"./template.js\";\nimport {Updater} from \"./updater.js\";\n\n/**\n * @private\n * @type {symbol}\n */\nconst internalDataSymbol = Symbol.for(PROPERTY_KEY_INTERNALDATA);\n\n/**\n * @private\n * @type {symbol}\n */\nconst objectLinkSymbol = Symbol.for(OBJECTLINK_KEY_UPDATER);\n\n/**\n * @memberOf Monster.DOM\n * @type {symbol}\n */\nconst initMethodSymbol = Symbol('initMethodSymbol');\n\n/**\n * @memberOf Monster.DOM\n * @type {symbol}\n */\nconst assembleMethodSymbol = Symbol('assembleMethodSymbol');\n\n\n/**\n * HTMLElement\n * @external HTMLElement\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement\n */\n\n\n/**\n * To define a new HTML element we need the power of CustomElement\n *\n * IMPORTANT: after defining a `CustomElement`, the `registerCustomElement` method must be called\n * with the new class name. only then will the tag defined via the `getTag` method be made known to the DOM.\n *\n * You can create the object via the monster namespace `new Monster.DOM.CustomElement()`.\n *\n * ```\n * <script type=\"module\">\n * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/customelement.js';\n * console.log(new Monster.DOM.CustomElement())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/customelement.js';\n * console.log(new CustomElement())\n * </script>\n * ```\n *\n * ## Styling\n *\n * For optimal display of custom-elements the pseudo-class :defined can be used.\n *\n * To prevent the custom elements from being displayed and flickering until the control is registered, it is recommended to create a css directive.\n *\n * In the simplest case, you can simply hide the control.\n *\n * ```\n * <style>\n *\n * my-custom-element:not(:defined) {\n * display: none;\n * }\n *\n * my-custom-element:defined {\n * display: flex;\n * }\n *\n * </style>\n * ```\n *\n * Alternatively you can also display a loader\n *\n * ```\n * my-custom-element:not(:defined) {\n * display: flex;\n * box-shadow: 0 4px 10px 0 rgba(33, 33, 33, 0.15);\n * border-radius: 4px;\n * height: 200px;\n * position: relative;\n * overflow: hidden;\n * }\n *\n * my-custom-element:not(:defined)::before {\n * content: '';\n * display: block;\n * position: absolute;\n * left: -150px;\n * top: 0;\n * height: 100%;\n * width: 150px;\n * background: linear-gradient(to right, transparent 0%, #E8E8E8 50%, transparent 100%);\n * animation: load 1s cubic-bezier(0.4, 0.0, 0.2, 1) infinite;\n * }\n *\n * @keyframes load {\n * from {\n * left: -150px;\n * }\n * to {\n * left: 100%;\n * }\n * }\n *\n * my-custom-element:defined {\n * display: flex;\n * }\n * ```\n *\n * @example\n *\n * // In the example the the user can use his own template by creating a template in the DOM with the ID `my-custom-element`.\n * // You can also specify a theme (for example `mytheme`), then it will search for the ID `my-custom-element-mytheme` and\n * // if not available for the ID `my-custom-element`.\n *\n * class MyCustomElement extends CustomElement {\n * \n * static getTag() {\n * return \"my-custom-element\"\n * }\n *\n * }\n *\n * // ↦ <my-custom-element></my-custom-element>\n *\n * @see https://github.com/WICG/webcomponents\n * @see https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @extends external:HTMLElement\n */\nclass CustomElement extends HTMLElement {\n\n /**\n * A new object is created. First the `initOptions` method is called. Here the\n * options can be defined in derived classes. Subsequently, the shadowRoot is initialized.\n *\n * @throws {Error} the options attribute does not contain a valid json definition.\n * @since 1.7.0\n */\n constructor() {\n super();\n this[internalDataSymbol] = new ProxyObserver({'options': extend({}, this.defaults, getOptionsFromAttributes.call(this))});\n initOptionObserver.call(this);\n this[initMethodSymbol]();\n }\n\n /**\n * This method determines which attributes are to be monitored by `attributeChangedCallback()`.\n *\n * @return {string[]}\n * @since 1.15.0\n */\n static get observedAttributes() {\n return [ATTRIBUTE_OPTIONS];\n }\n\n /**\n *\n * Derived classes can override and extend this method as follows.\n *\n * ```\n * get defaults() {\n * return Object.assign({}, super.defaults, {\n * myValue:true\n * });\n * }\n * ```\n *\n * @property {string} shadowMode=open `open` Elements of the shadow root are accessible from JavaScript outside the root, for example using. `close` Denies access to the node(s) of a closed shadow root from JavaScript outside it\n * @property {Boolean} delegatesFocus=true A boolean that, when set to true, specifies behavior that mitigates custom element issues around focusability. When a non-focusable part of the shadow DOM is clicked, the first focusable part is given focus, and the shadow host is given any available :focus styling.\n * @property {Object} templates Templates\n * @property {string} templates.main=undefined Main template\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow\n * @return {{shadowMode: string, delegatesFocus: boolean}}\n * @since 1.8.0\n */\n get defaults() {\n return {\n shadowMode: 'open',\n delegatesFocus: true,\n templates: {\n main: undefined\n }\n };\n }\n\n /**\n * There is no check on the name by this class. the developer is responsible for assigning an appropriate tag.\n * if the name is not valid, registerCustomElement() will issue an error\n *\n * @link https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * @return {string}\n * @throws {Error} the method getTag must be overwritten by the derived class.\n * @since 1.7.0\n */\n static getTag() {\n throw new Error(\"the method getTag must be overwritten by the derived class.\");\n }\n\n /**\n * At this point a `CSSStyleSheet` object can be returned. If the environment does not\n * support a constructor, then an object can also be built using the following detour.\n *\n * If `undefined` is returned then the shadowRoot does not get a stylesheet.\n *\n * ```\n * const doc = document.implementation.createHTMLDocument('title');\n *\n * let style = doc.createElement(\"style\");\n * style.innerHTML=\"p{color:red;}\";\n *\n * // WebKit Hack\n * style.appendChild(document.createTextNode(\"\"));\n * // Add the <style> element to the page\n * doc.head.appendChild(style);\n * return doc.styleSheets[0];\n * ;\n * ```\n *\n * @return {CSSStyleSheet|undefined}\n */\n static getCSSStyleSheet() {\n return undefined;\n }\n\n /**\n * attach a new observer\n *\n * @param {Observer} observer\n * @returns {CustomElement}\n */\n attachObserver(observer) {\n this[internalDataSymbol].attachObserver(observer)\n return this;\n }\n\n /**\n * detach a observer\n *\n * @param {Observer} observer\n * @returns {CustomElement}\n */\n detachObserver(observer) {\n this[internalDataSymbol].detachObserver(observer)\n return this;\n }\n\n /**\n * @param {Observer} observer\n * @returns {ProxyObserver}\n */\n containsObserver(observer) {\n return this[internalDataSymbol].containsObserver(observer)\n }\n\n /**\n * nested options can be specified by path `a.b.c`\n *\n * @param {string} path\n * @param {*} defaultValue\n * @return {*}\n * @since 1.10.0\n */\n getOption(path, defaultValue) {\n let value;\n\n try {\n value = new Pathfinder(this[internalDataSymbol].getRealSubject()['options']).getVia(path);\n } catch (e) {\n\n }\n\n if (value === undefined) return defaultValue;\n return value;\n }\n\n /**\n * Set option and inform elements\n *\n * @param {string} path\n * @param {*} value\n * @return {CustomElement}\n * @since 1.14.0\n */\n setOption(path, value) {\n new Pathfinder(this[internalDataSymbol].getSubject()['options']).setVia(path, value);\n return this;\n }\n\n /**\n * @since 1.15.0\n * @param {string|object} options\n * @return {CustomElement}\n */\n setOptions(options) {\n\n if (isString(options)) {\n options = parseOptionsJSON(options)\n }\n\n const self = this;\n extend(self[internalDataSymbol].getSubject()['options'], self.defaults, options);\n\n return self;\n }\n\n /**\n *\n * @return {CustomElement}\n * @since 1.8.0\n */\n [initMethodSymbol]() {\n return this;\n }\n\n /**\n *\n * @return {CustomElement}\n * @since 1.8.0\n */\n [assembleMethodSymbol]() {\n\n const self = this;\n let elements;\n\n if (this.getOption('shadowMode', false) !== false) {\n try {\n initShadowRoot.call(this);\n elements = this.shadowRoot.childNodes;\n } catch (e) {\n\n }\n try {\n initCSSStylesheet.call(this);\n } catch (e) {\n\n }\n }\n\n if (!(elements instanceof NodeList)) {\n initHtmlContent.call(this);\n elements = this.childNodes;\n }\n\n const updater = new Set;\n addToObjectLink(this, objectLinkSymbol, updater);\n\n for (const [, element] of Object.entries(elements)) {\n\n if (!(element instanceof HTMLElement)) continue;\n if ((element instanceof HTMLTemplateElement)) continue;\n const u = new Updater(element, clone(self[internalDataSymbol].getRealSubject()['options']))\n updater.add(u);\n\n u.run().then(() => {\n u.enableEventProcessing();\n });\n\n }\n\n return this;\n }\n\n /**\n * Called every time the element is inserted into the DOM. Useful for running setup code, such as\n * fetching resources or rendering. Generally, you should try to delay work until this time.\n *\n * @return {void}\n * @since 1.7.0\n */\n connectedCallback() {\n let self = this;\n if (!hasObjectLink(self, objectLinkSymbol)) {\n self[assembleMethodSymbol]()\n }\n }\n\n /**\n * Called every time the element is removed from the DOM. Useful for running clean up code.\n *\n * @return {void}\n * @since 1.7.0\n */\n disconnectedCallback() {\n\n }\n\n /**\n * The custom element has been moved into a new document (e.g. someone called document.adoptNode(el)).\n *\n * @return {void}\n * @since 1.7.0\n */\n adoptedCallback() {\n\n }\n\n /**\n * Called when an observed attribute has been added, removed, updated, or replaced. Also called for initial\n * values when an element is created by the parser, or upgraded. Note: only attributes listed in the observedAttributes\n * property will receive this callback.\n *\n * @param {string} attrName\n * @param {string} oldVal\n * @param {string} newVal\n * @return {void}\n * @since 1.15.0\n */\n attributeChangedCallback(attrName, oldVal, newVal) {\n const self = this;\n\n if (attrName === ATTRIBUTE_OPTIONS) {\n self.setOptions(newVal);\n }\n\n }\n\n}\n\n/**\n * @since 1.15.0\n * @private\n * @this CustomElement\n */\nfunction initOptionObserver() {\n const self = this;\n\n self.attachObserver(new Observer(function () {\n\n // not initialised\n if (!hasObjectLink(self, Symbol.for(OBJECTLINK_KEY_UPDATER))) {\n return;\n }\n // inform every element\n const updaters = getLinkedObjects(self, Symbol.for(OBJECTLINK_KEY_UPDATER));\n\n for (const list of updaters) {\n for (const updater of list) {\n let d = clone(self[internalDataSymbol].getRealSubject()['options']);\n Object.assign(updater.getSubject(), d);\n }\n }\n\n }));\n\n}\n\n/**\n * @private\n * @return {object}\n * @throws {Error} the options attribute does not contain a valid json definition.\n */\nfunction getOptionsFromAttributes() {\n if (this.hasAttribute(ATTRIBUTE_OPTIONS)) {\n try {\n return parseOptionsJSON(this.getAttribute(ATTRIBUTE_OPTIONS))\n } catch (e) {\n throw new Error('the options attribute ' + ATTRIBUTE_OPTIONS + ' does not contain a valid json definition (actual: ' + this.getAttribute(ATTRIBUTE_OPTIONS) + ').');\n }\n }\n\n return {};\n}\n\n\nfunction parseOptionsJSON(data) {\n if (isString(data)) {\n try {\n let obj = JSON.parse(data);\n validateObject(obj);\n return obj;\n } catch (e) {\n throw new Error('the options does not contain a valid json definition (actual: ' + data + ').');\n }\n }\n\n return {};\n}\n\n/**\n * @private\n * @return {initHtmlContent}\n */\nfunction initHtmlContent() {\n\n try {\n let template = findDocumentTemplate(this.constructor.getTag());\n this.appendChild(template.createDocumentFragment());\n } catch (e) {\n\n let html = this.getOption('templates.main', '');\n if (isString(html) && html.length > 0) {\n this.innerHTML = html;\n }\n\n }\n\n return this;\n\n}\n\n/**\n * @private\n * @return {CustomElement}\n * @memberOf Monster.DOM\n * @this CustomElement\n * @since 1.16.0\n */\nfunction initCSSStylesheet() {\n const self = this;\n\n if (!(this.shadowRoot instanceof ShadowRoot)) {\n return self;\n }\n\n const styleSheet = this.constructor.getCSSStyleSheet();\n if (styleSheet instanceof CSSStyleSheet) {\n this.shadowRoot.adoptedStyleSheets = [styleSheet];\n } else if (isArray(styleSheet)) {\n this.shadowRoot.adoptedStyleSheets = styleSheet;\n } else if (isString(styleSheet)) {\n const style = self.shadowRoot.createElement('<style>')\n style.innerText = styleSheet;\n this.shadowRoot.adoptedStyleSheets = styleSheet;\n }\n\n return self;\n\n}\n\n/**\n * @private\n * @return {CustomElement}\n * @throws {Error} html is not set.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow\n * @memberOf Monster.DOM\n * @since 1.8.0\n */\nfunction initShadowRoot() {\n\n let template, html;\n\n try {\n template = findDocumentTemplate(this.constructor.getTag());\n } catch (e) {\n\n html = this.getOption('templates.main', '');\n if (!isString(html) || html === undefined || html === \"\") {\n throw new Error(\"html is not set.\");\n }\n\n }\n\n this.attachShadow({\n mode: this.getOption('shadowMode', 'open'),\n delegatesFocus: this.getOption('delegatesFocus', true)\n });\n\n if (template instanceof Template) {\n this.shadowRoot.appendChild(template.createDocumentFragment());\n return this;\n }\n\n this.shadowRoot.innerHTML = html;\n return this;\n}\n\n/**\n * This method registers a new element. The string returned by `CustomElement.getTag()` is used as the tag.\n *\n * @param {CustomElement} element\n * @return {void}\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {DOMException} Failed to execute 'define' on 'CustomElementRegistry': is not a valid custom element name\n */\nfunction registerCustomElement(element) {\n validateFunction(element);\n getGlobalObject('customElements').define(element.getTag(), element);\n}\n\nassignToNamespace('Monster.DOM', CustomElement, registerCustomElement);\nexport {Monster, registerCustomElement, CustomElement, initMethodSymbol, assembleMethodSymbol}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {getGlobalFunction, getGlobalObject} from '../types/global.js';\nimport {validateInstance, validateString} from \"../types/validate.js\";\nimport {getDocumentTheme} from \"./theme.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.DOM.Template()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/template.js';\n * console.log(new Monster.DOM.Template())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Template} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/template.js';\n * console.log(new Template())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass Template extends Base {\n /**\n *\n * @param {HTMLTemplateElement} template\n * @throws {TypeError} value is not an instance of\n * @throws {TypeError} value is not a function\n * @throws {Error} the function is not defined\n */\n constructor(template) {\n super();\n const HTMLTemplateElement = getGlobalFunction('HTMLTemplateElement');\n validateInstance(template, HTMLTemplateElement);\n this.template = template;\n }\n\n /**\n *\n * @returns {HTMLTemplateElement}\n */\n getTemplateElement() {\n return this.template;\n }\n\n /**\n *\n * @return {DocumentFragment}\n * @throws {TypeError} value is not an instance of\n */\n createDocumentFragment() {\n return this.template.content.cloneNode(true);\n }\n\n}\n\n/**\n *\n *\n * you can call the method via the monster namespace `Monster.DOM.findDocumentTemplate()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/template.js';\n * console.log(Monster.DOM.findDocumentTemplate())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {findTemplate} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/template.js';\n * console.log(findDocumentTemplate())\n * </script>\n * ```\n *\n * @param {string} id\n * @param {Node} currentNode\n * @return {Template}\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} template id not found.\n * @throws {TypeError} value is not a string\n */\nfunction findDocumentTemplate(id, currentNode) {\n validateString(id);\n\n if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {\n\n if (currentNode instanceof Node) {\n currentNode = currentNode.getRootNode();\n\n if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {\n currentNode = currentNode.ownerDocument;\n }\n\n }\n\n if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {\n currentNode = getGlobalObject('document');\n }\n }\n\n const HTMLTemplateElement = getGlobalFunction('HTMLTemplateElement');\n\n let theme = getDocumentTheme()\n let themedID = id + '-' + theme.getName();\n\n let template = currentNode.getElementById(themedID);\n if (template instanceof HTMLTemplateElement) {\n return new Template(template);\n }\n\n template = currentNode.getElementById(id);\n if (template instanceof HTMLTemplateElement) {\n return new Template(template);\n }\n\n if (currentNode !== getGlobalObject('document')) {\n return findDocumentTemplate(id)\n }\n\n throw new Error(\"template \" + id + \" not found.\")\n}\n\n\nassignToNamespace('Monster.DOM', Template, findDocumentTemplate);\nexport {Monster, Template, findDocumentTemplate}\n\n\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {getGlobalObject} from '../types/global.js';\nimport {validateString} from \"../types/validate.js\";\nimport {ATTRIBUTE_THEME_NAME, DEFAULT_THEME} from \"./constants.js\";\n\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.Theme()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/theme.js';\n * console.log(new Monster.DOM.Theme())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Theme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/theme.js';\n * console.log(new Theme())\n * </script>\n * ```\n *\n * @example\n *\n * import {getDocumentTheme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/theme.js';\n *\n * const theme = getDocumentTheme();\n * console.log(theme.getName());\n * // ↦ monster\n *\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass Theme extends Base {\n\n /**\n *\n * @param name\n * @throws {TypeError} value is not a string\n */\n constructor(name) {\n super();\n validateString(name);\n this.name = name;\n }\n\n /**\n *\n * @returns {string}\n */\n getName() {\n return this.name;\n }\n\n}\n\n/**\n * The theming used in the document can be defined via the html-tag.\n * The theming is specified via the attribute `data-monster-theme-name`.\n *\n * As name for a theme all characters are valid, which are also allowed for a HTMLElement-ID.\n *\n * ```\n * <html data-monster-theme-name=\"my-theme\">\n * ```\n *\n * the default theme name is `monster`.\n *\n * @return {Theme}\n * @memberOf Monster.DOM\n * @since 1.7.0\n */\nfunction getDocumentTheme() {\n let document = getGlobalObject('document');\n let name = DEFAULT_THEME;\n\n let element = document.querySelector('html');\n if (element instanceof HTMLElement) {\n let theme = element.getAttribute(ATTRIBUTE_THEME_NAME);\n if (theme) {\n name = theme;\n }\n }\n\n return new Theme(name);\n\n}\n\nassignToNamespace('Monster.DOM', Theme, getDocumentTheme);\nexport {Monster, Theme, getDocumentTheme}\n","'use strict';\n\nimport {Diff} from \"../data/diff.js\";\nimport {Pathfinder} from \"../data/pathfinder.js\";\nimport {Pipe} from \"../data/pipe.js\";\nimport {\n ATTRIBUTE_UPDATER_ATTRIBUTES,\n ATTRIBUTE_UPDATER_BIND,\n ATTRIBUTE_UPDATER_INSERT,\n ATTRIBUTE_UPDATER_INSERT_REFERENCE,\n ATTRIBUTE_UPDATER_REMOVE,\n ATTRIBUTE_UPDATER_REPLACE\n} from \"../dom/constants.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"../types/base.js\";\nimport {isArray, isInstance, isIterable} from \"../types/is.js\";\nimport {Observer} from \"../types/observer.js\";\nimport {ProxyObserver} from \"../types/proxyobserver.js\";\nimport {validateArray, validateInstance} from \"../types/validate.js\";\nimport {clone} from \"../util/clone.js\";\nimport {findDocumentTemplate} from \"./template.js\";\nimport {getDocument} from \"./util.js\";\n\n\n/**\n * The updater class connects an object with the dom. in this way, structures and contents in the DOM can be programmatically adapted via attributes.\n *\n * For example, to include a string from an object, the attribute `data-monster-replace` can be used.\n *\n * you can call the method via the monster namespace `new Monster.DOM.Updater()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/updater.js';\n * console.log(new Monster.DOM.Updater())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/updater.js';\n * console.log(new Updater())\n * </script>\n * ```\n *\n * @example\n *\n * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/updater.js';\n *\n * // First we prepare the html document.\n * // This is done here via script, but can also be inserted into the document as pure html.\n * // To do this, simply insert the tag <h1 data-monster-replace=\"path:headline\"></h1>.\n * const body = document.querySelector('body');\n * const headline = document.createElement('h1');\n * headline.setAttribute('data-monster-replace','path:headline')\n * body.appendChild(headline);\n *\n * // the data structure\n * let obj = {\n * headline: \"Hello World\",\n * };\n *\n * // Now comes the real magic. we pass the updater the parent HTMLElement\n * // and the desired data structure.\n * const updater = new Updater(body, obj);\n * updater.run();\n *\n * // Now you can change the data structure and the HTML will follow these changes.\n * const subject = updater.getSubject();\n * subject['headline'] = \"Hello World!\"\n *\n * @since 1.8.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} the value is not iterable\n * @throws {Error} pipes are not allowed when cloning a node.\n * @throws {Error} no template was found with the specified key.\n * @throws {Error} the maximum depth for the recursion is reached.\n * @throws {TypeError} value is not a object\n * @throws {TypeError} value is not an instance of HTMLElement\n */\nclass Updater extends Base {\n\n /**\n * @since 1.8.0\n * @param {HTMLElement} element\n * @param {object|ProxyObserver|undefined} subject\n * @throws {TypeError} value is not a object\n * @throws {TypeError} value is not an instance of HTMLElement\n */\n constructor(element, subject) {\n super();\n\n /**\n * @type {HTMLElement}\n */\n this.element = validateInstance(element, HTMLElement);\n\n if (subject === undefined) subject = {}\n let a = subject;\n if (!isInstance(subject, ProxyObserver)) {\n subject = new ProxyObserver(subject);\n }\n\n this.last = {};\n this.callbacks = new Map();\n this.callbacks.set('checkstate', getCheckStateCallback.call(this));\n\n /**\n * @type {object}\n */\n this.subject = subject.attachObserver(new Observer(() => {\n\n const s = this.subject.getRealSubject();\n\n const diff = Diff(this.last, s)\n this.last = clone(s);\n\n for (const [, change] of Object.entries(diff)) {\n removeElement.call(this, change);\n insertElement.call(this, change);\n updateContent.call(this, change);\n updateAttributes.call(this, change);\n }\n }));\n\n this.eventTypes = ['keyup', 'click', 'change', 'drop', 'touchend', 'input'];\n\n }\n\n /**\n * Defaults: 'keyup', 'click', 'change', 'drop', 'touchend'\n *\n * @see https://developer.mozilla.org/de/docs/Web/Events\n * @since 1.9.0\n * @param {Array} types\n * @return {Updater}\n */\n setEventTypes(types) {\n this.eventTypes = validateArray(types);\n return this;\n }\n\n /**\n *\n * @since 1.9.0\n * @return {Updater}\n */\n enableEventProcessing() {\n this.disableEventProcessing();\n\n for (const type of this.eventTypes) {\n this.element.addEventListener(type, getControlEventHandler.call(this));\n }\n\n return this;\n\n }\n\n /**\n *\n * @since 1.9.0\n * @return {Updater}\n */\n disableEventProcessing() {\n\n for (const type of this.eventTypes) {\n this.element.removeEventListener(type, getControlEventHandler.call(this));\n }\n\n return this;\n\n }\n\n // /**\n // * \n // * @param {string} path\n // * @param {*} value\n // * @param {boolean} notifyAnyway\n // * @return {Updater}\n // * @since 1.15.0\n // */\n // setVia(path, value, notifyAnyway) {\n // if(isBoolean(notifyAnyway)&&notifyAnyway===true) {\n // // the key __init__has no further meaning and is only \n // // used to create the diff for empty objects.\n // new Pathfinder(this.last).setVia(path, {'__init__': true});\n // \n // }\n //\n // new Pathfinder(this.subject.getSubject()).setVia(path, value);\n // return this;\n // }\n\n /**\n * Let the magic begin\n *\n * The run method must be called for the update to start working.\n *\n * @return {Promise}\n */\n run() {\n // the key __init__has no further meaning and is only \n // used to create the diff for empty objects.\n this.last = {'__init__': true};\n return this.subject.notifyObservers();\n }\n\n /**\n * If you have passed a ProxyObserver in the constructor, you will get the same object here.\n * However, if you have passed a simple object, you will get the ProxyObserver here.\n *\n * For changes the ProxyObserver must be used.\n *\n * @since 1.8.0\n * @return {ProxyObserver}\n */\n getSubject() {\n return this.subject.getSubject();\n }\n\n /**\n * This method can be used to register commands that can be called via call: instruction.\n * This can be used to provide a pipe with its own functionality.\n *\n * @param {string} name\n * @param {function} callback\n * @returns {Transformer}\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not a function\n */\n setCallback(name, callback) {\n this.callbacks.set(name, callback);\n return this;\n }\n\n}\n\n/**\n * @private\n * @since 1.9.0\n * @return {function\n * @this Updater\n */\nfunction getCheckStateCallback() {\n const self = this;\n\n return function (current) {\n\n if (this instanceof HTMLInputElement) {\n if (['radio', 'checkbox'].indexOf(this.type) !== -1) {\n return (this.value + \"\" === current + \"\") ? 'true' : undefined\n }\n } else if (this instanceof HTMLOptionElement) {\n\n if (isArray(current) && current.indexOf(this.value) !== -1) {\n return 'true'\n }\n return undefined;\n\n\n }\n }\n}\n\n/**\n * @private\n */\nconst symbol = Symbol('EventHandler');\n\n/**\n * @private\n * @return {function}\n * @this Updater\n */\nfunction getControlEventHandler() {\n\n const self = this;\n\n if (self[symbol]) {\n return self[symbol];\n }\n\n const pathfinder = new Pathfinder(this.subject.getSubject());\n\n /**\n * @throws {Error} the bind argument must start as a value with a path.\n * @throws {Error} unsupported object\n * @param {Event} event\n */\n self[symbol] = (event) => {\n const element = event.target;\n\n if (!element.hasAttribute(ATTRIBUTE_UPDATER_BIND)) {\n return;\n }\n\n let path = element.getAttribute(ATTRIBUTE_UPDATER_BIND);\n\n if (path.indexOf('path:') !== 0) {\n throw new Error('the bind argument must start as a value with a path.');\n }\n\n path = path.substr(5);\n\n let value;\n\n if (element instanceof HTMLInputElement) {\n switch (element.type) {\n\n case 'checkbox':\n value = element.checked ? element.value : undefined;\n break;\n default:\n value = element.value;\n break;\n\n\n }\n } else if (element instanceof HTMLTextAreaElement) {\n value = element.value;\n\n } else if (element instanceof HTMLSelectElement) {\n\n switch (element.type) {\n case 'select-one':\n value = element.value;\n break;\n case 'select-multiple':\n value = element.value;\n\n let options = element?.selectedOptions;\n if (options === undefined) options = element.querySelectorAll(\":scope option:checked\");\n value = Array.from(options).map(({value}) => value);\n\n break;\n }\n\n\n // values from customelements \n } else if ((element?.constructor?.prototype && !!Object.getOwnPropertyDescriptor(element.constructor.prototype, 'value')?.['get']) || element.hasOwnProperty('value')) {\n value = element?.['value'];\n } else {\n throw new Error(\"unsupported object\");\n }\n\n const copy = clone(self.subject.getRealSubject());\n const pf = new Pathfinder(copy);\n pf.setVia(path, value);\n\n const diff = new Diff(copy, self.subject.getRealSubject());\n\n if (diff.length > 0) {\n pathfinder.setVia(path, value);\n }\n\n }\n\n return self[symbol];\n\n\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {object} change\n * @return {void}\n */\nfunction removeElement(change) {\n for (const [, element] of this.element.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_REMOVE + ']').entries()) {\n element.parentNode.removeChild(element);\n }\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {object} change\n * @return {void}\n * @throws {Error} the value is not iterable\n * @throws {Error} pipes are not allowed when cloning a node.\n * @throws {Error} no template was found with the specified key.\n * @throws {Error} the maximum depth for the recursion is reached.\n * @this Updater\n */\nfunction insertElement(change) {\n const self = this;\n const subject = self.subject.getRealSubject();\n const document = getDocument();\n\n let mem = new WeakSet;\n let wd = 0;\n\n\n while (true) {\n let found = false;\n wd++;\n\n let p = clone(change?.['path']);\n if (!isArray(p)) return this;\n\n while (p.length > 0) {\n const current = p.join('.');\n const list = this.element.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_INSERT + '*=\"path:' + current + '\"]').entries()\n\n for (const [, containerElement] of list) {\n\n if (mem.has(containerElement)) continue;\n mem.add(containerElement)\n\n found = true;\n\n const attributes = containerElement.getAttribute(ATTRIBUTE_UPDATER_INSERT);\n let def = attributes.trim();\n let i = def.indexOf(' ');\n let key = def.substr(0, i).trim();\n let refPrefix = key + '-';\n let cmd = def.substr(i).trim();\n\n // this case is actually excluded by the query but is nevertheless checked again here\n if (cmd.indexOf('|') > 0) {\n throw new Error(\"pipes are not allowed when cloning a node.\");\n }\n\n let pipe = new Pipe(cmd);\n this.callbacks.forEach((f, n) => {\n pipe.setCallback(n, f);\n })\n\n let value = pipe.run(subject)\n let dataPath = cmd.split(':').pop();\n\n let insertPoint;\n if (containerElement.hasChildNodes()) {\n insertPoint = containerElement.lastChild;\n }\n\n if (!isIterable(value)) {\n throw new Error('the value is not iterable');\n }\n\n let available = new Set;\n\n for (const [i, obj] of Object.entries(value)) {\n let ref = refPrefix + i;\n let currentPath = dataPath + \".\" + i;\n\n available.add(ref);\n let refElement = containerElement.querySelector('[' + ATTRIBUTE_UPDATER_INSERT_REFERENCE + '=\"' + ref + '\"]');\n\n if (refElement instanceof HTMLElement) {\n insertPoint = refElement;\n continue;\n }\n\n appendNewDocumentFragment(containerElement, key, ref, currentPath);\n }\n\n let nodes = containerElement.querySelectorAll('[' + ATTRIBUTE_UPDATER_INSERT_REFERENCE + '*=\"' + refPrefix + '\"]');\n for (const [, node] of Object.entries(nodes)) {\n if (!available.has(node.getAttribute(ATTRIBUTE_UPDATER_INSERT_REFERENCE))) {\n containerElement.removeChild(node);\n }\n }\n }\n\n p.pop();\n }\n\n if (found === false) break;\n if (wd++ > 200) {\n throw new Error('the maximum depth for the recursion is reached.');\n }\n\n }\n\n\n}\n\n/**\n *\n * @private\n * @since 1.8.0\n * @param {HTMLElement} container\n * @param {string} key\n * @param {string} ref\n * @param {string} path\n * @throws {Error} no template was found with the specified key.\n */\nfunction appendNewDocumentFragment(container, key, ref, path) {\n\n let template = findDocumentTemplate(key, container);\n\n let nodes = template.createDocumentFragment();\n for (const [, node] of Object.entries(nodes.childNodes)) {\n if (node instanceof HTMLElement) {\n\n applyRecursive(node, key, path);\n node.setAttribute(ATTRIBUTE_UPDATER_INSERT_REFERENCE, ref);\n }\n\n container.appendChild(node);\n }\n}\n\n/**\n * @private\n * @since 1.10.0\n * @param {HTMLElement} node\n * @param {string} key\n * @param {string} path\n * @return {void}\n */\nfunction applyRecursive(node, key, path) {\n\n if (node instanceof HTMLElement) {\n\n if (node.hasAttribute(ATTRIBUTE_UPDATER_REPLACE)) {\n let value = node.getAttribute(ATTRIBUTE_UPDATER_REPLACE);\n node.setAttribute(ATTRIBUTE_UPDATER_REPLACE, value.replace(\"path:\" + key, \"path:\" + path));\n }\n\n if (node.hasAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES)) {\n let value = node.getAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES);\n node.setAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES, value.replace(\"path:\" + key, \"path:\" + path));\n }\n\n for (const [, child] of Object.entries(node.childNodes)) {\n applyRecursive(child, key, path);\n }\n }\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {object} change\n * @return {void}\n * @this Updater\n */\nfunction updateContent(change) {\n const self = this;\n const subject = self.subject.getRealSubject();\n\n let p = clone(change?.['path']);\n runUpdateContent.call(this, this.element, p, subject);\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {HTMLElement} container\n * @param {array} parts\n * @param {object} subject\n * @return {void}\n */\nfunction runUpdateContent(container, parts, subject) {\n if (!isArray(parts)) return;\n parts = clone(parts);\n\n let mem = new WeakSet;\n\n while (parts.length > 0) {\n const current = parts.join('.');\n parts.pop();\n\n // Unfortunately, static data is always changed as well, since it is not possible to react to changes here.\n for (const [, element] of container.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_REPLACE + '^=\"path:' + current + '\"], [' + ATTRIBUTE_UPDATER_REPLACE + '^=\"static:\"]').entries()) {\n\n if (mem.has(element)) continue;\n mem.add(element)\n\n const attributes = element.getAttribute(ATTRIBUTE_UPDATER_REPLACE)\n let cmd = attributes.trim();\n\n let pipe = new Pipe(cmd);\n this.callbacks.forEach((f, n) => {\n pipe.setCallback(n, f);\n })\n\n let value = pipe.run(subject)\n\n if (value instanceof HTMLElement) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n element.addNode(value);\n } else {\n element.innerHTML = value;\n }\n\n }\n }\n\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {string} path\n * @param {object} change\n * @return {void}\n */\nfunction updateAttributes(change) {\n const subject = this.subject.getRealSubject();\n let p = clone(change?.['path']);\n runUpdateAttributes.call(this, this.element, p, subject);\n}\n\n/**\n * @private\n * @param {HTMLElement} container\n * @param {array} parts\n * @param {object} subject\n * @return {void}\n * @this Updater\n */\nfunction runUpdateAttributes(container, parts, subject) {\n\n const self = this;\n\n if (!isArray(parts)) return;\n parts = clone(parts);\n\n let mem = new WeakSet;\n\n while (parts.length > 0) {\n const current = parts.join('.');\n parts.pop();\n\n for (const [, element] of container.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_ATTRIBUTES + '*=\"path:' + current + '\"]').entries()) {\n\n if (mem.has(element)) continue;\n mem.add(element)\n\n const attributes = element.getAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES)\n\n for (let [, def] of Object.entries(attributes.split(','))) {\n def = def.trim();\n let i = def.indexOf(' ');\n let name = def.substr(0, i).trim();\n let cmd = def.substr(i).trim();\n\n let pipe = new Pipe(cmd);\n\n self.callbacks.forEach((f, n) => {\n pipe.setCallback(n, f, element);\n })\n\n let value = pipe.run(subject)\n\n if (value === undefined) {\n element.removeAttribute(name)\n\n } else if (element.getAttribute(name) !== value) {\n element.setAttribute(name, value);\n }\n\n handleInputControlAttributeUpdate.call(this, element, name, value);\n\n\n }\n }\n\n }\n\n}\n\n/**\n * @private\n * @param {HTMLElement|*} element\n * @param {string} name\n * @param {string|number|undefined} value\n * @return {void}\n * @this Updater\n */\n\nfunction handleInputControlAttributeUpdate(element, name, value) {\n const self = this;\n\n if (element instanceof HTMLSelectElement) {\n\n\n switch (element.type) {\n case 'select-multiple':\n\n for (const [index, opt] of Object.entries(element.options)) {\n if (value.indexOf(opt.value) !== -1) {\n opt.selected = true;\n } else {\n opt.selected = false;\n }\n }\n\n break;\n case 'select-one':\n // Only one value may be selected\n\n for (const [index, opt] of Object.entries(element.options)) {\n if (opt.value === value) {\n element.selectedIndex = index;\n break;\n }\n }\n\n break;\n }\n\n\n } else if (element instanceof HTMLInputElement) {\n switch (element.type) {\n\n case 'radio':\n if (name === 'checked' && value !== undefined) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n\n break;\n\n case 'checkbox':\n if (name === 'checked' && value !== undefined) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n\n break;\n case 'text':\n default:\n if (name === 'value') {\n element.value = (value === undefined ? \"\" : value);\n }\n\n break;\n\n\n }\n } else if (element instanceof HTMLTextAreaElement) {\n if (name === 'value') {\n element.value = (value === undefined ? \"\" : value);\n }\n }\n\n}\n\nassignToNamespace('Monster.DOM', Updater);\nexport {Monster, Updater}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobal} from \"../types/global.js\";\nimport {validateString} from \"../types/validate.js\";\n\n\n/**\n * this method fetches the document object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getDocument())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/util.js';\n * console.log(getDocument())\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n * const {window} = new JSDOM('', {\n * url: 'http://example.com/',\n * pretendToBeVisual: true\n * });\n *\n * [\n * 'self',\n * 'document',\n * 'Document',\n * 'Node',\n * 'Element',\n * 'HTMLElement',\n * 'DocumentFragment',\n * 'DOMParser',\n * 'XMLSerializer',\n * 'NodeFilter',\n * 'InputEvent',\n * 'CustomEvent'\n * ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {object}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} not supported environment\n */\nfunction getDocument() {\n let document = getGlobal()?.['document'];\n if (typeof document !== 'object') {\n throw new Error(\"not supported environment\")\n }\n\n return document;\n}\n\n/**\n * this method fetches the window object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getWindow())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getWindow} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/util.js';\n * console.log(getWindow(null))\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n * const {window} = new JSDOM('', {\n * url: 'http://example.com/',\n * pretendToBeVisual: true\n * });\n *\n * getGlobal()['window']=window;\n * \n * [\n * 'self',\n * 'document',\n * 'Document',\n * 'Node',\n * 'Element',\n * 'HTMLElement',\n * 'DocumentFragment',\n * 'DOMParser',\n * 'XMLSerializer',\n * 'NodeFilter',\n * 'InputEvent',\n * 'CustomEvent'\n * ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {object}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} not supported environment\n */\nfunction getWindow() {\n let window = getGlobal()?.['window'];\n if (typeof window !== 'object') {\n throw new Error(\"not supported environment\")\n }\n\n return window;\n}\n\n\n/**\n *\n *\n * this method fetches the document object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getDocumentFragmentFromString())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getDocumentFragmentFromString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/util.js';\n * console.log(getDocumentFragmentFromString('<div></div>'))\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n * const {window} = new JSDOM('', {\n * url: 'http://example.com/',\n * pretendToBeVisual: true\n * });\n *\n * [\n * 'self',\n * 'document',\n * 'Document',\n * 'Node',\n * 'Element',\n * 'HTMLElement',\n * 'DocumentFragment',\n * 'DOMParser',\n * 'XMLSerializer',\n * 'NodeFilter',\n * 'InputEvent',\n * 'CustomEvent'\n * ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {DocumentFragment}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} not supported environment\n * @throws {TypeError} value is not a string\n */\nfunction getDocumentFragmentFromString(html) {\n validateString(html);\n\n const document = getDocument();\n const template = document.createElement('template');\n template.innerHTML = html;\n\n return template.content;\n}\n\n\nassignToNamespace('Monster.DOM', getWindow, getDocument, getDocumentFragmentFromString);\nexport {Monster, getWindow, getDocument, getDocumentFragmentFromString}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {validateInstance, validateString} from \"../types/validate.js\";\nimport {findClosestByAttribute} from \"./attributes.js\";\nimport {getDocument} from \"./util.js\";\n\n/**\n * You can call the function via the monster namespace `new Monster.DOM.fireEvent()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/events.js';\n * console.log(new Monster.DOM.fireEvent())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {fireEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/events.js';\n * console.log(fireEvent())\n * </script>\n * ```\n *\n * @param {HTMLElement|HTMLCollection|NodeList} element\n * @param {string} type\n * @return {void}\n * @since 1.10.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {TypeError} value is not an instance of HTMLElement or HTMLCollection\n */\nfunction fireEvent(element, type) {\n\n const document = getDocument();\n\n if (element instanceof HTMLElement) {\n\n if (type === 'click') {\n element.click();\n return;\n }\n\n let event = new Event(validateString(type), {\n bubbles: true,\n cancelable: true,\n });\n\n element.dispatchEvent(event);\n\n } else if (element instanceof HTMLCollection || element instanceof NodeList) {\n for (let e of element) {\n fireEvent(e, type);\n }\n } else {\n throw new TypeError('value is not an instance of HTMLElement or HTMLCollection')\n }\n\n}\n\n/**\n * This function gets the path `Event.composedPath()` from an event and tries to find the next element\n * up the tree `element.closest()` with the attribute and value. If no value is specified, only the attribute is searched.\n *\n * You can call the function via the monster namespace `new Monster.DOM.findTargetElementFromEvent()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/events.js';\n * console.log(new Monster.DOM.findTargetElementFromEvent())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {findTargetElementFromEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/events.js';\n * console.log(findTargetElementFromEvent())\n * </script>\n * ```\n *\n * @since 1.14.0\n * @param {Event} event\n * @param {string} attributeName\n * @param {string|null} attributeValue\n * @throws {Error} unsupported event\n * @memberOf Monster.DOM\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an instance of HTMLElement\n */\nfunction findTargetElementFromEvent(event, attributeName, attributeValue) {\n validateInstance(event, Event);\n\n if (typeof event.composedPath !== 'function') {\n throw new Error('unsupported event');\n }\n\n const path = event.composedPath();\n const element = path?.[0];\n\n if (element instanceof HTMLElement) {\n return findClosestByAttribute(element, attributeName, attributeValue);\n }\n\n return undefined;\n\n}\n\n\nassignToNamespace('Monster.DOM', findTargetElementFromEvent, fireEvent);\nexport {Monster, findTargetElementFromEvent, fireEvent}\n","'use strict';\n\nimport {parseLocale} from \"../i18n/locale.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getDocument} from \"./util.js\";\n\n/**\n * @private\n * @type {string}\n */\nconst DEFAULT_LANGUAGE = 'en';\n\n/**\n * With this function you can read the language version set by the document.\n * For this the attribute `lang` in the html tag is read. If no attribute is set, `en` is used as default.\n *\n * You can call the function via the monster namespace `new Monster.DOM.getLocaleOfDocument()`.\n *\n * ```\n * <script type=\"module\">\n * import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/locale.js';\n * console.log(new Monster.DOM.getLocaleOfDocument())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/dom/locale.js';\n * console.log(new getLocaleOfDocument())\n * </script>\n * ```\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {TypeError} value is not a string\n * @throws {Error} unsupported locale\n */\nfunction getLocaleOfDocument() {\n\n const document = getDocument();\n\n let html = document.querySelector('html')\n if (html instanceof HTMLElement && html.hasAttribute('lang')) {\n let locale = html.getAttribute('lang');\n if (locale) {\n return new parseLocale(locale)\n }\n }\n\n return parseLocale(DEFAULT_LANGUAGE);\n}\n\nassignToNamespace('Monster.DOM', getLocaleOfDocument);\nexport {Monster, getLocaleOfDocument}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"../types/base.js\";\nimport {validateString} from \"../types/validate.js\";\nimport {clone} from \"../util/clone.js\";\n\n/**\n * @memberOf Monster.I18n\n * @type {symbol}\n */\nconst propertiesSymbol = Symbol('properties');\n\n/**\n * @type {symbol}\n * @memberOf Monster.I18n\n */\nconst localeStringSymbol = Symbol('localeString');\n\n/**\n * You can create an instance via the monster namespace `new Monster.I18n.Locale()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/locale.js';\n * console.log(new Monster.I18n.Locale())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {Locale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/locale.js';\n * console.log(new Locale())\n * </script>\n * ```\n *\n * RFC\n *\n * ```\n * A Language-Tag consists of:\n * langtag ; generated tag\n * -or- private-use ; a private use tag\n *\n * langtag = (language\n * [\"-\" script]\n * [\"-\" region]\n * *(\"-\" variant)\n * *(\"-\" extension)\n * [\"-\" privateuse])\n *\n * language = \"en\", \"ale\", or a registered value\n *\n * script = \"Latn\", \"Cyrl\", \"Hant\" ISO 15924 codes\n *\n * region = \"US\", \"CS\", \"FR\" ISO 3166 codes\n * \"419\", \"019\", or UN M.49 codes\n *\n * variant = \"rozaj\", \"nedis\", \"1996\", multiple subtags can be used in a tag\n *\n * extension = single letter followed by additional subtags; more than one extension\n * may be used in a language tag\n *\n * private-use = \"x-\" followed by additional subtags, as many as are required\n * Note that these can start a tag or appear at the end (but not\n * in the middle)\n * ```\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n\n * @see https://datatracker.ietf.org/doc/html/rfc3066\n */\nclass Locale extends Base {\n\n /**\n * @param {string} language\n * @param {string} [region]\n * @param {string} [script]\n * @param {string} [variants]\n * @param {string} [extlang]\n * @param {string} [privateUse]\n * @throws {Error} unsupported locale\n */\n constructor(language, region, script, variants, extlang, privateUse) {\n super();\n\n this[propertiesSymbol] = {\n language: (language === undefined) ? undefined : validateString(language),\n script: (script === undefined) ? undefined : validateString(script),\n region: (region === undefined) ? undefined : validateString(region),\n variants: (variants === undefined) ? undefined : validateString(variants),\n extlang: (extlang === undefined) ? undefined : validateString(extlang),\n privateUse: (privateUse === undefined) ? undefined : validateString(privateUse),\n };\n\n let s = [];\n if (language !== undefined) s.push(language);\n if (script !== undefined) s.push(script);\n if (region !== undefined) s.push(region);\n if (variants !== undefined) s.push(variants);\n if (extlang !== undefined) s.push(extlang);\n if (privateUse !== undefined) s.push(privateUse);\n\n if (s.length === 0) {\n throw new Error('unsupported locale');\n }\n\n this[localeStringSymbol] = s.join('-');\n\n }\n\n /**\n * @return {string}\n */\n get localeString() {\n return this[localeStringSymbol];\n }\n\n /**\n * @return {string|undefined}\n */\n get language() {\n return this[propertiesSymbol].language;\n }\n\n /**\n * @return {string|undefined}\n */\n get region() {\n return this[propertiesSymbol].region;\n }\n\n /**\n * @return {string|undefined}\n */\n get script() {\n return this[propertiesSymbol].script;\n }\n\n /**\n * @return {string|undefined}\n */\n get variants() {\n return this[propertiesSymbol].variants;\n }\n\n /**\n * @return {string|undefined}\n */\n get extlang() {\n return this[propertiesSymbol].extlang;\n }\n\n /**\n * @return {string|undefined}\n */\n get privateUse() {\n return this[propertiesSymbol].privateValue;\n }\n\n\n /**\n * @return {string}\n */\n toString() {\n return \"\" + this.localeString;\n }\n\n /**\n * @return {Monster.I18n.LocaleMap}\n */\n getMap() {\n return clone(this[propertiesSymbol])\n }\n\n\n}\n\n/**\n * @typedef {Object} LocaleMap\n * @property {string} language\n * @property {string} script\n * @property {string} region\n * @property {string} variants\n * @property {string} extlang\n * @property {string} privateUse\n * @memberOf Monster.I18n\n */\n\n/**\n * Parse local according to rfc4646 standard\n *\n * Limitations: The regex cannot handle multiple variants or private.\n *\n * You can call the method via the monster namespace `Monster.I18n.createLocale()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/locale.js';\n * console.log(new Monster.I18n.createLocale())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {createLocale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/locale.js';\n * console.log(createLocale())\n * </script>\n * ```\n *\n * RFC\n *\n * ```\n * The syntax of the language tag in ABNF [RFC4234] is:\n *\n * Language-Tag = langtag\n * / privateuse ; private use tag\n * / grandfathered ; grandfathered registrations\n *\n * langtag = (language\n * [\"-\" script]\n * [\"-\" region]\n * *(\"-\" variant)\n * *(\"-\" extension)\n * [\"-\" privateuse])\n *\n * language = (2*3ALPHA [ extlang ]) ; shortest ISO 639 code\n * / 4ALPHA ; reserved for future use\n * / 5*8ALPHA ; registered language subtag\n *\n * extlang = *3(\"-\" 3ALPHA) ; reserved for future use\n *\n * script = 4ALPHA ; ISO 15924 code\n *\n * region = 2ALPHA ; ISO 3166 code\n * / 3DIGIT ; UN M.49 code\n *\n * variant = 5*8alphanum ; registered variants\n * / (DIGIT 3alphanum)\n *\n * extension = singleton 1*(\"-\" (2*8alphanum))\n *\n * singleton = %x41-57 / %x59-5A / %x61-77 / %x79-7A / DIGIT\n * ; \"a\"-\"w\" / \"y\"-\"z\" / \"A\"-\"W\" / \"Y\"-\"Z\" / \"0\"-\"9\"\n * ; Single letters: x/X is reserved for private use\n *\n * privateuse = (\"x\"/\"X\") 1*(\"-\" (1*8alphanum))\n *\n * grandfathered = 1*3ALPHA 1*2(\"-\" (2*8alphanum))\n * ; grandfathered registration\n * ; Note: i is the only singleton\n * ; that starts a grandfathered tag\n *\n * alphanum = (ALPHA / DIGIT) ; letters and numbers\n *\n * Figure 1: Language Tag ABNF\n * ```\n *\n * @param {string} locale\n * @returns {Locale}\n * @since 1.14.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n\n * @throws {TypeError} value is not a string\n * @throws {Error} unsupported locale\n */\nfunction parseLocale(locale) {\n\n locale = validateString(locale).replace(/_/g, \"-\");\n\n let language, region, variants, parts, script, extlang,\n regexRegular = \"(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)\",\n regexIrregular = \"(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)\",\n regexGrandfathered = \"(\" + regexIrregular + \"|\" + regexRegular + \")\",\n regexPrivateUse = \"(x(-[A-Za-z0-9]{1,8})+)\",\n regexSingleton = \"[0-9A-WY-Za-wy-z]\",\n regexExtension = \"(\" + regexSingleton + \"(-[A-Za-z0-9]{2,8})+)\",\n regexVariant = \"([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3})\",\n regexRegion = \"([A-Za-z]{2}|[0-9]{3})\",\n regexScript = \"([A-Za-z]{4})\",\n regexExtlang = \"([A-Za-z]{3}(-[A-Za-z]{3}){0,2})\",\n regexLanguage = \"(([A-Za-z]{2,3}(-\" + regexExtlang + \")?)|[A-Za-z]{4}|[A-Za-z]{5,8})\",\n regexLangtag = \"(\" + regexLanguage + \"(-\" + regexScript + \")?\" + \"(-\" + regexRegion + \")?\" + \"(-\" + regexVariant + \")*\" + \"(-\" + regexExtension + \")*\" + \"(-\" + regexPrivateUse + \")?\" + \")\",\n regexLanguageTag = \"^(\" + regexGrandfathered + \"|\" + regexLangtag + \"|\" + regexPrivateUse + \")$\",\n regex = new RegExp(regexLanguageTag), match;\n\n\n if ((match = regex.exec(locale)) !== null) {\n if (match.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n }\n\n if (match === undefined || match === null) {\n throw new Error('unsupported locale');\n }\n\n if (match[6] !== undefined) {\n language = match[6];\n\n parts = language.split('-');\n if (parts.length > 1) {\n language = parts[0];\n extlang = parts[1];\n }\n\n }\n\n if (match[14] !== undefined) {\n region = match[14];\n }\n\n if (match[12] !== undefined) {\n script = match[12];\n }\n\n if (match[16] !== undefined) {\n variants = match[16];\n }\n\n return new Locale(language, region, script, variants, extlang);\n\n}\n\n\nassignToNamespace('Monster.I18n', Locale, parseLocale);\nexport {Monster, Locale, parseLocale}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {BaseWithOptions} from \"../types/basewithoptions.js\";\nimport {Locale} from \"./locale.js\"\nimport {Translations} from \"./translations.js\"\n\n/**\n * A provider makes a translation object available.\n *\n * You can call the method via the monster namespace `new Monster.I18n.Provider()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/provider.js';\n * console.log(new Monster.I18n.Provider())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Provider} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/provider.js';\n * console.log(new Provider())\n * </script>\n * ```\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n\n * @see https://datatracker.ietf.org/doc/html/rfc3066\n */\nclass Provider extends BaseWithOptions {\n\n /**\n * @param {Locale|string} locale\n * @return {Promise}\n */\n getTranslations(locale) {\n return new Promise((resolve, reject) => {\n try {\n resolve(new Translations(locale));\n } catch (e) {\n reject(e);\n }\n\n });\n }\n\n}\n\n\nassignToNamespace('Monster.I18n', Provider);\nexport {Monster, Provider}\n","'use strict';\n\nimport {PROPERTY_KEY_INTERNALDATA} from \"../constants.js\";\nimport {extend} from \"../data/extend.js\";\nimport {Pathfinder} from \"../data/pathfinder.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"./base.js\";\nimport {validateObject} from \"./validate.js\";\n\n/**\n * @private\n * @type {symbol}\n */\nconst optionsSymbol = Symbol.for(PROPERTY_KEY_INTERNALDATA);\n\n/**\n * This is the base class with options from which some monster classes are derived.\n *\n * You can call the method via the monster namespace `new Monster.Types.BaseWithOptions()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/basewithoptions.js';\n * console.log(new Monster.Types.BaseWithOptions())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {BaseWithOptions} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/basewithoptions.js';\n * console.log(new BaseWithOptions())\n * </script>\n * ```\n *\n * The class was formerly called Object.\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass BaseWithOptions extends Base {\n\n /**\n *\n * @param {object} options\n */\n constructor(options) {\n super();\n\n if (options === undefined) {\n options = {};\n }\n\n this[optionsSymbol] = extend({}, this.defaults, validateObject(options));\n\n }\n\n /**\n * can be overridden by child class values\n *\n * @return {object}\n */\n get defaults() {\n return {}\n }\n\n /**\n * nested options can be specified by path `a.b.c`\n *\n * @param {string} path\n * @param {*} defaultValue\n * @return {*}\n * @since 1.10.0\n */\n getOption(path, defaultValue) {\n let value;\n\n try {\n value = new Pathfinder(this[optionsSymbol]).getVia(path);\n } catch (e) {\n\n }\n\n if (value === undefined) return defaultValue;\n return value;\n }\n\n\n}\n\nassignToNamespace('Monster.Types', BaseWithOptions);\nexport {Monster, BaseWithOptions}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"../types/base.js\";\nimport {isObject, isString} from \"../types/is.js\";\nimport {validateInstance, validateInteger, validateObject, validateString} from \"../types/validate.js\";\nimport {Locale, parseLocale} from \"./locale.js\";\n\n\n/**\n * With this class you can manage translations and access the keys.\n *\n * You can call the method via the monster namespace `new Monster.I18n.Translations()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/translations.js';\n * console.log(new Monster.I18n.Translations())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Translations} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/translations.js';\n * console.log(new Translations())\n * </script>\n * ```\n *\n * @example\n *\n * const translation = new Translations(parseLocale('en-GB'));\n *\n * translation.assignTranslations({\n * text1: \"abc\",\n * text2: {'other': 'xyz'}\n * });\n *\n * translation.getText('text1);\n * translation.getPluralRuleText('text1',2);\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n\n * @see https://datatracker.ietf.org/doc/html/rfc3066\n */\nclass Translations extends Base {\n\n /**\n *\n * @param {Locale} locale\n */\n constructor(locale) {\n super();\n\n if (isString(locale)) {\n locale = parseLocale(locale);\n }\n\n this.locale = validateInstance(locale, Locale);\n this.storage = new Map();\n\n }\n\n\n /**\n * Fetches a text using the specified key.\n * If no suitable key is found, `defaultText` is taken.\n *\n * @param {string} key\n * @param {string|undefined} defaultText\n * @return {string}\n * @throws {Error} key not found\n */\n getText(key, defaultText) {\n if (!this.storage.has(key)) {\n if (defaultText === undefined) {\n throw new Error('key ' + key + ' not found');\n }\n\n return validateString(defaultText);\n }\n\n let r = this.storage.get(key);\n if (isObject(r)) {\n return this.getPluralRuleText(key, 'other', defaultText);\n }\n\n return this.storage.get(key);\n }\n\n /**\n * A number `count` can be passed to this method. In addition to a number, one of the keywords can also be passed directly.\n * \"zero\", \"one\", \"two\", \"few\", \"many\" and \"other\". Remember: not every language has all rules.\n *\n * The appropriate text for this number is then selected. If no suitable key is found, `defaultText` is taken.\n *\n * @param {string} key\n * @param {integer|count} count\n * @param {string|undefined} defaultText\n * @return {string}\n */\n getPluralRuleText(key, count, defaultText) {\n if (!this.storage.has(key)) {\n return validateString(defaultText);\n }\n\n let r = validateObject(this.storage.get(key));\n\n let keyword;\n if (isString(count)) {\n keyword = count.toLocaleString();\n } else {\n count = validateInteger(count);\n if (count === 0) {\n // special handlig for zero count\n if (r.hasOwnProperty('zero')) {\n return validateString(r['zero']);\n }\n }\n\n keyword = new Intl.PluralRules(this.locale.toString()).select(validateInteger(count));\n }\n\n if (r.hasOwnProperty(keyword)) {\n return validateString(r[keyword]);\n }\n\n if (r.hasOwnProperty(DEFAULT_KEY)) {\n return validateString(r[DEFAULT_KEY]);\n }\n\n return validateString(defaultText);\n }\n\n /**\n * Set a text for a key\n *\n * ```\n * translations.setText(\"text1\": \"Make my day!\");\n * // plural rules\n * translations.setText(\"text6\": {\n * \"zero\": \"There are no files on Disk.\",\n * \"one\": \"There is one file on Disk.\",\n * \"other\": \"There are files on Disk.\"\n * \"default\": \"There are files on Disk.\"\n * });\n * ```\n *\n * @param {string} key\n * @param {string|object} text\n * @return {Translations}\n * @throws {TypeError} value is not a string or object\n */\n setText(key, text) {\n\n if (isString(text) || isObject(text)) {\n this.storage.set(validateString(key), text);\n return this;\n }\n\n throw new TypeError('value is not a string or object');\n\n }\n\n /**\n * This method can be used to transfer overlays from an object. The keys are transferred and the values are entered as text.\n *\n * The values can either be character strings or, in the case of texts with plural forms, objects. The plural forms must be stored as text via a standard key \"zero\", \"one\", \"two\", \"few\", \"many\" and \"other\".\n *\n * Additionally, the key default can be specified, which will be used if no other key fits.\n *\n * In some languages, like for example in german, there is no own more number at the value 0. In these languages the function applies additionally zero.\n *\n * ```\n * translations.assignTranslations({\n * \"text1\": \"Make my day!\",\n * \"text2\": \"I'll be back!\",\n * \"text6\": {\n * \"zero\": \"There are no files on Disk.\",\n * \"one\": \"There is one file on Disk.\",\n * \"other\": \"There are files on Disk.\"\n * \"default\": \"There are files on Disk.\"\n * });\n * ```\n *\n * @param {object} translations\n * @return {Translations}\n */\n assignTranslations(translations) {\n validateObject(translations);\n\n for (const [k, v] of Object.entries(translations)) {\n this.setText(k, v);\n }\n\n return this;\n\n }\n\n}\n\n\nassignToNamespace('Monster.I18n', Translations);\nexport {Monster, Translations}\n","'use strict';\n\nimport {PROPERTY_KEY_INTERNALDATA} from \"../../constants.js\";\nimport {extend} from \"../../data/extend.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../../namespace.js';\nimport {Formatter} from \"../../text/formatter.js\";\nimport {getGlobalFunction} from \"../../types/global.js\";\nimport {isInstance, isString} from \"../../types/is.js\";\nimport {validateObject, validateString} from \"../../types/validate.js\";\nimport {parseLocale} from \"../locale.js\";\nimport {Provider} from \"../provider.js\";\nimport {Translations} from \"../translations.js\";\n\n/**\n * @private\n * @type {symbol}\n */\nconst optionsSymbol = Symbol.for(PROPERTY_KEY_INTERNALDATA);\n\n/**\n * The fetch provider retrieves a JSON file from the given URL and returns a translation object.\n *\n * You can create the object via the monster namespace `new Monster.I18n.Provider.Fetch()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/providers/fetch.js';\n * console.log(new Monster.I18n.Providers.Fetch())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Fetch} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/i18n/providers/fetch.js';\n * console.log(new Fetch())\n * </script>\n * ```\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n.Providers\n * @see https://datatracker.ietf.org/doc/html/rfc3066\n */\nclass Fetch extends Provider {\n\n /**\n * As options the key `fetch` can be passed. This config object is passed to the fetch method as init.\n *\n * @param {string|URL} url\n * @param {Object} options see {@link Monster.I18n.Providers.Fetch#defaults}\n * @see https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n constructor(url, options) {\n super(options);\n\n if (isInstance(url, URL)) {\n url = url.toString();\n }\n\n if (options === undefined) {\n options = {};\n }\n\n validateString(url);\n\n /**\n * @property {string}\n */\n this.url = url;\n\n /**\n * @private\n * @property {Object} options\n */\n this[optionsSymbol] = extend({}, super.defaults, this.defaults, validateObject(options));\n\n }\n\n /**\n * Defaults\n *\n * @property {Object} fetch\n * @property {String} fetch.method=GET\n * @property {String} fetch.mode=cors\n * @property {String} fetch.cache=no-cache\n * @property {String} fetch.credentials=omit\n * @property {String} fetch.redirect=follow\n * @property {String} fetch.referrerPolicy=no-referrer\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\n get defaults() {\n\n return {\n fetch: {\n method: 'GET', // *GET, POST, PUT, DELETE, etc.\n mode: 'cors', // no-cors, *cors, same-origin\n cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\n credentials: 'omit', // include, *same-origin, omit\n redirect: 'follow', // manual, *follow, error\n referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\n }\n }\n\n }\n\n /**\n *\n * @param {Locale|string} locale\n * @return {Promise}\n */\n getTranslations(locale) {\n\n if (isString(locale)) {\n locale = parseLocale(locale);\n }\n\n let formatter = new Formatter(locale.getMap())\n\n return getGlobalFunction('fetch')(formatter.format(this.url), this.getOption('fetch', {}))\n .then((response) => response.json()).then(data => {\n return new Translations(locale).assignTranslations(data);\n });\n\n }\n\n\n}\n\n\nassignToNamespace('Monster.I18n.Providers', Fetch);\nexport {Monster, Fetch}\n","'use strict';\n\nimport {Pipe} from \"../data/pipe.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"../types/base.js\";\nimport {validateObject, validateString} from \"../types/validate.js\";\n\n\n/**\n * Messages can be formatted with the formatter. To do this, an object with the values must be passed to the formatter. The message can then contain placeholders.\n *\n * Look at the example below. The placeholders use the logic of Pipe.\n *\n * You can call the method via the monster namespace `new Monster.Text.Formatter()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/text/formatter.js';\n * console.log(new Monster.Text.Formatter())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Formatter} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/text/formatter.js';\n * console.log(new Formatter())\n * </script>\n * ```\n *\n * @example\n *\n * new Formatter({\n * a: {\n * b: {\n * c: \"Hello\"\n * },\n * d: \"world\",\n * }\n * }).format(\"${a.b.c} ${a.d | ucfirst}!\");\n *\n * // ↦ Hello World!\n *\n * @since 1.12.0\n * @copyright schukai GmbH\n * @memberOf Monster.Text\n */\nclass Formatter extends Base {\n\n /**\n * Default values for the markers are `${` and `}`\n *\n * @param {object} object\n * @throws {TypeError} value is not a object\n */\n constructor(object) {\n super();\n this.object = validateObject(object);\n this.openMarker = '${';\n this.closeMarker = '}';\n }\n\n /**\n * Set new Marker\n *\n * Default values for the markers are `${` and `}`\n *\n * ```\n * formatter.setMarker('#'); // open and close are both #\n * formatter.setMarker('[',']');\n * formatter.setMarker('i18n{','}');\n * ```\n *\n * @param {string} open\n * @param {string} close\n * @return {Formatter}\n * @since 1.12.0\n * @throws {TypeError} value is not a string\n */\n setMarker(open, close) {\n\n if (close === undefined) {\n close = open;\n }\n\n this.openMarker = validateString(open);\n this.closeMarker = validateString(close);\n return this;\n }\n\n /**\n *\n * @param {string} text\n * @return {string}\n * @throws {TypeError} value is not a string\n */\n format(text) {\n return tokenizer.call(this, validateString(text))\n }\n\n}\n\n/**\n * @private\n * @since 1.12.0\n * @param text\n * @return {string}\n */\nfunction tokenizer(text) {\n const self = this;\n\n let formatted = [];\n\n while (true) {\n\n\n let startIndex = text.indexOf(self.openMarker);\n // no marker \n if (startIndex === -1) {\n formatted.push(text);\n break;\n } else if (startIndex > 0) {\n formatted.push(text.substring(0, startIndex))\n text = text.substring(startIndex)\n }\n\n let endIndex = text.substring(self.openMarker.length).indexOf(self.closeMarker) + self.openMarker.length;\n\n if (endIndex === -1) {\n throw new Error(\"syntax error in formatter template\")\n return;\n }\n\n let command = \"path:\" + text.substring(self.openMarker.length, endIndex);\n\n formatted.push(validateString(new Pipe(command).run(self.object)));\n\n text = text.substring(endIndex + self.closeMarker.length);\n\n }\n\n return formatted.join('');\n}\n\nassignToNamespace('Monster.Text', Formatter);\nexport {Monster, Formatter}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateInstance, validateInteger} from \"../types/validate.js\";\nimport {LogEntry} from \"./logentry.js\";\nimport {ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN} from \"./logger.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.Logging.Handler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/logging/handler.js';\n * console.log(new Monster.Logging.Handler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/logging/handler.js';\n * console.log(new Handler())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Logging\n */\nclass Handler extends Base {\n constructor() {\n super();\n\n /**\n * Loglevel\n *\n * @type {integer}\n */\n this.loglevel = OFF;\n }\n\n /**\n * This is the central log function. this method must be\n * overwritten by derived handlers with their own logic.\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {LogEntry} entry\n * @returns {boolean}\n */\n log(entry) {\n validateInstance(entry, LogEntry);\n\n if (this.loglevel < entry.getLogLevel()) {\n return false;\n }\n\n return true;\n }\n\n /**\n * set loglevel\n *\n * @param {integer} loglevel\n * @returns {Handler}\n * @since 1.5.0\n */\n setLogLevel(loglevel) {\n validateInteger(loglevel)\n this.loglevel = loglevel;\n return this;\n }\n\n /**\n * get loglevel\n *\n * @returns {integer}\n * @since 1.5.0\n */\n getLogLevel() {\n return this.loglevel;\n }\n\n /**\n * Set log level to All\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setAll() {\n this.setLogLevel(ALL);\n return this;\n };\n\n /**\n * Set log level to Trace\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setTrace() {\n this.setLogLevel(TRACE);\n return this;\n };\n\n /**\n * Set log level to Debug\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setDebug() {\n this.setLogLevel(DEBUG);\n return this;\n };\n\n /**\n * Set log level to Info\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setInfo() {\n this.setLogLevel(INFO);\n return this;\n };\n\n /**\n * Set log level to Warn\n *\n * @returns {undefined}\n * @since 1.5.0\n */\n setWarn() {\n this.setLogLevel(WARN);\n return this;\n };\n\n /**\n * Set log level to Error\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setError() {\n this.setLogLevel(ERROR);\n return this;\n };\n\n /**\n * Set log level to Fatal\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setFatal() {\n this.setLogLevel(FATAL);\n return this;\n };\n\n\n /**\n * Set log level to Off\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setOff() {\n this.setLogLevel(OFF);\n return this;\n };\n\n\n}\n\n\nassignToNamespace('Monster.Logging', Handler);\nexport {Monster, Handler};\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateInteger} from '../types/validate.js';\n\n\n/**\n * you can call the method via the monster namespace `new Monster.Logging.LogEntry()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/logging/logentry.js';\n * console.log(new Monster.Logging.LogEntry())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/logging/logentry.js';\n * console.log(new LogEntry())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Logging\n */\nclass LogEntry extends Base {\n /**\n *\n * @param {Integer} loglevel\n * @param {...*} args\n */\n constructor(loglevel, ...args) {\n super();\n validateInteger(loglevel);\n\n this.loglevel = loglevel\n this.arguments = args\n }\n\n /**\n *\n * @returns {integerr}\n */\n getLogLevel() {\n return this.loglevel\n }\n\n /**\n *\n * @returns {array}\n */\n getArguments() {\n return this.arguments\n }\n\n}\n\nassignToNamespace('Monster.Logging', LogEntry);\nexport {Monster, LogEntry}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Handler} from '../logging/handler.js';\nimport {LogEntry} from '../logging/logentry.js';\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateInteger, validateObject, validateString} from '../types/validate.js';\n\n\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst ALL = 255;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst TRACE = 64;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst DEBUG = 32;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst INFO = 16;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst WARN = 8;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst ERROR = 4;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst FATAL = 2;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst OFF = 0;\n\n/**\n * You can create an object of the class simply by using the namespace `new Monster.Logging.Logger()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/logging/logger.js';\n * console.log(new Monster.Logging.Logger())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/logging/logger.js';\n * console.log(new Logger())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Logging\n */\nclass Logger extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n this.handler = new Set;\n }\n\n /**\n *\n * @param {Handler} handler\n * @returns {Logger}\n * @throws {Error} the handler must be an instance of Handler\n */\n addHandler(handler) {\n validateObject(handler)\n if (!(handler instanceof Handler)) {\n throw new Error(\"the handler must be an instance of Handler\")\n }\n\n this.handler.add(handler)\n return this;\n }\n\n /**\n *\n * @param {Handler} handler\n * @returns {Logger}\n * @throws {Error} the handler must be an instance of Handler\n */\n removeHandler(handler) {\n validateObject(handler)\n if (!(handler instanceof Handler)) {\n throw new Error(\"the handler must be an instance of Handler\")\n }\n\n this.handler.delete(handler);\n return this;\n }\n\n /**\n * log Trace message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logTrace() {\n triggerLog.apply(this, [TRACE, ...arguments]);\n return this;\n };\n\n /**\n * log Debug message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logDebug() {\n triggerLog.apply(this, [DEBUG, ...arguments]);\n return this;\n };\n\n /**\n * log Info message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logInfo() {\n triggerLog.apply(this, [INFO, ...arguments]);\n return this;\n };\n\n /**\n * log Warn message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logWarn() {\n triggerLog.apply(this, [WARN, ...arguments]);\n return this;\n };\n\n /**\n * log Error message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logError() {\n triggerLog.apply(this, [ERROR, ...arguments]);\n return this;\n };\n\n /**\n * log Fatal message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logFatal() {\n triggerLog.apply(this, [FATAL, ...arguments]);\n return this;\n };\n\n\n /**\n * Labels\n *\n * @param {integer} level\n * @returns {string}\n */\n getLabel(level) {\n validateInteger(level);\n\n if (level === ALL) return 'ALL';\n if (level === TRACE) return 'TRACE';\n if (level === DEBUG) return 'DEBUG';\n if (level === INFO) return 'INFO';\n if (level === WARN) return 'WARN';\n if (level === ERROR) return 'ERROR';\n if (level === FATAL) return 'FATAL';\n if (level === OFF) return 'OFF';\n\n return 'unknown';\n };\n\n /**\n * Level\n *\n * @param {string} label\n * @returns {integer}\n */\n getLevel(label) {\n validateString(label);\n\n if (label === 'ALL') return ALL;\n if (label === 'TRACE') return TRACE;\n if (label === 'DEBUG') return DEBUG;\n if (label === 'INFO') return INFO;\n if (label === 'WARN') return WARN;\n if (label === 'ERROR') return ERROR;\n if (label === 'FATAL') return FATAL;\n if (label === 'OFF') return OFF;\n\n return 0;\n };\n\n\n}\n\nassignToNamespace('Monster.Logging', Logger);\nexport {Monster, Logger, ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF};\n\n\n/**\n * Log triggern\n *\n * @param {integer} loglevel\n * @param {*} args\n * @returns {Logger}\n * @private\n */\nfunction triggerLog(loglevel, ...args) {\n var logger = this;\n\n for (let handler of logger.handler) {\n handler.log(new LogEntry(loglevel, args))\n }\n\n return logger;\n\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../../namespace.js';\nimport {Base} from '../../types/base.js';\nimport {getGlobalObject} from \"../../types/global.js\";\nimport {Handler} from '../handler.js';\nimport {LogEntry} from \"../logentry.js\";\n\n/**\n * You can create an object of the class simply by using the namespace `new Monster.Logging.Handler.ConsoleHandler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/logging/handler/console.js';\n * console.log(new Monster.Logging.Handler.ConsoleHandler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {ConsoleHandler} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/logging/handler/console.js';\n * console.log(new ConsoleHandler())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Logging.Handler\n */\nclass ConsoleHandler extends Handler {\n constructor() {\n super();\n }\n\n\n /**\n * This is the central log function. this method must be\n * overwritten by derived handlers with their own logic.\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {LogEntry} entry\n * @returns {boolean}\n */\n log(entry) {\n if (super.log(entry)) {\n let console = getGlobalObject('console');\n if (!console) return false;\n console.log(entry.toString());\n return true;\n }\n\n return false;\n }\n\n}\n\n\nassignToNamespace('Monster.Logging.Handler', ConsoleHandler);\nexport {Monster, ConsoleHandler};\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobal} from '../types/global.js';\n\n\n/**\n * this function uses crypt and returns a random number.\n *\n * you can call the method via the monster namespace `Monster.Math.random()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/math/random.js';\n * console.log(Monster.Math.random(1,10)) // ↦ 5\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {random} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/math/random.js';\n * console.log(random(1,10)) // ↦ 5\n * </script>\n * ```\n *\n * @param {number} min starting value of the definition set (default is 0)\n * @param {number} max end value of the definition set (default is 1000000000)\n * @returns {number}\n * @memberOf Monster.Math\n * @throws {Error} missing crypt\n * @throws {Error} we cannot generate numbers larger than 53 bits.\n * @throws {Error} the distance is too small to create a random number.\n\n * @since 1.0.0\n * @copyright schukai GmbH\n */\nfunction random(min, max) {\n\n if (min === undefined) {\n min = 0;\n }\n if (max === undefined) {\n max = MAX;\n }\n\n if (max < min) {\n throw new Error(\"max must be greater than min\");\n }\n\n return Math.round(create(min, max));\n\n}\n\n/**\n * @private\n * @type {number}\n */\nvar MAX = 1000000000;\n\n\nMath.log2 = Math.log2 || function (n) {\n return Math.log(n) / Math.log(2);\n};\n\n/**\n *\n * @param {number} min\n * @param {number} max\n * @returns {number}\n * @private\n * @throws {Error} missing crypt\n * @throws {Error} we cannot generate numbers larger than 53 bits.\n * @throws {Error} the distance is too small to create a random number.\n */\nfunction create(min, max) {\n let crypt;\n let globalReference = getGlobal();\n\n crypt = globalReference?.['crypto'] || globalReference?.['msCrypto'] || globalReference?.['crypto'] || undefined;\n\n if (typeof crypt === \"undefined\") {\n throw new Error(\"missing crypt\")\n }\n\n let rval = 0;\n const range = max - min;\n if (range < 2) {\n throw new Error('the distance is too small to create a random number.')\n }\n\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error(\"we cannot generate numbers larger than 53 bits.\");\n }\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n\n const byteArray = new Uint8Array(bytesNeeded);\n crypt.getRandomValues(byteArray);\n\n let p = (bytesNeeded - 1) * 8;\n for (var i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n rval = rval & mask;\n\n if (rval >= range) {\n return create(min, max);\n }\n\n return min + rval;\n\n}\n\nassignToNamespace('Monster.Math', random);\nexport {Monster, random}\n\n\n\n\n","'use strict';\n\nimport {random} from \"../math/random.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobal} from \"./global.js\";\nimport {ID} from \"./id.js\";\n\n/**\n * @private\n * @type {number}\n */\nlet internalCounter = 0;\n\n/**\n * You can call the method via the monster namespace `new Monster.Types.RandomID()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/randomid.js';\n * console.log(new Monster.Types.RandomID())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {RandomID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/randomid.js';\n * console.log(new RandomID())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass RandomID extends ID {\n\n /**\n * create new object\n */\n constructor() {\n super();\n\n internalCounter += 1;\n\n this.id = getGlobal().btoa(random(1, 10000))\n .replace(/=/g, '')\n /** No numbers at the beginning of the ID, because of possible problems with DOM */\n .replace(/^[0-9]+/, 'X') + internalCounter;\n }\n\n}\n\nassignToNamespace('Monster.Types', RandomID);\nexport {Monster, RandomID}\n","'use strict';\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\n\n/**\n * The version object contains a sematic version number\n *\n * You can create the object via the monster namespace `new Monster.Types.Version()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/version.js';\n * console.log(new Monster.Types.Version('1.2.3')) // ↦ 1.2.3\n * console.log(new Monster.Types.Version('1')) // ↦ 1.0.0\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/version.js';\n * console.log(new Version('1.2.3')) // ↦ 1.2.3\n * console.log(new Version('1')) // ↦ 1.0.0\n * </script>\n * ```\n *\n * @example\n *\n * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/version.js';\n *\n * new Version('1.0.0') // ↦ 1.0.0\n * new Version(1) // ↦ 1.0.0\n * new Version(1, 0, 0) // ↦ 1.0.0\n * new Version('1.2.3', 4, 5) // ↦ 1.4.5\n *\n * @since 1.0.0\n * @author schukai GmbH\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Version extends Base {\n\n /**\n *\n * @param major\n * @param minor\n * @param patch\n * @throws {Error} major is not a number\n * @throws {Error} minor is not a number\n * @throws {Error} patch is not a number\n */\n constructor(major, minor, patch) {\n super();\n\n if (typeof major === 'string' && minor === undefined && patch === undefined) {\n\n let parts = major.toString().split('.');\n major = parseInt(parts[0] || 0);\n minor = parseInt(parts[1] || 0);\n patch = parseInt(parts[2] || 0);\n }\n\n if (major === undefined) {\n throw new Error(\"major version is undefined\");\n }\n\n if (minor === undefined) {\n minor = 0;\n }\n\n if (patch === undefined) {\n patch = 0;\n }\n\n this.major = parseInt(major);\n this.minor = parseInt(minor);\n this.patch = parseInt(patch);\n\n if (isNaN(this.major)) {\n throw new Error(\"major is not a number\");\n }\n\n if (isNaN(this.minor)) {\n throw new Error(\"minor is not a number\");\n }\n\n if (isNaN(this.patch)) {\n throw new Error(\"patch is not a number\");\n }\n\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.major + '.' + this.minor + '.' + this.patch;\n }\n\n /**\n * returns 0 if equal, -1 if the object version is less and 1 if greater\n * then the compared version\n *\n * @param {string|Version} version Version to compare\n * @returns {number}\n */\n compareTo(version) {\n\n if (version instanceof Version) {\n version = version.toString();\n }\n\n if (typeof version !== 'string') {\n throw new Error(\"type exception\");\n }\n\n if (version === this.toString()) {\n return 0;\n }\n\n let a = [this.major, this.minor, this.patch];\n let b = version.split('.');\n let len = Math.max(a.length, b.length);\n\n for (let i = 0; i < len; i += 1) {\n if ((a[i] && !b[i] && parseInt(a[i]) > 0) || (parseInt(a[i]) > parseInt(b[i]))) {\n return 1;\n } else if ((b[i] && !a[i] && parseInt(b[i]) > 0) || (parseInt(a[i]) < parseInt(b[i]))) {\n return -1;\n }\n }\n\n return 0;\n };\n\n}\n\nassignToNamespace('Monster.Types', Version);\n\n\nlet monsterVersion;\n\n/**\n * Version of monster\n *\n * You can call the method via the monster namespace `Monster.getVersion()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/version.js';\n * console.log(Monster.getVersion())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getVersion} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/types/version.js';\n * console.log(getVersion())\n * </script>\n * ```\n *\n * @returns {Monster.Types.Version}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @author schukai GmbH\n * @memberOf Monster\n */\nfunction getVersion() {\n if (monsterVersion instanceof Version) {\n return monsterVersion;\n }\n /**#@+ dont touch, replaced by make with package.json version */\n monsterVersion = new Version('1.17.0')\n /**#@-*/\n\n return monsterVersion;\n\n}\n\nassignToNamespace('Monster', getVersion);\nexport {Monster, Version, getVersion}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {isFunction} from '../types/is.js';\n\n/**\n * The comparator allows a comparison function to be abstracted.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/util/comparator.js';\n * console.log(new Monster.Util.Comparator())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/util/comparator.js';\n * console.log(new Comparator())\n * </script>\n * ```\n *\n * The following are some examples of the application of the class.\n *\n * ```\n * new Comparator().lessThanOrEqual(2, 5) // ↦ true\n * new Comparator().greaterThan(4, 2) // ↦ true\n * new Comparator().equal(4, 4) // ↦ true\n * new Comparator().equal(4, 5) // ↦ false\n * ```\n *\n * You can also pass your own comparison function, and thus define the comparison function.\n *\n * ```\n * new Comparator(function (a, b) {\n * if (a.v === b.v) return 0;\n * return a.v < b.v ? -1 : 1;\n * }).equal({v: 2}, {v: 2}); // ↦ true\n * ```\n *\n * @example\n *\n * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/util/comparator.js';\n *\n * console.log(new Comparator().lessThanOrEqual(2, 5))\n * // ↦ true\n * console.log(new Comparator().greaterThan(4, 2))\n * // ↦ true\n * console.log(new Comparator().equal(4, 4))\n * // ↦ true\n * console.log(new Comparator().equal(4, 5))\n * // ↦ false\n *\n * @since 1.3.0\n * @memberOf Monster.Util\n */\nclass Comparator extends Base {\n\n /**\n * create new comparator\n *\n * @param {Monster.Util~exampleCallback} [callback] Comparator callback\n * @throw {TypeError} unsupported type\n * @throw {TypeError} impractical comparison\n */\n constructor(callback) {\n super();\n\n if (isFunction(callback)) {\n this.compare = callback\n } else if (callback !== undefined) {\n throw new TypeError(\"unsupported type\")\n } else {\n // default compare function\n\n /**\n *\n * @param {*} a\n * @param {*} b\n * @return {integer} -1, 0 or 1\n */\n this.compare = function (a, b) {\n\n if (typeof a !== typeof b) {\n throw new TypeError(\"impractical comparison\")\n }\n\n if (a === b) {\n return 0;\n }\n return a < b ? -1 : 1;\n };\n }\n\n }\n\n /**\n * changes the order of the operators\n *\n * @return {Comparator}\n */\n reverse() {\n const original = this.compare;\n this.compare = (a, b) => original(b, a);\n return this;\n }\n\n /**\n * Checks if two variables are equal.\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n equal(a, b) {\n return this.compare(a, b) === 0;\n }\n\n\n /**\n * Checks if variable `a` is greater than `b`\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n greaterThan(a, b) {\n return this.compare(a, b) > 0;\n }\n\n /**\n * Checks if variable `a` is greater than or equal to `b`\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n greaterThanOrEqual(a, b) {\n return this.greaterThan(a, b) || this.equal(a, b);\n }\n\n /**\n * Checks if variable `a` is less than or equal to `b`\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n lessThanOrEqual(a, b) {\n return this.lessThan(a, b) || this.equal(a, b);\n }\n\n /**\n * Checks if variable a is less than b\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n lessThan(a, b) {\n return this.compare(a, b) < 0;\n }\n\n\n}\n\n\n/**\n * This is the description for the callback function used by the operator\n *\n * ```\n * new Comparator(function (a, b) {\n * if (a.v === b.v) return 0;\n * return a.v < b.v ? -1 : 1;\n * }).equal({v: 2}, {v: 2}); // ↦ true\n * ```\n *\n * @callback Monster.Util~exampleCallback\n * @param {*} a\n * @param {*} b\n * @return {integer} -1, 0 or 1\n * @memberOf Monster.Util\n * @see Monster.Util.Comparator\n */\n\n\n/**\n *\n */\nassignToNamespace('Monster.Util', Comparator);\nexport {Monster, Comparator}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {validateObject} from '../types/validate.js';\n\n/**\n * Deep freeze a object\n *\n * You can call the method via the monster namespace `Monster.Util.deepFreeze()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/util/freeze.js';\n * console.log(Monster.Util.deepFreeze({}))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {deepFreeze} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.0/dist/modules/util/freeze.js';\n * console.log(deepFreeze({}))\n * </script>\n * ```\n *\n * @param {object} object object to be freeze\n * @since 1.0.0\n * @returns {object}\n * @memberOf Monster.Util\n * @copyright schukai GmbH\n * @throws {TypeError} value is not a object\n */\nfunction deepFreeze(object) {\n\n validateObject(object)\n\n // Retrieve the defined property names of the object\n var propNames = Object.getOwnPropertyNames(object);\n\n // Freeze properties before freezing yourself\n for (let name of propNames) {\n let value = object[name];\n\n object[name] = value && typeof value === \"object\" ?\n deepFreeze(value) : value;\n }\n\n return Object.freeze(object);\n}\n\nassignToNamespace('Monster.Util', deepFreeze);\nexport {Monster, deepFreeze}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2021 schukai GmbH\n * SPDX-License-Identifier: AGPL-3.0-only or COMMERCIAL\n * @author schukai GmbH\n */\n\n'use strict';\n\nimport './constants.js';\nimport './constraints/abstract.js';\nimport './constraints/abstractoperator.js';\nimport './constraints/andoperator.js';\nimport './constraints/invalid.js';\nimport './constraints/isarray.js';\n\n// find packages/monster/source/ -type f -name \"*.js\" -not -name \"*namespace*\" -not -iname \"monster.js\"\nimport './constraints/isobject.js';\nimport './constraints/oroperator.js';\nimport './constraints/valid.js';\nimport './data/buildmap.js';\nimport './data/diff.js';\nimport './data/extend.js';\nimport './data/pathfinder.js';\nimport './data/pipe.js';\nimport './data/transformer.js';\nimport './dom/assembler.js';\nimport './dom/attributes.js';\nimport './dom/constants.js';\nimport './dom/customcontrol.js';\nimport './dom/customelement.js';\nimport './dom/events.js';\nimport './dom/locale.js';\nimport './dom/template.js';\nimport './dom/theme.js';\nimport './dom/updater.js';\nimport './dom/util.js';\nimport './i18n/locale.js';\nimport './i18n/provider.js';\nimport './i18n/providers/fetch.js';\nimport './i18n/translations.js';\nimport './logging/handler.js';\nimport './logging/handler/console.js';\nimport './logging/logentry.js';\nimport './logging/logger.js';\nimport './math/random.js';\nimport {Monster} from './namespace.js';\nimport './text/formatter.js';\nimport './types/base.js';\nimport './types/basewithoptions.js';\nimport './types/global.js';\nimport './types/id.js';\nimport './types/is.js';\nimport './types/observer.js';\nimport './types/observerlist.js';\nimport './types/proxyobserver.js';\nimport './types/queue.js';\nimport './types/randomid.js';\nimport './types/stack.js';\nimport './types/tokenlist.js';\nimport './types/typeof.js';\nimport './types/uniquequeue.js';\nimport './types/validate.js';\nimport './types/version.js';\nimport './util/clone.js';\nimport './util/comparator.js';\nimport './util/freeze.js';\n\n\nlet rootName\ntry {\n rootName = Monster.Types.getGlobalObject('__MonsterRootName__');\n} catch (e) {\n\n}\n\nif (!rootName) rootName = \"Monster\";\n\nMonster.Types.getGlobal()[rootName] = Monster\nexport {Monster};"],"names":["Monster","PROPERTY_KEY_INTERNALDATA","Namespace","namespace","undefined","Error","getNamespace","assignToNamespace","ns","current","namespaceFor","split","i","l","objectName","fn","hasOwnProperty","name","toString","s","f","match","Array","isArray","c","e","parts","space","length","Base","AbstractConstraint","value","Promise","reject","JSON","stringify","Object","AbstractOperator","operantA","operantB","TypeError","AndOperator","all","isValid","Invalid","IsArray","resolve","isIterable","Symbol","iterator","isPrimitive","type","NaN","isSymbol","isBoolean","isString","isObject","isInstance","instance","isFunction","isInteger","Number","IsObject","OrOperator","self","a","b","then","catch","Valid","validateString","clone","DELIMITER","Pathfinder","WILDCARD","buildMap","subject","selector","valueTemplate","keyTemplate","filter","result","Map","map","buildFlatMap","call","forEach","v","k","m","build","set","key","parentMap","currentMap","resultLength","size","currentPath","shift","push","finder","getVia","join","o","copyKey","kk","sub","definition","defaultValue","regexp","array","matchAll","groups","placeholder","path","replaceAll","validateIterable","validatePrimitive","validateBoolean","validateObject","validateInstance","n","validateArray","validateSymbol","validateFunction","validateInteger","getGlobal","obj","copy","len","Date","setTime","getTime","Element","HTMLDocument","DocumentFragment","globalContext","window","document","navigator","Proxy","cloneObject","getClone","constructor","Types","globalReference","globalThis","defineProperty","prototype","get","configurable","__monster__","Function","getGlobalObject","getGlobalFunction","Stack","object","wildCard","wildcard","getValueViaPath","setValueViaPath","deleteValueViaPath","iterate","check","entries","anchor","WeakMap","Set","WeakSet","parseInt","WeakRef","last","pop","subpath","stack","isEmpty","peek","append","assignProperty","delete","data","Diff","first","second","doDiff","getKeys","keys","fill","_","concat","diff","typeA","typeB","currPath","currDiff","buildResult","getOperator","operator","getPrototypeOf","isNotEqual","typeOf","extend","arguments","results","exec","toLowerCase","Transformer","Pipe","pipe","callback","context","t","setCallback","reduce","accumulator","transformer","currentIndex","run","ID","args","disassemble","command","callbacks","transform","apply","regex","g","p","r","replace","trim","convertToString","toUpperCase","parse","encodeURIComponent","callbackName","has","unshift","doc","DOMParser","parseFromString","body","textContent","trueStatement","falseStatement","condition","firstchar","charAt","substr","btoa","prefix","suffix","start","end","substring","internalCounter","count","id","ProxyObserver","ATTRIBUTEPREFIX","Assembler","fragment","attributePrefix","cloneNode","Observer","ObserverList","realSubject","getHandler","objectMap","proxyMap","observers","observer","attach","detach","notify","contains","proxy","handler","target","receiver","Reflect","descriptor","getOwnPropertyDescriptor","writable","enumerable","deleteProperty","setPrototypeOf","object1","TokenList","UniqueQueue","tags","queue","tag","add","remove","setTimeout","poll","init","tokens","index","next","done","counter","token","clear","newToken","from","indexOf","splice","toggleValue","Queue","unique","pomises","update","ATTRIBUTE_OBJECTLINK","findClosestObjectLink","element","findClosestByAttribute","addToObjectLink","symbol","HTMLElement","addAttributeToken","removeObjectLink","removeAttributeToken","hasObjectLink","containsAttributeToken","getLinkedObjects","toggleAttributeToken","hasAttribute","setAttribute","getAttribute","toggle","replaceAttributeToken","to","clearAttributeTokens","closest","ATTRIBUTE_PREFIX","ATTRIBUTE_OPTIONS","DEFAULT_THEME","ATTRIBUTE_THEME_PREFIX","ATTRIBUTE_THEME_NAME","ATTRIBUTE_UPDATER_ATTRIBUTES","ATTRIBUTE_UPDATER_REPLACE","ATTRIBUTE_UPDATER_INSERT","ATTRIBUTE_UPDATER_INSERT_REFERENCE","ATTRIBUTE_UPDATER_REMOVE","ATTRIBUTE_UPDATER_BIND","ATTRIBUTE_ROLE","OBJECTLINK_KEY_UPDATER","CustomElement","internalSymbol","CustomControl","attachInternals","getInternal","labels","getTag","validity","validationMessage","willValidate","states","form","state","setFormValue","flags","message","setValidity","checkValidity","reportValidity","findDocumentTemplate","Template","Updater","internalDataSymbol","for","objectLinkSymbol","initMethodSymbol","assembleMethodSymbol","defaults","getOptionsFromAttributes","initOptionObserver","shadowMode","delegatesFocus","templates","main","attachObserver","detachObserver","containsObserver","getRealSubject","getSubject","setVia","options","parseOptionsJSON","elements","getOption","initShadowRoot","shadowRoot","childNodes","initCSSStylesheet","NodeList","initHtmlContent","updater","HTMLTemplateElement","u","enableEventProcessing","attrName","oldVal","newVal","setOptions","updaters","list","d","assign","template","appendChild","createDocumentFragment","html","innerHTML","ShadowRoot","styleSheet","getCSSStyleSheet","CSSStyleSheet","adoptedStyleSheets","style","createElement","innerText","attachShadow","mode","registerCustomElement","define","getDocumentTheme","content","currentNode","Document","Node","getRootNode","ownerDocument","theme","themedID","getName","getElementById","Theme","querySelector","getDocument","getCheckStateCallback","change","removeElement","insertElement","updateContent","updateAttributes","eventTypes","types","disableEventProcessing","addEventListener","getControlEventHandler","removeEventListener","notifyObservers","HTMLInputElement","HTMLOptionElement","pathfinder","event","checked","HTMLTextAreaElement","HTMLSelectElement","selectedOptions","querySelectorAll","pf","parentNode","removeChild","mem","wd","found","containerElement","attributes","def","refPrefix","cmd","dataPath","insertPoint","hasChildNodes","lastChild","available","ref","refElement","appendNewDocumentFragment","nodes","node","container","applyRecursive","child","runUpdateContent","firstChild","addNode","runUpdateAttributes","removeAttribute","handleInputControlAttributeUpdate","opt","selected","selectedIndex","getWindow","getDocumentFragmentFromString","fireEvent","click","Event","bubbles","cancelable","dispatchEvent","HTMLCollection","findTargetElementFromEvent","attributeName","attributeValue","composedPath","parseLocale","DEFAULT_LANGUAGE","getLocaleOfDocument","locale","propertiesSymbol","localeStringSymbol","Locale","language","region","script","variants","extlang","privateUse","privateValue","localeString","regexRegular","regexIrregular","regexGrandfathered","regexPrivateUse","regexSingleton","regexExtension","regexVariant","regexRegion","regexScript","regexExtlang","regexLanguage","regexLangtag","regexLanguageTag","RegExp","lastIndex","BaseWithOptions","Translations","Provider","optionsSymbol","storage","defaultText","getPluralRuleText","keyword","toLocaleString","Intl","PluralRules","select","DEFAULT_KEY","text","translations","setText","Formatter","Fetch","url","URL","fetch","method","cache","credentials","redirect","referrerPolicy","formatter","getMap","format","response","json","assignTranslations","openMarker","closeMarker","open","close","tokenizer","formatted","startIndex","endIndex","LogEntry","ALL","DEBUG","ERROR","FATAL","INFO","OFF","TRACE","WARN","Handler","loglevel","entry","getLogLevel","setLogLevel","Logger","triggerLog","level","label","logger","log","ConsoleHandler","console","random","min","max","MAX","Math","round","create","log2","crypt","rval","range","bitsNeeded","ceil","bytesNeeded","mask","pow","byteArray","Uint8Array","getRandomValues","RandomID","Version","major","minor","patch","isNaN","version","monsterVersion","getVersion","Comparator","compare","original","greaterThan","equal","lessThan","deepFreeze","propNames","getOwnPropertyNames","freeze","rootName"],"sourceRoot":""}
1
+ {"version":3,"file":"monster.dev.js","mappings":"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B;;;;;;;;;;;;;;;ACxDa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC;;;;;;;;;;;;;;AAEF;AACJ;AACA;AACA;AACA;AACA;AACI,qBAAQd,KAAR,EAAe;AACX,UAAIR,qDAAO,CAACQ,KAAD,CAAX,EAAoB;AAChB,eAAOC,OAAO,CAACc,OAAR,CAAgBf,KAAhB,CAAP;AACH;;AAED,aAAOC,OAAO,CAACC,MAAR,CAAeF,KAAf,CAAP;AACH;;;;EAdiBD;;AAkBtBvB,gEAAiB,CAAC,qBAAD,EAAwBsC,OAAxB,CAAjB;;;;;;;;;;;;;;;;;;;;;;AChEa;AAEb;AACA;AACA;;;;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASE,UAAT,CAAoBhB,KAApB,EAA2B;AACvB,MAAIA,KAAK,KAAK3B,SAAd,EAAyB,OAAO,KAAP;AACzB,MAAI2B,KAAK,KAAK,IAAd,EAAoB,OAAO,KAAP;AACpB,SAAO,QAAOA,KAAP,aAAOA,KAAP,uBAAOA,KAAK,CAAGiB,MAAM,CAACC,QAAV,CAAZ,MAAoC,UAA3C;AACH;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,WAAT,CAAqBnB,KAArB,EAA4B;AACxB,MAAIoB,IAAJ;;AAEA,MAAIpB,KAAK,KAAK3B,SAAV,IAAuB2B,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAKqB,GAAvD,EAA4D;AACxD,WAAO,IAAP;AACH;;AAEDD,EAAAA,IAAI,WAAUpB,KAAV,CAAJ;;AAEA,MAAIoB,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAA9B,IAA0CA,IAAI,KAAK,SAAnD,IAAgEA,IAAI,KAAK,QAA7E,EAAuF;AACnF,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,QAAT,CAAkBtB,KAAlB,EAAyB;AACrB,SAAQ,qBAAoBA,KAApB,CAAD,GAA8B,IAA9B,GAAqC,KAA5C;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuB,SAAT,CAAmBvB,KAAnB,EAA0B;AAEtB,MAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,KAAhC,EAAuC;AACnC,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwB,QAAT,CAAkBxB,KAAlB,EAAyB;AACrB,MAAIA,KAAK,KAAK3B,SAAV,IAAuB,OAAO2B,KAAP,KAAiB,QAA5C,EAAsD;AAClD,WAAO,KAAP;AACH;;AACD,SAAO,IAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASyB,QAAT,CAAkBzB,KAAlB,EAAyB;AAErB,MAAIR,OAAO,CAACQ,KAAD,CAAX,EAAoB,OAAO,KAAP;AACpB,MAAImB,WAAW,CAACnB,KAAD,CAAf,EAAwB,OAAO,KAAP;;AAExB,MAAI,QAAOA,KAAP,MAAiB,QAArB,EAA+B;AAC3B,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0B,UAAT,CAAoB1B,KAApB,EAA2B2B,QAA3B,EAAqC;AAEjC,MAAI,CAACF,QAAQ,CAACzB,KAAD,CAAb,EAAsB,OAAO,KAAP;AACtB,MAAI,CAAC4B,UAAU,CAACD,QAAD,CAAf,EAA2B,OAAO,KAAP;AAC3B,MAAI,CAACA,QAAQ,CAAC1C,cAAT,CAAwB,WAAxB,CAAL,EAA2C,OAAO,KAAP;AAC3C,SAAQe,KAAK,YAAY2B,QAAlB,GAA8B,IAA9B,GAAqC,KAA5C;AAEH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASnC,OAAT,CAAiBQ,KAAjB,EAAwB;AACpB,MAAIT,KAAK,CAACC,OAAN,CAAcQ,KAAd,CAAJ,EAA0B;AACtB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4B,UAAT,CAAoB5B,KAApB,EAA2B;AACvB,MAAIR,OAAO,CAACQ,KAAD,CAAX,EAAoB,OAAO,KAAP;AACp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,CAAP;AACH;;;;EAVeD;;AAcpBvB,gEAAiB,CAAC,qBAAD,EAAwB8D,KAAxB,CAAjB;;;;;;;;;;;;;;;;;ACxDa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASM,QAAT,CAAkBC,OAAlB,EAA2BC,QAA3B,EAAqCC,aAArC,EAAoDC,WAApD,EAAiEC,MAAjE,EAAyE;AAErE,MAAMC,MAAM,GAAG,IAAIC,GAAJ,EAAf;AAEA,MAAIC,GAAJ;;AACA,MAAIxB,wDAAU,CAACkB,QAAD,CAAd,EAA0B;AACtBM,IAAAA,GAAG,GAAGN,QAAQ,CAACD,OAAD,CAAd;;AACA,QAAI,EAAEO,GAAG,YAAYD,GAAjB,CAAJ,EAA2B;AACvB,YAAM,IAAI1C,SAAJ,CAAc,yCAAd,CAAN;AACH;AACJ,GALD,MAKO,IAAIe,sDAAQ,CAACsB,QAAD,CAAZ,EAAwB;AAC3BM,IAAAA,GAAG,GAAG,IAAID,GAAJ,EAAN;AACAE,IAAAA,YAAY,CAACC,IAAb,CAAkBF,GAAlB,EAAuBP,OAAvB,EAAgCC,QAAhC;AACH,GAHM,MAGA;AACH,UAAM,I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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASc,KAAT,CAAed,OAAf,EAAwB+B,UAAxB,EAAoCC,YAApC,EAAkD;AAC9C,MAAID,UAAU,KAAKvG,SAAnB,EAA8B,OAAOwG,YAAY,GAAGA,YAAH,GAAkBhC,OAArC;AAC9BN,EAAAA,kEAAc,CAACqC,UAAD,CAAd;;AAEA,MAAME,MAAM,4BAAG,mCAAH;AAAA;AAAA;AAAA,IAAZ;;AACA,MAAMC,KAAK,sBAAOH,UAAU,CAACI,QAAX,CAAoBF,MAApB,CAAP,CAAX;;AAEA,MAAIT,MAAM,GAAG,IAAI3B,sDAAJ,CAAeG,OAAf,CAAb;;AAEA,MAAIkC,KAAK,CAAClF,MAAN,KAAiB,CAArB,EAAwB;AACpB,WAAOwE,MAAM,CAACC,MAAP,CAAcM,UAAd,CAAP;AACH;;AAEDG,EAAAA,KAAK,CAACxB,OAAN,CAAc,UAACrB,CAAD,EAAO;AACjB,QAAI+C,MAAM,GAAG/C,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAG,QAAH,CAAd;AACA,QAAIgD,WAAW,GAAGD,MAAH,aAAGA,MAAH,uBAAGA,MAAM,CAAG,aAAH,CAAxB;AACA,QAAIC,WAAW,KAAK7G,SAApB,EAA+B;AAE/B,QAAI8G,IAAI,GAAGF,MAAH,aAAGA,MAAH,uBAAGA,MAAM,CAAG,MAAH,CAAjB;AAEA,QAAIzB,CAAC,GAAGa,MAAM,CAACC,MAAP,CAAca,IAAd,CAAR;AACA,QAAI3B,CAAC,KAAKnF,SAAV,EAAqBmF,CAAC,GAAGqB,YAAJ;AAErBD,IAAAA,UAAU,GAAGA,UAAU,CAACQ,UAAX,CAAsBF,WAAtB,EAAmC1B,CAAnC,CAAb;AAGH,GAbD;AAeA,SAAOoB,UAAP;AAEH;;AAGDpG,gEAAiB,CAAC,cAAD,EAAiBoE,QAAjB,CAAjB;;;;;;;;;;;;;;;;;;;;;;;ACzZa;AAEb;AACA;AACA;;AAEA;AACA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASyC,gBAAT,CAA0BrF,KAA1B,EAAiC;AAC7B,MAAI,CAACgB,kDAAU,CAAChB,KAAD,CAAf,EAAwB;AACpB,UAAM,IAAIS,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASsF,iBAAT,CAA2BtF,KAA3B,EAAkC;AAC9B,MAAI,CAACmB,mDAAW,CAACnB,KAAD,CAAhB,EAAyB;AACrB,UAAM,IAAIS,SAAJ,CAAc,0BAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuF,eAAT,CAAyBvF,KAAzB,EAAgC;AAC5B,MAAI,CAACuB,iDAAS,CAACvB,KAAD,CAAd,EAAuB;AACnB,UAAM,IAAIS,SAAJ,CAAc,wBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuC,cAAT,CAAwBvC,KAAxB,EAA+B;AAC3B,MAAI,CAACwB,gDAAQ,CAACxB,KAAD,CAAb,EAAsB;AAClB,UAAM,IAAIS,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwF,cAAT,CAAwBxF,KAAxB,EAA+B;AAC3B,MAAI,CAACyB,gDAAQ,CAACzB,KAAD,CAAb,EAAsB;AAClB,UAAM,IAAIS,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASyF,gBAAT,CAA0BzF,KAA1B,EAAiC2B,QAAjC,EAA2C;AACvC,MAAI,CAACD,kDAAU,CAAC1B,KAAD,EAAQ2B,QAAR,CAAf,EAAkC;AAC9B,QAAI+D,CAAC,GAAG,EAAR;;AACA,QAAIjE,gDAAQ,CAACE,QAAD,CAAR,IAAsBC,kDAAU,CAACD,QAAD,CAApC,EAAgD;AAC5C+D,MAAAA,CAAC,GAAG/D,QAAH,aAAGA,QAAH,uBAAGA,QAAQ,CAAG,MAAH,CAAZ;AACH;;AAED,QAAI+D,CAAJ,EAAO;AACHA,MAAAA,CAAC,GAAG,MAAMA,CAAV;AACH;;AAED,UAAM,IAAIjF,SAAJ,CAAc,gCAAgCiF,CAA9C,CAAN;AACH;;AACD,SAAO1F,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2F,aAAT,CAAuB3F,KAAvB,EAA8B;AAC1B,MAAI,CAACR,+CAAO,CAACQ,KAAD,CAAZ,EAAqB;AACjB,UAAM,IAAIS,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4F,cAAT,CAAwB5F,KAAxB,EAA+B;AAC3B,MAAI,CAACsB,gDAAQ,CAACtB,KAAD,CAAb,EAAsB;AAClB,UAAM,IAAIS,SAAJ,CAAc,wBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6F,gBAAT,CAA0B7F,KAA1B,EAAiC;AAC7B,MAAI,CAAC4B,kDAAU,CAAC5B,KAAD,CAAf,EAAwB;AACpB,UAAM,IAAIS,SAAJ,CAAc,yBAAd,CAAN;AACH;;AACD,SAAOT,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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N;AAC9B2G,EAAAA,8DAAgB,CAACxG,CAAD,CAAhB;AACA,SAAOA,CAAP;AACH;;AAGDb,gEAAiB,CAAC,eAAD,EAAkBuH,SAAlB,EAA6B2B,eAA7B,EAA8CC,iBAA9C,CAAjB;;;;;;;;;;;;;;;;;;;ACpJa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMlF,SAAS,GAAG,GAAlB;AACP;AACA;AACA;AACA;;AACO,IAAME,QAAQ,GAAG,GAAjB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMD;;;;;AAEF;AACJ;AACA;AACA;AACA;AACI,sBAAYmF,MAAZ,EAAoB;AAAA;;AAAA;;AAChB;;AAEA,QAAI1G,yDAAW,CAAC0G,MAAD,CAAf,EAAyB;AACrB,YAAM,IAAIvJ,KAAJ,CAAU,yCAAV,CAAN;AACH;;AAED,UAAKuJ,MAAL,GAAcA,MAAd;AACA,UAAKC,QAAL,GAAgBnF,QAAhB;AARgB;AASnB;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;;WACI,qBAAYoF,QAAZ,EAAsB;AAClBxF,MAAAA,kEAAc,CAAC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AZ,+CAAO,WAAY,KAAKA,IAAL,CAAUxJ,MAAV,GAAmB,CAA/B,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,cAAKG,KAAL,EAAY;AACR,WAAKqJ,IAAL,CAAUjF,IAAV,CAAepE,KAAf;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ,WAAKqJ,IAAL,GAAY,EAAZ;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,eAAM;AACF,UAAI,KAAKL,OAAL,EAAJ,EAAoB;AAChB,eAAO3K,SAAP;AACH;;AACD,aAAO,KAAKgL,IAAL,CAAUR,GAAV,EAAP;AACH;;;;EAhEe/I;;AAqEpBtB,gEAAiB,CAAC,eAAD,EAAkBoJ,KAAlB,CAAjB;;;;;;;;;;;;;;;ACrGa;AAEb;AACA;AACA;;;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAAS2B,IAAT,CAAcC,KAAd,EAAqBC,MAArB,EAA6B;AACzB,SAAOC,MAAM,CAACF,KAAD,EAAQC,MAAR,CAAb;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,OAAT,CAAiBzH,CAAjB,EAAoBC,CAApB,EAAuBf,IAAvB,EAA6B;AACzB,MAAI5B,qDAAO,CAAC4B,IAAD,CAAX,EAAmB;AACf,QAAMwI,IAAI,GAAG1H,CAAC,CAACrC,MAAF,GAAWsC,CAAC,CAACtC,MAAb,GAAsB,IAAIN,KAAJ,CA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;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMD;;;;;AACF;AACJ;AACA;AACA;AACI,uBAAYnG,UAAZ,EAAwB;AAAA;;AAAA;;AACpB;AACArC,IAAAA,kEAAc,CAACqC,UAAD,CAAd;AAEA,UAAKgH,IAAL,GAAYC,WAAW,CAACjH,UAAD,CAAvB;AACA,UAAKkH,OAAL,GAAe,MAAKF,IAAL,CAAUzH,KAAV,EAAf;AACA,UAAK4H,SAAL,GAAiB,IAAI5I,GAAJ,EAAjB;AANoB;AAQvB;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACI,qBAAYjE,IAAZ,EAAkBgM,QAAlB,EAA4BC,OAA5B,EAAqC;AACjC5I,MAAAA,kEAAc,CAACrD,IAAD,CAAd;AACA2G,MAAAA,oEAAgB,CAACqF,QAAD,CAAhB;;AAEA,UAAIC,OAAO,KAAK9M,SAAhB,EAA2B;AACvBmH,QAAAA,kEAAc,CAAC2F,OAAD,CAAd;AACH;;AAED,WAAKY,SAAL,CAAenI,GAAf,CAAmB1E,IAAnB,EAAyB;AACrBgM,QAAAA,QAAQ,EAAEA,QADW;AAErBC,QAAAA,OAAO,EAAEA;AAFY,OAAzB;AAKA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,aAAInL,KAAJ,EAAW;AACP,aAAOgM,SAAS,CAACC,KAAV,CAAgB,IAAhB,EAAsB,CAACjM,KAAD,CAAtB,CAAP;AACH;;;;EAlDqBF;;AAqD1BtB,gEAAiB,CAAC,cAAD,EAAiBuM,WAAjB,CAAjB;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASc,WAAT,CAAqBC,OAArB,EAA8B;AAE1BvJ,EAAAA,kEAAc,CAACuJ,OAAD,CAAd;AAEA,MAAI5G,WAAW,GAAG,IAAI/B,GAAJ,EAAlB;;AACA,MAAM+I,KAAK,4BAAG,iBAAH;AAAA;AAAA;AAAA,IAAX,CAL0B,CAO1B;AACA;;;AACA,MAAIhJ,MAAM,GAAG4I,OAAO,CAAC9G,QAAR,CAAiBkH,KAAjB,CAAb;;AAT0B,6CAWZhJ,MAXY;AAAA;;AAAA;AAW1B,wDAAsB;AAAA,UAAbQ,CAAa;AAClB,UAAIyI,CAAC,GAAGzI,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAG,QAAH,CAAT;;AACA,UAAI,CAACjC,sDAAQ,CAAC0K,CAAD,CAAb,EAAkB;AACd;AACH;;AAED,UAAIC,CAAC,GAAGD,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAG,SAAH,CAAT;AACA,UAAI1M,CAAC,GAAG0M,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAG,MAAH,CAAT;;AAEA,UAAIC,CAAC,IAAI3M,CAAT,EAAY;AACR,YAAI4M,CAAC,GAAG,OAAO,IAAIV,4CAAJ,GAASxM,QAAT,EAAP,GAA6B,IAArC;AACA+F,QAAAA,WAAW,CAACtB,GAAZ,CAAgByI,CAAhB,EAAmB5M,CAAnB;AACAqM,QAAAA,OAAO,GAAGA,OAAO,CAACQ,OAAR,CAAgBF,CAAhB,EAAmBC,CAAnB,CAAV;AACH;AAEJ;AA1ByB;AAAA;AAAA;AAAA;AAAA;;AA2B1B,MAAI1M,KAAK,GAAGmM,OAAO,CAAClN,KAAR,CAAc,GAAd,CAAZ;AAEAe,EAAAA,KAAK,GAAGA,KAAK,CAACyD,GAAN,CAAU,UAAUpD,KAAV,EAAiB;AAC/B,QAAIwD,CAAC,GAAGxD,KAAK,CAACuM,IAAN,EAAR;;AAD+B,gDAEjBrH,WAFiB;AAAA;;AAAA;AAE/B,6DAA2B;AAAA,YAAlBzB,CAAkB;AACvBD,QAAAA,CAAC,GAAGA,CAAC,CAAC8I,OAAF,CAAU7I,CAAC,CAAC,CAAD,CAAX,EAAgBA,CAAC,CAAC,CAAD,CAAjB,CAAJ;AACH;AAJ8B;AAAA;AAAA;AAAA;AAAA;;AAK/B,WAAOD,CAAP;AAGH,GARO,CAAR;AAUA,SAAO7D,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6M,eAAT,CAAyBxM,KAAzB,EAAgC;AAE5B,MAAIyB,sDAAQ,CAACzB,KAAD,CAAR,IAAmBA,KAAK,CAACf,cAAN,CAAqB,UAArB,CAAvB,EAAyD;AACrDe,IAAAA,KAAK,GAAGA,KAAK,CAACb,QAAN,EAAR;AACH;;AAEDoD,EAAAA,kEAAc,CAACvC,KAAD,CAAd;AACA,SAAOA,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASgM,SAAT,CAAmBhM,KAAnB,EAA0B;AAAA;;AAEtB,MAAI4L,IAAI,GAAGpJ,qDAAK,CAAC,KAAKoJ,IAAN,CAAhB;AACA,MAAI/H,GAAJ;;AAEA,UAAQ,KAAKiI,OAAb;AAEI,SAAK,QAAL;AACI,aAAO,KAAKF,IAAL,CAAUrH,IAAV,CAAe,GAAf,CAAP;;AAEJ,SAAK,SAAL;AACA,SAAK,YAAL;AACA,SAAK,aAAL;AACIhC,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AACA,aAAOA,KAAK,CAAC4K,WAAN,EAAP;;AAEJ,SAAK,SAAL;AACA,SAAK,YAAL;AACA,SAAK,aAAL;AACIrI,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AACA,aAAOA,KAAK,CAACyM,WAAN,EAAP;;AAEJ,SAAK,UAAL;AACI,aAAO,KAAKzM,KAAZ;;AAEJ,SAAK,WAAL;AACI,UAAI0F,CAAC,GAAGgD,QAAQ,CAAC1I,KAAD,CAAhB;AACA8F,MAAAA,mEAAe,CAACJ,CAAD,CAAf;AACA,aAAOA,CAAP;;AAEJ,SAAK,QAAL;AACI,aAAOvF,IAAI,CAACC,SAAL,CAAeJ,KAAf,CAAP;;AAEJ,SAAK,UAAL;AACI,aAAOG,IAAI,CAACuM,KAAL,CAAW1M,KAAX,CAAP;;AAEJ,SAAK,MAAL;AACIuC,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AACA,aAAOA,KAAK,CAACuM,IAAN,EAAP;;AAEJ,SAAK,cAAL;AACIhK,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AACA,aAAO2M,kBAAkB,CAAC3M,KAAD,CAAlB,CACFsM,OADE,CACM,IADN,EACY,KADZ,EAEFA,OAFE,CAEM,IAFN,EAEY,KAFZ,EAGFA,OAHE,CAGM,KAHN,EAGa,KAHb,EAIFA,OAJE,CAIM,KAJN,EAIa,KAJb,EAKFA,OALE,CAKM,KALN,EAKa,KALb,CAAP;;AAQJ,SAAM,MAAN;AAEI;AACZ;AACA;AACA;AACA;AACA;AAEY,UAAIpB,QAAJ;AACA,UAAI0B,YAAY,GAAGhB,IAAI,CAACzH,KAAL,EAAnB;AACA,UAAIgH,OAAO,GAAGpF,2DAAS,EAAvB;;AAEA,UAAItE,sDAAQ,CAACzB,KAAD,CAAR,IAAmBA,KAAK,CAACf,cAAN,CAAqB2N,YAArB,CAAvB,EAA2D;AACvD1B,QAAAA,QAAQ,GAAGlL,KAAK,CAAC4M,YAAD,CAAhB;AACH,OAFD,MAEO,IAAI,KAAKb,SAAL,CAAec,GAAf,CAAmBD,YAAnB,CAAJ,EAAsC;AACzC,YAAIxN,CAAC,GAAG,KAAK2M,SAAL,CAAezE,GAAf,CAAmBsF,YAAnB,CAAR;AACA1B,QAAAA,QAAQ,GAAG9L,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAG,UAAH,CAAZ;AACA+L,QAAAA,OAAO,GAAG/L,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAG,SAAH,CAAX;AACH,OAJM,MAIA,IAAI,QAAOsH,MAAP,yCAAOA,MAAP,OAAkB,QAAlB,IAA8BA,MAAM,CAACzH,cAAP,CAAsB2N,YAAtB,CAAlC,EAAuE;AAC1E1B,QAAAA,QAAQ,GAAGxE,MAAM,CAACkG,YAAD,CAAjB;AACH;;AACD/G,MAAAA,oEAAgB,CAACqF,QAAD,CAAhB;AAEAU,MAAAA,IAAI,CAACkB,OAAL,CAAa9M,KAAb;AACA,aAAO,aAAAkL,QAAQ,EAAC5H,IAAT,mBAAc6H,OAAd,4BAA0BS,IAA1B,GAAP;;AAEJ,SAAM,OAAN;AACA,SAAM,WAAN;AACIrJ,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AACA,UAAI+M,GAAG,GAAG,IAAIC,SAAJ,GAAgBC,eAAhB,CAAgCjN,KAAhC,EAAuC,WAAvC,CAAV;AACA,aAAO+M,GAAG,CAACG,IAAJ,CAASC,WAAT,IAAwB,EAA/B;;AAEJ,SAAM,IAAN;AACA,SAAM,GAAN;AAEI7H,MAAAA,qEAAiB,CAACtF,KAAD,CAAjB;AAEA,UAAIoN,aAAa,GAAIxB,IAAI,CAACzH,KAAL,MAAgB9F,SAArC;AACA,UAAIgP,cAAc,GAAIzB,IAAI,CAACzH,KAAL,MAAgB9F,SAAtC;;AAEA,UAAI+O,aAAa,KAAK,OAAtB,EAA+B;AAC3BA,QAAAA,aAAa,GAAGpN,KAAhB;AACH;;AACD,UAAIoN,aAAa,KAAK,SAAtB,EAAiC;AAC7BA,QAAAA,aAAa,GAAG,OAAhB;AACH;;AACD,UAAIC,cAAc,KAAK,OAAvB,EAAgC;AAC5BA,QAAAA,cAAc,GAAGrN,KAAjB;AACH;;AACD,UAAIqN,cAAc,KAAK,SAAvB,EAAkC;AAC9BA,QAAAA,cAAc,GAAG,OAAjB;AACH;;AAED,UAAIC,SAAS,GAAKtN,KAAK,KAAK3B,SAAV,IAAuB2B,KAAK,KAAK,EAAjC,IAAuCA,KAAK,KAAK,KAAjD,IAA0DA,KAAK,KAAK,OAApE,IAA+EA,KAAK,KAAK,KAA1F,IAAoGA,KAAK,KAAK,IAA9G,IAAsHA,KAAK,KAAK,MAAhI,IAA0IA,KAAK,KAAK,IAArK;AACA,aAAOsN,SAAS,GAAGF,aAAH,GAAmBC,cAAnC;;AAGJ,SAAK,SAAL;AACI9K,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AAEA,UAAIuN,SAAS,GAAGvN,KAAK,CAACwN,MAAN,CAAa,CAAb,EAAgBf,WAAhB,EAAhB;AACA,aAAOc,SAAS,GAAGvN,KAAK,CAACyN,MAAN,CAAa,CAAb,CAAnB;;AACJ,SAAK,SAAL;AACIlL,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AAEA,aAAOA,KAAK,CAACsM,OAAN,CAAc,gDAAd,EAAgE,UAAU9I,CAAV,EAAa;AAChF,eAAOA,CAAC,CAACiJ,WAAF,EAAP;AACH,OAFM,CAAP;;AAIJ,SAAM,OAAN;AACA,SAAM,QAAN;AAEI,UAAI,CAACjL,sDAAQ,CAACxB,KAAD,CAAR,IAAmByB,sDAAQ,CAACzB,KAAD,CAA3B,IAAsCR,qDAAO,CAACQ,KAAD,CAA9C,KAA0DA,KAAK,CAACf,cAAN,CAAqB,QAArB,CAA9D,EAA8F;AAC1F,eAAOe,KAAK,CAACH,MAAb;AACH;;AAED,YAAM,IAAIY,SAAJ,CAAc,8BAA6BT,KAA7B,CAAd,CAAN;;AAEJ,SAAK,QAAL;AACIwM,MAAAA,eAAe,CAACxM,KAAD,CAAf;AACA,aAAO0N,IAAI,CAAC1N,KAAD,CAAX;;AAEJ,SAAK,OAAL;AACI,aAAO,EAAP;;AAEJ,SAAK,WAAL;AACI,aAAO3B,SAAP;;AAEJ,SAAK,QAAL;AACIkE,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AACA,UAAI2N,MAAM,GAAG/B,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAG,CAAH,CAAjB;AACA,aAAO+B,MAAM,GAAG3N,KAAhB;;AAEJ,SAAK,QAAL;AACIuC,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AACA,UAAI4N,MAAM,GAAGhC,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAG,CAAH,CAAjB;AACA,aAAO5L,KAAK,GAAG4N,MAAf;;AAEJ,SAAK,QAAL;AACI,aAAQ,IAAIjC,4CAAJ,EAAD,CAAWxM,QAAX,EAAP;;AAEJ,SAAK,KAAL;AACA,SAAK,UAAL;AACA,SAAK,OAAL;AAEI0E,MAAAA,GAAG,GAAI+H,IAAI,CAACzH,KAAL,MAAgB,WAAvB;AACA,UAAIU,YAAY,GAAI+G,IAAI,CAACzH,KAAL,MAAgB,EAApC;;AAEA,UAAInE,KAAK,YAAYmD,GAArB,EAA0B;AACtB,YAAI,CAACnD,KAAK,CAAC6M,GAAN,CAAUhJ,GAAV,CAAL,EAAqB;AACjB,iBAAOgB,YAAP;AACH;;AACD,eAAO7E,KAAK,CAACsH,GAAN,CAAUzD,GAAV,CAAP;AACH;;AAED,UAAIpC,sDAAQ,CAACzB,KAAD,CAAR,IAAmBR,qDAAO,CAACQ,KAAD,CAA9B,EAAuC;AAEnC,YAAIA,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAG6D,GAAH,CAAT,EAAkB;AACd,iBAAO7D,KAAP,aAAOA,KAAP,uBAAOA,KAAK,CAAG6D,GAAH,CAAZ;AACH;;AAED,eAAOgB,YAAP;AACH;;AAED,YAAM,IAAIvG,KAAJ,CAAU,oBAAV,CAAN;;AAEJ,SAAK,MAAL;AAEIuF,MAAAA,GAAG,GAAI+H,IAAI,CAACzH,KAAL,MAAgB,WAAvB;AACA,aAAO,IAAIzB,sDAAJ,CAAe1C,KAAf,EAAsBsE,MAAtB,CAA6BT,GAA7B,CAAP;;AAGJ,SAAK,WAAL;AAEItB,MAAAA,kEAAc,CAACvC,KAAD,CAAd;AAEA,UAAI6N,KAAK,GAAGnF,QAAQ,CAACkD,IAAI,CAAC,CAAD,CAAL,CAAR,IAAqB,CAAjC;AACA,UAAIkC,GAAG,GAAG,CAACpF,QAAQ,CAACkD,IAAI,CAAC,CAAD,CAAL,CAAR,IAAqB,CAAtB,IAA2BiC,KAArC;AAEA,aAAO7N,KAAK,CAAC+N,SAAN,CAAgBF,KAAhB,EAAuBC,GAAvB,CAAP;;AAEJ,SAAK,KAAL;AACI,aAAO9N,KAAP;;AAEJ,SAAK,SAAL;AACI,UAAIA,KAAK,KAAK3B,SAAd,EAAyB;AACrB,eAAO2B,KAAP;AACH;;AACD,aAAO4L,IAAI,CAAC,CAAD,CAAX;;AAEJ;AACI,YAAM,IAAItN,KAAJ,CAAU,qBAAqB,KAAKwN,OAApC,CAAN;AArMR;;AAwMA,SAAO9L,KAAP;AACH;;;;;;;;;;;;;;ACjdY;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA,IAAIgO,eAAe,GAAG,IAAI7K,GAAJ,EAAtB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMwI;;;;;AAEF;AACJ;AACA;AACI,cAAYgC,MAAZ,EAAoB;AAAA;;AAAA;;AAChB;;AAEA,QAAIA,MAAM,KAAKtP,SAAf,EAA0B;AACtBsP,MAAAA,MAAM,GAAG,IAAT;AACH;;AAEDpL,IAAAA,4DAAc,CAACoL,MAAD,CAAd;;AAEA,QAAI,CAACK,eAAe,CAACnB,GAAhB,CAAoBc,MAApB,CAAL,EAAkC;AAC9BK,MAAAA,eAAe,CAACpK,GAAhB,CAAoB+J,MAApB,EAA4B,CAA5B;AACH;;AAED,QAAIM,KAAK,GAAGD,eAAe,CAAC1G,GAAhB,CAAoBqG,MAApB,CAAZ;AACA,UAAKO,EAAL,GAAUP,MAAM,GAAGM,KAAnB;AAEAD,IAAAA,eAAe,CAACpK,GAAhB,CAAoB+J,MAApB,EAA4B,EAAEM,KAA9B;AAhBgB;AAiBnB;AAED;AACJ;AACA;;;;;WACI,oBAAW;AACP,aAAO,KAAKC,EAAZ;AACH;;;;EA7BYpO;;AAiCjBtB,gEAAiB,CAAC,eAAD,EAAkBmN,EAAlB,CAAjB;;;;;;;;;;;;;;;;;;AC/Ea;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMyC,eAAe,GAAG,eAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC;;;;;AAEF;AACJ;AACA;AACA;AACA;AACA;AACI,qBAAYC,QAAZ,EAAsB;AAAA;;AAAA;;AAClB;AACA,UAAKC,eAAL,GAAuBH,eAAvB;AACA3I,IAAAA,oEAAgB,CAAC6I,QAAD,EAAW3G,mEAAiB,CAAC,kBAAD,CAA5B,CAAhB;AACA,UAAK2G,QAAL,GAAgBA,QAAhB;AAJkB;AAKrB;AAED;AACJ;AACA;AACA;AACA;AACA;;;;;WACI,4BAAmBX,MAAnB,EAA2B;AACvBpL,MAAAA,kEAAc,CAACoL,MAAD,CAAd;AACA,WAAKY,eAAL,GAAuBZ,MAAvB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,8BAAqB;AACjB,aAAO,KAAKY,eAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,gCAAuBlF,IAAvB,EAA6B;AAEzB,UAAIA,IAAI,KAAKhL,SAAb,EAAwB;AACpBgL,QAAAA,IAAI,GAAG,IAAI8E,kEAAJ,CAAkB,EAAlB,CAAP;AACH;;AAED1I,MAAAA,oEAAgB,CAAC4D,IAAD,EAAO8E,kEAAP,CAAhB;AACA,UAAIG,QAAQ,GAAG,KAAKA,QAAL,CAAcE,SAAd,CAAwB,IAAxB,CAAf;AACA,aAAOF,QAAP;AACH;;;;EAlDmBxO;;AAsDxBtB,gEAAiB,CAAC,aAAD,EAAgB6P,SAAhB,CAAjB;;;;;;;;;;;;;;;;;;ACjGa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMF;;;;;AAEF;AACJ;AACA;AACA;AACA;AACI,yBAAYtG,MAAZ,EAAoB;AAAA;;AAAA;;AAChB;AAEA,UAAK8G,WAAL,GAAmBnJ,4DAAc,CAACqC,MAAD,CAAjC;AACA,UAAKhF,OAAL,GAAe,IAAIgE,KAAJ,CAAUgB,MAAV,EAAkB+G,UAAU,CAACtL,IAAX,+BAAlB,CAAf;AAEA,UAAKuL,SAAL,GAAiB,IAAItG,OAAJ,EAAjB;;AACA,UAAKsG,SAAL,CAAejL,GAAf,CAAmB,MAAK+K,WAAxB,EAAqC,MAAK9L,OAA1C;;AAEA,UAAKiM,QAAL,GAAgB,IAAIvG,OAAJ,EAAhB;;AACA,UAAKuG,QAAL,CAAclL,GAAd,CAAkB,MAAKf,OAAvB,EAAgC,MAAK8L,WAArC;;AAEA,UAAKI,SAAL,GAAiB,IAAIL,0DAAJ,EAAjB;AAZgB;AAanB;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;;WACI,sBAAa;AACT,aAAO,KAAK7L,OAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,0BAAiB;AACb,aAAO,KAAK8L,WAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,wBAAeK,QAAf,EAAyB;AACrB,WAAKD,SAAL,CAAeE,MAAf,CAAsBD,QAAtB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,wBAAeA,QAAf,EAAyB;AACrB,WAAKD,SAAL,CAAeG,MAAf,CAAsBF,QAAtB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,2BAAkB;AACd,aAAO,KAAKD,SAAL,CAAeI,MAAf,CAAsB,IAAtB,CAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,0BAAiBH,QAAjB,EAA2B;AACvB,aAAO,KAAKD,SAAL,CAAeK,QAAf,CAAwBJ,QAAxB,CAAP;AACH;;;;EA/EuBlP;;AAmF5BtB,gEAAiB,CAAC,eAAD,EAAkB2P,aAAlB,CAAjB;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASS,UAAT,GAAsB;AAElB,MAAMS,KAAK,GAAG,IAAd,CAFkB,CAIlB;;AACA,MAAMC,OAAO,GAAG;AAEZ;AACAhI,IAAAA,GAAG,EAAE,aAAUiI,MAAV,EAAkB1L,GAAlB,EAAuB2L,QAAvB,EAAiC;AAElC,UAAMxP,KAAK,GAAGyP,OAAO,CAACnI,GAAR,CAAYiI,MAAZ,EAAoB1L,GAApB,EAAyB2L,QAAzB,CAAd;;AAEA,UAAI,QAAO3L,GAAP,MAAe,QAAnB,EAA6B;AACzB,eAAO7D,KAAP;AACH;;AAED,UAAImB,mDAAW,CAACnB,KAAD,CAAf,EAAwB;AACpB,eAAOA,KAAP;AACH,OAViC,CAYlC;;;AACA,UAAKR,+CAAO,CAACQ,KAAD,CAAP,IAAkByB,gDAAQ,CAACzB,KAAD,CAA/B,EAAyC;AACrC,YAAIqP,KAAK,CAACR,SAAN,CAAgBhC,GAAhB,CAAoB7M,KAApB,CAAJ,EAAgC;AAC5B,iBAAOqP,KAAK,CAACR,SAAN,CAAgBvH,GAAhB,CAAoBtH,KAApB,CAAP;AACH,SAFD,MAEO,IAAIqP,KAAK,CAACP,QAAN,CAAejC,GAAf,CAAmB7M,KAAnB,CAAJ,EAA+B;AAClC,iBAAOA,KAAP;AACH,SAFM,MAEA;AACH,cAAIoM,CAAC,GAAG,IAAIvF,KAAJ,CAAU7G,KAAV,EAAiBsP,OAAjB,CAAR;AACAD,UAAAA,KAAK,CAACR,SAAN,CAAgBjL,GAAhB,CAAoB5D,KAApB,EAA2BoM,CAA3B;AACAiD,UAAAA,KAAK,CAACP,QAAN,CAAelL,GAAf,CAAmBwI,CAAnB,EAAsBpM,KAAtB;AACA,iBAAOoM,CAAP;AACH;AAEJ;;AAED,aAAOpM,KAAP;AAEH,KAhCW;AAkCZ;AACA4D,IAAAA,GAAG,EAAE,aAAU2L,MAAV,EAAkB1L,GAAlB,EAAuB7D,KAAvB,EAA8BwP,QAA9B,EAAwC;AAEzC,UAAIH,KAAK,CAACP,QAAN,CAAejC,GAAf,CAAmB7M,KAAnB,CAAJ,EAA+B;AAC3BA,QAAAA,KAAK,GAAGqP,KAAK,CAACP,QAAN,CAAexH,GAAf,CAAmBtH,KAAnB,CAAR;AACH;;AAED,UAAIqP,KAAK,CAACP,QAAN,CAAejC,GAAf,CAAmB0C,MAAnB,CAAJ,EAAgC;AAC5BA,QAAAA,MAAM,GAAGF,KAAK,CAACP,QAAN,CAAexH,GAAf,CAAmBiI,MAAnB,CAAT;AACH;;AAED,UAAI7Q,OAAO,GAAG+Q,OAAO,CAACnI,GAAR,CAAYiI,MAAZ,EAAoB1L,GAApB,EAAyB2L,QAAzB,CAAd;;AACA,UAAIH,KAAK,CAACP,QAAN,CAAejC,GAAf,CAAmBnO,OAAnB,CAAJ,EAAiC;AAC7BA,QAAAA,OAAO,GAAG2Q,KAAK,CAACP,QAAN,CAAexH,GAAf,CAAmB5I,OAAnB,CAAV;AACH;;AAED,UAAIA,OAAO,KAAKsB,KAAhB,EAAuB;AACnB,eAAO,IAAP;AACH;;AAED,UAAIkD,MAAJ;AACA,UAAIwM,UAAU,GAAGD,OAAO,CAACE,wBAAR,CAAiCJ,MAAjC,EAAyC1L,GAAzC,CAAjB;;AAEA,UAAI6L,UAAU,KAAKrR,SAAnB,EAA8B;AAC1BqR,QAAAA,UAAU,GAAG;AACTE,UAAAA,QAAQ,EAAE,IADD;AAETC,UAAAA,UAAU,EAAE,IAFH;AAGTtI,UAAAA,YAAY,EAAE;AAHL,SAAb;AAKH;;AAEDmI,MAAAA,UAAU,CAAC,OAAD,CAAV,GAAsB1P,KAAtB;AACAkD,MAAAA,MAAM,GAAGuM,OAAO,CAACrI,cAAR,CAAuBmI,MAAvB,EAA+B1L,GAA/B,EAAoC6L,UAApC,CAAT;;AAEA,UAAI,QAAO7L,GAAP,MAAe,QAAnB,EAA6B;AACzBwL,QAAAA,KAAK,CAACN,SAAN,CAAgBI,MAAhB,CAAuBE,KAAvB;AACH;;AAED,aAAOnM,MAAP;AACH,KAzEW;AA4EZ;AACA4M,IAAAA,cAAc,EAAE,wBAAUP,MAAV,EAAkB1L,GAAlB,EAAuB;AACnC,UAAIA,GAAG,IAAI0L,MAAX,EAAmB;AACf,eAAOA,MAAM,CAAC1L,GAAD,CAAb;;AAEA,YAAI,QAAOA,GAAP,MAAe,QAAnB,EAA6B;AACzBwL,UAAAA,KAAK,CAACN,SAAN,CAAgBI,MAAhB,CAAuBE,KAAvB;AACH;;AAED,eAAO,IAAP;AACH;;AACD,aAAO,KAAP;AACH,KAxFW;AA0FZ;AACAjI,IAAAA,cAAc,EAAE,wBAAUmI,MAAV,EAAkB1L,GAAlB,EAAuB6L,UAAvB,EAAmC;AAE/C,UAAIxM,MAAM,GAAGuM,OAAO,CAACrI,cAAR,CAAuBmI,MAAvB,EAA+B1L,GAA/B,EAAoC6L,UAApC,CAAb;;AACA,UAAI,QAAO7L,GAAP,MAAe,QAAnB,EAA6B;AACzBwL,QAAAA,KAAK,CAACN,SAAN,CAAgBI,MAAhB,CAAuBE,KAAvB;AACH;;AACD,aAAOnM,MAAP;AACH,KAlGW;AAoGZ;AACA6M,IAAAA,cAAc,EAAE,wBAAUR,MAAV,EAAkB1L,GAAlB,EAAuB;AACnC,UAAIX,MAAM,GAAGuM,OAAO,CAACM,cAAR,CAAuBC,OAAvB,EAAgCnM,GAAhC,CAAb;;AAEA,UAAI,QAAOA,GAAP,MAAe,QAAnB,EAA6B;AACzBwL,QAAAA,KAAK,CAACN,SAAN,CAAgBI,MAAhB,CAAuBE,KAAvB;AACH;;AAED,aAAOnM,MAAP;AACH;AA7GW,GAAhB;AAkHA,SAAOoM,OAAP;AACH;;;;;;;;;;;;;;;;ACzRY;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMb;;;;;AAEF;AACJ;AACA;AACA;AACA;AACI,oBAAYvD,QAAZ,EAA+B;AAAA;;AAAA;;AAC3B;;AAEA,QAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAChC,YAAM,IAAI5M,KAAJ,CAAU,sCAAV,CAAN;AACH;;AAED,UAAK4M,QAAL,GAAgBA,QAAhB;;AAP2B,sCAANU,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAQ3B,UAAKd,SAAL,GAAiBc,IAAjB;AACA,UAAKuE,IAAL,GAAY,IAAIF,oDAAJ,EAAZ;AACA,UAAKG,KAAL,GAAa,IAAIF,wDAAJ,EAAb;AAV2B;AAW9B;AAED;AACJ;AACA;AACA;AACA;;;;;WACI,gBAAOG,GAAP,EAAY;AACR,WAAKF,IAAL,CAAUG,GAAV,CAAcD,GAAd;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,mBAAUA,GAAV,EAAe;AACX,WAAKF,IAAL,CAAUI,MAAV,CAAiBF,GAAjB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,mBAAU;AACN,aAAO,KAAKF,IAAL,CAAU9H,OAAV,EAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAOgI,GAAP,EAAY;AACR,aAAO,KAAKF,IAAL,CAAUf,QAAV,CAAmBiB,GAAnB,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAOxN,OAAP,EAAgB;AACZ,UAAIZ,IAAI,GAAG,IAAX;AAEA,aAAO,IAAIhC,OAAJ,CAAY,UAAUc,OAAV,EAAmBb,MAAnB,EAA2B;AAC1C,YAAI,CAACuB,gDAAQ,CAACoB,OAAD,CAAb,EAAwB;AACpB3C,UAAAA,MAAM,CAAC,2BAAD,CAAN;AACA;AACH;;AAED+B,QAAAA,IAAI,CAACmO,KAAL,CAAWE,GAAX,CAAezN,OAAf;AAEA2N,QAAAA,UAAU,CAAC,YAAM;AAEb,cAAI;AACA;AACA;AACA,gBAAIvO,IAAI,CAACmO,KAAL,CAAWpH,OAAX,EAAJ,EAA0B;AACtBjI,cAAAA,OAAO;AACP;AACH;;AAED,gBAAI3B,CAAC,GAAG6C,IAAI,CAACmO,KAAL,CAAWK,IAAX,EAAR;AACA,gBAAIvN,MAAM,GAAGjB,IAAI,CAACiJ,QAAL,CAAce,KAAd,CAAoB7M,CAApB,EAAuB6C,IAAI,CAAC6I,SAA5B,CAAb;;AAEA,gBAAIrJ,gDAAQ,CAACyB,MAAD,CAAR,IAAoBA,MAAM,YAAYjD,OAA1C,EAAmD;AAC/CiD,cAAAA,MAAM,CAACd,IAAP,CAAYrB,OAAZ,EAAqBsB,KAArB,CAA2BnC,MAA3B;AACA;AACH;;AAEDa,YAAAA,OAAO,CAACmC,MAAD,CAAP;AAEH,WAlBD,CAkBE,OAAOxD,CAAP,EAAU;AACRQ,YAAAA,MAAM,CAACR,CAAD,CAAN;AACH;AACJ,SAvBS,EAuBP,CAvBO,CAAV;AAyBH,OAjCM,CAAP;AAmCH;;;;EApGkBI;;AAwGvBtB,gEAAiB,CAAC,eAAD,EAAkBiQ,QAAlB,CAAjB;;;;;;;;;;;;;;;;ACnLa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMwB;;;;;AAEF;AACJ;AACA;AACA;AACI,qBAAYS,IAAZ,EAAkB;AAAA;;AAAA;;AACd;AACA,UAAKC,MAAL,GAAc,IAAInI,GAAJ,EAAd;;AAEA,QAAI,OAAOkI,IAAP,KAAgB,WAApB,EAAiC;AAC7B,YAAKJ,GAAL,CAASI,IAAT;AACH;;AANa;AAQjB;AAED;AACJ;AACA;AACA;AACA;;;;;WACI,uBAAc;AACV,aAAO,KAAKzP,MAAM,CAACC,QAAZ,GAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAoB;AAChB;AACA;AACA;AACA,UAAI0P,KAAK,GAAG,CAAZ;AACA,UAAIvI,OAAO,GAAG,KAAKA,OAAL,EAAd;AAEA,aAAO;AACHwI,QAAAA,IAAI,EAAE,gBAAM;AACR,cAAID,KAAK,GAAGvI,OAAO,CAACxI,MAApB,EAA4B;AACxB,mBAAO;AAACG,cAAAA,KAAK,EAAEqI,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAGuI,KAAK,EAAR,CAAf;AAA4BE,cAAAA,IAAI,EAAE;AAAlC,aAAP;AACH,WAFD,MAEO;AACH,mBAAO;AAACA,cAAAA,IAAI,EAAE;AAAP,aAAP;AACH;AACJ;AAPE,OAAP;AASH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,kBAAS9Q,KAAT,EAAgB;AAAA;;AACZ,UAAIwB,sDAAQ,CAACxB,KAAD,CAAZ,EAAqB;AACjBA,QAAAA,KAAK,GAAGA,KAAK,CAACuM,IAAN,EAAR;AACA,YAAIwE,OAAO,GAAG,CAAd;AACA/Q,QAAAA,KAAK,CAACpB,KAAN,CAAY,GAAZ,EAAiB2E,OAAjB,CAAyB,UAAAyN,KAAK,EAAI;AAC9B,cAAI,MAAI,CAACL,MAAL,CAAY9D,GAAZ,CAAgBmE,KAAK,CAACzE,IAAN,EAAhB,MAAkC,KAAtC,EAA6C,OAAO,KAAP;AAC7CwE,UAAAA,OAAO;AACV,SAHD;AAIA,eAAOA,OAAO,GAAG,CAAV,GAAc,IAAd,GAAqB,KAA5B;AACH;;AAED,UAAI/P,wDAAU,CAAChB,KAAD,CAAd,EAAuB;AACnB,YAAI+Q,QAAO,GAAG,CAAd;;AADmB,mDAED/Q,KAFC;AAAA;;AAAA;AAEnB,8DAAyB;AAAA,gBAAhBgR,KAAgB;AACrBzO,YAAAA,kEAAc,CAACyO,KAAD,CAAd;AACA,gBAAI,KAAKL,MAAL,CAAY9D,GAAZ,CAAgBmE,KAAK,CAACzE,IAAN,EAAhB,MAAkC,KAAtC,EAA6C,OAAO,KAAP;AAC7CwE,YAAAA,QAAO;AACV;AANkB;AAAA;AAAA;AAAA;AAAA;;AAOnB,eAAOA,QAAO,GAAG,CAAV,GAAc,IAAd,GAAqB,KAA5B;AACH;;AAED,aAAO,KAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,aAAI/Q,KAAJ,EAAW;AAAA;;AACP,UAAIwB,sDAAQ,CAACxB,KAAD,CAAZ,EAAqB;AACjBA,QAAAA,KAAK,CAACpB,KAAN,CAAY,GAAZ,EAAiB2E,OAAjB,CAAyB,UAAAyN,KAAK,EAAI;AAC9B,gBAAI,CAACL,MAAL,CAAYL,GAAZ,CAAgBU,KAAK,CAACzE,IAAN,EAAhB;AACH,SAFD;AAGH,OAJD,MAIO,IAAIvL,wDAAU,CAAChB,KAAD,CAAd,EAAuB;AAAA,oDACRA,KADQ;AAAA;;AAAA;AAC1B,iEAAyB;AAAA,gBAAhBgR,KAAgB;AACrBzO,YAAAA,kEAAc,CAACyO,KAAD,CAAd;AACA,iBAAKL,MAAL,CAAYL,GAAZ,CAAgBU,KAAK,CAACzE,IAAN,EAAhB;AACH;AAJyB;AAAA;AAAA;AAAA;AAAA;AAK7B,OALM,MAKA,IAAI,OAAOvM,KAAP,KAAiB,WAArB,EAAkC;AACrC,cAAM,IAAIS,SAAJ,CAAc,mBAAd,CAAN;AACH;;AAED,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ,WAAKkQ,MAAL,CAAYM,KAAZ;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,gBAAOjR,KAAP,EAAc;AAAA;;AACV,UAAIwB,sDAAQ,CAACxB,KAAD,CAAZ,EAAqB;AACjBA,QAAAA,KAAK,CAACpB,KAAN,CAAY,GAAZ,EAAiB2E,OAAjB,CAAyB,UAAAyN,KAAK,EAAI;AAC9B,gBAAI,CAACL,MAAL,CAAYvH,MAAZ,CAAmB4H,KAAK,CAACzE,IAAN,EAAnB;AACH,SAFD;AAGH,OAJD,MAIO,IAAIvL,wDAAU,CAAChB,KAAD,CAAd,EAAuB;AAAA,oDACRA,KADQ;AAAA;;AAAA;AAC1B,iEAAyB;AAAA,gBAAhBgR,KAAgB;AACrBzO,YAAAA,kEAAc,CAACyO,KAAD,CAAd;AACA,iBAAKL,MAAL,CAAYvH,MAAZ,CAAmB4H,KAAK,CAACzE,IAAN,EAAnB;AACH;AAJyB;AAAA;AAAA;AAAA;AAAA;AAK7B,OALM,MAKA,IAAI,OAAOvM,KAAP,KAAiB,WAArB,EAAkC;AACrC,cAAM,IAAIS,SAAJ,CAAc,mBAAd,CAAN;AACH;;AAED,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,iBAAQuQ,KAAR,EAAeE,QAAf,EAAyB;AACrB3O,MAAAA,kEAAc,CAACyO,KAAD,CAAd;AACAzO,MAAAA,kEAAc,CAAC2O,QAAD,CAAd;;AACA,UAAI,CAAC,KAAK9B,QAAL,CAAc4B,KAAd,CAAL,EAA2B;AACvB,eAAO,IAAP;AACH;;AAED,UAAI9O,CAAC,GAAG3C,KAAK,CAAC4R,IAAN,CAAW,KAAKR,MAAhB,CAAR;AACA,UAAI9R,CAAC,GAAGqD,CAAC,CAACkP,OAAF,CAAUJ,KAAV,CAAR;AACA,UAAInS,CAAC,KAAK,CAAC,CAAX,EAAc,OAAO,IAAP;AAEdqD,MAAAA,CAAC,CAACmP,MAAF,CAASxS,CAAT,EAAY,CAAZ,EAAeqS,QAAf;AACA,WAAKP,MAAL,GAAc,IAAInI,GAAJ,EAAd;AACA,WAAK8H,GAAL,CAASpO,CAAT;AAEA,aAAO,IAAP;AAGH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,gBAAOlC,KAAP,EAAc;AAAA;;AAEV,UAAIwB,sDAAQ,CAACxB,KAAD,CAAZ,EAAqB;AACjBA,QAAAA,KAAK,CAACpB,KAAN,CAAY,GAAZ,EAAiB2E,OAAjB,CAAyB,UAAAyN,KAAK,EAAI;AAC9BM,UAAAA,WAAW,CAAChO,IAAZ,CAAiB,MAAjB,EAAuB0N,KAAvB;AACH,SAFD;AAGH,OAJD,MAIO,IAAIhQ,wDAAU,CAAChB,KAAD,CAAd,EAAuB;AAAA,oDACRA,KADQ;AAAA;;AAAA;AAC1B,iEAAyB;AAAA,gBAAhBgR,KAAgB;AACrBM,YAAAA,WAAW,CAAChO,IAAZ,CAAiB,IAAjB,EAAuB0N,KAAvB;AACH;AAHyB;AAAA;AAAA;AAAA;AAAA;AAI7B,OAJM,MAIA,IAAI,OAAOhR,KAAP,KAAiB,WAArB,EAAkC;AACrC,cAAM,IAAIS,SAAJ,CAAc,mBAAd,CAAN;AACH;;AAED,aAAO,IAAP;AAEH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,mBAAU;AACN,aAAOlB,KAAK,CAAC4R,IAAN,CAAW,KAAKR,MAAhB,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,iBAAQzF,QAAR,EAAkB;AACdrF,MAAAA,oEAAgB,CAACqF,QAAD,CAAhB;AACA,WAAKyF,MAAL,CAAYpN,OAAZ,CAAoB2H,QAApB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,oBAAW;AACP,aAAO,KAAK7C,OAAL,GAAe9D,IAAf,CAAoB,GAApB,CAAP;AACH;;;;EArPmBzE,4CA8BnBmB,MAAM,CAACC;AA2NZ;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASoQ,WAAT,CAAqBN,KAArB,EAA4B;AACxB,MAAI,EAAE,gBAAgBf,SAAlB,CAAJ,EAAkC,MAAM3R,KAAK,CAAC,oCAAD,CAAX;AAClCiE,EAAAA,kEAAc,CAACyO,KAAD,CAAd;AACAA,EAAAA,KAAK,GAAGA,KAAK,CAACzE,IAAN,EAAR;;AACA,MAAI,KAAK6C,QAAL,CAAc4B,KAAd,CAAJ,EAA0B;AACtB,SAAKT,MAAL,CAAYS,KAAZ;AACA,WAAO,IAAP;AACH;;AACD,OAAKV,GAAL,CAASU,KAAT;AACA,SAAO,IAAP;AACH;;AAEDxS,gEAAiB,CAAC,eAAD,EAAkByR,SAAlB,CAAjB;;;;;;;;;;;;;;;ACzTa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC;;;;;AAEF;AACJ;AACA;AACI,yBAAc;AAAA;;AAAA;;AACV;AACA,UAAKsB,MAAL,GAAc,IAAI/I,OAAJ,EAAd;AAFU;AAGb;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;;WACI,aAAIzI,KAAJ,EAAW;AAEPwF,MAAAA,4DAAc,CAACxF,KAAD,CAAd;;AAEA,UAAI,CAAC,KAAKwR,MAAL,CAAY3E,GAAZ,CAAgB7M,KAAhB,CAAL,EAA6B;AACzB,aAAKwR,MAAL,CAAYlB,GAAZ,CAAgBtQ,KAAhB;;AACA,6EAAUA,KAAV;AACH;;AAED,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ;;AACA,WAAKwR,MAAL,GAAc,IAAI/I,OAAJ,EAAd;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,gBAAO;AAEH,UAAI,KAAKO,OAAL,EAAJ,EAAoB;AAChB,eAAO3K,SAAP;AACH;;AACD,UAAI2B,KAAK,GAAG,KAAKqJ,IAAL,CAAUlF,KAAV,EAAZ;AACA,WAAKqN,MAAL,CAAYpI,MAAZ,CAAmBpJ,KAAnB;AACA,aAAOA,KAAP;AACH;;;;EAtDqBuR;;AA2D1B/S,gEAAiB,CAAC,eAAD,EAAkB0R,WAAlB,CAAjB;;;;;;;;;;;;;;AC5Fa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMqB;;;;;AAEF;AACJ;AACA;AACI,mBAAc;AAAA;;AAAA;;AACV;AACA,UAAKlI,IAAL,GAAY,EAAZ;AAFU;AAGb;AAGD;AACJ;AACA;;;;;WACI,mBAAU;AACN,aAAO,KAAKA,IAAL,CAAUxJ,MAAV,KAAqB,CAA5B;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAO;AACH,UAAI,KAAKmJ,OAAL,EAAJ,EAAoB;AAChB,eAAO3K,SAAP;AACH;;AAED,aAAO,KAAKgL,IAAL,CAAU,CAAV,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,aAAIrJ,KAAJ,EAAW;AACP,WAAKqJ,IAAL,CAAUjF,IAAV,CAAepE,KAAf;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ,WAAKqJ,IAAL,GAAY,EAAZ;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,gBAAO;AACH,UAAI,KAAKL,OAAL,EAAJ,EAAoB;AAChB,eAAO3K,SAAP;AACH;;AACD,aAAO,KAAKgL,IAAL,CAAUlF,KAAV,EAAP;AACH;;;;EA/DerE;;AAoEpBtB,gEAAiB,CAAC,eAAD,EAAkB+S,KAAlB,CAAjB;;;;;;;;;;;;;;;;AC1Ha;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM7C;;;;;AAEF;AACJ;AACA;AACI,0BAAc;AAAA;;AAAA;;AACV;AACA,UAAKK,SAAL,GAAiB,EAAjB;AAFU;AAGb;AAED;AACJ;AACA;AACA;AACA;AACA;;;;;WACI,gBAAOC,QAAP,EAAiB;AACbvJ,MAAAA,8DAAgB,CAACuJ,QAAD,EAAWP,kDAAX,CAAhB;AAEA,WAAKM,SAAL,CAAe3K,IAAf,CAAoB4K,QAApB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,oBAAOA,QAAP,EAAiB;AACbvJ,MAAAA,8DAAgB,CAACuJ,QAAD,EAAWP,kDAAX,CAAhB;AAEA,UAAI5P,CAAC,GAAG,CAAR;AAAA,UAAWC,CAAC,GAAG,KAAKiQ,SAAL,CAAelP,MAA9B;;AACA,aAAOhB,CAAC,GAAGC,CAAX,EAAcD,CAAC,EAAf,EAAmB;AACf,YAAI,KAAKkQ,SAAL,CAAelQ,CAAf,MAAsBmQ,QAA1B,EAAoC;AAChC,eAAKD,SAAL,CAAesC,MAAf,CAAsBxS,CAAtB,EAAyB,CAAzB;AACH;AACJ;;AAED,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,sBAASmQ,QAAT,EAAmB;AACfvJ,MAAAA,8DAAgB,CAACuJ,QAAD,EAAWP,kDAAX,CAAhB;AACA,UAAI5P,CAAC,GAAG,CAAR;AAAA,UAAWC,CAAC,GAAG,KAAKiQ,SAAL,CAAelP,MAA9B;;AACA,aAAOhB,CAAC,GAAGC,CAAX,EAAcD,CAAC,EAAf,EAAmB;AACf,YAAI,KAAKkQ,SAAL,CAAelQ,CAAf,MAAsBmQ,QAA1B,EAAoC;AAChC,iBAAO,IAAP;AACH;AACJ;;AACD,aAAO,KAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACI,oBAAOnM,OAAP,EAAgB;AAEZ,UAAI4O,OAAO,GAAG,EAAd;AAEA,UAAI5S,CAAC,GAAG,CAAR;AAAA,UAAWC,CAAC,GAAG,KAAKiQ,SAAL,CAAelP,MAA9B;;AACA,aAAOhB,CAAC,GAAGC,CAAX,EAAcD,CAAC,EAAf,EAAmB;AACf4S,QAAAA,OAAO,CAACrN,IAAR,CAAa,KAAK2K,SAAL,CAAelQ,CAAf,EAAkB6S,MAAlB,CAAyB7O,OAAzB,CAAb;AACH;;AAED,aAAO5C,OAAO,CAACU,GAAR,CAAY8Q,OAAZ,CAAP;AACH;;;;EA1EsB3R;;AA8E3BtB,gEAAiB,CAAC,eAAD,EAAkBkQ,YAAlB,CAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpHa;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASkD,qBAAT,CAA+BC,OAA/B,EAAwC;AACpC,SAAOC,sBAAsB,CAACD,OAAD,EAAUF,+DAAV,CAA7B;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASI,eAAT,CAAyBF,OAAzB,EAAkCG,MAAlC,EAA0CnK,MAA1C,EAAkD;AAE9CpC,EAAAA,oEAAgB,CAACoM,OAAD,EAAUI,WAAV,CAAhB;AACArM,EAAAA,kEAAc,CAACoM,MAAD,CAAd;;AAEA,MAAI,CAAAH,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAGG,MAAH,CAAP,MAAsB3T,SAA1B,EAAqC;AACjCwT,IAAAA,OAAO,CAACG,MAAD,CAAP,GAAkB,IAAIxJ,GAAJ,EAAlB;AACH;;AAED0J,EAAAA,iBAAiB,CAACL,OAAD,EAAUF,+DAAV,EAAgCK,MAAM,CAAC7S,QAAP,EAAhC,CAAjB;AACA0S,EAAAA,OAAO,CAACG,MAAD,CAAP,CAAgB1B,GAAhB,CAAoBzI,MAApB;AACA,SAAOgK,OAAP;AAEH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,gBAAT,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aAAhB,CAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7Sa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA,IAAMoB,kBAAkB,GAAGnU,MAAM,CAACoU,GAAP,CAAWnX,oEAAX,CAA3B;AAEA;AACA;AACA;AACA;;AACA,IAAMoX,gBAAgB,GAAGrU,MAAM,CAACoU,GAAP,CAAWxB,kEAAX,CAAzB;AAEA;AACA;AACA;AACA;;AACA,IAAM0B,gBAAgB,GAAGtU,MAAM,CAAC,kBAAD,CAA/B;AAEA;AACA;AACA;AACA;;AACA,IAAMuU,oBAAoB,GAAGvU,MAAM,CAAC,sBAAD,CAAnC;AAGA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM6S;;;;;AAEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACI,2BAAc;AAAA;;AAAA;;AACV;AACA,UAAKsB,kBAAL,IAA2B,IAAIjH,kEAAJ,CAAkB;AAAC,iBAAWtD,uDAAM,CAAC,EAAD,EAAK,MAAK4K,Q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B;AACH,SAFD,MAEO;AACH/I,UAAAA,OAAO,CAAC+I,OAAR,GAAkB,KAAlB;AACH;;AAED;;AACJ,WAAK,MAAL;AACA;AACI,YAAI1b,IAAI,KAAK,OAAb,EAAsB;AAClB2S,UAAAA,OAAO,CAAC7R,KAAR,GAAiBA,KAAK,KAAK3B,SAAV,GAAsB,EAAtB,GAA2B2B,KAA5C;AACH;;AAED;AAzBR;AA6BH,GA9BM,MA8BA,IAAI6R,OAAO,YAAYgJ,mBAAvB,EAA4C;AAC/C,QAAI3b,IAAI,KAAK,OAAb,EAAsB;AAClB2S,MAAAA,OAAO,CAAC7R,KAAR,GAAiBA,KAAK,KAAK3B,SAAV,GAAsB,EAAtB,GAA2B2B,KAA5C;AACH;AACJ;AAEJ;;AAEDxB,gEAAiB,CAAC,aAAD,EAAgB2W,OAAhB,CAAjB;;;;;;;;;;;;;;;;;ACjvBa;AAEb;AACA;AACA;;;;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASuE,WAAT,GAAuB;AAAA;;AACnB,MAAI/S,QAAQ,iBAAGZ,2DAAS,EAAZ,+CAAG,WAAc,UAAd,CAAf;;AACA,MAAI,QAAOY,QAAP,MAAoB,QAAxB,EAAkC;AAC9B,UAAM,IAAIrI,KAAJ,CAAU,2BAAV,CAAN;AACH;;AAED,SAAOqI,QAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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;AACA;AACA;AACA;;AACA,IAAMY,gBAAgB,GAAG,IAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,mBAAT,GAA+B;AAE3B,MAAMtX,QAAQ,GAAG+S,qDAAW,EAA5B;AAEA,MAAI3B,IAAI,GAAGpR,QAAQ,CAAC8S,aAAT,CAAuB,MAAvB,CAAX;;AACA,MAAI1B,IAAI,YAAY9F,WAAhB,IAA+B8F,IAAI,CAACtF,YAAL,CAAkB,MAAlB,CAAnC,EAA8D;AAC1D,QAAIyL,MAAM,GAAGnG,IAAI,CAACpF,YAAL,CAAkB,MAAlB,CAAb;;AACA,QAAIuL,MAAJ,EAAY;AACR,aAAO,IAAIH,wDAAJ,CAAgBG,MAAhB,CAAP;AACH;AACJ;;AAED,SAAOH,4DAAW,CAACC,gBAAD,CAAlB;AACH;;AAEDxf,gEAAiB,CAAC,aAAD,EAAgByf,mBAAhB,CAAjB;;;;;;;;;;;;;;;;;AC1Da;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA,IAAME,gBAAgB,GAAGld,MAAM,CAAC,YAAD,CAA/B;AAEA;AACA;AACA;AACA;;AACA,IAAMmd,kBAAkB,GAAGnd,MAAM,CAAC,cAAD,CAAjC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMod;;;;;AAEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,kBAAYC,QAAZ,EAAsBC,MAAtB,EAA8BC,MAA9B,EAAsCC,QAAtC,EAAgDC,OAAhD,EAAyDC,UAAzD,EAAqE;AAAA;;AAAA;;AACjE;AAEA,UAAKR,gBAAL,IAAyB;AACrBG,MAAAA,QAAQ,EAAGA,QAAQ,KAAKjgB,SAAd,GAA2BA,SAA3B,GAAuCkE,kEAAc,CAAC+b,QAAD,CAD1C;AAErBE,MAAAA,MAAM,EAAGA,MAAM,KAAKngB,SAAZ,GAAyBA,SAAzB,GAAqCkE,kEAAc,CAACic,MAAD,CAFtC;AAGrBD,MAAAA,MAAM,EAAGA,MAAM,KAAKlgB,SAAZ,GAAyBA,SAAzB,GAAqCkE,kEAAc,CAACgc,MAAD,CAHtC;AAIrBE,MAAAA,QAAQ,EAAGA,QAAQ,KAAKpgB,SAAd,GAA2BA,SAA3B,GAAuCkE,kEAAc,CAACkc,QAAD,CAJ1C;AAKrBC,MAAAA,OAAO,EAAGA,OAAO,KAAKrgB,SAAb,GAA0BA,SAA1B,GAAsCkE,kEAAc,CAACmc,OAAD,CALxC;AAMrBC,MAAAA,UAAU,EAAGA,UAAU,KAAKtgB,SAAhB,GAA6BA,SAA7B,GAAyCkE,kEAAc,CAACoc,UAAD;AAN9C,KAAzB;AASA,QAAIvf,CAAC,GAAG,EAAR;AACA,QAAIkf,QAAQ,KAAKjgB,SAAjB,EAA4Be,CAAC,CAACgF,IAAF,CAAOka,QAAP;AAC5B,QAAIE,MAAM,KAAKngB,SAAf,EAA0Be,CAAC,CAACgF,IAAF,CAAOoa,MAAP;AAC1B,QAAID,MAAM,KAAKlgB,SAAf,EAA0Be,CAAC,CAACgF,IAAF,CAAOma,MAAP;AAC1B,QAAIE,QAAQ,KAAKpgB,SAAjB,EAA4Be,CAAC,CAACgF,IAAF,CAAOqa,QAAP;AAC5B,QAAIC,OAAO,KAAKrgB,SAAhB,EAA2Be,CAAC,CAACgF,IAAF,CAAOsa,OAAP;AAC3B,QAAIC,UAAU,KAAKtgB,SAAnB,EAA8Be,CAAC,CAACgF,IAAF,CAAOua,UAAP;;AAE9B,QAAIvf,CAAC,CAACS,MAAF,KAAa,CAAjB,EAAoB;AAChB,YAAM,IAAIvB,KAAJ,CAAU,oBAAV,CAAN;AACH;;AAED,UAAK8f,kBAAL,IAA2Bhf,CAAC,CAACmF,IAAF,CAAO,GAAP,CAA3B;AAxBiE;AA0BpE;AAED;AACJ;AACA;;;;;SACI,eAAmB;AACf,aAAO,KAAK6Z,kBAAL,CAAP;AACH;AAED;AACJ;AACA;;;;SACI,eAAe;AACX,aAAO,KAAKD,gBAAL,EAAuBG,QAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAa;AACT,aAAO,KAAKH,gBAAL,EAAuBI,MAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAa;AACT,aAAO,KAAKJ,gBAAL,EAAuBK,MAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAe;AACX,aAAO,KAAKL,gBAAL,EAAuBM,QAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAc;AACV,aAAO,KAAKN,gBAAL,EAAuBO,OAA9B;AACH;AAED;AACJ;AACA;;;;SACI,eAAiB;AACb,aAAO,KAAKP,gBAAL,EAAuBS,YAA9B;AACH;AAGD;AACJ;AACA;;;;WACI,oBAAW;AACP,aAAO,KAAK,KAAKC,YAAjB;AACH;AAED;AACJ;AACA;;;;WACI,kBAAS;AACL,aAAOrc,qDAAK,CAAC,KAAK2b,gBAAL,CAAD,CAAZ;AACH;;;;EArGgBre;AA0GrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASie,WAAT,CAAqBG,MAArB,EAA6B;AAEzBA,EAAAA,MAAM,GAAG3b,kEAAc,CAAC2b,MAAD,CAAd,CAAuB5R,OAAvB,CAA+B,IAA/B,EAAqC,GAArC,CA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IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,qBAAYF,QAAZ,EAAsB;AAClBjd,MAAAA,mEAAe,CAACid,QAAD,CAAf;AACA,WAAKA,QAAL,GAAgBA,QAAhB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,uBAAc;AACV,aAAO,KAAKA,QAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,kBAAS;AACL,WAAKG,WAAL,CAAiBZ,2CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,wBAAW;AACP,WAAKY,WAAL,CAAiBN,6CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,wBAAW;AACP,WAAKM,WAAL,CAAiBX,6CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,uBAAU;AACN,WAAKW,WAAL,CAAiBR,4CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,uBAAU;AACN,WAAKQ,WAAL,CAAiBL,4CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,wBAAW;AACP,WAAKK,WAAL,CAAiBV,6CAAjB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,wBAAW;AACP,WAAKU,WAAL,CAAiBT,6CAAjB;AACA,aAAO,IAAP;AACH;;;;AAGD;AACJ;AACA;AACA;AACA;AACA;AACI,sBAAS;AACL,WAAKS,WAAL,CAAiBP,2CAAjB;AACA,aAAO,IAAP;AACH;;;;EA7IiB7iB;;AAmJtBtB,gEAAiB,CAAC,iBAAD,EAAoBskB,OAApB,CAAjB;;;;;;;;;;;;;;;ACtLa;AAEb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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CA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA,8CAA8C;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AAEa;;AAEb;AACA;AACA;AACA;AACA;CAGA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,IAAII,QAAJ;;AACA,IAAI;AACAA,EAAAA,QAAQ,GAAGhoB,yEAAA,CAA8B,qBAA9B,CAAX;AACH,CAFD,CAEE,OAAOyB,CAAP,EAAU,CAEX;;AAED,IAAI,CAACumB,QAAL,EAAeA,QAAQ,GAAG,SAAX;AAEfhoB,mEAAA,GAA0BgoB,QAA1B,IAAsChoB,mDAAtC","sources":["webpack:///webpack/universalModuleDefinition","webpack:///../../../../packages/monster/source/constants.js","webpack:///../../../../packages/monster/source/namespace.js","webpack:///../../../../packages/monster/source/constraints/abstract.js","webpack:///../../../../packages/monster/source/types/base.js","webpack:///../../../../packages/monster/source/constraints/abstractoperator.js","webpack:///../../../../packages/monster/source/constraints/andoperator.js","webpack:///../../../../packages/monster/source/constraints/invalid.js","webpack:///../../../../packages/monster/source/constraints/isarray.js","webpack:///../../../../packages/monster/source/types/is.js","webpack:///../../../../packages/monster/source/constraints/isobject.js","webpack:///../../../../packages/monster/source/constraints/oroperator.js","webpack:///../../../../packages/monster/source/constraints/valid.js","webpack:///../../../../packages/monster/source/data/buildmap.js","webpack:///../../../../packages/monster/source/types/validate.js","webpack:///../../../../packages/monster/source/util/clone.js","webpack:///../../../../packages/monster/source/types/global.js","webpack:///../../../../packages/monster/source/data/pathfinder.js","webpack:///../../../../packages/monster/source/types/stack.js","webpack:///../../../../packages/monster/source/data/diff.js","webpack:///../../../../packages/monster/source/types/typeof.js","webpack:///../../../../packages/monster/source/data/extend.js","webpack:///../../../../packages/monster/source/data/pipe.js","webpack:///../../../../packages/monster/source/data/transformer.js","webpack:///../../../../packages/monster/source/types/id.js","webpack:///../../../../packages/monster/source/dom/assembler.js","webpack:///../../../../packages/monster/source/types/proxyobserver.js","webpack:///../../../../packages/monster/source/types/observer.js","webpack:///../../../../packages/monster/source/types/tokenlist.js","webpack:///../../../../packages/monster/source/types/uniquequeue.js","webpack:///../../../../packages/monster/source/types/queue.js","webpack:///../../../../packages/monster/source/types/observerlist.js","webpack:///../../../../packages/monster/source/dom/attributes.js","webpack:///../../../../packages/monster/source/dom/constants.js","webpack:///../../../../packages/monster/source/dom/customcontrol.js","webpack:///../../../../packages/monster/source/dom/customelement.js","webpack:///../../../../packages/monster/source/dom/template.js","webpack:///../../../../packages/monster/source/dom/theme.js","webpack:///../../../../packages/monster/source/dom/updater.js","webpack:///../../../../packages/monster/source/dom/util.js","webpack:///../../../../packages/monster/source/dom/events.js","webpack:///../../../../packages/monster/source/dom/locale.js","webpack:///../../../../packages/monster/source/i18n/locale.js","webpack:///../../../../packages/monster/source/i18n/provider.js","webpack:///../../../../packages/monster/source/types/basewithoptions.js","webpack:///../../../../packages/monster/source/i18n/translations.js","webpack:///../../../../packages/monster/source/i18n/providers/fetch.js","webpack:///../../../../packages/monster/source/text/formatter.js","webpack:///../../../../packages/monster/source/logging/handler.js","webpack:///../../../../packages/monster/source/logging/logentry.js","webpack:///../../../../packages/monster/source/logging/logger.js","webpack:///../../../../packages/monster/source/logging/handler/console.js","webpack:///../../../../packages/monster/source/math/random.js","webpack:///../../../../packages/monster/source/types/randomid.js","webpack:///../../../../packages/monster/source/types/version.js","webpack:///../../../../packages/monster/source/util/comparator.js","webpack:///../../../../packages/monster/source/util/freeze.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///../../../../packages/monster/source/monster.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"window\"] = factory();\n\telse\n\t\troot[\"window\"] = factory();\n})(self, function() {\nreturn ","'use strict';\n\nimport {Monster} from './namespace.js';\n/**\n * Property-Keys\n * @author schukai GmbH\n */\n\n/**\n * formerly known as PROPERTY_KEY_OPTIONS\n *\n * @memberOf Monster\n * @type {string}\n * @since 1.15.0\n */\nconst PROPERTY_KEY_INTERNALDATA = 'monsterInternalData';\n\n\nexport {\n Monster,\n PROPERTY_KEY_INTERNALDATA\n}","'use strict';\n\n/**\n * Main namespace for Monster.\n *\n * @namespace Monster\n * @author schukai GmbH\n */\n\n\n/**\n * namespace class objects form the basic framework of the namespace administration.\n *\n * all functions, classes and objects of the library hang within the namespace tree.\n *\n * via `obj instanceof Monster.Namespace` it is also easy to check whether it is an object or a namespace.\n *\n * @memberOf Monster\n * @copyright schukai GmbH\n * @since 1.0.0\n */\nclass Namespace {\n\n /**\n *\n * @param namespace\n * @param obj\n */\n constructor(namespace) {\n if (namespace === undefined || typeof namespace !== 'string') {\n throw new Error(\"namespace is not a string\")\n }\n this.namespace = namespace;\n }\n\n /**\n *\n * @returns {string}\n */\n getNamespace() {\n return this.namespace;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.getNamespace();\n }\n}\n\n/**\n * @type {Namespace}\n * @global\n */\nexport const Monster = new Namespace(\"Monster\");\n\n/**\n * To expand monster, the `Monster.assignToNamespace()` method can be used.\n *\n * you must call the method in the monster namespace. this allows you to mount your own classes, objects and functions into the namespace.\n *\n * To avoid confusion and so that you do not accidentally overwrite existing functions, you should use the custom namespace `X`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/namespace.js';\n * function hello() {\n * console.log('Hello World!');\n * }\n * Monster.assignToNamespace(\"Monster.X\", hello)\n * Monster.X.hello(); // ↦ Hello World!\n * </script>\n *\n * ```\n *\n * @param {string} ns\n * @param {function} obj\n * @return {current}\n * @memberOf Monster\n * @throws {Error} no functions have been passed.\n * @throws {Error} the name of the class or function cannot be resolved.\n * @throws {Error} the first argument is not a function or class.\n * @throws {Error} exception\n * @since 1.0.0\n */\nfunction assignToNamespace(ns, ...obj) {\n let current = namespaceFor(ns.split(\".\"));\n\n if (obj.length === 0) {\n throw new Error('no functions have been passed.');\n }\n\n for (let i = 0, l = obj.length; i < l; i++) {\n current[objectName(obj[i])] = obj[i];\n }\n\n return current\n}\n\n/**\n *\n * @param {class|function} fn\n * @returns {string}\n * @private\n * @throws {Error} the name of the class or function cannot be resolved.\n * @throws {Error} the first argument is not a function or class.\n * @throws {Error} exception\n */\nfunction objectName(fn) {\n try {\n\n if (typeof fn !== 'function') {\n throw new Error(\"the first argument is not a function or class.\");\n }\n\n if (fn.hasOwnProperty('name')) {\n return fn.name;\n }\n\n if (\"function\" === typeof fn.toString) {\n let s = fn.toString();\n let f = s.match(/^\\s*function\\s+([^\\s(]+)/);\n if (Array.isArray(f) && typeof f[1] === 'string') {\n return f[1];\n }\n let c = s.match(/^\\s*class\\s+([^\\s(]+)/);\n if (Array.isArray(c) && typeof c[1] === 'string') {\n return c[1];\n }\n }\n\n } catch (e) {\n throw new Error(\"exception \" + e);\n }\n\n throw new Error(\"the name of the class or function cannot be resolved.\");\n}\n\n/**\n *\n * @param parts\n * @returns {Namespace}\n * @private\n */\nfunction namespaceFor(parts) {\n let space = Monster, ns = 'Monster';\n\n for (let i = 0; i < parts.length; i++) {\n\n if (\"Monster\" === parts[i]) {\n continue;\n }\n\n ns += '.' + parts[i];\n\n if (!space.hasOwnProperty(parts[i])) {\n space[parts[i]] = new Namespace(ns);\n }\n\n space = space[parts[i]];\n }\n\n return space;\n}\n\n\nassignToNamespace('Monster', assignToNamespace, Namespace);\nexport {assignToNamespace}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\n\n\n/**\n * The abstract constraint defines the api for all constraints. mainly the method isValid() is defined.\n *\n * derived classes must implement the method isValid().\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass AbstractConstraint extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n }\n\n /**\n * this method must return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n return Promise.reject(value);\n }\n}\n\nassignToNamespace('Monster.Constraints', AbstractConstraint);\nexport {Monster, AbstractConstraint}","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\n\n/**\n * This is the base class from which all monster classes are derived.\n *\n * You can call the method via the monster namespace `new Monster.Types.Base()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/base.js';\n * console.log(new Monster.Types.Base())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Base} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/base.js';\n * console.log(new Base())\n * </script>\n * ```\n *\n * The class was formerly called Object.\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Base extends Object {\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return JSON.stringify(this);\n };\n\n\n}\n\nassignToNamespace('Monster.Types', Base);\nexport {Monster, Base}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * Operators allow you to link constraints together. for example, you can check whether a value is an object or an array. each operator has two operands that are linked together.\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass AbstractOperator extends AbstractConstraint {\n\n /**\n *\n * @param {AbstractConstraint} operantA\n * @param {AbstractConstraint} operantB\n * @throws {TypeError} \"parameters must be from type AbstractConstraint\"\n */\n constructor(operantA, operantB) {\n super();\n\n if (!(operantA instanceof AbstractConstraint) || !(operantB instanceof AbstractConstraint)) {\n throw new TypeError(\"parameters must be from type AbstractConstraint\")\n }\n\n this.operantA = operantA;\n this.operantB = operantB;\n\n }\n\n\n}\n\nassignToNamespace('Monster.Constraints', AbstractOperator);\nexport {Monster, AbstractOperator}","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractOperator} from \"./abstractoperator.js\";\n\n/**\n * The AndOperator is used to link several contraints. The constraint is fulfilled if all constraints of the operators are fulfilled.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/andoperator.js';\n * new Monster.Constraint.AndOperator();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/andoperator.js';\n * new AndOperator();\n * </script>\n * ```\n *\n * @example\n *\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/valid.js';\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/invalid.js';\n * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/andoperator.js';\n *\n * new AndOperator(\n * new Valid(), new Valid()).isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ true\n *\n * new AndOperator(\n * new Invalid(), new Valid()).isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ false\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass AndOperator extends AbstractOperator {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n return Promise.all([this.operantA.isValid(value), this.operantB.isValid(value)]);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', AndOperator);\nexport {Monster, AndOperator}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * The invalid constraint allows an always invalid query to be performed. this constraint is mainly intended for testing.\n *\n * You can call the method via the monster namespace `new Monster.Constraint.Invalid()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/invalid.js';\n * new Monster.Constraint.Invalid();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/invalid.js';\n * new Invalid();\n * </script>\n * ```\n *\n * @example\n *\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/invalid.js';\n *\n * new Invalid().isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ false\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass Invalid extends AbstractConstraint {\n\n /**\n * this method return a rejected promise\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n return Promise.reject(value);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', Invalid);\nexport {Monster, Invalid}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isArray} from \"../types/is.js\";\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * You can call the method via the monster namespace `new Monster.Constraint.IsObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/isarray.js';\n * console.log(new Monster.Constraint.IsArray())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/isarray.js';\n * console.log(new IsArray())\n * </script>\n * ```\n *\n * @example\n *\n * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/isarray.js';\n *\n * new IsArray()\n * .isValid([])\n * .then(()=>console.log(true));\n * // ↦ true\n *\n * new IsArray()\n * .isValid(99)\n * .catch(e=>console.log(e));\n * // ↦ 99\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass IsArray extends AbstractConstraint {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n if (isArray(value)) {\n return Promise.resolve(value);\n }\n\n return Promise.reject(value);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', IsArray);\nexport {Monster, IsArray}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\n\n/**\n * With this function you can check if a value is iterable\n *\n * You can call the method via the monster namespace `Monster.Types.isPrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isIterable(null)) // ↦ false\n * console.log(Monster.Types.isIterable('hello')) // ↦ true\n * console.log(Monster.Types.isIterable([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isIterable(null)) // ↦ false\n * console.log(isIterable('hello')) // ↦ true\n * console.log(isIterable([])) // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isIterable(value) {\n if (value === undefined) return false;\n if (value === null) return false;\n return typeof value?.[Symbol.iterator] === 'function';\n}\n\n\n/**\n * Checks whether the value passed is a primitive (string, number, boolean, NaN, undefined, null or symbol)\n *\n * You can call the method via the monster namespace `Monster.Types.isPrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isPrimitive('2')) // ↦ false\n * console.log(Monster.Types.isPrimitive([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isPrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isPrimitive('2')) // ↦ true\n * console.log(isPrimitive([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isPrimitive(value) {\n var type;\n\n if (value === undefined || value === null || value === NaN) {\n return true;\n }\n\n type = typeof value;\n\n if (type === 'string' || type === 'number' || type === 'boolean' || type === 'symbol') {\n return true;\n }\n\n return false;\n}\n\n/**\n * Checks whether the value passed is a symbol\n *\n * You can call the method via the monster namespace `Monster.Types.isSymbol()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isSymbol('2')) // ↦ false\n * console.log(Monster.Types.isSymbol(Symbol('test')) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isSymbol} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isSymbol(Symbol('a'))) // ↦ true\n * console.log(isSymbol([]) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isSymbol(value) {\n return ('symbol' === typeof value) ? true : false;\n}\n\n/**\n * Checks whether the value passed is a boolean\n *\n * You can call the method via the monster namespace `Monster.Types.isBoolean()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isBoolean('2')) // ↦ false\n * console.log(Monster.Types.isBoolean([])) // ↦ false\n * console.log(Monster.Types.isBoolean(true)) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isBoolean('2')) // ↦ false\n * console.log(isBoolean([])) // ↦ false\n * console.log(isBoolean(2>4)) // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isBoolean(value) {\n\n if (value === true || value === false) {\n return true;\n }\n\n return false;\n}\n\n/**\n * checks whether the value passed is a string\n *\n * you can call the method via the monster namespace `Monster.Types.isString()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isString('2')) // ↦ true\n * console.log(Monster.Types.isString([])) // ↦ false\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isString('2')) // ↦ true\n * console.log(isString([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isString(value) {\n if (value === undefined || typeof value !== 'string') {\n return false;\n }\n return true;\n}\n\n/**\n * checks whether the value passed is a object\n *\n * you can call the method via the monster namespace `Monster.Types.isObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isObject('2')) // ↦ false\n * console.log(Monster.Types.isObject([])) // ↦ false\n * console.log(Monster.Types.isObject({})) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isObject('2')) // ↦ false\n * console.log(isObject([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isObject(value) {\n\n if (isArray(value)) return false;\n if (isPrimitive(value)) return false;\n\n if (typeof value === 'object') {\n return true;\n }\n\n return false;\n}\n\n/**\n * checks whether the value passed is a object and instance of instance\n *\n * you can call the method via the monster namespace `Monster.Types.isInstance()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isInstance('2')) // ↦ false\n * console.log(Monster.Types.isInstance([])) // ↦ false\n * console.log(Monster.Types.isInstance({})) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isInstance('2')) // ↦ false\n * console.log(isInstance([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @param {*} instance\n * @returns {boolean}\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isInstance(value, instance) {\n\n if (!isObject(value)) return false;\n if (!isFunction(instance)) return false;\n if (!instance.hasOwnProperty('prototype')) return false;\n return (value instanceof instance) ? true : false;\n\n}\n\n/**\n * checks whether the value passed is a array\n *\n * you can call the method via the monster namespace `Monster.Types.isArray()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isArray('2')) // ↦ false\n * console.log(Monster.Types.isArray([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isArray('2')) // ↦ false\n * console.log(isArray([])) // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isArray(value) {\n if (Array.isArray(value)) {\n return true;\n }\n return false;\n}\n\n/**\n * checks whether the value passed is a function\n *\n * you can call the method via the monster namespace `Monster.Types.isFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isFunction(()=>{})) // ↦ true\n * console.log(Monster.Types.isFunction('2')) // ↦ false\n * console.log(Monster.Types.isFunction([])) // ↦ false\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isFunction(()=>{})) // ↦ true\n * console.log(isFunction('2')) // ↦ false\n * console.log(isFunction([])) // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isFunction(value) {\n if (isArray(value)) return false;\n if (isPrimitive(value)) return false;\n\n if (typeof value === 'function') {\n return true;\n }\n\n return false;\n\n}\n\n/**\n * checks whether the value passed is an integer\n *\n * you can call the method via the monster namespace `Monster.Types.isFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(Monster.Types.isInteger(()=>{})) // ↦ true\n * console.log(Monster.Types.isInteger('2')) // ↦ false\n * console.log(Monster.Types.isInteger(2)) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isInteger} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n * console.log(isInteger(()=>{})) // ↦ true\n * console.log(isInteger('2')) // ↦ false\n * console.log(isInteger(2)) // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nfunction isInteger(value) {\n return Number.isInteger(value);\n}\n\n\nassignToNamespace('Monster.Types', isPrimitive, isBoolean, isString, isObject, isArray, isFunction, isIterable, isInteger, isSymbol);\nexport {\n Monster,\n isPrimitive,\n isBoolean,\n isString,\n isObject,\n isInstance,\n isArray,\n isFunction,\n isIterable,\n isInteger,\n isSymbol\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isObject} from \"../types/is.js\";\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * You can call the method via the monster namespace `new Monster.Constraint.IsObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/isobject.js';\n * console.log(new Monster.Constraint.IsObject())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/isobject.js';\n * console.log(new IsObject())\n * </script>\n * ```\n *\n * @example\n *\n * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/isobject.js';\n *\n * new IsObject()\n * .isValid({})\n * .then(()=>console.log(true));\n * // ↦ true\n *\n *\n * new IsObject()\n * .isValid(99)\n * .catch(e=>console.log(e));\n * // ↦ 99\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass IsObject extends AbstractConstraint {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n if (isObject(value)) {\n return Promise.resolve(value);\n }\n\n return Promise.reject(value);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', IsObject);\nexport {Monster, IsObject}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractOperator} from \"./abstractoperator.js\";\n\n/**\n * The OrOperator is used to link several constraints. The constraint is fulfilled if one of the constraints is fulfilled.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraint/oroperator.js';\n * new Monster.Constraint.OrOperator();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {OrOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraint/oroperator.js';\n * new OrOperator();\n * </script>\n * ```\n *\n * @example\n *\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/valid.js';\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/invalid.js';\n * import {OrOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/oroperator.js';\n *\n * new OrOperator(\n * new Valid(), new Invalid()).isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ true\n *\n * new OrOperator(\n * new Invalid(), new Invalid()).isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ false\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass OrOperator extends AbstractOperator {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n var self = this;\n\n return new Promise(function (resolve, reject) {\n let a, b;\n\n self.operantA.isValid(value)\n .then(function () {\n resolve();\n }).catch(function () {\n a = false;\n /** b has already been evaluated and was not true */\n if (b === false) {\n reject();\n }\n });\n\n self.operantB.isValid(value)\n .then(function () {\n resolve();\n }).catch(function () {\n b = false;\n /** b has already been evaluated and was not true */\n if (a === false) {\n reject();\n }\n });\n });\n }\n\n\n}\n\nassignToNamespace('Monster.Constraints', OrOperator);\nexport {Monster, OrOperator}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {AbstractConstraint} from \"./abstract.js\";\n\n/**\n * The valid constraint allows an always valid query to be performed. this constraint is mainly intended for testing.\n *\n * You can call the method via the monster namespace `new Monster.Constraint.Valid()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/valid.js';\n * new Monster.Constraint.Valid();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/valid.js';\n * new Valid();\n * </script>\n * ```\n *\n * @example\n *\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/constraints/valid.js';\n *\n * new Valid().isValid()\n * .then(()=>console.log(true))\n * .catch(()=>console.log(false));\n * // ↦ true\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster.Constraints\n */\nclass Valid extends AbstractConstraint {\n\n /**\n * this method return a promise containing the result of the check.\n *\n * @param {*} value\n * @returns {Promise}\n */\n isValid(value) {\n return Promise.resolve(value);\n }\n\n}\n\nassignToNamespace('Monster.Constraints', Valid);\nexport {Monster, Valid}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isFunction, isObject, isString} from \"../types/is.js\";\nimport {validateString} from \"../types/validate.js\";\nimport {clone} from \"../util/clone.js\";\nimport {DELIMITER, Pathfinder, WILDCARD} from \"./pathfinder.js\";\n\n/**\n * With the help of the function `buildMap()`, maps can be easily created from data objects.\n *\n * Either a simple definition `a.b.c` or a template `${a.b.c}` can be specified as the path.\n * Key and value can be either a definition or a template. The key does not have to be defined.\n *\n * You can call the method via the monster namespace `Monster.Data.buildMap()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/buildmap.js';\n * console.log(Monster.Data.buildMap())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/buildmap.js';\n * console.log(buildMap())\n * </script>\n * ```\n * \n * The templates determine the appearance of the keys and the value of the map. Either a single value `id` can be taken or a composite key `${id} ${name}` can be used.\n * \n * If you want to access values of the parent data set, you have to use the `^` character `${id} ${^.name}`.\n *\n * @example\n *\n * import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/buildmap.js';\n * // a typical data structure as reported by an api\n *\n * let map;\n * let obj = {\n * \"data\": [\n * {\n * \"id\": 10,\n * \"name\": \"Cassandra\",\n * \"address\": {\n * \"street\": \"493-4105 Vulputate Street\",\n * \"city\": \"Saumur\",\n * \"zip\": \"52628\"\n * }\n * },\n * {\n * \"id\": 20,\n * \"name\": \"Holly\",\n * \"address\": {\n * \"street\": \"1762 Eget Rd.\",\n * \"city\": \"Schwalbach\",\n * \"zip\": \"952340\"\n * }\n * },\n * {\n * \"id\": 30,\n * \"name\": \"Guy\",\n * \"address\": {\n * \"street\": \"957-388 Sollicitudin Avenue\",\n * \"city\": \"Panchià\",\n * \"zip\": \"420729\"\n * }\n * }\n * ]\n * };\n *\n * // The function is passed this data structure and with the help of the selector `'data.*'` the data to be considered are selected.\n * // The key is given by a simple definition `'id'` and the value is given by a template `'${name} (${address.zip} ${address.city})'`.\n * map = buildMap(obj, 'data.*', '${name} (${address.zip} ${address.city})', 'id');\n * console.log(map);\n *\n * // ↦ Map(3) {\n * // '10' => 'Cassandra (52628 Saumur)',\n * // '20' => 'Holly (952340 Schwalbach)',\n * // '30' => 'Guy (420729 Panchià)'\n * // }\n *\n * // If no key is specified, the key from the selection, here the array index, is taken.\n * map = buildMap(obj, 'data.*', '${name} (${address.zip} ${address.city})');\n * console.log(map);\n *\n * // ↦ Map(3) {\n * // '0' => 'Cassandra (52628 Saumur)',\n * // '1' => 'Holly (952340 Schwalbach)',\n * // '2' => 'Guy (420729 Panchià)'\n * // }\n *\n * // a filter (function(value, key) {}) can be specified to accept only defined entries.\n * map = buildMap(obj, 'data.*', '${name} (${address.zip} ${address.city})', 'id', function (value, key) {\n * return (value['id'] >= 20) ? true : false\n * });\n * console.log(map);\n *\n * // ↦ Map(2) {\n * // 20 => 'Holly (952340 Schwalbach)',\n * // 30 => 'Guy (420729 Panchià)'\n * // }\n *\n * @param {*} subject\n * @param {string|Monster.Data~exampleSelectorCallback} selector\n * @param {string} [valueTemplate]\n * @param {string} [keyTemplate]\n * @param {Monster.Data~exampleFilterCallback} [filter]\n * @return {*}\n * @memberOf Monster.Data\n * @throws {TypeError} value is neither a string nor a function\n * @throws {TypeError} the selector callback must return a map\n */\nfunction buildMap(subject, selector, valueTemplate, keyTemplate, filter) {\n\n const result = new Map\n\n let map;\n if (isFunction(selector)) {\n map = selector(subject)\n if (!(map instanceof Map)) {\n throw new TypeError('the selector callback must return a map');\n }\n } else if (isString(selector)) {\n map = new Map;\n buildFlatMap.call(map, subject, selector);\n } else {\n throw new TypeError('value is neither a string nor a function')\n }\n\n if (!(map instanceof Map)) {\n return result;\n }\n\n\n map.forEach((v, k, m) => {\n if (isFunction(filter)) {\n if (filter.call(m, v, k) !== true) return;\n }\n\n k = build(v, keyTemplate, k);\n v = build(v, valueTemplate);\n\n result.set(k, v);\n });\n\n return result;\n}\n\n/**\n * @private\n * @param subject\n * @param selector\n * @param key\n * @param parentMap\n * @return {*}\n */\nfunction buildFlatMap(subject, selector, key, parentMap) {\n\n const result = this;\n const currentMap = new Map;\n\n const resultLength = result.size;\n\n if (key === undefined) key = [];\n\n let parts = selector.split(DELIMITER);\n let current = \"\", currentPath = [];\n do {\n\n current = parts.shift();\n currentPath.push(current);\n\n if (current === WILDCARD) {\n\n let finder = new Pathfinder(subject);\n let map\n try {\n map = finder.getVia(currentPath.join(DELIMITER));\n } catch (e) {\n let a = e;\n map = new Map();\n }\n\n\n for (const [k, o] of map) {\n\n let copyKey = clone(key);\n\n currentPath.map((a) => {\n copyKey.push((a === WILDCARD) ? k : a)\n })\n\n let kk = copyKey.join(DELIMITER);\n let sub = buildFlatMap.call(result, o, parts.join(DELIMITER), copyKey, o);\n\n if (isObject(sub)) {\n sub['^'] = parentMap;\n }\n\n currentMap.set(kk, sub);\n }\n\n }\n\n\n } while (parts.length > 0);\n\n // no set in child run\n if (resultLength === result.size) {\n for (const [k, o] of currentMap) {\n result.set(k, o);\n }\n }\n\n return subject;\n\n}\n\n\n/**\n * With the help of this filter callback, values can be filtered out. Only if the filter function returns true, the value is taken for the map.\n *\n * @callback Monster.Data~exampleFilterCallback\n * @param {*} value Value\n * @param {string} key Key\n * @memberOf Monster.Data\n * @see Monster.Data.buildMap\n */\n\n/**\n * Alternatively to a string selector a callback can be specified. this must return a map.\n *\n * @example\n * import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/buildmap.js';\n *\n * let obj = {\n * \"data\": [\n * {\n * \"id\": 10,\n * \"name\": \"Cassandra\",\n * \"enrichment\": {\n * variants: [\n * {\n * sku: 1, label: \"XXS\", price: [\n * {vk: '12.12 €'},\n * {vk: '12.12 €'}\n * ]\n * },\n * {\n * sku: 2, label: \"XS\", price: [\n * {vk: '22.12 €'},\n * {vk: '22.12 €'}\n * ]\n * },\n * {\n * sku: 3, label: \"S\", price: [\n * {vk: '32.12 €'},\n * {vk: '32.12 €'}\n * ]\n * },\n * {\n * sku: 4, label: \"L\", price: [\n * {vk: '42.12 €'},\n * {vk: '42.12 €'}\n * ]\n * }\n * ]\n *\n * }\n * },\n * {\n * \"id\": 20,\n * \"name\": \"Yessey!\",\n * \"enrichment\": {\n * variants: [\n * {\n * sku: 1, label: \"XXS\", price: [\n * {vk: '12.12 €'},\n * {vk: '12.12 €'}\n * ]\n * },\n * {\n * sku: 2, label: \"XS\", price: [\n * {vk: '22.12 €'},\n * {vk: '22.12 €'}\n * ]\n * },\n * {\n * sku: 3, label: \"S\", price: [\n * {vk: '32.12 €'},\n * {vk: '32.12 €'}\n * ]\n * },\n * {\n * sku: 4, label: \"L\", price: [\n * {vk: '42.12 €'},\n * {vk: '42.12 €'}\n * ]\n * }\n * ]\n *\n * }\n * }\n * ]\n * };\n *\n * let callback = function (subject) {\n * let m = new Map;\n *\n * for (const [i, b] of Object.entries(subject.data)) {\n *\n * let key1 = i;\n *\n * for (const [j, c] of Object.entries(b.enrichment.variants)) {\n * let key2 = j;\n *\n * for (const [k, d] of Object.entries(c.price)) {\n *\n * let key3 = k;\n *\n * d.name = b.name;\n * d.label = c.label;\n * d.id = [key1, key2, key3].join('.');\n *\n * m.set(d.id, d);\n * }\n *\n * }\n * }\n * return m;\n * }\n *\n * let map = buildMap(obj, callback, '${name} ${vk}', '${id}')\n *\n * // ↦ Map(3) {\n * // \"0.0.0\":\"Cassandra 12.12 €\",\n * // \"0.0.1\":\"Cassandra 12.12 €\",\n * // \"0.1.0\":\"Cassandra 22.12 €\",\n * // \"0.1.1\":\"Cassandra 22.12 €\",\n * // \"0.2.0\":\"Cassandra 32.12 €\",\n * // \"0.2.1\":\"Cassandra 32.12 €\",\n * // \"0.3.0\":\"Cassandra 42.12 €\",\n * // \"0.3.1\":\"Cassandra 42.12 €\",\n * // \"1.0.0\":\"Yessey! 12.12 €\",\n * // \"1.0.1\":\"Yessey! 12.12 €\",\n * // \"1.1.0\":\"Yessey! 22.12 €\",\n * // \"1.1.1\":\"Yessey! 22.12 €\",\n * // \"1.2.0\":\"Yessey! 32.12 €\",\n * // \"1.2.1\":\"Yessey! 32.12 €\",\n * // \"1.3.0\":\"Yessey! 42.12 €\",\n * // \"1.3.1\":\"Yessey! 42.12 €\"\n * // }\n *\n * @callback Monster.Data~exampleSelectorCallback\n * @param {*} subject subject\n * @return Map\n * @since 1.17.0\n * @memberOf Monster.Data\n * @see Monster.Data.buildMap\n */\n\n/**\n * @private\n * @param {*} subject\n * @param {string|undefined} definition\n * @param {*} defaultValue\n * @return {*}\n */\nfunction build(subject, definition, defaultValue) {\n if (definition === undefined) return defaultValue ? defaultValue : subject;\n validateString(definition);\n\n const regexp = /(?<placeholder>\\${(?<path>[a-z\\^A-Z.\\-_0-9]*)})/gm\n const array = [...definition.matchAll(regexp)];\n\n let finder = new Pathfinder(subject);\n\n if (array.length === 0) {\n return finder.getVia(definition);\n }\n\n array.forEach((a) => {\n let groups = a?.['groups'];\n let placeholder = groups?.['placeholder']\n if (placeholder === undefined) return;\n\n let path = groups?.['path']\n\n let v = finder.getVia(path);\n if (v === undefined) v = defaultValue;\n\n definition = definition.replaceAll(placeholder, v);\n\n\n })\n\n return definition;\n\n}\n\n\nassignToNamespace('Monster.Data', buildMap);\nexport {Monster, buildMap}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {\n isArray,\n isBoolean,\n isFunction,\n isInstance,\n isInteger,\n isIterable,\n isObject,\n isPrimitive,\n isString,\n isSymbol\n} from './is.js';\n\n/**\n * This method checks if the type matches the primitive type. this function is identical to isPrimitive() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validatePrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateIterable('2')) // ↦ TypeError\n * console.log(Monster.Types.validateIterable([])) // ↦ value\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateIterable('2')) // ↦ TypeError\n * console.log(validateIterable([])) // ↦ value\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a primitive\n * @see {@link isPrimitive}\n * @see {@link Monster.Types.isPrimitive}\n * @see {@link Monster.Types#isPrimitive}\n */\nfunction validateIterable(value) {\n if (!isIterable(value)) {\n throw new TypeError('value is not iterable')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the primitive type. this function is identical to isPrimitive() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validatePrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validatePrimitive('2')) // ↦ value\n * console.log(Monster.Types.validatePrimitive([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validatePrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validatePrimitive('2')) // ↦ value\n * console.log(validatePrimitive([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a primitive\n * @see {@link isPrimitive}\n * @see {@link Monster.Types.isPrimitive}\n * @see {@link Monster.Types#isPrimitive}\n */\nfunction validatePrimitive(value) {\n if (!isPrimitive(value)) {\n throw new TypeError('value is not a primitive')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the boolean type. this function is identical to isBoolean() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateBoolean()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateBoolean(true)) // ↦ value\n * console.log(Monster.Types.validateBoolean('2')) // ↦ TypeError\n * console.log(Monster.Types.validateBoolean([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateBoolean(false)) // ↦ value\n * console.log(validateBoolean('2')) // ↦ TypeError\n * console.log(validateBoolean([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n\n * @throws {TypeError} value is not primitive\n */\nfunction validateBoolean(value) {\n if (!isBoolean(value)) {\n throw new TypeError('value is not a boolean')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the string type. this function is identical to isString() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateString()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateString('2')) // ↦ value\n * console.log(Monster.Types.validateString([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateString('2')) // ↦ value\n * console.log(validateString([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a string\n */\nfunction validateString(value) {\n if (!isString(value)) {\n throw new TypeError('value is not a string')\n }\n return value\n}\n\n\n/**\n * This method checks if the type matches the object type. this function is identical to isObject() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateObject({})) // ↦ value\n * console.log(Monster.Types.validateObject('2')) // ↦ TypeError\n * console.log(Monster.Types.validateObject([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateObject({})) // ↦ value\n * console.log(validateObject('2')) // ↦ TypeError\n * console.log(validateObject([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a object\n */\nfunction validateObject(value) {\n if (!isObject(value)) {\n throw new TypeError('value is not a object')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the object instance.\n *\n * You can call the method via the monster namespace `Monster.Types.validateInstance()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateInstance({}, Object)) // ↦ value\n * console.log(Monster.Types.validateInstance('2', Object)) // ↦ TypeError\n * console.log(Monster.Types.validateInstance([], Object)) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateInstance({}, Object)) // ↦ value\n * console.log(validateInstance('2', Object)) // ↦ TypeError\n * console.log(validateInstance([], Object)) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not an instance of\n */\nfunction validateInstance(value, instance) {\n if (!isInstance(value, instance)) {\n let n = \"\";\n if (isObject(instance) || isFunction(instance)) {\n n = instance?.['name']\n }\n\n if (n) {\n n = \" \" + n;\n }\n\n throw new TypeError('value is not an instance of' + n)\n }\n return value\n}\n\n/**\n * This method checks if the type matches the array type. this function is identical to isArray() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateArray()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateArray('2')) // ↦ TypeError\n * console.log(Monster.Types.validateArray([])) // ↦ value\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateArray('2')) // ↦ TypeError\n * console.log(validateArray([])) // ↦ value\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not an array\n */\nfunction validateArray(value) {\n if (!isArray(value)) {\n throw new TypeError('value is not an array')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the symbol type. this function is identical to isSymbol() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateSymbol()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateSymbol('2')) // ↦ TypeError\n * console.log(Monster.Types.validateSymbol([])) // ↦ value\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateSymbol} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateSymbol('2')) // ↦ TypeError\n * console.log(validateSymbol()) // ↦ value\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not an symbol\n */\nfunction validateSymbol(value) {\n if (!isSymbol(value)) {\n throw new TypeError('value is not an symbol')\n }\n return value\n}\n\n/**\n * This method checks if the type matches the function type. this function is identical to isFunction() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateFunction(()=>{})) // ↦ value\n * console.log(Monster.Types.validateFunction('2')) // ↦ TypeError\n * console.log(Monster.Types.validateFunction([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateFunction(()=>{})) // ↦ value\n * console.log(validateFunction('2')) // ↦ TypeError\n * console.log(validateFunction([])) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a function\n */\nfunction validateFunction(value) {\n if (!isFunction(value)) {\n throw new TypeError('value is not a function')\n }\n return value\n}\n\n/**\n * This method checks if the type is an integer. this function is identical to isInteger() except that a TypeError is thrown.\n *\n * You can call the method via the monster namespace `Monster.Types.validateInteger()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateInteger(true)) // ↦ TypeError\n * console.log(Monster.Types.validateInteger('2')) // ↦ TypeError\n * console.log(Monster.Types.validateInteger(2)) // ↦ value\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/validate.js';\n * console.log(validateInteger(true)) // ↦ TypeError\n * console.log(validateInteger('2')) // ↦ TypeError\n * console.log(validateInteger(2)) // ↦ value\n * </script>\n * ```\n *\n * @param {*} value\n * @return {*}\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not an integer\n */\nfunction validateInteger(value) {\n if (!isInteger(value)) {\n throw new TypeError('value is not an integer')\n }\n return value\n}\n\nassignToNamespace('Monster.Types', validatePrimitive, validateBoolean, validateString, validateObject, validateArray, validateFunction, validateIterable, validateInteger);\nexport {\n Monster,\n validatePrimitive,\n validateBoolean,\n validateString,\n validateObject,\n validateInstance,\n validateArray,\n validateFunction,\n validateIterable,\n validateInteger,\n validateSymbol\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobal} from '../types/global.js';\nimport {isArray, isFunction, isObject, isPrimitive} from '../types/is.js';\n\n\n/**\n * With this function, objects can be cloned.\n * The entire object tree is run through.\n *\n * Proxy, Element, HTMLDocument and DocumentFragment instances are not cloned.\n * Global objects such as windows are also not cloned,\n *\n * If an object has a method `getClone()`, this method is used to create the clone.\n *\n * You can call the method via the monster namespace `Monster.Util.clone()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/util/clone.js';\n * console.log(Monster.Util.clone({}))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {clone} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/util/clone.js';\n * console.log(clone({}))\n * </script>\n * ```\n *\n * @param {*} obj object to be cloned\n * @returns {*}\n *\n * @since 1.0.0\n * @memberOf Monster.Util\n * @copyright schukai GmbH\n * @throws {Error} unable to clone obj! its type isn't supported.\n */\nfunction clone(obj) {\n\n // typeof null results in 'object'. https://2ality.com/2013/10/typeof-null.html\n if (null === obj) {\n return obj;\n }\n\n // Handle the two simple types, null and undefined\n if (isPrimitive(obj)) {\n return obj;\n }\n\n // Handle the two simple types, null and undefined\n if (isFunction(obj)) {\n return obj;\n }\n\n // Handle Array\n if (isArray(obj)) {\n let copy = [];\n for (var i = 0, len = obj.length; i < len; i++) {\n copy[i] = clone(obj[i]);\n }\n\n return copy;\n }\n\n if (isObject(obj)) {\n\n\n // Handle Date\n if (obj instanceof Date) {\n let copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n\n /** Do not clone DOM nodes */\n if (typeof Element !== 'undefined' && obj instanceof Element) return obj;\n if (typeof HTMLDocument !== 'undefined' && obj instanceof HTMLDocument) return obj;\n if (typeof DocumentFragment !== 'undefined' && obj instanceof DocumentFragment) return obj;\n\n /** Do not clone global objects */\n if (obj === getGlobal()) return obj;\n if (typeof globalContext !== 'undefined' && obj === globalContext) return obj;\n if (typeof window !== 'undefined' && obj === window) return obj;\n if (typeof document !== 'undefined' && obj === document) return obj;\n if (typeof navigator !== 'undefined' && obj === navigator) return obj;\n if (typeof JSON !== 'undefined' && obj === JSON) return obj;\n\n // Handle Proxy-Object\n try {\n // try/catch because possible: TypeError: Function has non-object prototype 'undefined' in instanceof check\n if (obj instanceof Proxy) {\n return obj;\n }\n } catch (e) {\n }\n\n return cloneObject(obj)\n\n }\n\n throw new Error(\"unable to clone obj! its type isn't supported.\");\n}\n\n/**\n *\n * @param {object} obj\n * @returns {object}\n * @private\n */\nfunction cloneObject(obj) {\n var copy;\n\n /** Object has clone method */\n if (typeof obj.hasOwnProperty('getClone') && obj.getClone === 'function') {\n return obj.getClone();\n }\n\n copy = {};\n if (typeof obj.constructor === 'function' &&\n typeof obj.constructor.call === 'function') {\n copy = new obj.constructor();\n }\n\n for (let key in obj) {\n\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n if (Monster.Types.isPrimitive(obj[key])) {\n copy[key] = obj[key];\n continue;\n }\n\n copy[key] = clone(obj[key]);\n }\n\n return copy;\n}\n\nassignToNamespace('Monster.Util', clone);\nexport {Monster, clone}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {validateFunction, validateObject, validateString} from \"./validate.js\";\n\n/**\n * @type {objec}\n * @private\n */\nlet globalReference;\n\n/**\n * @private\n * @throws {Error} unsupported environment.\n */\n(function () {\n\n if (typeof globalThis === 'object') {\n globalReference = globalThis;\n return;\n }\n\n if (typeof self !== 'undefined') {\n globalReference = self;\n return;\n } else if (typeof window !== 'undefined') {\n globalReference = window;\n return;\n }\n\n Object.defineProperty(Object.prototype, '__monster__', {\n get: function () {\n return this;\n },\n configurable: true\n });\n\n if (typeof __monster__ === 'object') {\n __monster__.globalThis = __monster__;\n delete Object.prototype.__monster__;\n\n globalReference = globalThis;\n return;\n }\n\n try {\n globalReference = Function('return this')();\n } catch (e) {\n\n }\n\n throw new Error(\"unsupported environment.\")\n\n\n}());\n\n/**\n * Return globalThis\n *\n * If globalThis is not available, it will be polyfilled\n *\n * @since 1.6.0\n * @memberOf Monster.Types\n * @returns {objec} globalThis\n */\nfunction getGlobal() {\n return globalReference;\n}\n\n/**\n * Return global object or throw Error\n *\n * You can call the method via the monster namespace `Monster.Types.getGlobalObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/global.js';\n * console.log(Monster.Types.getGlobalObject('document')) // ↦ { }\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getGlobalObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/global.js';\n * console.log(getGlobalObject('document')) // ↦ { }\n * </script>\n * ```\n *\n * @since 1.6.0\n * @memberOf Monster.Types\n * @param {string} name\n * @returns {objec}\n * @throws {Error} the object is not defined\n * @throws {TypeError} value is not a object\n * @throws {TypeError} value is not a string\n */\nfunction getGlobalObject(name) {\n validateString(name);\n let o = globalReference?.[name];\n if (typeof o === 'undefined') throw new Error('the object ' + name + ' is not defined');\n validateObject(o);\n return o;\n}\n\n/**\n * Return global function or throw Error\n *\n * You can call the method via the monster namespace `Monster.Types.getGlobalFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/global.js';\n * console.log(Monster.Types.getGlobalFunction('parseInt')) // ↦ f parseInt() { }\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getGlobalFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/global.js';\n * console.log(getGlobalFunction('parseInt')) // ↦ f parseInt() { }\n * </script>\n * ```\n *\n * @since 1.6.0\n * @memberOf Monster.Types\n * @param {string} name\n * @returns {objec}\n * @throws {TypeError} value is not a function\n * @throws {Error} the function is not defined\n * @throws {TypeError} value is not a string\n */\nfunction getGlobalFunction(name) {\n validateString(name);\n let f = globalReference?.[name];\n if (typeof f === 'undefined') throw new Error('the function ' + name + ' is not defined');\n validateFunction(f);\n return f;\n}\n\n\nassignToNamespace('Monster.Types', getGlobal, getGlobalObject, getGlobalFunction);\nexport {Monster, getGlobal, getGlobalObject, getGlobalFunction}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {isArray, isInteger, isObject, isPrimitive} from '../types/is.js';\nimport {Stack} from \"../types/stack.js\";\nimport {validateInteger, validateString} from '../types/validate.js';\n\n/**\n * path separator\n *\n * @private\n * @type {string}\n */\nexport const DELIMITER = '.';\n/**\n * @private\n * @type {string}\n */\nexport const WILDCARD = '*';\n\n/**\n * You can call the method via the monster namespace `new Monster.Data.Pathfinder()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/pathfinder.js';\n * console.log(new Monster.Data.Pathfinder())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/pathfinder.js';\n * console.log(new Pathfinder())\n * </script>\n * ```\n *\n * With the help of the pathfinder, values can be read and written from an object construct.\n *\n * ```\n * new Pathfinder({\n * a: {\n * b: {\n * f: [\n * {\n * g: false,\n * }\n * ],\n * }\n * }\n * }).getVia(\"a.b.f.0.g\"); // ↦ false\n * ```\n *\n * if a value is not present or has the wrong type, a corresponding exception is thrown.\n *\n * ```\n * new Pathfinder({}).getVia(\"a.b.f.0.g\"); // ↦ Error\n * ```\n *\n * The `Pathfinder.exists()` method can be used to check whether access to the path is possible.\n *\n * ```\n * new Pathfinder({}).exists(\"a.b.f.0.g\"); // ↦ false\n * ```\n *\n * pathfinder can also be used to build object structures. to do this, the `Pathfinder.setVia()` method must be used.\n *\n * ```\n * obj = {};\n * new Pathfinder(obj).setVia('a.b.0.c', true); // ↦ {a:{b:[{c:true}]}}\n * ```\n *\n * @example\n *\n * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/pathfinder.js';\n *\n * let value = new Pathfinder({\n * a: {\n * b: {\n * f: [\n * {\n * g: false,\n * }\n * ],\n * }\n * }\n * }).getVia(\"a.b.f.0.g\");\n *\n * console.log(value);\n * // ↦ false\n *\n * try {\n * new Pathfinder({}).getVia(\"a.b.f.0.g\"); \n * } catch(e) {\n * console.log(e.toString());\n * // ↦ Error: the journey is not at its end (b.f.0.g)\n * }\n *\n * @example\n *\n * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/pathfinder.js';\n *\n * let p = new Pathfinder({\n * a: {\n * x: [\n * {c: 1}, {c: 2}\n * ],\n * y: true\n * },\n * b: {\n * x: [\n * {c: 1, d: false}, {c: 2}\n * ],\n * y: true\n * },\n * });\n *\n * let r = p.getVia(\"*.x.*.c\");\n * console.log(r);\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n */\nclass Pathfinder extends Base {\n\n /**\n * @param {array|object|Map|Set} value\n * @since 1.4.0\n * @throws {Error} the parameter must not be a simple type\n **/\n constructor(object) {\n super();\n\n if (isPrimitive(object)) {\n throw new Error('the parameter must not be a simple type');\n }\n\n this.object = object;\n this.wildCard = WILDCARD;\n }\n\n /**\n * set wildcard\n *\n * @param {string} wildcard\n * @return {Pathfinder}\n * @since 1.7.0\n */\n setWildCard(wildcard) {\n validateString(wildcard);\n this.wildCard = wildcard;\n return this;\n }\n\n /**\n *\n * @param {string} path\n * @since 1.4.0\n * @returns {*}\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an integer\n * @throws {Error} unsupported action for this data type\n */\n getVia(path) {\n return getValueViaPath.call(this, this.object, validateString(path));\n }\n\n /**\n *\n * @param {string} path\n * @param {*} value\n * @returns {Pathfinder}\n * @since 1.4.0\n * @throws {TypeError} unsupported type\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an integer\n * @throws {Error} unsupported action for this data type\n */\n setVia(path, value) {\n validateString(path);\n setValueViaPath.call(this, this.object, path, value);\n return this;\n }\n\n /**\n * Delete Via Path\n *\n * @param {string} path\n * @returns {Pathfinder}\n * @since 1.6.0\n * @throws {TypeError} unsupported type\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an integer\n * @throws {Error} unsupported action for this data type\n */\n deleteVia(path) {\n validateString(path);\n deleteValueViaPath.call(this, this.object, path);\n return this;\n }\n\n /**\n *\n * @param {string} path\n * @return {bool}\n * @throws {TypeError} unsupported type\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an integer\n * @since 1.4.0\n */\n exists(path) {\n validateString(path);\n try {\n getValueViaPath.call(this, this.object, path, true);\n return true;\n } catch (e) {\n\n }\n\n return false;\n }\n\n}\n\nassignToNamespace('Monster.Data', Pathfinder);\nexport {Monster, Pathfinder}\n\n/**\n *\n * @param {*} subject\n * @param {string} path\n * @param {string} check\n * @return {Map}\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @private\n */\nfunction iterate(subject, path, check) {\n\n const result = new Map;\n\n if (isObject(subject) || isArray(subject)) {\n for (const [key, value] of Object.entries(subject)) {\n result.set(key, getValueViaPath.call(this, value, path, check))\n }\n } else {\n let key = path.split(DELIMITER).shift();\n result.set(key, getValueViaPath.call(this, subject, path, check));\n }\n\n return result;\n\n\n}\n\n/**\n *\n * @param {*} subject\n * @param [string} path\n * @param [boolean} check \n * @returns {*}\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @private\n */\nfunction getValueViaPath(subject, path, check) {\n\n if (path === \"\") {\n return subject;\n }\n\n let parts = path.split(DELIMITER)\n let current = parts.shift();\n\n if (current === this.wildCard) {\n return iterate.call(this, subject, parts.join(DELIMITER), check);\n }\n\n if (isObject(subject) || isArray(subject)) {\n\n let anchor;\n if (subject instanceof Map || subject instanceof WeakMap) {\n anchor = subject.get(current);\n\n } else if (subject instanceof Set || subject instanceof WeakSet) {\n current = parseInt(current);\n validateInteger(current)\n anchor = [...subject]?.[current];\n\n } else if (typeof WeakRef === 'function' && subject instanceof WeakRef) {\n throw Error('unsupported action for this data type');\n\n } else if (isArray(subject)) {\n current = parseInt(current);\n validateInteger(current)\n anchor = subject?.[current];\n } else {\n anchor = subject?.[current];\n }\n\n if (isObject(anchor) || isArray(anchor)) {\n return getValueViaPath.call(this, anchor, parts.join(DELIMITER), check)\n }\n\n if (parts.length > 0) {\n throw Error(\"the journey is not at its end (\" + parts.join(DELIMITER) + \")\");\n }\n\n if (check === true && !subject.hasOwnProperty(current)) {\n throw Error('unknown value');\n }\n\n return anchor;\n\n }\n\n throw TypeError(\"unsupported type \" + typeof subject)\n\n}\n\n/**\n *\n * @param object\n * @param path\n * @param value\n * @returns {void}\n * @throws {TypeError} unsupported type\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @private\n */\nfunction setValueViaPath(object, path, value) {\n\n validateString(path);\n\n let parts = path.split(DELIMITER)\n let last = parts.pop();\n let subpath = parts.join(DELIMITER);\n\n let stack = new Stack()\n let current = subpath;\n while (true) {\n\n try {\n getValueViaPath.call(this, object, current, true)\n break;\n } catch (e) {\n\n }\n\n stack.push(current);\n parts.pop();\n current = parts.join(DELIMITER);\n\n if (current === \"\") break;\n }\n\n while (!stack.isEmpty()) {\n current = stack.pop();\n let obj = {};\n\n if (!stack.isEmpty()) {\n let n = stack.peek().split(DELIMITER).pop();\n if (isInteger(parseInt(n))) {\n obj = [];\n }\n\n }\n\n setValueViaPath.call(this, object, current, obj);\n }\n\n let anchor = getValueViaPath.call(this, object, subpath);\n\n if (!isObject(object) && !isArray(object)) {\n throw TypeError(\"unsupported type: \" + typeof object);\n }\n\n if (anchor instanceof Map || anchor instanceof WeakMap) {\n anchor.set(last, value);\n } else if (anchor instanceof Set || anchor instanceof WeakSet) {\n anchor.append(value)\n\n } else if (typeof WeakRef === 'function' && anchor instanceof WeakRef) {\n throw Error('unsupported action for this data type');\n\n } else if (isArray(anchor)) {\n last = parseInt(last);\n validateInteger(last)\n assignProperty(anchor, last, value);\n } else {\n assignProperty(anchor, last, value);\n }\n\n\n}\n\n/**\n * @private\n * @param {object} object\n * @param {string} key\n * @param {*} value\n */\nfunction assignProperty(object, key, value) {\n\n if (!object.hasOwnProperty(key)) {\n object[key] = value;\n return;\n }\n\n if (value === undefined) {\n delete object[key];\n }\n\n object[key] = value;\n\n}\n\n/**\n *\n * @param object\n * @param path\n * @returns {void}\n * @throws {TypeError} unsupported type\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @since 1.6.0\n * @private\n */\nfunction deleteValueViaPath(object, path) {\n\n const parts = path.split(DELIMITER)\n let last = parts.pop();\n const subpath = parts.join(DELIMITER);\n\n const anchor = getValueViaPath.call(this, object, subpath);\n\n if (anchor instanceof Map) {\n anchor.delete(last);\n } else if (anchor instanceof Set || anchor instanceof WeakMap || anchor instanceof WeakSet || (typeof WeakRef === 'function' && anchor instanceof WeakRef)) {\n throw Error('unsupported action for this data type');\n\n } else if (isArray(anchor)) {\n last = parseInt(last);\n validateInteger(last)\n delete anchor[last];\n } else {\n delete anchor[last];\n }\n\n\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\n\n/**\n * You can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/stack.js';\n * console.log(new Monster.Types.Stack())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/stack.js';\n * console.log(new Stack())\n * </script>\n * ```\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Stack extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n this.data = [];\n }\n\n\n /**\n * @return {boolean}\n */\n isEmpty() {\n return this.data.length === 0;\n }\n\n /**\n * looks at the object at the top of this stack without removing it from the stack.\n *\n * @return {*}\n */\n peek() {\n if (this.isEmpty()) {\n return undefined;\n }\n\n return this.data?.[this.data.length - 1];\n }\n\n /**\n * pushes an item onto the top of this stack.\n *\n * @param {*} value\n * @returns {Queue}\n */\n push(value) {\n this.data.push(value)\n return this;\n }\n\n /**\n * remove all entries\n *\n * @returns {Queue}\n */\n clear() {\n this.data = [];\n return this;\n }\n\n /**\n * removes the object at the top of this stack and returns\n * that object as the value of this function. is the stack empty\n * the return value is undefined.\n *\n * @return {*}\n */\n pop() {\n if (this.isEmpty()) {\n return undefined;\n }\n return this.data.pop();\n }\n\n\n}\n\nassignToNamespace('Monster.Types', Stack);\nexport {Monster, Stack}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isArray, isObject} from \"../types/is.js\";\nimport {typeOf} from \"../types/typeof.js\";\n\n/**\n * With the diff function you can perform the change of one object to another. The result shows the changes of the second object to the first object.\n *\n * The operator `add` means that something has been added to the second object. `delete` means that something has been deleted from the second object compared to the first object.\n *\n * You can call the method via the monster namespace `Monster.Data.Diff()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/diff.js';\n * console.log(Monster.Data.Diff(a, b))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Diff} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/diff.js';\n * console.log(Diff(a, b))\n * </script>\n * ```\n *\n * @example\n *\n * import {Diff} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/diff.js';\n *\n * // given are two objects x and y.\n *\n * let x = {\n * a: 1,\n * b: \"Hello!\"\n * }\n *\n * let y = {\n * a: 2,\n * c: true\n * }\n *\n * // These two objects can be compared with each other.\n *\n * console.log(Diff(x, y));\n *\n * // the result is then the following\n *\n * //\n * // [\n * // {\n * // operator: 'update',\n * // path: [ 'a' ],\n * // first: { value: 1, type: 'number' },\n * // second: { value: 2, type: 'number' }\n * // },\n * // {\n * // operator: 'delete',\n * // path: [ 'b' ],\n * // first: { value: 'Hello!', type: 'string' }\n * // },\n * // {\n * // operator: 'add',\n * // path: [ 'c' ],\n * // second: { value: true, type: 'boolean' }\n * // }\n * // ]\n *\n * @param {*} first\n * @param {*} second\n * @return {array}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n */\nfunction Diff(first, second) {\n return doDiff(first, second)\n}\n\n/**\n * @private\n * @param a\n * @param b\n * @param type\n * @return {Set<string>|Set<number>}\n */\nfunction getKeys(a, b, type) {\n if (isArray(type)) {\n const keys = a.length > b.length ? new Array(a.length) : new Array(b.length);\n keys.fill(0);\n return new Set(keys.map((_, i) => i));\n }\n\n return new Set(Object.keys(a).concat(Object.keys(b)));\n}\n\n/**\n * @private\n * @param a\n * @param b\n * @param path\n * @param diff\n * @return {array}\n */\nfunction doDiff(a, b, path, diff) {\n\n let typeA = typeOf(a)\n let typeB = typeOf(b)\n\n const currPath = path || [];\n const currDiff = diff || [];\n\n if (typeA === typeB && typeA === 'object') { // array is object too\n\n getKeys(a, b, typeA).forEach((v) => {\n\n if (!(Object.prototype.hasOwnProperty.call(a, v))) {\n currDiff.push(buildResult(a[v], b[v], 'add', currPath.concat(v)));\n } else if (!(Object.prototype.hasOwnProperty.call(b, v))) {\n currDiff.push(buildResult(a[v], b[v], 'delete', currPath.concat(v)));\n } else {\n doDiff(a[v], b[v], currPath.concat(v), currDiff);\n }\n });\n\n } else {\n\n const o = getOperator(a, b, typeA, typeB);\n if (o !== undefined) {\n currDiff.push(buildResult(a, b, o, path));\n }\n\n }\n\n return currDiff;\n\n}\n\n/**\n *\n * @param {*} a\n * @param {*} b\n * @param {string} operator\n * @param {array} path\n * @return {{path: array, operator: string}}\n * @private\n */\nfunction buildResult(a, b, operator, path) {\n\n const result = {\n operator,\n path,\n };\n\n if (operator !== 'add') {\n result.first = {\n value: a,\n type: typeof a\n };\n\n if (isObject(a)) {\n const name = Object.getPrototypeOf(a)?.constructor?.name;\n if (name !== undefined) {\n result.first.instance = name;\n }\n }\n }\n\n if (operator === 'add' || operator === 'update') {\n result.second = {\n value: b,\n type: typeof b\n };\n\n if (isObject(b)) {\n const name = Object.getPrototypeOf(b)?.constructor?.name;\n if (name !== undefined) {\n result.second.instance = name;\n }\n }\n\n }\n\n return result;\n}\n\n/**\n * @private\n * @param {*} a\n * @param {*} b\n * @return {boolean}\n */\nfunction isNotEqual(a, b) {\n\n if (typeof a !== typeof b) {\n return true;\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() !== b.getTime();\n }\n\n return a !== b;\n}\n\n/**\n * @private\n * @param {*} a\n * @param {*} b\n * @return {string|undefined}\n */\nfunction getOperator(a, b) {\n\n /**\n * @type {string|undefined}\n */\n let operator;\n\n /**\n * @type {string}\n */\n let typeA = typeof a;\n\n /**\n * @type {string}\n */\n let typeB = typeof b;\n\n if (typeA === 'undefined' && typeB !== 'undefined') {\n operator = 'add';\n } else if (typeA !== 'undefined' && typeB === 'undefined') {\n operator = 'delete';\n } else if (isNotEqual(a, b)) {\n operator = 'update';\n }\n\n return operator;\n\n}\n\nassignToNamespace('Monster.Data', Diff);\nexport {Monster, Diff}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\n\nimport {assignToNamespace, Monster} from '../namespace.js';\n\n/**\n * The built-in typeof method is known to have some historical weaknesses. This function tries to provide a better and more accurate result.\n *\n * You can call the method via the monster namespace `Monster.Types.typeOf()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/typeof.js';\n * console.log(Monster.Types.typeOf())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/typeof.js';\n * console.log(typeOf())\n * </script>\n * ```\n *\n * @example\n *\n * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/typeof.js';\n *\n * console.log(typeOf(undefined)); // ↦ undefined\n * console.log(typeOf(\"\")); // ↦ string\n * console.log(typeOf(5)); // ↦ number\n * console.log(typeOf({})); // ↦ object\n * console.log(typeOf([])); // ↦ array\n * console.log(typeOf(new Map)); // ↦ map\n * console.log(typeOf(true)); // ↦ boolean\n *\n * @param {*} value\n * @return {string}\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n * @throws {TypeError} value is not a primitive\n */\nfunction typeOf(value) {\n let type = ({}).toString.call(value).match(/\\s([a-zA-Z]+)/)[1];\n if ('Object' === type) {\n const results = (/^(class|function)\\s+(\\w+)/).exec(value.constructor.toString());\n type = (results && results.length > 2) ? results[2] : '';\n }\n return type.toLowerCase();\n}\n\nassignToNamespace('Monster.Types', typeOf);\nexport {\n Monster,\n typeOf\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isArray, isObject} from \"../types/is.js\";\nimport {typeOf} from \"../types/typeof.js\";\n\n/**\n * extend copies all enumerable own properties from one or\n * more source objects to a target object. It returns the modified target object.\n *\n * You can call the method via the monster namespace `Monster.Data.extend()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/extend.js';\n * console.log(Monster.Data.extend(a, b))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {extend} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/extend.js';\n * console.log(extend(a, b))\n * </script>\n * ```\n *\n * @param {object} target\n * @param {object}\n * @return {object}\n * @since 1.10.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n * @throws {Error} unsuported argument\n * @throws {Error} type mismatch\n */\nfunction extend() {\n let o, i;\n\n for (i = 0; i < arguments.length; i++) {\n let a = arguments[i];\n\n if (!(isObject(a) || isArray(a))) {\n throw new Error('unsuported argument ' + JSON.stringify(a));\n }\n\n if (o === undefined) {\n o = a;\n continue;\n }\n\n for (let k in a) {\n\n let v = a?.[k];\n\n if (v === o?.[k]) {\n continue;\n }\n\n if ((isObject(v) || isArray(v))) {\n\n if (o[k] === undefined) {\n if (isArray(v)) {\n o[k] = [];\n } else {\n o[k] = {};\n }\n }\n\n if (typeOf(o[k]) !== typeOf(v)) {\n throw new Error(\"type mismatch: \" + JSON.stringify(o[k]) + \" != \" + JSON.stringify(v));\n }\n\n o[k] = extend(o[k], v);\n\n } else {\n o[k] = v;\n }\n\n }\n }\n\n return o;\n}\n\n\nassignToNamespace('Monster.Data', extend);\nexport {Monster, extend}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateString} from '../types/validate.js';\nimport {Transformer} from './transformer.js';\n\n\nconst DELIMITER = '|';\n\n/**\n * The pipe class makes it possible to combine several processing steps.\n *\n * You can call the method via the monster namespace `new Monster.Data.Pipe()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/pipe.js';\n * console.log(new Monster.Data.Pipe())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/pipe.js';\n * console.log(new Pipe())\n * </script>\n * ```\n *\n * A pipe consists of commands whose input and output are connected with the pipe symbol `|`.\n *\n * With the Pipe, processing steps can be combined. Here, the value of an object is accessed via the pathfinder (path command).\n * the word is then converted to uppercase letters and a prefix Hello is added. the two backslash safe the space char.\n *\n * @example\n * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/pipe.js';\n *\n * let obj = {\n * a: {\n * b: {\n * c: {\n * d: \"world\"\n * }\n * }\n * }\n * }\n *\n * console.log(new Pipe('path:a.b.c.d | toupper | prefix:Hello\\\\ ').run(obj));\n * // ↦ Hello WORLD\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n */\nclass Pipe extends Base {\n\n /**\n *\n * @param {string} pipe a pipe consists of commands whose input and output are connected with the pipe symbol `|`.\n * @throws {TypeError}\n */\n constructor(pipe) {\n super();\n validateString(pipe);\n this.pipe = pipe.split(DELIMITER).map((v) => {\n return new Transformer(v);\n });\n\n\n }\n\n /**\n *\n * @param {string} name\n * @param {function} callback\n * @param {object} context\n * @returns {Transformer}\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not a function\n */\n setCallback(name, callback, context) {\n\n for (const [, t] of Object.entries(this.pipe)) {\n t.setCallback(name, callback, context);\n }\n\n return this;\n }\n\n /**\n * run a pipe\n *\n * @param {*} value\n * @returns {*}\n */\n run(value) {\n return this.pipe.reduce((accumulator, transformer, currentIndex, array) => {\n return transformer.run(accumulator);\n }, value);\n }\n}\n\nassignToNamespace('Monster.Data', Pipe);\nexport {Monster, Pipe}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {getGlobal} from \"../types/global.js\";\nimport {ID} from '../types/id.js';\nimport {isArray, isObject, isString} from '../types/is.js';\nimport {\n validateFunction,\n validateInteger,\n validateObject,\n validatePrimitive,\n validateString\n} from '../types/validate.js';\nimport {clone} from \"../util/clone.js\";\nimport {Pathfinder} from \"./pathfinder.js\";\n\n/**\n * The transformer class is a swiss army knife for manipulating values. especially in combination with the pipe, processing chains can be built up.\n *\n * You can call the method via the monster namespace `new Monster.Data.Transformer()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/transformer.js';\n * console.log(new Monster.Data.Transformer())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/transformer.js';\n * console.log(new Transformer())\n * </script>\n * ```\n *\n * A simple example is the conversion of all characters to lowercase. for this purpose the command tolower must be used.\n *\n * ```\n * let t = new Transformer('tolower').run('ABC'); // ↦ abc\n * ```\n *\n * **all commands**\n *\n * in the following table all commands, parameters and existing aliases are described.\n *\n * | command | parameter | alias | description |\n * |:-------------|:---------------------------|:------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n * | base64 | | | Converts the value to base64 |\n * | call | function,param1:param2:... | | Calling a callback function. The function can be defined in three places: either globally, in the context `addCallback` or in the passed object |\n * | default | | | If the value is undefined the first argument is returned, otherwise the value. (since 1.12.0) |\n * | empty | | | Return empty String \"\" |\n * | fromjson | | | Type conversion from a JSON string (since 1.12.0) |\n * | if | statement1:statement2 | ? | Is the ternary operator, the first parameter is the valid statement, the second is the false part. To use the current value in the queue, you can set the value keyword. On the other hand, if you want to have the static string \"value\", you have to put one backslash \\\\ in front of it and write value. the follow values are true: 'on', true, 'true' |\n * | index | key:default | property, key | Fetches a value from an object, an array, a map or a set |\n * | length | | count | Length of the string or entries of an array or object |\n * | nop | | | Do nothing |\n * | path | path | | The access to an object is done via a Pathfinder object |\n * | plaintext | | plain | All HTML tags are removed (*) |\n * | prefix | text | | Adds a prefix |\n * | rawurlencode | | | URL coding |\n * | static | | none | The Arguments value is used and passed to the value. Special characters \\ <space> and : can be quotet by a preceding \\. |\n * | substring | start:length | | Returns a substring |\n * | suffix | text | | Adds a suffix |\n * | tointeger | | | Type conversion to an integer value |\n * | tojson | | | Type conversion to a JSON string (since 1.8.0) |\n * | tolower | | strtolower, tolowercase | The input value is converted to lowercase letters |\n * | tostring | | | Type conversion to a string |\n * | toupper | | strtoupper, touppercase | The input value is converted to uppercase letters |\n * | trim | | | Remove spaces at the beginning and end |\n * | ucfirst | | | First character large |\n * | ucwords | | | Any word beginning large |\n * | undefined | | | Return undefined |\n * | uniqid | | | Creates a string with a unique value (**) |\n *\n * (*) for this functionality the extension [jsdom](https://www.npmjs.com/package/jsdom) must be loaded in the nodejs context.\n *\n * ```\n * // polyfill\n * if (typeof window !== \"object\") {\n * const {window} = new JSDOM('', {\n * url: 'http://example.com/',\n * pretendToBeVisual: true\n * });\n * \n * [\n * 'self',\n * 'document',\n * 'Node',\n * 'Element',\n * 'HTMLElement',\n * 'DocumentFragment',\n * 'DOMParser',\n * 'XMLSerializer',\n * 'NodeFilter',\n * 'InputEvent',\n * 'CustomEvent'\n * ].forEach(key => (global[key] = window[key]));\n * }\n * ```\n *\n * (**) for this command the crypt library is necessary in the nodejs context.\n *\n * ```\n * import * as Crypto from \"@peculiar/webcrypto\";\n * global['crypto'] = new Crypto.Crypto();\n * ```\n *\n * @example\n *\n * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/data/transformer.js';\n *\n * const transformer = new Transformer(\"tolower\")\n *\n * console.log(transformer.run(\"HELLO\"))\n * // ↦ hello\n *\n * console.log(transformer.run(\"WORLD\"))\n * // ↦ world\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Data\n */\nclass Transformer extends Base {\n /**\n *\n * @param {string} definition\n */\n constructor(definition) {\n super();\n validateString(definition);\n\n this.args = disassemble(definition);\n this.command = this.args.shift()\n this.callbacks = new Map();\n\n }\n\n /**\n *\n * @param {string} name\n * @param {function} callback\n * @param {object} context\n * @returns {Transformer}\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not a function\n */\n setCallback(name, callback, context) {\n validateString(name)\n validateFunction(callback)\n\n if (context !== undefined) {\n validateObject(context);\n }\n\n this.callbacks.set(name, {\n callback: callback,\n context: context,\n });\n\n return this;\n }\n\n /**\n *\n * @param {*} value\n * @returns {*}\n * @throws {Error} unknown command\n * @throws {TypeError} unsupported type\n * @throws {Error} type not supported\n */\n run(value) {\n return transform.apply(this, [value])\n }\n}\n\nassignToNamespace('Monster.Data', Transformer);\nexport {Monster, Transformer}\n\n/**\n *\n * @param {string} command\n * @returns {array}\n * @private\n */\nfunction disassemble(command) {\n\n validateString(command);\n\n let placeholder = new Map;\n const regex = /((?<pattern>\\\\(?<char>.)){1})/mig;\n\n // The separator for args must be quotable\n // undefined string which should not occur normally and is also not a regex\n let result = command.matchAll(regex)\n\n for (let m of result) {\n let g = m?.['groups'];\n if (!isObject(g)) {\n continue;\n }\n\n let p = g?.['pattern'];\n let c = g?.['char'];\n\n if (p && c) {\n let r = '__' + new ID().toString() + '__';\n placeholder.set(r, c);\n command = command.replace(p, r);\n }\n\n }\n let parts = command.split(':');\n\n parts = parts.map(function (value) {\n let v = value.trim();\n for (let k of placeholder) {\n v = v.replace(k[0], k[1]);\n }\n return v;\n\n\n });\n\n return parts\n}\n\n/**\n * tries to make a string out of value and if this succeeds to return it back\n *\n * @param {*} value\n * @returns {string}\n * @private\n */\nfunction convertToString(value) {\n\n if (isObject(value) && value.hasOwnProperty('toString')) {\n value = value.toString();\n }\n\n validateString(value)\n return value;\n}\n\n/**\n *\n * @param {*} value\n * @returns {*}\n * @private\n * @throws {Error} unknown command\n * @throws {TypeError} unsupported type\n * @throws {Error} type not supported\n */\nfunction transform(value) {\n\n let args = clone(this.args);\n let key\n\n switch (this.command) {\n\n case 'static':\n return this.args.join(':');\n\n case 'tolower':\n case 'strtolower':\n case 'tolowercase':\n validateString(value)\n return value.toLowerCase();\n\n case 'toupper':\n case 'strtoupper':\n case 'touppercase':\n validateString(value)\n return value.toUpperCase();\n\n case 'tostring':\n return \"\" + value;\n\n case 'tointeger':\n let n = parseInt(value);\n validateInteger(n);\n return n\n\n case 'tojson':\n return JSON.stringify(value);\n\n case 'fromjson':\n return JSON.parse(value);\n\n case 'trim':\n validateString(value)\n return value.trim();\n\n case 'rawurlencode':\n validateString(value)\n return encodeURIComponent(value)\n .replace(/!/g, '%21')\n .replace(/'/g, '%27')\n .replace(/\\(/g, '%28')\n .replace(/\\)/g, '%29')\n .replace(/\\*/g, '%2A');\n\n\n case 'call':\n\n /**\n * callback-definition\n * function callback(value, ...args) {\n * return value;\n * }\n */\n\n let callback;\n let callbackName = args.shift();\n let context = getGlobal();\n\n if (isObject(value) && value.hasOwnProperty(callbackName)) {\n callback = value[callbackName];\n } else if (this.callbacks.has(callbackName)) {\n let s = this.callbacks.get(callbackName);\n callback = s?.['callback'];\n context = s?.['context'];\n } else if (typeof window === 'object' && window.hasOwnProperty(callbackName)) {\n callback = window[callbackName];\n }\n validateFunction(callback);\n\n args.unshift(value);\n return callback.call(context, ...args);\n\n case 'plain':\n case 'plaintext':\n validateString(value);\n let doc = new DOMParser().parseFromString(value, 'text/html');\n return doc.body.textContent || \"\";\n\n case 'if':\n case '?':\n\n validatePrimitive(value);\n\n let trueStatement = (args.shift() || undefined);\n let falseStatement = (args.shift() || undefined);\n\n if (trueStatement === 'value') {\n trueStatement = value;\n }\n if (trueStatement === '\\\\value') {\n trueStatement = 'value';\n }\n if (falseStatement === 'value') {\n falseStatement = value;\n }\n if (falseStatement === '\\\\value') {\n falseStatement = 'value';\n }\n\n let condition = ((value !== undefined && value !== '' && value !== 'off' && value !== 'false' && value !== false) || value === 'on' || value === 'true' || value === true);\n return condition ? trueStatement : falseStatement;\n\n\n case 'ucfirst':\n validateString(value);\n\n let firstchar = value.charAt(0).toUpperCase();\n return firstchar + value.substr(1);\n case 'ucwords':\n validateString(value);\n\n return value.replace(/^([a-z\\u00E0-\\u00FC])|\\s+([a-z\\u00E0-\\u00FC])/g, function (v) {\n return v.toUpperCase();\n });\n\n case 'count':\n case 'length':\n\n if ((isString(value) || isObject(value) || isArray(value)) && value.hasOwnProperty('length')) {\n return value.length;\n }\n\n throw new TypeError(\"unsupported type \" + typeof value);\n\n case 'base64':\n convertToString(value);\n return btoa(value);\n\n case 'empty':\n return '';\n\n case 'undefined':\n return undefined;\n\n case 'prefix':\n validateString(value);\n let prefix = args?.[0];\n return prefix + value;\n\n case 'suffix':\n validateString(value);\n let suffix = args?.[0];\n return value + suffix;\n\n case 'uniqid':\n return (new ID()).toString();\n\n case 'key':\n case 'property':\n case 'index':\n\n key = (args.shift() || 'undefined');\n let defaultValue = (args.shift() || '');\n\n if (value instanceof Map) {\n if (!value.has(key)) {\n return defaultValue;\n }\n return value.get(key);\n }\n\n if (isObject(value) || isArray(value)) {\n\n if (value?.[key]) {\n return value?.[key];\n }\n\n return defaultValue;\n }\n\n throw new Error(\"type not supported\")\n\n case 'path':\n\n key = (args.shift() || 'undefined');\n return new Pathfinder(value).getVia(key);\n\n\n case 'substring':\n\n validateString(value);\n\n let start = parseInt(args[0]) || 0;\n let end = (parseInt(args[1]) || 0) + start;\n\n return value.substring(start, end);\n\n case 'nop':\n return value;\n\n case 'default':\n if (value !== undefined) {\n return value;\n }\n return args[0];\n\n default:\n throw new Error(\"unknown command \" + this.command)\n }\n\n return value;\n}\n\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {validateString} from \"./validate.js\";\n\n/**\n * @private\n * @type {Map<string, integer>}\n */\nlet internalCounter = new Map;\n\n/**\n * With the id class, sequences of ids can be created. for this purpose, an internal counter is incremented for each prefix.\n * thus, the first id with the prefix `myid` will be `myid1` and the second id `myid2`.\n * The ids are the same for every call, for example on a web page.\n *\n * So the ids can also be used for navigation. you just have to take care that the order stays the same.\n *\n * You can call the method via the monster namespace `new Monster.Types.ID()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/id.js';\n * console.log(new Monster.Types.ID())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/id.js';\n * console.log(new ID())\n * </script>\n * ```\n *\n * As of version 1.6.0 there is the new RandomID. this ID class is continuous from now on.\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass ID extends Base {\n\n /**\n * create new object\n */\n constructor(prefix) {\n super();\n\n if (prefix === undefined) {\n prefix = \"id\";\n }\n\n validateString(prefix);\n\n if (!internalCounter.has(prefix)) {\n internalCounter.set(prefix, 1);\n }\n\n let count = internalCounter.get(prefix);\n this.id = prefix + count;\n\n internalCounter.set(prefix, ++count);\n }\n\n /**\n * @return {string}\n */\n toString() {\n return this.id;\n }\n\n}\n\nassignToNamespace('Monster.Types', ID);\nexport {Monster, ID}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {getGlobalFunction} from \"../types/global.js\";\nimport {ProxyObserver} from \"../types/proxyobserver.js\";\nimport {validateInstance, validateString} from \"../types/validate.js\";\n\n\n/**\n * attribute prefix\n *\n * @type {string}\n * @memberOf Monster.DOM\n */\nconst ATTRIBUTEPREFIX = \"data-monster-\";\n\n/**\n * you can call the method via the monster namespace `new Monster.DOM.Assembler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/assembler.js';\n * console.log(new Monster.DOM.Assembler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Assembler} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/assembler.js';\n * console.log(new Assembler())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass Assembler extends Base {\n\n /**\n * @param {DocumentFragment} fragment\n * @throws {TypeError} value is not an instance of\n * @throws {TypeError} value is not a function\n * @throws {Error} the function is not defined\n */\n constructor(fragment) {\n super();\n this.attributePrefix = ATTRIBUTEPREFIX;\n validateInstance(fragment, getGlobalFunction('DocumentFragment'));\n this.fragment = fragment;\n }\n\n /**\n *\n * @param {string} prefix\n * @returns {Assembler}\n * @throws {TypeError} value is not a string\n */\n setAttributePrefix(prefix) {\n validateString(prefix);\n this.attributePrefix = prefix;\n return this;\n }\n\n /**\n *\n * @returns {string}\n */\n getAttributePrefix() {\n return this.attributePrefix;\n }\n\n /**\n *\n * @param {ProxyObserver|undefined} data\n * @return {DocumentFragment}\n * @throws {TypeError} value is not an instance of\n */\n createDocumentFragment(data) {\n\n if (data === undefined) {\n data = new ProxyObserver({});\n }\n\n validateInstance(data, ProxyObserver);\n let fragment = this.fragment.cloneNode(true);\n return fragment;\n }\n\n}\n\nassignToNamespace('Monster.DOM', Assembler);\nexport {Monster, ATTRIBUTEPREFIX, Assembler}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {isArray, isObject, isPrimitive} from \"./is.js\";\nimport {Observer} from \"./observer.js\";\nimport {ObserverList} from \"./observerlist.js\";\nimport {validateObject} from \"./validate.js\";\n\n/**\n * An observer manages a callback function\n *\n * You can call create the class via the monster namespace `new Monster.Types.ProxyObserver()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/proxyobserver.js';\n * console.log(new Monster.Types.ProxyObserver())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/proxyobserver.js';\n * console.log(new ProxyObserver())\n * </script>\n * ```\n *\n * with the ProxyObserver you can attach observer for observation. with each change at the object to be observed an update takes place.\n *\n * this also applies to nested objects.\n *\n * @example\n *\n * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/proxyobserver.js';\n * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/observer.js';\n * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/is.js';\n *\n * const o = new Observer(function () { \n * if (isObject(this) && this instanceof ProxyObserver) {\n * // do something (this ist ProxyObserver)\n * const subject = this.getSubject();\n * console.log(subject);\n * }\n * });\n *\n * let realSubject = {\n * a: {\n * b: {\n * c: true\n * },\n * d: 9\n * }\n * }\n *\n * const p = new ProxyObserver(realSubject);\n * p.attachObserver(o);\n * const s = p.getSubject();\n * s.a.b.c = false;\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass ProxyObserver extends Base {\n\n /**\n *\n * @param {object} object\n * @throws {TypeError} value is not a object\n */\n constructor(object) {\n super();\n\n this.realSubject = validateObject(object);\n this.subject = new Proxy(object, getHandler.call(this));\n\n this.objectMap = new WeakMap();\n this.objectMap.set(this.realSubject, this.subject);\n\n this.proxyMap = new WeakMap();\n this.proxyMap.set(this.subject, this.realSubject);\n\n this.observers = new ObserverList;\n }\n\n /**\n * get the real object\n *\n * changes to this object are not noticed by the observers, so you can make a large number of changes and inform the observers later.\n *\n * @returns {object}\n */\n getSubject() {\n return this.subject\n }\n\n /**\n * get the proxied object\n *\n * @returns {object}\n */\n getRealSubject() {\n return this.realSubject\n }\n\n /**\n * attach a new observer\n *\n * @param {Observer} observer\n * @returns {ProxyObserver}\n */\n attachObserver(observer) {\n this.observers.attach(observer)\n return this;\n }\n\n /**\n * detach a observer\n *\n * @param {Observer} observer\n * @returns {ProxyObserver}\n */\n detachObserver(observer) {\n this.observers.detach(observer)\n return this;\n }\n\n /**\n * notify all observer\n *\n * @returns {Promise}\n */\n notifyObservers() {\n return this.observers.notify(this);\n }\n\n /**\n * @param {Observer} observer\n * @returns {boolean}\n */\n containsObserver(observer) {\n return this.observers.contains(observer)\n }\n\n}\n\nassignToNamespace('Monster.Types', ProxyObserver);\nexport {Monster, ProxyObserver}\n\n/**\n *\n * @returns {{defineProperty: (function(*=, *=, *=): *), setPrototypeOf: (function(*, *=): boolean), set: (function(*, *, *, *): boolean), get: ((function(*=, *=, *=): (undefined))|*), deleteProperty: ((function(*, *): (boolean))|*)}}\n * @private\n * @see {@link https://gitlab.schukai.com/-/snippets/49}\n */\nfunction getHandler() {\n\n const proxy = this;\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots\n const handler = {\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver\n get: function (target, key, receiver) {\n\n const value = Reflect.get(target, key, receiver);\n\n if (typeof key === \"symbol\") {\n return value;\n }\n\n if (isPrimitive(value)) {\n return value;\n }\n\n // set value as proxy if object or array\n if ((isArray(value) || isObject(value))) {\n if (proxy.objectMap.has(value)) {\n return proxy.objectMap.get(value);\n } else if (proxy.proxyMap.has(value)) {\n return value;\n } else {\n let p = new Proxy(value, handler);\n proxy.objectMap.set(value, p);\n proxy.proxyMap.set(p, value);\n return p;\n }\n\n }\n\n return value;\n\n },\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver \n set: function (target, key, value, receiver) {\n\n if (proxy.proxyMap.has(value)) {\n value = proxy.proxyMap.get(value);\n }\n\n if (proxy.proxyMap.has(target)) {\n target = proxy.proxyMap.get(target);\n }\n\n let current = Reflect.get(target, key, receiver);\n if (proxy.proxyMap.has(current)) {\n current = proxy.proxyMap.get(current);\n }\n\n if (current === value) {\n return true;\n }\n\n let result;\n let descriptor = Reflect.getOwnPropertyDescriptor(target, key);\n\n if (descriptor === undefined) {\n descriptor = {\n writable: true,\n enumerable: true,\n configurable: true\n }\n }\n\n descriptor['value'] = value;\n result = Reflect.defineProperty(target, key, descriptor);\n\n if (typeof key !== \"symbol\") {\n proxy.observers.notify(proxy);\n }\n\n return result;\n },\n\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-delete-p\n deleteProperty: function (target, key) {\n if (key in target) {\n delete target[key];\n\n if (typeof key !== \"symbol\") {\n proxy.observers.notify(proxy);\n }\n\n return true;\n }\n return false;\n },\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc\n defineProperty: function (target, key, descriptor) {\n\n let result = Reflect.defineProperty(target, key, descriptor);\n if (typeof key !== \"symbol\") {\n proxy.observers.notify(proxy);\n }\n return result;\n },\n\n // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v\n setPrototypeOf: function (target, key) {\n let result = Reflect.setPrototypeOf(object1, key);\n\n if (typeof key !== \"symbol\") {\n proxy.observers.notify(proxy);\n }\n\n return result;\n }\n\n };\n\n\n return handler;\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {isObject} from './is.js';\nimport {TokenList} from './tokenlist.js';\nimport {UniqueQueue} from './uniquequeue.js';\n\n/**\n * An observer manages a callback function\n *\n * You can call the method via the monster namespace `new Monster.Types.Observer()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/observer.js';\n * console.log(new Monster.Types.Observer())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/observer.js';\n * console.log(new Observer())\n * </script>\n * ```\n *\n * The update method is called with the subject object as this pointer. For this reason the callback should not\n * be an arrow function, because it gets the this pointer of its own context.\n *\n * ```\n * <script>\n * new Observer(()=>{\n * // this is not subject\n * })\n *\n * new Observer(function() {\n * // this is subject\n * })\n * </script>\n * ```\n *\n * Additional arguments can be passed to the callback. To do this, simply specify them.\n *\n * ```\n * <script>\n * Observer(function(a, b, c) {\n * console.log(a, b, c); // ↦ \"a\", 2, true \n * }, \"a\", 2, true)\n * </script>\n * ```\n *\n * The callback function must have as many parameters as arguments are given.\n *\n * @example\n *\n * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/observer.js';\n *\n * const observer = new Observer(function(a, b, c) {\n * console.log(this, a, b, c); // ↦ \"a\", 2, true \n * }, \"a\", 2, true);\n *\n * observer.update({value:true}).then(()=>{});\n * // ↦ {value: true} \"a\" 2 true\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Observer extends Base {\n\n /**\n *\n * @param {function} callback\n * @param {*} args\n */\n constructor(callback, ...args) {\n super();\n\n if (typeof callback !== 'function') {\n throw new Error(\"observer callback must be a function\")\n }\n\n this.callback = callback;\n this.arguments = args;\n this.tags = new TokenList;\n this.queue = new UniqueQueue();\n }\n\n /**\n *\n * @param {string} tag\n * @returns {Observer}\n */\n addTag(tag) {\n this.tags.add(tag);\n return this;\n }\n\n /**\n *\n * @param {string} tag\n * @returns {Observer}\n */\n removeTag(tag) {\n this.tags.remove(tag);\n return this;\n }\n\n /**\n *\n * @returns {Array}\n */\n getTags() {\n return this.tags.entries()\n }\n\n /**\n *\n * @param {string} tag\n * @returns {boolean}\n */\n hasTag(tag) {\n return this.tags.contains(tag)\n }\n\n /**\n *\n * @param {object} subject\n * @returns {Promise}\n */\n update(subject) {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n if (!isObject(subject)) {\n reject(\"subject must be an object\");\n return;\n }\n\n self.queue.add(subject);\n\n setTimeout(() => {\n\n try {\n // the queue and the settimeout ensure that an object is not \n // informed of the same change more than once.\n if (self.queue.isEmpty()) {\n resolve();\n return;\n }\n\n let s = self.queue.poll();\n let result = self.callback.apply(s, self.arguments);\n\n if (isObject(result) && result instanceof Promise) {\n result.then(resolve).catch(reject);\n return;\n }\n\n resolve(result);\n\n } catch (e) {\n reject(e);\n }\n }, 0)\n\n });\n\n };\n\n}\n\nassignToNamespace('Monster.Types', Observer);\nexport {Monster, Observer}\n\n\n\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {isIterable, isString} from '../types/is.js';\nimport {validateFunction, validateString} from '../types/validate.js';\nimport {Base} from './base.js';\n\n/**\n * A tokenlist allows you to manage tokens (individual character strings such as css classes in an attribute string).\n *\n * The tokenlist offers various functions to manipulate values. For example, you can add, remove or replace a class in a CSS list.\n *\n * You can call the method via the monster namespace `new Monster.Types.TokenList()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/tokenlist.js';\n * console.log(new Monster.Types.TokenList(\"myclass row\"))\n * console.log(new Monster.Types.TokenList(\"myclass row\"))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/tokenlist.js';\n * console.log(new TokenList(\"myclass row\"))\n * console.log(new TokenList(\"myclass row\"))\n * </script>\n * ```\n *\n * This class implements the [iteration protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols).\n *\n * ```\n * console.log(typeof new TokenList(\"myclass row\")[Symbol.iterator]); // \"function\"\n * ```\n *\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass TokenList extends Base {\n\n /**\n *\n * @param {array|string|iteratable} init\n */\n constructor(init) {\n super();\n this.tokens = new Set();\n\n if (typeof init !== \"undefined\") {\n this.add(init);\n }\n\n }\n\n /**\n * Iterator protocol\n *\n * @returns {Symbol.iterator}\n */\n getIterator() {\n return this[Symbol.iterator]();\n }\n\n /**\n * Iterator\n *\n * @returns {{next: ((function(): ({value: *, done: boolean}))|*)}}\n */\n [Symbol.iterator]() {\n // Use a new index for each iterator. This makes multiple\n // iterations over the iterable safe for non-trivial cases,\n // such as use of break or nested looping over the same iterable.\n let index = 0;\n let entries = this.entries()\n\n return {\n next: () => {\n if (index < entries.length) {\n return {value: entries?.[index++], done: false}\n } else {\n return {done: true}\n }\n }\n }\n }\n\n /**\n * Returns true if it contains token, otherwise false\n *\n * ```\n * new TokenList(\"start middle end\").contains('start')); // ↦ true\n * new TokenList(\"start middle end\").contains('end')); // ↦ true\n * new TokenList(\"start middle end\").contains('xyz')); // ↦ false\n * new TokenList(\"start middle end\").contains(['end','start','middle'])); // ↦ true\n * new TokenList(\"start middle end\").contains(['end','start','xyz'])); // ↦ false\n * ```\n *\n * @param {array|string|iteratable} value\n * @returns {boolean}\n */\n contains(value) {\n if (isString(value)) {\n value = value.trim()\n let counter = 0;\n value.split(\" \").forEach(token => {\n if (this.tokens.has(token.trim()) === false) return false;\n counter++\n })\n return counter > 0 ? true : false;\n }\n\n if (isIterable(value)) {\n let counter = 0;\n for (let token of value) {\n validateString(token);\n if (this.tokens.has(token.trim()) === false) return false;\n counter++\n }\n return counter > 0 ? true : false;\n }\n\n return false;\n }\n\n /**\n * add tokens\n *\n * ```\n * new TokenList().add(\"abc xyz\").toString(); // ↦ \"abc xyz\"\n * new TokenList().add([\"abc\",\"xyz\"]).toString(); // ↦ \"abc xyz\"\n * new TokenList().add(undefined); // ↦ add nothing\n * ```\n *\n * @param {array|string|iteratable} value\n * @returns {TokenList}\n * @throws {TypeError} unsupported value\n */\n add(value) {\n if (isString(value)) {\n value.split(\" \").forEach(token => {\n this.tokens.add(token.trim());\n })\n } else if (isIterable(value)) {\n for (let token of value) {\n validateString(token);\n this.tokens.add(token.trim());\n }\n } else if (typeof value !== \"undefined\") {\n throw new TypeError(\"unsupported value\");\n }\n\n return this;\n }\n\n /**\n * remove all tokens\n *\n * @returns {TokenList}\n */\n clear() {\n this.tokens.clear();\n return this;\n }\n\n /**\n * Removes token\n *\n * ```\n * new TokenList(\"abc xyz\").remove(\"xyz\").toString(); // ↦ \"abc\"\n * new TokenList(\"abc xyz\").remove([\"xyz\"]).toString(); // ↦ \"abc\"\n * new TokenList(\"abc xyz\").remove(undefined); // ↦ remove nothing\n * ```\n *\n * @param {array|string|iteratable} value\n * @returns {TokenList}\n * @throws {TypeError} unsupported value\n */\n remove(value) {\n if (isString(value)) {\n value.split(\" \").forEach(token => {\n this.tokens.delete(token.trim());\n })\n } else if (isIterable(value)) {\n for (let token of value) {\n validateString(token);\n this.tokens.delete(token.trim());\n }\n } else if (typeof value !== \"undefined\") {\n throw new TypeError(\"unsupported value\");\n }\n\n return this;\n }\n\n /**\n * this method replaces a token with a new token.\n *\n * if the passed token exists, it is replaced with newToken and TokenList is returned.\n * if the token does not exist, newToken is not set and TokenList is returned.\n *\n * @param {string} token\n * @param {string} newToken\n * @returns {TokenList}\n */\n replace(token, newToken) {\n validateString(token);\n validateString(newToken);\n if (!this.contains(token)) {\n return this;\n }\n\n let a = Array.from(this.tokens)\n let i = a.indexOf(token);\n if (i === -1) return this;\n\n a.splice(i, 1, newToken);\n this.tokens = new Set();\n this.add(a);\n\n return this;\n\n\n }\n\n /**\n * Removes token from string. If token doesn't exist it's added.\n *\n * ```\n * new TokenList(\"abc def ghi\").toggle(\"def xyz\").toString(); // ↦ \"abc ghi xyz\"\n * new TokenList(\"abc def ghi\").toggle([\"abc\",\"xyz\"]).toString(); // ↦ \"def ghi xyz\"\n * new TokenList().toggle(undefined); // ↦ nothing\n * ```\n *\n * @param {array|string|iteratable} value\n * @returns {boolean}\n * @throws {TypeError} unsupported value\n */\n toggle(value) {\n\n if (isString(value)) {\n value.split(\" \").forEach(token => {\n toggleValue.call(this, token);\n })\n } else if (isIterable(value)) {\n for (let token of value) {\n toggleValue.call(this, token);\n }\n } else if (typeof value !== \"undefined\") {\n throw new TypeError(\"unsupported value\");\n }\n\n return this;\n\n }\n\n /**\n * returns an array with all tokens\n *\n * @returns {array}\n */\n entries() {\n return Array.from(this.tokens)\n }\n\n /**\n * executes the provided function with each value of the set\n *\n * @param {function} callback\n * @returns {TokenList}\n */\n forEach(callback) {\n validateFunction(callback);\n this.tokens.forEach(callback);\n return this;\n }\n\n /**\n * returns the individual tokens separated by a blank character\n *\n * @returns {string}\n */\n toString() {\n return this.entries().join(' ');\n }\n\n}\n\n/**\n * @private\n * @param token\n * @returns {toggleValue}\n * @throws {Error} must be called with TokenList.call\n */\nfunction toggleValue(token) {\n if (!(this instanceof TokenList)) throw Error(\"must be called with TokenList.call\")\n validateString(token);\n token = token.trim();\n if (this.contains(token)) {\n this.remove(token);\n return this;\n }\n this.add(token);\n return this;\n}\n\nassignToNamespace('Monster.Types', TokenList);\nexport {Monster, TokenList}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Queue} from \"./queue.js\";\nimport {validateObject} from \"./validate.js\";\n\n/**\n * You can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/uniquequeue.js';\n * console.log(new Monster.Types.UniqueQueue())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/uniquequeue.js';\n * console.log(new UniqueQueue())\n * </script>\n * ```\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass UniqueQueue extends Queue {\n\n /**\n *\n */\n constructor() {\n super();\n this.unique = new WeakSet();\n }\n\n /**\n * Add a new element to the end of the queue.\n *\n * @param {object} value\n * @returns {Queue}\n * @throws {TypeError} value is not a object\n */\n add(value) {\n\n validateObject(value);\n\n if (!this.unique.has(value)) {\n this.unique.add(value);\n super.add(value);\n }\n\n return this;\n }\n\n /**\n * remove all entries\n *\n * @returns {Queue}\n */\n clear() {\n super.clear();\n this.unique = new WeakSet;\n return this;\n }\n\n /**\n * Remove the element at the front of the queue\n * If the queue is empty, return undefined.\n *\n * @return {object}\n */\n poll() {\n\n if (this.isEmpty()) {\n return undefined;\n }\n let value = this.data.shift();\n this.unique.delete(value);\n return value;\n }\n\n\n}\n\nassignToNamespace('Monster.Types', UniqueQueue);\nexport {Monster, UniqueQueue}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\n\n/**\n * You can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/queue.js';\n * console.log(new Monster.Types.Queue())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/queue.js';\n * console.log(new Queue())\n * </script>\n * ```\n *\n * @example\n *\n * import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/queue.js';\n *\n * const queue = new Queue;\n *\n * queue.add(2);\n * queue.add(true);\n * queue.add(\"Hello\");\n * queue.add(4.5);\n *\n * console.log(queue.poll());\n * // ↦ 2\n * console.log(queue.poll());\n * // ↦ true\n * console.log(queue.poll());\n * // ↦ \"Hello\"\n * console.log(queue.poll());\n * // ↦ 4.5\n * console.log(queue.poll());\n * // ↦ undefined\n *\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Queue extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n this.data = [];\n }\n\n\n /**\n * @return {boolean}\n */\n isEmpty() {\n return this.data.length === 0;\n }\n\n /**\n * Read the element at the front of the queue without removing it.\n *\n * @return {*}\n */\n peek() {\n if (this.isEmpty()) {\n return undefined;\n }\n\n return this.data[0];\n }\n\n /**\n * Add a new element to the end of the queue.\n *\n * @param {*} value\n * @returns {Queue}\n */\n add(value) {\n this.data.push(value)\n return this;\n }\n\n /**\n * remove all entries\n *\n * @returns {Queue}\n */\n clear() {\n this.data = [];\n return this;\n }\n\n /**\n * Remove the element at the front of the queue\n * If the queue is empty, return undefined.\n *\n * @return {*}\n */\n poll() {\n if (this.isEmpty()) {\n return undefined;\n }\n return this.data.shift();\n }\n\n\n}\n\nassignToNamespace('Monster.Types', Queue);\nexport {Monster, Queue}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {Observer} from \"./observer.js\";\nimport {validateInstance} from \"./validate.js\";\n\n/**\n * With the help of the ObserverList class, observer can be managed.\n *\n * You can call the method via the monster namespace `new Monster.Types.ObserverList()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/observerlist.js';\n * console.log(new Monster.Types.ObserverList())\n * console.log(new Monster.Types.ObserverList())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/observerlist.js';\n * console.log(ObserverList())\n * console.log(ObserverList())\n * </script>\n * ```\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass ObserverList extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n this.observers = [];\n }\n\n /**\n *\n * @param {Observer} observer\n * @return {ObserverList}\n * @throws {TypeError} value is not an instance of Observer\n */\n attach(observer) {\n validateInstance(observer, Observer)\n\n this.observers.push(observer);\n return this;\n };\n\n /**\n *\n * @param {Observer} observer\n * @return {ObserverList}\n * @throws {TypeError} value is not an instance of Observer\n */\n detach(observer) {\n validateInstance(observer, Observer)\n\n var i = 0, l = this.observers.length;\n for (; i < l; i++) {\n if (this.observers[i] === observer) {\n this.observers.splice(i, 1);\n }\n }\n\n return this;\n };\n\n /**\n *\n * @param {Observer} observer\n * @return {boolean}\n * @throws {TypeError} value is not an instance of Observer\n */\n contains(observer) {\n validateInstance(observer, Observer)\n var i = 0, l = this.observers.length;\n for (; i < l; i++) {\n if (this.observers[i] === observer) {\n return true;\n }\n }\n return false;\n };\n\n /**\n *\n * @param subject\n * @return {Promise}\n */\n notify(subject) {\n\n let pomises = []\n\n var i = 0, l = this.observers.length;\n for (; i < l; i++) {\n pomises.push(this.observers[i].update(subject));\n }\n\n return Promise.all(pomises);\n };\n\n}\n\nassignToNamespace('Monster.Types', ObserverList);\nexport {Monster, ObserverList}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobalFunction} from \"../types/global.js\";\nimport {TokenList} from \"../types/tokenlist.js\";\nimport {validateInstance, validateString, validateSymbol} from \"../types/validate.js\";\nimport {ATTRIBUTE_OBJECTLINK} from \"./constants.js\";\n\n/**\n * get the closest object link of a node\n *\n * if a node is specified without a object link, a recursive search upwards is performed until the corresponding\n * object link is found, or undefined is returned.\n *\n * you can call the method via the monster namespace `Monster.DOM.getUpdaterFromNode()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/updater.js';\n * console.log(Monster.DOM.findClosestObjectLink())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getUpdaterFromNode} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/updater.js';\n * console.log(findClosestObjectLink())\n * </script>\n * ```\n *\n * @param {HTMLElement} element\n * @return {HTMLElement|undefined}\n * @since 1.10.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {TypeError} value is not an instance of HTMLElement\n */\nfunction findClosestObjectLink(element) {\n return findClosestByAttribute(element, ATTRIBUTE_OBJECTLINK);\n}\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.addToObjectLink()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.addToObjectLink();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {addToObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * addToObjectLink();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {Symbol} symbol\n * @param {Object} object\n * @return {boolean}\n */\nfunction addToObjectLink(element, symbol, object) {\n\n validateInstance(element, HTMLElement);\n validateSymbol(symbol)\n\n if (element?.[symbol] === undefined) {\n element[symbol] = new Set;\n }\n\n addAttributeToken(element, ATTRIBUTE_OBJECTLINK, symbol.toString());\n element[symbol].add(object);\n return element;\n\n}\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.removeObjectLink()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.removeObjectLink();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {removeObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * removeObjectLink();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {Symbol} symbol\n * @return {boolean}\n */\nfunction removeObjectLink(element, symbol) {\n\n validateInstance(element, HTMLElement);\n validateSymbol(symbol)\n\n if (element?.[symbol] === undefined) {\n return element\n }\n\n removeAttributeToken(element, ATTRIBUTE_OBJECTLINK, symbol.toString());\n delete element[symbol];\n return element;\n\n}\n\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.hasObjectLink()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.hasObjectLink();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {hasObjectLink} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * hasObjectLink();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {Symbol} symbol\n * @return {boolean}\n */\nfunction hasObjectLink(element, symbol) {\n\n validateInstance(element, HTMLElement);\n validateSymbol(symbol)\n\n if (element?.[symbol] === undefined) {\n return false\n }\n\n return containsAttributeToken(element, ATTRIBUTE_OBJECTLINK, symbol.toString());\n\n}\n\n/**\n * The ObjectLink can be used to attach objects to HTMLElements. The elements are kept in a set under a unique\n * symbol and can be read via an iterator {@see getLinkedObjects}.\n *\n * In addition, elements with an objectLink receive the attribute `data-monster-objectlink`.\n *\n * With the method {@see addToObjectLink} the objects can be added.\n *\n * You can call the method via the monster namespace `new Monster.DOM.getLinkedObjects()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.getLinkedObjects();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getLinkedObjects} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * getLinkedObjects();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {Symbol} symbol\n * @return {Iterator}\n * @throws {Error} there is no object link for symbol\n */\nfunction getLinkedObjects(element, symbol) {\n\n validateInstance(element, HTMLElement);\n validateSymbol(symbol)\n\n if (element?.[symbol] === undefined) {\n throw new Error('there is no object link for ' + symbol.toString());\n }\n\n return element?.[symbol][Symbol.iterator]();\n\n}\n\n\n/**\n * With this method tokens in an attribute can be switched on or off. For example, classes can be switched on and off in the elements class attribute.\n *\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.toggleAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.toggleAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {toggleAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * toggleAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} token\n * @return {HTMLElement}\n */\nfunction toggleAttributeToken(element, key, token) {\n validateInstance(element, HTMLElement);\n validateString(token)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n element.setAttribute(key, token);\n return element;\n }\n\n element.setAttribute(key, new TokenList(element.getAttribute(key)).toggle(token).toString());\n\n return element\n}\n\n/**\n * this method can be used to add a token to an attribute. Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.addAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.addAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {addAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * addAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} token\n * @return {HTMLElement}\n */\nfunction addAttributeToken(element, key, token) {\n validateInstance(element, HTMLElement);\n validateString(token)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n element.setAttribute(key, token);\n return element;\n }\n\n element.setAttribute(key, new TokenList(element.getAttribute(key)).add(token).toString());\n\n return element\n}\n\n/**\n * This function can be used to remove tokens from an attribute.\n *\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.removeAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.removeAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {removeAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * removeAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} token\n * @return {HTMLElement}\n */\nfunction removeAttributeToken(element, key, token) {\n validateInstance(element, HTMLElement);\n validateString(token)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n return element;\n }\n\n element.setAttribute(key, new TokenList(element.getAttribute(key)).remove(token).toString());\n\n return element\n}\n\n/**\n * This method can be used to determine whether an attribute has a token.\n *\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.containsAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.containsAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {containsAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * containsAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} token\n * @return {boolean}\n */\nfunction containsAttributeToken(element, key, token) {\n validateInstance(element, HTMLElement);\n validateString(token)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n return false;\n }\n\n return new TokenList(element.getAttribute(key)).contains(token);\n\n}\n\n/**\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.replaceAttributeToken()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.replaceAttributeToken();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {replaceAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * replaceAttributeToken();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string} from\n * @param {string} to\n * @return {HTMLElement}\n */\nfunction replaceAttributeToken(element, key, from, to) {\n validateInstance(element, HTMLElement);\n validateString(from)\n validateString(to)\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n return element;\n }\n\n element.setAttribute(key, new TokenList(element.getAttribute(key)).replace(from, to).toString());\n\n return element\n}\n\n/**\n * Tokens are always separated by a space.\n *\n * You can call the method via the monster namespace `new Monster.DOM.clearAttributeTokens()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.clearAttributeTokens();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {clearAttributeTokens} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * clearAttributeTokens();\n * </script>\n * ```\n *\n * @since 1.9.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @return {HTMLElement}\n */\nfunction clearAttributeTokens(element, key) {\n validateInstance(element, HTMLElement);\n validateString(key)\n\n if (!element.hasAttribute(key)) {\n return element;\n }\n\n element.setAttribute(key, \"\");\n\n return element\n}\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.findClosestByAttribute()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * Monster.DOM.findClosestByAttribute();\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {findClosestByAttribute} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/attributes.js';\n * findClosestByAttribute();\n * </script>\n * ```\n *\n * @since 1.14.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @param {HTMLElement} element\n * @param {string} key\n * @param {string|undefined} value\n * @return {HTMLElement|undefined}\n */\nfunction findClosestByAttribute(element, key, value) {\n validateInstance(element, getGlobalFunction('HTMLElement'));\n\n if (element.hasAttribute(key) && element.getAttribute(key) === value) {\n return element;\n }\n\n let selector = validateString(key);\n if (value !== undefined) selector += \"=\" + validateString(value);\n let result = element.closest('[' + selector + ']');\n if (result instanceof HTMLElement) {\n return result;\n }\n return undefined;\n}\n\n// exports\nassignToNamespace('Monster.DOM', getLinkedObjects, addToObjectLink, removeObjectLink, findClosestByAttribute, hasObjectLink, clearAttributeTokens, replaceAttributeToken, containsAttributeToken, removeAttributeToken, addAttributeToken, toggleAttributeToken);\nexport {\n Monster,\n addToObjectLink,\n removeObjectLink,\n hasObjectLink,\n findClosestByAttribute,\n clearAttributeTokens,\n replaceAttributeToken,\n containsAttributeToken,\n removeAttributeToken,\n addAttributeToken,\n toggleAttributeToken,\n getLinkedObjects,\n findClosestObjectLink\n}\n","'use strict';\n\nimport {Monster} from '../namespace.js';\n/**\n * @author schukai GmbH\n */\n\n/**\n * @memberOf Monster.DOM\n * @since 1.8.0\n * @type {string}\n */\nconst ATTRIBUTE_PREFIX = 'data-monster-';\n\n/**\n * This is the name of the attribute to pass options to a control\n * \n * @memberOf Monster.DOM\n * @since 1.8.0\n * @type {string}\n */\nconst ATTRIBUTE_OPTIONS = ATTRIBUTE_PREFIX + 'options';\n\n\n/**\n * default theme\n * @memberOf Monster.DOM\n * @type {string}\n */\nconst DEFAULT_THEME = 'monster';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_THEME_PREFIX = ATTRIBUTE_PREFIX + 'theme-';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n */\nconst ATTRIBUTE_THEME_NAME = ATTRIBUTE_THEME_PREFIX + 'name';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_ATTRIBUTES = ATTRIBUTE_PREFIX + 'attributes';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_REPLACE = ATTRIBUTE_PREFIX + 'replace';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_INSERT = ATTRIBUTE_PREFIX + 'insert';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_INSERT_REFERENCE = ATTRIBUTE_PREFIX + 'insert-reference';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.8.0\n */\nconst ATTRIBUTE_UPDATER_REMOVE = ATTRIBUTE_PREFIX + 'remove';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.9.0\n */\nconst ATTRIBUTE_UPDATER_BIND = ATTRIBUTE_PREFIX + 'bind';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.14.0\n */\nconst ATTRIBUTE_ROLE = ATTRIBUTE_PREFIX + 'role';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.9.0\n */\nconst ATTRIBUTE_OBJECTLINK = ATTRIBUTE_PREFIX + 'objectlink';\n\n/**\n * @memberOf Monster.DOM\n * @type {string}\n * @since 1.10.0\n */\nconst OBJECTLINK_KEY_UPDATER = 'monsterUpdater';\n\n\nexport {\n Monster,\n ATTRIBUTE_PREFIX,\n ATTRIBUTE_OPTIONS,\n DEFAULT_THEME,\n ATTRIBUTE_THEME_PREFIX,\n ATTRIBUTE_ROLE,\n ATTRIBUTE_THEME_NAME,\n ATTRIBUTE_UPDATER_ATTRIBUTES,\n ATTRIBUTE_UPDATER_REPLACE,\n ATTRIBUTE_UPDATER_INSERT,\n ATTRIBUTE_UPDATER_INSERT_REFERENCE,\n ATTRIBUTE_UPDATER_REMOVE,\n ATTRIBUTE_UPDATER_BIND,\n ATTRIBUTE_OBJECTLINK,\n OBJECTLINK_KEY_UPDATER\n}","'use strict';\n\nimport {extend} from \"../data/extend.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {CustomElement} from \"./customelement.js\";\n\n\n/**\n * @private\n * @type {symbol}\n */\nconst internalSymbol = Symbol('internalSymbol');\n\n/**\n * To define a new HTML control we need the power of CustomElement\n *\n * IMPORTANT: after defining a `CustomElement`, the `registerCustomElement` method must be called\n * with the new class name. only then will the tag defined via the `getTag` method be made known to the DOM.\n *\n * This control uses `attachInternals()` to integrate the control into a form.\n * If the target environment does not support this method, the [polyfill](https://www.npmjs.com/package/element-internals-polyfill ) can be used.\n *\n * You can create the object via the monster namespace `new Monster.DOM.CustomControl()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/customcontrol.js';\n * console.log(new Monster.DOM.CustomControl())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {CustomControl} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/customcontrol.js';\n * console.log(new CustomControl())\n * </script>\n * ```\n *\n * @summary A base class for customcontrols\n * @see https://www.npmjs.com/package/element-internals-polyfill\n * @see https://github.com/WICG/webcomponents\n * @see https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements\n * @since 1.14.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass CustomControl extends CustomElement {\n\n /**\n * IMPORTANT: CustomControls instances are not created via the constructor, but either via a tag in the HTML or via <code>document.createElement()</code>.\n *\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @summary create new Instance\n */\n constructor() {\n super();\n\n if (typeof this['attachInternals'] === 'function') {\n /**\n * currently only supported by chrome\n * @property {Object}\n * @private\n */\n this[internalSymbol] = this.attachInternals();\n }\n\n }\n\n /**\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals\n * @since 1.14.0\n * @return {boolean}\n */\n static get formAssociated() {\n return true;\n }\n\n /**\n * Derived classes can override and extend this method as follows.\n *\n * ```\n * get defaults() {\n * return extends{}, super.defaults, {\n * myValue:true\n * });\n * }\n * ```\n *\n * @see https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals\n * @return {object}\n * @since 1.14.0\n */\n get defaults() {\n return extend({}, super.defaults);\n }\n\n /**\n * Must be overridden by a derived class and return the value of the control.\n *\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @since 1.14.0\n * @throws {Error} the value getter must be overwritten by the derived class\n */\n get value() {\n throw Error('the value getter must be overwritten by the derived class');\n }\n\n /**\n * Must be overridden by a derived class and return the value of the control.\n *\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @param {*} value\n * @since 1.14.0\n * @throws {Error} the value setter must be overwritten by the derived class\n */\n set value(value) {\n throw Error('the value setter must be overwritten by the derived class');\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {NodeList}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/labels\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get labels() {\n return getInternal.call(this)?.labels;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {string|null}\n */\n get name() {\n return this.getAttribute('name');\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {string}\n */\n get type() {\n return this.constructor.getTag();\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {ValidityState}\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ValidityState\n * @see https://developer.mozilla.org/en-US/docs/Web/API/validity\n */\n get validity() {\n return getInternal.call(this)?.validity;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {string}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/validationMessage\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get validationMessage() {\n return getInternal.call(this)?.validationMessage;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {boolean}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/willValidate\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get willValidate() {\n return getInternal.call(this)?.willValidate;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {CustomStateSet}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/states\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get states() {\n return getInternal.call(this)?.states;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {HTMLFontElement|null}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/form\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n get form() {\n return getInternal.call(this)?.form;\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * ```\n * // Use the control's name as the base name for submitted data\n * const n = this.getAttribute('name');\n * const entries = new FormData();\n * entries.append(n + '-first-name', this.firstName_);\n * entries.append(n + '-last-name', this.lastName_);\n * this.setFormValue(entries);\n * ```\n *\n * @param {File|string|FormData} value\n * @param {File|string|FormData} state\n * @since 1.14.0\n * @return {undefined}\n * @throws {DOMException} NotSupportedError\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/setFormValue\n */\n setFormValue(value, state) {\n getInternal.call(this).setFormValue(value, state);\n }\n\n /**\n *\n * @param {object} flags\n * @param {string|undefined} message\n * @param {HTMLElement} anchor\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/setValidity\n * @since 1.14.0\n * @return {undefined}\n * @throws {DOMException} NotSupportedError\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n setValidity(flags, message, anchor) {\n getInternal.call(this).setValidity(flags, message, anchor);\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/checkValidity\n * @since 1.14.0\n * @return {boolean}\n * @throws {DOMException} NotSupportedError\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n */\n checkValidity() {\n return getInternal.call(this)?.checkValidity();\n }\n\n /**\n * This is a method of [internal api](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)\n *\n * @return {boolean}\n * @since 1.14.0\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/reportValidity\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @throws {DOMException} NotSupportedError\n */\n reportValidity() {\n return getInternal.call(this)?.reportValidity();\n }\n\n}\n\n/**\n * @private\n * @return {object}\n * @throws {Error} the ElementInternals is not supported and a polyfill is necessary\n * @this CustomControl\n */\nfunction getInternal() {\n const self = this;\n\n if (!(internalSymbol in this)) {\n throw new Error('ElementInternals is not supported and a polyfill is necessary');\n }\n\n return this[internalSymbol];\n}\n\nassignToNamespace('Monster.DOM', CustomControl);\nexport {Monster, CustomControl}\n","'use strict';\n\nimport {PROPERTY_KEY_INTERNALDATA} from \"../constants.js\";\nimport {extend} from \"../data/extend.js\";\nimport {Pathfinder} from \"../data/pathfinder.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobalObject} from \"../types/global.js\";\nimport {isArray, isString} from \"../types/is.js\";\nimport {Observer} from \"../types/observer.js\";\nimport {ProxyObserver} from \"../types/proxyobserver.js\";\nimport {validateFunction, validateObject} from \"../types/validate.js\";\nimport {clone} from \"../util/clone.js\";\nimport {addToObjectLink, getLinkedObjects, hasObjectLink} from \"./attributes.js\";\nimport {ATTRIBUTE_OPTIONS, OBJECTLINK_KEY_UPDATER} from \"./constants.js\";\nimport {findDocumentTemplate, Template} from \"./template.js\";\nimport {Updater} from \"./updater.js\";\n\n/**\n * @private\n * @type {symbol}\n */\nconst internalDataSymbol = Symbol.for(PROPERTY_KEY_INTERNALDATA);\n\n/**\n * @private\n * @type {symbol}\n */\nconst objectLinkSymbol = Symbol.for(OBJECTLINK_KEY_UPDATER);\n\n/**\n * @memberOf Monster.DOM\n * @type {symbol}\n */\nconst initMethodSymbol = Symbol('initMethodSymbol');\n\n/**\n * @memberOf Monster.DOM\n * @type {symbol}\n */\nconst assembleMethodSymbol = Symbol('assembleMethodSymbol');\n\n\n/**\n * HTMLElement\n * @external HTMLElement\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement\n */\n\n\n/**\n * To define a new HTML element we need the power of CustomElement\n *\n * IMPORTANT: after defining a `CustomElement`, the `registerCustomElement` method must be called\n * with the new class name. only then will the tag defined via the `getTag` method be made known to the DOM.\n *\n * You can create the object via the monster namespace `new Monster.DOM.CustomElement()`.\n *\n * ```\n * <script type=\"module\">\n * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/customelement.js';\n * console.log(new Monster.DOM.CustomElement())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/customelement.js';\n * console.log(new CustomElement())\n * </script>\n * ```\n *\n * ## Styling\n *\n * For optimal display of custom-elements the pseudo-class :defined can be used.\n *\n * To prevent the custom elements from being displayed and flickering until the control is registered, it is recommended to create a css directive.\n *\n * In the simplest case, you can simply hide the control.\n *\n * ```\n * <style>\n *\n * my-custom-element:not(:defined) {\n * display: none;\n * }\n *\n * my-custom-element:defined {\n * display: flex;\n * }\n *\n * </style>\n * ```\n *\n * Alternatively you can also display a loader\n *\n * ```\n * my-custom-element:not(:defined) {\n * display: flex;\n * box-shadow: 0 4px 10px 0 rgba(33, 33, 33, 0.15);\n * border-radius: 4px;\n * height: 200px;\n * position: relative;\n * overflow: hidden;\n * }\n *\n * my-custom-element:not(:defined)::before {\n * content: '';\n * display: block;\n * position: absolute;\n * left: -150px;\n * top: 0;\n * height: 100%;\n * width: 150px;\n * background: linear-gradient(to right, transparent 0%, #E8E8E8 50%, transparent 100%);\n * animation: load 1s cubic-bezier(0.4, 0.0, 0.2, 1) infinite;\n * }\n *\n * @keyframes load {\n * from {\n * left: -150px;\n * }\n * to {\n * left: 100%;\n * }\n * }\n *\n * my-custom-element:defined {\n * display: flex;\n * }\n * ```\n *\n * @example\n *\n * // In the example the the user can use his own template by creating a template in the DOM with the ID `my-custom-element`.\n * // You can also specify a theme (for example `mytheme`), then it will search for the ID `my-custom-element-mytheme` and\n * // if not available for the ID `my-custom-element`.\n *\n * class MyCustomElement extends CustomElement {\n * \n * static getTag() {\n * return \"my-custom-element\"\n * }\n *\n * }\n *\n * // ↦ <my-custom-element></my-custom-element>\n *\n * @see https://github.com/WICG/webcomponents\n * @see https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @extends external:HTMLElement\n */\nclass CustomElement extends HTMLElement {\n\n /**\n * A new object is created. First the `initOptions` method is called. Here the\n * options can be defined in derived classes. Subsequently, the shadowRoot is initialized.\n *\n * @throws {Error} the options attribute does not contain a valid json definition.\n * @since 1.7.0\n */\n constructor() {\n super();\n this[internalDataSymbol] = new ProxyObserver({'options': extend({}, this.defaults, getOptionsFromAttributes.call(this))});\n initOptionObserver.call(this);\n this[initMethodSymbol]();\n }\n\n /**\n * This method determines which attributes are to be monitored by `attributeChangedCallback()`.\n *\n * @return {string[]}\n * @since 1.15.0\n */\n static get observedAttributes() {\n return [ATTRIBUTE_OPTIONS];\n }\n\n /**\n *\n * Derived classes can override and extend this method as follows.\n *\n * ```\n * get defaults() {\n * return Object.assign({}, super.defaults, {\n * myValue:true\n * });\n * }\n * ```\n *\n * @property {string} shadowMode=open `open` Elements of the shadow root are accessible from JavaScript outside the root, for example using. `close` Denies access to the node(s) of a closed shadow root from JavaScript outside it\n * @property {Boolean} delegatesFocus=true A boolean that, when set to true, specifies behavior that mitigates custom element issues around focusability. When a non-focusable part of the shadow DOM is clicked, the first focusable part is given focus, and the shadow host is given any available :focus styling.\n * @property {Object} templates Templates\n * @property {string} templates.main=undefined Main template\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow\n * @return {{shadowMode: string, delegatesFocus: boolean}}\n * @since 1.8.0\n */\n get defaults() {\n return {\n shadowMode: 'open',\n delegatesFocus: true,\n templates: {\n main: undefined\n }\n };\n }\n\n /**\n * There is no check on the name by this class. the developer is responsible for assigning an appropriate tag.\n * if the name is not valid, registerCustomElement() will issue an error\n *\n * @link https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * @return {string}\n * @throws {Error} the method getTag must be overwritten by the derived class.\n * @since 1.7.0\n */\n static getTag() {\n throw new Error(\"the method getTag must be overwritten by the derived class.\");\n }\n\n /**\n * At this point a `CSSStyleSheet` object can be returned. If the environment does not\n * support a constructor, then an object can also be built using the following detour.\n *\n * If `undefined` is returned then the shadowRoot does not get a stylesheet.\n *\n * ```\n * const doc = document.implementation.createHTMLDocument('title');\n *\n * let style = doc.createElement(\"style\");\n * style.innerHTML=\"p{color:red;}\";\n *\n * // WebKit Hack\n * style.appendChild(document.createTextNode(\"\"));\n * // Add the <style> element to the page\n * doc.head.appendChild(style);\n * return doc.styleSheets[0];\n * ;\n * ```\n *\n * @return {CSSStyleSheet|undefined}\n */\n static getCSSStyleSheet() {\n return undefined;\n }\n\n /**\n * attach a new observer\n *\n * @param {Observer} observer\n * @returns {CustomElement}\n */\n attachObserver(observer) {\n this[internalDataSymbol].attachObserver(observer)\n return this;\n }\n\n /**\n * detach a observer\n *\n * @param {Observer} observer\n * @returns {CustomElement}\n */\n detachObserver(observer) {\n this[internalDataSymbol].detachObserver(observer)\n return this;\n }\n\n /**\n * @param {Observer} observer\n * @returns {ProxyObserver}\n */\n containsObserver(observer) {\n return this[internalDataSymbol].containsObserver(observer)\n }\n\n /**\n * nested options can be specified by path `a.b.c`\n *\n * @param {string} path\n * @param {*} defaultValue\n * @return {*}\n * @since 1.10.0\n */\n getOption(path, defaultValue) {\n let value;\n\n try {\n value = new Pathfinder(this[internalDataSymbol].getRealSubject()['options']).getVia(path);\n } catch (e) {\n\n }\n\n if (value === undefined) return defaultValue;\n return value;\n }\n\n /**\n * Set option and inform elements\n *\n * @param {string} path\n * @param {*} value\n * @return {CustomElement}\n * @since 1.14.0\n */\n setOption(path, value) {\n new Pathfinder(this[internalDataSymbol].getSubject()['options']).setVia(path, value);\n return this;\n }\n\n /**\n * @since 1.15.0\n * @param {string|object} options\n * @return {CustomElement}\n */\n setOptions(options) {\n\n if (isString(options)) {\n options = parseOptionsJSON(options)\n }\n\n const self = this;\n extend(self[internalDataSymbol].getSubject()['options'], self.defaults, options);\n\n return self;\n }\n\n /**\n *\n * @return {CustomElement}\n * @since 1.8.0\n */\n [initMethodSymbol]() {\n return this;\n }\n\n /**\n *\n * @return {CustomElement}\n * @since 1.8.0\n */\n [assembleMethodSymbol]() {\n\n const self = this;\n let elements;\n\n if (this.getOption('shadowMode', false) !== false) {\n try {\n initShadowRoot.call(this);\n elements = this.shadowRoot.childNodes;\n } catch (e) {\n\n }\n try {\n initCSSStylesheet.call(this);\n } catch (e) {\n\n }\n }\n\n if (!(elements instanceof NodeList)) {\n initHtmlContent.call(this);\n elements = this.childNodes;\n }\n\n const updater = new Set;\n addToObjectLink(this, objectLinkSymbol, updater);\n\n for (const [, element] of Object.entries(elements)) {\n\n if (!(element instanceof HTMLElement)) continue;\n if ((element instanceof HTMLTemplateElement)) continue;\n const u = new Updater(element, clone(self[internalDataSymbol].getRealSubject()['options']))\n updater.add(u);\n\n u.run().then(() => {\n u.enableEventProcessing();\n });\n\n }\n\n return this;\n }\n\n /**\n * Called every time the element is inserted into the DOM. Useful for running setup code, such as\n * fetching resources or rendering. Generally, you should try to delay work until this time.\n *\n * @return {void}\n * @since 1.7.0\n */\n connectedCallback() {\n let self = this;\n if (!hasObjectLink(self, objectLinkSymbol)) {\n self[assembleMethodSymbol]()\n }\n }\n\n /**\n * Called every time the element is removed from the DOM. Useful for running clean up code.\n *\n * @return {void}\n * @since 1.7.0\n */\n disconnectedCallback() {\n\n }\n\n /**\n * The custom element has been moved into a new document (e.g. someone called document.adoptNode(el)).\n *\n * @return {void}\n * @since 1.7.0\n */\n adoptedCallback() {\n\n }\n\n /**\n * Called when an observed attribute has been added, removed, updated, or replaced. Also called for initial\n * values when an element is created by the parser, or upgraded. Note: only attributes listed in the observedAttributes\n * property will receive this callback.\n *\n * @param {string} attrName\n * @param {string} oldVal\n * @param {string} newVal\n * @return {void}\n * @since 1.15.0\n */\n attributeChangedCallback(attrName, oldVal, newVal) {\n const self = this;\n\n if (attrName === ATTRIBUTE_OPTIONS) {\n self.setOptions(newVal);\n }\n\n }\n\n}\n\n/**\n * @since 1.15.0\n * @private\n * @this CustomElement\n */\nfunction initOptionObserver() {\n const self = this;\n\n self.attachObserver(new Observer(function () {\n\n // not initialised\n if (!hasObjectLink(self, Symbol.for(OBJECTLINK_KEY_UPDATER))) {\n return;\n }\n // inform every element\n const updaters = getLinkedObjects(self, Symbol.for(OBJECTLINK_KEY_UPDATER));\n\n for (const list of updaters) {\n for (const updater of list) {\n let d = clone(self[internalDataSymbol].getRealSubject()['options']);\n Object.assign(updater.getSubject(), d);\n }\n }\n\n }));\n\n}\n\n/**\n * @private\n * @return {object}\n * @throws {Error} the options attribute does not contain a valid json definition.\n */\nfunction getOptionsFromAttributes() {\n if (this.hasAttribute(ATTRIBUTE_OPTIONS)) {\n try {\n return parseOptionsJSON(this.getAttribute(ATTRIBUTE_OPTIONS))\n } catch (e) {\n throw new Error('the options attribute ' + ATTRIBUTE_OPTIONS + ' does not contain a valid json definition (actual: ' + this.getAttribute(ATTRIBUTE_OPTIONS) + ').');\n }\n }\n\n return {};\n}\n\n\nfunction parseOptionsJSON(data) {\n if (isString(data)) {\n try {\n let obj = JSON.parse(data);\n validateObject(obj);\n return obj;\n } catch (e) {\n throw new Error('the options does not contain a valid json definition (actual: ' + data + ').');\n }\n }\n\n return {};\n}\n\n/**\n * @private\n * @return {initHtmlContent}\n */\nfunction initHtmlContent() {\n\n try {\n let template = findDocumentTemplate(this.constructor.getTag());\n this.appendChild(template.createDocumentFragment());\n } catch (e) {\n\n let html = this.getOption('templates.main', '');\n if (isString(html) && html.length > 0) {\n this.innerHTML = html;\n }\n\n }\n\n return this;\n\n}\n\n/**\n * @private\n * @return {CustomElement}\n * @memberOf Monster.DOM\n * @this CustomElement\n * @since 1.16.0\n */\nfunction initCSSStylesheet() {\n const self = this;\n\n if (!(this.shadowRoot instanceof ShadowRoot)) {\n return self;\n }\n\n const styleSheet = this.constructor.getCSSStyleSheet();\n if (styleSheet instanceof CSSStyleSheet) {\n this.shadowRoot.adoptedStyleSheets = [styleSheet];\n } else if (isArray(styleSheet)) {\n this.shadowRoot.adoptedStyleSheets = styleSheet;\n } else if (isString(styleSheet)) {\n const style = self.shadowRoot.createElement('<style>')\n style.innerText = styleSheet;\n this.shadowRoot.adoptedStyleSheets = styleSheet;\n }\n\n return self;\n\n}\n\n/**\n * @private\n * @return {CustomElement}\n * @throws {Error} html is not set.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow\n * @memberOf Monster.DOM\n * @since 1.8.0\n */\nfunction initShadowRoot() {\n\n let template, html;\n\n try {\n template = findDocumentTemplate(this.constructor.getTag());\n } catch (e) {\n\n html = this.getOption('templates.main', '');\n if (!isString(html) || html === undefined || html === \"\") {\n throw new Error(\"html is not set.\");\n }\n\n }\n\n this.attachShadow({\n mode: this.getOption('shadowMode', 'open'),\n delegatesFocus: this.getOption('delegatesFocus', true)\n });\n\n if (template instanceof Template) {\n this.shadowRoot.appendChild(template.createDocumentFragment());\n return this;\n }\n\n this.shadowRoot.innerHTML = html;\n return this;\n}\n\n/**\n * This method registers a new element. The string returned by `CustomElement.getTag()` is used as the tag.\n *\n * @param {CustomElement} element\n * @return {void}\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {DOMException} Failed to execute 'define' on 'CustomElementRegistry': is not a valid custom element name\n */\nfunction registerCustomElement(element) {\n validateFunction(element);\n getGlobalObject('customElements').define(element.getTag(), element);\n}\n\nassignToNamespace('Monster.DOM', CustomElement, registerCustomElement);\nexport {Monster, registerCustomElement, CustomElement, initMethodSymbol, assembleMethodSymbol}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {getGlobalFunction, getGlobalObject} from '../types/global.js';\nimport {validateInstance, validateString} from \"../types/validate.js\";\nimport {getDocumentTheme} from \"./theme.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.DOM.Template()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/template.js';\n * console.log(new Monster.DOM.Template())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Template} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/template.js';\n * console.log(new Template())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass Template extends Base {\n /**\n *\n * @param {HTMLTemplateElement} template\n * @throws {TypeError} value is not an instance of\n * @throws {TypeError} value is not a function\n * @throws {Error} the function is not defined\n */\n constructor(template) {\n super();\n const HTMLTemplateElement = getGlobalFunction('HTMLTemplateElement');\n validateInstance(template, HTMLTemplateElement);\n this.template = template;\n }\n\n /**\n *\n * @returns {HTMLTemplateElement}\n */\n getTemplateElement() {\n return this.template;\n }\n\n /**\n *\n * @return {DocumentFragment}\n * @throws {TypeError} value is not an instance of\n */\n createDocumentFragment() {\n return this.template.content.cloneNode(true);\n }\n\n}\n\n/**\n *\n *\n * you can call the method via the monster namespace `Monster.DOM.findDocumentTemplate()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/template.js';\n * console.log(Monster.DOM.findDocumentTemplate())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {findTemplate} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/template.js';\n * console.log(findDocumentTemplate())\n * </script>\n * ```\n *\n * @param {string} id\n * @param {Node} currentNode\n * @return {Template}\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} template id not found.\n * @throws {TypeError} value is not a string\n */\nfunction findDocumentTemplate(id, currentNode) {\n validateString(id);\n\n if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {\n\n if (currentNode instanceof Node) {\n currentNode = currentNode.getRootNode();\n\n if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {\n currentNode = currentNode.ownerDocument;\n }\n\n }\n\n if (!(currentNode instanceof Document || currentNode instanceof DocumentFragment)) {\n currentNode = getGlobalObject('document');\n }\n }\n\n const HTMLTemplateElement = getGlobalFunction('HTMLTemplateElement');\n\n let theme = getDocumentTheme()\n let themedID = id + '-' + theme.getName();\n\n let template = currentNode.getElementById(themedID);\n if (template instanceof HTMLTemplateElement) {\n return new Template(template);\n }\n\n template = currentNode.getElementById(id);\n if (template instanceof HTMLTemplateElement) {\n return new Template(template);\n }\n\n if (currentNode !== getGlobalObject('document')) {\n return findDocumentTemplate(id)\n }\n\n throw new Error(\"template \" + id + \" not found.\")\n}\n\n\nassignToNamespace('Monster.DOM', Template, findDocumentTemplate);\nexport {Monster, Template, findDocumentTemplate}\n\n\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {getGlobalObject} from '../types/global.js';\nimport {validateString} from \"../types/validate.js\";\nimport {ATTRIBUTE_THEME_NAME, DEFAULT_THEME} from \"./constants.js\";\n\n\n/**\n * You can call the method via the monster namespace `new Monster.DOM.Theme()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/theme.js';\n * console.log(new Monster.DOM.Theme())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Theme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/theme.js';\n * console.log(new Theme())\n * </script>\n * ```\n *\n * @example\n *\n * import {getDocumentTheme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/theme.js';\n *\n * const theme = getDocumentTheme();\n * console.log(theme.getName());\n * // ↦ monster\n *\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass Theme extends Base {\n\n /**\n *\n * @param name\n * @throws {TypeError} value is not a string\n */\n constructor(name) {\n super();\n validateString(name);\n this.name = name;\n }\n\n /**\n *\n * @returns {string}\n */\n getName() {\n return this.name;\n }\n\n}\n\n/**\n * The theming used in the document can be defined via the html-tag.\n * The theming is specified via the attribute `data-monster-theme-name`.\n *\n * As name for a theme all characters are valid, which are also allowed for a HTMLElement-ID.\n *\n * ```\n * <html data-monster-theme-name=\"my-theme\">\n * ```\n *\n * the default theme name is `monster`.\n *\n * @return {Theme}\n * @memberOf Monster.DOM\n * @since 1.7.0\n */\nfunction getDocumentTheme() {\n let document = getGlobalObject('document');\n let name = DEFAULT_THEME;\n\n let element = document.querySelector('html');\n if (element instanceof HTMLElement) {\n let theme = element.getAttribute(ATTRIBUTE_THEME_NAME);\n if (theme) {\n name = theme;\n }\n }\n\n return new Theme(name);\n\n}\n\nassignToNamespace('Monster.DOM', Theme, getDocumentTheme);\nexport {Monster, Theme, getDocumentTheme}\n","'use strict';\n\nimport {Diff} from \"../data/diff.js\";\nimport {Pathfinder} from \"../data/pathfinder.js\";\nimport {Pipe} from \"../data/pipe.js\";\nimport {\n ATTRIBUTE_UPDATER_ATTRIBUTES,\n ATTRIBUTE_UPDATER_BIND,\n ATTRIBUTE_UPDATER_INSERT,\n ATTRIBUTE_UPDATER_INSERT_REFERENCE,\n ATTRIBUTE_UPDATER_REMOVE,\n ATTRIBUTE_UPDATER_REPLACE\n} from \"../dom/constants.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"../types/base.js\";\nimport {isArray, isInstance, isIterable} from \"../types/is.js\";\nimport {Observer} from \"../types/observer.js\";\nimport {ProxyObserver} from \"../types/proxyobserver.js\";\nimport {validateArray, validateInstance} from \"../types/validate.js\";\nimport {clone} from \"../util/clone.js\";\nimport {findDocumentTemplate} from \"./template.js\";\nimport {getDocument} from \"./util.js\";\n\n\n/**\n * The updater class connects an object with the dom. in this way, structures and contents in the DOM can be programmatically adapted via attributes.\n *\n * For example, to include a string from an object, the attribute `data-monster-replace` can be used.\n *\n * you can call the method via the monster namespace `new Monster.DOM.Updater()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/updater.js';\n * console.log(new Monster.DOM.Updater())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/updater.js';\n * console.log(new Updater())\n * </script>\n * ```\n *\n * @example\n *\n * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/updater.js';\n *\n * // First we prepare the html document.\n * // This is done here via script, but can also be inserted into the document as pure html.\n * // To do this, simply insert the tag <h1 data-monster-replace=\"path:headline\"></h1>.\n * const body = document.querySelector('body');\n * const headline = document.createElement('h1');\n * headline.setAttribute('data-monster-replace','path:headline')\n * body.appendChild(headline);\n *\n * // the data structure\n * let obj = {\n * headline: \"Hello World\",\n * };\n *\n * // Now comes the real magic. we pass the updater the parent HTMLElement\n * // and the desired data structure.\n * const updater = new Updater(body, obj);\n * updater.run();\n *\n * // Now you can change the data structure and the HTML will follow these changes.\n * const subject = updater.getSubject();\n * subject['headline'] = \"Hello World!\"\n *\n * @since 1.8.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} the value is not iterable\n * @throws {Error} pipes are not allowed when cloning a node.\n * @throws {Error} no template was found with the specified key.\n * @throws {Error} the maximum depth for the recursion is reached.\n * @throws {TypeError} value is not a object\n * @throws {TypeError} value is not an instance of HTMLElement\n */\nclass Updater extends Base {\n\n /**\n * @since 1.8.0\n * @param {HTMLElement} element\n * @param {object|ProxyObserver|undefined} subject\n * @throws {TypeError} value is not a object\n * @throws {TypeError} value is not an instance of HTMLElement\n */\n constructor(element, subject) {\n super();\n\n /**\n * @type {HTMLElement}\n */\n this.element = validateInstance(element, HTMLElement);\n\n if (subject === undefined) subject = {}\n let a = subject;\n if (!isInstance(subject, ProxyObserver)) {\n subject = new ProxyObserver(subject);\n }\n\n this.last = {};\n this.callbacks = new Map();\n this.callbacks.set('checkstate', getCheckStateCallback.call(this));\n\n /**\n * @type {object}\n */\n this.subject = subject.attachObserver(new Observer(() => {\n\n const s = this.subject.getRealSubject();\n\n const diff = Diff(this.last, s)\n this.last = clone(s);\n\n for (const [, change] of Object.entries(diff)) {\n removeElement.call(this, change);\n insertElement.call(this, change);\n updateContent.call(this, change);\n updateAttributes.call(this, change);\n }\n }));\n\n this.eventTypes = ['keyup', 'click', 'change', 'drop', 'touchend', 'input'];\n\n }\n\n /**\n * Defaults: 'keyup', 'click', 'change', 'drop', 'touchend'\n *\n * @see https://developer.mozilla.org/de/docs/Web/Events\n * @since 1.9.0\n * @param {Array} types\n * @return {Updater}\n */\n setEventTypes(types) {\n this.eventTypes = validateArray(types);\n return this;\n }\n\n /**\n *\n * @since 1.9.0\n * @return {Updater}\n */\n enableEventProcessing() {\n this.disableEventProcessing();\n\n for (const type of this.eventTypes) {\n this.element.addEventListener(type, getControlEventHandler.call(this));\n }\n\n return this;\n\n }\n\n /**\n *\n * @since 1.9.0\n * @return {Updater}\n */\n disableEventProcessing() {\n\n for (const type of this.eventTypes) {\n this.element.removeEventListener(type, getControlEventHandler.call(this));\n }\n\n return this;\n\n }\n\n // /**\n // * \n // * @param {string} path\n // * @param {*} value\n // * @param {boolean} notifyAnyway\n // * @return {Updater}\n // * @since 1.15.0\n // */\n // setVia(path, value, notifyAnyway) {\n // if(isBoolean(notifyAnyway)&&notifyAnyway===true) {\n // // the key __init__has no further meaning and is only \n // // used to create the diff for empty objects.\n // new Pathfinder(this.last).setVia(path, {'__init__': true});\n // \n // }\n //\n // new Pathfinder(this.subject.getSubject()).setVia(path, value);\n // return this;\n // }\n\n /**\n * Let the magic begin\n *\n * The run method must be called for the update to start working.\n *\n * @return {Promise}\n */\n run() {\n // the key __init__has no further meaning and is only \n // used to create the diff for empty objects.\n this.last = {'__init__': true};\n return this.subject.notifyObservers();\n }\n\n /**\n * If you have passed a ProxyObserver in the constructor, you will get the same object here.\n * However, if you have passed a simple object, you will get the ProxyObserver here.\n *\n * For changes the ProxyObserver must be used.\n *\n * @since 1.8.0\n * @return {ProxyObserver}\n */\n getSubject() {\n return this.subject.getSubject();\n }\n\n /**\n * This method can be used to register commands that can be called via call: instruction.\n * This can be used to provide a pipe with its own functionality.\n *\n * @param {string} name\n * @param {function} callback\n * @returns {Transformer}\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not a function\n */\n setCallback(name, callback) {\n this.callbacks.set(name, callback);\n return this;\n }\n\n}\n\n/**\n * @private\n * @since 1.9.0\n * @return {function\n * @this Updater\n */\nfunction getCheckStateCallback() {\n const self = this;\n\n return function (current) {\n\n if (this instanceof HTMLInputElement) {\n if (['radio', 'checkbox'].indexOf(this.type) !== -1) {\n return (this.value + \"\" === current + \"\") ? 'true' : undefined\n }\n } else if (this instanceof HTMLOptionElement) {\n\n if (isArray(current) && current.indexOf(this.value) !== -1) {\n return 'true'\n }\n return undefined;\n\n\n }\n }\n}\n\n/**\n * @private\n */\nconst symbol = Symbol('EventHandler');\n\n/**\n * @private\n * @return {function}\n * @this Updater\n */\nfunction getControlEventHandler() {\n\n const self = this;\n\n if (self[symbol]) {\n return self[symbol];\n }\n\n const pathfinder = new Pathfinder(this.subject.getSubject());\n\n /**\n * @throws {Error} the bind argument must start as a value with a path.\n * @throws {Error} unsupported object\n * @param {Event} event\n */\n self[symbol] = (event) => {\n const element = event.target;\n\n if (!element.hasAttribute(ATTRIBUTE_UPDATER_BIND)) {\n return;\n }\n\n let path = element.getAttribute(ATTRIBUTE_UPDATER_BIND);\n\n if (path.indexOf('path:') !== 0) {\n throw new Error('the bind argument must start as a value with a path.');\n }\n\n path = path.substr(5);\n\n let value;\n\n if (element instanceof HTMLInputElement) {\n switch (element.type) {\n\n case 'checkbox':\n value = element.checked ? element.value : undefined;\n break;\n default:\n value = element.value;\n break;\n\n\n }\n } else if (element instanceof HTMLTextAreaElement) {\n value = element.value;\n\n } else if (element instanceof HTMLSelectElement) {\n\n switch (element.type) {\n case 'select-one':\n value = element.value;\n break;\n case 'select-multiple':\n value = element.value;\n\n let options = element?.selectedOptions;\n if (options === undefined) options = element.querySelectorAll(\":scope option:checked\");\n value = Array.from(options).map(({value}) => value);\n\n break;\n }\n\n\n // values from customelements \n } else if ((element?.constructor?.prototype && !!Object.getOwnPropertyDescriptor(element.constructor.prototype, 'value')?.['get']) || element.hasOwnProperty('value')) {\n value = element?.['value'];\n } else {\n throw new Error(\"unsupported object\");\n }\n\n const copy = clone(self.subject.getRealSubject());\n const pf = new Pathfinder(copy);\n pf.setVia(path, value);\n\n const diff = new Diff(copy, self.subject.getRealSubject());\n\n if (diff.length > 0) {\n pathfinder.setVia(path, value);\n }\n\n }\n\n return self[symbol];\n\n\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {object} change\n * @return {void}\n */\nfunction removeElement(change) {\n for (const [, element] of this.element.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_REMOVE + ']').entries()) {\n element.parentNode.removeChild(element);\n }\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {object} change\n * @return {void}\n * @throws {Error} the value is not iterable\n * @throws {Error} pipes are not allowed when cloning a node.\n * @throws {Error} no template was found with the specified key.\n * @throws {Error} the maximum depth for the recursion is reached.\n * @this Updater\n */\nfunction insertElement(change) {\n const self = this;\n const subject = self.subject.getRealSubject();\n const document = getDocument();\n\n let mem = new WeakSet;\n let wd = 0;\n\n\n while (true) {\n let found = false;\n wd++;\n\n let p = clone(change?.['path']);\n if (!isArray(p)) return this;\n\n while (p.length > 0) {\n const current = p.join('.');\n const list = this.element.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_INSERT + '*=\"path:' + current + '\"]').entries()\n\n for (const [, containerElement] of list) {\n\n if (mem.has(containerElement)) continue;\n mem.add(containerElement)\n\n found = true;\n\n const attributes = containerElement.getAttribute(ATTRIBUTE_UPDATER_INSERT);\n let def = attributes.trim();\n let i = def.indexOf(' ');\n let key = def.substr(0, i).trim();\n let refPrefix = key + '-';\n let cmd = def.substr(i).trim();\n\n // this case is actually excluded by the query but is nevertheless checked again here\n if (cmd.indexOf('|') > 0) {\n throw new Error(\"pipes are not allowed when cloning a node.\");\n }\n\n let pipe = new Pipe(cmd);\n this.callbacks.forEach((f, n) => {\n pipe.setCallback(n, f);\n })\n\n let value = pipe.run(subject)\n let dataPath = cmd.split(':').pop();\n\n let insertPoint;\n if (containerElement.hasChildNodes()) {\n insertPoint = containerElement.lastChild;\n }\n\n if (!isIterable(value)) {\n throw new Error('the value is not iterable');\n }\n\n let available = new Set;\n\n for (const [i, obj] of Object.entries(value)) {\n let ref = refPrefix + i;\n let currentPath = dataPath + \".\" + i;\n\n available.add(ref);\n let refElement = containerElement.querySelector('[' + ATTRIBUTE_UPDATER_INSERT_REFERENCE + '=\"' + ref + '\"]');\n\n if (refElement instanceof HTMLElement) {\n insertPoint = refElement;\n continue;\n }\n\n appendNewDocumentFragment(containerElement, key, ref, currentPath);\n }\n\n let nodes = containerElement.querySelectorAll('[' + ATTRIBUTE_UPDATER_INSERT_REFERENCE + '*=\"' + refPrefix + '\"]');\n for (const [, node] of Object.entries(nodes)) {\n if (!available.has(node.getAttribute(ATTRIBUTE_UPDATER_INSERT_REFERENCE))) {\n containerElement.removeChild(node);\n }\n }\n }\n\n p.pop();\n }\n\n if (found === false) break;\n if (wd++ > 200) {\n throw new Error('the maximum depth for the recursion is reached.');\n }\n\n }\n\n\n}\n\n/**\n *\n * @private\n * @since 1.8.0\n * @param {HTMLElement} container\n * @param {string} key\n * @param {string} ref\n * @param {string} path\n * @throws {Error} no template was found with the specified key.\n */\nfunction appendNewDocumentFragment(container, key, ref, path) {\n\n let template = findDocumentTemplate(key, container);\n\n let nodes = template.createDocumentFragment();\n for (const [, node] of Object.entries(nodes.childNodes)) {\n if (node instanceof HTMLElement) {\n\n applyRecursive(node, key, path);\n node.setAttribute(ATTRIBUTE_UPDATER_INSERT_REFERENCE, ref);\n }\n\n container.appendChild(node);\n }\n}\n\n/**\n * @private\n * @since 1.10.0\n * @param {HTMLElement} node\n * @param {string} key\n * @param {string} path\n * @return {void}\n */\nfunction applyRecursive(node, key, path) {\n\n if (node instanceof HTMLElement) {\n\n if (node.hasAttribute(ATTRIBUTE_UPDATER_REPLACE)) {\n let value = node.getAttribute(ATTRIBUTE_UPDATER_REPLACE);\n node.setAttribute(ATTRIBUTE_UPDATER_REPLACE, value.replace(\"path:\" + key, \"path:\" + path));\n }\n\n if (node.hasAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES)) {\n let value = node.getAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES);\n node.setAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES, value.replace(\"path:\" + key, \"path:\" + path));\n }\n\n for (const [, child] of Object.entries(node.childNodes)) {\n applyRecursive(child, key, path);\n }\n }\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {object} change\n * @return {void}\n * @this Updater\n */\nfunction updateContent(change) {\n const self = this;\n const subject = self.subject.getRealSubject();\n\n let p = clone(change?.['path']);\n runUpdateContent.call(this, this.element, p, subject);\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {HTMLElement} container\n * @param {array} parts\n * @param {object} subject\n * @return {void}\n */\nfunction runUpdateContent(container, parts, subject) {\n if (!isArray(parts)) return;\n parts = clone(parts);\n\n let mem = new WeakSet;\n\n while (parts.length > 0) {\n const current = parts.join('.');\n parts.pop();\n\n // Unfortunately, static data is always changed as well, since it is not possible to react to changes here.\n for (const [, element] of container.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_REPLACE + '^=\"path:' + current + '\"], [' + ATTRIBUTE_UPDATER_REPLACE + '^=\"static:\"]').entries()) {\n\n if (mem.has(element)) continue;\n mem.add(element)\n\n const attributes = element.getAttribute(ATTRIBUTE_UPDATER_REPLACE)\n let cmd = attributes.trim();\n\n let pipe = new Pipe(cmd);\n this.callbacks.forEach((f, n) => {\n pipe.setCallback(n, f);\n })\n\n let value = pipe.run(subject)\n\n if (value instanceof HTMLElement) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n element.addNode(value);\n } else {\n element.innerHTML = value;\n }\n\n }\n }\n\n}\n\n/**\n * @private\n * @since 1.8.0\n * @param {string} path\n * @param {object} change\n * @return {void}\n */\nfunction updateAttributes(change) {\n const subject = this.subject.getRealSubject();\n let p = clone(change?.['path']);\n runUpdateAttributes.call(this, this.element, p, subject);\n}\n\n/**\n * @private\n * @param {HTMLElement} container\n * @param {array} parts\n * @param {object} subject\n * @return {void}\n * @this Updater\n */\nfunction runUpdateAttributes(container, parts, subject) {\n\n const self = this;\n\n if (!isArray(parts)) return;\n parts = clone(parts);\n\n let mem = new WeakSet;\n\n while (parts.length > 0) {\n const current = parts.join('.');\n parts.pop();\n\n for (const [, element] of container.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_ATTRIBUTES + '*=\"path:' + current + '\"]').entries()) {\n\n if (mem.has(element)) continue;\n mem.add(element)\n\n const attributes = element.getAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES)\n\n for (let [, def] of Object.entries(attributes.split(','))) {\n def = def.trim();\n let i = def.indexOf(' ');\n let name = def.substr(0, i).trim();\n let cmd = def.substr(i).trim();\n\n let pipe = new Pipe(cmd);\n\n self.callbacks.forEach((f, n) => {\n pipe.setCallback(n, f, element);\n })\n\n let value = pipe.run(subject)\n\n if (value === undefined) {\n element.removeAttribute(name)\n\n } else if (element.getAttribute(name) !== value) {\n element.setAttribute(name, value);\n }\n\n handleInputControlAttributeUpdate.call(this, element, name, value);\n\n\n }\n }\n\n }\n\n}\n\n/**\n * @private\n * @param {HTMLElement|*} element\n * @param {string} name\n * @param {string|number|undefined} value\n * @return {void}\n * @this Updater\n */\n\nfunction handleInputControlAttributeUpdate(element, name, value) {\n const self = this;\n\n if (element instanceof HTMLSelectElement) {\n\n\n switch (element.type) {\n case 'select-multiple':\n\n for (const [index, opt] of Object.entries(element.options)) {\n if (value.indexOf(opt.value) !== -1) {\n opt.selected = true;\n } else {\n opt.selected = false;\n }\n }\n\n break;\n case 'select-one':\n // Only one value may be selected\n\n for (const [index, opt] of Object.entries(element.options)) {\n if (opt.value === value) {\n element.selectedIndex = index;\n break;\n }\n }\n\n break;\n }\n\n\n } else if (element instanceof HTMLInputElement) {\n switch (element.type) {\n\n case 'radio':\n if (name === 'checked' && value !== undefined) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n\n break;\n\n case 'checkbox':\n if (name === 'checked' && value !== undefined) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n\n break;\n case 'text':\n default:\n if (name === 'value') {\n element.value = (value === undefined ? \"\" : value);\n }\n\n break;\n\n\n }\n } else if (element instanceof HTMLTextAreaElement) {\n if (name === 'value') {\n element.value = (value === undefined ? \"\" : value);\n }\n }\n\n}\n\nassignToNamespace('Monster.DOM', Updater);\nexport {Monster, Updater}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobal} from \"../types/global.js\";\nimport {validateString} from \"../types/validate.js\";\n\n\n/**\n * this method fetches the document object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getDocument())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/util.js';\n * console.log(getDocument())\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n * const {window} = new JSDOM('', {\n * url: 'http://example.com/',\n * pretendToBeVisual: true\n * });\n *\n * [\n * 'self',\n * 'document',\n * 'Document',\n * 'Node',\n * 'Element',\n * 'HTMLElement',\n * 'DocumentFragment',\n * 'DOMParser',\n * 'XMLSerializer',\n * 'NodeFilter',\n * 'InputEvent',\n * 'CustomEvent'\n * ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {object}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} not supported environment\n */\nfunction getDocument() {\n let document = getGlobal()?.['document'];\n if (typeof document !== 'object') {\n throw new Error(\"not supported environment\")\n }\n\n return document;\n}\n\n/**\n * this method fetches the window object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getWindow())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getWindow} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/util.js';\n * console.log(getWindow(null))\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n * const {window} = new JSDOM('', {\n * url: 'http://example.com/',\n * pretendToBeVisual: true\n * });\n *\n * getGlobal()['window']=window;\n * \n * [\n * 'self',\n * 'document',\n * 'Document',\n * 'Node',\n * 'Element',\n * 'HTMLElement',\n * 'DocumentFragment',\n * 'DOMParser',\n * 'XMLSerializer',\n * 'NodeFilter',\n * 'InputEvent',\n * 'CustomEvent'\n * ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {object}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} not supported environment\n */\nfunction getWindow() {\n let window = getGlobal()?.['window'];\n if (typeof window !== 'object') {\n throw new Error(\"not supported environment\")\n }\n\n return window;\n}\n\n\n/**\n *\n *\n * this method fetches the document object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getDocumentFragmentFromString())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getDocumentFragmentFromString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/util.js';\n * console.log(getDocumentFragmentFromString('<div></div>'))\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n * const {window} = new JSDOM('', {\n * url: 'http://example.com/',\n * pretendToBeVisual: true\n * });\n *\n * [\n * 'self',\n * 'document',\n * 'Document',\n * 'Node',\n * 'Element',\n * 'HTMLElement',\n * 'DocumentFragment',\n * 'DOMParser',\n * 'XMLSerializer',\n * 'NodeFilter',\n * 'InputEvent',\n * 'CustomEvent'\n * ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {DocumentFragment}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {Error} not supported environment\n * @throws {TypeError} value is not a string\n */\nfunction getDocumentFragmentFromString(html) {\n validateString(html);\n\n const document = getDocument();\n const template = document.createElement('template');\n template.innerHTML = html;\n\n return template.content;\n}\n\n\nassignToNamespace('Monster.DOM', getWindow, getDocument, getDocumentFragmentFromString);\nexport {Monster, getWindow, getDocument, getDocumentFragmentFromString}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {validateInstance, validateString} from \"../types/validate.js\";\nimport {findClosestByAttribute} from \"./attributes.js\";\nimport {getDocument} from \"./util.js\";\n\n/**\n * You can call the function via the monster namespace `new Monster.DOM.fireEvent()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/events.js';\n * console.log(new Monster.DOM.fireEvent())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {fireEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/events.js';\n * console.log(fireEvent())\n * </script>\n * ```\n *\n * @param {HTMLElement|HTMLCollection|NodeList} element\n * @param {string} type\n * @return {void}\n * @since 1.10.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {TypeError} value is not an instance of HTMLElement or HTMLCollection\n */\nfunction fireEvent(element, type) {\n\n const document = getDocument();\n\n if (element instanceof HTMLElement) {\n\n if (type === 'click') {\n element.click();\n return;\n }\n\n let event = new Event(validateString(type), {\n bubbles: true,\n cancelable: true,\n });\n\n element.dispatchEvent(event);\n\n } else if (element instanceof HTMLCollection || element instanceof NodeList) {\n for (let e of element) {\n fireEvent(e, type);\n }\n } else {\n throw new TypeError('value is not an instance of HTMLElement or HTMLCollection')\n }\n\n}\n\n/**\n * This function gets the path `Event.composedPath()` from an event and tries to find the next element\n * up the tree `element.closest()` with the attribute and value. If no value is specified, only the attribute is searched.\n *\n * You can call the function via the monster namespace `new Monster.DOM.findTargetElementFromEvent()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/events.js';\n * console.log(new Monster.DOM.findTargetElementFromEvent())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {findTargetElementFromEvent} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/events.js';\n * console.log(findTargetElementFromEvent())\n * </script>\n * ```\n *\n * @since 1.14.0\n * @param {Event} event\n * @param {string} attributeName\n * @param {string|null} attributeValue\n * @throws {Error} unsupported event\n * @memberOf Monster.DOM\n * @throws {TypeError} value is not a string\n * @throws {TypeError} value is not an instance of HTMLElement\n */\nfunction findTargetElementFromEvent(event, attributeName, attributeValue) {\n validateInstance(event, Event);\n\n if (typeof event.composedPath !== 'function') {\n throw new Error('unsupported event');\n }\n\n const path = event.composedPath();\n const element = path?.[0];\n\n if (element instanceof HTMLElement) {\n return findClosestByAttribute(element, attributeName, attributeValue);\n }\n\n return undefined;\n\n}\n\n\nassignToNamespace('Monster.DOM', findTargetElementFromEvent, fireEvent);\nexport {Monster, findTargetElementFromEvent, fireEvent}\n","'use strict';\n\nimport {parseLocale} from \"../i18n/locale.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getDocument} from \"./util.js\";\n\n/**\n * @private\n * @type {string}\n */\nconst DEFAULT_LANGUAGE = 'en';\n\n/**\n * With this function you can read the language version set by the document.\n * For this the attribute `lang` in the html tag is read. If no attribute is set, `en` is used as default.\n *\n * You can call the function via the monster namespace `new Monster.DOM.getLocaleOfDocument()`.\n *\n * ```\n * <script type=\"module\">\n * import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/locale.js';\n * console.log(new Monster.DOM.getLocaleOfDocument())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getLocaleOfDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/dom/locale.js';\n * console.log(new getLocaleOfDocument())\n * </script>\n * ```\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n * @throws {TypeError} value is not a string\n * @throws {Error} unsupported locale\n */\nfunction getLocaleOfDocument() {\n\n const document = getDocument();\n\n let html = document.querySelector('html')\n if (html instanceof HTMLElement && html.hasAttribute('lang')) {\n let locale = html.getAttribute('lang');\n if (locale) {\n return new parseLocale(locale)\n }\n }\n\n return parseLocale(DEFAULT_LANGUAGE);\n}\n\nassignToNamespace('Monster.DOM', getLocaleOfDocument);\nexport {Monster, getLocaleOfDocument}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"../types/base.js\";\nimport {validateString} from \"../types/validate.js\";\nimport {clone} from \"../util/clone.js\";\n\n/**\n * @memberOf Monster.I18n\n * @type {symbol}\n */\nconst propertiesSymbol = Symbol('properties');\n\n/**\n * @type {symbol}\n * @memberOf Monster.I18n\n */\nconst localeStringSymbol = Symbol('localeString');\n\n/**\n * You can create an instance via the monster namespace `new Monster.I18n.Locale()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/locale.js';\n * console.log(new Monster.I18n.Locale())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {Locale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/locale.js';\n * console.log(new Locale())\n * </script>\n * ```\n *\n * RFC\n *\n * ```\n * A Language-Tag consists of:\n * langtag ; generated tag\n * -or- private-use ; a private use tag\n *\n * langtag = (language\n * [\"-\" script]\n * [\"-\" region]\n * *(\"-\" variant)\n * *(\"-\" extension)\n * [\"-\" privateuse])\n *\n * language = \"en\", \"ale\", or a registered value\n *\n * script = \"Latn\", \"Cyrl\", \"Hant\" ISO 15924 codes\n *\n * region = \"US\", \"CS\", \"FR\" ISO 3166 codes\n * \"419\", \"019\", or UN M.49 codes\n *\n * variant = \"rozaj\", \"nedis\", \"1996\", multiple subtags can be used in a tag\n *\n * extension = single letter followed by additional subtags; more than one extension\n * may be used in a language tag\n *\n * private-use = \"x-\" followed by additional subtags, as many as are required\n * Note that these can start a tag or appear at the end (but not\n * in the middle)\n * ```\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n\n * @see https://datatracker.ietf.org/doc/html/rfc3066\n */\nclass Locale extends Base {\n\n /**\n * @param {string} language\n * @param {string} [region]\n * @param {string} [script]\n * @param {string} [variants]\n * @param {string} [extlang]\n * @param {string} [privateUse]\n * @throws {Error} unsupported locale\n */\n constructor(language, region, script, variants, extlang, privateUse) {\n super();\n\n this[propertiesSymbol] = {\n language: (language === undefined) ? undefined : validateString(language),\n script: (script === undefined) ? undefined : validateString(script),\n region: (region === undefined) ? undefined : validateString(region),\n variants: (variants === undefined) ? undefined : validateString(variants),\n extlang: (extlang === undefined) ? undefined : validateString(extlang),\n privateUse: (privateUse === undefined) ? undefined : validateString(privateUse),\n };\n\n let s = [];\n if (language !== undefined) s.push(language);\n if (script !== undefined) s.push(script);\n if (region !== undefined) s.push(region);\n if (variants !== undefined) s.push(variants);\n if (extlang !== undefined) s.push(extlang);\n if (privateUse !== undefined) s.push(privateUse);\n\n if (s.length === 0) {\n throw new Error('unsupported locale');\n }\n\n this[localeStringSymbol] = s.join('-');\n\n }\n\n /**\n * @return {string}\n */\n get localeString() {\n return this[localeStringSymbol];\n }\n\n /**\n * @return {string|undefined}\n */\n get language() {\n return this[propertiesSymbol].language;\n }\n\n /**\n * @return {string|undefined}\n */\n get region() {\n return this[propertiesSymbol].region;\n }\n\n /**\n * @return {string|undefined}\n */\n get script() {\n return this[propertiesSymbol].script;\n }\n\n /**\n * @return {string|undefined}\n */\n get variants() {\n return this[propertiesSymbol].variants;\n }\n\n /**\n * @return {string|undefined}\n */\n get extlang() {\n return this[propertiesSymbol].extlang;\n }\n\n /**\n * @return {string|undefined}\n */\n get privateUse() {\n return this[propertiesSymbol].privateValue;\n }\n\n\n /**\n * @return {string}\n */\n toString() {\n return \"\" + this.localeString;\n }\n\n /**\n * @return {Monster.I18n.LocaleMap}\n */\n getMap() {\n return clone(this[propertiesSymbol])\n }\n\n\n}\n\n/**\n * @typedef {Object} LocaleMap\n * @property {string} language\n * @property {string} script\n * @property {string} region\n * @property {string} variants\n * @property {string} extlang\n * @property {string} privateUse\n * @memberOf Monster.I18n\n */\n\n/**\n * Parse local according to rfc4646 standard\n *\n * Limitations: The regex cannot handle multiple variants or private.\n *\n * You can call the method via the monster namespace `Monster.I18n.createLocale()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/locale.js';\n * console.log(new Monster.I18n.createLocale())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {createLocale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/locale.js';\n * console.log(createLocale())\n * </script>\n * ```\n *\n * RFC\n *\n * ```\n * The syntax of the language tag in ABNF [RFC4234] is:\n *\n * Language-Tag = langtag\n * / privateuse ; private use tag\n * / grandfathered ; grandfathered registrations\n *\n * langtag = (language\n * [\"-\" script]\n * [\"-\" region]\n * *(\"-\" variant)\n * *(\"-\" extension)\n * [\"-\" privateuse])\n *\n * language = (2*3ALPHA [ extlang ]) ; shortest ISO 639 code\n * / 4ALPHA ; reserved for future use\n * / 5*8ALPHA ; registered language subtag\n *\n * extlang = *3(\"-\" 3ALPHA) ; reserved for future use\n *\n * script = 4ALPHA ; ISO 15924 code\n *\n * region = 2ALPHA ; ISO 3166 code\n * / 3DIGIT ; UN M.49 code\n *\n * variant = 5*8alphanum ; registered variants\n * / (DIGIT 3alphanum)\n *\n * extension = singleton 1*(\"-\" (2*8alphanum))\n *\n * singleton = %x41-57 / %x59-5A / %x61-77 / %x79-7A / DIGIT\n * ; \"a\"-\"w\" / \"y\"-\"z\" / \"A\"-\"W\" / \"Y\"-\"Z\" / \"0\"-\"9\"\n * ; Single letters: x/X is reserved for private use\n *\n * privateuse = (\"x\"/\"X\") 1*(\"-\" (1*8alphanum))\n *\n * grandfathered = 1*3ALPHA 1*2(\"-\" (2*8alphanum))\n * ; grandfathered registration\n * ; Note: i is the only singleton\n * ; that starts a grandfathered tag\n *\n * alphanum = (ALPHA / DIGIT) ; letters and numbers\n *\n * Figure 1: Language Tag ABNF\n * ```\n *\n * @param {string} locale\n * @returns {Locale}\n * @since 1.14.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n\n * @throws {TypeError} value is not a string\n * @throws {Error} unsupported locale\n */\nfunction parseLocale(locale) {\n\n locale = validateString(locale).replace(/_/g, \"-\");\n\n let language, region, variants, parts, script, extlang,\n regexRegular = \"(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)\",\n regexIrregular = \"(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)\",\n regexGrandfathered = \"(\" + regexIrregular + \"|\" + regexRegular + \")\",\n regexPrivateUse = \"(x(-[A-Za-z0-9]{1,8})+)\",\n regexSingleton = \"[0-9A-WY-Za-wy-z]\",\n regexExtension = \"(\" + regexSingleton + \"(-[A-Za-z0-9]{2,8})+)\",\n regexVariant = \"([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3})\",\n regexRegion = \"([A-Za-z]{2}|[0-9]{3})\",\n regexScript = \"([A-Za-z]{4})\",\n regexExtlang = \"([A-Za-z]{3}(-[A-Za-z]{3}){0,2})\",\n regexLanguage = \"(([A-Za-z]{2,3}(-\" + regexExtlang + \")?)|[A-Za-z]{4}|[A-Za-z]{5,8})\",\n regexLangtag = \"(\" + regexLanguage + \"(-\" + regexScript + \")?\" + \"(-\" + regexRegion + \")?\" + \"(-\" + regexVariant + \")*\" + \"(-\" + regexExtension + \")*\" + \"(-\" + regexPrivateUse + \")?\" + \")\",\n regexLanguageTag = \"^(\" + regexGrandfathered + \"|\" + regexLangtag + \"|\" + regexPrivateUse + \")$\",\n regex = new RegExp(regexLanguageTag), match;\n\n\n if ((match = regex.exec(locale)) !== null) {\n if (match.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n }\n\n if (match === undefined || match === null) {\n throw new Error('unsupported locale');\n }\n\n if (match[6] !== undefined) {\n language = match[6];\n\n parts = language.split('-');\n if (parts.length > 1) {\n language = parts[0];\n extlang = parts[1];\n }\n\n }\n\n if (match[14] !== undefined) {\n region = match[14];\n }\n\n if (match[12] !== undefined) {\n script = match[12];\n }\n\n if (match[16] !== undefined) {\n variants = match[16];\n }\n\n return new Locale(language, region, script, variants, extlang);\n\n}\n\n\nassignToNamespace('Monster.I18n', Locale, parseLocale);\nexport {Monster, Locale, parseLocale}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {BaseWithOptions} from \"../types/basewithoptions.js\";\nimport {Locale} from \"./locale.js\"\nimport {Translations} from \"./translations.js\"\n\n/**\n * A provider makes a translation object available.\n *\n * You can call the method via the monster namespace `new Monster.I18n.Provider()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/provider.js';\n * console.log(new Monster.I18n.Provider())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Provider} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/provider.js';\n * console.log(new Provider())\n * </script>\n * ```\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n\n * @see https://datatracker.ietf.org/doc/html/rfc3066\n */\nclass Provider extends BaseWithOptions {\n\n /**\n * @param {Locale|string} locale\n * @return {Promise}\n */\n getTranslations(locale) {\n return new Promise((resolve, reject) => {\n try {\n resolve(new Translations(locale));\n } catch (e) {\n reject(e);\n }\n\n });\n }\n\n}\n\n\nassignToNamespace('Monster.I18n', Provider);\nexport {Monster, Provider}\n","'use strict';\n\nimport {PROPERTY_KEY_INTERNALDATA} from \"../constants.js\";\nimport {extend} from \"../data/extend.js\";\nimport {Pathfinder} from \"../data/pathfinder.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"./base.js\";\nimport {validateObject} from \"./validate.js\";\n\n/**\n * @private\n * @type {symbol}\n */\nconst optionsSymbol = Symbol.for(PROPERTY_KEY_INTERNALDATA);\n\n/**\n * This is the base class with options from which some monster classes are derived.\n *\n * You can call the method via the monster namespace `new Monster.Types.BaseWithOptions()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/basewithoptions.js';\n * console.log(new Monster.Types.BaseWithOptions())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {BaseWithOptions} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/basewithoptions.js';\n * console.log(new BaseWithOptions())\n * </script>\n * ```\n *\n * The class was formerly called Object.\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass BaseWithOptions extends Base {\n\n /**\n *\n * @param {object} options\n */\n constructor(options) {\n super();\n\n if (options === undefined) {\n options = {};\n }\n\n this[optionsSymbol] = extend({}, this.defaults, validateObject(options));\n\n }\n\n /**\n * can be overridden by child class values\n *\n * @return {object}\n */\n get defaults() {\n return {}\n }\n\n /**\n * nested options can be specified by path `a.b.c`\n *\n * @param {string} path\n * @param {*} defaultValue\n * @return {*}\n * @since 1.10.0\n */\n getOption(path, defaultValue) {\n let value;\n\n try {\n value = new Pathfinder(this[optionsSymbol]).getVia(path);\n } catch (e) {\n\n }\n\n if (value === undefined) return defaultValue;\n return value;\n }\n\n\n}\n\nassignToNamespace('Monster.Types', BaseWithOptions);\nexport {Monster, BaseWithOptions}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"../types/base.js\";\nimport {isObject, isString} from \"../types/is.js\";\nimport {validateInstance, validateInteger, validateObject, validateString} from \"../types/validate.js\";\nimport {Locale, parseLocale} from \"./locale.js\";\n\n\n/**\n * With this class you can manage translations and access the keys.\n *\n * You can call the method via the monster namespace `new Monster.I18n.Translations()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/translations.js';\n * console.log(new Monster.I18n.Translations())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Translations} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/translations.js';\n * console.log(new Translations())\n * </script>\n * ```\n *\n * @example\n *\n * const translation = new Translations(parseLocale('en-GB'));\n *\n * translation.assignTranslations({\n * text1: \"abc\",\n * text2: {'other': 'xyz'}\n * });\n *\n * translation.getText('text1);\n * translation.getPluralRuleText('text1',2);\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n\n * @see https://datatracker.ietf.org/doc/html/rfc3066\n */\nclass Translations extends Base {\n\n /**\n *\n * @param {Locale} locale\n */\n constructor(locale) {\n super();\n\n if (isString(locale)) {\n locale = parseLocale(locale);\n }\n\n this.locale = validateInstance(locale, Locale);\n this.storage = new Map();\n\n }\n\n\n /**\n * Fetches a text using the specified key.\n * If no suitable key is found, `defaultText` is taken.\n *\n * @param {string} key\n * @param {string|undefined} defaultText\n * @return {string}\n * @throws {Error} key not found\n */\n getText(key, defaultText) {\n if (!this.storage.has(key)) {\n if (defaultText === undefined) {\n throw new Error('key ' + key + ' not found');\n }\n\n return validateString(defaultText);\n }\n\n let r = this.storage.get(key);\n if (isObject(r)) {\n return this.getPluralRuleText(key, 'other', defaultText);\n }\n\n return this.storage.get(key);\n }\n\n /**\n * A number `count` can be passed to this method. In addition to a number, one of the keywords can also be passed directly.\n * \"zero\", \"one\", \"two\", \"few\", \"many\" and \"other\". Remember: not every language has all rules.\n *\n * The appropriate text for this number is then selected. If no suitable key is found, `defaultText` is taken.\n *\n * @param {string} key\n * @param {integer|count} count\n * @param {string|undefined} defaultText\n * @return {string}\n */\n getPluralRuleText(key, count, defaultText) {\n if (!this.storage.has(key)) {\n return validateString(defaultText);\n }\n\n let r = validateObject(this.storage.get(key));\n\n let keyword;\n if (isString(count)) {\n keyword = count.toLocaleString();\n } else {\n count = validateInteger(count);\n if (count === 0) {\n // special handlig for zero count\n if (r.hasOwnProperty('zero')) {\n return validateString(r['zero']);\n }\n }\n\n keyword = new Intl.PluralRules(this.locale.toString()).select(validateInteger(count));\n }\n\n if (r.hasOwnProperty(keyword)) {\n return validateString(r[keyword]);\n }\n\n if (r.hasOwnProperty(DEFAULT_KEY)) {\n return validateString(r[DEFAULT_KEY]);\n }\n\n return validateString(defaultText);\n }\n\n /**\n * Set a text for a key\n *\n * ```\n * translations.setText(\"text1\": \"Make my day!\");\n * // plural rules\n * translations.setText(\"text6\": {\n * \"zero\": \"There are no files on Disk.\",\n * \"one\": \"There is one file on Disk.\",\n * \"other\": \"There are files on Disk.\"\n * \"default\": \"There are files on Disk.\"\n * });\n * ```\n *\n * @param {string} key\n * @param {string|object} text\n * @return {Translations}\n * @throws {TypeError} value is not a string or object\n */\n setText(key, text) {\n\n if (isString(text) || isObject(text)) {\n this.storage.set(validateString(key), text);\n return this;\n }\n\n throw new TypeError('value is not a string or object');\n\n }\n\n /**\n * This method can be used to transfer overlays from an object. The keys are transferred and the values are entered as text.\n *\n * The values can either be character strings or, in the case of texts with plural forms, objects. The plural forms must be stored as text via a standard key \"zero\", \"one\", \"two\", \"few\", \"many\" and \"other\".\n *\n * Additionally, the key default can be specified, which will be used if no other key fits.\n *\n * In some languages, like for example in german, there is no own more number at the value 0. In these languages the function applies additionally zero.\n *\n * ```\n * translations.assignTranslations({\n * \"text1\": \"Make my day!\",\n * \"text2\": \"I'll be back!\",\n * \"text6\": {\n * \"zero\": \"There are no files on Disk.\",\n * \"one\": \"There is one file on Disk.\",\n * \"other\": \"There are files on Disk.\"\n * \"default\": \"There are files on Disk.\"\n * });\n * ```\n *\n * @param {object} translations\n * @return {Translations}\n */\n assignTranslations(translations) {\n validateObject(translations);\n\n for (const [k, v] of Object.entries(translations)) {\n this.setText(k, v);\n }\n\n return this;\n\n }\n\n}\n\n\nassignToNamespace('Monster.I18n', Translations);\nexport {Monster, Translations}\n","'use strict';\n\nimport {PROPERTY_KEY_INTERNALDATA} from \"../../constants.js\";\nimport {extend} from \"../../data/extend.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../../namespace.js';\nimport {Formatter} from \"../../text/formatter.js\";\nimport {getGlobalFunction} from \"../../types/global.js\";\nimport {isInstance, isString} from \"../../types/is.js\";\nimport {validateObject, validateString} from \"../../types/validate.js\";\nimport {parseLocale} from \"../locale.js\";\nimport {Provider} from \"../provider.js\";\nimport {Translations} from \"../translations.js\";\n\n/**\n * @private\n * @type {symbol}\n */\nconst optionsSymbol = Symbol.for(PROPERTY_KEY_INTERNALDATA);\n\n/**\n * The fetch provider retrieves a JSON file from the given URL and returns a translation object.\n *\n * You can create the object via the monster namespace `new Monster.I18n.Provider.Fetch()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/providers/fetch.js';\n * console.log(new Monster.I18n.Providers.Fetch())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Fetch} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/i18n/providers/fetch.js';\n * console.log(new Fetch())\n * </script>\n * ```\n *\n * @since 1.13.0\n * @copyright schukai GmbH\n * @memberOf Monster.I18n.Providers\n * @see https://datatracker.ietf.org/doc/html/rfc3066\n */\nclass Fetch extends Provider {\n\n /**\n * As options the key `fetch` can be passed. This config object is passed to the fetch method as init.\n *\n * @param {string|URL} url\n * @param {Object} options see {@link Monster.I18n.Providers.Fetch#defaults}\n * @see https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n constructor(url, options) {\n super(options);\n\n if (isInstance(url, URL)) {\n url = url.toString();\n }\n\n if (options === undefined) {\n options = {};\n }\n\n validateString(url);\n\n /**\n * @property {string}\n */\n this.url = url;\n\n /**\n * @private\n * @property {Object} options\n */\n this[optionsSymbol] = extend({}, super.defaults, this.defaults, validateObject(options));\n\n }\n\n /**\n * Defaults\n *\n * @property {Object} fetch\n * @property {String} fetch.method=GET\n * @property {String} fetch.mode=cors\n * @property {String} fetch.cache=no-cache\n * @property {String} fetch.credentials=omit\n * @property {String} fetch.redirect=follow\n * @property {String} fetch.referrerPolicy=no-referrer\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\n get defaults() {\n\n return {\n fetch: {\n method: 'GET', // *GET, POST, PUT, DELETE, etc.\n mode: 'cors', // no-cors, *cors, same-origin\n cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\n credentials: 'omit', // include, *same-origin, omit\n redirect: 'follow', // manual, *follow, error\n referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\n }\n }\n\n }\n\n /**\n *\n * @param {Locale|string} locale\n * @return {Promise}\n */\n getTranslations(locale) {\n\n if (isString(locale)) {\n locale = parseLocale(locale);\n }\n\n let formatter = new Formatter(locale.getMap())\n\n return getGlobalFunction('fetch')(formatter.format(this.url), this.getOption('fetch', {}))\n .then((response) => response.json()).then(data => {\n return new Translations(locale).assignTranslations(data);\n });\n\n }\n\n\n}\n\n\nassignToNamespace('Monster.I18n.Providers', Fetch);\nexport {Monster, Fetch}\n","'use strict';\n\nimport {Pipe} from \"../data/pipe.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from \"../types/base.js\";\nimport {validateObject, validateString} from \"../types/validate.js\";\n\n\n/**\n * Messages can be formatted with the formatter. To do this, an object with the values must be passed to the formatter. The message can then contain placeholders.\n *\n * Look at the example below. The placeholders use the logic of Pipe.\n *\n * You can call the method via the monster namespace `new Monster.Text.Formatter()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/text/formatter.js';\n * console.log(new Monster.Text.Formatter())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Formatter} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/text/formatter.js';\n * console.log(new Formatter())\n * </script>\n * ```\n *\n * @example\n *\n * new Formatter({\n * a: {\n * b: {\n * c: \"Hello\"\n * },\n * d: \"world\",\n * }\n * }).format(\"${a.b.c} ${a.d | ucfirst}!\");\n *\n * // ↦ Hello World!\n *\n * @since 1.12.0\n * @copyright schukai GmbH\n * @memberOf Monster.Text\n */\nclass Formatter extends Base {\n\n /**\n * Default values for the markers are `${` and `}`\n *\n * @param {object} object\n * @throws {TypeError} value is not a object\n */\n constructor(object) {\n super();\n this.object = validateObject(object);\n this.openMarker = '${';\n this.closeMarker = '}';\n }\n\n /**\n * Set new Marker\n *\n * Default values for the markers are `${` and `}`\n *\n * ```\n * formatter.setMarker('#'); // open and close are both #\n * formatter.setMarker('[',']');\n * formatter.setMarker('i18n{','}');\n * ```\n *\n * @param {string} open\n * @param {string} close\n * @return {Formatter}\n * @since 1.12.0\n * @throws {TypeError} value is not a string\n */\n setMarker(open, close) {\n\n if (close === undefined) {\n close = open;\n }\n\n this.openMarker = validateString(open);\n this.closeMarker = validateString(close);\n return this;\n }\n\n /**\n *\n * @param {string} text\n * @return {string}\n * @throws {TypeError} value is not a string\n */\n format(text) {\n return tokenizer.call(this, validateString(text))\n }\n\n}\n\n/**\n * @private\n * @since 1.12.0\n * @param text\n * @return {string}\n */\nfunction tokenizer(text) {\n const self = this;\n\n let formatted = [];\n\n while (true) {\n\n\n let startIndex = text.indexOf(self.openMarker);\n // no marker \n if (startIndex === -1) {\n formatted.push(text);\n break;\n } else if (startIndex > 0) {\n formatted.push(text.substring(0, startIndex))\n text = text.substring(startIndex)\n }\n\n let endIndex = text.substring(self.openMarker.length).indexOf(self.closeMarker) + self.openMarker.length;\n\n if (endIndex === -1) {\n throw new Error(\"syntax error in formatter template\")\n return;\n }\n\n let command = \"path:\" + text.substring(self.openMarker.length, endIndex);\n\n formatted.push(validateString(new Pipe(command).run(self.object)));\n\n text = text.substring(endIndex + self.closeMarker.length);\n\n }\n\n return formatted.join('');\n}\n\nassignToNamespace('Monster.Text', Formatter);\nexport {Monster, Formatter}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateInstance, validateInteger} from \"../types/validate.js\";\nimport {LogEntry} from \"./logentry.js\";\nimport {ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN} from \"./logger.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.Logging.Handler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/logging/handler.js';\n * console.log(new Monster.Logging.Handler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/logging/handler.js';\n * console.log(new Handler())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Logging\n */\nclass Handler extends Base {\n constructor() {\n super();\n\n /**\n * Loglevel\n *\n * @type {integer}\n */\n this.loglevel = OFF;\n }\n\n /**\n * This is the central log function. this method must be\n * overwritten by derived handlers with their own logic.\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {LogEntry} entry\n * @returns {boolean}\n */\n log(entry) {\n validateInstance(entry, LogEntry);\n\n if (this.loglevel < entry.getLogLevel()) {\n return false;\n }\n\n return true;\n }\n\n /**\n * set loglevel\n *\n * @param {integer} loglevel\n * @returns {Handler}\n * @since 1.5.0\n */\n setLogLevel(loglevel) {\n validateInteger(loglevel)\n this.loglevel = loglevel;\n return this;\n }\n\n /**\n * get loglevel\n *\n * @returns {integer}\n * @since 1.5.0\n */\n getLogLevel() {\n return this.loglevel;\n }\n\n /**\n * Set log level to All\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setAll() {\n this.setLogLevel(ALL);\n return this;\n };\n\n /**\n * Set log level to Trace\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setTrace() {\n this.setLogLevel(TRACE);\n return this;\n };\n\n /**\n * Set log level to Debug\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setDebug() {\n this.setLogLevel(DEBUG);\n return this;\n };\n\n /**\n * Set log level to Info\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setInfo() {\n this.setLogLevel(INFO);\n return this;\n };\n\n /**\n * Set log level to Warn\n *\n * @returns {undefined}\n * @since 1.5.0\n */\n setWarn() {\n this.setLogLevel(WARN);\n return this;\n };\n\n /**\n * Set log level to Error\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setError() {\n this.setLogLevel(ERROR);\n return this;\n };\n\n /**\n * Set log level to Fatal\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setFatal() {\n this.setLogLevel(FATAL);\n return this;\n };\n\n\n /**\n * Set log level to Off\n *\n * @returns {Handler}\n * @since 1.5.0\n */\n setOff() {\n this.setLogLevel(OFF);\n return this;\n };\n\n\n}\n\n\nassignToNamespace('Monster.Logging', Handler);\nexport {Monster, Handler};\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateInteger} from '../types/validate.js';\n\n\n/**\n * you can call the method via the monster namespace `new Monster.Logging.LogEntry()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/logging/logentry.js';\n * console.log(new Monster.Logging.LogEntry())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/logging/logentry.js';\n * console.log(new LogEntry())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Logging\n */\nclass LogEntry extends Base {\n /**\n *\n * @param {Integer} loglevel\n * @param {...*} args\n */\n constructor(loglevel, ...args) {\n super();\n validateInteger(loglevel);\n\n this.loglevel = loglevel\n this.arguments = args\n }\n\n /**\n *\n * @returns {integerr}\n */\n getLogLevel() {\n return this.loglevel\n }\n\n /**\n *\n * @returns {array}\n */\n getArguments() {\n return this.arguments\n }\n\n}\n\nassignToNamespace('Monster.Logging', LogEntry);\nexport {Monster, LogEntry}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Handler} from '../logging/handler.js';\nimport {LogEntry} from '../logging/logentry.js';\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateInteger, validateObject, validateString} from '../types/validate.js';\n\n\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst ALL = 255;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst TRACE = 64;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst DEBUG = 32;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst INFO = 16;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst WARN = 8;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst ERROR = 4;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst FATAL = 2;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster.Logging\n */\nconst OFF = 0;\n\n/**\n * You can create an object of the class simply by using the namespace `new Monster.Logging.Logger()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/logging/logger.js';\n * console.log(new Monster.Logging.Logger())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/logging/logger.js';\n * console.log(new Logger())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Logging\n */\nclass Logger extends Base {\n\n /**\n *\n */\n constructor() {\n super();\n this.handler = new Set;\n }\n\n /**\n *\n * @param {Handler} handler\n * @returns {Logger}\n * @throws {Error} the handler must be an instance of Handler\n */\n addHandler(handler) {\n validateObject(handler)\n if (!(handler instanceof Handler)) {\n throw new Error(\"the handler must be an instance of Handler\")\n }\n\n this.handler.add(handler)\n return this;\n }\n\n /**\n *\n * @param {Handler} handler\n * @returns {Logger}\n * @throws {Error} the handler must be an instance of Handler\n */\n removeHandler(handler) {\n validateObject(handler)\n if (!(handler instanceof Handler)) {\n throw new Error(\"the handler must be an instance of Handler\")\n }\n\n this.handler.delete(handler);\n return this;\n }\n\n /**\n * log Trace message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logTrace() {\n triggerLog.apply(this, [TRACE, ...arguments]);\n return this;\n };\n\n /**\n * log Debug message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logDebug() {\n triggerLog.apply(this, [DEBUG, ...arguments]);\n return this;\n };\n\n /**\n * log Info message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logInfo() {\n triggerLog.apply(this, [INFO, ...arguments]);\n return this;\n };\n\n /**\n * log Warn message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logWarn() {\n triggerLog.apply(this, [WARN, ...arguments]);\n return this;\n };\n\n /**\n * log Error message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logError() {\n triggerLog.apply(this, [ERROR, ...arguments]);\n return this;\n };\n\n /**\n * log Fatal message\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {*} arguments\n * @returns {Logger}\n * @since 1.5.0\n */\n logFatal() {\n triggerLog.apply(this, [FATAL, ...arguments]);\n return this;\n };\n\n\n /**\n * Labels\n *\n * @param {integer} level\n * @returns {string}\n */\n getLabel(level) {\n validateInteger(level);\n\n if (level === ALL) return 'ALL';\n if (level === TRACE) return 'TRACE';\n if (level === DEBUG) return 'DEBUG';\n if (level === INFO) return 'INFO';\n if (level === WARN) return 'WARN';\n if (level === ERROR) return 'ERROR';\n if (level === FATAL) return 'FATAL';\n if (level === OFF) return 'OFF';\n\n return 'unknown';\n };\n\n /**\n * Level\n *\n * @param {string} label\n * @returns {integer}\n */\n getLevel(label) {\n validateString(label);\n\n if (label === 'ALL') return ALL;\n if (label === 'TRACE') return TRACE;\n if (label === 'DEBUG') return DEBUG;\n if (label === 'INFO') return INFO;\n if (label === 'WARN') return WARN;\n if (label === 'ERROR') return ERROR;\n if (label === 'FATAL') return FATAL;\n if (label === 'OFF') return OFF;\n\n return 0;\n };\n\n\n}\n\nassignToNamespace('Monster.Logging', Logger);\nexport {Monster, Logger, ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF};\n\n\n/**\n * Log triggern\n *\n * @param {integer} loglevel\n * @param {*} args\n * @returns {Logger}\n * @private\n */\nfunction triggerLog(loglevel, ...args) {\n var logger = this;\n\n for (let handler of logger.handler) {\n handler.log(new LogEntry(loglevel, args))\n }\n\n return logger;\n\n}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../../namespace.js';\nimport {Base} from '../../types/base.js';\nimport {getGlobalObject} from \"../../types/global.js\";\nimport {Handler} from '../handler.js';\nimport {LogEntry} from \"../logentry.js\";\n\n/**\n * You can create an object of the class simply by using the namespace `new Monster.Logging.Handler.ConsoleHandler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/logging/handler/console.js';\n * console.log(new Monster.Logging.Handler.ConsoleHandler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {ConsoleHandler} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/logging/handler/console.js';\n * console.log(new ConsoleHandler())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster.Logging.Handler\n */\nclass ConsoleHandler extends Handler {\n constructor() {\n super();\n }\n\n\n /**\n * This is the central log function. this method must be\n * overwritten by derived handlers with their own logic.\n *\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;\n *\n * @param {LogEntry} entry\n * @returns {boolean}\n */\n log(entry) {\n if (super.log(entry)) {\n let console = getGlobalObject('console');\n if (!console) return false;\n console.log(entry.toString());\n return true;\n }\n\n return false;\n }\n\n}\n\n\nassignToNamespace('Monster.Logging.Handler', ConsoleHandler);\nexport {Monster, ConsoleHandler};\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobal} from '../types/global.js';\n\n\n/**\n * this function uses crypt and returns a random number.\n *\n * you can call the method via the monster namespace `Monster.Math.random()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/math/random.js';\n * console.log(Monster.Math.random(1,10)) // ↦ 5\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {random} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/math/random.js';\n * console.log(random(1,10)) // ↦ 5\n * </script>\n * ```\n *\n * @param {number} min starting value of the definition set (default is 0)\n * @param {number} max end value of the definition set (default is 1000000000)\n * @returns {number}\n * @memberOf Monster.Math\n * @throws {Error} missing crypt\n * @throws {Error} we cannot generate numbers larger than 53 bits.\n * @throws {Error} the distance is too small to create a random number.\n\n * @since 1.0.0\n * @copyright schukai GmbH\n */\nfunction random(min, max) {\n\n if (min === undefined) {\n min = 0;\n }\n if (max === undefined) {\n max = MAX;\n }\n\n if (max < min) {\n throw new Error(\"max must be greater than min\");\n }\n\n return Math.round(create(min, max));\n\n}\n\n/**\n * @private\n * @type {number}\n */\nvar MAX = 1000000000;\n\n\nMath.log2 = Math.log2 || function (n) {\n return Math.log(n) / Math.log(2);\n};\n\n/**\n *\n * @param {number} min\n * @param {number} max\n * @returns {number}\n * @private\n * @throws {Error} missing crypt\n * @throws {Error} we cannot generate numbers larger than 53 bits.\n * @throws {Error} the distance is too small to create a random number.\n */\nfunction create(min, max) {\n let crypt;\n let globalReference = getGlobal();\n\n crypt = globalReference?.['crypto'] || globalReference?.['msCrypto'] || globalReference?.['crypto'] || undefined;\n\n if (typeof crypt === \"undefined\") {\n throw new Error(\"missing crypt\")\n }\n\n let rval = 0;\n const range = max - min;\n if (range < 2) {\n throw new Error('the distance is too small to create a random number.')\n }\n\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error(\"we cannot generate numbers larger than 53 bits.\");\n }\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n\n const byteArray = new Uint8Array(bytesNeeded);\n crypt.getRandomValues(byteArray);\n\n let p = (bytesNeeded - 1) * 8;\n for (var i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n rval = rval & mask;\n\n if (rval >= range) {\n return create(min, max);\n }\n\n return min + rval;\n\n}\n\nassignToNamespace('Monster.Math', random);\nexport {Monster, random}\n\n\n\n\n","'use strict';\n\nimport {random} from \"../math/random.js\";\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {getGlobal} from \"./global.js\";\nimport {ID} from \"./id.js\";\n\n/**\n * @private\n * @type {number}\n */\nlet internalCounter = 0;\n\n/**\n * You can call the method via the monster namespace `new Monster.Types.RandomID()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/randomid.js';\n * console.log(new Monster.Types.RandomID())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {RandomID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/randomid.js';\n * console.log(new RandomID())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass RandomID extends ID {\n\n /**\n * create new object\n */\n constructor() {\n super();\n\n internalCounter += 1;\n\n this.id = getGlobal().btoa(random(1, 10000))\n .replace(/=/g, '')\n /** No numbers at the beginning of the ID, because of possible problems with DOM */\n .replace(/^[0-9]+/, 'X') + internalCounter;\n }\n\n}\n\nassignToNamespace('Monster.Types', RandomID);\nexport {Monster, RandomID}\n","'use strict';\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from './base.js';\n\n/**\n * The version object contains a sematic version number\n *\n * You can create the object via the monster namespace `new Monster.Types.Version()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/version.js';\n * console.log(new Monster.Types.Version('1.2.3')) // ↦ 1.2.3\n * console.log(new Monster.Types.Version('1')) // ↦ 1.0.0\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/version.js';\n * console.log(new Version('1.2.3')) // ↦ 1.2.3\n * console.log(new Version('1')) // ↦ 1.0.0\n * </script>\n * ```\n *\n * @example\n *\n * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/version.js';\n *\n * new Version('1.0.0') // ↦ 1.0.0\n * new Version(1) // ↦ 1.0.0\n * new Version(1, 0, 0) // ↦ 1.0.0\n * new Version('1.2.3', 4, 5) // ↦ 1.4.5\n *\n * @since 1.0.0\n * @author schukai GmbH\n * @copyright schukai GmbH\n * @memberOf Monster.Types\n */\nclass Version extends Base {\n\n /**\n *\n * @param major\n * @param minor\n * @param patch\n * @throws {Error} major is not a number\n * @throws {Error} minor is not a number\n * @throws {Error} patch is not a number\n */\n constructor(major, minor, patch) {\n super();\n\n if (typeof major === 'string' && minor === undefined && patch === undefined) {\n\n let parts = major.toString().split('.');\n major = parseInt(parts[0] || 0);\n minor = parseInt(parts[1] || 0);\n patch = parseInt(parts[2] || 0);\n }\n\n if (major === undefined) {\n throw new Error(\"major version is undefined\");\n }\n\n if (minor === undefined) {\n minor = 0;\n }\n\n if (patch === undefined) {\n patch = 0;\n }\n\n this.major = parseInt(major);\n this.minor = parseInt(minor);\n this.patch = parseInt(patch);\n\n if (isNaN(this.major)) {\n throw new Error(\"major is not a number\");\n }\n\n if (isNaN(this.minor)) {\n throw new Error(\"minor is not a number\");\n }\n\n if (isNaN(this.patch)) {\n throw new Error(\"patch is not a number\");\n }\n\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.major + '.' + this.minor + '.' + this.patch;\n }\n\n /**\n * returns 0 if equal, -1 if the object version is less and 1 if greater\n * then the compared version\n *\n * @param {string|Version} version Version to compare\n * @returns {number}\n */\n compareTo(version) {\n\n if (version instanceof Version) {\n version = version.toString();\n }\n\n if (typeof version !== 'string') {\n throw new Error(\"type exception\");\n }\n\n if (version === this.toString()) {\n return 0;\n }\n\n let a = [this.major, this.minor, this.patch];\n let b = version.split('.');\n let len = Math.max(a.length, b.length);\n\n for (let i = 0; i < len; i += 1) {\n if ((a[i] && !b[i] && parseInt(a[i]) > 0) || (parseInt(a[i]) > parseInt(b[i]))) {\n return 1;\n } else if ((b[i] && !a[i] && parseInt(b[i]) > 0) || (parseInt(a[i]) < parseInt(b[i]))) {\n return -1;\n }\n }\n\n return 0;\n };\n\n}\n\nassignToNamespace('Monster.Types', Version);\n\n\nlet monsterVersion;\n\n/**\n * Version of monster\n *\n * You can call the method via the monster namespace `Monster.getVersion()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/version.js';\n * console.log(Monster.getVersion())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getVersion} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/types/version.js';\n * console.log(getVersion())\n * </script>\n * ```\n *\n * @returns {Monster.Types.Version}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @author schukai GmbH\n * @memberOf Monster\n */\nfunction getVersion() {\n if (monsterVersion instanceof Version) {\n return monsterVersion;\n }\n /**#@+ dont touch, replaced by make with package.json version */\n monsterVersion = new Version('1.17.1')\n /**#@-*/\n\n return monsterVersion;\n\n}\n\nassignToNamespace('Monster', getVersion);\nexport {Monster, Version, getVersion}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {isFunction} from '../types/is.js';\n\n/**\n * The comparator allows a comparison function to be abstracted.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/util/comparator.js';\n * console.log(new Monster.Util.Comparator())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/util/comparator.js';\n * console.log(new Comparator())\n * </script>\n * ```\n *\n * The following are some examples of the application of the class.\n *\n * ```\n * new Comparator().lessThanOrEqual(2, 5) // ↦ true\n * new Comparator().greaterThan(4, 2) // ↦ true\n * new Comparator().equal(4, 4) // ↦ true\n * new Comparator().equal(4, 5) // ↦ false\n * ```\n *\n * You can also pass your own comparison function, and thus define the comparison function.\n *\n * ```\n * new Comparator(function (a, b) {\n * if (a.v === b.v) return 0;\n * return a.v < b.v ? -1 : 1;\n * }).equal({v: 2}, {v: 2}); // ↦ true\n * ```\n *\n * @example\n *\n * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/util/comparator.js';\n *\n * console.log(new Comparator().lessThanOrEqual(2, 5))\n * // ↦ true\n * console.log(new Comparator().greaterThan(4, 2))\n * // ↦ true\n * console.log(new Comparator().equal(4, 4))\n * // ↦ true\n * console.log(new Comparator().equal(4, 5))\n * // ↦ false\n *\n * @since 1.3.0\n * @memberOf Monster.Util\n */\nclass Comparator extends Base {\n\n /**\n * create new comparator\n *\n * @param {Monster.Util~exampleCallback} [callback] Comparator callback\n * @throw {TypeError} unsupported type\n * @throw {TypeError} impractical comparison\n */\n constructor(callback) {\n super();\n\n if (isFunction(callback)) {\n this.compare = callback\n } else if (callback !== undefined) {\n throw new TypeError(\"unsupported type\")\n } else {\n // default compare function\n\n /**\n *\n * @param {*} a\n * @param {*} b\n * @return {integer} -1, 0 or 1\n */\n this.compare = function (a, b) {\n\n if (typeof a !== typeof b) {\n throw new TypeError(\"impractical comparison\")\n }\n\n if (a === b) {\n return 0;\n }\n return a < b ? -1 : 1;\n };\n }\n\n }\n\n /**\n * changes the order of the operators\n *\n * @return {Comparator}\n */\n reverse() {\n const original = this.compare;\n this.compare = (a, b) => original(b, a);\n return this;\n }\n\n /**\n * Checks if two variables are equal.\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n equal(a, b) {\n return this.compare(a, b) === 0;\n }\n\n\n /**\n * Checks if variable `a` is greater than `b`\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n greaterThan(a, b) {\n return this.compare(a, b) > 0;\n }\n\n /**\n * Checks if variable `a` is greater than or equal to `b`\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n greaterThanOrEqual(a, b) {\n return this.greaterThan(a, b) || this.equal(a, b);\n }\n\n /**\n * Checks if variable `a` is less than or equal to `b`\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n lessThanOrEqual(a, b) {\n return this.lessThan(a, b) || this.equal(a, b);\n }\n\n /**\n * Checks if variable a is less than b\n *\n * @param {*} a\n * @param {*} b\n *\n * @return {boolean}\n */\n lessThan(a, b) {\n return this.compare(a, b) < 0;\n }\n\n\n}\n\n\n/**\n * This is the description for the callback function used by the operator\n *\n * ```\n * new Comparator(function (a, b) {\n * if (a.v === b.v) return 0;\n * return a.v < b.v ? -1 : 1;\n * }).equal({v: 2}, {v: 2}); // ↦ true\n * ```\n *\n * @callback Monster.Util~exampleCallback\n * @param {*} a\n * @param {*} b\n * @return {integer} -1, 0 or 1\n * @memberOf Monster.Util\n * @see Monster.Util.Comparator\n */\n\n\n/**\n *\n */\nassignToNamespace('Monster.Util', Comparator);\nexport {Monster, Comparator}\n","'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {assignToNamespace, Monster} from '../namespace.js';\nimport {validateObject} from '../types/validate.js';\n\n/**\n * Deep freeze a object\n *\n * You can call the method via the monster namespace `Monster.Util.deepFreeze()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/util/freeze.js';\n * console.log(Monster.Util.deepFreeze({}))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {deepFreeze} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.17.1/dist/modules/util/freeze.js';\n * console.log(deepFreeze({}))\n * </script>\n * ```\n *\n * @param {object} object object to be freeze\n * @since 1.0.0\n * @returns {object}\n * @memberOf Monster.Util\n * @copyright schukai GmbH\n * @throws {TypeError} value is not a object\n */\nfunction deepFreeze(object) {\n\n validateObject(object)\n\n // Retrieve the defined property names of the object\n var propNames = Object.getOwnPropertyNames(object);\n\n // Freeze properties before freezing yourself\n for (let name of propNames) {\n let value = object[name];\n\n object[name] = value && typeof value === \"object\" ?\n deepFreeze(value) : value;\n }\n\n return Object.freeze(object);\n}\n\nassignToNamespace('Monster.Util', deepFreeze);\nexport {Monster, deepFreeze}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2021 schukai GmbH\n * SPDX-License-Identifier: AGPL-3.0-only or COMMERCIAL\n * @author schukai GmbH\n */\n\n'use strict';\n\nimport './constants.js';\nimport './constraints/abstract.js';\nimport './constraints/abstractoperator.js';\nimport './constraints/andoperator.js';\nimport './constraints/invalid.js';\nimport './constraints/isarray.js';\n\n// find packages/monster/source/ -type f -name \"*.js\" -not -name \"*namespace*\" -not -iname \"monster.js\"\nimport './constraints/isobject.js';\nimport './constraints/oroperator.js';\nimport './constraints/valid.js';\nimport './data/buildmap.js';\nimport './data/diff.js';\nimport './data/extend.js';\nimport './data/pathfinder.js';\nimport './data/pipe.js';\nimport './data/transformer.js';\nimport './dom/assembler.js';\nimport './dom/attributes.js';\nimport './dom/constants.js';\nimport './dom/customcontrol.js';\nimport './dom/customelement.js';\nimport './dom/events.js';\nimport './dom/locale.js';\nimport './dom/template.js';\nimport './dom/theme.js';\nimport './dom/updater.js';\nimport './dom/util.js';\nimport './i18n/locale.js';\nimport './i18n/provider.js';\nimport './i18n/providers/fetch.js';\nimport './i18n/translations.js';\nimport './logging/handler.js';\nimport './logging/handler/console.js';\nimport './logging/logentry.js';\nimport './logging/logger.js';\nimport './math/random.js';\nimport {Monster} from './namespace.js';\nimport './text/formatter.js';\nimport './types/base.js';\nimport './types/basewithoptions.js';\nimport './types/global.js';\nimport './types/id.js';\nimport './types/is.js';\nimport './types/observer.js';\nimport './types/observerlist.js';\nimport './types/proxyobserver.js';\nimport './types/queue.js';\nimport './types/randomid.js';\nimport './types/stack.js';\nimport './types/tokenlist.js';\nimport './types/typeof.js';\nimport './types/uniquequeue.js';\nimport './types/validate.js';\nimport './types/version.js';\nimport './util/clone.js';\nimport './util/comparator.js';\nimport './util/freeze.js';\n\n\nlet rootName\ntry {\n rootName = Monster.Types.getGlobalObject('__MonsterRootName__');\n} catch (e) {\n\n}\n\nif (!rootName) rootName = \"Monster\";\n\nMonster.Types.getGlobal()[rootName] = Monster\nexport {Monster};"],"names":["Monster","PROPERTY_KEY_INTERNALDATA","Namespace","namespace","undefined","Error","getNamespace","assignToNamespace","ns","current","namespaceFor","split","i","l","objectName","fn","hasOwnProperty","name","toString","s","f","match","Array","isArray","c","e","parts","space","length","Base","AbstractConstraint","value","Promise","reject","JSON","stringify","Object","AbstractOperator","operantA","operantB","TypeError","AndOperator","all","isValid","Invalid","IsArray","resolve","isIterable","Symbol","iterator","isPrimitive","type","NaN","isSymbol","isBoolean","isString","isObject","isInstance","instance","isFunction","isInteger","Number","IsObject","OrOperator","self","a","b","then","catch","Valid","validateString","clone","DELIMITER","Pathfinder","WILDCARD","buildMap","subject","selector","valueTemplate","keyTemplate","filter","result","Map","map","buildFlatMap","call","forEach","v","k","m","build","set","key","parentMap","currentMap","resultLength","size","currentPath","shift","push","finder","getVia","join","o","copyKey","kk","sub","definition","defaultValue","regexp","array","matchAll","groups","placeholder","path","replaceAll","validateIterable","validatePrimitive","validateBoolean","validateObject","validateInstance","n","validateArray","validateSymbol","validateFunction","validateInteger","getGlobal","obj","copy","len","Date","setTime","getTime","Element","HTMLDocument","DocumentFragment","globalContext","window","document","navigator","Proxy","cloneObject","getClone","constructor","Types","globalReference","globalThis","defineProperty","prototype","get","configurable","__monster__","Function","getGlobalObject","getGlobalFunction","Stack","object","wildCard","wildcard","getValueViaPath","setValueViaPath","deleteValueViaPath","iterate","check","entries","anchor","WeakMap","Set","WeakSet","parseInt","WeakRef","last","pop","subpath","stack","isEmpty","peek","append","assignProperty","delete","data","typeOf","Diff","first","second","doDiff","getKeys","keys","fill","_","concat","diff","typeA","typeB","currPath","currDiff","buildResult","getOperator","operator","getPrototypeOf","isNotEqual","results","exec","toLowerCase","extend","arguments","Transformer","Pipe","pipe","callback","context","t","setCallback","reduce","accumulator","transformer","currentIndex","run","ID","args","disassemble","command","callbacks","transform","apply","regex","g","p","r","replace","trim","convertToString","toUpperCase","parse","encodeURIComponent","callbackName","has","unshift","doc","DOMParser","parseFromString","body","textContent","trueStatement","falseStatement","condition","firstchar","charAt","substr","btoa","prefix","suffix","start","end","substring","internalCounter","count","id","ProxyObserver","ATTRIBUTEPREFIX","Assembler","fragment","attributePrefix","cloneNode","Observer","ObserverList","realSubject","getHandler","objectMap","proxyMap","observers","observer","attach","detach","notify","contains","proxy","handler","target","receiver","Reflect","descriptor","getOwnPropertyDescriptor","writable","enumerable","deleteProperty","setPrototypeOf","object1","TokenList","UniqueQueue","tags","queue","tag","add","remove","setTimeout","poll","init","tokens","index","next","done","counter","token","clear","newToken","from","indexOf","splice","toggleValue","Queue","unique","pomises","update","ATTRIBUTE_OBJECTLINK","findClosestObjectLink","element","findClosestByAttribute","addToObjectLink","symbol","HTMLElement","addAttributeToken","removeObjectLink","removeAttributeToken","hasObjectLink","containsAttributeToken","getLinkedObjects","toggleAttributeToken","hasAttribute","setAttribute","getAttribute","toggle","replaceAttributeToken","to","clearAttributeTokens","closest","ATTRIBUTE_PREFIX","ATTRIBUTE_OPTIONS","DEFAULT_THEME","ATTRIBUTE_THEME_PREFIX","ATTRIBUTE_THEME_NAME","ATTRIBUTE_UPDATER_ATTRIBUTES","ATTRIBUTE_UPDATER_REPLACE","ATTRIBUTE_UPDATER_INSERT","ATTRIBUTE_UPDATER_INSERT_REFERENCE","ATTRIBUTE_UPDATER_REMOVE","ATTRIBUTE_UPDATER_BIND","ATTRIBUTE_ROLE","OBJECTLINK_KEY_UPDATER","CustomElement","internalSymbol","CustomControl","attachInternals","getInternal","labels","getTag","validity","validationMessage","willValidate","states","form","state","setFormValue","flags","message","setValidity","checkValidity","reportValidity","findDocumentTemplate","Template","Updater","internalDataSymbol","for","objectLinkSymbol","initMethodSymbol","assembleMethodSymbol","defaults","getOptionsFromAttributes","initOptionObserver","shadowMode","delegatesFocus","templates","main","attachObserver","detachObserver","containsObserver","getRealSubject","getSubject","setVia","options","parseOptionsJSON","elements","getOption","initShadowRoot","shadowRoot","childNodes","initCSSStylesheet","NodeList","initHtmlContent","updater","HTMLTemplateElement","u","enableEventProcessing","attrName","oldVal","newVal","setOptions","updaters","list","d","assign","template","appendChild","createDocumentFragment","html","innerHTML","ShadowRoot","styleSheet","getCSSStyleSheet","CSSStyleSheet","adoptedStyleSheets","style","createElement","innerText","attachShadow","mode","registerCustomElement","define","getDocumentTheme","content","currentNode","Document","Node","getRootNode","ownerDocument","theme","themedID","getName","getElementById","Theme","querySelector","getDocument","getCheckStateCallback","change","removeElement","insertElement","updateContent","updateAttributes","eventTypes","types","disableEventProcessing","addEventListener","getControlEventHandler","removeEventListener","notifyObservers","HTMLInputElement","HTMLOptionElement","pathfinder","event","checked","HTMLTextAreaElement","HTMLSelectElement","selectedOptions","querySelectorAll","pf","parentNode","removeChild","mem","wd","found","containerElement","attributes","def","refPrefix","cmd","dataPath","insertPoint","hasChildNodes","lastChild","available","ref","refElement","appendNewDocumentFragment","nodes","node","container","applyRecursive","child","runUpdateContent","firstChild","addNode","runUpdateAttributes","removeAttribute","handleInputControlAttributeUpdate","opt","selected","selectedIndex","getWindow","getDocumentFragmentFromString","fireEvent","click","Event","bubbles","cancelable","dispatchEvent","HTMLCollection","findTargetElementFromEvent","attributeName","attributeValue","composedPath","parseLocale","DEFAULT_LANGUAGE","getLocaleOfDocument","locale","propertiesSymbol","localeStringSymbol","Locale","language","region","script","variants","extlang","privateUse","privateValue","localeString","regexRegular","regexIrregular","regexGrandfathered","regexPrivateUse","regexSingleton","regexExtension","regexVariant","regexRegion","regexScript","regexExtlang","regexLanguage","regexLangtag","regexLanguageTag","RegExp","lastIndex","BaseWithOptions","Translations","Provider","optionsSymbol","storage","defaultText","getPluralRuleText","keyword","toLocaleString","Intl","PluralRules","select","DEFAULT_KEY","text","translations","setText","Formatter","Fetch","url","URL","fetch","method","cache","credentials","redirect","referrerPolicy","formatter","getMap","format","response","json","assignTranslations","openMarker","closeMarker","open","close","tokenizer","formatted","startIndex","endIndex","LogEntry","ALL","DEBUG","ERROR","FATAL","INFO","OFF","TRACE","WARN","Handler","loglevel","entry","getLogLevel","setLogLevel","Logger","triggerLog","level","label","logger","log","ConsoleHandler","console","random","min","max","MAX","Math","round","create","log2","crypt","rval","range","bitsNeeded","ceil","bytesNeeded","mask","pow","byteArray","Uint8Array","getRandomValues","RandomID","Version","major","minor","patch","isNaN","version","monsterVersion","getVersion","Comparator","compare","original","greaterThan","equal","lessThan","deepFreeze","propNames","getOwnPropertyNames","freeze","rootName"],"sourceRoot":""}