@xsynaptic/sonic-ui 0.10.1 → 0.10.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 +138 -0
- package/dist/default/elements/envelope.js +6 -0
- package/dist/default/elements/value-element.js +2 -1
- package/dist/default/elements/value-gestures.js +25 -15
- package/dist/default/elements/xy.js +13 -3
- package/dist/default/lib/hover-preview.js +9 -1
- package/dist/dev/elements/envelope.d.ts +1 -0
- package/dist/dev/elements/envelope.js +6 -0
- package/dist/dev/elements/envelope.js.map +1 -1
- package/dist/dev/elements/value-element.d.ts +6 -0
- package/dist/dev/elements/value-element.js +2 -1
- package/dist/dev/elements/value-element.js.map +1 -1
- package/dist/dev/elements/value-gestures.js +25 -15
- package/dist/dev/elements/value-gestures.js.map +1 -1
- package/dist/dev/elements/wave-element.d.ts +5 -0
- package/dist/dev/elements/wave-element.js.map +1 -1
- package/dist/dev/elements/xy.d.ts +1 -0
- package/dist/dev/elements/xy.js +13 -3
- package/dist/dev/elements/xy.js.map +1 -1
- package/dist/dev/lib/hover-preview.js +9 -1
- package/dist/dev/lib/hover-preview.js.map +1 -1
- package/package.json +3 -2
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
function bindHoverPreview(target, options, signal) {
|
|
3
3
|
let hover;
|
|
4
4
|
let isDismissed = false;
|
|
5
|
+
let under;
|
|
5
6
|
let escapeWatch;
|
|
6
7
|
const hold = (value) => {
|
|
7
8
|
if (value === hover) return;
|
|
@@ -24,6 +25,7 @@ function bindHoverPreview(target, options, signal) {
|
|
|
24
25
|
}, { signal: escapeWatch.signal });
|
|
25
26
|
};
|
|
26
27
|
const hoverAt = (value) => {
|
|
28
|
+
under = value;
|
|
27
29
|
if (value === void 0) isDismissed = false;
|
|
28
30
|
if (!isDismissed && !options.isTaken()) hold(value);
|
|
29
31
|
options.show();
|
|
@@ -41,10 +43,16 @@ function bindHoverPreview(target, options, signal) {
|
|
|
41
43
|
watchEscape(false);
|
|
42
44
|
}, { once: true });
|
|
43
45
|
return {
|
|
44
|
-
at,
|
|
45
46
|
clear: () => {
|
|
46
47
|
hold(void 0);
|
|
47
48
|
},
|
|
49
|
+
lift: (event) => {
|
|
50
|
+
const box = target.getBoundingClientRect();
|
|
51
|
+
if (event.clientX >= box.left && event.clientX <= box.right && event.clientY >= box.top && event.clientY <= box.bottom) at(event);
|
|
52
|
+
},
|
|
53
|
+
restore: () => {
|
|
54
|
+
if (under !== void 0) hoverAt(under);
|
|
55
|
+
},
|
|
48
56
|
value: () => hover
|
|
49
57
|
};
|
|
50
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hover-preview.js","names":[],"sources":["../../../src/lib/hover-preview.ts"],"sourcesContent":["interface HoverOptions {\n\tcanShow: () => boolean;\n\tchanged: () => void;\n\tdismiss: () => void;\n\tisTaken: () => boolean;\n\tshow: () => void;\n\tvalueAt: (event: PointerEvent) => number | undefined;\n}\n\nexport interface HoverPreview {\n\
|
|
1
|
+
{"version":3,"file":"hover-preview.js","names":[],"sources":["../../../src/lib/hover-preview.ts"],"sourcesContent":["interface HoverOptions {\n\tcanShow: () => boolean;\n\tchanged: () => void;\n\tdismiss: () => void;\n\tisTaken: () => boolean;\n\tshow: () => void;\n\tvalueAt: (event: PointerEvent) => number | undefined;\n}\n\nexport interface HoverPreview {\n\tclear: () => void;\n\tlift: (event: PointerEvent) => void;\n\trestore: () => void;\n\tvalue: () => number | undefined;\n}\n\nexport function bindHoverPreview(\n\ttarget: HTMLElement,\n\toptions: HoverOptions,\n\tsignal: AbortSignal,\n): HoverPreview {\n\tlet hover: number | undefined;\n\tlet isDismissed = false;\n\tlet under: number | undefined;\n\tlet escapeWatch: AbortController | undefined;\n\n\tconst hold = (value: number | undefined): void => {\n\t\tif (value === hover) return;\n\n\t\thover = value;\n\t\toptions.changed();\n\t};\n\n\t// A hover holds no focus, so the key is heard on the document (WCAG 1.4.13)\n\tconst watchEscape = (isHovered: boolean): void => {\n\t\tif (!isHovered) {\n\t\t\tescapeWatch?.abort();\n\t\t\tescapeWatch = undefined;\n\t\t\treturn;\n\t\t}\n\t\tif (escapeWatch) return;\n\n\t\tescapeWatch = new AbortController();\n\t\ttarget.ownerDocument.addEventListener(\n\t\t\t'keydown',\n\t\t\t(event) => {\n\t\t\t\tif (hover === undefined || event.key !== 'Escape') return;\n\n\t\t\t\t// Stays dismissed until the hover ends, or the next pointer move would bring it straight back\n\t\t\t\tisDismissed = true;\n\t\t\t\thold(undefined);\n\t\t\t\toptions.dismiss();\n\t\t\t},\n\t\t\t{ signal: escapeWatch.signal },\n\t\t);\n\t};\n\tconst hoverAt = (value: number | undefined): void => {\n\t\tunder = value;\n\t\tif (value === undefined) isDismissed = false;\n\t\tif (!isDismissed && !options.isTaken()) hold(value);\n\t\toptions.show();\n\t\twatchEscape(value !== undefined);\n\t};\n\n\tconst at = (event: PointerEvent): void => {\n\t\tif (event.pointerType === 'touch' || event.buttons !== 0 || !options.canShow()) return;\n\n\t\thoverAt(options.valueAt(event));\n\t};\n\n\ttarget.addEventListener('pointermove', at, { signal });\n\tfor (const type of ['pointerdown', 'pointerleave']) {\n\t\ttarget.addEventListener(\n\t\t\ttype,\n\t\t\t() => {\n\t\t\t\thoverAt(undefined);\n\t\t\t},\n\t\t\t{ signal },\n\t\t);\n\t}\n\tsignal.addEventListener(\n\t\t'abort',\n\t\t() => {\n\t\t\twatchEscape(false);\n\t\t},\n\t\t{ once: true },\n\t);\n\n\treturn {\n\t\tclear: () => {\n\t\t\thold(undefined);\n\t\t},\n\t\tlift: (event) => {\n\t\t\tconst box = target.getBoundingClientRect();\n\t\t\tconst isOver =\n\t\t\t\tevent.clientX >= box.left &&\n\t\t\t\tevent.clientX <= box.right &&\n\t\t\t\tevent.clientY >= box.top &&\n\t\t\t\tevent.clientY <= box.bottom;\n\n\t\t\tif (isOver) at(event);\n\t\t},\n\t\trestore: () => {\n\t\t\tif (under !== undefined) hoverAt(under);\n\t\t},\n\t\tvalue: () => hover,\n\t};\n}\n"],"mappings":";AAgBA,SAAgB,iBACf,QACA,SACA,QACe;CACf,IAAI;CACJ,IAAI,cAAc;CAClB,IAAI;CACJ,IAAI;CAEJ,MAAM,QAAQ,UAAoC;EACjD,IAAI,UAAU,OAAO;EAErB,QAAQ;EACR,QAAQ,QAAQ;CACjB;CAGA,MAAM,eAAe,cAA6B;EACjD,IAAI,CAAC,WAAW;GACf,aAAa,MAAM;GACnB,cAAc;GACd;EACD;EACA,IAAI,aAAa;EAEjB,cAAc,IAAI,gBAAgB;EAClC,OAAO,cAAc,iBACpB,YACC,UAAU;GACV,IAAI,UAAU,UAAa,MAAM,QAAQ,UAAU;GAGnD,cAAc;GACd,KAAK,MAAS;GACd,QAAQ,QAAQ;EACjB,GACA,EAAE,QAAQ,YAAY,OAAO,CAC9B;CACD;CACA,MAAM,WAAW,UAAoC;EACpD,QAAQ;EACR,IAAI,UAAU,QAAW,cAAc;EACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,QAAQ,GAAG,KAAK,KAAK;EAClD,QAAQ,KAAK;EACb,YAAY,UAAU,MAAS;CAChC;CAEA,MAAM,MAAM,UAA8B;EACzC,IAAI,MAAM,gBAAgB,WAAW,MAAM,YAAY,KAAK,CAAC,QAAQ,QAAQ,GAAG;EAEhF,QAAQ,QAAQ,QAAQ,KAAK,CAAC;CAC/B;CAEA,OAAO,iBAAiB,eAAe,IAAI,EAAE,OAAO,CAAC;CACrD,KAAK,MAAM,QAAQ,CAAC,eAAe,cAAc,GAChD,OAAO,iBACN,YACM;EACL,QAAQ,MAAS;CAClB,GACA,EAAE,OAAO,CACV;CAED,OAAO,iBACN,eACM;EACL,YAAY,KAAK;CAClB,GACA,EAAE,MAAM,KAAK,CACd;CAEA,OAAO;EACN,aAAa;GACZ,KAAK,MAAS;EACf;EACA,OAAO,UAAU;GAChB,MAAM,MAAM,OAAO,sBAAsB;GAOzC,IALC,MAAM,WAAW,IAAI,QACrB,MAAM,WAAW,IAAI,SACrB,MAAM,WAAW,IAAI,OACrB,MAAM,WAAW,IAAI,QAEV,GAAG,KAAK;EACrB;EACA,eAAe;GACd,IAAI,UAAU,QAAW,QAAQ,KAAK;EACvC;EACA,aAAa;CACd;AACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xsynaptic/sonic-ui",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.3",
|
|
4
4
|
"description": "Native custom elements for audio interfaces, skinned with CSS custom properties",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"custom-elements",
|
|
@@ -75,7 +75,8 @@
|
|
|
75
75
|
},
|
|
76
76
|
"imports": {},
|
|
77
77
|
"files": [
|
|
78
|
-
"dist"
|
|
78
|
+
"dist",
|
|
79
|
+
"CHANGELOG.md"
|
|
79
80
|
],
|
|
80
81
|
"devDependencies": {
|
|
81
82
|
"publint": "^0.3.25",
|