@schukai/monster 3.65.0 → 3.65.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/CHANGELOG.md +48 -327
  2. package/README.md +44 -40
  3. package/package.json +1 -48
  4. package/source/components/constants.mjs +10 -3
  5. package/source/components/datatable/change-button.mjs +18 -11
  6. package/source/components/datatable/columnbar.mjs +10 -1
  7. package/source/components/datatable/constants.mjs +11 -4
  8. package/source/components/datatable/dataset.mjs +212 -203
  9. package/source/components/datatable/datasource/dom.mjs +14 -1
  10. package/source/components/datatable/datasource/rest.mjs +10 -1
  11. package/source/components/datatable/datasource.mjs +10 -1
  12. package/source/components/datatable/datatable/header.mjs +220 -218
  13. package/source/components/datatable/datatable.mjs +754 -752
  14. package/source/components/datatable/embedded-pagination.mjs +10 -1
  15. package/source/components/datatable/filter/abstract-base.mjs +10 -1
  16. package/source/components/datatable/filter/date-range.mjs +10 -1
  17. package/source/components/datatable/filter/input.mjs +10 -1
  18. package/source/components/datatable/filter/range.mjs +10 -1
  19. package/source/components/datatable/filter/select.mjs +11 -4
  20. package/source/components/datatable/filter/settings.mjs +14 -0
  21. package/source/components/datatable/filter/util.mjs +14 -0
  22. package/source/components/datatable/filter-button.mjs +10 -1
  23. package/source/components/datatable/filter.mjs +15 -11
  24. package/source/components/datatable/pagination.mjs +18 -9
  25. package/source/components/datatable/save-button.mjs +280 -270
  26. package/source/components/datatable/status.mjs +15 -5
  27. package/source/components/datatable/stylesheet/change-button.mjs +16 -7
  28. package/source/components/datatable/stylesheet/column-bar.mjs +16 -7
  29. package/source/components/datatable/stylesheet/dataset.mjs +16 -7
  30. package/source/components/datatable/stylesheet/datasource.mjs +16 -7
  31. package/source/components/datatable/stylesheet/datatable.mjs +16 -7
  32. package/source/components/datatable/stylesheet/embedded-pagination.mjs +16 -7
  33. package/source/components/datatable/stylesheet/filter-button.mjs +16 -7
  34. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +16 -7
  35. package/source/components/datatable/stylesheet/filter-date-range.mjs +16 -7
  36. package/source/components/datatable/stylesheet/filter-range.mjs +16 -7
  37. package/source/components/datatable/stylesheet/filter.mjs +16 -7
  38. package/source/components/datatable/stylesheet/pagination.mjs +16 -7
  39. package/source/components/datatable/stylesheet/save-button.mjs +16 -7
  40. package/source/components/datatable/stylesheet/select-filter.mjs +16 -7
  41. package/source/components/datatable/stylesheet/status.mjs +16 -7
  42. package/source/components/datatable/util.mjs +16 -8
  43. package/source/components/form/action-button.mjs +11 -3
  44. package/source/components/form/api-button.mjs +11 -3
  45. package/source/components/form/button-bar.mjs +11 -3
  46. package/source/components/form/button.mjs +254 -249
  47. package/source/components/form/confirm-button.mjs +11 -3
  48. package/source/components/form/constants.mjs +10 -3
  49. package/source/components/form/context-error.mjs +69 -52
  50. package/source/components/form/context-help.mjs +11 -3
  51. package/source/components/form/field-set.mjs +10 -15
  52. package/source/components/form/form.mjs +12 -4
  53. package/source/components/form/message-state-button.mjs +11 -3
  54. package/source/components/form/popper-button.mjs +11 -3
  55. package/source/components/form/popper.mjs +6 -6
  56. package/source/components/form/reload.mjs +12 -4
  57. package/source/components/form/select.mjs +44 -33
  58. package/source/components/form/shadow-reload.mjs +11 -3
  59. package/source/components/form/state-button.mjs +11 -3
  60. package/source/components/form/stylesheet/action-button.mjs +16 -7
  61. package/source/components/form/stylesheet/api-button.mjs +16 -7
  62. package/source/components/form/stylesheet/button-bar.mjs +16 -7
  63. package/source/components/form/stylesheet/button.mjs +16 -7
  64. package/source/components/form/stylesheet/confirm-button.mjs +16 -7
  65. package/source/components/form/stylesheet/context-error.mjs +16 -7
  66. package/source/components/form/stylesheet/context-help.mjs +16 -7
  67. package/source/components/form/stylesheet/field-set.mjs +16 -7
  68. package/source/components/form/stylesheet/form.mjs +16 -7
  69. package/source/components/form/stylesheet/message-state-button.mjs +16 -7
  70. package/source/components/form/stylesheet/popper-button.mjs +16 -7
  71. package/source/components/form/stylesheet/select.mjs +16 -7
  72. package/source/components/form/stylesheet/state-button.mjs +16 -7
  73. package/source/components/form/stylesheet/toggle-switch.mjs +16 -7
  74. package/source/components/form/stylesheet/tree-select.mjs +16 -7
  75. package/source/components/form/tabs.mjs +12 -8
  76. package/source/components/form/template.mjs +11 -3
  77. package/source/components/form/toggle-switch.mjs +12 -8
  78. package/source/components/form/tree-select.mjs +10 -3
  79. package/source/components/form/types/state.mjs +10 -3
  80. package/source/components/form/util/fetch.mjs +10 -3
  81. package/source/components/form/util/floating-ui.mjs +10 -3
  82. package/source/components/form/util/popper.mjs +10 -3
  83. package/source/components/host/call-button.mjs +10 -1
  84. package/source/components/host/collapse.mjs +4 -6
  85. package/source/components/host/config-manager.mjs +2 -0
  86. package/source/components/host/constants.mjs +2 -0
  87. package/source/components/host/details.mjs +5 -8
  88. package/source/components/host/host.mjs +10 -1
  89. package/source/components/host/overlay.mjs +10 -1
  90. package/source/components/host/stylesheet/call-button.mjs +16 -7
  91. package/source/components/host/stylesheet/config-manager.mjs +16 -7
  92. package/source/components/host/stylesheet/host.mjs +16 -7
  93. package/source/components/host/stylesheet/overlay.mjs +16 -7
  94. package/source/components/host/stylesheet/toggle-button.mjs +16 -7
  95. package/source/components/host/stylesheet/viewer.mjs +16 -7
  96. package/source/components/host/toggle-button.mjs +10 -1
  97. package/source/components/host/util.mjs +14 -0
  98. package/source/components/host/viewer.mjs +10 -1
  99. package/source/components/layout/collapse.mjs +4 -3
  100. package/source/components/layout/details.mjs +2 -0
  101. package/source/components/layout/panel.mjs +179 -169
  102. package/source/components/layout/popper.mjs +324 -320
  103. package/source/components/layout/split-panel.mjs +329 -303
  104. package/source/components/layout/stylesheet/collapse.mjs +16 -7
  105. package/source/components/layout/stylesheet/details.mjs +16 -7
  106. package/source/components/layout/stylesheet/panel.mjs +16 -7
  107. package/source/components/layout/stylesheet/popper.mjs +16 -7
  108. package/source/components/layout/stylesheet/split-panel.mjs +16 -7
  109. package/source/components/layout/stylesheet/tabs.mjs +16 -7
  110. package/source/components/layout/stylesheet/width-toggle.mjs +16 -7
  111. package/source/components/layout/tabs.mjs +39 -24
  112. package/source/components/layout/width-toggle.mjs +148 -138
  113. package/source/components/navigation/style/table-of-content.pcss +20 -5
  114. package/source/components/navigation/stylesheet/table-of-content.mjs +17 -8
  115. package/source/components/navigation/table-of-content.mjs +394 -266
  116. package/source/components/notify/constants.mjs +10 -3
  117. package/source/components/notify/message.mjs +16 -9
  118. package/source/components/notify/notify.mjs +11 -4
  119. package/source/components/notify/stylesheet/message.mjs +16 -7
  120. package/source/components/notify/stylesheet/notify.mjs +16 -7
  121. package/source/components/state/log/entry.mjs +10 -1
  122. package/source/components/state/log.mjs +10 -1
  123. package/source/components/state/state.mjs +10 -1
  124. package/source/components/state/stylesheet/log.mjs +16 -7
  125. package/source/components/state/stylesheet/state.mjs +16 -7
  126. package/source/components/style/mixin/form.pcss +0 -1
  127. package/source/components/stylesheet/badge.mjs +16 -7
  128. package/source/components/stylesheet/border.mjs +16 -7
  129. package/source/components/stylesheet/button.mjs +16 -7
  130. package/source/components/stylesheet/card.mjs +16 -7
  131. package/source/components/stylesheet/color.mjs +16 -7
  132. package/source/components/stylesheet/common.mjs +16 -7
  133. package/source/components/stylesheet/control.mjs +16 -7
  134. package/source/components/stylesheet/data-grid.mjs +16 -7
  135. package/source/components/stylesheet/display.mjs +16 -7
  136. package/source/components/stylesheet/floating-ui.mjs +16 -7
  137. package/source/components/stylesheet/form.mjs +16 -7
  138. package/source/components/stylesheet/host.mjs +16 -7
  139. package/source/components/stylesheet/icons.mjs +16 -7
  140. package/source/components/stylesheet/link.mjs +16 -7
  141. package/source/components/stylesheet/mixin/badge.mjs +16 -7
  142. package/source/components/stylesheet/mixin/button.mjs +16 -7
  143. package/source/components/stylesheet/mixin/form.mjs +16 -7
  144. package/source/components/stylesheet/mixin/hover.mjs +16 -7
  145. package/source/components/stylesheet/mixin/icon.mjs +16 -7
  146. package/source/components/stylesheet/mixin/media.mjs +16 -7
  147. package/source/components/stylesheet/mixin/property.mjs +16 -7
  148. package/source/components/stylesheet/mixin/skeleton.mjs +16 -7
  149. package/source/components/stylesheet/mixin/spinner.mjs +16 -7
  150. package/source/components/stylesheet/mixin/typography.mjs +16 -7
  151. package/source/components/stylesheet/normalize.mjs +16 -7
  152. package/source/components/stylesheet/popper.mjs +16 -7
  153. package/source/components/stylesheet/property.mjs +16 -7
  154. package/source/components/stylesheet/ripple.mjs +16 -7
  155. package/source/components/stylesheet/skeleton.mjs +16 -7
  156. package/source/components/stylesheet/space.mjs +16 -7
  157. package/source/components/stylesheet/spinner.mjs +16 -7
  158. package/source/components/stylesheet/table.mjs +16 -7
  159. package/source/components/stylesheet/theme.mjs +16 -7
  160. package/source/components/stylesheet/tree-menu.mjs +10 -3
  161. package/source/components/stylesheet/typography.mjs +16 -7
  162. package/source/components/tree-menu/stylesheet/tree-menu.mjs +16 -7
  163. package/source/components/tree-menu/tree-menu.mjs +19 -8
  164. package/source/constants.mjs +10 -6
  165. package/source/constraints/abstract.mjs +10 -3
  166. package/source/constraints/abstractoperator.mjs +10 -3
  167. package/source/constraints/andoperator.mjs +10 -3
  168. package/source/constraints/invalid.mjs +10 -3
  169. package/source/constraints/isarray.mjs +10 -3
  170. package/source/constraints/isobject.mjs +10 -3
  171. package/source/constraints/oroperator.mjs +10 -3
  172. package/source/constraints/valid.mjs +10 -3
  173. package/source/data/buildmap.mjs +10 -3
  174. package/source/data/buildtree.mjs +10 -3
  175. package/source/data/datasource/dom.mjs +95 -87
  176. package/source/data/datasource/server/restapi/data-fetch-error.mjs +10 -3
  177. package/source/data/datasource/server/restapi/writeerror.mjs +10 -3
  178. package/source/data/datasource/server/restapi.mjs +10 -3
  179. package/source/data/datasource/server/webconnect.mjs +10 -3
  180. package/source/data/datasource/server.mjs +10 -3
  181. package/source/data/datasource/storage/localstorage.mjs +10 -3
  182. package/source/data/datasource/storage/sessionstorage.mjs +10 -3
  183. package/source/data/datasource/storage.mjs +10 -3
  184. package/source/data/datasource.mjs +10 -3
  185. package/source/data/diff.mjs +10 -3
  186. package/source/data/extend.mjs +10 -3
  187. package/source/data/pathfinder.mjs +10 -3
  188. package/source/data/pipe.mjs +10 -3
  189. package/source/data/transformer.mjs +34 -10
  190. package/source/dom/assembler.mjs +10 -3
  191. package/source/dom/attributes.mjs +10 -3
  192. package/source/dom/constants.mjs +10 -3
  193. package/source/dom/customcontrol.mjs +11 -4
  194. package/source/dom/customelement.mjs +31 -17
  195. package/source/dom/dimension.mjs +10 -3
  196. package/source/dom/events.mjs +10 -3
  197. package/source/dom/focusmanager.mjs +10 -3
  198. package/source/dom/locale.mjs +10 -3
  199. package/source/dom/ready.mjs +2 -1
  200. package/source/dom/resource/data.mjs +133 -123
  201. package/source/dom/resource/link/stylesheet.mjs +10 -3
  202. package/source/dom/resource/link.mjs +10 -3
  203. package/source/dom/resource/script.mjs +10 -3
  204. package/source/dom/resource.mjs +10 -4
  205. package/source/dom/resourcemanager.mjs +10 -3
  206. package/source/dom/slotted.mjs +14 -0
  207. package/source/dom/template.mjs +124 -136
  208. package/source/dom/theme.mjs +10 -3
  209. package/source/dom/updater.mjs +10 -3
  210. package/source/dom/util/extract-keys.mjs +10 -3
  211. package/source/dom/util/init-options-from-attributes.mjs +68 -61
  212. package/source/dom/util/set-option-from-attribute.mjs +10 -3
  213. package/source/dom/util.mjs +11 -4
  214. package/source/dom/worker/factory.mjs +10 -3
  215. package/source/i18n/formatter.mjs +10 -3
  216. package/source/i18n/locale.mjs +10 -3
  217. package/source/i18n/provider.mjs +10 -3
  218. package/source/i18n/providers/embed.mjs +10 -3
  219. package/source/i18n/providers/fetch.mjs +10 -3
  220. package/source/i18n/translations.mjs +10 -3
  221. package/source/logging/handler/console.mjs +10 -3
  222. package/source/logging/handler.mjs +10 -3
  223. package/source/logging/logentry.mjs +10 -3
  224. package/source/logging/logger.mjs +10 -3
  225. package/source/math/random.mjs +10 -3
  226. package/source/monster.mjs +3 -9
  227. package/source/net/webconnect/message.mjs +10 -3
  228. package/source/net/webconnect.mjs +20 -5
  229. package/source/text/bracketed-key-value-hash.mjs +10 -3
  230. package/source/text/formatter.mjs +10 -3
  231. package/source/text/generate-range-comparison-expression.mjs +10 -3
  232. package/source/text/util.mjs +14 -0
  233. package/source/types/base.mjs +10 -3
  234. package/source/types/basewithoptions.mjs +10 -3
  235. package/source/types/binary.mjs +10 -3
  236. package/source/types/dataurl.mjs +10 -3
  237. package/source/types/global.mjs +14 -7
  238. package/source/types/id.mjs +10 -3
  239. package/source/types/internal.mjs +11 -3
  240. package/source/types/is.mjs +10 -3
  241. package/source/types/mediatype.mjs +10 -3
  242. package/source/types/node.mjs +10 -3
  243. package/source/types/nodelist.mjs +10 -3
  244. package/source/types/noderecursiveiterator.mjs +10 -3
  245. package/source/types/observablequeue.mjs +10 -3
  246. package/source/types/observer.mjs +10 -3
  247. package/source/types/observerlist.mjs +10 -3
  248. package/source/types/proxyobserver.mjs +10 -3
  249. package/source/types/queue.mjs +10 -3
  250. package/source/types/randomid.mjs +10 -3
  251. package/source/types/regex.mjs +10 -3
  252. package/source/types/stack.mjs +10 -3
  253. package/source/types/tokenlist.mjs +10 -3
  254. package/source/types/typeof.mjs +10 -3
  255. package/source/types/uniquequeue.mjs +10 -3
  256. package/source/types/uuid.mjs +10 -3
  257. package/source/types/validate.mjs +10 -3
  258. package/source/types/version.mjs +10 -3
  259. package/source/util/clone.mjs +10 -3
  260. package/source/util/comparator.mjs +10 -3
  261. package/source/util/deadmansswitch.mjs +10 -3
  262. package/source/util/freeze.mjs +10 -3
  263. package/source/util/processing.mjs +10 -3
  264. package/source/util/runtime.mjs +10 -7
  265. package/source/util/sleep.mjs +10 -10
  266. package/source/util/trimspaces.mjs +10 -3
  267. package/test/cases/data/datasource/server/websocket.mjs +7 -9
  268. package/test/cases/data/transformer.mjs +47 -15
  269. package/test/cases/dom/customcontrol.mjs +0 -1
  270. package/test/cases/dom/customelement.mjs +1 -3
  271. package/test/cases/dom/template.mjs +3 -1
  272. package/test/util/jsdom.mjs +8 -7
  273. package/test/util/websocket.mjs +5 -1
  274. package/test/web/import.js +2 -1
  275. package/test/web/puppeteer.mjs +111 -0
  276. package/test/web/test.html +2 -2
  277. package/test/web/tests.js +2036 -1189
  278. package/example/components/form/button.mjs +0 -10
  279. package/example/components/form/field-set.mjs +0 -4
  280. package/example/components/form/select.mjs +0 -25
  281. package/example/components/form/toggle-switch.mjs +0 -7
  282. package/example/components/form/tree-select.mjs +0 -27
  283. package/example/components/host/host.mjs +0 -0
  284. package/example/components/notify/message.mjs +0 -4
  285. package/example/components/notify/notify.mjs +0 -4
  286. package/example/components/state/log.mjs +0 -0
  287. package/example/components/state/state.mjs +0 -0
  288. package/example/constraints/andoperator.mjs +0 -17
  289. package/example/constraints/invalid.mjs +0 -6
  290. package/example/constraints/isarray.mjs +0 -11
  291. package/example/constraints/isobject.mjs +0 -12
  292. package/example/constraints/oroperator.mjs +0 -15
  293. package/example/constraints/valid.mjs +0 -6
  294. package/example/data/buildmap.mjs +0 -67
  295. package/example/data/datasource/server/restapi.mjs +0 -20
  296. package/example/data/datasource/server/webconnect.mjs +0 -9
  297. package/example/data/datasource.mjs +0 -7
  298. package/example/data/diff.mjs +0 -39
  299. package/example/data/pathfinder-1.mjs +0 -23
  300. package/example/data/pathfinder-2.mjs +0 -19
  301. package/example/data/pipe.mjs +0 -14
  302. package/example/data/transformer.mjs +0 -9
  303. package/example/dom/customelement.mjs +0 -14
  304. package/example/dom/theme.mjs +0 -5
  305. package/example/dom/updater.mjs +0 -23
  306. package/example/i18n/formatter.mjs +0 -10
  307. package/example/i18n/providers/embed.mjs +0 -5
  308. package/example/i18n/providers/fetch.mjs +0 -5
  309. package/example/i18n/translations.mjs +0 -20
  310. package/example/net/webconnect.mjs +0 -16
  311. package/example/types/basewithoptions.mjs +0 -10
  312. package/example/types/is-1.mjs +0 -5
  313. package/example/types/is-10.mjs +0 -6
  314. package/example/types/is-2.mjs +0 -4
  315. package/example/types/is-3.mjs +0 -4
  316. package/example/types/is-4.mjs +0 -5
  317. package/example/types/is-5.mjs +0 -4
  318. package/example/types/is-6.mjs +0 -4
  319. package/example/types/is-7.mjs +0 -4
  320. package/example/types/is-8.mjs +0 -4
  321. package/example/types/is-9.mjs +0 -6
  322. package/example/types/noderecursiveiterator.mjs +0 -32
  323. package/example/types/observer.mjs +0 -9
  324. package/example/types/proxyobserver.mjs +0 -25
  325. package/example/types/queue.mjs +0 -20
  326. package/example/types/tokenlist-1.mjs +0 -4
  327. package/example/types/tokenlist-2.mjs +0 -7
  328. package/example/types/tokenlist-3.mjs +0 -5
  329. package/example/types/tokenlist-4.mjs +0 -5
  330. package/example/types/tokenlist-5.mjs +0 -5
  331. package/example/types/typeof.mjs +0 -9
  332. package/example/types/version-1.mjs +0 -6
  333. package/example/types/version-2.mjs +0 -3
  334. package/example/util/comparator.mjs +0 -10
  335. package/example/util/deadmansswitch.mjs +0 -9
  336. package/example/util/processing.mjs +0 -17
  337. package/source/components/datatable/datasource/namespace.mjs +0 -13
  338. package/source/components/datatable/datatable/namespace.mjs +0 -13
  339. package/source/components/datatable/events.mjs +0 -24
  340. package/source/components/datatable/filter/namespace.mjs +0 -13
  341. package/source/components/datatable/namespace.mjs +0 -11
  342. package/source/components/datatable/stylesheet/namespace.mjs +0 -13
  343. package/source/components/events.mjs +0 -17
  344. package/source/components/form/events.mjs +0 -108
  345. package/source/components/form/namespace.mjs +0 -13
  346. package/source/components/form/stylesheet/namespace.mjs +0 -13
  347. package/source/components/form/types/namespace.mjs +0 -13
  348. package/source/components/form/util/namespace.mjs +0 -13
  349. package/source/components/host/events.mjs +0 -131
  350. package/source/components/host/namespace.mjs +0 -13
  351. package/source/components/host/stylesheet/namespace.mjs +0 -13
  352. package/source/components/layout/events.mjs +0 -30
  353. package/source/components/layout/namespace.mjs +0 -13
  354. package/source/components/namespace.mjs +0 -14
  355. package/source/components/notify/events.mjs +0 -15
  356. package/source/components/notify/namespace.mjs +0 -15
  357. package/source/components/notify/stylesheet/namespace.mjs +0 -15
  358. package/source/components/state/log/namespace.mjs +0 -13
  359. package/source/components/state/namespace.mjs +0 -13
  360. package/source/components/stylesheet/namespace.mjs +0 -13
  361. package/source/components/tree-menu/namespace.mjs +0 -13
  362. package/source/components/tree-menu/stylesheet/namespace.mjs +0 -13
  363. package/source/constraints/namespace.mjs +0 -13
  364. package/source/data/datasource/namespace.mjs +0 -13
  365. package/source/data/datasource/server/namespace.mjs +0 -13
  366. package/source/data/datasource/server/restapi/namespace.mjs +0 -13
  367. package/source/data/datasource/storage/namespace.mjs +0 -13
  368. package/source/data/namespace.mjs +0 -13
  369. package/source/dom/namespace.mjs +0 -13
  370. package/source/dom/resource/link/namespace.mjs +0 -13
  371. package/source/dom/resource/namespace.mjs +0 -13
  372. package/source/dom/util/namespace.mjs +0 -13
  373. package/source/dom/worker/namespace.mjs +0 -13
  374. package/source/i18n/namespace.mjs +0 -13
  375. package/source/i18n/providers/namespace.mjs +0 -13
  376. package/source/logging/handler/namespace.mjs +0 -11
  377. package/source/logging/namespace.mjs +0 -13
  378. package/source/math/namespace.mjs +0 -13
  379. package/source/net/namespace.mjs +0 -13
  380. package/source/net/webconnect/namespace.mjs +0 -13
  381. package/source/text/namespace.mjs +0 -13
  382. package/source/types/namespace.mjs +0 -13
  383. package/source/util/namespace.mjs +0 -13
@@ -1,21 +1,30 @@
1
1
  /**
2
- * Copyright 2023 schukai GmbH
2
+ * Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved.
3
+ * Node module: @schukai/monster
4
+ *
5
+ * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
6
+ * The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
7
+ *
8
+ * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
9
+ * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
10
+ * For more information about purchasing a commercial license, please contact schukai GmbH.
11
+ *
3
12
  * SPDX-License-Identifier: AGPL-3.0
4
13
  */
5
14
 
6
15
  import {
7
- assembleMethodSymbol,
8
- CustomElement,
9
- registerCustomElement,
16
+ assembleMethodSymbol,
17
+ CustomElement,
18
+ registerCustomElement,
10
19
  } from "../../dom/customelement.mjs";
11
20
  import "../notify/notify.mjs";
12
- import {fireCustomEvent} from "../../dom/events.mjs";
13
- import {Observer} from "../../types/observer.mjs";
14
- import {SplitPanelStyleSheet} from "./stylesheet/split-panel.mjs";
15
- import {instanceSymbol} from "../../constants.mjs";
16
- import {internalSymbol} from "../../constants.mjs";
21
+ import { fireCustomEvent } from "../../dom/events.mjs";
22
+ import { Observer } from "../../types/observer.mjs";
23
+ import { SplitPanelStyleSheet } from "./stylesheet/split-panel.mjs";
24
+ import { instanceSymbol } from "../../constants.mjs";
25
+ import { internalSymbol } from "../../constants.mjs";
17
26
 
18
- export {SplitPanel, TYPE_VERTICAL, TYPE_HORIZONTAL};
27
+ export { SplitPanel, TYPE_VERTICAL, TYPE_HORIZONTAL };
19
28
 
20
29
  /**
21
30
  * @private
@@ -55,16 +64,15 @@ const TYPE_VERTICAL = "vertical";
55
64
  */
56
65
  const TYPE_HORIZONTAL = "horizontal";
57
66
 
58
-
59
67
  /**
60
- * The SplitPanel control is a simple layout control that allows you to split the screen
61
- * into two parts. The split can be either vertical or horizontal. The control provides a
68
+ * The SplitPanel control is a simple layout control that allows you to split the screen
69
+ * into two parts. The split can be either vertical or horizontal. The control provides a
62
70
  * draggable handle that allows you to adjust the size of the two panels.
63
71
  *
64
72
  * <img src="./images/split-panel.png">
65
73
  *
66
- * You can create this control either by specifying the HTML tag <monster-split-panel />`
67
- * directly in the HTML or using Javascript via the `document.createElement('monster-split-panel');`
74
+ * You can create this control either by specifying the HTML tag <monster-split-panel />`
75
+ * directly in the HTML or using Javascript via the `document.createElement('monster-split-panel');`
68
76
  * method.
69
77
  *
70
78
  * ```html
@@ -77,9 +85,9 @@ const TYPE_HORIZONTAL = "horizontal";
77
85
  * import '@schukai/monster/components/layout/split-panel.mjs';
78
86
  * document.createElement('monster-split-panel');
79
87
  * ```
80
- *
88
+ *
81
89
  * It is best to hide unregistered elements with the css property `visibility: hidden;`
82
- *
90
+ *
83
91
  * ```css
84
92
  * <style>
85
93
  * *:not(:defined) {
@@ -102,311 +110,329 @@ const TYPE_HORIZONTAL = "horizontal";
102
110
  * @fires Monster.Components.Layout.event:monster-dimension-changed
103
111
  */
104
112
  class SplitPanel extends CustomElement {
105
-
106
- /**
107
- * This method is called by the `instanceof` operator.
108
- * @returns {symbol}
109
- */
110
- static get [instanceSymbol]() {
111
- return Symbol.for("@schukai/monster/components/layout/split-panel");
112
- }
113
-
114
- /**
115
- * To set the options via the html tag the attribute `data-monster-options` must be used.
116
- * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
117
- *
118
- * The individual configuration values can be found in the table.
119
- *
120
- * @property {Object} templates Template definitions
121
- * @property {string} templates.main Main template
122
- * @property {string} splitType Split type (vertical or horizontal)
123
- * @property {string} dimension Dimension
124
- * @property {string} dimension.initial Initial dimension of the start panel
125
- * @property {string} dimension.max Maximum dimension of the start panel (in percentage)
126
- * @property {string} dimension.min Minimum dimension of the start panel (in percentage)
127
- */
128
- get defaults() {
129
- return Object.assign({}, super.defaults, {
130
- templates: {
131
- main: getTemplate(),
132
- },
133
- splitType: TYPE_VERTICAL,
134
- dimension: {
135
- initial: "60%",
136
- max: "80%",
137
- min: "20%",
138
- },
139
- });
140
- }
141
-
142
- fullStartScreen() {
143
- this.setDimension("100%");
144
- return this;
145
- }
146
-
147
- fullEndScreen() {
148
- this.setDimension("0%");
149
- return this;
150
- }
151
-
152
- resetScreen() {
153
- this.setDimension(this.getOption("dimension").initial);
154
- return this;
155
- }
156
-
157
-
158
- setContent(html) {
159
- this.setOption("content", html);
160
- return this;
161
- }
162
-
163
- /**
164
- *
165
- * @returns {Monster.Components.Host.Viewer}
166
- */
167
- [assembleMethodSymbol]() {
168
- super[assembleMethodSymbol]();
169
-
170
- initControlReferences.call(this);
171
- initEventHandler.call(this);
172
- //applyPanelDimensions.call(this);
173
- this.setDimension(this.getOption("dimension").initial);
174
- }
175
-
176
- /**
177
- * Check if the dimension is a percentage and within a valid range, then set the dimension option.
178
- *
179
- * @param {string} dimension - The dimension to be set, can be in percentage or absolute value.
180
- * @return {Object} - Returns the current object instance for chaining.
181
- */
182
- setDimension(dimension) {
183
- // check if percent and greater than100
184
- if (dimension.includes("%")) {
185
- if (parseInt(dimension) > 100) {
186
- throw new Error("dimension must be less than 100%");
187
- } else if (parseInt(dimension) < 0) {
188
- throw new Error("dimension must be greater than 0%");
189
- }
190
- }
191
-
192
- this[internalSymbol].getSubject().currentDimension = dimension;
193
- return this;
194
- }
195
-
196
-
197
- /**
198
- *
199
- * @return {string}
200
- */
201
- static getTag() {
202
- return "monster-split-panel";
203
- }
204
-
205
- /**
206
- * @return {CSSStyleSheet[]}
207
- */
208
- static getCSSStyleSheet() {
209
- return [SplitPanelStyleSheet];
210
- }
113
+ /**
114
+ * This method is called by the `instanceof` operator.
115
+ * @returns {symbol}
116
+ */
117
+ static get [instanceSymbol]() {
118
+ return Symbol.for("@schukai/monster/components/layout/split-panel");
119
+ }
120
+
121
+ /**
122
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
123
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
124
+ *
125
+ * The individual configuration values can be found in the table.
126
+ *
127
+ * @property {Object} templates Template definitions
128
+ * @property {string} templates.main Main template
129
+ * @property {string} splitType Split type (vertical or horizontal)
130
+ * @property {string} dimension Dimension
131
+ * @property {string} dimension.initial Initial dimension of the start panel
132
+ * @property {string} dimension.max Maximum dimension of the start panel (in percentage)
133
+ * @property {string} dimension.min Minimum dimension of the start panel (in percentage)
134
+ */
135
+ get defaults() {
136
+ return Object.assign({}, super.defaults, {
137
+ templates: {
138
+ main: getTemplate(),
139
+ },
140
+ splitType: TYPE_VERTICAL,
141
+ dimension: {
142
+ initial: "60%",
143
+ max: "80%",
144
+ min: "20%",
145
+ },
146
+ });
147
+ }
148
+
149
+ fullStartScreen() {
150
+ this.setDimension("100%");
151
+ return this;
152
+ }
153
+
154
+ fullEndScreen() {
155
+ this.setDimension("0%");
156
+ return this;
157
+ }
158
+
159
+ isFullStartScreen() {
160
+ return this[internalSymbol].getSubject().currentDimension === "100%";
161
+ }
162
+
163
+ isFullEndScreen() {
164
+ return this[internalSymbol].getSubject().currentDimension === "0%";
165
+ }
166
+
167
+ isInitialScreen() {
168
+ return (
169
+ this[internalSymbol].getSubject().currentDimension ===
170
+ this.getOption("dimension").initial
171
+ );
172
+ }
173
+
174
+ resetScreen() {
175
+ this.setDimension(this.getOption("dimension").initial);
176
+ return this;
177
+ }
178
+
179
+ setContent(html) {
180
+ this.setOption("content", html);
181
+ return this;
182
+ }
183
+
184
+ /**
185
+ *
186
+ * @returns {Monster.Components.Host.Viewer}
187
+ */
188
+ [assembleMethodSymbol]() {
189
+ super[assembleMethodSymbol]();
190
+
191
+ initControlReferences.call(this);
192
+ initEventHandler.call(this);
193
+ //applyPanelDimensions.call(this);
194
+ this.setDimension(this.getOption("dimension").initial);
195
+ }
196
+
197
+ /**
198
+ * Check if the dimension is a percentage and within a valid range, then set the dimension option.
199
+ *
200
+ * @param {string} dimension - The dimension to be set, can be in percentage or absolute value.
201
+ * @return {Object} - Returns the current object instance for chaining.
202
+ */
203
+ setDimension(dimension) {
204
+ // check if percent and greater than100
205
+ if (dimension.includes("%")) {
206
+ if (parseInt(dimension) > 100) {
207
+ throw new Error("dimension must be less than 100%");
208
+ } else if (parseInt(dimension) < 0) {
209
+ throw new Error("dimension must be greater than 0%");
210
+ }
211
+ }
212
+
213
+ this[internalSymbol].getSubject().currentDimension = dimension;
214
+ return this;
215
+ }
216
+
217
+ /**
218
+ *
219
+ * @return {string}
220
+ */
221
+ static getTag() {
222
+ return "monster-split-panel";
223
+ }
224
+
225
+ /**
226
+ * @return {CSSStyleSheet[]}
227
+ */
228
+ static getCSSStyleSheet() {
229
+ return [SplitPanelStyleSheet];
230
+ }
211
231
  }
212
232
 
213
-
214
233
  /**
215
234
  * Set the dimensions of the panel based on the split type.
216
235
  * @fires Monster.Components.Layout.event:monster-dimension-changed
217
236
  */
218
237
  function applyPanelDimensions() {
219
-
220
- const splitType = this.getOption("splitType");
221
- const dimension = this[internalSymbol].getSubject().currentDimension;
222
-
223
- if (splitType === TYPE_VERTICAL) {
224
- this[startPanelElementSymbol].style.width = dimension;
225
- this[endPanelElementSymbol].style.width = `calc(100% - ${dimension} - 5px)`;
226
- this[draggerElementSymbol].style.cursor = "ew-resize";
227
- this[splitScreenElementSymbol].classList.add("vertical");
228
- this[splitScreenElementSymbol].classList.remove("horizontal");
229
-
230
- } else {
231
- this[startPanelElementSymbol].style.height = dimension;
232
- this[endPanelElementSymbol].style.height = `calc(100% - ${dimension} - 5px)`;
233
- this[draggerElementSymbol].style.cursor = "ns-resize";
234
- this[splitScreenElementSymbol].classList.add("horizontal");
235
- this[splitScreenElementSymbol].classList.remove("vertical");
236
-
237
- }
238
-
239
- fireCustomEvent(this, "monster-dimension-changed", {
240
- controller: this,
241
- dimension: dimension
242
- });
243
-
238
+ const splitType = this.getOption("splitType");
239
+ const dimension = this[internalSymbol].getSubject().currentDimension;
240
+
241
+ if (splitType === TYPE_VERTICAL) {
242
+ this[startPanelElementSymbol].style.width = dimension;
243
+ this[endPanelElementSymbol].style.width = `calc(100% - ${dimension} - 5px)`;
244
+ this[draggerElementSymbol].style.cursor = "ew-resize";
245
+ this[splitScreenElementSymbol].classList.add("vertical");
246
+ this[splitScreenElementSymbol].classList.remove("horizontal");
247
+ } else {
248
+ this[startPanelElementSymbol].style.height = dimension;
249
+ this[endPanelElementSymbol].style.height =
250
+ `calc(100% - ${dimension} - 5px)`;
251
+ this[draggerElementSymbol].style.cursor = "ns-resize";
252
+ this[splitScreenElementSymbol].classList.add("horizontal");
253
+ this[splitScreenElementSymbol].classList.remove("vertical");
254
+ }
255
+
256
+ fireCustomEvent(this, "monster-dimension-changed", {
257
+ controller: this,
258
+ dimension: dimension,
259
+ });
244
260
  }
245
261
 
246
-
247
262
  /**
248
263
  * @private
249
264
  * @return {Select}
250
265
  * @throws {Error} no shadow-root is defined
251
266
  */
252
267
  function initControlReferences() {
253
- if (!this.shadowRoot) {
254
- throw new Error("no shadow-root is defined");
255
- }
256
-
257
- this[splitScreenElementSymbol] = this.shadowRoot.querySelector("[data-monster-role=split-panel]");
258
- this[draggerElementSymbol] = this.shadowRoot.querySelector("[data-monster-role=dragger]");
259
- this[handleElementSymbol] = this.shadowRoot.querySelector("[data-monster-role=handle]");
260
-
261
- this[startPanelElementSymbol] = this.shadowRoot.querySelector("[data-monster-role=startPanel]");
262
- this[endPanelElementSymbol] = this.shadowRoot.querySelector("[data-monster-role=endPanel]");
263
-
268
+ if (!this.shadowRoot) {
269
+ throw new Error("no shadow-root is defined");
270
+ }
271
+
272
+ this[splitScreenElementSymbol] = this.shadowRoot.querySelector(
273
+ "[data-monster-role=split-panel]",
274
+ );
275
+ this[draggerElementSymbol] = this.shadowRoot.querySelector(
276
+ "[data-monster-role=dragger]",
277
+ );
278
+ this[handleElementSymbol] = this.shadowRoot.querySelector(
279
+ "[data-monster-role=handle]",
280
+ );
281
+
282
+ this[startPanelElementSymbol] = this.shadowRoot.querySelector(
283
+ "[data-monster-role=startPanel]",
284
+ );
285
+ this[endPanelElementSymbol] = this.shadowRoot.querySelector(
286
+ "[data-monster-role=endPanel]",
287
+ );
264
288
  }
265
289
 
266
290
  /**
267
291
  * @private
268
292
  */
269
293
  function initEventHandler() {
270
- const self = this;
271
-
272
- let lastDimension = this[internalSymbol].getSubject().currentDimension;
273
- let lastType = this.getOption("splitType");
274
-
275
- this[internalSymbol].getSubject().isDragging = false;
276
-
277
- // @todo: add better touch support
278
- const eventTypes = ["dblclick", "touchstart"];
279
- for (const eventType of eventTypes) {
280
-
281
-
282
- this[draggerElementSymbol].addEventListener(eventType, () => {
283
- self[internalSymbol].getSubject().isDragging = false;
284
- lastDimension = undefined;
285
-
286
- let currentDimension;
287
- if (self.getOption("splitType") === TYPE_VERTICAL) {
288
- const topPanel = self[startPanelElementSymbol];
289
- currentDimension = topPanel.style.width;
290
- } else {
291
- const topPanel = self[startPanelElementSymbol];
292
- currentDimension = topPanel.style.height;
293
- }
294
-
295
- if (currentDimension === self.getOption("dimension").initial) {
296
- self.setDimension(self.getOption("dimension").max);
297
- } else if (currentDimension === self.getOption("dimension").max) {
298
- self.setDimension(self.getOption("dimension").min);
299
- } else if (currentDimension === self.getOption("dimension").min) {
300
- self.setDimension(self.getOption("dimension").initial);
301
- } else {
302
- self.setDimension(self.getOption("dimension").initial);
303
- }
304
- });
305
-
306
- }
307
-
308
- this[draggerElementSymbol].addEventListener("mousedown", () => {
309
- self[internalSymbol].getSubject().isDragging = true;
310
-
311
- const eventListener = (e) => {
312
- e.preventDefault();
313
-
314
- // the 5px are wrong and must be calc from css property --monster-dragger-width
315
-
316
- let draggerWidth = getComputedStyle(self[draggerElementSymbol]).getPropertyValue("--monster-dragger-width");
317
- if (draggerWidth === "" || draggerWidth === undefined || draggerWidth === null) {
318
- draggerWidth = "0";
319
- }
320
-
321
- if (!self[internalSymbol].getSubject().isDragging) {
322
- return;
323
- }
324
-
325
- if (self.getOption("splitType") === TYPE_HORIZONTAL) {
326
- const containerOffsetTop = self[splitScreenElementSymbol].offsetTop;
327
- const topPanel = self[startPanelElementSymbol];
328
- const bottomPanel = self[endPanelElementSymbol];
329
- let newTopHeight = e.clientY - containerOffsetTop;
330
-
331
- const min = this.getOption("dimension").min;
332
- const max = this.getOption("dimension").max;
333
-
334
- const topAsPercent = (newTopHeight / this[splitScreenElementSymbol].offsetHeight) * 100;
335
- if (parseInt(min) > topAsPercent) {
336
- newTopHeight = min;
337
- } else if (parseInt(max) < topAsPercent) {
338
- newTopHeight = max;
339
- } else {
340
- newTopHeight = topAsPercent + "%";
341
- }
342
-
343
- // calc new top height to pixel
344
- const newTopHeightPx = (parseInt(newTopHeight) / 100) * this[splitScreenElementSymbol].offsetHeight;
345
-
346
- topPanel.style.height = `${newTopHeightPx}px`;
347
- bottomPanel.style.height = `calc(100% - ${newTopHeightPx}px - ${draggerWidth})`; // 5px is dragger height
348
-
349
- } else {
350
-
351
- const containerOffsetLeft = self[splitScreenElementSymbol].offsetLeft;
352
- const leftPanel = self[startPanelElementSymbol];
353
- const rightPanel = self[endPanelElementSymbol];
354
- let newLeftWidth = e.clientX - containerOffsetLeft;
355
-
356
- const min = this.getOption("dimension").min;
357
- const max = this.getOption("dimension").max;
358
-
359
- const leftAsPercent = (newLeftWidth / this[splitScreenElementSymbol].offsetWidth) * 100;
360
-
361
- if (parseInt(min) > leftAsPercent) {
362
- newLeftWidth = min;
363
- } else if (parseInt(max) < leftAsPercent) {
364
- newLeftWidth = max;
365
- } else {
366
- newLeftWidth = leftAsPercent + "%";
367
- }
368
-
369
- leftPanel.style.width = `${newLeftWidth}`;
370
- rightPanel.style.width = `calc(100% - ${newLeftWidth} - ${draggerWidth})`; // 5px is dragger width
371
- }
372
-
373
- }
374
-
375
- const dragEventHandler = (e) => {
376
- self[internalSymbol].getSubject().isDragging = false;
377
- document.removeEventListener('mousemove', eventListener);
378
- document.removeEventListener('mouseup', eventListener);
379
- }
380
-
381
- document.addEventListener('mousemove', eventListener);
382
- document.addEventListener('mouseup', dragEventHandler);
383
-
384
- });
385
-
386
- this[internalSymbol].attachObserver(
387
- new Observer(() => {
388
-
389
- let apply = false;
390
-
391
- if (lastDimension !== this[internalSymbol].getSubject().currentDimension) {
392
- lastDimension = this[internalSymbol].getSubject().currentDimension;
393
- apply = true;
394
- }
395
-
396
- if (lastType !== this.getOption("splitType")) {
397
- lastType = this.getOption("splitType");
398
- apply = true;
399
- }
400
-
401
- if (apply) {
402
- applyPanelDimensions.call(this);
403
- }
404
-
405
- }));
406
-
407
-
408
- return this;
409
-
294
+ const self = this;
295
+
296
+ let lastDimension = this[internalSymbol].getSubject().currentDimension;
297
+ let lastType = this.getOption("splitType");
298
+
299
+ this[internalSymbol].getSubject().isDragging = false;
300
+
301
+ // @todo: add better touch support
302
+ const eventTypes = ["dblclick", "touchstart"];
303
+ for (const eventType of eventTypes) {
304
+ this[draggerElementSymbol].addEventListener(eventType, () => {
305
+ self[internalSymbol].getSubject().isDragging = false;
306
+ lastDimension = undefined;
307
+
308
+ let currentDimension;
309
+ if (self.getOption("splitType") === TYPE_VERTICAL) {
310
+ const topPanel = self[startPanelElementSymbol];
311
+ currentDimension = topPanel.style.width;
312
+ } else {
313
+ const topPanel = self[startPanelElementSymbol];
314
+ currentDimension = topPanel.style.height;
315
+ }
316
+
317
+ if (currentDimension === self.getOption("dimension").initial) {
318
+ self.setDimension(self.getOption("dimension").max);
319
+ } else if (currentDimension === self.getOption("dimension").max) {
320
+ self.setDimension(self.getOption("dimension").min);
321
+ } else if (currentDimension === self.getOption("dimension").min) {
322
+ self.setDimension(self.getOption("dimension").initial);
323
+ } else {
324
+ self.setDimension(self.getOption("dimension").initial);
325
+ }
326
+ });
327
+ }
328
+
329
+ this[draggerElementSymbol].addEventListener("mousedown", () => {
330
+ self[internalSymbol].getSubject().isDragging = true;
331
+
332
+ const eventListener = (e) => {
333
+ e.preventDefault();
334
+
335
+ // the 5px are wrong and must be calc from css property --monster-dragger-width
336
+
337
+ let draggerWidth = getComputedStyle(
338
+ self[draggerElementSymbol],
339
+ ).getPropertyValue("--monster-dragger-width");
340
+ if (
341
+ draggerWidth === "" ||
342
+ draggerWidth === undefined ||
343
+ draggerWidth === null
344
+ ) {
345
+ draggerWidth = "0";
346
+ }
347
+
348
+ if (!self[internalSymbol].getSubject().isDragging) {
349
+ return;
350
+ }
351
+
352
+ if (self.getOption("splitType") === TYPE_HORIZONTAL) {
353
+ const containerOffsetTop = self[splitScreenElementSymbol].offsetTop;
354
+ const topPanel = self[startPanelElementSymbol];
355
+ const bottomPanel = self[endPanelElementSymbol];
356
+ let newTopHeight = e.clientY - containerOffsetTop;
357
+
358
+ const min = this.getOption("dimension").min;
359
+ const max = this.getOption("dimension").max;
360
+
361
+ const topAsPercent =
362
+ (newTopHeight / this[splitScreenElementSymbol].offsetHeight) * 100;
363
+ if (parseInt(min) > topAsPercent) {
364
+ newTopHeight = min;
365
+ } else if (parseInt(max) < topAsPercent) {
366
+ newTopHeight = max;
367
+ } else {
368
+ newTopHeight = topAsPercent + "%";
369
+ }
370
+
371
+ // calc new top height to pixel
372
+ const newTopHeightPx =
373
+ (parseInt(newTopHeight) / 100) *
374
+ this[splitScreenElementSymbol].offsetHeight;
375
+
376
+ topPanel.style.height = `${newTopHeightPx}px`;
377
+ bottomPanel.style.height = `calc(100% - ${newTopHeightPx}px - ${draggerWidth})`; // 5px is dragger height
378
+ } else {
379
+ const containerOffsetLeft = self[splitScreenElementSymbol].offsetLeft;
380
+ const leftPanel = self[startPanelElementSymbol];
381
+ const rightPanel = self[endPanelElementSymbol];
382
+ let newLeftWidth = e.clientX - containerOffsetLeft;
383
+
384
+ const min = this.getOption("dimension").min;
385
+ const max = this.getOption("dimension").max;
386
+
387
+ const leftAsPercent =
388
+ (newLeftWidth / this[splitScreenElementSymbol].offsetWidth) * 100;
389
+
390
+ if (parseInt(min) > leftAsPercent) {
391
+ newLeftWidth = min;
392
+ } else if (parseInt(max) < leftAsPercent) {
393
+ newLeftWidth = max;
394
+ } else {
395
+ newLeftWidth = leftAsPercent + "%";
396
+ }
397
+
398
+ leftPanel.style.width = `${newLeftWidth}`;
399
+ rightPanel.style.width = `calc(100% - ${newLeftWidth} - ${draggerWidth})`; // 5px is dragger width
400
+ }
401
+ };
402
+
403
+ const dragEventHandler = (e) => {
404
+ self[internalSymbol].getSubject().isDragging = false;
405
+ document.removeEventListener("mousemove", eventListener);
406
+ document.removeEventListener("mouseup", eventListener);
407
+ };
408
+
409
+ document.addEventListener("mousemove", eventListener);
410
+ document.addEventListener("mouseup", dragEventHandler);
411
+ });
412
+
413
+ this[internalSymbol].attachObserver(
414
+ new Observer(() => {
415
+ let apply = false;
416
+
417
+ if (
418
+ lastDimension !== this[internalSymbol].getSubject().currentDimension
419
+ ) {
420
+ lastDimension = this[internalSymbol].getSubject().currentDimension;
421
+ apply = true;
422
+ }
423
+
424
+ if (lastType !== this.getOption("splitType")) {
425
+ lastType = this.getOption("splitType");
426
+ apply = true;
427
+ }
428
+
429
+ if (apply) {
430
+ applyPanelDimensions.call(this);
431
+ }
432
+ }),
433
+ );
434
+
435
+ return this;
410
436
  }
411
437
 
412
438
  /**
@@ -414,8 +440,8 @@ function initEventHandler() {
414
440
  * @return {string}
415
441
  */
416
442
  function getTemplate() {
417
- // language=HTML
418
- return `
443
+ // language=HTML
444
+ return `
419
445
  <div data-monster-role="split-panel" part="control">
420
446
  <div data-monster-role="startPanel" class="panel" part="startPanel">
421
447
  <slot name="start"></slot>