@k37z3r/jbase 2.0.1 → 2.0.3

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 (167) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +59 -43
  3. package/dist/browser.d.ts +5 -6
  4. package/dist/browser.d.ts.map +1 -1
  5. package/dist/core.d.ts +9 -14
  6. package/dist/core.d.ts.map +1 -1
  7. package/dist/index.cjs +577 -452
  8. package/dist/index.cjs.map +7 -0
  9. package/dist/index.d.ts +304 -603
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.mjs +575 -452
  12. package/dist/index.mjs.map +7 -0
  13. package/dist/jbase.browser.js +338 -281
  14. package/dist/jbase.browser.js.map +7 -0
  15. package/dist/jbase.min.js +3 -2
  16. package/dist/jbase.min.js.map +7 -0
  17. package/dist/modules/css/classes.d.ts +15 -29
  18. package/dist/modules/css/classes.d.ts.map +1 -1
  19. package/dist/modules/css/index.d.ts +5 -9
  20. package/dist/modules/css/index.d.ts.map +1 -1
  21. package/dist/modules/css/styles.d.ts +7 -13
  22. package/dist/modules/css/styles.d.ts.map +1 -1
  23. package/dist/modules/data/arrays.d.ts +96 -64
  24. package/dist/modules/data/arrays.d.ts.map +1 -1
  25. package/dist/modules/data/index.d.ts +5 -9
  26. package/dist/modules/data/index.d.ts.map +1 -1
  27. package/dist/modules/data/objects.d.ts +86 -54
  28. package/dist/modules/data/objects.d.ts.map +1 -1
  29. package/dist/modules/data/types.d.ts +3 -22
  30. package/dist/modules/data/types.d.ts.map +1 -1
  31. package/dist/modules/dom/attributes.d.ts +10 -19
  32. package/dist/modules/dom/attributes.d.ts.map +1 -1
  33. package/dist/modules/dom/content.d.ts +9 -17
  34. package/dist/modules/dom/content.d.ts.map +1 -1
  35. package/dist/modules/dom/index.d.ts +8 -15
  36. package/dist/modules/dom/index.d.ts.map +1 -1
  37. package/dist/modules/dom/manipulation.d.ts +41 -81
  38. package/dist/modules/dom/manipulation.d.ts.map +1 -1
  39. package/dist/modules/dom/states.d.ts +12 -23
  40. package/dist/modules/dom/states.d.ts.map +1 -1
  41. package/dist/modules/dom/traversal.d.ts +64 -127
  42. package/dist/modules/dom/traversal.d.ts.map +1 -1
  43. package/dist/modules/effects/fade.d.ts +13 -31
  44. package/dist/modules/effects/fade.d.ts.map +1 -1
  45. package/dist/modules/effects/index.d.ts +15 -23
  46. package/dist/modules/effects/index.d.ts.map +1 -1
  47. package/dist/modules/effects/slide.d.ts +13 -31
  48. package/dist/modules/effects/slide.d.ts.map +1 -1
  49. package/dist/modules/effects/types.d.ts +33 -0
  50. package/dist/modules/effects/types.d.ts.map +1 -0
  51. package/dist/modules/effects/vertical.d.ts +13 -31
  52. package/dist/modules/effects/vertical.d.ts.map +1 -1
  53. package/dist/modules/events/binding.d.ts +11 -21
  54. package/dist/modules/events/binding.d.ts.map +1 -1
  55. package/dist/modules/events/form.d.ts +18 -35
  56. package/dist/modules/events/form.d.ts.map +1 -1
  57. package/dist/modules/events/index.d.ts +9 -17
  58. package/dist/modules/events/index.d.ts.map +1 -1
  59. package/dist/modules/events/keyboard.d.ts +16 -31
  60. package/dist/modules/events/keyboard.d.ts.map +1 -1
  61. package/dist/modules/events/lifecycle.d.ts +6 -11
  62. package/dist/modules/events/lifecycle.d.ts.map +1 -1
  63. package/dist/modules/events/mouse.d.ts +30 -59
  64. package/dist/modules/events/mouse.d.ts.map +1 -1
  65. package/dist/modules/events/touch.d.ts +15 -29
  66. package/dist/modules/events/touch.d.ts.map +1 -1
  67. package/dist/modules/http/get.d.ts +18 -25
  68. package/dist/modules/http/get.d.ts.map +1 -1
  69. package/dist/modules/http/index.d.ts +11 -15
  70. package/dist/modules/http/index.d.ts.map +1 -1
  71. package/dist/modules/http/post.d.ts +13 -19
  72. package/dist/modules/http/post.d.ts.map +1 -1
  73. package/dist/server.d.ts +15 -0
  74. package/dist/server.d.ts.map +1 -0
  75. package/dist/server.js +2246 -0
  76. package/dist/server.js.map +7 -0
  77. package/dist/types.d.ts +11 -21
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/utils.d.ts +20 -23
  80. package/dist/utils.d.ts.map +1 -1
  81. package/package.json +14 -4
  82. package/wiki/CSS-Classes-&-Styles.md +128 -0
  83. package/wiki/DATA-Utilities-(Arrays).md +332 -0
  84. package/wiki/DATA-Utilities-(Objects).md +263 -0
  85. package/wiki/DOM-Attributes.md +56 -0
  86. package/wiki/DOM-Content.md +48 -0
  87. package/wiki/DOM-Manipulation.md +272 -0
  88. package/wiki/DOM-States.md +73 -0
  89. package/wiki/DOM-Traversal.md +529 -0
  90. package/wiki/EFFECTS-Fade.md +76 -0
  91. package/wiki/EFFECTS-Slide-(horizontal).md +70 -0
  92. package/wiki/EFFECTS-Slide-(vertical).md +75 -0
  93. package/wiki/EVENTS-Bindings.md +55 -0
  94. package/wiki/EVENTS-Form.md +122 -0
  95. package/wiki/EVENTS-Keyboard.md +98 -0
  96. package/wiki/EVENTS-Lifecycle.md +25 -0
  97. package/wiki/EVENTS-Mouse.md +218 -0
  98. package/wiki/EVENTS-Touch.md +98 -0
  99. package/wiki/HTTP-Requests.md +93 -0
  100. package/wiki/Home.md +118 -0
  101. package/wiki/Installation.md +44 -0
  102. package/wiki/Quick-Start.md +139 -0
  103. package/dist/browser.js +0 -29
  104. package/dist/browser.js.map +0 -1
  105. package/dist/core.js +0 -78
  106. package/dist/core.js.map +0 -1
  107. package/dist/index.js +0 -100
  108. package/dist/index.js.map +0 -1
  109. package/dist/jbase.js +0 -1898
  110. package/dist/modules/css/classes.js +0 -88
  111. package/dist/modules/css/classes.js.map +0 -1
  112. package/dist/modules/css/index.js +0 -33
  113. package/dist/modules/css/index.js.map +0 -1
  114. package/dist/modules/css/styles.js +0 -49
  115. package/dist/modules/css/styles.js.map +0 -1
  116. package/dist/modules/data/arrays.js +0 -177
  117. package/dist/modules/data/arrays.js.map +0 -1
  118. package/dist/modules/data/index.js +0 -33
  119. package/dist/modules/data/index.js.map +0 -1
  120. package/dist/modules/data/objects.js +0 -168
  121. package/dist/modules/data/objects.js.map +0 -1
  122. package/dist/modules/data/types.js +0 -43
  123. package/dist/modules/data/types.js.map +0 -1
  124. package/dist/modules/dom/attributes.js +0 -69
  125. package/dist/modules/dom/attributes.js.map +0 -1
  126. package/dist/modules/dom/content.js +0 -63
  127. package/dist/modules/dom/content.js.map +0 -1
  128. package/dist/modules/dom/index.js +0 -48
  129. package/dist/modules/dom/index.js.map +0 -1
  130. package/dist/modules/dom/manipulation.js +0 -343
  131. package/dist/modules/dom/manipulation.js.map +0 -1
  132. package/dist/modules/dom/states.js +0 -89
  133. package/dist/modules/dom/states.js.map +0 -1
  134. package/dist/modules/dom/traversal.js +0 -527
  135. package/dist/modules/dom/traversal.js.map +0 -1
  136. package/dist/modules/effects/fade.js +0 -104
  137. package/dist/modules/effects/fade.js.map +0 -1
  138. package/dist/modules/effects/index.js +0 -38
  139. package/dist/modules/effects/index.js.map +0 -1
  140. package/dist/modules/effects/slide.js +0 -103
  141. package/dist/modules/effects/slide.js.map +0 -1
  142. package/dist/modules/effects/vertical.js +0 -118
  143. package/dist/modules/effects/vertical.js.map +0 -1
  144. package/dist/modules/events/binding.js +0 -60
  145. package/dist/modules/events/binding.js.map +0 -1
  146. package/dist/modules/events/form.js +0 -106
  147. package/dist/modules/events/form.js.map +0 -1
  148. package/dist/modules/events/index.js +0 -53
  149. package/dist/modules/events/index.js.map +0 -1
  150. package/dist/modules/events/keyboard.js +0 -83
  151. package/dist/modules/events/keyboard.js.map +0 -1
  152. package/dist/modules/events/lifecycle.js +0 -40
  153. package/dist/modules/events/lifecycle.js.map +0 -1
  154. package/dist/modules/events/mouse.js +0 -172
  155. package/dist/modules/events/mouse.js.map +0 -1
  156. package/dist/modules/events/touch.js +0 -74
  157. package/dist/modules/events/touch.js.map +0 -1
  158. package/dist/modules/http/get.js +0 -65
  159. package/dist/modules/http/get.js.map +0 -1
  160. package/dist/modules/http/index.js +0 -42
  161. package/dist/modules/http/index.js.map +0 -1
  162. package/dist/modules/http/post.js +0 -54
  163. package/dist/modules/http/post.js.map +0 -1
  164. package/dist/types.js +0 -15
  165. package/dist/types.js.map +0 -1
  166. package/dist/utils.js +0 -71
  167. package/dist/utils.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts", "../src/core.ts", "../src/modules/css/classes.ts", "../src/modules/css/styles.ts", "../src/modules/css/index.ts", "../src/modules/events/binding.ts", "../src/modules/events/mouse.ts", "../src/modules/events/lifecycle.ts", "../src/modules/events/keyboard.ts", "../src/modules/events/form.ts", "../src/modules/events/touch.ts", "../src/modules/events/index.ts", "../src/modules/dom/attributes.ts", "../src/modules/dom/content.ts", "../src/modules/dom/manipulation.ts", "../src/modules/dom/traversal.ts", "../src/modules/dom/states.ts", "../src/modules/dom/index.ts", "../src/modules/effects/slide.ts", "../src/utils.ts", "../src/modules/effects/vertical.ts", "../src/modules/effects/fade.ts", "../src/modules/effects/index.ts", "../src/modules/http/get.ts", "../src/modules/http/post.ts", "../src/modules/http/index.ts", "../src/modules/data/arrays.ts", "../src/modules/data/objects.ts", "../src/modules/data/index.ts"],
4
+ "sourcesContent": ["/**\r\n * @file src/index.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Entry Point\r\n * @description\r\n * * Main library entry point. Aggregates Core, Types, Utils, and all functional modules into a single export.\r\n * @requires ./core\r\n * * Core class logic and inheritance.\r\n * @requires ./types\r\n * * TypeScript type definitions and interfaces.\r\n * @requires ./utils\r\n * * Helper functions (throttle, debounce).\r\n * @requires ./modules/css\r\n * * Style manipulation methods.\r\n * @requires ./modules/events\r\n * * Event handling logic.\r\n * @requires ./modules/dom\r\n * * DOM traversal and manipulation.\r\n * @requires ./modules/effects\r\n * * Visual effects and animations.\r\n * @requires ./modules/http\r\n * * HTTP client for AJAX requests.\r\n * @requires ./modules/data\r\n * * Data structure utilities.\r\n */\r\n\r\nimport { jBase as JBaseClass } from './core';\r\nimport { JBaseInput, JBaseCSSProperty, JBaseEventMap } from './types';\r\n\r\nimport { cssMethods } from './modules/css';\r\nimport { eventMethods } from './modules/events';\r\nimport { domMethods } from './modules/dom';\r\nimport { effectMethods } from './modules/effects';\r\nimport { http } from './modules/http';\r\nimport { data } from './modules/data';\r\n\r\nObject.assign(JBaseClass.prototype, cssMethods);\r\nObject.assign(JBaseClass.prototype, eventMethods);\r\nObject.assign(JBaseClass.prototype, domMethods);\r\nObject.assign(JBaseClass.prototype, effectMethods);\r\n\r\n/**\r\n * TypeScript Declaration Merging.\r\n */\r\ndeclare module './core' {\r\n interface jBase {\r\n /* ==========================================================================\r\n CSS MODULE\r\n ========================================================================== */\r\n\r\n /**\r\n * * Adds one or more CSS classes to the selected elements.\r\n * @param classNames\r\n * * One or more class names to be added.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\n addClass(...classNames: string[]): jBase;\r\n\r\n /**\r\n * * Removes one or more CSS classes from the selected elements.\r\n * @param classNames\r\n * * One or more class names to be removed.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\n removeClass(...classNames: string[]): jBase;\r\n\r\n /**\r\n * * Toggles a CSS class (adds if missing, removes if present).\r\n * @param className\r\n * * The class name to toggle.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\n toggleClass(className: string): jBase;\r\n\r\n /**\r\n * * Checks if at least one of the selected elements has the specified class.\r\n * @param className\r\n * * The class name to check for.\r\n * @returns\r\n * * True if the class exists on at least one element, otherwise false.\r\n */\r\n hasClass(className: string): boolean;\r\n\r\n /**\r\n * * Sets a CSS property for all selected elements.\r\n * @param property\r\n * * The CSS property name (camelCase).\r\n * @param value\r\n * * The value to set.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\n css(property: JBaseCSSProperty, value: string | number): jBase;\r\n\r\n /**\r\n * * Gets the computed CSS value of the first element.\r\n * @param property\r\n * * The CSS property name (camelCase).\r\n * @returns\r\n * * The computed value as a string.\r\n */\r\n css(property: JBaseCSSProperty): string;\r\n\r\n /* ==========================================================================\r\n EVENT MODULE\r\n ========================================================================== */\r\n\r\n /**\r\n * * Registers a typed event listener.\r\n * @param event\r\n * * The event name (e.g., 'click').\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n on<K extends keyof JBaseEventMap>(event: K, handler: (event: JBaseEventMap[K]) => void): jBase;\r\n\r\n /**\r\n * * Registers an event listener (string-based / custom events).\r\n * @param event\r\n * * The name of the custom event.\r\n * @param handler\r\n * * The event listener.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n on(event: string, handler: EventListenerOrEventListenerObject): jBase;\r\n\r\n /**\r\n * * Removes a typed event listener.\r\n * @param event\r\n * * The event name.\r\n * @param handler\r\n * * The exact reference of the handler to remove.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n off<K extends keyof JBaseEventMap>(event: K, handler: (event: JBaseEventMap[K]) => void): jBase;\r\n\r\n /**\r\n * * Removes an event listener (string-based).\r\n * @param event\r\n * * The name of the event.\r\n * @param handler\r\n * * The exact reference of the handler to remove.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n off(event: string, handler: EventListenerOrEventListenerObject): jBase;\r\n\r\n /* --- Mouse Events --- */\r\n\r\n /**\r\n * * Triggers the 'click' event or binds a handler.\r\n * @param handler\r\n * * (Optional) The function to execute on click.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n click(handler?: (event: Event) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'mousemove' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n mousemove(handler: (event: MouseEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'mouseleave' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n mouseleave(handler: (event: MouseEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'mouseenter' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n mouseenter(handler: (event: MouseEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'mousedown' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n mousedown(handler: (event: MouseEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'mouseup' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n mouseup(handler: (event: MouseEvent) => void): jBase;\r\n\r\n /**\r\n * * Triggers the 'dblclick' event or binds a handler.\r\n * @param handler\r\n * * (Optional) The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n dblclick(handler: (event: MouseEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'mouseout' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n mouseout(handler: (event: MouseEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'mouseover' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n mouseover(handler: (event: MouseEvent) => void): jBase;\r\n\r\n /* --- Keyboard Events --- */\r\n\r\n /**\r\n * * Binds a handler to the 'keydown' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n keydown(handler: (event: KeyboardEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'keyup' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n keyup(handler: (event: KeyboardEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'keypress' event (Deprecated).\r\n * @deprecated Use keydown instead.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n keypress(handler: (event: KeyboardEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler that fires only when a specific key is pressed.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n pressedKey(handler: (event: KeyboardEvent) => void): jBase;\r\n\r\n /* --- Form Events --- */\r\n\r\n /**\r\n * * Binds a handler to the 'submit' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n submit(handler: (event: SubmitEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'change' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n change(handler: (event: Event) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'input' event (real-time).\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n input(handler: (event: Event) => void): jBase;\r\n\r\n /**\r\n * * Sets focus on the element.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n focus(): jBase;\r\n /**\r\n * * Binds a handler to the 'focus' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n focus(handler: (event: FocusEvent) => void): jBase;\r\n\r\n /**\r\n * * Removes focus from the element.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n blur(): jBase;\r\n /**\r\n * * Binds a handler to the 'blur' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n blur(handler: (event: FocusEvent) => void): jBase;\r\n\r\n /* --- Touch Events --- */\r\n\r\n /**\r\n * * Binds a handler to the 'touchstart' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n touchstart(handler: (event: TouchEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'touchend' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n touchend(handler: (event: TouchEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'touchmove' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n touchmove(handler: (event: TouchEvent) => void): jBase;\r\n\r\n /**\r\n * * Binds a handler to the 'touchcancel' event.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n touchcancel(handler: (event: TouchEvent) => void): jBase;\r\n\r\n /* ==========================================================================\r\n DOM MODULE\r\n ========================================================================== */\r\n\r\n /**\r\n * * Gets the HTML content of the first element.\r\n * @returns\r\n * * The HTML content as a string.\r\n */\r\n html(): string;\r\n /**\r\n * * Sets the HTML content of all selected elements.\r\n * @param content\r\n * * The new HTML content.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n html(content: string): jBase;\r\n\r\n /**\r\n * * Gets the text content of the first element.\r\n * @returns\r\n * * The text content as a string.\r\n */\r\n text(): string;\r\n /**\r\n * * Sets the text content of all selected elements (safe against XSS).\r\n * @param content\r\n * * The new text content.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n text(content: string): jBase;\r\n\r\n /**\r\n * * Gets an attribute value from the first element.\r\n * @param name\r\n * * The name of the attribute.\r\n * @returns\r\n * * The attribute value or null.\r\n */\r\n attr(name: string): string | null;\r\n /**\r\n * * Sets an attribute for all selected elements.\r\n * @param name\r\n * * The name of the attribute.\r\n * @param value\r\n * * The value to set.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n attr(name: string, value: string): jBase;\r\n\r\n /**\r\n * * Gets the value of the first form element.\r\n * @returns\r\n * * The value as a string.\r\n */\r\n val(): string;\r\n /**\r\n * * Sets the value for all selected form elements.\r\n * @param value\r\n * * The value to set.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n val(value: string | number): jBase;\r\n\r\n /* --- Manipulation --- */\r\n\r\n /**\r\n * * Replaces elements with a deep clone of themselves (removes listeners).\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n replaceWithClone(): jBase;\r\n\r\n /**\r\n * * Removes all selected elements from the DOM.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n remove(): jBase;\r\n\r\n /**\r\n * * Removes all child nodes from the selected elements.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n empty(): jBase;\r\n\r\n /**\r\n * * Finds the closest ancestor matching the selector.\r\n * @param selector\r\n * * The CSS selector to match.\r\n * @returns\r\n * * A new jBase instance containing the ancestor.\r\n */\r\n closest(selector: string): jBase;\r\n\r\n /**\r\n * * Executes the handler when the DOM is fully loaded.\r\n * @param handler\r\n * * The function to execute.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n ready(handler: () => void): jBase;\r\n\r\n /**\r\n * * Inserts content at the end of the selected elements (inside).\r\n * @param content\r\n * * Content to insert (String, Node, or jBase).\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n append(content: string | Node | jBase): jBase;\r\n\r\n /**\r\n * * Inserts content at the beginning of the selected elements (inside).\r\n * @param content\r\n * * Content to insert (String, Node, or jBase).\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n prepend(content: string | Node | jBase): jBase;\r\n\r\n /**\r\n * * Inserts content before the selected elements (outside).\r\n * @param content\r\n * * Content to insert (String, Node, or jBase).\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n before(content: string | Node | jBase): jBase;\r\n\r\n /**\r\n * * Inserts content after the selected elements (outside).\r\n * @param content\r\n * * Content to insert (String, Node, or jBase).\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n after(content: string | Node | jBase): jBase;\r\n\r\n /**\r\n * * Replaces the selected elements with new content.\r\n * @param content\r\n * * Content to insert (String, Node, or jBase).\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n replaceWith(content: string | Node | jBase): jBase;\r\n\r\n /**\r\n * * Appends the selected elements to a target.\r\n * @param target\r\n * * Target element or selector.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n appendTo(target: string | Element): jBase;\r\n\r\n /**\r\n * * Prepends the selected elements to a target.\r\n * @param target\r\n * * Target element or selector.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n prependTo(target: string | Element): jBase;\r\n\r\n /**\r\n * * Inserts the selected elements before a target.\r\n * @param target\r\n * * Target element or selector.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n insertBefore(target: string | Element): jBase;\r\n\r\n /**\r\n * * Inserts the selected elements after a target.\r\n * @param target\r\n * * Target element or selector.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n insertAfter(target: string | Element): jBase;\r\n\r\n /**\r\n * * Wraps each selected element with the specified HTML structure.\r\n * @param wrapperHtml\r\n * * The HTML string for the wrapper.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n wrap(wrapperHtml: string): jBase;\r\n\r\n /**\r\n * * Removes the direct parent of the selected elements.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n unwrap(): jBase;\r\n\r\n /* --- Traversal --- */\r\n\r\n /**\r\n * * Gets the direct parents.\r\n * @returns\r\n * * A new jBase instance with parents.\r\n */\r\n parent(): jBase;\r\n\r\n /**\r\n * * Gets the direct children.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance with children.\r\n */\r\n children(selector?: string): jBase;\r\n\r\n /**\r\n * * Finds descendants matching the selector (deep).\r\n * @param selector\r\n * * CSS selector to find.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n findAll(selector: string): jBase;\r\n\r\n /**\r\n * * Gets all descendants recursively.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n childrens(): jBase;\r\n\r\n /**\r\n * * Gets descendants recursively until a selector is met.\r\n * @param untilSelector\r\n * * Selector to stop at.\r\n * @param filter\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n childrensUntil(untilSelector: string, filter?: string): jBase;\r\n\r\n /**\r\n * * Gets all ancestors up to the root.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n parents(selector?: string): jBase;\r\n\r\n /**\r\n * * Gets all ancestors until a selector is met.\r\n * @param selector\r\n * * Selector to stop at.\r\n * @param filter\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n parentsUntil(selector: string, filter?: string): jBase;\r\n\r\n /* --- Sibling Traversal --- */\r\n\r\n /**\r\n * * Gets the immediately following sibling.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n next(selector?: string): jBase;\r\n\r\n /**\r\n * * Gets the immediately preceding sibling.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n prev(selector?: string): jBase;\r\n\r\n /**\r\n * * Alias for `next()`.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n sibling(selector?: string): jBase;\r\n\r\n /**\r\n * * Alias for `next()`.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n nextSibling(selector?: string): jBase;\r\n\r\n /**\r\n * * Alias for `prev()`.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n prevSibling(selector?: string): jBase;\r\n\r\n /**\r\n * * Gets all following siblings.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n nextAll(selector?: string): jBase;\r\n\r\n /**\r\n * * Gets all preceding siblings.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n prevAll(selector?: string): jBase;\r\n\r\n /**\r\n * * Gets all siblings (prev and next).\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n siblings(selector?: string): jBase;\r\n\r\n /**\r\n * * Gets following siblings until a selector is met.\r\n * @param untilSelector\r\n * * Selector to stop at.\r\n * @param filter\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n nextUntil(untilSelector: string, filter?: string): jBase;\r\n\r\n /**\r\n * * Gets preceding siblings until a selector is met.\r\n * @param untilSelector\r\n * * Selector to stop at.\r\n * @param filter\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n prevUntil(untilSelector: string, filter?: string): jBase;\r\n\r\n /* --- Filtering --- */\r\n\r\n /**\r\n * * Reduces the set to the element at the index.\r\n * @param index\r\n * * Index (negative values count from the end).\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n eq(index: number): jBase;\r\n\r\n /**\r\n * * Reduces the set to the first element.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n first(): jBase;\r\n\r\n /**\r\n * * Reduces the set to the last element.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n last(): jBase;\r\n\r\n /**\r\n * * Filters elements by selector.\r\n * @param selector\r\n * * CSS selector to filter by.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n filterBy(selector: string): jBase;\r\n\r\n /**\r\n * * Filters elements by a callback function.\r\n * @param predicate\r\n * * Function that returns true to keep the element.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n filterBy(predicate: (index: number, element: Element) => boolean): jBase;\r\n\r\n /**\r\n * * Removes elements matching the selector.\r\n * @param selector\r\n * * CSS selector to remove.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n not(selector: string): jBase;\r\n\r\n /**\r\n * * Removes elements matching the callback function.\r\n * @param predicate\r\n * * Function that returns true to remove the element.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\n not(predicate: (index: number, element: Element) => boolean): jBase;\r\n\r\n /* ==========================================================================\r\n EFFECTS MODULE\r\n ========================================================================== */\r\n\r\n /**\r\n * * Slides the element into view (horizontal).\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n slideIn(options?: { direction?: 'left' | 'right', duration?: number }): jBase;\r\n\r\n /**\r\n * * Slides the element out of view (horizontal).\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n slideOut(options?: { direction?: 'left' | 'right', duration?: number }): jBase;\r\n\r\n /**\r\n * * Toggles between slideIn and slideOut.\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n slideToggle(options?: { direction?: 'left' | 'right', duration?: number }): jBase;\r\n\r\n /**\r\n * * Slides the element down (Accordion).\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n slideDown(options?: { duration?: number, displayType?: string }): jBase;\r\n\r\n /**\r\n * * Slides the element up.\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n slideUp(options?: { duration?: number }): jBase;\r\n\r\n /**\r\n * * Toggles between slideDown and slideUp.\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n slideToggleBox(options?: { duration?: number }): jBase;\r\n\r\n /**\r\n * * Fades the element in (Opacity).\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n fadeIn(options?: { duration?: number, displayType?: string }): jBase;\r\n\r\n /**\r\n * * Fades the element out (Opacity).\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n fadeOut(options?: { duration?: number }): jBase;\r\n\r\n /**\r\n * * Toggles between fadeIn and fadeOut.\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n fadeToggle(options?: { duration?: number }): jBase;\r\n\r\n /* ==========================================================================\r\n STATES MODULE\r\n ========================================================================== */\r\n\r\n /**\r\n * * Checks the 'checked' state (Getter).\r\n * @returns\r\n * * True if checked.\r\n */\r\n checked(): boolean;\r\n /**\r\n * * Sets the 'checked' state (Setter).\r\n * @param state\r\n * * The new state.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n checked(state: boolean): jBase;\r\n\r\n /**\r\n * * Checks the 'selected' state (Getter).\r\n * @returns\r\n * * True if selected.\r\n */\r\n selected(): boolean;\r\n /**\r\n * * Sets the 'selected' state (Setter).\r\n * @param state\r\n * * The new state.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n selected(state: boolean): jBase;\r\n\r\n /**\r\n * * Checks the 'disabled' state (Getter).\r\n * @returns\r\n * * True if disabled.\r\n */\r\n disabled(): boolean;\r\n /**\r\n * * Sets the 'disabled' state and toggles CSS class (Setter).\r\n * @param state\r\n * * The new state.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\n disabled(state: boolean): jBase;\r\n }\r\n}\r\n\r\n/**\r\n * * Factory function to initialize a new jBase instance.\r\n * @param selector\r\n * * CSS selector, HTML string, DOM element, or collection.\r\n * @returns\r\n * * A new jBase collection.\r\n */\r\nconst init = (selector: JBaseInput): JBaseClass => {\r\n return new JBaseClass(selector);\r\n};\r\n\r\nexport const bind = (window: Window) => {\r\n const doc = window.document;\r\n const boundInit = (selector: JBaseInput) => new JBaseClass(selector, doc);\r\n \r\n Object.assign(boundInit, {\r\n fn: JBaseClass.prototype,\r\n http,\r\n data,\r\n });\r\n\r\n return boundInit;\r\n};\r\n\r\n/**\r\n * * Export the factory under different aliases for maximum compatibility and convenience.\r\n */\r\nexport const $ = init;\r\nexport const jB = init;\r\nexport const _jB = init;\r\nexport const __jB = init;\r\nexport const _jBase = init;\r\nexport const __jBase = init;\r\nexport const jBase = init;\r\nexport const __ = init;\r\n\r\n/**\r\n * * Utility for throttled function calls.\r\n */\r\nexport { throttle } from './utils';\r\n\r\n/**\r\n * * Utility for debounced function calls.\r\n */\r\nexport { debounce } from './utils';\r\n\r\n/**\r\n * * HTTP Client for AJAX requests.\r\n */\r\nexport { http } from './modules/http';\r\n\r\n/**\r\n * * Data utilities for Arrays and Objects.\r\n */\r\nexport { data } from './modules/data';\r\n\r\n/**\r\n * * The class itself, if needed for type checks.\r\n */\r\nexport { JBaseClass };", "/**\r\n * @file src/core.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Core\r\n * @description\r\n * * The main jBase class. Handles the selection engine, initialization, and plugin architecture.\r\n */\r\n\r\nimport { JBaseElement, JBaseInput } from './types';\r\n\r\n/**\r\n * * The core class of the framework, inheriting from the native Array class. Acts as a wrapper around DOM elements and enables chainable methods (Fluent Interface).\r\n */\r\nexport class jBase extends Array<JBaseElement> {\r\n public selectorSource: string = '';\r\n public doc: Document;\r\n /**\r\n * * Initializes a new jBase instance. Analyzes the provided selector and populates the internal array with found or created DOM elements.\r\n * @param selector\r\n * * The input selector (CSS selector, HTML string, DOM element, or collection).\r\n */\r\n constructor(selector?: JBaseInput, context?: Document | Window) {\r\n super();\r\n\r\n if (context instanceof Document) {\r\n this.doc = context;\r\n } else if (context && (context as Window).document) {\r\n this.doc = (context as Window).document;\r\n } else {\r\n this.doc = (typeof document !== 'undefined') ? document : (null as any);\r\n }\r\n if (typeof document === 'undefined') {\r\n return;\r\n }\r\n this.selectorSource = typeof selector === 'string' ? selector : '<DOM Object/Array>';\r\n \r\n if (!selector)\r\n return;\r\n\r\n if (selector instanceof HTMLElement || selector === document || selector === window || selector instanceof Element) {\r\n this.push(selector);\r\n }\r\n else if (typeof selector === 'string') {\r\n const trimmed = selector.trim();\r\n if (trimmed.startsWith('<') && trimmed.endsWith('>')) {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = trimmed;\r\n this.push(...Array.from(tempDiv.children));\r\n }\r\n else if (trimmed.startsWith('#') && !trimmed.includes(' ') && !trimmed.includes('.')) {\r\n const el = document.getElementById(trimmed.slice(1));\r\n if (el)\r\n this.push(el);\r\n }\r\n else if (trimmed.startsWith('.') && !trimmed.includes(' ') && !/[:\\[#]/.test(trimmed)) {\r\n const els = document.getElementsByClassName(trimmed.slice(1));\r\n for (let i = 0; i < els.length; i++) {\r\n this.push(els[i] as HTMLElement);\r\n }\r\n }\r\n else if (/^[a-zA-Z0-9]+$/.test(trimmed)) {\r\n const els = document.getElementsByTagName(trimmed);\r\n for (let i = 0; i < els.length; i++) {\r\n this.push(els[i] as HTMLElement);\r\n }\r\n }\r\n else {\r\n try {\r\n this.push(...Array.from(document.querySelectorAll(selector)));\r\n } catch (e) {\r\n console.warn(`jBase: Invalid selector \"${selector}\"`, e);\r\n }\r\n }\r\n }\r\n else if (selector instanceof NodeList || Array.isArray(selector)) {\r\n this.push(...Array.from(selector as ArrayLike<JBaseElement>));\r\n }\r\n }\r\n\r\n /**\r\n * * Custom serializer for JSON.stringify. Prevents circular references and huge outputs by returning a simplified preview.\r\n * @returns\r\n * * A simplified object representation for debugging.\r\n */\r\n toJSON() {\r\n return {\r\n meta: 'jBase Wrapper',\r\n query: this.selectorSource,\r\n count: this.length,\r\n preview: this.slice(0, 10).map(el => {\r\n if (el instanceof Element)\r\n return el.tagName.toLowerCase();\r\n return typeof el;\r\n })\r\n };\r\n }\r\n}", "/**\r\n * @file src/modules/css/classes.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category CSS\r\n * @description\r\n * * Methods for manipulating CSS classes (add, remove, toggle, has).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Adds one or more CSS classes to each element in the collection.\r\n * @param classNames\r\n * * One or more class names to be added\r\n * @returns\r\n * * The current jBase instance for method chaining\r\n */\r\nexport function addClass(this: jBase, ...classNames: string[]): jBase {\r\n this.forEach(el => {\r\n if (el instanceof Element) el.classList.add(...classNames);\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Removes one or more CSS classes from each element in the collection.\r\n * @param classNames\r\n * * One or more class names to be removed\r\n * @returns\r\n * * The current jBase instance for method chaining\r\n */\r\nexport function removeClass(this: jBase, ...classNames: string[]): jBase {\r\n this.forEach(el => {\r\n if (el instanceof Element) el.classList.remove(...classNames);\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Toggles a CSS class (adds if missing, removes if present) for each element.\r\n * @param className\r\n * * The class name to toggle.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function toggleClass(this: jBase, className: string): jBase {\r\n this.forEach(el => {\r\n if (el instanceof Element) el.classList.toggle(className);\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Checks if at least one element in the collection has the specified class.\r\n * @param className\r\n * * The class name to check for.\r\n * @returns\r\n * * True if the class exists on at least one element, otherwise false.\r\n */\r\nexport function hasClass(this: jBase, className: string): boolean {\r\n return this.some(el => {\r\n return (el instanceof Element) && el.classList.contains(className);\r\n });\r\n}", "/**\r\n * @file src/modules/css/styles.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category CSS\r\n * @description\r\n * * Methods for getting and setting inline CSS styles.\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Sets or gets the value of a style property for the selected elements.\r\n * @param property\r\n * * The CSS property name (camelCase).\r\n * @param value\r\n * * (Optional) The value to set. If undefined, the method acts as a getter.\r\n * @returns\r\n * * The computed style value (string) if acting as a getter, or the current jBase instance if setting.\r\n */\r\nexport function css(this: jBase, property: string, value?: string | number): string | jBase {\r\n if (value === undefined) {\r\n const el = this[0];\r\n if (el instanceof HTMLElement || el instanceof SVGElement) {\r\n const doc = el.ownerDocument;\r\n const win = doc ? doc.defaultView : null;\r\n if (win) {\r\n return win.getComputedStyle(el)[property as any];\r\n } else {\r\n return el.style[property as any] || '';\r\n }\r\n }\r\n return '';\r\n }\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement || el instanceof SVGElement) {\r\n (el.style as any)[property] = value;\r\n }\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/modules/css/index.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category CSS\r\n * @description\r\n * * Central entry point for CSS operations. Aggregates class and style manipulation methods.\r\n * @requires ./classes\r\n * * Class manipulation methods (addClass, removeClass, etc.).\r\n * @requires ./styles\r\n * * Style manipulation methods (css).\r\n */\r\n\r\nimport * as classMethods from './classes';\r\nimport * as styleMethods from './styles';\r\n\r\n/**\r\n * * Aggregation of all CSS methods. This object bundles functions for class manipulation and style manipulation. It is exported to extend the jBase prototype centrally via Object.assign.\r\n */\r\nexport const cssMethods = {\r\n ...classMethods,\r\n ...styleMethods\r\n};", "/**\r\n * @file src/modules/events/binding.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Events\r\n * @description\r\n * * Core event binding methods (on, off, trigger). Handles event registration and removal.\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Registers an event listener for all elements in the current selection. Uses the native `addEventListener` method internally.\r\n * @param event\r\n * * The name of the event (e.g., 'click', 'mouseenter').\r\n * @param handler\r\n * * The callback function to execute when the event triggers.\r\n * @returns\r\n * * The jBase instance for method chaining.\r\n */\r\nexport function on(this: jBase, event: string, handler: EventListenerOrEventListenerObject): jBase {\r\n this.forEach(el => {\r\n el.addEventListener(event, handler);\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Removes a previously registered event listener from all elements in the current selection. Uses the native `removeEventListener` method internally.\r\n * Note: The handler passed must be the exact same reference used in `on`.\r\n * Hinweis: Der \u00FCbergebene Handler muss exakt dieselbe Referenz sein, die bei `on` verwendet wurde.\r\n * @param event\r\n * * The name of the event.\r\n * @param handler\r\n * * The reference of the callback function to remove.\r\n * @returns\r\n * * The jBase instance for method chaining.\r\n */\r\nexport function off(this: jBase, event: string, handler: EventListenerOrEventListenerObject): jBase {\r\n this.forEach(el => {\r\n el.removeEventListener(event, handler);\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/modules/events/mouse.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Events\r\n * @description\r\n * * Methods for handling mouse events (click, dblclick, hover, mouseenter, mouseleave).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Binds an event handler to the 'click' event or triggers the event manually.\r\n * - With handler: Registers the function.\r\n * - Without handler: Simulates a click on all selected elements.\r\n * - Mit Handler: Registriert die Funktion.\r\n * - Ohne Handler: Simuliert einen Klick auf alle selektierten Elemente.\r\n * @param handler\r\n * * (Optional) The callback function executed on click.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function click(this: jBase, handler?: (event: Event) => void): jBase {\r\n if (handler) {\r\n return this.on('click', handler);\r\n } else {\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) el.click();\r\n });\r\n return this;\r\n }\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'mousemove' event. Fires continuously while the pointer moves inside the element.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function mousemove(this: jBase, handler: (event: MouseEvent) => void): jBase {\r\n return this.on('mousemove', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'mouseleave' event. Fires when the pointer leaves the element (does not bubble).\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function mouseleave(this: jBase, handler: (event: MouseEvent) => void): jBase {\r\n return this.on('mouseleave', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'mouseenter' event. Fires when the pointer enters the element (does not bubble).\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function mouseenter(this: jBase, handler: (event: MouseEvent) => void): jBase {\r\n return this.on('mouseenter', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'mousedown' event. Fires as soon as a mouse button is pressed over the element.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function mousedown(this: jBase, handler: (event: MouseEvent) => void): jBase {\r\n return this.on('mousedown', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'mouseup' event. Fires when a mouse button is released over the element.\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function mouseup(this: jBase, handler: (event: MouseEvent) => void): jBase {\r\n return this.on('mouseup', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'dblclick' event or triggers it manually.\r\n * @param handler\r\n * * (Optional) The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function dblclick(this: jBase, handler?: (event: MouseEvent) => void): jBase {\r\n if (handler) {\r\n return this.on('dblclick', handler as EventListener);\r\n } else {\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n el.dispatchEvent(new MouseEvent('dblclick', {\r\n bubbles: true,\r\n cancelable: true,\r\n view: window\r\n }));\r\n }\r\n });\r\n return this;\r\n }\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'mouseout' event. Fires when the pointer leaves the element OR one of its children (bubbles).\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function mouseout(this: jBase, handler: (event: MouseEvent) => void): jBase {\r\n return this.on('mouseout', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'mouseover' event. Fires when the pointer enters the element OR one of its children (bubbles).\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function mouseover(this: jBase, handler: (event: MouseEvent) => void): jBase {\r\n return this.on('mouseover', handler as EventListener);\r\n}", "/**\r\n * @file src/modules/events/lifecycle.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Events\r\n * @description\r\n * * Methods for handling DOM lifecycle events (e.g., ready).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Executes the handler as soon as the DOM is fully loaded and parsed. If the document is already ready (readyState 'interactive' or 'complete'), the handler executes immediately to avoid race conditions.\r\n * @param handler\r\n * * The callback function to execute when the DOM is ready.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function ready(this: jBase, handler: () => void): jBase {\r\n const doc = window.document;\r\n if (doc.readyState === 'complete' || doc.readyState === 'interactive') {\r\n handler();\r\n } else {\r\n this.on('DOMContentLoaded', handler);\r\n }\r\n return this;\r\n}", "/**\r\n * @file src/modules/events/keyboard.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Events\r\n * @description\r\n * * Methods for handling keyboard events (keydown, keyup, keypress).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Binds an event handler to the 'keydown' event. Fires immediately when a key is pressed (repeats if held).\r\n * @param handler\r\n * * The callback function receiving the KeyboardEvent.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function keydown(this: jBase, handler: (event: KeyboardEvent) => void): jBase {\r\n return this.on('keydown', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'keyup' event. Fires when a key is released.\r\n * @param handler\r\n * * The callback function receiving the KeyboardEvent.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function keyup(this: jBase, handler: (event: KeyboardEvent) => void): jBase {\r\n return this.on('keyup', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'keypress' event. Deprecated in modern standards.\r\n * @deprecated Use keydown or input instead.\r\n * @param handler\r\n * * The callback function receiving the KeyboardEvent.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function keypress(this: jBase, handler: (event: KeyboardEvent) => void): jBase {\r\n return this.on('keypress', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler for a specific key (case-insensitive).\r\n * @param targetKey\r\n * * The key to react to (e.g., 'm', 'Enter', 'Escape').\r\n * @param handler\r\n * * The callback function.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function pressedKey(this: jBase, targetKey: string, handler: (event: KeyboardEvent) => void): jBase {\r\n return this.on('keydown', (e: Event) => {\r\n const event = e as KeyboardEvent;\r\n if (event.key.toLowerCase() === targetKey.toLowerCase()) {\r\n handler(event);\r\n }\r\n });\r\n}", "/**\r\n * @file src/modules/events/form.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Events\r\n * @description\r\n * * Methods for handling form events (submit, change, focus, blur, input).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Registers an event handler for the 'submit' event. Triggered when a form is submitted.\r\n * @param handler\r\n * * The function to execute when the event occurs.\r\n * @returns\r\n * * The current jBase instance for chaining.\r\n */\r\nexport function submit(this: jBase, handler: (event: SubmitEvent) => void): jBase {\r\n return this.on('submit', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Registers an event handler for the 'change' event. Triggered when the value of an element (<input>, <select>, <textarea>) is changed by the user and committed (e.g., on blur).\r\n * @param handler\r\n * * The function to execute when the event occurs.\r\n * @returns\r\n * * The current jBase instance for chaining.\r\n */\r\nexport function change(this: jBase, handler: (event: Event) => void): jBase {\r\n return this.on('change', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Registers an event handler for the 'input' event. Triggered immediately when the value changes (real-time, e.g., every keystroke).\r\n * @param handler\r\n * * The function to execute when the event occurs.\r\n * @returns\r\n * * The current jBase instance for chaining.\r\n */\r\nexport function input(this: jBase, handler: (event: Event) => void): jBase {\r\n return this.on('input', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Handles the 'focus' event. If a handler is provided, it binds the listener. If no handler is provided, it programmatically sets focus on the element(s).\r\n * @param handler\r\n * * (Optional) The function to execute when the event occurs.\r\n * @returns\r\n * * The current jBase instance for chaining.\r\n */\r\nexport function focus(this: jBase, handler?: (event: FocusEvent) => void): jBase {\r\n if (handler) {\r\n return this.on('focus', handler as EventListener);\r\n } else {\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) el.focus();\r\n });\r\n return this;\r\n }\r\n}\r\n\r\n/**\r\n * * Handles the 'blur' event (element loses focus). If a handler is provided, it binds the listener. If no handler is provided, it programmatically removes focus.\r\n * @param handler\r\n * * (Optional) The function to execute when the event occurs.\r\n * @returns\r\n * * The current jBase instance for chaining.\r\n */\r\nexport function blur(this: jBase, handler?: (event: FocusEvent) => void): jBase {\r\n if (handler) {\r\n return this.on('blur', handler as EventListener);\r\n } else {\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) el.blur();\r\n });\r\n return this;\r\n }\r\n}", "/**\r\n * @file src/modules/events/touch.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Events\r\n * @description\r\n * * Methods for handling touch events (touchstart, touchend, touchmove).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Binds an event handler to the 'touchstart' event. Triggered when a touch point is placed on the touch surface.\r\n * @param handler\r\n * * The callback function executed on touch start.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function touchstart(this: jBase, handler: (event: TouchEvent) => void): jBase {\r\n return this.on('touchstart', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'touchend' event. Triggered when a touch point is removed from the touch surface.\r\n * @param handler\r\n * * The callback function executed on touch end.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function touchend(this: jBase, handler: (event: TouchEvent) => void): jBase {\r\n return this.on('touchend', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'touchmove' event. Triggered when a touch point moves along the touch surface. Important for swipe gestures or Drag & Drop.\r\n * @param handler\r\n * * The callback function executed on movement.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function touchmove(this: jBase, handler: (event: TouchEvent) => void): jBase {\r\n return this.on('touchmove', handler as EventListener);\r\n}\r\n\r\n/**\r\n * * Binds an event handler to the 'touchcancel' event. Triggered when a touch point has been disrupted by the system (e.g., too many touch points or a UI popup).\r\n * @param handler\r\n * * The callback function executed on cancellation.\r\n * @returns\r\n * * The current jBase instance for method chaining.\r\n */\r\nexport function touchcancel(this: jBase, handler: (event: TouchEvent) => void): jBase {\r\n return this.on('touchcancel', handler as EventListener);\r\n}", "/**\r\n * @file src/modules/events/index.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Events\r\n * @description\r\n * * Central entry point for event handling. Aggregates binding, mouse, lifecycle, keyboard, form, and touch events.\r\n * @requires ./binding\r\n * * General event binding (on, off).\r\n * @requires ./mouse\r\n * * Mouse interaction events (click, hover, etc.).\r\n * @requires ./lifecycle\r\n * * DOM lifecycle events (ready).\r\n * @requires ./keyboard\r\n * * Keyboard interaction events (keydown, keyup).\r\n * @requires ./form\r\n * * Form handling events (submit, change, input).\r\n * @requires ./touch\r\n * * Touch interaction events.\r\n */\r\n\r\nimport * as bindingMethods from './binding';\r\nimport * as mouseMethods from './mouse';\r\nimport * as lifecycleMethods from './lifecycle';\r\nimport * as keyboardMethods from './keyboard';\r\nimport * as formMethods from './form';\r\nimport * as touchMethods from './touch';\r\n\r\n/**\r\n * * Aggregated object of all event methods. Combines logic from various sub-modules into a single object. Used to extend the `jBase` prototype via `Object.assign`.\r\n */\r\nexport const eventMethods = {\r\n ...bindingMethods,\r\n ...mouseMethods,\r\n ...lifecycleMethods,\r\n ...keyboardMethods,\r\n ...formMethods,\r\n ...touchMethods\r\n};", "/**\r\n * @file src/modules/dom/attributes.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category DOM\r\n * @description\r\n * * Methods for getting and setting HTML attributes and properties (attr, data, val).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Gets an attribute from the first element or sets it for all elements in the selection.\r\n * @param name\r\n * * The name of the attribute (e.g., 'href', 'data-id').\r\n * @param value\r\n * * (Optional) The value to set. If undefined, acts as a getter.\r\n * @returns\r\n * * The attribute value (string/null) when reading, or the jBase instance when writing.\r\n */\r\nexport function attr(this: jBase, name: string, value?: string): string | null | jBase {\r\n if (value === undefined) {\r\n const el = this[0];\r\n return (el instanceof Element) ? el.getAttribute(name) : null;\r\n }\r\n\r\n this.forEach(el => {\r\n if (el instanceof Element) el.setAttribute(name, value);\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Gets the 'value' from the first form element or sets it for all elements. Supports Input, Textarea, and Select elements.\r\n * @param value\r\n * * (Optional) The value to set. If undefined, acts as a getter.\r\n * @returns\r\n * * The current value as a string when reading, or the jBase instance when writing.\r\n */\r\nexport function val(this: jBase, value?: string): string | jBase {\r\n if (value === undefined) {\r\n const el = this[0];\r\n if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement || el instanceof HTMLSelectElement) {\r\n return el.value;\r\n }\r\n return '';\r\n }\r\n\r\n this.forEach(el => {\r\n if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement || el instanceof HTMLSelectElement) {\r\n el.value = value;\r\n }\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/modules/dom/content.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category DOM\r\n * @description\r\n * * Methods for getting and setting element content (html, text, empty, replaceWith).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Gets the HTML content of the first element or sets the HTML content for all elements in the selection.\r\n * @param content\r\n * * (Optional) The HTML string to set.\r\n * @returns\r\n * * The HTML string (getter) or the current jBase instance (setter).\r\n */\r\nexport function html(this: jBase, content?: string): string | jBase {\r\n if (content === undefined) {\r\n const el = this[0];\r\n return (el instanceof Element) ? el.innerHTML : '';\r\n }\r\n this.forEach(el => {\r\n if (el instanceof Element) el.innerHTML = content;\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Gets the text content of the first element or sets it for all elements. Safe against XSS attacks.\r\n * @param content\r\n * * (Optional) The text content to set.\r\n * @returns\r\n * * The text content (getter) or the current jBase instance (setter).\r\n */\r\nexport function text(this: jBase, content?: string): string | jBase {\r\n if (content === undefined) {\r\n const el = this[0];\r\n return (el instanceof Node) ? (el.textContent || '') : '';\r\n }\r\n\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n el.textContent = content;\r\n }\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/modules/dom/manipulation.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category DOM\r\n * @description\r\n * * Methods for inserting, moving, and removing elements (append, prepend, remove).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Internal Helper: Parses a raw HTML string into a DOM element using a temporary container.\r\n * @param html\r\n * * The HTML string to parse.\r\n * @param doc\r\n * * The document context to use for creation (essential for SSR).\r\n * @returns\r\n * * The created HTMLElement.\r\n */\r\nfunction parseHTML(html: string, doc: Document): HTMLElement {\r\n const tmp = doc.createElement('div');\r\n tmp.innerHTML = html.trim();\r\n return tmp.firstElementChild as HTMLElement;\r\n}\r\n\r\n/**\r\n * * Internal Helper: Retrieves the correct document context from a jBase collection.\r\n * * Ensures compatibility with Node.js/JSDOM by preferring the element's ownerDocument over the global document.\r\n * @param collection\r\n * * The jBase instance to check.\r\n * @returns\r\n * * The found Document object or null (in strict Node environments without global context).\r\n */\r\nfunction getDoc(collection: jBase): Document {\r\n if (collection.length > 0 && collection[0] instanceof Element) {\r\n return collection[0].ownerDocument;\r\n }\r\n return (typeof document !== 'undefined') ? document : (null as any);\r\n}\r\n\r\n/**\r\n * * Internal Helper: Normalizes various content types into a single DocumentFragment.\r\n * * Handles HTML strings (parsing), DOM Nodes, Arrays, NodeLists, and jBase collections recursively.\r\n * * Using a Fragment minimizes browser reflows during insertion.\r\n * @param content\r\n * * The content to normalize (String, Node, Array, Collection).\r\n * @param doc\r\n * * The document context to use for element creation (essential for SSR).\r\n * @returns\r\n * * A DocumentFragment containing the processed DOM nodes.\r\n */\r\nfunction normalizeToFragment(content: string | Node | jBase | (string | Node)[], doc: Document): DocumentFragment {\r\n const fragment = doc.createDocumentFragment();\r\n\r\n const add = (item: any) => {\r\n if (typeof item === 'string') {\r\n const temp = doc.createElement('div');\r\n temp.innerHTML = item.trim();\r\n while (temp.firstChild) {\r\n fragment.appendChild(temp.firstChild);\r\n }\r\n } else if (item instanceof Node) {\r\n fragment.appendChild(item);\r\n } else if (item instanceof jBase || Array.isArray(item) || item instanceof NodeList) {\r\n Array.from(item).forEach(child => add(child));\r\n }\r\n };\r\n\r\n add(content);\r\n return fragment;\r\n}\r\n\r\n/**\r\n * * Removes the selected elements from the DOM.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function remove(this: jBase): jBase {\r\n this.forEach(el => {\r\n if (el instanceof Element) el.remove();\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Removes all child nodes and text content from the selected elements.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function empty(this: jBase): jBase {\r\n this.forEach(el => {\r\n if (el instanceof Element) el.innerHTML = '';\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Replaces each element with a deep clone of itself. Useful for removing all event listeners (\"Nuke\" strategy).\r\n * @returns\r\n * * A new jBase instance containing the cloned elements.\r\n */\r\nexport function replaceWithClone(this: jBase): jBase {\r\n const newElements: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n const clone = el.cloneNode(true) as Element;\r\n el.replaceWith(clone);\r\n newElements.push(clone);\r\n }\r\n });\r\n\r\n return new (this.constructor as any)(newElements);\r\n}\r\n\r\n/**\r\n * * Inserts content at the end of each selected element (inside).\r\n * @param content\r\n * * HTML string, DOM Node, or jBase collection.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function append(this: jBase, content: string | Node | jBase): jBase {\r\n if (typeof content === 'string') {\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n el.insertAdjacentHTML('beforeend', content);\r\n }\r\n });\r\n return this;\r\n }\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const fragment = normalizeToFragment(content, doc);\r\n this.forEach((el, i) => {\r\n if (el instanceof Element) {\r\n const contentToInsert = (i < this.length - 1) ? fragment.cloneNode(true) : fragment;\r\n el.appendChild(contentToInsert);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Inserts content at the beginning of each selected element (inside).\r\n * @param content\r\n * * HTML string, DOM Node, or jBase collection.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function prepend(this: jBase, content: string | Node | jBase): jBase {\r\n if (typeof content === 'string') {\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n el.insertAdjacentHTML('afterbegin', content);\r\n }\r\n });\r\n return this;\r\n }\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const fragment = normalizeToFragment(content, doc);\r\n this.forEach((el, i) => {\r\n if (el instanceof Element) {\r\n const contentToInsert = (i < this.length - 1) ? fragment.cloneNode(true) : fragment;\r\n el.prepend(contentToInsert);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Inserts content before the element (outside).\r\n * @param content\r\n * * HTML string, DOM Node, or jBase collection.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function before(this: jBase, content: string | Node | jBase): jBase {\r\n if (typeof content === 'string') {\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n el.insertAdjacentHTML('beforebegin', content);\r\n }\r\n });\r\n return this;\r\n }\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const fragment = normalizeToFragment(content, doc);\r\n this.forEach((el, i) => {\r\n if (el instanceof Element) {\r\n const contentToInsert = (i < this.length - 1) ? fragment.cloneNode(true) : fragment;\r\n el.before(contentToInsert);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Inserts content after the element (outside).\r\n * @param content\r\n * * HTML string, DOM Node, or jBase collection.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function after(this: jBase, content: string | Node | jBase): jBase {\r\n if (typeof content === 'string') {\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n el.insertAdjacentHTML('afterend', content);\r\n }\r\n });\r\n return this;\r\n }\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const fragment = normalizeToFragment(content, doc);\r\n this.forEach((el, i) => {\r\n if (el instanceof Element) {\r\n const contentToInsert = (i < this.length - 1) ? fragment.cloneNode(true) : fragment;\r\n el.after(contentToInsert);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Replaces the element with new content.\r\n * @param content\r\n * * The new content.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function replaceWith(this: jBase, content: string | Node | jBase): jBase {\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const fragment = normalizeToFragment(content, doc);\r\n this.forEach((el, i) => {\r\n if (el instanceof Element) {\r\n const contentToInsert = (i < this.length - 1) ? fragment.cloneNode(true) : fragment;\r\n el.replaceWith(contentToInsert);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Appends the selected elements to the end of a target element.\r\n * @param target\r\n * * CSS selector or DOM element.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function appendTo(this: jBase, target: string | Element): jBase {\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const parent = typeof target === 'string' ? doc.querySelector(target) : target;\r\n if (parent instanceof Element) {\r\n const fragment = doc.createDocumentFragment();\r\n this.forEach(el => {\r\n if (el instanceof Node) fragment.appendChild(el);\r\n });\r\n parent.appendChild(fragment);\r\n }\r\n return this;\r\n}\r\n\r\n/**\r\n * * Prepends the selected elements to the beginning of a target element.\r\n * @param target\r\n * * CSS selector or DOM element.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function prependTo(this: jBase, target: string | Element): jBase {\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const parent = typeof target === 'string' ? doc.querySelector(target) : target;\r\n if (parent instanceof Element) {\r\n const fragment = doc.createDocumentFragment();\r\n this.forEach(el => {\r\n if (el instanceof Node) fragment.appendChild(el);\r\n });\r\n parent.prepend(fragment);\r\n }\r\n return this;\r\n}\r\n\r\n/**\r\n * * Inserts the selected elements immediately before the target element.\r\n * @param target\r\n * * CSS selector or DOM element.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function insertBefore(this: jBase, target: string | Element): jBase {\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const targetEl = typeof target === 'string' ? doc.querySelector(target) : target;\r\n if (targetEl instanceof Element) {\r\n const fragment = doc.createDocumentFragment();\r\n this.forEach(el => {\r\n if (el instanceof Node) fragment.appendChild(el);\r\n });\r\n targetEl.before(fragment);\r\n }\r\n return this;\r\n}\r\n\r\n/**\r\n * * Inserts the selected elements immediately after the target element.\r\n * @param target\r\n * * CSS selector or DOM element.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function insertAfter(this: jBase, target: string | Element): jBase {\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const targetEl = typeof target === 'string' ? doc.querySelector(target) : target;\r\n if (targetEl instanceof Element) {\r\n const fragment = doc.createDocumentFragment();\r\n this.forEach(el => {\r\n if (el instanceof Node) fragment.appendChild(el);\r\n });\r\n targetEl.after(fragment);\r\n }\r\n return this;\r\n}\r\n\r\n/**\r\n * * Wraps each selected element with the specified HTML structure.\r\n * @param wrapperHtml\r\n * * HTML string defining the wrapper (e.g., `<div class=\"box\"></div>`).\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function wrap(this: jBase, wrapperHtml: string): jBase {\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n const wrapper = parseHTML(wrapperHtml, doc);\r\n if (el.parentNode) {\r\n el.parentNode.insertBefore(wrapper, el);\r\n }\r\n wrapper.appendChild(el);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Removes the direct parent of the selected elements from the DOM.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function unwrap(this: jBase): jBase {\r\n const doc = getDoc(this);\r\n if (!doc)\r\n return this;\r\n const parents = new Set<Element>();\r\n this.forEach(el => {\r\n if (el instanceof Element && el.parentElement) {\r\n parents.add(el.parentElement);\r\n }\r\n });\r\n\r\n parents.forEach(parent => {\r\n const fragment = doc.createDocumentFragment();\r\n while (parent.firstChild) {\r\n fragment.appendChild(parent.firstChild);\r\n }\r\n parent.replaceWith(fragment);\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/modules/dom/traversal.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category DOM\r\n * @description\r\n * * Methods for navigating the DOM tree (find, parent, children, siblings).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n\r\n\r\n/**\r\n * * Traverses the parents (heading toward the document root) of each element and finds the first element that matches the specified selector.\r\n * @param selector\r\n * * A string containing a selector expression.\r\n * @returns\r\n * * A new jBase instance containing the matched elements.\r\n */\r\nexport function closest(this: jBase, selector: string): jBase {\r\n const found: Element[] = [];\r\n\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n const match = el.closest(selector);\r\n if (match) {\r\n found.push(match);\r\n }\r\n }\r\n });\r\n\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Gets the direct parent of each element in the current set. Deduplicates results.\r\n * @returns\r\n * * A new jBase instance containing the parent elements.\r\n */\r\nexport function parent(this: jBase): jBase {\r\n const parents: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element && el.parentElement) {\r\n parents.push(el.parentElement);\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(parents)]);\r\n}\r\n\r\n/**\r\n * * Gets the direct children of each element in the set, optionally filtered by a selector.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance containing the children.\r\n */\r\nexport function children(this: jBase, selector?: string): jBase {\r\n let allChildren: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n const kids = Array.from(el.children);\r\n allChildren = allChildren.concat(kids);\r\n }\r\n });\r\n\r\n if (selector) {\r\n allChildren = allChildren.filter(child => child.matches(selector));\r\n }\r\n\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction(allChildren);\r\n}\r\n\r\n/**\r\n * * Finds descendants (deep) that match the selector using `querySelectorAll`.\r\n * @param selector\r\n * * The CSS selector to search for.\r\n * @returns\r\n * * A new jBase instance with the found elements.\r\n */\r\nexport function findAll(this: jBase, selector: string): jBase {\r\n const found: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element || el instanceof Document) {\r\n const matches = el.querySelectorAll(selector);\r\n matches.forEach(m => found.push(m));\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Recursively gets ALL descendants (not just direct children).\r\n * @returns\r\n * * A new jBase instance with all descendants.\r\n */\r\nexport function descendants(this: jBase): jBase {\r\n return this.findAll('*');\r\n}\r\n\r\n/**\r\n * * Gets all ancestors (parents, grandparents...) up to the root. Optionally filtered.\r\n * @param selector\r\n * * (Optional) Filter selector for ancestors.\r\n * @returns\r\n * * A new jBase instance with the ancestors.\r\n */\r\nexport function parents(this: jBase, selector?: string): jBase {\r\n const ancestors: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n let curr = el.parentElement;\r\n while (curr) {\r\n if (!selector || curr.matches(selector)) {\r\n ancestors.push(curr);\r\n }\r\n curr = curr.parentElement;\r\n }\r\n }\r\n });\r\n\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(ancestors)]);\r\n}\r\n\r\n/**\r\n * * Gets all ancestors UP TO (but not including) an element matching the selector.\r\n * @param selector\r\n * * The selector where traversal stops.\r\n * @param filter\r\n * * (Optional) Filter for the collected elements.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function parentsUntil(this: jBase, selector: string, filter?: string): jBase {\r\n const ancestors: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n let curr = el.parentElement;\r\n while (curr && !curr.matches(selector)) {\r\n if (!filter || curr.matches(filter)) {\r\n ancestors.push(curr);\r\n }\r\n curr = curr.parentElement;\r\n }\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(ancestors)]);\r\n}\r\n\r\n/**\r\n * * Recursively finds descendants but stops traversing a branch if `untilSelector` is met. Useful for finding nested elements without going too deep (e.g., nested forms).\r\n * @param untilSelector\r\n * * The selector that stops recursion in a branch.\r\n * @param filter\r\n * * (Optional) Selector to filter collected elements.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function descendantsUntil(this: jBase, untilSelector: string, filter?: string): jBase {\r\n const found: Element[] = [];\r\n\r\n const traverse = (parent: Element) => {\r\n const kids = parent.children;\r\n for (let i = 0; i < kids.length; i++) {\r\n const child = kids[i];\r\n if (child.matches(untilSelector)) {\r\n continue;\r\n }\r\n if (!filter || child.matches(filter)) {\r\n found.push(child);\r\n }\r\n traverse(child);\r\n }\r\n };\r\n this.forEach(el => {\r\n if (el instanceof Element) traverse(el);\r\n });\r\n\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Gets the immediately following sibling.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function next(this: jBase, selector?: string): jBase {\r\n const found: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element && el.nextElementSibling) {\r\n const nextEl = el.nextElementSibling;\r\n if (!selector || nextEl.matches(selector)) {\r\n found.push(nextEl);\r\n }\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Gets the immediately preceding sibling.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function prev(this: jBase, selector?: string): jBase {\r\n const found: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element && el.previousElementSibling) {\r\n const prevEl = el.previousElementSibling;\r\n if (!selector || prevEl.matches(selector)) {\r\n found.push(prevEl);\r\n }\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Alias for `next()`.\r\n */\r\nexport function nextSibling(this: jBase, selector?: string): jBase {\r\n return this.next(selector);\r\n}\r\n\r\n/**\r\n * * Alias for `prev()`.\r\n */\r\nexport function prevSibling(this: jBase, selector?: string): jBase {\r\n return this.prev(selector);\r\n}\r\n\r\n/**\r\n * * Alias for `next()`.\r\n */\r\nexport function sibling(this: jBase, selector?: string): jBase {\r\n return this.next(selector);\r\n}\r\n\r\n/**\r\n * * Gets ALL following siblings.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function nextAll(this: jBase, selector?: string): jBase {\r\n const found: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n let curr = el.nextElementSibling;\r\n while (curr) {\r\n if (!selector || curr.matches(selector)) {\r\n found.push(curr);\r\n }\r\n curr = curr.nextElementSibling;\r\n }\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Gets ALL preceding siblings.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function prevAll(this: jBase, selector?: string): jBase {\r\n const found: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n let curr = el.previousElementSibling;\r\n while (curr) {\r\n if (!selector || curr.matches(selector)) {\r\n found.push(curr);\r\n }\r\n curr = curr.previousElementSibling;\r\n }\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Gets ALL siblings (previous and next), excluding itself.\r\n * @param selector\r\n * * (Optional) Filter selector.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function siblings(this: jBase, selector?: string): jBase {\r\n const found: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element && el.parentElement) {\r\n const children = Array.from(el.parentElement.children);\r\n children.forEach(child => {\r\n if (child !== el) {\r\n if (!selector || child.matches(selector)) {\r\n found.push(child);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Gets all following siblings UNTIL a selector is met (exclusive).\r\n * @param untilSelector\r\n * * The selector that stops the search.\r\n * @param filter\r\n * * (Optional) Filter for the found elements.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function nextUntil(this: jBase, untilSelector: string, filter?: string): jBase {\r\n const found: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n let curr = el.nextElementSibling;\r\n while (curr && !curr.matches(untilSelector)) {\r\n if (!filter || curr.matches(filter)) {\r\n found.push(curr);\r\n }\r\n curr = curr.nextElementSibling;\r\n }\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Gets all preceding siblings UNTIL a selector is met (exclusive).\r\n * @param untilSelector\r\n * * The selector that stops the search.\r\n * @param filter\r\n * * (Optional) Filter for the found elements.\r\n * @returns\r\n * * A new jBase instance.\r\n */\r\nexport function prevUntil(this: jBase, untilSelector: string, filter?: string): jBase {\r\n const found: Element[] = [];\r\n this.forEach(el => {\r\n if (el instanceof Element) {\r\n let curr = el.previousElementSibling;\r\n while (curr && !curr.matches(untilSelector)) {\r\n if (!filter || curr.matches(filter)) {\r\n found.push(curr);\r\n }\r\n curr = curr.previousElementSibling;\r\n }\r\n }\r\n });\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction([...new Set(found)]);\r\n}\r\n\r\n/**\r\n * * Reduces the set to the element at the specified index. Supports negative indices.\r\n * @param index\r\n * * The position (0-based). Negative values count from the end.\r\n * @returns\r\n * * A new jBase instance containing the single element (or empty).\r\n */\r\nexport function eq(this: jBase, index: number): jBase {\r\n const len = this.length;\r\n const idx = index < 0 ? len + index : index;\r\n const el = this[idx];\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction(el ? [el] : []);\r\n}\r\n\r\n/**\r\n * * Reduces the set to the first element.\r\n */\r\nexport function first(this: jBase): jBase {\r\n return this.eq(0);\r\n}\r\n\r\n/**\r\n * * Reduces the set to the last element.\r\n */\r\nexport function last(this: jBase): jBase {\r\n return this.eq(-1);\r\n}\r\n\r\n/**\r\n * * Filters elements based on a selector or a function.\r\n * @param selectorOrFn\r\n * * CSS selector string or filter function.\r\n * @returns\r\n * * A new jBase instance with filtered elements.\r\n */\r\nexport function filterBy(this: jBase, selectorOrFn: string | ((index: number, element: Element) => boolean)): jBase {\r\n const found: Element[] = [];\r\n\r\n this.forEach((el, index) => {\r\n if (el instanceof Element) {\r\n if (typeof selectorOrFn === 'string') {\r\n if (el.matches(selectorOrFn)) {\r\n found.push(el);\r\n }\r\n } else if (typeof selectorOrFn === 'function') {\r\n if (selectorOrFn.call(el, index, el)) {\r\n found.push(el);\r\n }\r\n }\r\n }\r\n });\r\n\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction(found);\r\n}\r\n\r\n/**\r\n * * Removes elements from the set that match the selector or function (Inverse of filterBy).\r\n * @param selectorOrFn\r\n * * CSS selector string or filter function.\r\n * @returns\r\n * * A new jBase instance with remaining elements.\r\n */\r\nexport function not(this: jBase, selectorOrFn: string | ((index: number, element: Element) => boolean)): jBase {\r\n const found: Element[] = [];\r\n\r\n this.forEach((el, index) => {\r\n if (el instanceof Element) {\r\n if (typeof selectorOrFn === 'string') {\r\n if (!el.matches(selectorOrFn)) {\r\n found.push(el);\r\n }\r\n } else if (typeof selectorOrFn === 'function') {\r\n if (!selectorOrFn.call(el, index, el)) {\r\n found.push(el);\r\n }\r\n }\r\n }\r\n });\r\n\r\n const Construction = this.constructor as new (args: any) => jBase;\r\n return new Construction(found);\r\n}", "/**\r\n * @file src/modules/dom/states.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category DOM\r\n * @description\r\n * * Methods for checking element states (e.g., visibility, checked, disabled).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\n\r\n/**\r\n * * Gets or sets the 'checked' state of checkboxes and radio buttons.\r\n * @param state\r\n * * (Optional) `true` to check, `false` to uncheck. If undefined, acts as a getter.\r\n * @returns\r\n * * Boolean (getter) or the current jBase instance (setter).\r\n */\r\nexport function checked(this: jBase, state?: boolean): boolean | jBase {\r\n if (state === undefined) {\r\n const el = this[0];\r\n return (el instanceof HTMLInputElement) ? el.checked : false;\r\n }\r\n this.forEach(el => {\r\n if (el instanceof HTMLInputElement)\r\n el.checked = state;\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Gets or sets the 'selected' state of `<option>` elements.\r\n * @param state\r\n * * (Optional) `true` to select, `false` to deselect. If undefined, acts as a getter.\r\n * @returns\r\n * * Boolean (getter) or the current jBase instance (setter).\r\n */\r\nexport function selected(this: jBase, state?: boolean): boolean | jBase {\r\n if (state === undefined) {\r\n const el = this[0];\r\n return (el instanceof HTMLOptionElement) ? el.selected : false;\r\n }\r\n this.forEach(el => {\r\n if (el instanceof HTMLOptionElement)\r\n el.selected = state;\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Enables or disables form fields and buttons. Additionally toggles the CSS class `.disabled`.\r\n * @param state\r\n * * (Optional) `true` to disable, `false` to enable. If undefined, acts as a getter.\r\n * @returns\r\n * * Boolean (getter) or the current jBase instance (setter).\r\n */\r\nexport function disabled(this: jBase, state?: boolean): boolean | jBase {\r\n if (state === undefined) {\r\n const el = this[0];\r\n return (el instanceof HTMLElement && 'disabled' in el) ? (el as any).disabled : false;\r\n }\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement && 'disabled' in el) {\r\n (el as any).disabled = state;\r\n if (state)\r\n el.classList.add('disabled');\r\n else\r\n el.classList.remove('disabled');\r\n }\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/modules/dom/index.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category DOM\r\n * @description\r\n * * Central entry point for DOM operations. Aggregates methods for attributes, content, manipulation, traversal, and states.\r\n * @requires ./attributes\r\n * * Attribute and value manipulation.\r\n * @requires ./content\r\n * * Content handling (html, text).\r\n * @requires ./manipulation\r\n * * DOM manipulation (append, remove, etc.).\r\n * @requires ./traversal\r\n * * Tree traversal (find, parent, children).\r\n * @requires ./states\r\n * * State checks (checked, disabled).\r\n */\r\n\r\nimport * as attributeMethods from './attributes';\r\nimport * as contentMethods from './content';\r\nimport * as manipulationMethods from './manipulation';\r\nimport * as traversalMethods from './traversal';\r\nimport * as stateMethods from './states';\r\n\r\n/**\r\n * * Aggregation of all DOM methods. Bundles specialized sub-modules into a single interface. Used to extend the jBase prototype centrally via Object.assign.\r\n */\r\nexport const domMethods = {\r\n ...attributeMethods,\r\n ...contentMethods,\r\n ...manipulationMethods,\r\n ...traversalMethods,\r\n ...stateMethods\r\n};", "/**\r\n * @file src/modules/effects/slide.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Effects\r\n * @description\r\n * * Methods for horizontal sliding effects (slideIn, slideOut, slideToggle).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { isBrowser } from '../../utils';\r\nimport { jBase } from '../../core';\r\nimport { SlideOptions } from './types';\r\n\r\n\r\n\r\n/**\r\n * * Slides an element (e.g., a menu) into view. Sets `transform: translateX(0)`.\r\n * @param options\r\n * * Direction ('left'|'right') and duration in ms.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function slideIn(this: jBase, options: SlideOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n const { duration = 300 } = options;\r\n\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n el.style.willChange = 'transform';\r\n el.style.transition = `transform ${duration}ms cubic-bezier(0.4, 0.0, 0.2, 1)`;\r\n\r\n requestAnimationFrame(() => {\r\n el.style.transform = 'translateX(0%)';\r\n });\r\n\r\n el.setAttribute('data-slide-state', 'open');\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Slides an element out of view.\r\n * @param options\r\n * * Direction ('left'|'right') and duration in ms.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function slideOut(this: jBase, options: SlideOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n const { direction = 'left', duration = 300 } = options;\r\n const translateValue = direction === 'left' ? '-100%' : '100%';\r\n\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n el.style.willChange = 'transform';\r\n el.style.transition = `transform ${duration}ms cubic-bezier(0.4, 0.0, 0.2, 1)`;\r\n\r\n requestAnimationFrame(() => {\r\n el.style.transform = `translateX(${translateValue})`;\r\n });\r\n\r\n el.setAttribute('data-slide-state', 'closed');\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Toggles between slideIn and slideOut based on the current state.\r\n * @param options\r\n * * Direction ('left'|'right') and duration in ms.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function slideToggle(this: jBase, options: SlideOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n const state = el.getAttribute('data-slide-state');\r\n const currentTransform = el.style.transform;\r\n\r\n if (state === 'open' || currentTransform === 'translateX(0%)') {\r\n const wrapper = new (this.constructor as any)(el);\r\n wrapper.slideOut(options);\r\n } else {\r\n const wrapper = new (this.constructor as any)(el);\r\n wrapper.slideIn(options);\r\n }\r\n }\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/utils.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Utilities\r\n * @description\r\n * * General utility functions and helpers (e.g., debounce, throttle, type checks).\r\n */\r\n\r\n/**\r\n * * Creates a throttled version of the provided function. The function is executed at most once within the specified time interval, regardless of how often it is called.\r\n * Use case: Performance optimization for high-frequency events (e.g., Scroll, Resize, Mousemove).\r\n * Einsatzgebiet: Performance-Optimierung bei hochfrequenten Events (z.B. Scroll, Resize, Mousemove).\r\n * @template T\r\n * * The type of the original function.\r\n * @param func\r\n * * The function to be throttled.\r\n * @param limit\r\n * * The time interval in milliseconds during which at most one execution is permitted.\r\n * @returns\r\n * * A new function that throttles calls.\r\n */\r\nexport function throttle<T extends (...args: any[]) => any>(func: T, limit: number): (...args: Parameters<T>) => void {\r\n let inThrottle: boolean;\r\n return function(this: any, ...args: Parameters<T>) {\r\n const context = this;\r\n if (!inThrottle) {\r\n func.apply(context, args);\r\n inThrottle = true;\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * * Creates a debounced version of the provided function. Execution is delayed until `delay` milliseconds have passed since the last invocation.\r\n * Use case: Waiting for user input (e.g., Live Search, Validation) to avoid unnecessary calculations.\r\n * Einsatzgebiet: Warten auf Benutzereingaben (z.B. Live-Suche, Validierung) zur Vermeidung unn\u00F6tiger Berechnungen.\r\n * @template T\r\n * * The type of the original function.\r\n * @param func\r\n * * The function to be debounced.\r\n * @param delay\r\n * * The waiting time in milliseconds after the last call.\r\n * @returns\r\n * * A new function that delays execution.\r\n */\r\nexport function debounce<T extends (...args: any[]) => any>(func: T, delay: number): (...args: Parameters<T>) => void {\r\n let timer: ReturnType<typeof setTimeout>;\r\n return function(this: any, ...args: Parameters<T>) {\r\n clearTimeout(timer);\r\n timer = setTimeout(() => func.apply(this, args), delay);\r\n };\r\n}\r\n\r\n/**\r\n * * Checks if the code is running in a browser environment.\r\n * * Verifies the existence of `window` and `requestAnimationFrame` to ensure animation support.\r\n * * Used to safely guard DOM-dependent logic (Effects, Events) during Server-Side Rendering (SSR).\r\n * @returns\r\n * * `true` if running in a browser with animation support, otherwise `false`.\r\n */\r\nexport function isBrowser(): boolean {\r\n return typeof window !== 'undefined' && typeof window.requestAnimationFrame !== 'undefined';\r\n}", "/**\r\n * @file src/modules/effects/vertical.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Effects\r\n * @description\r\n * * Methods for vertical sliding effects (slideDown, slideUp, slideToggle).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { isBrowser } from '../../utils';\r\nimport { jBase } from '../../core';\r\nimport { SlideVerticalOptions } from './types';\r\n\r\n/**\r\n * * Slides an element down (animates height from 0 to auto). Sets `display` property and animates height.\r\n * @param options\r\n * * Animation duration and display type.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function slideDown(this: jBase, options: SlideVerticalOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n const { duration = 300, displayType = 'block' } = options;\r\n\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n if (window.getComputedStyle(el).display !== 'none')\r\n return;\r\n\r\n el.style.display = displayType;\r\n const height = el.scrollHeight;\r\n\r\n el.style.height = '0px';\r\n el.style.overflow = 'hidden'; \r\n el.style.transition = `height ${duration}ms ease-in-out`;\r\n\r\n void el.offsetHeight;\r\n\r\n el.style.height = `${height}px`;\r\n\r\n setTimeout(() => {\r\n el.style.height = 'auto';\r\n el.style.overflow = 'visible';\r\n el.style.transition = '';\r\n }, duration);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Slides an element up (animates height to 0). Sets `display: none` after animation.\r\n * @param options\r\n * * Animation duration.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function slideUp(this: jBase, options: SlideVerticalOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n const { duration = 300 } = options;\r\n\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n el.style.height = `${el.scrollHeight}px`;\r\n el.style.overflow = 'hidden';\r\n el.style.transition = `height ${duration}ms ease-in-out`;\r\n\r\n void el.offsetHeight;\r\n\r\n el.style.height = '0px';\r\n\r\n setTimeout(() => {\r\n el.style.display = 'none';\r\n el.style.height = '';\r\n el.style.overflow = '';\r\n el.style.transition = '';\r\n }, duration);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Toggles between slideDown and slideUp based on the display state.\r\n * @param options\r\n * * Animation duration.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function slideToggleBox(this: jBase, options: SlideVerticalOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n const display = window.getComputedStyle(el).display;\r\n const wrapper = new (this.constructor as any)(el);\r\n\r\n if (display === 'none') {\r\n wrapper.slideDown(options);\r\n } else {\r\n wrapper.slideUp(options);\r\n }\r\n }\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/modules/effects/fade.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Effects\r\n * @description\r\n * * Methods for fading elements in and out (fadeIn, fadeOut, fadeToggle).\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\nimport { jBase } from '../../core';\r\nimport { isBrowser } from '../../utils';\r\nimport { FadeOptions } from './types';\r\n\r\n\r\n\r\n\r\n/**\r\n * * Fades an element in (Opacity 0 -> 1).\r\n * @param options\r\n * * Duration in ms (default: 300) and display type (default: 'block').\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function fadeIn(this: jBase, options: FadeOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n const { duration = 300, displayType = 'block' } = options;\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n el.style.opacity = '0';\r\n el.style.display = displayType;\r\n el.style.transition = `opacity ${duration}ms ease-in-out`;\r\n void el.offsetHeight;\r\n requestAnimationFrame(() => {\r\n el.style.opacity = '1';\r\n });\r\n setTimeout(() => {\r\n el.style.transition = '';\r\n }, duration);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Fades an element out (Opacity 1 -> 0) and sets display: none afterwards.\r\n * @param options\r\n * * Duration in ms (default: 300).\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function fadeOut(this: jBase, options: FadeOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n const { duration = 300 } = options;\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n el.style.opacity = '1';\r\n el.style.transition = `opacity ${duration}ms ease-in-out`;\r\n void el.offsetHeight;\r\n requestAnimationFrame(() => {\r\n el.style.opacity = '0';\r\n });\r\n setTimeout(() => {\r\n el.style.display = 'none';\r\n el.style.transition = '';\r\n }, duration);\r\n }\r\n });\r\n return this;\r\n}\r\n\r\n/**\r\n * * Toggles between fadeIn and fadeOut based on the current display state.\r\n * @param options\r\n * * Animation options.\r\n * @returns\r\n * * The current jBase instance.\r\n */\r\nexport function fadeToggle(this: jBase, options: FadeOptions = {}): jBase {\r\n if (!isBrowser())\r\n return this;\r\n this.forEach(el => {\r\n if (el instanceof HTMLElement) {\r\n const display = window.getComputedStyle(el).display;\r\n const wrapper = new (this.constructor as any)(el);\r\n if (display === 'none') {\r\n wrapper.fadeIn(options);\r\n } else {\r\n wrapper.fadeOut(options);\r\n }\r\n }\r\n });\r\n return this;\r\n}", "/**\r\n * @file src/modules/effects/index.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Effects\r\n * @description\r\n * * Central entry point for visual effects. Aggregates slide, fade, and vertical animation modules.\r\n * @requires ./slide\r\n * * Horizontal slide effects (slideIn, slideOut).\r\n * @requires ./vertical\r\n * * Vertical slide effects / Accordion (slideDown, slideUp).\r\n * @requires ./fade\r\n * * Opacity fade effects (fadeIn, fadeOut).\r\n */\r\n\r\nimport * as slideMethods from './slide';\r\nimport * as verticalMethods from './vertical';\r\nimport * as fadeMethods from './fade';\r\n\r\n/**\r\n * * Aggregation of all visual effect methods. Bundles sliding and fading animations to extend the jBase prototype.\r\n */\r\nexport const effectMethods = {\r\n ...slideMethods,\r\n ...verticalMethods,\r\n ...fadeMethods\r\n};", "/**\r\n * @file src/modules/http/get.ts\r\n * @version 2.0.3\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category HTTP\r\n * @description\r\n * * Abstraction for HTTP GET requests.\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\n/**\r\n * * Performs an asynchronous HTTP GET request and expects a JSON response. Includes an automatic timeout of 5000ms to avoid hanging requests.\r\n * @template T\r\n * * The expected type of the response data (Generic).\r\n * @param url\r\n * * The target URL for the request.\r\n * @param option \r\n * * Optional RequestInit object to customize the fetch request.\r\n * @returns\r\n * * A Promise resolving with the typed JSON data.\r\n * @throws\r\n * * Error if HTTP status is not in success range (200-299) or a timeout occurs.\r\n */\r\nexport async function get<T>(url: string, option?: RequestInit): Promise<T> {\r\n const fetchOptions: RequestInit = { ...option };\r\n if (fetchOptions.method?.toLowerCase() === 'post') {\r\n fetchOptions.method = 'GET';\r\n }\r\n if (!fetchOptions.signal) {\r\n fetchOptions.signal = AbortSignal.timeout(5000);\r\n }\r\n const response = await fetch(url, {\r\n ...fetchOptions\r\n });\r\n if (!response.ok) {\r\n throw new Error(`HTTP Error: ${response.status}`);\r\n }\r\n const text = await response.text();\r\n return text ? JSON.parse(text) : {} as T;\r\n}\r\n\r\n/**\r\n * * Performs an asynchronous HTTP GET request and returns the raw text content. Ideal for loading HTML fragments (Server-Side Rendering Partials) or plain text.\r\n * @param url\r\n * * The target URL for the request.\r\n * @param option \r\n * * Optional RequestInit object to customize the fetch request.\r\n * @returns\r\n * * A Promise containing the response body as a string.\r\n * @throws\r\n * * Error if HTTP status is not in success range (200-299).\r\n */\r\nexport async function getText<T>(url: string, option?: RequestInit): Promise<T> {\r\n const fetchOptions: RequestInit = { ...option };\r\n if (fetchOptions.method?.toLowerCase() !== 'get') {\r\n fetchOptions.method = 'GET';\r\n }\r\n if (!fetchOptions.signal) {\r\n fetchOptions.signal = AbortSignal.timeout(5000);\r\n }\r\n const response = await fetch(url, {\r\n ...fetchOptions\r\n });\r\n if (!response.ok) {\r\n throw new Error(`HTTP Error: ${response.status}`);\r\n }\r\n const text = await response.text();\r\n return text ? JSON.parse(text) : {} as T;\r\n}", "/**\r\n * @file src/modules/http/post.ts\r\n * @version 2.0.3\r\n * @since 2.0.2\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category HTTP\r\n * * @description\r\n * * Abstraction for HTTP POST requests.\r\n * @requires ../../core\r\n * * Depends on the core jBase class for type definitions.\r\n */\r\n\r\n/**\r\n * * Performs an asynchronous HTTP POST request to the specified URL. Automatically sets the 'Content-Type' header to 'application/json' and serializes the body.\r\n * @template T\r\n * * The expected response type (Generic).\r\n * @param url\r\n * * The target URL for the request.\r\n * @param body\r\n * * The data to send (automatically JSON serialized). Default is {}.\r\n * @param option \r\n * * Optional RequestInit object to customize the fetch request.\r\n * @returns\r\n * * A Promise resolving with the deserialized JSON response of type T.\r\n * @throws\r\n * * Error if the HTTP status code is not in the range 200-299.\r\n */\r\nexport async function post<T>(url: string, body: any = {}, option?: RequestInit): Promise<T> {\r\n const fetchOptions: RequestInit = { ...option };\r\n if (fetchOptions.method?.toLowerCase() !== 'post') {\r\n fetchOptions.method = 'post';\r\n }\r\n if (!fetchOptions.signal) {\r\n fetchOptions.signal = AbortSignal.timeout(5000);\r\n }\r\n const response = await fetch(url, {\r\n ...fetchOptions,\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n });\r\n\r\n if (response.status === 204) {\r\n const text = await response.text();\r\n return text ? JSON.parse(text) : {} as T;\r\n }\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP Error: ${response.status}`);\r\n }\r\n\r\n const text = await response.text();\r\n return text ? JSON.parse(text) : {} as T;\r\n}", "/**\r\n * @file src/modules/http/index.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category HTTP\r\n * @description\r\n * * Central entry point for HTTP requests. Aggregates GET and POST methods.\r\n * @requires ./get\r\n * * HTTP GET methods (get, getText).\r\n * @requires ./post\r\n * * HTTP POST methods.\r\n */\r\n\r\nimport * as getMethods from './get';\r\nimport * as postMethods from './post';\r\n\r\n/**\r\n * * The central HTTP client of the framework. Aggregates all HTTP methods (GET, POST, etc.) into a unified interface. Acts as a wrapper around the native `fetch` API to simplify JSON parsing, error handling, and typing.\r\n * @example\r\n * Get data / Daten abrufen\r\n * const data = await http.get<UserData>('/api/user/1');\r\n *\r\n * Send data / Daten senden\r\n * await http.post('/api/login', { username: '...', password: '...' });\r\n *\r\n * Load HTML / HTML laden\r\n * const html = await http.getText('/templates/modal.html');\r\n */\r\nexport const http = {\r\n ...getMethods,\r\n ...postMethods\r\n};", "/**\r\n * @file src/modules/data/arrays.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Data\r\n * @description\r\n * * Utility functions for array manipulation and data processing.\r\n * @requires ./types\r\n * * Depends on types.\r\n */\r\n\r\nimport { MatchMode } from './types';\r\n\r\n/**\r\n * * Splits an array into smaller groups (chunks). Ideal for pagination or grid layouts.\r\n * @example\r\n * chunk([1, 2, 3, 4, 5], 2) => [[1, 2], [3, 4], [5]]\r\n * @param array\r\n * * The source array.\r\n * @param size\r\n * * The size of each chunk.\r\n * @returns\r\n * * An array of arrays.\r\n */\r\nexport function chunk<T>(array: T[], size: number): T[][] {\r\n const chunks: T[][] = [];\r\n for (let i = 0; i < array.length; i += size) {\r\n chunks.push(array.slice(i, i + size));\r\n }\r\n return chunks;\r\n}\r\n\r\n/**\r\n * * Merges multiple arrays into a single flat array.\r\n * @param arrays\r\n * * A list of arrays.\r\n * @returns\r\n * * A new, merged array.\r\n */\r\nexport function mergeArray<T>(...arrays: T[][]): T[] {\r\n return [].concat(...(arrays as any));\r\n}\r\n\r\n/**\r\n * * Safely adds an element at a specific position without mutating the original array (Immutable).\r\n * @param array\r\n * * The array.\r\n * @param item\r\n * * The item to add.\r\n * @param index\r\n * * The position (default: end). Negative values count from the back (-1 = before the last one).\r\n * @returns\r\n * * A new array including the element.\r\n */\r\nexport function add<T>(array: T[], item: T, index: number = array.length): T[] {\r\n const copy = [...array];\r\n const idx = index < 0 ? array.length + index + 1 : index;\r\n copy.splice(idx, 0, item);\r\n return copy;\r\n}\r\n\r\n/**\r\n * * Removes elements based on index or match logic.\r\n */\r\nexport const remove = {\r\n /**\r\n * * Removes an element at a specific index.\r\n * @param array\r\n * * The array.\r\n * @param index\r\n * * The index (negative values allowed).\r\n */\r\n at<T>(array: T[], index: number): T[] {\r\n const copy = [...array];\r\n const idx = index < 0 ? array.length + index : index;\r\n if (idx >= 0 && idx < copy.length) {\r\n copy.splice(idx, 1);\r\n }\r\n return copy;\r\n },\r\n\r\n /**\r\n * * Removes the first element.\r\n * @param array\r\n * * The array.\r\n */\r\n first<T>(array: T[]): T[] { return array.slice(1); },\r\n\r\n /**\r\n * * Removes the last element.\r\n * @param array\r\n * * The array.\r\n */\r\n last<T>(array: T[]): T[] { return array.slice(0, -1); },\r\n\r\n /**\r\n * * Removes all elements matching a query condition.\r\n * @example\r\n * remove.byMatch(users, 'Admin', 'exact', 'role')\r\n * @param array\r\n * * The array.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @param key\r\n * * (Optional) The object key if it is an array of objects.\r\n */\r\n byMatch<T>(array: T[], query: string | number, mode: MatchMode = 'exact', key?: keyof T): T[] {\r\n const queryStr = String(query).toLowerCase();\r\n return array.filter(item => {\r\n const val = key ? item[key] : item;\r\n const valStr = String(val).toLowerCase();\r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * * Searches for elements in the array.\r\n */\r\nexport const find = {\r\n /**\r\n * * Finds the index of the first match.\r\n * @param array\r\n * * The array.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @param key\r\n * * (Optional) The object key if it is an array of objects.\r\n * @returns\r\n * * Index or -1.\r\n */\r\n at<T>(array: T[], query: string | number, mode: MatchMode = 'exact', key?: keyof T): number {\r\n const queryStr = String(query).toLowerCase();\r\n return array.findIndex(item => {\r\n const val = key ? item[key] : item;\r\n const valStr = String(val).toLowerCase();\r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * * Returns all elements matching the condition (Filter).\r\n * @param array\r\n * * The array.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @param key\r\n * * (Optional) The object key if it is an array of objects.\r\n * @returns\r\n * * All matching elements or -1.\r\n */\r\n all<T>(array: T[], query: string | number, mode: MatchMode = 'exact', key?: keyof T): T[] {\r\n const queryStr = String(query).toLowerCase();\r\n return array.filter(item => {\r\n const val = key ? item[key] : item;\r\n const valStr = String(val).toLowerCase();\r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * * Returns the first matching element (or undefined).\r\n * @param array\r\n * * The array.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @param key\r\n * * (Optional) The object key if it is an array of objects.\r\n * @returns\r\n * * Index or -1.\r\n */\r\n first<T>(array: T[], query: string | number, mode: MatchMode = 'exact', key?: keyof T): T | undefined {\r\n const queryStr = String(query).toLowerCase();\r\n return array.find(item => {\r\n const val = key ? item[key] : item;\r\n const valStr = String(val).toLowerCase();\r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * * Returns the last matching element (or undefined).\r\n * @param array\r\n * * The array.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @param key\r\n * * (Optional) The object key if it is an array of objects.\r\n * @returns\r\n * * Index or -1.\r\n */\r\n last<T>(array: T[], query: string | number, mode: MatchMode = 'exact', key?: keyof T): T | undefined {\r\n const queryStr = String(query).toLowerCase();\r\n return [...array].reverse().find(item => {\r\n const val = key ? item[key] : item;\r\n const valStr = String(val).toLowerCase();\r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * * Removes all elements matching a query condition.\r\n * @example\r\n * find.byMatch(users, 'Admin', 'exact', 'role')\r\n * @param array\r\n * * The array.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @param key\r\n * * (Optional) The object key if it is an array of objects.\r\n * @returns\r\n * * Index or -1.\r\n */\r\n byMatch<T>(array: T[], query: string | number, mode: MatchMode = 'exact', key?: keyof T): number | undefined {\r\n const queryStr = String(query).toLowerCase();\r\n return array.findIndex(item => {\r\n const val = key ? item[key] : item;\r\n const valStr = String(val).toLowerCase();\r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n }\r\n};", "/**\r\n * @file src/modules/data/objects.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Data\r\n * @description\r\n * * Utility functions for object manipulation (e.g., deep merging, extension).\r\n * @requires ./types\r\n * * Depends on types.\r\n */\r\n\r\nimport { MatchMode } from './types';\r\n\r\n/**\r\n * * Recursively merges multiple objects (Deep Merge).\r\n * @example\r\n * mergeObjects({ a: 1, b: { x: 1 } }, { b: { y: 2 } }) => { a: 1, b: { x: 1, y: 2 } }\r\n * @param target\r\n * * The target object (will be modified!).\r\n * @param sources\r\n * * One or more source objects.\r\n * @returns\r\n * * The modified target object.\r\n */\r\nexport function mergeObjects(target: any, ...sources: any[]): any {\r\n if (!sources.length)\r\n return target;\r\n const source = sources.shift();\r\n\r\n if (isObject(target) && isObject(source)) {\r\n for (const key in source) {\r\n if (key === '__proto__' || key === 'constructor')\r\n continue;\r\n if (isObject(source[key])) {\r\n if (!target[key]) target[key] = {};\r\n mergeObjects(target[key], source[key]);\r\n } else {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n return mergeObjects(target, ...sources);\r\n}\r\n\r\n/**\r\n * * Creates a new object containing only the specified keys (Allowlist).\r\n * @param obj\r\n * * The source object.\r\n * @param keys\r\n * * Array of keys to keep.\r\n * @returns\r\n * * A new object with selected keys.\r\n */\r\nexport function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\r\n const ret: any = {};\r\n keys.forEach(key => {\r\n if (key in obj) ret[key] = obj[key];\r\n });\r\n return ret as Pick<T, K>;\r\n}\r\n\r\n/**\r\n * * Creates a new object containing all keys EXCEPT the specified ones (Blocklist).\r\n * @param obj\r\n * * The source object.\r\n * @param keys\r\n * * Array of keys to remove.\r\n * @returns\r\n * * A new object without the specified keys.\r\n */\r\nexport function omit<T, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> {\r\n const ret = { ...obj };\r\n keys.forEach(key => {\r\n delete ret[key];\r\n });\r\n return ret as Omit<T, K>;\r\n}\r\n\r\n/**\r\n * * Safely retrieves a value from a nested object (Safe Navigation).\r\n * @example\r\n * get(user, 'address.city') Returns city or undefined\r\n * @param obj\r\n * * The object.\r\n * @param path\r\n * * The path as a dot-notation string.\r\n * @returns\r\n * * The found value or undefined.\r\n */\r\nexport function get(obj: any, path: string): any {\r\n return path.split('.').reduce((acc, part) => acc && acc[part], obj);\r\n}\r\n\r\n/**\r\n * * Sets a value deeply within a nested object. Creates missing intermediate objects automatically.\r\n * @param obj\r\n * * The object to modify.\r\n * @param path\r\n * * The path as a string (e.g., 'settings.theme.color').\r\n * @param value\r\n * * The value to set.\r\n */\r\nexport function set(obj: any, path: string, value: any): void {\r\n const parts = path.split('.');\r\n let current = obj;\r\n for (let i = 0; i < parts.length - 1; i++) {\r\n const part = parts[i];\r\n if (!current[part]) current[part] = {};\r\n current = current[part];\r\n }\r\n current[parts[parts.length - 1]] = value;\r\n}\r\n\r\n/**\r\n * * Searches keys or values in the object.\r\n */\r\nexport const find = {\r\n /**\r\n * * Returns the n-th entry of an object as a [key, value] pair. Supports negative indices.\r\n * @example find.at({ a: 1, b: 2 }, 1) => ['b', 2]\r\n * @param obj\r\n * * The object to search.\r\n * @param index\r\n * * The index (0-based, negative counts from the back).\r\n * @returns\r\n * * A [key, value] tuple or undefined.\r\n */\r\n at(obj: any, index: number): [string, any] | undefined {\r\n const entries = Object.entries(obj);\r\n const idx = index < 0 ? entries.length + index : index;\r\n return entries[idx];\r\n },\r\n\r\n /**\r\n * * Finds the first entry where the key or value matches the query.\r\n * @example find.first(config, 'admin', 'exact', 'key')\r\n * @param obj\r\n * * The object to search.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @param searchBy\r\n * * Whether to search by 'key' or 'value'.\r\n * @returns\r\n * * The first matching [key, value] pair or undefined.\r\n */\r\n first(obj: any, query: string | number, mode: MatchMode = 'exact', searchBy: 'key' | 'value' = 'key'): [string, any] | undefined {\r\n const entries = Object.entries(obj);\r\n const queryStr = String(query).toLowerCase();\r\n \r\n return entries.find(([key, val]) => {\r\n const target = searchBy === 'key' ? key : val;\r\n const valStr = String(target).toLowerCase();\r\n \r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * * Finds the last entry where the key or value matches the query.\r\n * @example find.last(config, '.php', 'endsWith', 'key')\r\n * @param obj\r\n * * The object to search.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @param searchBy\r\n * * Whether to search by 'key' or 'value'.\r\n * @returns\r\n * * The last matching [key, value] pair or undefined.\r\n */\r\n last(obj: any, query: string | number, mode: MatchMode = 'exact', searchBy: 'key' | 'value' = 'key'): [string, any] | undefined {\r\n const entries = Object.entries(obj);\r\n const queryStr = String(query).toLowerCase();\r\n\r\n return [...entries].reverse().find(([key, val]) => {\r\n const target = searchBy === 'key' ? key : val;\r\n const valStr = String(target).toLowerCase();\r\n \r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * * Finds all keys matching the query.\r\n * @example find.key(config, 'api_', 'startsWith')\r\n * @param obj\r\n * * The object to search.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @returns\r\n * * An array of matching keys.\r\n */\r\n key(obj: any, query: string, mode: MatchMode = 'exact'): string[] {\r\n const queryStr = String(query).toLowerCase();\r\n \r\n return Object.keys(obj).filter(key => {\r\n const valStr = String(key).toLowerCase();\r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * * Finds all values matching the query.\r\n * @param obj\r\n * * The object to search.\r\n * @param query\r\n * * The search query.\r\n * @param mode\r\n * * The comparison mode ('exact', 'contains', 'startsWith', 'endsWith').\r\n * @returns\r\n * * An array of matching values.\r\n */\r\n value(obj: any, query: string, mode: MatchMode = 'exact'): any[] {\r\n const queryStr = String(query).toLowerCase();\r\n\r\n return Object.values(obj).filter(val => {\r\n const valStr = String(val).toLowerCase();\r\n switch (mode) {\r\n case 'exact': return valStr === queryStr;\r\n case 'startsWith': return valStr.startsWith(queryStr);\r\n case 'endsWith': return valStr.endsWith(queryStr);\r\n case 'contains': return valStr.includes(queryStr);\r\n default: return false;\r\n }\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * * Checks if the provided value is a plain object (not null, not an array).\r\n * * Acts as a TypeScript Type Guard.\r\n * @param item\r\n * * The value to check.\r\n * @returns\r\n * * True if the value is a plain object.\r\n */\r\nfunction isObject(item: any): item is Record<string, any> {\r\n return (item && typeof item === 'object' && !Array.isArray(item));\r\n}", "/**\r\n * @file src/modules/data/index.ts\r\n * @version 2.0.2\r\n * @since 2.0.0\r\n * * @license GPL-3.0-or-later\r\n * @copyright Sven Minio 2026\r\n * @author Sven Minio <https://sven-minio.de>\r\n * @category Data\r\n * @description\r\n * * Central entry point for data manipulation modules. Aggregates array and object utilities.\r\n * @requires ./arrays\r\n * * Array manipulation methods.\r\n * @requires ./objects\r\n * * Object manipulation methods.\r\n */\r\n\r\nimport * as arrayMethods from './arrays';\r\nimport * as objectMethods from './objects';\r\n\r\n/**\r\n * * Central data utility object. Bundles array ('arr') and object ('obj') manipulation methods.\r\n */\r\nexport const data = {\r\n arr: arrayMethods,\r\n obj: objectMethods\r\n};"],
5
+ "mappings": "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",
6
+ "names": ["jBase", "html", "add", "parent", "parents", "parents", "parent", "children", "text", "text", "remove", "val", "find", "get", "val", "window", "jBase"]
7
+ }