@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.
- package/CHANGELOG.md +50 -0
- package/README.md +59 -43
- package/dist/browser.d.ts +5 -6
- package/dist/browser.d.ts.map +1 -1
- package/dist/core.d.ts +9 -14
- package/dist/core.d.ts.map +1 -1
- package/dist/index.cjs +577 -452
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +304 -603
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +575 -452
- package/dist/index.mjs.map +7 -0
- package/dist/jbase.browser.js +338 -281
- package/dist/jbase.browser.js.map +7 -0
- package/dist/jbase.min.js +3 -2
- package/dist/jbase.min.js.map +7 -0
- package/dist/modules/css/classes.d.ts +15 -29
- package/dist/modules/css/classes.d.ts.map +1 -1
- package/dist/modules/css/index.d.ts +5 -9
- package/dist/modules/css/index.d.ts.map +1 -1
- package/dist/modules/css/styles.d.ts +7 -13
- package/dist/modules/css/styles.d.ts.map +1 -1
- package/dist/modules/data/arrays.d.ts +96 -64
- package/dist/modules/data/arrays.d.ts.map +1 -1
- package/dist/modules/data/index.d.ts +5 -9
- package/dist/modules/data/index.d.ts.map +1 -1
- package/dist/modules/data/objects.d.ts +86 -54
- package/dist/modules/data/objects.d.ts.map +1 -1
- package/dist/modules/data/types.d.ts +3 -22
- package/dist/modules/data/types.d.ts.map +1 -1
- package/dist/modules/dom/attributes.d.ts +10 -19
- package/dist/modules/dom/attributes.d.ts.map +1 -1
- package/dist/modules/dom/content.d.ts +9 -17
- package/dist/modules/dom/content.d.ts.map +1 -1
- package/dist/modules/dom/index.d.ts +8 -15
- package/dist/modules/dom/index.d.ts.map +1 -1
- package/dist/modules/dom/manipulation.d.ts +41 -81
- package/dist/modules/dom/manipulation.d.ts.map +1 -1
- package/dist/modules/dom/states.d.ts +12 -23
- package/dist/modules/dom/states.d.ts.map +1 -1
- package/dist/modules/dom/traversal.d.ts +64 -127
- package/dist/modules/dom/traversal.d.ts.map +1 -1
- package/dist/modules/effects/fade.d.ts +13 -31
- package/dist/modules/effects/fade.d.ts.map +1 -1
- package/dist/modules/effects/index.d.ts +15 -23
- package/dist/modules/effects/index.d.ts.map +1 -1
- package/dist/modules/effects/slide.d.ts +13 -31
- package/dist/modules/effects/slide.d.ts.map +1 -1
- package/dist/modules/effects/types.d.ts +33 -0
- package/dist/modules/effects/types.d.ts.map +1 -0
- package/dist/modules/effects/vertical.d.ts +13 -31
- package/dist/modules/effects/vertical.d.ts.map +1 -1
- package/dist/modules/events/binding.d.ts +11 -21
- package/dist/modules/events/binding.d.ts.map +1 -1
- package/dist/modules/events/form.d.ts +18 -35
- package/dist/modules/events/form.d.ts.map +1 -1
- package/dist/modules/events/index.d.ts +9 -17
- package/dist/modules/events/index.d.ts.map +1 -1
- package/dist/modules/events/keyboard.d.ts +16 -31
- package/dist/modules/events/keyboard.d.ts.map +1 -1
- package/dist/modules/events/lifecycle.d.ts +6 -11
- package/dist/modules/events/lifecycle.d.ts.map +1 -1
- package/dist/modules/events/mouse.d.ts +30 -59
- package/dist/modules/events/mouse.d.ts.map +1 -1
- package/dist/modules/events/touch.d.ts +15 -29
- package/dist/modules/events/touch.d.ts.map +1 -1
- package/dist/modules/http/get.d.ts +18 -25
- package/dist/modules/http/get.d.ts.map +1 -1
- package/dist/modules/http/index.d.ts +11 -15
- package/dist/modules/http/index.d.ts.map +1 -1
- package/dist/modules/http/post.d.ts +13 -19
- package/dist/modules/http/post.d.ts.map +1 -1
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2246 -0
- package/dist/server.js.map +7 -0
- package/dist/types.d.ts +11 -21
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +20 -23
- package/dist/utils.d.ts.map +1 -1
- package/package.json +14 -4
- package/wiki/CSS-Classes-&-Styles.md +128 -0
- package/wiki/DATA-Utilities-(Arrays).md +332 -0
- package/wiki/DATA-Utilities-(Objects).md +263 -0
- package/wiki/DOM-Attributes.md +56 -0
- package/wiki/DOM-Content.md +48 -0
- package/wiki/DOM-Manipulation.md +272 -0
- package/wiki/DOM-States.md +73 -0
- package/wiki/DOM-Traversal.md +529 -0
- package/wiki/EFFECTS-Fade.md +76 -0
- package/wiki/EFFECTS-Slide-(horizontal).md +70 -0
- package/wiki/EFFECTS-Slide-(vertical).md +75 -0
- package/wiki/EVENTS-Bindings.md +55 -0
- package/wiki/EVENTS-Form.md +122 -0
- package/wiki/EVENTS-Keyboard.md +98 -0
- package/wiki/EVENTS-Lifecycle.md +25 -0
- package/wiki/EVENTS-Mouse.md +218 -0
- package/wiki/EVENTS-Touch.md +98 -0
- package/wiki/HTTP-Requests.md +93 -0
- package/wiki/Home.md +118 -0
- package/wiki/Installation.md +44 -0
- package/wiki/Quick-Start.md +139 -0
- package/dist/browser.js +0 -29
- package/dist/browser.js.map +0 -1
- package/dist/core.js +0 -78
- package/dist/core.js.map +0 -1
- package/dist/index.js +0 -100
- package/dist/index.js.map +0 -1
- package/dist/jbase.js +0 -1898
- package/dist/modules/css/classes.js +0 -88
- package/dist/modules/css/classes.js.map +0 -1
- package/dist/modules/css/index.js +0 -33
- package/dist/modules/css/index.js.map +0 -1
- package/dist/modules/css/styles.js +0 -49
- package/dist/modules/css/styles.js.map +0 -1
- package/dist/modules/data/arrays.js +0 -177
- package/dist/modules/data/arrays.js.map +0 -1
- package/dist/modules/data/index.js +0 -33
- package/dist/modules/data/index.js.map +0 -1
- package/dist/modules/data/objects.js +0 -168
- package/dist/modules/data/objects.js.map +0 -1
- package/dist/modules/data/types.js +0 -43
- package/dist/modules/data/types.js.map +0 -1
- package/dist/modules/dom/attributes.js +0 -69
- package/dist/modules/dom/attributes.js.map +0 -1
- package/dist/modules/dom/content.js +0 -63
- package/dist/modules/dom/content.js.map +0 -1
- package/dist/modules/dom/index.js +0 -48
- package/dist/modules/dom/index.js.map +0 -1
- package/dist/modules/dom/manipulation.js +0 -343
- package/dist/modules/dom/manipulation.js.map +0 -1
- package/dist/modules/dom/states.js +0 -89
- package/dist/modules/dom/states.js.map +0 -1
- package/dist/modules/dom/traversal.js +0 -527
- package/dist/modules/dom/traversal.js.map +0 -1
- package/dist/modules/effects/fade.js +0 -104
- package/dist/modules/effects/fade.js.map +0 -1
- package/dist/modules/effects/index.js +0 -38
- package/dist/modules/effects/index.js.map +0 -1
- package/dist/modules/effects/slide.js +0 -103
- package/dist/modules/effects/slide.js.map +0 -1
- package/dist/modules/effects/vertical.js +0 -118
- package/dist/modules/effects/vertical.js.map +0 -1
- package/dist/modules/events/binding.js +0 -60
- package/dist/modules/events/binding.js.map +0 -1
- package/dist/modules/events/form.js +0 -106
- package/dist/modules/events/form.js.map +0 -1
- package/dist/modules/events/index.js +0 -53
- package/dist/modules/events/index.js.map +0 -1
- package/dist/modules/events/keyboard.js +0 -83
- package/dist/modules/events/keyboard.js.map +0 -1
- package/dist/modules/events/lifecycle.js +0 -40
- package/dist/modules/events/lifecycle.js.map +0 -1
- package/dist/modules/events/mouse.js +0 -172
- package/dist/modules/events/mouse.js.map +0 -1
- package/dist/modules/events/touch.js +0 -74
- package/dist/modules/events/touch.js.map +0 -1
- package/dist/modules/http/get.js +0 -65
- package/dist/modules/http/get.js.map +0 -1
- package/dist/modules/http/index.js +0 -42
- package/dist/modules/http/index.js.map +0 -1
- package/dist/modules/http/post.js +0 -54
- package/dist/modules/http/post.js.map +0 -1
- package/dist/types.js +0 -15
- package/dist/types.js.map +0 -1
- package/dist/utils.js +0 -71
- package/dist/utils.js.map +0 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
* [`get`](#usage-http-get) | [`getText`](#usage-http-getText) | [`post`](#usage-http-post)
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## <a id="usage-get"></a>.get
|
|
6
|
+
|
|
7
|
+
**Description**
|
|
8
|
+
Performs an asynchronous HTTP GET request. This method assumes the response is JSON and will automatically parse it.
|
|
9
|
+
|
|
10
|
+
**Parameters**
|
|
11
|
+
|
|
12
|
+
* `url` (String): A string containing the URL to which the request is sent.
|
|
13
|
+
* `headers` (Object, optional): An object of additional header key/value pairs to send along with the request.
|
|
14
|
+
|
|
15
|
+
**Returns**
|
|
16
|
+
|
|
17
|
+
* (Promise): A Promise that resolves with the parsed JSON data or rejects with an error.
|
|
18
|
+
|
|
19
|
+
**Example**
|
|
20
|
+
|
|
21
|
+
```javascript
|
|
22
|
+
$.http.get('https://api.example.com/users')
|
|
23
|
+
.then(data => {
|
|
24
|
+
console.log('Users loaded:', data);
|
|
25
|
+
})
|
|
26
|
+
.catch(err => {
|
|
27
|
+
console.error('Error loading users:', err);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## <a id="usage-getText"></a>getText
|
|
35
|
+
|
|
36
|
+
**Description**
|
|
37
|
+
Performs an asynchronous HTTP GET request. This method expects a raw text or HTML response and does not attempt to parse it as JSON. Ideal for loading HTML templates or config files.
|
|
38
|
+
|
|
39
|
+
**Parameters**
|
|
40
|
+
|
|
41
|
+
* `url` (String): A string containing the URL to which the request is sent.
|
|
42
|
+
* `headers` (Object, optional): An object of additional header key/value pairs.
|
|
43
|
+
|
|
44
|
+
**Returns**
|
|
45
|
+
|
|
46
|
+
* (Promise): A Promise that resolves with the raw string data.
|
|
47
|
+
|
|
48
|
+
**Example**
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
$.http.getText('/partials/footer.html')
|
|
52
|
+
.then(html => {
|
|
53
|
+
$('#footer-container').html(html);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## <a id="usage-post"></a>post
|
|
61
|
+
|
|
62
|
+
**Description**
|
|
63
|
+
Performs an asynchronous HTTP POST request to submit data to a server. The data is automatically stringified to JSON, and the `Content-Type` is set to `application/json` by default (unless overridden).
|
|
64
|
+
|
|
65
|
+
**Parameters**
|
|
66
|
+
|
|
67
|
+
* `url` (String): A string containing the URL to which the request is sent.
|
|
68
|
+
* `data` (Object): A plain object or array that is sent to the server.
|
|
69
|
+
* `headers` (Object, optional): An object of additional header key/value pairs.
|
|
70
|
+
|
|
71
|
+
**Returns**
|
|
72
|
+
|
|
73
|
+
* (Promise): A Promise that resolves with the server's response (parsed as JSON).
|
|
74
|
+
|
|
75
|
+
**Example**
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
const payload = {
|
|
79
|
+
username: 'jdoe',
|
|
80
|
+
email: 'john@example.com'
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
$.http.post('/api/register', payload)
|
|
84
|
+
.then(response => {
|
|
85
|
+
if (response.success) {
|
|
86
|
+
console.log('User registered!');
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
.catch(err => {
|
|
90
|
+
console.error('Registration failed:', err);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
```
|
package/wiki/Home.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Welcome to the jBase Documentation
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
**jBase** is a modern, modular, and lightweight JavaScript framework designed for high-performance DOM manipulation, event handling, and data management. It serves as a robust alternative to legacy libraries, built with modern ES6+ standards.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🚀 Getting Started
|
|
12
|
+
|
|
13
|
+
New to jBase? Start here to get up and running quickly.
|
|
14
|
+
|
|
15
|
+
* **[Installation & Setup](Installation)**
|
|
16
|
+
* Learn how to include jBase via Script Tag or NPM/Bundlers.
|
|
17
|
+
* **[Quick Start Guide](Quick-Start)**
|
|
18
|
+
* Basic usage examples to get you started in minutes.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 📚 API Reference
|
|
23
|
+
|
|
24
|
+
Explore the comprehensive documentation for all jBase modules.
|
|
25
|
+
|
|
26
|
+
### 🌲 DOM & UI
|
|
27
|
+
Manage your interface with powerful traversal and manipulation tools.
|
|
28
|
+
|
|
29
|
+
* **DOM Traversal**
|
|
30
|
+
* `find`, `closest`, `parent`, `children`, `siblings`, `next`, `prev`...
|
|
31
|
+
* **DOM Manipulation**
|
|
32
|
+
* `append`, `prepend`, `remove`, `html`, `text`, `wrap`, `replaceWith`...
|
|
33
|
+
* **Attributes & States**
|
|
34
|
+
* `attr`, `val`, `data`, `checked`, `disabled`, `selected`...
|
|
35
|
+
* **CSS & Styling**
|
|
36
|
+
* `css`, `addClass`, `removeClass`, `toggleClass`, `hasClass`...
|
|
37
|
+
* and many more...
|
|
38
|
+
|
|
39
|
+
### ⚡ Interaction & Effects
|
|
40
|
+
Bring your application to life with events and animations.
|
|
41
|
+
|
|
42
|
+
* **Event Handling**
|
|
43
|
+
* **Bindings:** `on`, `off`, `trigger`
|
|
44
|
+
* **Mouse/Touch:** `click`, `swipe`, `hover`...
|
|
45
|
+
* **Keyboard:** `keydown`, `pressedkey`...
|
|
46
|
+
* **Forms:** `submit`, `change`, `input`...
|
|
47
|
+
* **Effects & Animations**
|
|
48
|
+
* `fadeIn`, `fadeOut`, `slideDown`, `slideUp`, `slideToggle`...
|
|
49
|
+
* and many more...
|
|
50
|
+
|
|
51
|
+
### 🌐 Network
|
|
52
|
+
Communicate with servers easily.
|
|
53
|
+
|
|
54
|
+
* **HTTP Client**
|
|
55
|
+
* `get`, `post`, `getText` (Promise-based AJAX wrappers).
|
|
56
|
+
|
|
57
|
+
### 🛠 Data Utilities
|
|
58
|
+
Advanced helpers for complex data structures (Immutable & Type-Safe).
|
|
59
|
+
|
|
60
|
+
* **Array Utilities**
|
|
61
|
+
* **Manage:** `chunk`, `mergeArray`, `add`
|
|
62
|
+
* **Immutable Remove:** `remove.at`, `remove.byMatch`...
|
|
63
|
+
* **Search:** `find.at`, `find.all`, `find.first`...
|
|
64
|
+
* **Object Utilities**
|
|
65
|
+
* **Manage:** `mergeObjects`, `pick`, `omit`
|
|
66
|
+
* **Deep Access:** `get` (dot-notation), `set`
|
|
67
|
+
* **Search:** `find.key`, `find.value`, `find.first`...
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 🖥️ Server-Side Rendering (SSR) & Node.js
|
|
72
|
+
|
|
73
|
+
jBase is **isomorphic**. You can use the exact same code on the client and the server.
|
|
74
|
+
To use DOM manipulation in Node.js, simply bind jBase to a `jsdom` window instance.
|
|
75
|
+
|
|
76
|
+
### 1. Install JSDOM (Optional Peer Dependency)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npm install jsdom
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 2. Bind to a Virtual Window
|
|
83
|
+
|
|
84
|
+
Use the `bind` factory to create a jBase instance scoped to a specific request or document.
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
import { JSDOM } from 'jsdom';
|
|
88
|
+
import { bind } from '@k37z3r/jbase'; // Adjust to your package name
|
|
89
|
+
|
|
90
|
+
// 1. Create a virtual DOM environment
|
|
91
|
+
const dom = new JSDOM('<!DOCTYPE html><div id="app"></div>');
|
|
92
|
+
const window = dom.window;
|
|
93
|
+
|
|
94
|
+
// 2. Create a scoped instance of jBase
|
|
95
|
+
const $ = bind(window);
|
|
96
|
+
|
|
97
|
+
// 3. Manipulate the DOM exactly like in the browser
|
|
98
|
+
$('#app')
|
|
99
|
+
.addClass('ssr-rendered')
|
|
100
|
+
.html('<h1>Hello from Node.js!</h1>')
|
|
101
|
+
.append('<p>This HTML was generated on the server.</p>');
|
|
102
|
+
|
|
103
|
+
// 4. Output the final HTML string
|
|
104
|
+
console.log(dom.serialize());
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
> [!NOTE]
|
|
108
|
+
> Browser-only features like animations (`fadeIn`, `slideUp`) or Event Bindings (`click`) are **safely ignored** in Node.js environments to prevent crashes and save resources.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 🤝 Contributing & Support
|
|
113
|
+
|
|
114
|
+
* Found a bug? [Open an Issue](../../issues)
|
|
115
|
+
* Back to Repository: [jBase Repo](../../)
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
*© 2026 Sven Minio. Licensed under GPL-3.0.*
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
## 1. Browser (Legacy / Static)
|
|
2
|
+
Download the `jbase.min.js` file (link above), upload it to your server, and include it in your HTML.
|
|
3
|
+
|
|
4
|
+
```html
|
|
5
|
+
<script src="/path/to/js/jbase.min.js"></script>
|
|
6
|
+
|
|
7
|
+
<script>
|
|
8
|
+
// jBase is now available via '$' or 'jBase'
|
|
9
|
+
$(document).ready(() => {
|
|
10
|
+
console.log("jBase is ready!");
|
|
11
|
+
});
|
|
12
|
+
</script>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 2. Node.js / Bundlers (Webpack, Vite, Rollup) **coming soon**
|
|
18
|
+
|
|
19
|
+
If you are using a modern stack or server-side rendering (SSR), you can import jBase as a module.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @k37z3r/jbase
|
|
23
|
+
# or
|
|
24
|
+
yarn add @k37z3r/jbase
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Usage in TypeScript/ESM:**
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { $ } from 'jbase';
|
|
32
|
+
|
|
33
|
+
// Use as usual
|
|
34
|
+
$('.element').addClass('active');
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Usage in CommonJS (Node.js require):**
|
|
39
|
+
|
|
40
|
+
```javascript
|
|
41
|
+
const { $ } = require('jbase');
|
|
42
|
+
$('.element').addClass('active');
|
|
43
|
+
|
|
44
|
+
```
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# 🚀 Quick Start Guide
|
|
2
|
+
|
|
3
|
+
Welcome to jBase! This guide will help you get up and running in minutes. We will cover the basics of selecting elements, handling events, and fetching data.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Setup
|
|
8
|
+
|
|
9
|
+
Ensure you have included jBase in your project.
|
|
10
|
+
|
|
11
|
+
### Option A: CDN / Static
|
|
12
|
+
```html
|
|
13
|
+
<!DOCTYPE html>
|
|
14
|
+
<html lang="en">
|
|
15
|
+
<head>
|
|
16
|
+
<meta charset="UTF-8">
|
|
17
|
+
<title>jBase App</title>
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
<div id="app"></div>
|
|
21
|
+
|
|
22
|
+
<script src="path/to/jbase.min.js"></script>
|
|
23
|
+
<script>
|
|
24
|
+
// Your code goes here
|
|
25
|
+
</script>
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Option B: Node.js / Bundler
|
|
32
|
+
|
|
33
|
+
```javascript
|
|
34
|
+
import { $ } from 'jbase';
|
|
35
|
+
// or
|
|
36
|
+
const { $ } = require('jbase');
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 2. Basic DOM Manipulation
|
|
43
|
+
|
|
44
|
+
Selecting elements and changing their content is the most common task. jBase uses the familiar `$(selector)` syntax.
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
// Wait for DOM ready
|
|
48
|
+
$(document).ready(() => {
|
|
49
|
+
|
|
50
|
+
// 1. Select by ID and change text
|
|
51
|
+
$('#title').text('Hello jBase!');
|
|
52
|
+
|
|
53
|
+
// 2. Select by Class and change CSS
|
|
54
|
+
$('.box').css({
|
|
55
|
+
'background-color': '#3498db',
|
|
56
|
+
'color': 'white',
|
|
57
|
+
'padding': '20px'
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// 3. Append HTML content
|
|
61
|
+
$('#app').append('<button id="click-me">Click Me!</button>');
|
|
62
|
+
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 3. Handling Events
|
|
70
|
+
|
|
71
|
+
Interactivity is key. Let's make that button work.
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
// Bind a click event
|
|
75
|
+
$('#click-me').on('click', function(e) {
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
alert('You clicked the button!');
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// Shorthand method
|
|
81
|
+
$('#click-me').click(() => {
|
|
82
|
+
console.log('Clicked via shorthand!');
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// Hover effect
|
|
86
|
+
$('.box').hover(
|
|
87
|
+
() => console.log('Mouse In'), // Enter
|
|
88
|
+
() => console.log('Mouse Out') // Leave
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 4. Working with Arrays & Data
|
|
96
|
+
|
|
97
|
+
jBase isn't just for the DOM. It includes powerful data utilities.
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
const users = [
|
|
101
|
+
{ id: 1, name: 'Alice', role: 'admin' },
|
|
102
|
+
{ id: 2, name: 'Bob', role: 'user' },
|
|
103
|
+
{ id: 3, name: 'Charlie', role: 'user' }
|
|
104
|
+
];
|
|
105
|
+
|
|
106
|
+
// 1. Find the first admin
|
|
107
|
+
const admin = $.data.find.first(users, 'admin', 'exact', 'role');
|
|
108
|
+
console.log(admin); // { id: 1, name: 'Alice', ... }
|
|
109
|
+
|
|
110
|
+
// 2. Remove user with ID 2 (Immutable!)
|
|
111
|
+
const newUsers = $.data.remove.byMatch(users, 2, 'exact', 'id');
|
|
112
|
+
console.log(newUsers.length); // 2
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 5. Fetching Data (AJAX)
|
|
119
|
+
|
|
120
|
+
Loading data from an API is built-in and Promise-based.
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
$.http.get('https://jsonplaceholder.typicode.com/todos/1')
|
|
124
|
+
.then(data => {
|
|
125
|
+
// Success
|
|
126
|
+
$('#app').append(`<p>Loaded: ${data.title}</p>`);
|
|
127
|
+
})
|
|
128
|
+
.catch(err => {
|
|
129
|
+
// Error
|
|
130
|
+
console.error('Failed to load data', err);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## What's Next?
|
|
138
|
+
|
|
139
|
+
Now that you know the basics, explore the detailed modules, look at sidebar!
|
package/dist/browser.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @file src/browser.ts
|
|
4
|
-
* @version 2.0.0
|
|
5
|
-
* @since 2.0.0
|
|
6
|
-
* @license GPL-3.0-or-later
|
|
7
|
-
* @copyright Sven Minio 2026
|
|
8
|
-
* @author Sven Minio <https://sven-minio.de>
|
|
9
|
-
* @category Browser
|
|
10
|
-
* @description
|
|
11
|
-
* * 🇬🇧: Browser Entry Point. Attaches the jBase library and utilities to the global window object so they can be accessed via `$` or `jBase` in inline scripts.
|
|
12
|
-
* * 🇩🇪: Browser-Einstiegspunkt. Hängt die jBase-Bibliothek und Utilities an das globale Window-Objekt an, damit sie über `$` oder `jBase` in Inline-Skripten verfügbar sind.
|
|
13
|
-
*/
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const index_1 = require("./index");
|
|
16
|
-
/**
|
|
17
|
-
* * 🇬🇧: Expose globals to the window object.
|
|
18
|
-
* * 🇩🇪: Globale Variablen auf dem Window-Objekt setzen.
|
|
19
|
-
*/
|
|
20
|
-
window.$ = index_1.$;
|
|
21
|
-
window.jBase = index_1.jBase;
|
|
22
|
-
window.jB = index_1.jB;
|
|
23
|
-
window._jB = index_1._jB;
|
|
24
|
-
window.__jB = index_1.__jB;
|
|
25
|
-
window._jBase = index_1._jBase;
|
|
26
|
-
window.__jBase = index_1.__jBase;
|
|
27
|
-
window.http = index_1.http;
|
|
28
|
-
console.log("jBase initialized and ready!");
|
|
29
|
-
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AAEH,mCAAyE;AAmBzE;;;GAGG;AACF,MAAc,CAAC,CAAC,GAAG,SAAC,CAAC;AACrB,MAAc,CAAC,KAAK,GAAG,aAAK,CAAC;AAC7B,MAAc,CAAC,EAAE,GAAG,UAAE,CAAC;AACvB,MAAc,CAAC,GAAG,GAAG,WAAG,CAAC;AACzB,MAAc,CAAC,IAAI,GAAG,YAAI,CAAC;AAC3B,MAAc,CAAC,MAAM,GAAG,cAAM,CAAC;AAC/B,MAAc,CAAC,OAAO,GAAG,eAAO,CAAC;AACjC,MAAc,CAAC,IAAI,GAAG,YAAI,CAAC;AAE5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC"}
|
package/dist/core.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @file src/core.ts
|
|
4
|
-
* @version 2.0.0
|
|
5
|
-
* @since 2.0.0
|
|
6
|
-
* @license GPL-3.0-or-later
|
|
7
|
-
* @copyright Sven Minio 2026
|
|
8
|
-
* @author Sven Minio <https://sven-minio.de>
|
|
9
|
-
* @category Core
|
|
10
|
-
* @description
|
|
11
|
-
* * 🇬🇧: The main jBase class. Handles the selection engine, initialization, and plugin architecture.
|
|
12
|
-
* * 🇩🇪: Die Haupt-jBase-Klasse. Behandelt die Selektions-Engine, Initialisierung und Plugin-Architektur.
|
|
13
|
-
*/
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.jBase = void 0;
|
|
16
|
-
/**
|
|
17
|
-
* * 🇬🇧: 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).
|
|
18
|
-
* * 🇩🇪: Die Kern-Klasse des Frameworks, die von der nativen Array-Klasse erbt. Dient als Wrapper um DOM-Elemente und ermöglicht verkettbare Methoden (Fluent Interface).
|
|
19
|
-
*/
|
|
20
|
-
class jBase extends Array {
|
|
21
|
-
/**
|
|
22
|
-
* * 🇬🇧: Initializes a new jBase instance. Analyzes the provided selector and populates the internal array with found or created DOM elements.
|
|
23
|
-
* * 🇩🇪: Initialisiert eine neue jBase-Instanz. Analysiert den übergebenen Selektor und füllt das interne Array mit den gefundenen oder erstellten DOM-Elementen.
|
|
24
|
-
* @param selector
|
|
25
|
-
* * 🇬🇧: The input selector (CSS selector, HTML string, DOM element, or collection).
|
|
26
|
-
* * 🇩🇪: Der Eingabe-Selektor (CSS-Selektor, HTML-String, DOM-Element oder Sammlung).
|
|
27
|
-
*/
|
|
28
|
-
constructor(selector) {
|
|
29
|
-
super();
|
|
30
|
-
this.selectorSource = '';
|
|
31
|
-
this.selectorSource = typeof selector === 'string' ? selector : '<DOM Object/Array>';
|
|
32
|
-
if (!selector)
|
|
33
|
-
return;
|
|
34
|
-
// 1. Single DOM Element / Window / Document
|
|
35
|
-
if (selector instanceof HTMLElement || selector === document || selector === window || selector instanceof Element) {
|
|
36
|
-
this.push(selector);
|
|
37
|
-
}
|
|
38
|
-
// 2. String (HTML Creation or CSS Selector)
|
|
39
|
-
else if (typeof selector === 'string') {
|
|
40
|
-
const trimmed = selector.trim();
|
|
41
|
-
if (trimmed.startsWith('<') && trimmed.endsWith('>')) {
|
|
42
|
-
// HTML Creation
|
|
43
|
-
const tempDiv = document.createElement('div');
|
|
44
|
-
tempDiv.innerHTML = trimmed;
|
|
45
|
-
this.push(...Array.from(tempDiv.children));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
// CSS Selector
|
|
49
|
-
this.push(...Array.from(document.querySelectorAll(selector)));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// 3. Collections (NodeList, Array)
|
|
53
|
-
else if (selector instanceof NodeList || Array.isArray(selector)) {
|
|
54
|
-
this.push(...Array.from(selector));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* * 🇬🇧: Custom serializer for JSON.stringify. Prevents circular references and huge outputs by returning a simplified preview.
|
|
59
|
-
* * 🇩🇪: Benutzerdefinierte Serialisierung für JSON.stringify. Verhindert Zirkelbezüge und riesige Ausgaben durch Rückgabe einer vereinfachten Vorschau.
|
|
60
|
-
* @returns
|
|
61
|
-
* * 🇬🇧: A simplified object representation for debugging.
|
|
62
|
-
* * 🇩🇪: Eine vereinfachte Objektrepräsentation für das Debugging.
|
|
63
|
-
*/
|
|
64
|
-
toJSON() {
|
|
65
|
-
return {
|
|
66
|
-
meta: 'jBase Wrapper',
|
|
67
|
-
query: this.selectorSource,
|
|
68
|
-
count: this.length,
|
|
69
|
-
preview: this.slice(0, 10).map(el => {
|
|
70
|
-
if (el instanceof Element)
|
|
71
|
-
return el.tagName.toLowerCase();
|
|
72
|
-
return typeof el;
|
|
73
|
-
})
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.jBase = jBase;
|
|
78
|
-
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAIH;;;GAGG;AACH,MAAa,KAAM,SAAQ,KAAmB;IAG1C;;;;;;OAMG;IACH,YAAY,QAAqB;QAC7B,KAAK,EAAE,CAAC;QAVL,mBAAc,GAAW,EAAE,CAAC;QAY/B,IAAI,CAAC,cAAc,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAErF,IAAI,CAAC,QAAQ;YACT,OAAO;QAEX,4CAA4C;QAC5C,IAAI,QAAQ,YAAY,WAAW,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,YAAY,OAAO,EAAE,CAAC;YACjH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QACD,4CAA4C;aACvC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEhC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnD,gBAAgB;gBAChB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9C,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACJ,eAAe;gBACf,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClE,CAAC;QACL,CAAC;QACD,mCAAmC;aAC9B,IAAI,QAAQ,YAAY,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAmC,CAAC,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,MAAM;QACF,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,IAAI,CAAC,cAAc;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAChC,IAAI,EAAE,YAAY,OAAO;oBACrB,OAAO,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACpC,OAAO,OAAO,EAAE,CAAC;YACrB,CAAC,CAAC;SACL,CAAC;IACN,CAAC;CACJ;AA7DD,sBA6DC"}
|
package/dist/index.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @file src/index.ts
|
|
4
|
-
* @version 2.0.0
|
|
5
|
-
* @since 2.0.0
|
|
6
|
-
* @license GPL-3.0-or-later
|
|
7
|
-
* @copyright Sven Minio 2026
|
|
8
|
-
* @author Sven Minio <https://sven-minio.de>
|
|
9
|
-
* @category Entry Point
|
|
10
|
-
* @description
|
|
11
|
-
* * 🇬🇧: Main library entry point. Aggregates Core, Types, Utils, and all functional modules into a single export.
|
|
12
|
-
* * 🇩🇪: Haupt-Einstiegspunkt der Bibliothek. Aggregiert Core, Types, Utils und alle funktionalen Module in einen einzigen Export.
|
|
13
|
-
* @requires ./core
|
|
14
|
-
* * 🇬🇧: Core class logic and inheritance.
|
|
15
|
-
* * 🇩🇪: Kern-Klassenlogik und Vererbung.
|
|
16
|
-
* @requires ./types
|
|
17
|
-
* * 🇬🇧: TypeScript type definitions and interfaces.
|
|
18
|
-
* * 🇩🇪: TypeScript Typ-Definitionen und Interfaces.
|
|
19
|
-
* @requires ./utils
|
|
20
|
-
* * 🇬🇧: Helper functions (throttle, debounce).
|
|
21
|
-
* * 🇩🇪: Hilfsfunktionen (throttle, debounce).
|
|
22
|
-
* @requires ./modules/css
|
|
23
|
-
* * 🇬🇧: Style manipulation methods.
|
|
24
|
-
* * 🇩🇪: Style-Manipulations-Methoden.
|
|
25
|
-
* @requires ./modules/events
|
|
26
|
-
* * 🇬🇧: Event handling logic.
|
|
27
|
-
* * 🇩🇪: Event-Handling-Logik.
|
|
28
|
-
* @requires ./modules/dom
|
|
29
|
-
* * 🇬🇧: DOM traversal and manipulation.
|
|
30
|
-
* * 🇩🇪: DOM-Traversierung und -Manipulation.
|
|
31
|
-
* @requires ./modules/effects
|
|
32
|
-
* * 🇬🇧: Visual effects and animations.
|
|
33
|
-
* * 🇩🇪: Visuelle Effekte und Animationen.
|
|
34
|
-
* @requires ./modules/http
|
|
35
|
-
* * 🇬🇧: HTTP client for AJAX requests.
|
|
36
|
-
* * 🇩🇪: HTTP-Client für AJAX-Anfragen.
|
|
37
|
-
* @requires ./modules/data
|
|
38
|
-
* * 🇬🇧: Data structure utilities.
|
|
39
|
-
* * 🇩🇪: Datenstruktur-Utilities.
|
|
40
|
-
*/
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.JBaseClass = exports.data = exports.http = exports.debounce = exports.throttle = exports.jBase = exports.__jBase = exports._jBase = exports.__jB = exports._jB = exports.jB = exports.$ = void 0;
|
|
43
|
-
const core_1 = require("./core");
|
|
44
|
-
Object.defineProperty(exports, "JBaseClass", { enumerable: true, get: function () { return core_1.jBase; } });
|
|
45
|
-
const css_1 = require("./modules/css");
|
|
46
|
-
const events_1 = require("./modules/events");
|
|
47
|
-
const dom_1 = require("./modules/dom");
|
|
48
|
-
const effects_1 = require("./modules/effects");
|
|
49
|
-
// Runtime Extension
|
|
50
|
-
Object.assign(core_1.jBase.prototype, css_1.cssMethods);
|
|
51
|
-
Object.assign(core_1.jBase.prototype, events_1.eventMethods);
|
|
52
|
-
Object.assign(core_1.jBase.prototype, dom_1.domMethods);
|
|
53
|
-
Object.assign(core_1.jBase.prototype, effects_1.effectMethods);
|
|
54
|
-
/**
|
|
55
|
-
* * 🇬🇧: Factory function to initialize a new jBase instance.
|
|
56
|
-
* * 🇩🇪: Factory-Funktion zur Initialisierung einer neuen jBase-Instanz.
|
|
57
|
-
* @param selector
|
|
58
|
-
* * 🇬🇧: CSS selector, HTML string, DOM element, or collection.
|
|
59
|
-
* * 🇩🇪: CSS-Selektor, HTML-String, DOM-Element oder Sammlung.
|
|
60
|
-
* @returns
|
|
61
|
-
* * 🇬🇧: A new jBase collection.
|
|
62
|
-
* * 🇩🇪: Eine neue jBase-Collection.
|
|
63
|
-
*/
|
|
64
|
-
const init = (selector) => new core_1.jBase(selector);
|
|
65
|
-
/**
|
|
66
|
-
* * 🇬🇧: Export the factory under different aliases for maximum compatibility and convenience.
|
|
67
|
-
* * 🇩🇪: Export der Factory unter verschiedenen Aliasen für maximale Kompatibilität und Komfort.
|
|
68
|
-
*/
|
|
69
|
-
exports.$ = init;
|
|
70
|
-
exports.jB = init;
|
|
71
|
-
exports._jB = init;
|
|
72
|
-
exports.__jB = init;
|
|
73
|
-
exports._jBase = init;
|
|
74
|
-
exports.__jBase = init;
|
|
75
|
-
exports.jBase = init;
|
|
76
|
-
/**
|
|
77
|
-
* * 🇬🇧: Utility for throttled function calls.
|
|
78
|
-
* * 🇩🇪: Utility für gedrosselte Funktionsaufrufe.
|
|
79
|
-
*/
|
|
80
|
-
var utils_1 = require("./utils");
|
|
81
|
-
Object.defineProperty(exports, "throttle", { enumerable: true, get: function () { return utils_1.throttle; } });
|
|
82
|
-
/**
|
|
83
|
-
* * 🇬🇧: Utility for debounced function calls.
|
|
84
|
-
* * 🇩🇪: Utility für verzögerte Funktionsaufrufe.
|
|
85
|
-
*/
|
|
86
|
-
var utils_2 = require("./utils");
|
|
87
|
-
Object.defineProperty(exports, "debounce", { enumerable: true, get: function () { return utils_2.debounce; } });
|
|
88
|
-
/**
|
|
89
|
-
* * 🇬🇧: HTTP Client for AJAX requests.
|
|
90
|
-
* * 🇩🇪: HTTP-Client für AJAX-Anfragen.
|
|
91
|
-
*/
|
|
92
|
-
var http_1 = require("./modules/http");
|
|
93
|
-
Object.defineProperty(exports, "http", { enumerable: true, get: function () { return http_1.http; } });
|
|
94
|
-
/**
|
|
95
|
-
* * 🇬🇧: Data utilities for Arrays and Objects.
|
|
96
|
-
* * 🇩🇪: Daten-Utilities für Arrays und Objekte.
|
|
97
|
-
*/
|
|
98
|
-
var data_1 = require("./modules/data");
|
|
99
|
-
Object.defineProperty(exports, "data", { enumerable: true, get: function () { return data_1.data; } });
|
|
100
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;;;AAEH,iCAA6C;AA+tCpC,2FA/tCS,YAAU,OA+tCT;AA5tCnB,uCAA2C;AAC3C,6CAAgD;AAChD,uCAA2C;AAC3C,+CAAkD;AAElD,oBAAoB;AACpB,MAAM,CAAC,MAAM,CAAC,YAAU,CAAC,SAAS,EAAE,gBAAU,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,CAAC,YAAU,CAAC,SAAS,EAAE,qBAAY,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,CAAC,YAAU,CAAC,SAAS,EAAE,gBAAU,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,CAAC,YAAU,CAAC,SAAS,EAAE,uBAAa,CAAC,CAAC;AA+pCnD;;;;;;;;;GASG;AACH,MAAM,IAAI,GAAG,CAAC,QAAoB,EAAc,EAAE,CAAC,IAAI,YAAU,CAAC,QAAQ,CAAC,CAAC;AAE5E;;;GAGG;AACU,QAAA,CAAC,GAAG,IAAI,CAAC;AACT,QAAA,EAAE,GAAG,IAAI,CAAC;AACV,QAAA,GAAG,GAAG,IAAI,CAAC;AACX,QAAA,IAAI,GAAG,IAAI,CAAC;AACZ,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,OAAO,GAAG,IAAI,CAAC;AACf,QAAA,KAAK,GAAG,IAAI,CAAC;AAE1B;;;GAGG;AACH,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AAEjB;;;GAGG;AACH,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AAEjB;;;GAGG;AACH,uCAAsC;AAA7B,4FAAA,IAAI,OAAA;AAEb;;;GAGG;AACH,uCAAsC;AAA7B,4FAAA,IAAI,OAAA"}
|