dphelper 3.7.1 → 3.7.2
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/docs/README.md +385 -0
- package/docs/SUMMARY.md +83 -0
- package/docs/_config.yml +1 -0
- package/docs/markdown/ai.md +345 -0
- package/docs/markdown/anchor.md +156 -0
- package/docs/markdown/array.md +208 -0
- package/docs/markdown/audio.md +113 -0
- package/docs/markdown/avoid.md +53 -0
- package/docs/markdown/biometric.md +338 -0
- package/docs/markdown/browser.md +203 -0
- package/docs/markdown/check.md +65 -0
- package/docs/markdown/color.md +159 -0
- package/docs/markdown/compress.md +310 -0
- package/docs/markdown/cookie.md +115 -0
- package/docs/markdown/coords.md +127 -0
- package/docs/markdown/credits.md +56 -0
- package/docs/markdown/date.md +260 -0
- package/docs/markdown/disable.md +109 -0
- package/docs/markdown/dispatch.md +108 -0
- package/docs/markdown/element.md +53 -0
- package/docs/markdown/event.md +85 -0
- package/docs/markdown/fetch.md +122 -0
- package/docs/markdown/form.md +302 -0
- package/docs/markdown/format.md +122 -0
- package/docs/markdown/i18n.md +292 -0
- package/docs/markdown/image.md +298 -0
- package/docs/markdown/json.md +269 -0
- package/docs/markdown/load.md +133 -0
- package/docs/markdown/logging.md +99 -0
- package/docs/markdown/math.md +172 -0
- package/docs/markdown/memory.md +85 -0
- package/docs/markdown/navigation.md +152 -0
- package/docs/markdown/net.md +60 -0
- package/docs/markdown/obj.md +242 -0
- package/docs/markdown/path.md +46 -0
- package/docs/markdown/promise.md +94 -0
- package/docs/markdown/sanitize.md +118 -0
- package/docs/markdown/screen.md +78 -0
- package/docs/markdown/scrollbar.md +82 -0
- package/docs/markdown/security.md +289 -0
- package/docs/markdown/shortcut.md +100 -0
- package/docs/markdown/socket.md +134 -0
- package/docs/markdown/sse.md +120 -0
- package/docs/markdown/svg.md +167 -0
- package/docs/markdown/sync.md +147 -0
- package/docs/markdown/system.md +78 -0
- package/docs/markdown/terminal.md +73 -0
- package/docs/markdown/text.md +245 -0
- package/docs/markdown/timer.md +98 -0
- package/docs/markdown/tools.md +111 -0
- package/docs/markdown/translators.md +65 -0
- package/docs/markdown/trigger.md +99 -0
- package/docs/markdown/triggers.md +133 -0
- package/docs/markdown/type.md +109 -0
- package/docs/markdown/types.md +102 -0
- package/docs/markdown/ui.md +45 -0
- package/docs/markdown/window.md +211 -0
- package/docs/markdown/worker.md +223 -0
- package/index.cjs +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# triggers
|
|
2
|
+
|
|
3
|
+
Custom event trigger system for application-wide event handling.
|
|
4
|
+
|
|
5
|
+
## Functions
|
|
6
|
+
|
|
7
|
+
| Function | Description | Example |
|
|
8
|
+
|----------|-------------|---------|
|
|
9
|
+
| `add` | Add event listener | `dphelper.triggers.add(event, callback)` |
|
|
10
|
+
| `on` | Listen for event (alias for add) | `dphelper.triggers.on(event, callback)` |
|
|
11
|
+
| `emit` | Trigger an event with data | `dphelper.triggers.emit(event, data)` |
|
|
12
|
+
| `remove` | Remove all listeners for event | `dphelper.triggers.remove(event)` |
|
|
13
|
+
| `off` | Remove specific callback | `dphelper.triggers.off(event, callback)` |
|
|
14
|
+
| `clear` | Clear all triggers | `dphelper.triggers.clear()` |
|
|
15
|
+
| `list` | List all registered events | `dphelper.triggers.list()` |
|
|
16
|
+
|
|
17
|
+
## Description
|
|
18
|
+
|
|
19
|
+
Custom event system:
|
|
20
|
+
- **Event Listeners** - Add/remove custom event listeners
|
|
21
|
+
- **Event Emission** - Emit events with data payloads
|
|
22
|
+
- **Namespacing** - Organize events by name
|
|
23
|
+
- **Error Handling** - Safe callback execution
|
|
24
|
+
|
|
25
|
+
## Usage Examples
|
|
26
|
+
|
|
27
|
+
### Add Event Listeners
|
|
28
|
+
|
|
29
|
+
```javascript
|
|
30
|
+
// Listen for custom events
|
|
31
|
+
dphelper.triggers.add('user:login', (user) => {
|
|
32
|
+
console.log('User logged in:', user);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
dphelper.triggers.on('data:loaded', (data) => {
|
|
36
|
+
console.log('Data received:', data);
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Emit Events
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
// Emit events with data
|
|
44
|
+
dphelper.triggers.emit('user:login', { id: 1, name: 'John' });
|
|
45
|
+
|
|
46
|
+
dphelper.triggers.emit('notification', {
|
|
47
|
+
type: 'success',
|
|
48
|
+
message: 'Operation complete!'
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Remove Listeners
|
|
53
|
+
|
|
54
|
+
```javascript
|
|
55
|
+
// Remove all listeners for an event
|
|
56
|
+
dphelper.triggers.remove('user:login');
|
|
57
|
+
|
|
58
|
+
// Remove specific callback
|
|
59
|
+
const handler = (data) => console.log(data);
|
|
60
|
+
dphelper.triggers.on('event', handler);
|
|
61
|
+
// ... later
|
|
62
|
+
dphelper.triggers.off('event', handler);
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### List Registered Events
|
|
66
|
+
|
|
67
|
+
```javascript
|
|
68
|
+
// See all registered events
|
|
69
|
+
const events = dphelper.triggers.list();
|
|
70
|
+
console.log(events); // ['user:login', 'data:loaded', ...]
|
|
71
|
+
|
|
72
|
+
// Clear all triggers
|
|
73
|
+
dphelper.triggers.clear();
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Event-Driven Architecture
|
|
77
|
+
|
|
78
|
+
```javascript
|
|
79
|
+
// Pub/Sub event system
|
|
80
|
+
class EventBus {
|
|
81
|
+
constructor() {
|
|
82
|
+
this.triggers = dphelper.triggers;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
subscribe(event, callback) {
|
|
86
|
+
this.triggers.on(event, callback);
|
|
87
|
+
return () => this.triggers.off(event, callback);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
publish(event, data) {
|
|
91
|
+
this.triggers.emit(event, data);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const bus = new EventBus();
|
|
96
|
+
|
|
97
|
+
// Subscribe
|
|
98
|
+
const unsubscribe = bus.subscribe('order:created', (order) => {
|
|
99
|
+
console.log('Order created:', order.id);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Publish
|
|
103
|
+
bus.publish('order:created', { id: 123, total: 99.99 });
|
|
104
|
+
|
|
105
|
+
// Unsubscribe
|
|
106
|
+
unsubscribe();
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Component Communication
|
|
110
|
+
|
|
111
|
+
```javascript
|
|
112
|
+
// Component A - Sender
|
|
113
|
+
function notifyUser(userId, message) {
|
|
114
|
+
dphelper.triggers.emit('notification', { userId, message });
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Component B - Receiver
|
|
118
|
+
dphelper.triggers.on('notification', ({ userId, message }) => {
|
|
119
|
+
showToast(`User ${userId}: ${message}`);
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Details
|
|
124
|
+
|
|
125
|
+
- **Author:** Dario Passariello
|
|
126
|
+
- **Version:** 0.0.1
|
|
127
|
+
- **Creation Date:** 20250220
|
|
128
|
+
- **Last Modified:** 20250220
|
|
129
|
+
- **Environment:** client (browser)
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
*Automatically generated document*
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# type
|
|
2
|
+
|
|
3
|
+
Utilities for type checking.
|
|
4
|
+
|
|
5
|
+
## Functions
|
|
6
|
+
|
|
7
|
+
| Function | Description | Example |
|
|
8
|
+
|----------|-------------|---------|
|
|
9
|
+
| `of` | Get the type of a value | `dphelper.type.of(value)` |
|
|
10
|
+
| `instOfObj` | Check if value is Object instance | `dphelper.type.instOfObj(value)` |
|
|
11
|
+
| `isNaN` | Check if value is NaN | `dphelper.type.isNaN(value)` |
|
|
12
|
+
| `isBool` | Check if value is boolean | `dphelper.type.isBool(value)` |
|
|
13
|
+
|
|
14
|
+
## Description
|
|
15
|
+
|
|
16
|
+
Type checking utilities:
|
|
17
|
+
- **Type Detection** - Get precise type of any value
|
|
18
|
+
- **Boolean Check** - Detect boolean values
|
|
19
|
+
- **NaN Detection** - Identify NaN values
|
|
20
|
+
- **Object Check** - Verify object instances
|
|
21
|
+
|
|
22
|
+
## Usage Examples
|
|
23
|
+
|
|
24
|
+
### Get Type
|
|
25
|
+
|
|
26
|
+
```javascript
|
|
27
|
+
// Get type of value
|
|
28
|
+
console.log(dphelper.type.of('hello')); // "string"
|
|
29
|
+
console.log(dphelper.type.of(123)); // "number"
|
|
30
|
+
console.log(dphelper.type.of(true)); // "boolean"
|
|
31
|
+
console.log(dphelper.type.of({})); // "object"
|
|
32
|
+
console.log(dphelper.type.of([])); // "object"
|
|
33
|
+
console.log(dphelper.type.of(null)); // "null"
|
|
34
|
+
console.log(dphelper.type.of(undefined)); // "undefined"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Check Object Instance
|
|
38
|
+
|
|
39
|
+
```javascript
|
|
40
|
+
// Check if value is Object
|
|
41
|
+
console.log(dphelper.type.instOfObj({})); // true
|
|
42
|
+
console.log(dphelper.type.instOfObj([])); // true
|
|
43
|
+
console.log(dphelper.type.instOfObj(new Date())); // true
|
|
44
|
+
console.log(dphelper.type.instOfObj('string')); // false
|
|
45
|
+
console.log(dphelper.type.instOfObj(123)); // false
|
|
46
|
+
console.log(dphelper.type.instOfObj(null)); // false
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Check NaN
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
// Check for NaN
|
|
53
|
+
console.log(dphelper.type.isNaN(NaN)); // true
|
|
54
|
+
console.log(dphelper.type.isNaN(0/0)); // true
|
|
55
|
+
console.log(dphelper.type.isNaN('hello')); // false
|
|
56
|
+
console.log(dphelper.type.isNaN(123)); // false
|
|
57
|
+
|
|
58
|
+
// Safe number validation
|
|
59
|
+
function isValidNumber(value) {
|
|
60
|
+
return !dphelper.type.isNaN(value) && dphelper.type.of(value) === 'number';
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Check Boolean
|
|
65
|
+
|
|
66
|
+
```javascript
|
|
67
|
+
// Check if boolean
|
|
68
|
+
console.log(dphelper.type.isBool(true)); // true
|
|
69
|
+
console.log(dphelper.type.isBool(false)); // true
|
|
70
|
+
console.log(dphelper.type.isBool(1)); // false
|
|
71
|
+
console.log(dphelper.type.isBool('true')); // false
|
|
72
|
+
|
|
73
|
+
// Boolean coercion check
|
|
74
|
+
function isExplicitBoolean(value) {
|
|
75
|
+
return dphelper.type.isBool(value);
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Type Guard Functions
|
|
80
|
+
|
|
81
|
+
```javascript
|
|
82
|
+
// Comprehensive type checking
|
|
83
|
+
function getTypeInfo(value) {
|
|
84
|
+
return {
|
|
85
|
+
type: dphelper.type.of(value),
|
|
86
|
+
isObject: dphelper.type.instOfObj(value),
|
|
87
|
+
isNaN: dphelper.type.isNaN(value),
|
|
88
|
+
isBoolean: dphelper.type.isBool(value)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
console.log(getTypeInfo(42));
|
|
93
|
+
// { type: 'number', isObject: false, isNaN: false, isBoolean: false }
|
|
94
|
+
|
|
95
|
+
console.log(getTypeInfo({a: 1}));
|
|
96
|
+
// { type: 'object', isObject: true, isNaN: false, isBoolean: false }
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Details
|
|
100
|
+
|
|
101
|
+
- **Author:** Dario Passariello
|
|
102
|
+
- **Version:** 0.0.2
|
|
103
|
+
- **Creation Date:** 20210101
|
|
104
|
+
- **Last Modified:** 20260220
|
|
105
|
+
- **Environment:** both (browser + Node.js)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
*Automatically generated document*
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# types
|
|
2
|
+
|
|
3
|
+
Advanced type checking and validation utilities.
|
|
4
|
+
|
|
5
|
+
## Functions
|
|
6
|
+
|
|
7
|
+
| Function | Description | Example |
|
|
8
|
+
|----------|-------------|---------|
|
|
9
|
+
| `of` | Get the type of a value | `dphelper.types.of(value)` |
|
|
10
|
+
| `instOfObj` | Check if value is Object instance | `dphelper.types.instOfObj(value)` |
|
|
11
|
+
| `isNaN` | Check if value is NaN | `dphelper.types.isNaN(value)` |
|
|
12
|
+
| `isBool` | Check if value is boolean | `dphelper.types.isBool(value)` |
|
|
13
|
+
|
|
14
|
+
## Description
|
|
15
|
+
|
|
16
|
+
Advanced type utilities:
|
|
17
|
+
- **Type Detection** - Get precise type of any value
|
|
18
|
+
- **Boolean Check** - Detect boolean values (including string booleans)
|
|
19
|
+
- **Object Check** - Verify object instances
|
|
20
|
+
|
|
21
|
+
## Usage Examples
|
|
22
|
+
|
|
23
|
+
### Get Type
|
|
24
|
+
|
|
25
|
+
```javascript
|
|
26
|
+
// Get type of value
|
|
27
|
+
console.log(dphelper.types.of('hello')); // "string"
|
|
28
|
+
console.log(dphelper.types.of(123)); // "number"
|
|
29
|
+
console.log(dphelper.types.of(true)); // "boolean"
|
|
30
|
+
console.log(dphelper.types.of({})); // "object"
|
|
31
|
+
console.log(dphelper.types.of([])); // "object"
|
|
32
|
+
console.log(dphelper.types.of(null)); // "null"
|
|
33
|
+
console.log(dphelper.types.of(undefined)); // "undefined"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Check Object Instance
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
// Check if value is Object instance
|
|
40
|
+
console.log(dphelper.types.instOfObj({})); // true
|
|
41
|
+
console.log(dphelper.types.instOfObj([])); // true
|
|
42
|
+
console.log(dphelper.types.instOfObj(new Date())); // true
|
|
43
|
+
console.log(dphelper.types.instOfObj('string')); // false
|
|
44
|
+
console.log(dphelper.types.instOfObj(123)); // false
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Check NaN
|
|
48
|
+
|
|
49
|
+
```javascript
|
|
50
|
+
// Check for NaN
|
|
51
|
+
console.log(dphelper.types.isNaN(NaN)); // true
|
|
52
|
+
console.log(dphelper.types.isNaN(0/0)); // true
|
|
53
|
+
console.log(dphelper.types.isNaN('hello')); // false
|
|
54
|
+
console.log(dphelper.types.isNaN(123)); // false
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Check Boolean
|
|
58
|
+
|
|
59
|
+
```javascript
|
|
60
|
+
// Check if boolean (including string representations)
|
|
61
|
+
console.log(dphelper.types.isBool(true)); // true
|
|
62
|
+
console.log(dphelper.types.isBool(false)); // true
|
|
63
|
+
console.log(dphelper.types.isBool(1)); // false
|
|
64
|
+
console.log(dphelper.types.isBool('true')); // false
|
|
65
|
+
console.log(dphelper.types.isBool(null)); // true
|
|
66
|
+
console.log(dphelper.types.isBool(undefined));// true
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Form Validation
|
|
70
|
+
|
|
71
|
+
```javascript
|
|
72
|
+
// Type-safe form validation
|
|
73
|
+
function validateField(value, type) {
|
|
74
|
+
const actualType = dphelper.types.of(value);
|
|
75
|
+
|
|
76
|
+
if (type === 'string' && actualType !== 'string') {
|
|
77
|
+
return { valid: false, error: 'Must be a string' };
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (type === 'number' && actualType !== 'number') {
|
|
81
|
+
return { valid: false, error: 'Must be a number' };
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (type === 'boolean' && !dphelper.types.isBool(value)) {
|
|
85
|
+
return { valid: false, error: 'Must be a boolean' };
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return { valid: true };
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Details
|
|
93
|
+
|
|
94
|
+
- **Author:** Dario Passariello
|
|
95
|
+
- **Version:** 0.0.2
|
|
96
|
+
- **Creation Date:** 20210101
|
|
97
|
+
- **Last Modified:** 20260220
|
|
98
|
+
- **Environment:** both (browser + Node.js)
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
*Automatically generated document*
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# UI
|
|
2
|
+
|
|
3
|
+
User Interface components and Debugging tools.
|
|
4
|
+
|
|
5
|
+
## Debugging Tools
|
|
6
|
+
|
|
7
|
+
| Function | Description | Example |
|
|
8
|
+
|----------|-------------|---------|
|
|
9
|
+
| `fps` | Toggles a real-time FPS and Memory monitor overlay | `dphelper.UI.fps(true)` |
|
|
10
|
+
| `boxModel` | Toggles visual box-model highlighter for all elements | `dphelper.UI.boxModel(true)` |
|
|
11
|
+
|
|
12
|
+
## Base Components
|
|
13
|
+
|
|
14
|
+
- `input`, `button`, `textarea`, `select`, `code` (Work in progress)
|
|
15
|
+
|
|
16
|
+
## Description
|
|
17
|
+
|
|
18
|
+
The UI module provides both functional interface components and developer-oriented inspection tools to monitor application health and layout.
|
|
19
|
+
|
|
20
|
+
## Usage Examples
|
|
21
|
+
|
|
22
|
+
### Performance Monitoring
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
// Shows FPS and RAM usage on screen
|
|
26
|
+
dphelper.UI.fps(true);
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Layout Debugging
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
// Highlights borders of all elements on the page
|
|
33
|
+
dphelper.UI.boxModel(true);
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Details
|
|
37
|
+
|
|
38
|
+
- **Author:** Dario Passariello & Jo
|
|
39
|
+
- **Version:** 0.0.2
|
|
40
|
+
- **Creation Date:** 20210101
|
|
41
|
+
- **Last Modified:** 20260220
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
*Automatically generated document*
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# window
|
|
2
|
+
|
|
3
|
+
Window management utilities for popups, zoom control, page leave handling, and memory management.
|
|
4
|
+
|
|
5
|
+
## Functions
|
|
6
|
+
|
|
7
|
+
| Function | Description | Example |
|
|
8
|
+
|----------|-------------|---------|
|
|
9
|
+
| `enhancement` | Enhance window with additional properties | `dphelper.window.enhancement()` |
|
|
10
|
+
| `center` | Open centered popup window | `dphelper.window.center({ url, title, name, w, h })` |
|
|
11
|
+
| `onBeforeUnLoad` | Prompt before leaving page | `dphelper.window.onBeforeUnLoad('#form')` |
|
|
12
|
+
| `purge` | Clear elements from memory | `dphelper.window.purge()` |
|
|
13
|
+
| `stopZoomWheel` | Disable Ctrl+wheel zoom | `dphelper.window.stopZoomWheel()` |
|
|
14
|
+
| `setZoom` | Set element zoom level | `dphelper.window.setZoom('#container', 1.5)` |
|
|
15
|
+
| `getZoom` | Get element zoom level | `dphelper.window.getZoom('#container')` |
|
|
16
|
+
|
|
17
|
+
## Description
|
|
18
|
+
|
|
19
|
+
Complete window management toolkit:
|
|
20
|
+
- **Popup Windows** - Centered, sized windows
|
|
21
|
+
- **Zoom Control** - Get/set zoom levels
|
|
22
|
+
- **Page Exit** - Warn before leaving with unsaved changes
|
|
23
|
+
- **Memory** - Purge unused elements
|
|
24
|
+
- **Accessibility** - Disable unwanted zoom
|
|
25
|
+
|
|
26
|
+
## Usage Examples
|
|
27
|
+
|
|
28
|
+
### Centered Popup Window
|
|
29
|
+
|
|
30
|
+
```javascript
|
|
31
|
+
// Open centered popup
|
|
32
|
+
dphelper.window.center({
|
|
33
|
+
url: 'https://example.com',
|
|
34
|
+
title: 'Popup Window',
|
|
35
|
+
name: 'myPopup',
|
|
36
|
+
w: 800, // width
|
|
37
|
+
h: 600 // height
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Useful for:
|
|
41
|
+
// - Video players
|
|
42
|
+
// - Image galleries
|
|
43
|
+
// - Login/signup modals
|
|
44
|
+
// - External content
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Before Unload Warning
|
|
48
|
+
|
|
49
|
+
```javascript
|
|
50
|
+
// Warn user before leaving with unsaved changes
|
|
51
|
+
dphelper.window.onBeforeUnLoad('#myForm');
|
|
52
|
+
|
|
53
|
+
// When user tries to leave:
|
|
54
|
+
// - Fills out form
|
|
55
|
+
// - Clicks external link
|
|
56
|
+
// - Closes tab
|
|
57
|
+
// -> Shows confirmation dialog
|
|
58
|
+
|
|
59
|
+
// Clean form detection
|
|
60
|
+
// <input id="myForm">
|
|
61
|
+
// Warning only shows if form has content
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Zoom Control
|
|
65
|
+
|
|
66
|
+
```javascript
|
|
67
|
+
// Get current zoom level
|
|
68
|
+
const zoom = dphelper.window.getZoom();
|
|
69
|
+
console.log(zoom); // 1 (or 1.5, 2, etc.)
|
|
70
|
+
|
|
71
|
+
// Get specific element zoom
|
|
72
|
+
const elZoom = dphelper.window.getZoom('#container');
|
|
73
|
+
console.log(elZoom);
|
|
74
|
+
|
|
75
|
+
// Set zoom level (1 = 100%)
|
|
76
|
+
dphelper.window.setZoom('#container', 1.5); // 150%
|
|
77
|
+
dphelper.window.setZoom('#container', 2); // 200%
|
|
78
|
+
dphelper.window.setZoom('#container', 0.5); // 50%
|
|
79
|
+
|
|
80
|
+
// Reset to default
|
|
81
|
+
dphelper.window.setZoom('#container', 1);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Disable Mouse Wheel Zoom
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
// Prevent Ctrl+wheel zoom (accessibility feature)
|
|
88
|
+
dphelper.window.stopZoomWheel();
|
|
89
|
+
|
|
90
|
+
// Useful for:
|
|
91
|
+
// - Interactive maps
|
|
92
|
+
// - Canvas applications
|
|
93
|
+
// - Games
|
|
94
|
+
// - Preventing accidental zoom
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Memory Purge
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
// Purge document from memory after delay
|
|
101
|
+
dphelper.window.purge(document, 10000); // 10 seconds
|
|
102
|
+
|
|
103
|
+
// Or purge specific element
|
|
104
|
+
const oldContent = document.getElementById('oldContent');
|
|
105
|
+
dphelper.window.purge(oldContent, 5000);
|
|
106
|
+
|
|
107
|
+
// Cleans up:
|
|
108
|
+
// - Event listeners
|
|
109
|
+
// - References
|
|
110
|
+
// - Child nodes
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Window Enhancement
|
|
114
|
+
|
|
115
|
+
```javascript
|
|
116
|
+
// Enhance window with cross-browser utilities
|
|
117
|
+
dphelper.window.enhancement();
|
|
118
|
+
|
|
119
|
+
// Adds:
|
|
120
|
+
// - Cross-browser requestAnimationFrame
|
|
121
|
+
// - Additional window properties
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Advanced Usage
|
|
125
|
+
|
|
126
|
+
### Complete Form Protection
|
|
127
|
+
|
|
128
|
+
```javascript
|
|
129
|
+
class FormProtection {
|
|
130
|
+
constructor(formSelector) {
|
|
131
|
+
this.form = document.querySelector(formSelector);
|
|
132
|
+
this.init();
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
init() {
|
|
136
|
+
// Enable beforeunload warning
|
|
137
|
+
dphelper.window.onBeforeUnLoad(this.form);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Clean up when form is submitted
|
|
141
|
+
onSubmit(callback) {
|
|
142
|
+
this.form.addEventListener('submit', (e) => {
|
|
143
|
+
// Remove protection after successful submit
|
|
144
|
+
this.disable();
|
|
145
|
+
callback(e);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
disable() {
|
|
150
|
+
// Programmatically disable warning
|
|
151
|
+
window.onbeforeunload = null;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Usage
|
|
156
|
+
const protectedForm = new FormProtection('#contactForm');
|
|
157
|
+
protectedForm.onSubmit(() => {
|
|
158
|
+
console.log('Form submitted!');
|
|
159
|
+
});
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Responsive Zoom Handler
|
|
163
|
+
|
|
164
|
+
```javascript
|
|
165
|
+
class ZoomManager {
|
|
166
|
+
constructor(container) {
|
|
167
|
+
this.container = container;
|
|
168
|
+
this.setupHandlers();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
setupHandlers() {
|
|
172
|
+
// Disable default zoom
|
|
173
|
+
dphelper.window.stopZoomWheel();
|
|
174
|
+
|
|
175
|
+
// Track zoom changes
|
|
176
|
+
window.addEventListener('resize', () => this.handleResize());
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
handleResize() {
|
|
180
|
+
const width = window.innerWidth;
|
|
181
|
+
let zoom = 1;
|
|
182
|
+
|
|
183
|
+
if (width < 768) {
|
|
184
|
+
zoom = 0.75;
|
|
185
|
+
} else if (width < 1024) {
|
|
186
|
+
zoom = 0.9;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
dphelper.window.setZoom(this.container, zoom);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
getCurrentZoom() {
|
|
193
|
+
return dphelper.window.getZoom(this.container);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Usage
|
|
198
|
+
const zoomManager = new ZoomManager('#app-container');
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Details
|
|
202
|
+
|
|
203
|
+
- **Author:** Dario Passariello
|
|
204
|
+
- **Version:** 0.0.2
|
|
205
|
+
- **Creation Date:** 20210101
|
|
206
|
+
- **Last Modified:** 20260220
|
|
207
|
+
- **Environment:** Client-side only (browser)
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
*Automatically generated document*
|