cotomy 0.3.3 → 0.3.4
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 +3 -3
- package/dist/browser/cotomy.js +50 -26
- package/dist/browser/cotomy.js.map +1 -1
- package/dist/browser/cotomy.min.js +1 -1
- package/dist/browser/cotomy.min.js.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/view.js +50 -26
- package/dist/esm/view.js.map +1 -1
- package/dist/types/view.d.ts +11 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -92,8 +92,8 @@ The View layer provides thin wrappers around DOM elements and window events.
|
|
|
92
92
|
- `rect(): { top, left, width, height }`
|
|
93
93
|
- `innerRect()` — Subtracts padding
|
|
94
94
|
- Events
|
|
95
|
-
- Generic: `on(
|
|
96
|
-
- Delegation: `onSubTree(
|
|
95
|
+
- Generic: `on(eventOrEvents, handler, options?)`, `off(eventOrEvents, handler?, options?)`, `once(eventOrEvents, handler, options?)`, `trigger(event[, Event])` — `eventOrEvents` accepts either a single event name or an array for batch registration/removal. `trigger` emits bubbling events by default and can be customized by passing an `Event`.
|
|
96
|
+
- Delegation: `onSubTree(eventOrEvents, selector, handler, options?)` — `eventOrEvents` can also be an array for listening to multiple delegated events at once.
|
|
97
97
|
- Mouse: `click`, `dblclick`, `mouseover`, `mouseout`, `mousedown`, `mouseup`, `mousemove`, `mouseenter`, `mouseleave`
|
|
98
98
|
- Keyboard: `keydown`, `keyup`, `keypress`
|
|
99
99
|
- Inputs: `change`, `input`
|
|
@@ -137,7 +137,7 @@ document.body.appendChild(panel.element);
|
|
|
137
137
|
- `append(element: CotomyElement)`
|
|
138
138
|
- `moveNext(focused: CotomyElement, shift = false)` — Move focus to next/previous focusable
|
|
139
139
|
- Window events
|
|
140
|
-
- `on(
|
|
140
|
+
- `on(eventOrEvents, handler)` / `off(eventOrEvents, handler?)` / `trigger(event[, Event])` — `eventOrEvents` accepts a single event name or an array. CotomyWindow’s `trigger` also bubbles by default and accepts an `Event` to override the behavior.
|
|
141
141
|
- `load(handler)` / `ready(handler)`
|
|
142
142
|
- `resize([handler])` / `scroll([handler])` / `changeLayout([handler])` / `pageshow([handler])`
|
|
143
143
|
- Window state
|
package/dist/browser/cotomy.js
CHANGED
|
@@ -1468,8 +1468,11 @@ class CotomyElement {
|
|
|
1468
1468
|
return this;
|
|
1469
1469
|
}
|
|
1470
1470
|
on(event, handle, options) {
|
|
1471
|
-
const
|
|
1472
|
-
|
|
1471
|
+
const events = Array.isArray(event) ? event : [event];
|
|
1472
|
+
events.forEach(eventName => {
|
|
1473
|
+
const entry = new HandlerEntry(handle, undefined, options);
|
|
1474
|
+
EventRegistry.instance.on(eventName, this, entry);
|
|
1475
|
+
});
|
|
1473
1476
|
return this;
|
|
1474
1477
|
}
|
|
1475
1478
|
onSubTree(event, selector, handle, options) {
|
|
@@ -1479,25 +1482,34 @@ class CotomyElement {
|
|
|
1479
1482
|
return handle(e);
|
|
1480
1483
|
}
|
|
1481
1484
|
};
|
|
1482
|
-
const
|
|
1483
|
-
|
|
1485
|
+
const events = Array.isArray(event) ? event : [event];
|
|
1486
|
+
events.forEach(eventName => {
|
|
1487
|
+
const entry = new HandlerEntry(handle, delegate, options);
|
|
1488
|
+
EventRegistry.instance.on(eventName, this, entry);
|
|
1489
|
+
});
|
|
1484
1490
|
return this;
|
|
1485
1491
|
}
|
|
1486
1492
|
once(event, handle, options) {
|
|
1487
1493
|
const mergedOptions = { ...(options ?? {}), once: true };
|
|
1488
|
-
const entry = new HandlerEntry(handle, undefined, mergedOptions);
|
|
1489
1494
|
this.off(event, handle, mergedOptions);
|
|
1490
|
-
|
|
1495
|
+
const events = Array.isArray(event) ? event : [event];
|
|
1496
|
+
events.forEach(eventName => {
|
|
1497
|
+
const entry = new HandlerEntry(handle, undefined, mergedOptions);
|
|
1498
|
+
EventRegistry.instance.on(eventName, this, entry);
|
|
1499
|
+
});
|
|
1491
1500
|
return this;
|
|
1492
1501
|
}
|
|
1493
1502
|
off(event, handle, options) {
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1503
|
+
const events = Array.isArray(event) ? event : [event];
|
|
1504
|
+
events.forEach(eventName => {
|
|
1505
|
+
if (handle) {
|
|
1506
|
+
const entry = new HandlerEntry(handle, undefined, options);
|
|
1507
|
+
EventRegistry.instance.off(eventName, this, entry);
|
|
1508
|
+
}
|
|
1509
|
+
else {
|
|
1510
|
+
EventRegistry.instance.off(eventName, this);
|
|
1511
|
+
}
|
|
1512
|
+
});
|
|
1501
1513
|
return this;
|
|
1502
1514
|
}
|
|
1503
1515
|
click(handle) {
|
|
@@ -1902,22 +1914,34 @@ class CotomyWindow {
|
|
|
1902
1914
|
window.dispatchEvent(e ?? new Event(event, { bubbles: true }));
|
|
1903
1915
|
}
|
|
1904
1916
|
on(event, handle) {
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1917
|
+
const events = Array.isArray(event) ? event : [event];
|
|
1918
|
+
events.forEach(eventName => {
|
|
1919
|
+
if (!this._eventHandlers[eventName])
|
|
1920
|
+
this._eventHandlers[eventName] = [];
|
|
1921
|
+
this._eventHandlers[eventName].push(handle);
|
|
1922
|
+
window.addEventListener(eventName, handle);
|
|
1923
|
+
});
|
|
1909
1924
|
}
|
|
1910
1925
|
off(event, handle) {
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1926
|
+
const events = Array.isArray(event) ? event : [event];
|
|
1927
|
+
events.forEach(eventName => {
|
|
1928
|
+
if (handle) {
|
|
1929
|
+
window.removeEventListener(eventName, handle);
|
|
1930
|
+
const handlers = this._eventHandlers[eventName]?.filter(h => h !== handle) ?? [];
|
|
1931
|
+
if (handlers.length > 0) {
|
|
1932
|
+
this._eventHandlers[eventName] = handlers;
|
|
1933
|
+
}
|
|
1934
|
+
else {
|
|
1935
|
+
delete this._eventHandlers[eventName];
|
|
1936
|
+
}
|
|
1918
1937
|
}
|
|
1919
|
-
|
|
1920
|
-
|
|
1938
|
+
else {
|
|
1939
|
+
for (const h of this._eventHandlers[eventName] ?? []) {
|
|
1940
|
+
window.removeEventListener(eventName, h);
|
|
1941
|
+
}
|
|
1942
|
+
delete this._eventHandlers[eventName];
|
|
1943
|
+
}
|
|
1944
|
+
});
|
|
1921
1945
|
}
|
|
1922
1946
|
load(handle) {
|
|
1923
1947
|
this.on("load", handle);
|