@rafaelaugusto/jolt 0.1.0-beta.15 → 0.1.0-beta.17
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 +9 -2
- package/dist/bottom-sheet/geometry.d.ts +18 -0
- package/dist/bottom-sheet/geometry.d.ts.map +1 -0
- package/dist/bottom-sheet/geometry.js +51 -0
- package/dist/bottom-sheet/geometry.js.map +1 -0
- package/dist/bottom-sheet/index.d.ts +56 -0
- package/dist/bottom-sheet/index.d.ts.map +1 -0
- package/dist/bottom-sheet/index.js +462 -0
- package/dist/bottom-sheet/index.js.map +1 -0
- package/dist/bottom-sheet/native.d.ts +11 -0
- package/dist/bottom-sheet/native.d.ts.map +1 -0
- package/dist/bottom-sheet/native.js +173 -0
- package/dist/bottom-sheet/native.js.map +1 -0
- package/dist/drag.js +1 -1
- package/dist/drag.js.map +1 -1
- package/dist/driver/android.d.ts.map +1 -1
- package/dist/driver/android.js +2 -0
- package/dist/driver/android.js.map +1 -1
- package/dist/driver/ios-scroll-delegate.d.ts +4 -0
- package/dist/driver/ios-scroll-delegate.d.ts.map +1 -0
- package/dist/driver/ios-scroll-delegate.js +26 -0
- package/dist/driver/ios-scroll-delegate.js.map +1 -0
- package/dist/driver/ios.d.ts.map +1 -1
- package/dist/driver/ios.js +2 -0
- package/dist/driver/ios.js.map +1 -1
- package/dist/gesture-native.d.ts +28 -0
- package/dist/gesture-native.d.ts.map +1 -0
- package/dist/gesture-native.js +61 -0
- package/dist/gesture-native.js.map +1 -0
- package/dist/gestures/index.d.ts +69 -0
- package/dist/gestures/index.d.ts.map +1 -0
- package/dist/gestures/index.js +262 -0
- package/dist/gestures/index.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/live-spring-driver.d.ts +52 -0
- package/dist/live-spring-driver.d.ts.map +1 -0
- package/dist/live-spring-driver.js +104 -0
- package/dist/live-spring-driver.js.map +1 -0
- package/dist/mixer.d.ts +6 -0
- package/dist/mixer.d.ts.map +1 -1
- package/dist/mixer.js +41 -1
- package/dist/mixer.js.map +1 -1
- package/dist/motion-value.d.ts +34 -2
- package/dist/motion-value.d.ts.map +1 -1
- package/dist/motion-value.js +277 -10
- package/dist/motion-value.js.map +1 -1
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.d.ts.map +1 -1
- package/dist/native/index.js +1 -0
- package/dist/native/index.js.map +1 -1
- package/dist/native-property.d.ts +2 -0
- package/dist/native-property.d.ts.map +1 -1
- package/dist/native-property.js +12 -4
- package/dist/native-property.js.map +1 -1
- package/dist/reorder/handle.d.ts +6 -0
- package/dist/reorder/handle.d.ts.map +1 -0
- package/dist/reorder/handle.js +10 -0
- package/dist/reorder/handle.js.map +1 -0
- package/dist/reorder/index.d.ts +10 -0
- package/dist/reorder/index.d.ts.map +1 -0
- package/dist/reorder/index.js +233 -0
- package/dist/reorder/index.js.map +1 -0
- package/dist/reorder/list-view.d.ts +5 -0
- package/dist/reorder/list-view.d.ts.map +1 -0
- package/dist/reorder/list-view.js +238 -0
- package/dist/reorder/list-view.js.map +1 -0
- package/dist/reorder/model.d.ts +6 -0
- package/dist/reorder/model.d.ts.map +1 -0
- package/dist/reorder/model.js +30 -0
- package/dist/reorder/model.js.map +1 -0
- package/dist/reorder/surface.d.ts +6 -0
- package/dist/reorder/surface.d.ts.map +1 -0
- package/dist/reorder/surface.js +10 -0
- package/dist/reorder/surface.js.map +1 -0
- package/dist/reorder/types.d.ts +92 -0
- package/dist/reorder/types.d.ts.map +1 -0
- package/dist/reorder/types.js +2 -0
- package/dist/reorder/types.js.map +1 -0
- package/dist/scene-shader.d.ts +18 -0
- package/dist/scene-shader.d.ts.map +1 -0
- package/dist/scene-shader.js +76 -0
- package/dist/scene-shader.js.map +1 -0
- package/dist/value-observers.d.ts +3 -1
- package/dist/value-observers.d.ts.map +1 -1
- package/dist/value-observers.js +10 -2
- package/dist/value-observers.js.map +1 -1
- package/package.json +13 -1
- package/platforms/android/include.gradle +9 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/GestureSession.java +198 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/GestureSurface.java +53 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/LiveSpring.java +270 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ReorderHandle.java +25 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ReorderSession.java +213 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ReorderSurface.java +27 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/SpringState.java +39 -0
- package/platforms/android/proguard-rules.pro +5 -0
- package/platforms/ios/src/JoltGestureSession.h +18 -0
- package/platforms/ios/src/JoltGestureSession.m +222 -0
- package/platforms/ios/src/JoltLiveSpring.h +28 -0
- package/platforms/ios/src/JoltLiveSpring.m +236 -0
- package/platforms/ios/src/JoltReorderSession.h +15 -0
- package/platforms/ios/src/JoltReorderSession.m +205 -0
- package/platforms/ios/src/JoltSpringState.h +35 -0
- package/platforms/ios/src/module.modulemap +3 -0
- package/src/android-plugin.d.ts +93 -0
- package/src/bottom-sheet/geometry.ts +84 -0
- package/src/bottom-sheet/index.ts +536 -0
- package/src/bottom-sheet/native.ts +214 -0
- package/src/drag.ts +1 -1
- package/src/driver/android.ts +2 -0
- package/src/driver/ios-scroll-delegate.ts +23 -0
- package/src/driver/ios.ts +2 -0
- package/src/gesture-native.ts +139 -0
- package/src/gestures/index.ts +365 -0
- package/src/index.ts +3 -1
- package/src/ios-plugin.d.ts +90 -0
- package/src/live-spring-driver.ts +181 -0
- package/src/mixer.ts +43 -1
- package/src/motion-value.ts +318 -11
- package/src/native/index.ts +6 -0
- package/src/native-property.ts +17 -4
- package/src/reorder/handle.ts +9 -0
- package/src/reorder/index.ts +243 -0
- package/src/reorder/list-view.ts +262 -0
- package/src/reorder/model.ts +47 -0
- package/src/reorder/surface.ts +10 -0
- package/src/reorder/types.ts +87 -0
- package/src/scene-shader.ts +139 -0
- package/src/value-observers.ts +12 -2
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { ListView, isIOS, } from '@nativescript/core';
|
|
2
|
+
import { sheetActions as viewActions } from '../bottom-sheet/native.js';
|
|
3
|
+
import { ReorderHandle } from './handle.js';
|
|
4
|
+
import { ReorderSurface } from './surface.js';
|
|
5
|
+
/** Flat Core ListView only. Sectioned lists and plugin collection views need another adapter. */
|
|
6
|
+
export function coreListAdapter(list) {
|
|
7
|
+
if (!(list instanceof ListView))
|
|
8
|
+
throw new TypeError('Expected a Core ListView.');
|
|
9
|
+
function validate() {
|
|
10
|
+
if (list.sectioned || list.stickyHeader || list.showSearch)
|
|
11
|
+
throw new TypeError('Reorder supports flat Core lists without built-in headers or search.');
|
|
12
|
+
}
|
|
13
|
+
validate();
|
|
14
|
+
return {
|
|
15
|
+
view: list,
|
|
16
|
+
items() {
|
|
17
|
+
validate();
|
|
18
|
+
const source = list.items;
|
|
19
|
+
return Array.from({ length: source?.length ?? 0 }, (_, index) => Array.isArray(source) ? source[index] : source.getItem(index));
|
|
20
|
+
},
|
|
21
|
+
subscribe(changed) {
|
|
22
|
+
let source;
|
|
23
|
+
const replaced = () => {
|
|
24
|
+
source?.off?.('change', changed);
|
|
25
|
+
source = list.items;
|
|
26
|
+
source?.on?.('change', changed);
|
|
27
|
+
changed();
|
|
28
|
+
};
|
|
29
|
+
list.on('itemsChange', replaced);
|
|
30
|
+
replaced();
|
|
31
|
+
return () => {
|
|
32
|
+
list.off('itemsChange', replaced);
|
|
33
|
+
source?.off?.('change', changed);
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
attach(config) {
|
|
37
|
+
validate();
|
|
38
|
+
const options = JSON.stringify({
|
|
39
|
+
longPress: config.longPress,
|
|
40
|
+
edgeSize: config.edgeSize,
|
|
41
|
+
edgeSpeed: config.edgeSpeed,
|
|
42
|
+
reducedMotion: config.reducedMotion,
|
|
43
|
+
handles: config.handle !== undefined,
|
|
44
|
+
});
|
|
45
|
+
let draggedKey;
|
|
46
|
+
const event = (state, index, toIndex) => {
|
|
47
|
+
if (state === 1) {
|
|
48
|
+
config.event({ type: 'start', index });
|
|
49
|
+
draggedKey = config.keyAt(index);
|
|
50
|
+
}
|
|
51
|
+
else if (state === 2) {
|
|
52
|
+
const key = draggedKey;
|
|
53
|
+
draggedKey = undefined;
|
|
54
|
+
config.event({ type: 'commit', index, toIndex });
|
|
55
|
+
if (key !== undefined)
|
|
56
|
+
focusKey(key, false);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
draggedKey = undefined;
|
|
60
|
+
config.event({ type: 'cancel', geometryChanged: toIndex === 1 });
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
let native;
|
|
64
|
+
if (isIOS) {
|
|
65
|
+
if (typeof JoltReorderSession === 'undefined')
|
|
66
|
+
throw new Error('Rebuild the native app to use reorder().');
|
|
67
|
+
native = JoltReorderSession.attachOptionsOnState(list.nativeViewProtected, options, event);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
if (!(list.parent instanceof ReorderSurface) ||
|
|
71
|
+
list.parent.getChildrenCount() !== 1)
|
|
72
|
+
throw new TypeError('On Android, make the Core ListView the only child of a ReorderSurface.');
|
|
73
|
+
if (typeof org.rafaelaugusto.jolt.ReorderSession === 'undefined')
|
|
74
|
+
throw new Error('Rebuild the native app to use reorder().');
|
|
75
|
+
native = new org.rafaelaugusto.jolt.ReorderSession(list.parent.nativeViewProtected, list.nativeViewProtected, options, new org.rafaelaugusto.jolt.ReorderSession.Listener({ onState: event }));
|
|
76
|
+
}
|
|
77
|
+
const rows = new Map();
|
|
78
|
+
let ended = false;
|
|
79
|
+
let focusTimer;
|
|
80
|
+
function moveRow(row, direction, accessible) {
|
|
81
|
+
const key = config.move(row.index, direction);
|
|
82
|
+
if (key !== undefined)
|
|
83
|
+
focusKey(key, accessible);
|
|
84
|
+
}
|
|
85
|
+
function reveal(index) {
|
|
86
|
+
// Run once after the app commits and Core rebinds. Estimated iOS heights
|
|
87
|
+
// can move the dropped row outside the viewport during reloadData.
|
|
88
|
+
if (isIOS) {
|
|
89
|
+
const table = list.nativeViewProtected;
|
|
90
|
+
table.layoutIfNeeded();
|
|
91
|
+
const path = NSIndexPath.indexPathForRowInSection(index, 0);
|
|
92
|
+
const rect = table.rectForRowAtIndexPath(path);
|
|
93
|
+
const top = table.bounds.origin.y + table.adjustedContentInset.top;
|
|
94
|
+
const bottom = table.bounds.origin.y +
|
|
95
|
+
table.bounds.size.height -
|
|
96
|
+
table.adjustedContentInset.bottom;
|
|
97
|
+
// Keep the target away from an edge while UIKit resolves estimated heights.
|
|
98
|
+
if (rect.origin.y < top || rect.origin.y + rect.size.height > bottom)
|
|
99
|
+
table.scrollToRowAtIndexPathAtScrollPositionAnimated(path, 2, false);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const table = list.nativeViewProtected;
|
|
103
|
+
const cell = table.getChildAt(index - table.getFirstVisiblePosition());
|
|
104
|
+
if (!cell)
|
|
105
|
+
list.scrollToIndex(index);
|
|
106
|
+
else {
|
|
107
|
+
const top = cell.getTop() - table.getPaddingTop();
|
|
108
|
+
const bottom = cell.getBottom() - table.getHeight() + table.getPaddingBottom();
|
|
109
|
+
if (top < 0)
|
|
110
|
+
table.scrollListBy(top);
|
|
111
|
+
else if (bottom > 0)
|
|
112
|
+
table.scrollListBy(bottom);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function focusKey(key, accessible) {
|
|
117
|
+
if (ended)
|
|
118
|
+
return;
|
|
119
|
+
if (focusTimer !== undefined)
|
|
120
|
+
clearTimeout(focusTimer);
|
|
121
|
+
let attempts = 0;
|
|
122
|
+
const focus = () => {
|
|
123
|
+
focusTimer = undefined;
|
|
124
|
+
if (ended)
|
|
125
|
+
return;
|
|
126
|
+
const index = config.indexOf(key);
|
|
127
|
+
if (index < 0)
|
|
128
|
+
return;
|
|
129
|
+
reveal(index);
|
|
130
|
+
const target = [...rows.values()].find((entry) => entry.index === index && entry.handle?.isLoaded);
|
|
131
|
+
if (target?.handle && list.isItemAtIndexVisible(index)) {
|
|
132
|
+
target.handle.focus();
|
|
133
|
+
if (accessible)
|
|
134
|
+
target.handle.accessibilityScreenChanged();
|
|
135
|
+
}
|
|
136
|
+
else if (attempts++ < 4) {
|
|
137
|
+
focusTimer = setTimeout(focus, 30);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
// Core lays out recycled rows after Vue flushes its new items.
|
|
141
|
+
focusTimer = setTimeout(focus, 30);
|
|
142
|
+
}
|
|
143
|
+
function loaded(data) {
|
|
144
|
+
const args = data;
|
|
145
|
+
if (!args.view || ended)
|
|
146
|
+
return;
|
|
147
|
+
const view = args.view;
|
|
148
|
+
let row = rows.get(view);
|
|
149
|
+
if (!row) {
|
|
150
|
+
row = { index: args.index, release() { } };
|
|
151
|
+
rows.set(view, row);
|
|
152
|
+
}
|
|
153
|
+
row.index = args.index;
|
|
154
|
+
if (row.timer !== undefined)
|
|
155
|
+
clearTimeout(row.timer);
|
|
156
|
+
const current = row;
|
|
157
|
+
// Vue/Core finishes binding and creating native children after itemLoading.
|
|
158
|
+
row.timer = setTimeout(() => {
|
|
159
|
+
current.timer = undefined;
|
|
160
|
+
if (ended)
|
|
161
|
+
return;
|
|
162
|
+
const handle = typeof config.handle === 'function'
|
|
163
|
+
? config.handle(view)
|
|
164
|
+
: typeof config.handle === 'string'
|
|
165
|
+
? view.getViewById(config.handle)
|
|
166
|
+
: view;
|
|
167
|
+
if (!handle?.nativeViewProtected)
|
|
168
|
+
return;
|
|
169
|
+
if (current.handle !== handle) {
|
|
170
|
+
current.release();
|
|
171
|
+
current.handle = handle;
|
|
172
|
+
const releaseActions = viewActions(handle, [
|
|
173
|
+
{
|
|
174
|
+
label: config.accessibility.moveUp,
|
|
175
|
+
run: () => moveRow(current, -1, true),
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
label: config.accessibility.moveDown,
|
|
179
|
+
run: () => moveRow(current, 1, true),
|
|
180
|
+
},
|
|
181
|
+
]);
|
|
182
|
+
let releaseKeys = () => { };
|
|
183
|
+
if (handle instanceof ReorderHandle) {
|
|
184
|
+
const move = (direction) => moveRow(current, direction < 0 ? -1 : 1, false);
|
|
185
|
+
if (isIOS) {
|
|
186
|
+
const button = handle.nativeViewProtected;
|
|
187
|
+
button.onMove = move;
|
|
188
|
+
releaseKeys = () => {
|
|
189
|
+
button.onMove = null;
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
const button = handle.nativeViewProtected;
|
|
194
|
+
button.setMoveListener(new org.rafaelaugusto.jolt.ReorderHandle.MoveListener({ move }));
|
|
195
|
+
releaseKeys = () => button.setMoveListener(null);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
current.release = () => {
|
|
199
|
+
releaseKeys();
|
|
200
|
+
releaseActions();
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
native.registerHandle(handle.nativeViewProtected);
|
|
204
|
+
}, 0);
|
|
205
|
+
}
|
|
206
|
+
const driver = {
|
|
207
|
+
cancel: () => native.cancel(),
|
|
208
|
+
setEnabled: (value) => native.setEnabled(value),
|
|
209
|
+
setReducedMotion: (value) => native.setReducedMotion(value),
|
|
210
|
+
dispose() {
|
|
211
|
+
if (ended)
|
|
212
|
+
return;
|
|
213
|
+
ended = true;
|
|
214
|
+
if (focusTimer !== undefined)
|
|
215
|
+
clearTimeout(focusTimer);
|
|
216
|
+
list.off('itemLoading', loaded);
|
|
217
|
+
for (const row of rows.values()) {
|
|
218
|
+
if (row.timer !== undefined)
|
|
219
|
+
clearTimeout(row.timer);
|
|
220
|
+
row.release();
|
|
221
|
+
}
|
|
222
|
+
rows.clear();
|
|
223
|
+
native.dispose();
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
list.on('itemLoading', loaded);
|
|
227
|
+
try {
|
|
228
|
+
list.refresh();
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
driver.dispose();
|
|
232
|
+
throw error;
|
|
233
|
+
}
|
|
234
|
+
return driver;
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=list-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-view.js","sourceRoot":"","sources":["../../src/reorder/list-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReorderKey, ReorderMove } from './types.js';
|
|
2
|
+
export declare function itemKeys<T, K extends ReorderKey>(items: readonly T[], key: (item: T) => K): K[];
|
|
3
|
+
export declare function sameKeys<K>(a: readonly K[], b: readonly K[]): boolean;
|
|
4
|
+
/** toIndex is the final position, after removing the dragged item. */
|
|
5
|
+
export declare function moveAt<K extends ReorderKey>(keys: readonly K[], fromIndex: number, toIndex: number): ReorderMove<K> | undefined;
|
|
6
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/reorder/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEzD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,EAC9C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,EAAE,CAaL;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,OAAO,CAErE;AAED,sEAAsE;AACtE,wBAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,EACzC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAiB5B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function itemKeys(items, key) {
|
|
2
|
+
const keys = items.map(key);
|
|
3
|
+
if (keys.some((value) => (typeof value !== 'string' && typeof value !== 'number') ||
|
|
4
|
+
(typeof value === 'number' && !Number.isFinite(value))))
|
|
5
|
+
throw new TypeError('Reorder keys must be strings or finite numbers.');
|
|
6
|
+
if (new Set(keys).size !== keys.length)
|
|
7
|
+
throw new TypeError('Reorder keys must be unique and stable across recycling.');
|
|
8
|
+
return keys;
|
|
9
|
+
}
|
|
10
|
+
export function sameKeys(a, b) {
|
|
11
|
+
return a.length === b.length && a.every((key, index) => key === b[index]);
|
|
12
|
+
}
|
|
13
|
+
/** toIndex is the final position, after removing the dragged item. */
|
|
14
|
+
export function moveAt(keys, fromIndex, toIndex) {
|
|
15
|
+
if (!Number.isInteger(fromIndex) ||
|
|
16
|
+
!Number.isInteger(toIndex) ||
|
|
17
|
+
fromIndex < 0 ||
|
|
18
|
+
toIndex < 0 ||
|
|
19
|
+
fromIndex >= keys.length ||
|
|
20
|
+
toIndex >= keys.length ||
|
|
21
|
+
fromIndex === toIndex)
|
|
22
|
+
return undefined;
|
|
23
|
+
return {
|
|
24
|
+
key: keys[fromIndex],
|
|
25
|
+
beforeKey: keys[toIndex < fromIndex ? toIndex : toIndex + 1] ?? null,
|
|
26
|
+
fromIndex,
|
|
27
|
+
toIndex,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/reorder/model.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CACtB,KAAmB,EACnB,GAAmB;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,IACE,IAAI,CAAC,IAAI,CACP,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACxD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACzD;QAED,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAA;IACxE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM;QACpC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;IACjF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,CAAe,EAAE,CAAe;IAC1D,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,MAAM,CACpB,IAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1B,SAAS,GAAG,CAAC;QACb,OAAO,GAAG,CAAC;QACX,SAAS,IAAI,IAAI,CAAC,MAAM;QACxB,OAAO,IAAI,IAAI,CAAC,MAAM;QACtB,SAAS,KAAK,OAAO;QAErB,OAAO,SAAS,CAAA;IAClB,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,SAAS,CAAE;QACrB,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI;QACpE,SAAS;QACT,OAAO;KACR,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GridLayout } from '@nativescript/core';
|
|
2
|
+
/** Android dispatch boundary: owns the drag after the source cell is recycled. */
|
|
3
|
+
export declare class ReorderSurface extends GridLayout {
|
|
4
|
+
createNativeView(): ReturnType<GridLayout['createNativeView']>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=surface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../../src/reorder/surface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,oBAAoB,CAAA;AAE1D,kFAAkF;AAClF,qBAAa,cAAe,SAAQ,UAAU;IACnC,gBAAgB,IAAI,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAItE;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GridLayout, isAndroid } from '@nativescript/core';
|
|
2
|
+
/** Android dispatch boundary: owns the drag after the source cell is recycled. */
|
|
3
|
+
export class ReorderSurface extends GridLayout {
|
|
4
|
+
createNativeView() {
|
|
5
|
+
return isAndroid
|
|
6
|
+
? new org.rafaelaugusto.jolt.ReorderSurface(this._context)
|
|
7
|
+
: super.createNativeView();
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../../src/reorder/surface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE1D,kFAAkF;AAClF,MAAM,OAAO,cAAe,SAAQ,UAAU;IACnC,gBAAgB;QACvB,OAAO,SAAS;YACd,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC1D,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { View } from '@nativescript/core';
|
|
2
|
+
export type ReorderKey = string | number;
|
|
3
|
+
export type ReorderCancelReason = 'cancelled' | 'unchanged' | 'data-changed' | 'removed' | 'unloaded' | 'disposed' | 'disabled' | 'geometry-changed';
|
|
4
|
+
export interface ReorderMove<K extends ReorderKey = ReorderKey> {
|
|
5
|
+
key: K;
|
|
6
|
+
/** Insert before this identity; null appends. The app owns the mutation. */
|
|
7
|
+
beforeKey: K | null;
|
|
8
|
+
fromIndex: number;
|
|
9
|
+
toIndex: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ReorderOptions<T, K extends ReorderKey = ReorderKey> {
|
|
12
|
+
key(item: T): K;
|
|
13
|
+
/** View id, or a resolver within a realized row. Omit to drag anywhere on the row. */
|
|
14
|
+
handle?: string | ((row: View) => View | undefined);
|
|
15
|
+
onCommit(move: ReorderMove<K>): void;
|
|
16
|
+
onStart?: (key: K) => void;
|
|
17
|
+
onCancel?: (event: {
|
|
18
|
+
key: K;
|
|
19
|
+
reason: ReorderCancelReason;
|
|
20
|
+
}) => void;
|
|
21
|
+
/** Long-press activation in milliseconds; default 350. */
|
|
22
|
+
longPress?: number;
|
|
23
|
+
/** Edge region in DIPs and maximum native autoscroll speed in DIPs/second. */
|
|
24
|
+
edge?: {
|
|
25
|
+
size?: number;
|
|
26
|
+
speed?: number;
|
|
27
|
+
};
|
|
28
|
+
accessibility?: {
|
|
29
|
+
moveUp?: string;
|
|
30
|
+
moveDown?: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface Reorder<K extends ReorderKey = ReorderKey> {
|
|
34
|
+
readonly activeKey: K | undefined;
|
|
35
|
+
readonly disposed: boolean;
|
|
36
|
+
/** A keyboard/button alternative. Returns false for a missing key or unchanged order. */
|
|
37
|
+
move(key: K, beforeKey: K | null): boolean;
|
|
38
|
+
moveUp(key: K): boolean;
|
|
39
|
+
moveDown(key: K): boolean;
|
|
40
|
+
cancel(): void;
|
|
41
|
+
/** Call after in-place changes to a plain array or row geometry. */
|
|
42
|
+
refresh(): void;
|
|
43
|
+
pause(): void;
|
|
44
|
+
play(): void;
|
|
45
|
+
dispose(): void;
|
|
46
|
+
}
|
|
47
|
+
export type ReorderNativeEvent = {
|
|
48
|
+
type: 'start';
|
|
49
|
+
index: number;
|
|
50
|
+
} | {
|
|
51
|
+
type: 'commit';
|
|
52
|
+
index: number;
|
|
53
|
+
toIndex: number;
|
|
54
|
+
} | {
|
|
55
|
+
type: 'cancel';
|
|
56
|
+
geometryChanged?: boolean;
|
|
57
|
+
};
|
|
58
|
+
export interface ReorderAdapterDriver {
|
|
59
|
+
cancel(): void;
|
|
60
|
+
setEnabled(enabled: boolean): void;
|
|
61
|
+
setReducedMotion(reduced: boolean): void;
|
|
62
|
+
dispose(): void;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Optional list-plugin integration. Indices refer to the current items until a
|
|
66
|
+
* change invalidates the gesture. Drivers own native input, measured variable
|
|
67
|
+
* heights, snapshot overlays, recycled-cell restoration and edge scrolling.
|
|
68
|
+
* Emit only lifecycle events; do not bridge pointer/display frames to JS.
|
|
69
|
+
*/
|
|
70
|
+
export interface ReorderAdapter<T> {
|
|
71
|
+
readonly view: View;
|
|
72
|
+
items(): readonly T[];
|
|
73
|
+
/** Notify synchronously when identities/order/content change. */
|
|
74
|
+
subscribe(changed: () => void): () => void;
|
|
75
|
+
attach(config: {
|
|
76
|
+
handle: ReorderOptions<T>['handle'];
|
|
77
|
+
longPress: number;
|
|
78
|
+
edgeSize: number;
|
|
79
|
+
edgeSpeed: number;
|
|
80
|
+
reducedMotion: boolean;
|
|
81
|
+
accessibility: {
|
|
82
|
+
moveUp: string;
|
|
83
|
+
moveDown: string;
|
|
84
|
+
};
|
|
85
|
+
event(event: ReorderNativeEvent): void;
|
|
86
|
+
/** Returns the moved identity; resolve it again after the app updates data. */
|
|
87
|
+
move(index: number, direction: -1 | 1): ReorderKey | undefined;
|
|
88
|
+
keyAt(index: number): ReorderKey | undefined;
|
|
89
|
+
indexOf(key: ReorderKey): number;
|
|
90
|
+
}): ReorderAdapterDriver;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reorder/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AACxC,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,WAAW,GACX,cAAc,GACd,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,kBAAkB,CAAA;AAEtB,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC5D,GAAG,EAAE,CAAC,CAAA;IACN,4EAA4E;IAC5E,SAAS,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,GAAG,UAAU;IAClE,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IACf,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG,SAAS,CAAC,CAAA;IACnD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACpC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE,KAAK,IAAI,CAAA;IACnE,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,aAAa,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACvD;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IACxD,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,yFAAyF;IACzF,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAA;IAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAA;IACzB,MAAM,IAAI,IAAI,CAAA;IACd,oEAAoE;IACpE,OAAO,IAAI,IAAI,CAAA;IACf,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEjD,MAAM,WAAW,oBAAoB;IACnC,MAAM,IAAI,IAAI,CAAA;IACd,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAClC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACxC,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,KAAK,IAAI,SAAS,CAAC,EAAE,CAAA;IACrB,iEAAiE;IACjE,SAAS,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC1C,MAAM,CAAC,MAAM,EAAE;QACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACnC,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,aAAa,EAAE,OAAO,CAAA;QACtB,aAAa,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;QACnD,KAAK,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAA;QACtC,+EAA+E;QAC/E,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,SAAS,CAAA;QAC9D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;QAC5C,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAA;KACjC,GAAG,oBAAoB,CAAA;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/reorder/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="@nativescript/types-ios/lib/ios/objc-x86_64/objc!SceneKit" preserve="true" />
|
|
2
|
+
import { type NativeProperty } from './native-property.js';
|
|
3
|
+
export type SceneUniformType = 'float' | 'float2' | 'float3' | 'float4';
|
|
4
|
+
export type SceneUniformValue<T extends SceneUniformType> = T extends 'float' ? number : T extends 'float2' ? readonly [number, number] : T extends 'float3' ? readonly [number, number, number] : readonly [number, number, number, number];
|
|
5
|
+
export interface SceneUniformOptions<T extends SceneUniformType> {
|
|
6
|
+
type: T;
|
|
7
|
+
/** Finite inclusive limits applied to every component; spring overshoot is clamped. */
|
|
8
|
+
range: readonly [number, number];
|
|
9
|
+
/** One application-defined unit per component. Vectors have no implicit color conversion. */
|
|
10
|
+
units: readonly string[];
|
|
11
|
+
/** Spatial uniforms jump under Reduced Motion; appearance uniforms keep their timing. */
|
|
12
|
+
motion: 'spatial' | 'appearance';
|
|
13
|
+
}
|
|
14
|
+
/** Scene environment multiplier, nonnegative; leaves the environment/background images untouched. */
|
|
15
|
+
export declare const sceneKitEnvironmentIntensity: (scene: SCNScene) => NativeProperty<number>;
|
|
16
|
+
/** Declared Metal shaderModifiers input, initialized by the application before attachment. */
|
|
17
|
+
export declare function sceneKitUniform<T extends SceneUniformType>(target: SCNMaterial | SCNGeometry, name: string, options: SceneUniformOptions<T>): NativeProperty<SceneUniformValue<T>>;
|
|
18
|
+
//# sourceMappingURL=scene-shader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-shader.d.ts","sourceRoot":"","sources":["../src/scene-shader.ts"],"names":[],"mappings":";AACA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAA;AAE7B,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AACvE,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAAC,SAAS,OAAO,GACzE,MAAM,GACN,CAAC,SAAS,QAAQ,GAChB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GACzB,CAAC,SAAS,QAAQ,GAChB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACjC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACjD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,gBAAgB;IAC7D,IAAI,EAAE,CAAC,CAAA;IACP,uFAAuF;IACvF,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,6FAA6F;IAC7F,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,yFAAyF;IACzF,MAAM,EAAE,SAAS,GAAG,YAAY,CAAA;CACjC;AAqBD,qGAAqG;AACrG,eAAO,MAAM,4BAA4B,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,cAAc,CAAC,MAAM,CAcjF,CAAA;AAEJ,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,CAAC,SAAS,gBAAgB,EACxD,MAAM,EAAE,WAAW,GAAG,WAAW,EACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC9B,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAwEtC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/// <reference types="@nativescript/types-ios/lib/ios/objc-x86_64/objc!SceneKit" preserve="true" />
|
|
2
|
+
import { nativePropertyTarget, registerNativeProperty, } from './native-property.js';
|
|
3
|
+
function runtime() {
|
|
4
|
+
if (typeof JoltSceneShaderProperties === 'undefined')
|
|
5
|
+
throw new Error('Update @rafaelaugusto/jolt-native and rebuild the native app to use SceneKit environment and shader adapters.');
|
|
6
|
+
return JoltSceneShaderProperties;
|
|
7
|
+
}
|
|
8
|
+
function sink(create) {
|
|
9
|
+
const error = new interop.Reference();
|
|
10
|
+
const result = create(error);
|
|
11
|
+
if (!result)
|
|
12
|
+
throw new Error(error.value?.localizedDescription ??
|
|
13
|
+
'Invalid SceneKit property target or shader schema.');
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
/** Scene environment multiplier, nonnegative; leaves the environment/background images untouched. */
|
|
17
|
+
export const sceneKitEnvironmentIntensity = registerNativeProperty({
|
|
18
|
+
name: 'jolt.scenekit/environment-intensity',
|
|
19
|
+
units: ['environment illumination multiplier'],
|
|
20
|
+
platforms: ['ios'],
|
|
21
|
+
encode: (value) => [value],
|
|
22
|
+
decode: (values) => values[0],
|
|
23
|
+
validate(value) {
|
|
24
|
+
if (!Number.isFinite(value) || value < 0)
|
|
25
|
+
throw new RangeError('Environment intensity must be finite and nonnegative.');
|
|
26
|
+
},
|
|
27
|
+
interpolate: (a, b, t) => Math.max(0, a + (b - a) * t),
|
|
28
|
+
create: (target) => sink((error) => runtime().environmentError(target, error)),
|
|
29
|
+
});
|
|
30
|
+
/** Declared Metal shaderModifiers input, initialized by the application before attachment. */
|
|
31
|
+
export function sceneKitUniform(target, name, options) {
|
|
32
|
+
if (typeof name !== 'string' ||
|
|
33
|
+
!/^[A-Za-z][A-Za-z0-9_]*$/.test(name) ||
|
|
34
|
+
/^(u_|a_|v_|scn_)/.test(name))
|
|
35
|
+
throw new TypeError('Use a declared custom uniform identifier without a reserved SceneKit prefix or KVC path.');
|
|
36
|
+
if (!options || !['float', 'float2', 'float3', 'float4'].includes(options.type))
|
|
37
|
+
throw new TypeError('Shader uniforms support float, float2, float3 and float4.');
|
|
38
|
+
const count = options.type === 'float' ? 1 : Number(options.type.slice(-1));
|
|
39
|
+
const range = options.range;
|
|
40
|
+
if (!Array.isArray(range) ||
|
|
41
|
+
range.length !== 2 ||
|
|
42
|
+
!range.every((n) => Number.isFinite(n) && Math.abs(n) <= 3.4028234663852886e38) ||
|
|
43
|
+
range[0] >= range[1])
|
|
44
|
+
throw new RangeError('Declare an ordered finite range for the shader components.');
|
|
45
|
+
if (!Array.isArray(options.units) ||
|
|
46
|
+
options.units.length !== count ||
|
|
47
|
+
options.units.some((unit) => typeof unit !== 'string' || !unit.trim()))
|
|
48
|
+
throw new TypeError('Declare one nonempty unit for each shader component.');
|
|
49
|
+
if (!['spatial', 'appearance'].includes(options.motion))
|
|
50
|
+
throw new TypeError('Declare whether the shader motion is spatial or appearance.');
|
|
51
|
+
// Copy the schema: caller mutation cannot change an already attached native sink.
|
|
52
|
+
const [low, high] = range, type = options.type, units = [...options.units];
|
|
53
|
+
const vector = (value) => {
|
|
54
|
+
const values = type === 'float' ? [value] : value;
|
|
55
|
+
if (!Array.isArray(values) ||
|
|
56
|
+
values.length !== count ||
|
|
57
|
+
values.some((n) => typeof n !== 'number' || !Number.isFinite(n) || n < low || n > high))
|
|
58
|
+
throw new RangeError(`${name} needs ${count} finite component(s) in ${low}..${high}.`);
|
|
59
|
+
return [...values];
|
|
60
|
+
};
|
|
61
|
+
return nativePropertyTarget(target, {
|
|
62
|
+
name: `jolt.scenekit/uniform-${name}`,
|
|
63
|
+
units,
|
|
64
|
+
platforms: ['ios'],
|
|
65
|
+
spatial: options.motion === 'spatial',
|
|
66
|
+
encode: vector,
|
|
67
|
+
decode: (values) => (type === 'float' ? values[0] : [...values]),
|
|
68
|
+
interpolate(a, b, t) {
|
|
69
|
+
const first = vector(a), last = vector(b);
|
|
70
|
+
const result = first.map((value, i) => Math.max(low, Math.min(high, value + (last[i] - value) * t)));
|
|
71
|
+
return (type === 'float' ? result[0] : result);
|
|
72
|
+
},
|
|
73
|
+
create: (object) => sink((error) => runtime().uniformNameConfigurationError(object, name, JSON.stringify({ type, low, high }), error)),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=scene-shader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-shader.js","sourceRoot":"","sources":["../src/scene-shader.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,14 @@ export type ValueListener<T> = (value: T, time: number) => void;
|
|
|
8
8
|
/** Root-owned subscriptions; mappings are evaluated only for consumers that opted in. */
|
|
9
9
|
export declare class ValueObservers {
|
|
10
10
|
private readonly read;
|
|
11
|
+
private readonly isRunning?;
|
|
11
12
|
private readonly observers;
|
|
12
13
|
private running;
|
|
13
|
-
constructor(read: (time: number) => number);
|
|
14
|
+
constructor(read: (time: number) => number, isRunning?: (() => boolean) | undefined);
|
|
14
15
|
get active(): boolean;
|
|
15
16
|
subscribe(read: (value: number) => number, color: boolean, listener: ValueListener<number | Color>, options?: SubscribeOptions): () => void;
|
|
16
17
|
changed(running: boolean): void;
|
|
18
|
+
clear(): void;
|
|
17
19
|
snapshot(time: number): () => void;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=value-observers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-observers.d.ts","sourceRoot":"","sources":["../src/value-observers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,EAAS,MAAM,oBAAoB,CAAA;AAG9D,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,4FAA4F;AAC5F,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAqE/D,yFAAyF;AACzF,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"value-observers.d.ts","sourceRoot":"","sources":["../src/value-observers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,EAAS,MAAM,oBAAoB,CAAA;AAG9D,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,4FAA4F;AAC5F,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAqE/D,yFAAyF;AACzF,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAL7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,OAAO,CAAQ;IAEvB,YACmB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAC9B,SAAS,CAAC,GAAE,MAAM,OAAO,aAAA,EACxC;IAEJ,IAAI,MAAM,YAET;IAED,SAAS,CACP,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAC/B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,EACvC,OAAO,GAAE,gBAAqB,GAC7B,MAAM,IAAI,CAeZ;IAED,OAAO,CAAC,OAAO,EAAE,OAAO,QAMvB;IAED,KAAK,SAKJ;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,IAAI,CAYjC;CACF"}
|
package/dist/value-observers.js
CHANGED
|
@@ -59,13 +59,15 @@ function deliver(observer, value, time) {
|
|
|
59
59
|
/** Root-owned subscriptions; mappings are evaluated only for consumers that opted in. */
|
|
60
60
|
export class ValueObservers {
|
|
61
61
|
read;
|
|
62
|
+
isRunning;
|
|
62
63
|
observers = new Set();
|
|
63
64
|
running = false;
|
|
64
|
-
constructor(read) {
|
|
65
|
+
constructor(read, isRunning) {
|
|
65
66
|
this.read = read;
|
|
67
|
+
this.isRunning = isRunning;
|
|
66
68
|
}
|
|
67
69
|
get active() {
|
|
68
|
-
return this.running && this.observers.size > 0;
|
|
70
|
+
return (this.isRunning?.() ?? this.running) && this.observers.size > 0;
|
|
69
71
|
}
|
|
70
72
|
subscribe(read, color, listener, options = {}) {
|
|
71
73
|
if (typeof listener !== 'function')
|
|
@@ -92,6 +94,12 @@ export class ValueObservers {
|
|
|
92
94
|
schedule();
|
|
93
95
|
}
|
|
94
96
|
}
|
|
97
|
+
clear() {
|
|
98
|
+
this.observers.clear();
|
|
99
|
+
pending.delete(this);
|
|
100
|
+
this.running = false;
|
|
101
|
+
schedule();
|
|
102
|
+
}
|
|
95
103
|
snapshot(time) {
|
|
96
104
|
const value = this.read(time);
|
|
97
105
|
const deliveries = [...this.observers].flatMap((observer) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-observers.js","sourceRoot":"","sources":["../src/value-observers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAiB7C,gGAAgG;AAChG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;AACzC,IAAI,WAAqC,CAAA;AACzC,IAAI,SAAS,GAAG,KAAK,CAAA;AACrB,IAAI,SAAS,GAAG,KAAK,CAAA;AAErB,SAAS,OAAO;IACd,SAAS,GAAG,IAAI,CAAA;IAChB,WAAW,EAAE,EAAE,CAAA;IACf,WAAW,GAAG,SAAS,CAAA;AACzB,CAAC;AAED,SAAS,MAAM;IACb,SAAS,GAAG,KAAK,CAAA;IACjB,QAAQ,EAAE,CAAA;AACZ,CAAC;AAED,SAAS,QAAQ;IACf,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,WAAW,EAAE,EAAE,CAAA;QACf,WAAW,GAAG,SAAS,CAAA;QACvB,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;YAClD,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YAChD,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC;QACD,OAAM;IACR,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACjD,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC/C,SAAS,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,IAAI,WAAW,IAAI,SAAS;QAAE,OAAM;IACpC,WAAW,GAAG,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;QACnC,WAAW,GAAG,SAAS,CAAA;QACvB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC,GAAG,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;QAC5B,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,+FAA+F;QAC/F,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACjE,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpE,KAAK,MAAM,OAAO,IAAI,UAAU;YAAE,OAAO,EAAE,CAAA;QAC3C,QAAQ,EAAE,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,QAAkB,EAAE,KAAa,EAAE,IAAY;IAC9D,IAAI,CAAC;QACH,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2FAA2F;QAC3F,KAAK,CAAC,KAAK,CACT,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC9F,KAAK,CAAC,UAAU,CAAC,KAAK,EACtB,KAAK,CAAC,WAAW,CAAC,KAAK,CACxB,CAAA;IACH,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"value-observers.js","sourceRoot":"","sources":["../src/value-observers.ts"],"names":[],"mappings":"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"}
|