@kongyo2/cards-css 0.1.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/LICENSE +21 -0
- package/README.md +86 -0
- package/dist/active-registry.js +10 -0
- package/dist/active-registry.js.map +1 -0
- package/dist/dom.js +66 -0
- package/dist/dom.js.map +1 -0
- package/dist/holo-card.js +450 -0
- package/dist/holo-card.js.map +1 -0
- package/dist/holo-cards.css +601 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/math.js +4 -0
- package/dist/math.js.map +1 -0
- package/dist/orientation.js +64 -0
- package/dist/orientation.js.map +1 -0
- package/dist/spring.js +123 -0
- package/dist/spring.js.map +1 -0
- package/dist/subscribers.js +26 -0
- package/dist/subscribers.js.map +1 -0
- package/dist/textures.js +178 -0
- package/dist/textures.js.map +1 -0
- package/dist/ticker.js +32 -0
- package/dist/ticker.js.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist-types/active-registry.d.ts +6 -0
- package/dist-types/active-registry.d.ts.map +1 -0
- package/dist-types/dom.d.ts +18 -0
- package/dist-types/dom.d.ts.map +1 -0
- package/dist-types/holo-card.d.ts +58 -0
- package/dist-types/holo-card.d.ts.map +1 -0
- package/dist-types/index.d.ts +13 -0
- package/dist-types/index.d.ts.map +1 -0
- package/dist-types/math.d.ts +4 -0
- package/dist-types/math.d.ts.map +1 -0
- package/dist-types/orientation.d.ts +13 -0
- package/dist-types/orientation.d.ts.map +1 -0
- package/dist-types/spring.d.ts +32 -0
- package/dist-types/spring.d.ts.map +1 -0
- package/dist-types/subscribers.d.ts +10 -0
- package/dist-types/subscribers.d.ts.map +1 -0
- package/dist-types/textures.d.ts +23 -0
- package/dist-types/textures.d.ts.map +1 -0
- package/dist-types/ticker.d.ts +7 -0
- package/dist-types/ticker.d.ts.map +1 -0
- package/dist-types/types.d.ts +21 -0
- package/dist-types/types.d.ts.map +1 -0
- package/package.json +75 -0
- package/src/active-registry.ts +15 -0
- package/src/dom.ts +79 -0
- package/src/holo-card.ts +525 -0
- package/src/index.ts +35 -0
- package/src/math.ts +6 -0
- package/src/orientation.ts +83 -0
- package/src/spring.ts +158 -0
- package/src/styles/base.css +262 -0
- package/src/styles/effects/cosmos.css +143 -0
- package/src/styles/effects/glitter.css +103 -0
- package/src/styles/effects/holo.css +127 -0
- package/src/styles/effects/reverse.css +55 -0
- package/src/styles/index.css +5 -0
- package/src/subscribers.ts +30 -0
- package/src/textures.ts +310 -0
- package/src/ticker.ts +46 -0
- package/src/types.ts +22 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Subscribers } from "./subscribers.js";
|
|
2
|
+
const rawOrientation = (event) => {
|
|
3
|
+
if (!event) {
|
|
4
|
+
return { alpha: 0, beta: 0, gamma: 0 };
|
|
5
|
+
}
|
|
6
|
+
return { alpha: event.alpha ?? 0, beta: event.beta ?? 0, gamma: event.gamma ?? 0 };
|
|
7
|
+
};
|
|
8
|
+
let firstReading = true;
|
|
9
|
+
let baseOrientation = rawOrientation();
|
|
10
|
+
export const resetBaseOrientation = () => {
|
|
11
|
+
firstReading = true;
|
|
12
|
+
baseOrientation = rawOrientation();
|
|
13
|
+
};
|
|
14
|
+
const toRelative = (event) => {
|
|
15
|
+
const o = rawOrientation(event);
|
|
16
|
+
return {
|
|
17
|
+
absolute: o,
|
|
18
|
+
relative: {
|
|
19
|
+
alpha: o.alpha - baseOrientation.alpha,
|
|
20
|
+
beta: o.beta - baseOrientation.beta,
|
|
21
|
+
gamma: o.gamma - baseOrientation.gamma,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const subscribers = new Subscribers(() => toRelative());
|
|
26
|
+
let listening = false;
|
|
27
|
+
const handleOrientation = (event) => {
|
|
28
|
+
if (firstReading) {
|
|
29
|
+
firstReading = false;
|
|
30
|
+
baseOrientation = rawOrientation(event);
|
|
31
|
+
}
|
|
32
|
+
subscribers.emit(toRelative(event));
|
|
33
|
+
};
|
|
34
|
+
export const subscribeOrientation = (fn) => {
|
|
35
|
+
const unsubscribe = subscribers.subscribe(fn);
|
|
36
|
+
if (!listening && typeof window !== "undefined") {
|
|
37
|
+
listening = true;
|
|
38
|
+
window.addEventListener("deviceorientation", handleOrientation, true);
|
|
39
|
+
}
|
|
40
|
+
return () => {
|
|
41
|
+
unsubscribe();
|
|
42
|
+
if (subscribers.size === 0 && listening && typeof window !== "undefined") {
|
|
43
|
+
listening = false;
|
|
44
|
+
window.removeEventListener("deviceorientation", handleOrientation, true);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export const requestOrientationPermission = async () => {
|
|
49
|
+
if (typeof DeviceOrientationEvent === "undefined") {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const requester = DeviceOrientationEvent;
|
|
53
|
+
if (typeof requester.requestPermission !== "function") {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const result = await requester.requestPermission();
|
|
58
|
+
return result === "granted";
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=orientation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orientation.js","sourceRoot":"","sources":["../src/orientation.ts"],"names":[],"mappings":"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"}
|
package/dist/spring.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { loop, now } from "./ticker.js";
|
|
2
|
+
import { Subscribers } from "./subscribers.js";
|
|
3
|
+
const tickScalar = (ctx, lastValue, currentValue, targetValue) => {
|
|
4
|
+
const delta = targetValue - currentValue;
|
|
5
|
+
const velocity = (currentValue - lastValue) / (ctx.dt || 1 / 60);
|
|
6
|
+
const spring = ctx.stiffness * delta;
|
|
7
|
+
const damper = ctx.damping * velocity;
|
|
8
|
+
const acceleration = (spring - damper) * ctx.invMass;
|
|
9
|
+
const d = (velocity + acceleration) * ctx.dt;
|
|
10
|
+
if (Math.abs(d) < ctx.precision && Math.abs(delta) < ctx.precision) {
|
|
11
|
+
return targetValue;
|
|
12
|
+
}
|
|
13
|
+
ctx.settled = false;
|
|
14
|
+
return currentValue + d;
|
|
15
|
+
};
|
|
16
|
+
const tick = (ctx, last, current, target) => {
|
|
17
|
+
if (typeof current === "number") {
|
|
18
|
+
return tickScalar(ctx, last, current, target);
|
|
19
|
+
}
|
|
20
|
+
const cur = current;
|
|
21
|
+
const lst = last;
|
|
22
|
+
const tgt = target;
|
|
23
|
+
const result = {};
|
|
24
|
+
for (const key in cur) {
|
|
25
|
+
const c = cur[key] ?? 0;
|
|
26
|
+
result[key] = tickScalar(ctx, lst[key] ?? c, c, tgt[key] ?? c);
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
};
|
|
30
|
+
export class Spring {
|
|
31
|
+
stiffness;
|
|
32
|
+
damping;
|
|
33
|
+
precision;
|
|
34
|
+
value;
|
|
35
|
+
lastValue;
|
|
36
|
+
targetValue;
|
|
37
|
+
invMass = 1;
|
|
38
|
+
invMassRecoveryRate = 0;
|
|
39
|
+
cancelTask = false;
|
|
40
|
+
task = null;
|
|
41
|
+
lastTime = 0;
|
|
42
|
+
currentToken = null;
|
|
43
|
+
subscribers = new Subscribers(() => this.value);
|
|
44
|
+
constructor(value, opts = {}) {
|
|
45
|
+
this.value = value;
|
|
46
|
+
this.lastValue = value;
|
|
47
|
+
this.targetValue = value;
|
|
48
|
+
this.stiffness = opts.stiffness ?? 0.15;
|
|
49
|
+
this.damping = opts.damping ?? 0.8;
|
|
50
|
+
this.precision = opts.precision ?? 0.01;
|
|
51
|
+
}
|
|
52
|
+
get current() {
|
|
53
|
+
return this.value;
|
|
54
|
+
}
|
|
55
|
+
subscribe(fn) {
|
|
56
|
+
return this.subscribers.subscribe(fn);
|
|
57
|
+
}
|
|
58
|
+
notify() {
|
|
59
|
+
this.subscribers.emit(this.value);
|
|
60
|
+
}
|
|
61
|
+
set(newValue, opts = {}) {
|
|
62
|
+
this.targetValue = newValue;
|
|
63
|
+
const token = (this.currentToken = {});
|
|
64
|
+
if (opts.hard || (this.stiffness >= 1 && this.damping >= 1)) {
|
|
65
|
+
this.cancelTask = true;
|
|
66
|
+
if (this.task) {
|
|
67
|
+
this.task.abort();
|
|
68
|
+
this.task = null;
|
|
69
|
+
}
|
|
70
|
+
this.lastTime = now();
|
|
71
|
+
this.lastValue = newValue;
|
|
72
|
+
this.value = newValue;
|
|
73
|
+
this.notify();
|
|
74
|
+
return Promise.resolve();
|
|
75
|
+
}
|
|
76
|
+
if (opts.soft) {
|
|
77
|
+
const rate = opts.soft === true ? 0.5 : opts.soft;
|
|
78
|
+
this.invMassRecoveryRate = 1 / (rate * 60);
|
|
79
|
+
this.invMass = 0;
|
|
80
|
+
}
|
|
81
|
+
let handle = this.task;
|
|
82
|
+
if (!handle) {
|
|
83
|
+
this.lastTime = now();
|
|
84
|
+
this.cancelTask = false;
|
|
85
|
+
handle = loop((time) => {
|
|
86
|
+
if (this.cancelTask) {
|
|
87
|
+
this.cancelTask = false;
|
|
88
|
+
this.task = null;
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
this.invMass = Math.min(this.invMass + this.invMassRecoveryRate, 1);
|
|
92
|
+
const ctx = {
|
|
93
|
+
invMass: this.invMass,
|
|
94
|
+
stiffness: this.stiffness,
|
|
95
|
+
damping: this.damping,
|
|
96
|
+
precision: this.precision,
|
|
97
|
+
settled: true,
|
|
98
|
+
dt: ((time - this.lastTime) * 60) / 1000,
|
|
99
|
+
};
|
|
100
|
+
const next = tick(ctx, this.lastValue, this.value, this.targetValue);
|
|
101
|
+
this.lastTime = time;
|
|
102
|
+
this.lastValue = this.value;
|
|
103
|
+
this.value = next;
|
|
104
|
+
this.notify();
|
|
105
|
+
if (ctx.settled) {
|
|
106
|
+
this.task = null;
|
|
107
|
+
}
|
|
108
|
+
return !ctx.settled;
|
|
109
|
+
});
|
|
110
|
+
this.task = handle;
|
|
111
|
+
}
|
|
112
|
+
return new Promise((fulfil) => {
|
|
113
|
+
void handle.promise.then(() => (token === this.currentToken ? fulfil() : undefined));
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
destroy() {
|
|
117
|
+
this.cancelTask = true;
|
|
118
|
+
this.task?.abort();
|
|
119
|
+
this.task = null;
|
|
120
|
+
this.subscribers.clear();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=spring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spring.js","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class Subscribers {
|
|
2
|
+
fns = new Set();
|
|
3
|
+
getCurrent;
|
|
4
|
+
constructor(getCurrent) {
|
|
5
|
+
this.getCurrent = getCurrent;
|
|
6
|
+
}
|
|
7
|
+
subscribe(fn) {
|
|
8
|
+
this.fns.add(fn);
|
|
9
|
+
fn(this.getCurrent());
|
|
10
|
+
return () => {
|
|
11
|
+
this.fns.delete(fn);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
emit(value) {
|
|
15
|
+
for (const fn of this.fns) {
|
|
16
|
+
fn(value);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
get size() {
|
|
20
|
+
return this.fns.size;
|
|
21
|
+
}
|
|
22
|
+
clear() {
|
|
23
|
+
this.fns.clear();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=subscribers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribers.js","sourceRoot":"","sources":["../src/subscribers.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACL,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IACpC,UAAU,CAAU;IAErC,YAAY,UAAmB;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,EAAsB;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjB,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACtB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAQ;QACX,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,EAAE,CAAC,KAAK,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;CACF"}
|
package/dist/textures.js
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
export const DEFAULT_TEXTURE_SEED = 0x9e3779b9;
|
|
2
|
+
const mulberry32 = (seed) => {
|
|
3
|
+
let a = seed >>> 0;
|
|
4
|
+
return () => {
|
|
5
|
+
a = (a + 0x6d2b79f5) | 0;
|
|
6
|
+
let t = Math.imul(a ^ (a >>> 15), 1 | a);
|
|
7
|
+
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
|
|
8
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
const svgToDataUri = (svg) => {
|
|
12
|
+
const cleaned = svg
|
|
13
|
+
.replace(/>\s+</g, "><")
|
|
14
|
+
.replace(/\s{2,}/g, " ")
|
|
15
|
+
.trim();
|
|
16
|
+
const encoded = cleaned
|
|
17
|
+
.replace(/%/g, "%25")
|
|
18
|
+
.replace(/</g, "%3C")
|
|
19
|
+
.replace(/>/g, "%3E")
|
|
20
|
+
.replace(/#/g, "%23")
|
|
21
|
+
.replace(/&/g, "%26")
|
|
22
|
+
.replace(/"/g, "'")
|
|
23
|
+
.replace(/\n/g, "%0A");
|
|
24
|
+
return `data:image/svg+xml,${encoded}`;
|
|
25
|
+
};
|
|
26
|
+
const svgDocument = (width, height, defs, body) => svgToDataUri(`<svg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' viewBox='0 0 ${width} ${height}'>` +
|
|
27
|
+
(defs ? `<defs>${defs}</defs>` : "") +
|
|
28
|
+
body +
|
|
29
|
+
`</svg>`);
|
|
30
|
+
const pick = (rng, items) => {
|
|
31
|
+
const value = items[Math.floor(rng() * items.length)];
|
|
32
|
+
return value ?? items[0];
|
|
33
|
+
};
|
|
34
|
+
const rand = (rng, min, max) => min + rng() * (max - min);
|
|
35
|
+
const circle = (x, y, r, fill, opacity, opts = {}) => {
|
|
36
|
+
const filter = opts.filter ? ` filter='url(${opts.filter})'` : "";
|
|
37
|
+
return `<circle cx='${x.toFixed(1)}' cy='${y.toFixed(1)}' r='${r.toFixed(opts.rDigits ?? 2)}' fill='${fill}' opacity='${opacity.toFixed(2)}'${filter}/>`;
|
|
38
|
+
};
|
|
39
|
+
const gaussianBlurFilter = (id, std, margin, size) => `<filter id='${id}' x='${margin}' y='${margin}' width='${size}' height='${size}'><feGaussianBlur stdDeviation='${std}'/></filter>`;
|
|
40
|
+
const discreteTable = (keep, steps = 32) => {
|
|
41
|
+
const ones = Math.min(steps, Math.max(1, Math.round(steps * keep)));
|
|
42
|
+
const cells = [];
|
|
43
|
+
for (let i = 0; i < steps - ones; i += 1) {
|
|
44
|
+
cells.push("0");
|
|
45
|
+
}
|
|
46
|
+
for (let i = 0; i < ones; i += 1) {
|
|
47
|
+
cells.push("1");
|
|
48
|
+
}
|
|
49
|
+
return cells.join(" ");
|
|
50
|
+
};
|
|
51
|
+
const speckleField = (idBase, seed, layers, stitch = true) => {
|
|
52
|
+
let defs = "";
|
|
53
|
+
let body = "";
|
|
54
|
+
const stitchTiles = stitch ? "stitch" : "noStitch";
|
|
55
|
+
layers.forEach((layer, index) => {
|
|
56
|
+
const id = `${idBase}${index}`;
|
|
57
|
+
defs +=
|
|
58
|
+
`<filter id='${id}' x='0%' y='0%' width='100%' height='100%'>` +
|
|
59
|
+
`<feTurbulence type='fractalNoise' baseFrequency='${layer.freq}' numOctaves='1' seed='${(seed + index * 37) % 9973}' stitchTiles='${stitchTiles}' result='n'/>` +
|
|
60
|
+
`<feColorMatrix in='n' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0' result='a'/>` +
|
|
61
|
+
`<feComponentTransfer in='a' result='m'><feFuncA type='discrete' tableValues='${discreteTable(layer.keep)}'/></feComponentTransfer>` +
|
|
62
|
+
`<feComposite in='SourceGraphic' in2='m' operator='in'/>` +
|
|
63
|
+
`</filter>`;
|
|
64
|
+
body += `<rect width='100%' height='100%' fill='${layer.color}' filter='url(#${id})' opacity='${layer.opacity}'/>`;
|
|
65
|
+
});
|
|
66
|
+
return { defs, body };
|
|
67
|
+
};
|
|
68
|
+
const clusterBlobs = (rng, width, height, count, palette, blurId, radius, opacity) => {
|
|
69
|
+
let blobs = "";
|
|
70
|
+
for (let i = 0; i < count; i += 1) {
|
|
71
|
+
blobs += circle(rng() * width, rng() * height, rand(rng, radius[0], radius[1]), pick(rng, palette), rand(rng, opacity[0], opacity[1]), { rDigits: 1 });
|
|
72
|
+
}
|
|
73
|
+
return `<g filter='url(${blurId})'>${blobs}</g>`;
|
|
74
|
+
};
|
|
75
|
+
const brightStars = (rng, width, height, count, glowId) => {
|
|
76
|
+
let stars = "";
|
|
77
|
+
for (let i = 0; i < count; i += 1) {
|
|
78
|
+
const x = rng() * width;
|
|
79
|
+
const y = rng() * height;
|
|
80
|
+
const r = rand(rng, 1.1, 2.6);
|
|
81
|
+
stars +=
|
|
82
|
+
circle(x, y, r * 2.6, "#ffffff", 0.14, { rDigits: 1, filter: glowId }) +
|
|
83
|
+
circle(x, y, r, "#ffffff", rand(rng, 0.75, 1));
|
|
84
|
+
}
|
|
85
|
+
return stars;
|
|
86
|
+
};
|
|
87
|
+
const ringClusters = (rng, width, height, count, color) => {
|
|
88
|
+
let out = "";
|
|
89
|
+
for (let i = 0; i < count; i += 1) {
|
|
90
|
+
const cx = rng() * width;
|
|
91
|
+
const cy = rng() * height;
|
|
92
|
+
const radius = rand(rng, 14, 30);
|
|
93
|
+
const dots = 26 + Math.floor(rng() * 22);
|
|
94
|
+
for (let k = 0; k < dots; k += 1) {
|
|
95
|
+
const angle = rng() * Math.PI * 2;
|
|
96
|
+
const rr = radius * rand(rng, 0.78, 1.28);
|
|
97
|
+
out += circle(cx + Math.cos(angle) * rr, cy + Math.sin(angle) * rr * 1.05, rand(rng, 0.5, 1.5), color, rand(rng, 0.4, 0.9));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
};
|
|
102
|
+
const COSMOS_W = 512;
|
|
103
|
+
const COSMOS_H = 716;
|
|
104
|
+
const cosmosDefs = (extraDefs) => gaussianBlurFilter("blur", 2.6, "-30%", "160%") + gaussianBlurFilter("glow", 2.4, "-200%", "500%") + extraDefs;
|
|
105
|
+
export const grainTexture = (seed) => svgDocument(200, 200, `<filter id='grain' x='0%' y='0%' width='100%' height='100%'>` +
|
|
106
|
+
`<feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='${seed % 9973}' stitchTiles='stitch' result='n'/>` +
|
|
107
|
+
`<feColorMatrix in='n' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0' result='a'/>` +
|
|
108
|
+
`<feComponentTransfer in='a' result='m'><feFuncA type='discrete' tableValues='${discreteTable(0.28)}'/></feComponentTransfer>` +
|
|
109
|
+
`<feFlood flood-color='#ffffff' result='w'/>` +
|
|
110
|
+
`<feComposite in='w' in2='m' operator='in'/>` +
|
|
111
|
+
`</filter>`, `<rect width='100%' height='100%' fill='#000000'/>` +
|
|
112
|
+
`<rect width='100%' height='100%' filter='url(#grain)' opacity='0.4'/>`);
|
|
113
|
+
export const glitterTexture = (seed) => {
|
|
114
|
+
const { defs, body } = speckleField("gl", seed, [
|
|
115
|
+
{ freq: 0.82, keep: 0.42, color: "#8f8f8f", opacity: 0.85 },
|
|
116
|
+
{ freq: 0.7, keep: 0.22, color: "#dcdcdc", opacity: 1 },
|
|
117
|
+
{ freq: 0.6, keep: 0.08, color: "#ffffff", opacity: 1 },
|
|
118
|
+
]);
|
|
119
|
+
const rng = mulberry32(seed + 99);
|
|
120
|
+
const flares = brightStars(rng, 240, 240, 16, "#glow");
|
|
121
|
+
return svgDocument(240, 240, `${gaussianBlurFilter("glow", 1.5, "-200%", "500%")}${defs}`, `<rect width='100%' height='100%' fill='#050505'/>${body}${flares}`);
|
|
122
|
+
};
|
|
123
|
+
const cosmosLayer = (idBase, seed, layers, paint) => {
|
|
124
|
+
const rng = mulberry32(seed);
|
|
125
|
+
const { defs, body } = speckleField(idBase, seed, layers, false);
|
|
126
|
+
return svgDocument(COSMOS_W, COSMOS_H, cosmosDefs(defs), paint(rng, body));
|
|
127
|
+
};
|
|
128
|
+
const cosmosBottom = (seed) => cosmosLayer("csb", seed, [
|
|
129
|
+
{ freq: 0.85, keep: 0.32, color: "#97a3c8", opacity: 0.8 },
|
|
130
|
+
{ freq: 0.72, keep: 0.13, color: "#ffffff", opacity: 0.95 },
|
|
131
|
+
{ freq: 0.76, keep: 0.05, color: "#9fb6ff", opacity: 0.85 },
|
|
132
|
+
{ freq: 0.78, keep: 0.04, color: "#ffc2d8", opacity: 0.8 },
|
|
133
|
+
], (rng, body) => {
|
|
134
|
+
const clusters = clusterBlobs(rng, COSMOS_W, COSMOS_H, 26, ["#465777", "#6d6088", "#9a7790", "#aab3cc", "#566f9e"], "#blur", [5, 14], [0.18, 0.4]);
|
|
135
|
+
const stars = brightStars(rng, COSMOS_W, COSMOS_H, 24, "#glow");
|
|
136
|
+
return `<rect width='100%' height='100%' fill='#04030c'/>${clusters}${body}${stars}`;
|
|
137
|
+
});
|
|
138
|
+
const cosmosMiddle = (seed) => cosmosLayer("csm", seed, [
|
|
139
|
+
{ freq: 0.66, keep: 0.2, color: "#241a4e", opacity: 0.95 },
|
|
140
|
+
{ freq: 0.58, keep: 0.11, color: "#4a2168", opacity: 0.9 },
|
|
141
|
+
{ freq: 0.52, keep: 0.055, color: "#7a1f6b", opacity: 0.85 },
|
|
142
|
+
{ freq: 0.5, keep: 0.03, color: "#c87a3a", opacity: 0.85 },
|
|
143
|
+
], (rng, body) => {
|
|
144
|
+
const clusters = clusterBlobs(rng, COSMOS_W, COSMOS_H, 16, ["#241a4e", "#3a2168", "#1a1430"], "#blur", [7, 18], [0.45, 0.8]);
|
|
145
|
+
return `${clusters}${body}`;
|
|
146
|
+
});
|
|
147
|
+
const cosmosTop = (seed) => cosmosLayer("cst", seed, [
|
|
148
|
+
{ freq: 0.62, keep: 0.06, color: "#6a6a76", opacity: 0.85 },
|
|
149
|
+
{ freq: 0.52, keep: 0.035, color: "#42424c", opacity: 0.9 },
|
|
150
|
+
], (rng, body) => {
|
|
151
|
+
const rings = ringClusters(rng, COSMOS_W, COSMOS_H, 7, "#54545f");
|
|
152
|
+
return `${body}${rings}`;
|
|
153
|
+
});
|
|
154
|
+
export const generateTextures = (options = {}) => {
|
|
155
|
+
const seed = options.seed ?? DEFAULT_TEXTURE_SEED;
|
|
156
|
+
return {
|
|
157
|
+
grain: grainTexture(seed),
|
|
158
|
+
glitter: glitterTexture(seed + 1),
|
|
159
|
+
cosmosBottom: cosmosBottom(seed + 2),
|
|
160
|
+
cosmosMiddle: cosmosMiddle(seed + 3),
|
|
161
|
+
cosmosTop: cosmosTop(seed + 4),
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
export const TEXTURE_VARIABLES = {
|
|
165
|
+
grain: "--hc-grain",
|
|
166
|
+
glitter: "--hc-glitter",
|
|
167
|
+
cosmosBottom: "--hc-cosmos-bottom",
|
|
168
|
+
cosmosMiddle: "--hc-cosmos-middle",
|
|
169
|
+
cosmosTop: "--hc-cosmos-top",
|
|
170
|
+
};
|
|
171
|
+
export const texturesToCssVariables = (textures) => {
|
|
172
|
+
const vars = {};
|
|
173
|
+
for (const key of Object.keys(TEXTURE_VARIABLES)) {
|
|
174
|
+
vars[TEXTURE_VARIABLES[key]] = `url("${textures[key]}")`;
|
|
175
|
+
}
|
|
176
|
+
return vars;
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=textures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textures.js","sourceRoot":"","sources":["../src/textures.ts"],"names":[],"mappings":"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"}
|
package/dist/ticker.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const now = () => (typeof performance !== "undefined" ? performance.now() : Date.now());
|
|
2
|
+
const raf = typeof requestAnimationFrame !== "undefined"
|
|
3
|
+
? (cb) => requestAnimationFrame(cb)
|
|
4
|
+
: (cb) => setTimeout(() => cb(now()), 1000 / 60);
|
|
5
|
+
const tasks = new Set();
|
|
6
|
+
const runTasks = (time) => {
|
|
7
|
+
tasks.forEach((task) => {
|
|
8
|
+
if (!task.c(time)) {
|
|
9
|
+
tasks.delete(task);
|
|
10
|
+
task.f();
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
if (tasks.size !== 0) {
|
|
14
|
+
raf(runTasks);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export const loop = (callback) => {
|
|
18
|
+
let task;
|
|
19
|
+
if (tasks.size === 0) {
|
|
20
|
+
raf(runTasks);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
promise: new Promise((fulfil) => {
|
|
24
|
+
task = { c: callback, f: fulfil };
|
|
25
|
+
tasks.add(task);
|
|
26
|
+
}),
|
|
27
|
+
abort: () => {
|
|
28
|
+
tasks.delete(task);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=ticker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticker.js","sourceRoot":"","sources":["../src/ticker.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG,GAAW,EAAE,CAAC,CAAC,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAEvG,MAAM,GAAG,GACP,OAAO,qBAAqB,KAAK,WAAW;IAC1C,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAYrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;AAE9B,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAQ,EAAE;IACtC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,CAAC,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,QAAmC,EAAc,EAAE;IACtE,IAAI,IAAU,CAAC;IACf,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChB,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI,OAAO,CAAO,CAAC,MAAM,EAAE,EAAE;YACpC,IAAI,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;YAClC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,KAAK,EAAE,GAAG,EAAE;YACV,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type ActiveToken = object | null;
|
|
2
|
+
export declare const getActiveCard: () => ActiveToken;
|
|
3
|
+
export declare const setActiveCard: (card: ActiveToken) => void;
|
|
4
|
+
export declare const subscribeActiveCard: (fn: (active: ActiveToken) => void) => (() => void);
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=active-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-registry.d.ts","sourceRoot":"","sources":["../src/active-registry.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;AAKjC,eAAO,MAAM,aAAa,QAAO,WAAyB,CAAC;AAE3D,eAAO,MAAM,aAAa,GAAI,MAAM,WAAW,KAAG,IAGjD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,IAAI,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,KAAG,CAAC,MAAM,IAAI,CAA8B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CreateHoloCardOptions } from "./types.js";
|
|
2
|
+
export declare const CLASS: {
|
|
3
|
+
readonly root: "holo-card";
|
|
4
|
+
readonly translater: "holo-card__translater";
|
|
5
|
+
readonly rotator: "holo-card__rotator";
|
|
6
|
+
readonly front: "holo-card__front";
|
|
7
|
+
readonly back: "holo-card__back";
|
|
8
|
+
readonly image: "holo-card__image";
|
|
9
|
+
readonly shine: "holo-card__shine";
|
|
10
|
+
readonly glare: "holo-card__glare";
|
|
11
|
+
readonly interactive: "holo-card--interactive";
|
|
12
|
+
readonly active: "holo-card--active";
|
|
13
|
+
readonly interacting: "holo-card--interacting";
|
|
14
|
+
readonly loading: "holo-card--loading";
|
|
15
|
+
readonly masked: "holo-card--masked";
|
|
16
|
+
};
|
|
17
|
+
export declare const buildHoloCardElement: (options: CreateHoloCardOptions) => HTMLElement;
|
|
18
|
+
//# sourceMappingURL=dom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;CAcR,CAAC;AASX,eAAO,MAAM,oBAAoB,GAAI,SAAS,qBAAqB,KAAG,WAqDrE,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { HoloCardOptions } from "./types.js";
|
|
2
|
+
export declare class HoloCard {
|
|
3
|
+
readonly element: HTMLElement;
|
|
4
|
+
private readonly rotator;
|
|
5
|
+
private readonly options;
|
|
6
|
+
private readonly springRotate;
|
|
7
|
+
private readonly springGlare;
|
|
8
|
+
private readonly springBackground;
|
|
9
|
+
private readonly springRotateDelta;
|
|
10
|
+
private readonly springTranslate;
|
|
11
|
+
private readonly springScale;
|
|
12
|
+
private isInteracting;
|
|
13
|
+
private firstPop;
|
|
14
|
+
private isVisible;
|
|
15
|
+
private destroyed;
|
|
16
|
+
private renderScheduled;
|
|
17
|
+
private interactRaf;
|
|
18
|
+
private pendingUpdate;
|
|
19
|
+
private repositionTimer;
|
|
20
|
+
private endTimer;
|
|
21
|
+
private showcaseStart;
|
|
22
|
+
private showcaseEnd;
|
|
23
|
+
private showcaseInterval;
|
|
24
|
+
private showcaseRunning;
|
|
25
|
+
private readonly cleanups;
|
|
26
|
+
private unsubscribeOrientation;
|
|
27
|
+
constructor(element: HTMLElement, options?: HoloCardOptions);
|
|
28
|
+
private applyStaticStyles;
|
|
29
|
+
private enableInteractive;
|
|
30
|
+
private interact;
|
|
31
|
+
private interactEnd;
|
|
32
|
+
private setSpringDynamics;
|
|
33
|
+
private settle;
|
|
34
|
+
private updateSprings;
|
|
35
|
+
private setInteracting;
|
|
36
|
+
get interacting(): boolean;
|
|
37
|
+
private scheduleRender;
|
|
38
|
+
private applyStyles;
|
|
39
|
+
private onActiveChange;
|
|
40
|
+
private popover;
|
|
41
|
+
private retreat;
|
|
42
|
+
private reset;
|
|
43
|
+
private setCenter;
|
|
44
|
+
private reposition;
|
|
45
|
+
private startGyroscope;
|
|
46
|
+
private stopGyroscope;
|
|
47
|
+
private orientate;
|
|
48
|
+
private onVisibilityChange;
|
|
49
|
+
private startShowcase;
|
|
50
|
+
private endShowcase;
|
|
51
|
+
private toggleActive;
|
|
52
|
+
activate(): void;
|
|
53
|
+
deactivate(): void;
|
|
54
|
+
setEffect(effect: HoloCardOptions["effect"]): void;
|
|
55
|
+
get active(): boolean;
|
|
56
|
+
destroy(): void;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=holo-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holo-card.d.ts","sourceRoot":"","sources":["../src/holo-card.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA4BlD,qBAAa,QAAQ;IACnB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAEtB;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqD;IAClF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8D;IAC1F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;IACxF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoD;IACtF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoD;IACpF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyC;IAErE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAmF;IACpG,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAiE;IAEtF,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,eAAe,CAAU;IAEjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,sBAAsB,CAA6B;gBAE/C,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,eAAoB;IAmE/D,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,QAAQ;IA6ChB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAKtB,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,YAAY;IAUpB,QAAQ,IAAI,IAAI;IAQhB,UAAU,IAAI,IAAI;IAOlB,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI;IAIlD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,IAAI,IAAI;CAmChB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HoloCard } from "./holo-card.js";
|
|
2
|
+
import type { CreateHoloCardOptions, HoloCardOptions } from "./types.js";
|
|
3
|
+
export { HoloCard } from "./holo-card.js";
|
|
4
|
+
export { buildHoloCardElement, CLASS } from "./dom.js";
|
|
5
|
+
export { generateTextures, texturesToCssVariables, grainTexture, glitterTexture, TEXTURE_VARIABLES, DEFAULT_TEXTURE_SEED, type Textures, type TextureOptions, } from "./textures.js";
|
|
6
|
+
export { subscribeOrientation, requestOrientationPermission, resetBaseOrientation, type Orientation, type RelativeOrientation, } from "./orientation.js";
|
|
7
|
+
export { getActiveCard, setActiveCard, subscribeActiveCard } from "./active-registry.js";
|
|
8
|
+
export { Spring, type SpringValue, type SpringOpts, type SpringSetOpts } from "./spring.js";
|
|
9
|
+
export { round, clamp, adjust } from "./math.js";
|
|
10
|
+
export type { HoloEffect, HoloCardOptions, CreateHoloCardOptions } from "./types.js";
|
|
11
|
+
export declare const createHoloCard: (options: CreateHoloCardOptions) => HoloCard;
|
|
12
|
+
export declare const attachHoloCard: (element: HTMLElement, options?: HoloCardOptions) => HoloCard;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,QAAQ,EACb,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAErF,eAAO,MAAM,cAAc,GAAI,SAAS,qBAAqB,KAAG,QAG/D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,EAAE,UAAS,eAAoB,KAAG,QACrD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const round: (value: number, precision?: number) => number;
|
|
2
|
+
export declare const clamp: (value: number, min?: number, max?: number) => number;
|
|
3
|
+
export declare const adjust: (value: number, fromMin: number, fromMax: number, toMin: number, toMax: number) => number;
|
|
4
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,kBAAa,KAAG,MAA8C,CAAC;AAEpG,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,YAAO,EAAE,YAAS,KAAG,MAA6C,CAAC;AAExG,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM,EAAE,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAC3B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface Orientation {
|
|
2
|
+
alpha: number;
|
|
3
|
+
beta: number;
|
|
4
|
+
gamma: number;
|
|
5
|
+
}
|
|
6
|
+
export interface RelativeOrientation {
|
|
7
|
+
absolute: Orientation;
|
|
8
|
+
relative: Orientation;
|
|
9
|
+
}
|
|
10
|
+
export declare const resetBaseOrientation: () => void;
|
|
11
|
+
export declare const subscribeOrientation: (fn: (orientation: RelativeOrientation) => void) => (() => void);
|
|
12
|
+
export declare const requestOrientationPermission: () => Promise<boolean>;
|
|
13
|
+
//# sourceMappingURL=orientation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orientation.d.ts","sourceRoot":"","sources":["../src/orientation.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAYD,eAAO,MAAM,oBAAoB,QAAO,IAGvC,CAAC;AAyBF,eAAO,MAAM,oBAAoB,GAAI,IAAI,CAAC,WAAW,EAAE,mBAAmB,KAAK,IAAI,KAAG,CAAC,MAAM,IAAI,CAahG,CAAC;AAIF,eAAO,MAAM,4BAA4B,QAAa,OAAO,CAAC,OAAO,CAcpE,CAAC"}
|