@medyll/idae-be 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +131 -35
- package/dist/be.d.ts +126 -55
- package/dist/be.js +259 -264
- package/dist/dic/fragment.d.ts +4 -0
- package/dist/dic/fragment.js +18 -0
- package/dist/dic/proxyHandler.d.ts +8 -0
- package/dist/dic/proxyHandler.js +63 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/modules/attrs.d.ts +22 -0
- package/dist/modules/attrs.js +66 -0
- package/dist/modules/classes.d.ts +55 -0
- package/dist/modules/classes.js +85 -0
- package/dist/modules/data.d.ts +24 -0
- package/dist/modules/data.js +69 -0
- package/dist/modules/dom.d.ts +96 -0
- package/dist/modules/dom.js +234 -0
- package/dist/modules/events.d.ts +42 -0
- package/dist/modules/events.js +70 -0
- package/dist/modules/position.d.ts +75 -0
- package/dist/modules/position.js +174 -0
- package/dist/modules/props.d.ts +28 -0
- package/dist/modules/props.js +67 -0
- package/dist/modules/styles.d.ts +37 -0
- package/dist/modules/styles.js +116 -0
- package/dist/modules/text.d.ts +41 -0
- package/dist/modules/text.js +91 -0
- package/dist/modules/timers.d.ts +24 -0
- package/dist/modules/timers.js +84 -0
- package/dist/modules/walk.d.ts +201 -0
- package/dist/modules/walk.js +279 -0
- package/dist/types.d.ts +23 -0
- package/dist/types.js +1 -0
- package/dist/utils.d.ts +29 -0
- package/dist/utils.js +121 -0
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -1,58 +1,154 @@
|
|
|
1
|
-
# create-svelte
|
|
2
1
|
|
|
3
|
-
|
|
2
|
+
# @medyll/idae-be
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
A powerful DOM manipulation library with a callback-based approach for precise element targeting.
|
|
6
5
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
If you're seeing this, you've probably already done this step. Congrats!
|
|
6
|
+
## Installation
|
|
10
7
|
|
|
11
8
|
```bash
|
|
12
|
-
|
|
13
|
-
npm create svelte@latest
|
|
14
|
-
|
|
15
|
-
# create a new project in my-app
|
|
16
|
-
npm create svelte@latest my-app
|
|
9
|
+
npm install @medyll/idae-be
|
|
17
10
|
```
|
|
18
11
|
|
|
19
|
-
##
|
|
12
|
+
## Key Features
|
|
20
13
|
|
|
21
|
-
|
|
14
|
+
- Root object persistence for consistent chaining
|
|
15
|
+
- Callback-based element manipulation for precise targeting
|
|
16
|
+
- Comprehensive DOM traversal and manipulation
|
|
17
|
+
- Event handling, style management, and attribute control
|
|
18
|
+
- Timer integration for dynamic operations
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
npm run dev
|
|
20
|
+
## Unique Approach
|
|
25
21
|
|
|
26
|
-
|
|
27
|
-
npm run dev -- --open
|
|
28
|
-
```
|
|
22
|
+
Unlike jQuery and other chained libraries, `@medyll/idae-be` always returns the root object. This approach allows for consistent chaining while using callbacks to manipulate targeted elements. This design provides more control and clarity in complex DOM operations.
|
|
29
23
|
|
|
30
|
-
|
|
24
|
+
## Basic Usage
|
|
31
25
|
|
|
32
|
-
|
|
26
|
+
```javascript
|
|
27
|
+
import { be, toBe } from '@medyll/idae-be';
|
|
33
28
|
|
|
34
|
-
|
|
29
|
+
be('#container')
|
|
30
|
+
.append(toBe('<div>New content</div>'), ({ be }) => {
|
|
31
|
+
be
|
|
32
|
+
.addClass('highlight')
|
|
33
|
+
.on('click', () => console.log('Clicked!'));
|
|
34
|
+
})
|
|
35
|
+
.prepend(toBe('<h1>Title</h1>'))
|
|
36
|
+
.children(undefined, ({ be }) => {
|
|
37
|
+
be.setStyle({ color: 'blue' });
|
|
38
|
+
});
|
|
39
|
+
```
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
## API Reference
|
|
42
|
+
|
|
43
|
+
### Core Methods
|
|
44
|
+
|
|
45
|
+
- `be(selector: string | HTMLElement | HTMLElement[]): Be` - Create a new Be instance
|
|
46
|
+
- `toBe(str: string | HTMLElement, options?: { tag?: string }): Be` - Convert string or HTMLElement to Be instance
|
|
47
|
+
- `createBe(tagOrHtml: string, options?: Object): Be` - Create a new Be element
|
|
48
|
+
|
|
49
|
+
### DOM Manipulation
|
|
50
|
+
|
|
51
|
+
- `update(content: string): Be`
|
|
52
|
+
- `append(content: string | HTMLElement): Be`
|
|
53
|
+
- `prepend(content: string | HTMLElement): Be`
|
|
54
|
+
- `insert(mode: 'afterbegin' | 'afterend' | 'beforebegin' | 'beforeend', element: HTMLElement | Be): Be`
|
|
55
|
+
- `remove(): Be`
|
|
56
|
+
- `replace(content: string | HTMLElement): Be`
|
|
57
|
+
- `clear(): Be`
|
|
58
|
+
- `normalize(): Be`
|
|
59
|
+
- `wrap(tag?: string): Be`
|
|
60
|
+
|
|
61
|
+
### Traversal
|
|
62
|
+
|
|
63
|
+
- `up(selector?: string, callback?: HandlerCallBackFn): Be`
|
|
64
|
+
- `next(selector?: string, callback?: HandlerCallBackFn): Be`
|
|
65
|
+
- `previous(selector?: string, callback?: HandlerCallBackFn): Be`
|
|
66
|
+
- `siblings(selector?: string, callback?: HandlerCallBackFn): Be`
|
|
67
|
+
- `children(selector?: string, callback?: HandlerCallBackFn): Be`
|
|
68
|
+
- `closest(selector: string, callback?: HandlerCallBackFn): Be`
|
|
69
|
+
- `firstChild(selector?: string, callback?: HandlerCallBackFn): Be`
|
|
70
|
+
- `lastChild(selector?: string, callback?: HandlerCallBackFn): Be`
|
|
71
|
+
- `find(selector: string, callback?: HandlerCallBackFn): Be`
|
|
72
|
+
- `findAll(selector: string, callback?: HandlerCallBackFn): Be`
|
|
73
|
+
- `without(selector: string, callback?: HandlerCallBackFn): Be`
|
|
74
|
+
|
|
75
|
+
### Styling
|
|
76
|
+
|
|
77
|
+
- `setStyle(styles: Record<string, string>): Be`
|
|
78
|
+
- `getStyle(property: string): string | null`
|
|
79
|
+
- `unsetStyle(properties: string[]): Be`
|
|
80
|
+
- `addClass(className: string): Be`
|
|
81
|
+
- `removeClass(className: string): Be`
|
|
82
|
+
- `toggleClass(className: string): Be`
|
|
83
|
+
- `replaceClass(oldClass: string, newClass: string): Be`
|
|
84
|
+
|
|
85
|
+
### Events
|
|
86
|
+
|
|
87
|
+
- `on(eventName: string, handler: EventListener): Be`
|
|
88
|
+
- `off(eventName: string, handler: EventListener): Be`
|
|
89
|
+
- `fire(eventName: string, detail?: any): Be`
|
|
90
|
+
|
|
91
|
+
### Attributes and Properties
|
|
92
|
+
|
|
93
|
+
- `setAttr(name: string, value: string): Be`
|
|
94
|
+
- `getAttr(name: string): string | null`
|
|
95
|
+
- `deleteAttr(name: string): Be`
|
|
96
|
+
- `setData(key: string, value: string): Be`
|
|
97
|
+
- `getData(key: string): string | null`
|
|
98
|
+
- `deleteData(key: string): Be`
|
|
99
|
+
|
|
100
|
+
### Timers
|
|
101
|
+
|
|
102
|
+
- `timeout(delay: number, callback: HandlerCallBackFn): Be`
|
|
103
|
+
- `interval(delay: number, callback: HandlerCallBackFn): Be`
|
|
104
|
+
- `clearTimeout(): Be`
|
|
105
|
+
- `clearInterval(): Be`
|
|
106
|
+
|
|
107
|
+
## Advanced Example
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
be('#app')
|
|
111
|
+
.append(toBe('<div id="content"></div>'), ({ be }) => {
|
|
112
|
+
be
|
|
113
|
+
.append(toBe('<button>Add Item</button>'), ({ be }) => {
|
|
114
|
+
be.on('click', () => {
|
|
115
|
+
content.append(toBe('<p>New item</p>'), ({ be }) => {
|
|
116
|
+
be
|
|
117
|
+
.addClass('item')
|
|
118
|
+
.setStyle({ color: 'blue' })
|
|
119
|
+
.on('click', ({ target }) => {
|
|
120
|
+
be(target).toggleClass('selected');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
})
|
|
125
|
+
.children('.item', ({ be }) => {
|
|
126
|
+
be.setStyle({ padding: '5px', margin: '2px' });
|
|
127
|
+
});
|
|
128
|
+
})
|
|
129
|
+
.up(({ be }) => {
|
|
130
|
+
be.setStyle({ backgroundColor: '#f0f0f0' });
|
|
131
|
+
});
|
|
38
132
|
```
|
|
39
133
|
|
|
40
|
-
|
|
134
|
+
This example demonstrates:
|
|
135
|
+
1. Nested element creation and manipulation
|
|
136
|
+
2. Event handling with dynamic content addition
|
|
137
|
+
3. Traversal and bulk operations on children
|
|
138
|
+
4. Accessing and styling parent elements
|
|
41
139
|
|
|
42
|
-
|
|
43
|
-
npm run build
|
|
44
|
-
```
|
|
140
|
+
## TypeScript Support
|
|
45
141
|
|
|
46
|
-
|
|
142
|
+
This library is written in TypeScript and includes type definitions for a great developer experience.
|
|
47
143
|
|
|
48
|
-
|
|
144
|
+
## Browser Support
|
|
49
145
|
|
|
50
|
-
|
|
146
|
+
Designed for modern browsers. May require polyfills for older browser support.
|
|
51
147
|
|
|
52
|
-
|
|
148
|
+
## Contributing
|
|
53
149
|
|
|
54
|
-
|
|
150
|
+
Contributions are welcome! Please submit pull requests or open issues on our GitHub repository.
|
|
55
151
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
152
|
+
## License
|
|
153
|
+
|
|
154
|
+
This project is licensed under the MIT License.
|
package/dist/be.d.ts
CHANGED
|
@@ -1,68 +1,139 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
get(name: string): any;
|
|
14
|
-
set(nameOrObject: string | Record<string, any>, value?: any): Be;
|
|
15
|
-
valueOf(): Record<string, any> | null;
|
|
16
|
-
}
|
|
17
|
-
declare class DomHandler {
|
|
18
|
-
private element;
|
|
19
|
-
constructor(element: Be);
|
|
20
|
-
update(content: string): Be;
|
|
21
|
-
get text(): string | null;
|
|
22
|
-
textUpdate(content: string): Be;
|
|
23
|
-
valueOf(): string | null;
|
|
24
|
-
}
|
|
25
|
-
declare class AttrHandler {
|
|
26
|
-
private element;
|
|
27
|
-
constructor(element: Be);
|
|
28
|
-
get(name?: string): string | null;
|
|
29
|
-
set(nameOrObject: string | Record<string, string>, value?: string): Be;
|
|
30
|
-
valueOf(): Record<string, string> | null;
|
|
31
|
-
}
|
|
1
|
+
import { type AttrHandlerHandle, AttrHandler } from './modules/attrs.js';
|
|
2
|
+
import { StylesHandler, type BeStylesHandler } from './modules/styles.js';
|
|
3
|
+
import type { IsWhat } from './types.js';
|
|
4
|
+
import { type DataHandlerHandle, DataHandler } from './modules/data.js';
|
|
5
|
+
import { EventsHandler, type EventHandlerHandle } from './modules/events.js';
|
|
6
|
+
import { type ClassHandlerHandler, ClassesHandler } from './modules/classes.js';
|
|
7
|
+
import { type PropsHandlerHandle } from './modules/props.js';
|
|
8
|
+
import { DomHandler, type DomHandlerHandle } from './modules/dom.js';
|
|
9
|
+
import { PositionHandler, type PositionHandlerHandle } from './modules/position.js';
|
|
10
|
+
import { WalkHandler } from './modules/walk.js';
|
|
11
|
+
import { TextHandler, type TextHandlerHandle } from './modules/text.js';
|
|
12
|
+
import { TimersHandler } from './modules/timers.js';
|
|
32
13
|
export declare class Be {
|
|
33
14
|
node: HTMLElement | HTMLElement[] | string;
|
|
34
15
|
isWhat: IsWhat;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
16
|
+
BeTimer: NodeJS.Timeout | null;
|
|
17
|
+
BeInterval: NodeJS.Timeout | null;
|
|
18
|
+
styles: (actions: BeStylesHandler) => Be;
|
|
19
|
+
private styleHandler;
|
|
20
|
+
setStyle: StylesHandler['set'];
|
|
21
|
+
getStyle: StylesHandler['get'];
|
|
22
|
+
unsetStyle: StylesHandler['unset'];
|
|
23
|
+
props: (actions: PropsHandlerHandle) => Be;
|
|
24
|
+
private propHandler;
|
|
25
|
+
data: (actions: DataHandlerHandle) => Be;
|
|
26
|
+
private dataHandler;
|
|
27
|
+
setData: DataHandler['set'];
|
|
28
|
+
getData: DataHandler['get'];
|
|
29
|
+
deleteData: DataHandler['delete'];
|
|
30
|
+
getKey: DataHandler['getKey'];
|
|
31
|
+
attrs: (actions: Partial<AttrHandlerHandle>) => Be;
|
|
32
|
+
private attrHandler;
|
|
33
|
+
setAttr: AttrHandler['set'];
|
|
34
|
+
getAttr: AttrHandler['get'];
|
|
35
|
+
deleteAttr: AttrHandler['delete'];
|
|
36
|
+
position: (actions: PositionHandlerHandle) => Be;
|
|
37
|
+
private positionHandler;
|
|
38
|
+
clonePosition: PositionHandler['clonePosition'];
|
|
39
|
+
overlapPosition: PositionHandler['overlapPosition'];
|
|
40
|
+
snapTo: PositionHandler['snapTo'];
|
|
41
|
+
dom: (actions: DomHandlerHandle) => Be;
|
|
42
|
+
private domHandler;
|
|
43
|
+
update: DomHandler['update'];
|
|
44
|
+
append: DomHandler['append'];
|
|
45
|
+
prepend: DomHandler['prepend'];
|
|
46
|
+
insert: DomHandler['insert'];
|
|
47
|
+
afterBegin: DomHandler['afterBegin'];
|
|
48
|
+
afterEnd: DomHandler['afterEnd'];
|
|
49
|
+
beforeBegin: DomHandler['beforeBegin'];
|
|
50
|
+
beforeEnd: DomHandler['beforeEnd'];
|
|
51
|
+
remove: DomHandler['remove'];
|
|
52
|
+
replace: DomHandler['replace'];
|
|
53
|
+
clear: DomHandler['clear'];
|
|
54
|
+
normalize: DomHandler['normalize'];
|
|
55
|
+
wrap: DomHandler['wrap'];
|
|
56
|
+
text: (actions: TextHandlerHandle) => Be;
|
|
57
|
+
private textHandler;
|
|
58
|
+
appendText: TextHandler['append'];
|
|
59
|
+
prependText: TextHandler['prepend'];
|
|
60
|
+
events: (actions: EventHandlerHandle) => Be;
|
|
61
|
+
private eventHandler;
|
|
62
|
+
on: EventsHandler['on'];
|
|
63
|
+
off: EventsHandler['off'];
|
|
64
|
+
fire: EventsHandler['fire'];
|
|
65
|
+
classes: (actions: ClassHandlerHandler) => Be;
|
|
66
|
+
private classesHandler;
|
|
67
|
+
addClass: ClassesHandler['add'];
|
|
68
|
+
removeClass: ClassesHandler['remove'];
|
|
69
|
+
toggleClass: ClassesHandler['toggle'];
|
|
70
|
+
replaceClass: ClassesHandler['replace'];
|
|
71
|
+
walk: (actions: DataHandlerHandle) => Be;
|
|
72
|
+
private walkHandler;
|
|
73
|
+
up: WalkHandler['up'];
|
|
74
|
+
next: WalkHandler['next'];
|
|
75
|
+
without: WalkHandler['without'];
|
|
76
|
+
previous: WalkHandler['previous'];
|
|
77
|
+
siblings: WalkHandler['siblings'];
|
|
78
|
+
children: WalkHandler['children'];
|
|
79
|
+
closest: WalkHandler['closest'];
|
|
80
|
+
lastChild: WalkHandler['lastChild'];
|
|
81
|
+
firstChild: WalkHandler['firstChild'];
|
|
82
|
+
find: WalkHandler['find'];
|
|
83
|
+
findAll: WalkHandler['findAll'];
|
|
84
|
+
timers: (actions: TextHandlerHandle) => Be;
|
|
85
|
+
private timerHandler;
|
|
86
|
+
timeout: TimersHandler['timeout'];
|
|
87
|
+
interval: TimersHandler['interval'];
|
|
88
|
+
clearTimeout: TimersHandler['clearTimeout'];
|
|
89
|
+
clearInterval: TimersHandler['clearInterval'];
|
|
39
90
|
private constructor();
|
|
40
91
|
static elem(node: HTMLElement | HTMLElement[] | string): Be;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
92
|
+
static createBe(tagOrHtml: CreateFragment, options?: {
|
|
93
|
+
is?: string;
|
|
94
|
+
style?: Record<string, string> | string;
|
|
95
|
+
attributes?: Record<string, string>;
|
|
96
|
+
className?: string;
|
|
97
|
+
}): Be;
|
|
98
|
+
/**
|
|
99
|
+
* Creates a new `Be` element based on the provided string or HTMLElement.
|
|
100
|
+
* If the input is an HTMLElement, it creates a new `Be` element and sets it as the child of the provided element.
|
|
101
|
+
* If the input is a string, it checks if it is a valid HTML string and creates a new `Be` element based on it.
|
|
102
|
+
* If the input is neither a string nor an HTMLElement, it creates a new `Be` element with the default tag.
|
|
103
|
+
*
|
|
104
|
+
* @param str - The string or HTMLElement to create the `Be` element from.
|
|
105
|
+
* @param options - Additional options for creating the `Be` element.
|
|
106
|
+
* @returns The created `Be` element.
|
|
107
|
+
*/
|
|
108
|
+
static toBe(str: string | HTMLElement, options?: {
|
|
109
|
+
tag?: string;
|
|
110
|
+
}): Be;
|
|
111
|
+
/**
|
|
112
|
+
* setStyle Sets one or more CSS styles for the selected element(s), including CSS custom properties.
|
|
113
|
+
* @param styles An object of CSS properties and values, or a string of CSS properties and values.
|
|
114
|
+
* @param value The value for a single CSS property when styles is a property name string.
|
|
115
|
+
* @returns The Be instance for method chaining.
|
|
116
|
+
*/
|
|
58
117
|
fetch<T extends object>(options: {
|
|
59
118
|
url: string;
|
|
60
119
|
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS' | 'HEAD' | 'CONNECT' | 'TRACE';
|
|
61
120
|
data?: T;
|
|
62
121
|
headers?: Record<string, string>;
|
|
63
122
|
}): Promise<any>;
|
|
64
|
-
|
|
65
|
-
|
|
123
|
+
eachNode(callback: (el: HTMLElement) => void): void;
|
|
124
|
+
/** DOM
|
|
125
|
+
* Handles various DOM operations on the element(s).
|
|
126
|
+
* @param actions An object specifying the DOM actions to perform.
|
|
127
|
+
* @returns The Be instance for method chaining.
|
|
128
|
+
*/
|
|
129
|
+
get html(): string | null;
|
|
130
|
+
private attach;
|
|
131
|
+
private handle;
|
|
66
132
|
}
|
|
67
|
-
|
|
133
|
+
type CreateFragment = `<${string}>${string}</${string}>` | string;
|
|
134
|
+
/** set exports as root */
|
|
135
|
+
export declare const be: typeof Be.elem;
|
|
136
|
+
export declare const toBe: typeof Be.toBe;
|
|
137
|
+
export declare const beId: (id: string) => Be;
|
|
138
|
+
export declare const createBe: typeof Be.createBe;
|
|
68
139
|
export {};
|