@doubao-apps/taro-runtime 0.0.18 → 0.0.19
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/dist/api/base/index.d.ts +12 -0
- package/dist/api/base/index.js +13 -1
- package/dist/api/create-selector-query/index.d.ts +3 -0
- package/dist/api/create-selector-query/index.js +577 -0
- package/dist/api/index.d.ts +7 -3
- package/dist/api/index.js +7 -3
- package/dist/api/location/index.d.ts +10 -0
- package/dist/api/location/index.js +77 -0
- package/dist/api/map/index.js +28 -30
- package/dist/api/request/index.js +8 -18
- package/dist/api/router/index.d.ts +4 -0
- package/dist/api/router/index.js +4 -0
- package/dist/api/router/navigate-back.d.ts +5 -0
- package/dist/api/router/navigate-back.js +20 -0
- package/dist/api/{navigate/index.d.ts → router/navigate-to.d.ts} +2 -2
- package/dist/api/{navigate/index.js → router/navigate-to.js} +7 -7
- package/dist/api/router/redirect-to.d.ts +5 -0
- package/dist/api/router/redirect-to.js +22 -0
- package/dist/api/show-toast/index.d.ts +6 -0
- package/dist/api/show-toast/index.js +39 -0
- package/dist/api/storage/index.d.ts +16 -0
- package/dist/api/storage/index.js +55 -0
- package/dist/api/system/index.d.ts +12 -0
- package/dist/api/system/index.js +40 -10
- package/dist/api/utils.d.ts +21 -0
- package/dist/api/utils.js +65 -0
- package/dist/components/Image/index.d.ts +2 -1
- package/dist/components/Image/index.jsx +3 -2
- package/dist/components/Input/index.d.ts +3 -5
- package/dist/components/Input/index.jsx +50 -3
- package/dist/components/Input/map.d.ts +50 -0
- package/dist/components/Input/map.js +226 -0
- package/dist/components/Map/bridge.d.ts +32 -4
- package/dist/components/Map/bridge.js +224 -13
- package/dist/components/Map/index.jsx +78 -58
- package/dist/components/Map/mapping.d.ts +71 -3
- package/dist/components/Map/mapping.js +0 -15
- package/dist/components/PickerView/index.d.ts +8 -0
- package/dist/components/PickerView/index.jsx +47 -0
- package/dist/components/PickerView/map.d.ts +36 -0
- package/dist/components/PickerView/map.js +29 -0
- package/dist/components/Radio/index.d.ts +5 -0
- package/dist/components/Radio/index.jsx +82 -0
- package/dist/components/Radio/map.d.ts +38 -0
- package/dist/components/Radio/map.js +109 -0
- package/dist/components/Radio/shared.d.ts +7 -0
- package/dist/components/Radio/shared.js +9 -0
- package/dist/components/RadioGroup/context.d.ts +11 -0
- package/dist/components/RadioGroup/context.js +3 -0
- package/dist/components/RadioGroup/index.d.ts +3 -0
- package/dist/components/RadioGroup/index.jsx +80 -0
- package/dist/components/RadioGroup/map.d.ts +44 -0
- package/dist/components/RadioGroup/map.js +109 -0
- package/dist/components/WebView/index.d.ts +3 -0
- package/dist/components/WebView/index.jsx +24 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +4 -0
- package/dist/exports/app-core.d.ts +1 -1
- package/dist/exports/app-core.js +1 -1
- package/dist/exports/view-core.d.ts +1 -1
- package/dist/exports/view-core.js +1 -1
- package/dist/internal/map-context/index.d.ts +7 -1
- package/package.json +1 -1
package/dist/api/base/index.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
export declare function getEnv(): TaroGeneral.ENV_TYPE | 'DOUBAO';
|
|
2
2
|
export declare const ENV_TYPE: {
|
|
3
3
|
DOUBAO: string;
|
|
4
|
+
WEAPP: string;
|
|
5
|
+
SWAN: string;
|
|
6
|
+
ALIPAY: string;
|
|
7
|
+
TT: string;
|
|
8
|
+
QQ: string;
|
|
9
|
+
JD: string;
|
|
10
|
+
WEB: string;
|
|
11
|
+
RN: string;
|
|
12
|
+
HARMONY: string;
|
|
13
|
+
QUICKAPP: string;
|
|
14
|
+
HARMONYHYBRID: string;
|
|
15
|
+
ASCF: string;
|
|
4
16
|
};
|
|
5
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/base/index.js
CHANGED
|
@@ -2,6 +2,18 @@ export function getEnv() {
|
|
|
2
2
|
return 'DOUBAO';
|
|
3
3
|
}
|
|
4
4
|
export const ENV_TYPE = {
|
|
5
|
-
DOUBAO: 'DOUBAO'
|
|
5
|
+
DOUBAO: 'DOUBAO',
|
|
6
|
+
WEAPP: 'WEAPP',
|
|
7
|
+
SWAN: 'SWAN',
|
|
8
|
+
ALIPAY: 'ALIPAY',
|
|
9
|
+
TT: 'TT',
|
|
10
|
+
QQ: 'QQ',
|
|
11
|
+
JD: 'JD',
|
|
12
|
+
WEB: 'WEB',
|
|
13
|
+
RN: 'RN',
|
|
14
|
+
HARMONY: 'HARMONY',
|
|
15
|
+
QUICKAPP: 'QUICKAPP',
|
|
16
|
+
HARMONYHYBRID: 'HARMONYHYBRID',
|
|
17
|
+
ASCF: 'ASCF'
|
|
6
18
|
};
|
|
7
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,577 @@
|
|
|
1
|
+
import { getWindowInfo } from '../system/index.js';
|
|
2
|
+
import { warnUnsupported } from '../../utils/warn-unsupported.js';
|
|
3
|
+
const UNSUPPORTED_IN = 'createSelectorQuery.in(component)';
|
|
4
|
+
const UNSUPPORTED_CONTEXT = 'createSelectorQuery.context()';
|
|
5
|
+
const UNSUPPORTED_NODE = 'createSelectorQuery.node()';
|
|
6
|
+
const UNSUPPORTED_FIELDS_COMPUTED_STYLE = 'createSelectorQuery.fields.computedStyle';
|
|
7
|
+
const UNSUPPORTED_FIELDS_PROPERTIES = 'createSelectorQuery.fields.properties';
|
|
8
|
+
const UNSUPPORTED_FIELDS_MARK = 'createSelectorQuery.fields.mark';
|
|
9
|
+
const UNSUPPORTED_FIELDS_CONTEXT = 'createSelectorQuery.fields.context';
|
|
10
|
+
const UNSUPPORTED_FIELDS_NODE = 'createSelectorQuery.fields.node';
|
|
11
|
+
const UNSUPPORTED_VIEWPORT_SCROLL_OFFSET = 'createSelectorQuery.selectViewport().scrollOffset';
|
|
12
|
+
const UNSUPPORTED_SCROLL_OFFSET = 'createSelectorQuery.scrollOffset (node is not a supported scroll container)';
|
|
13
|
+
class SelectorQueryAdapter {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.tasks = [];
|
|
16
|
+
}
|
|
17
|
+
select(selector) {
|
|
18
|
+
return new NodesRefAdapter(this, { kind: 'single', selector });
|
|
19
|
+
}
|
|
20
|
+
selectAll(selector) {
|
|
21
|
+
return new NodesRefAdapter(this, { kind: 'multi', selector });
|
|
22
|
+
}
|
|
23
|
+
selectViewport() {
|
|
24
|
+
return new NodesRefAdapter(this, { kind: 'viewport' });
|
|
25
|
+
}
|
|
26
|
+
in(_component) {
|
|
27
|
+
warnUnsupported(UNSUPPORTED_IN);
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
pushTask(task) {
|
|
31
|
+
this.tasks.push(task);
|
|
32
|
+
}
|
|
33
|
+
exec(callback) {
|
|
34
|
+
const pending = this.tasks.splice(0, this.tasks.length);
|
|
35
|
+
void (async () => {
|
|
36
|
+
const results = [];
|
|
37
|
+
for (const task of pending) {
|
|
38
|
+
const result = await task.run();
|
|
39
|
+
task.callback?.(result);
|
|
40
|
+
results.push(result);
|
|
41
|
+
}
|
|
42
|
+
callback?.(results);
|
|
43
|
+
})();
|
|
44
|
+
// Taro typings declare a NodesRef return value, but exec semantics are fire-and-forget.
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
class NodesRefAdapter {
|
|
49
|
+
constructor(query, target) {
|
|
50
|
+
this.query = query;
|
|
51
|
+
this.target = target;
|
|
52
|
+
}
|
|
53
|
+
boundingClientRect(callback) {
|
|
54
|
+
console.log('boundingClientRect', this.target);
|
|
55
|
+
this.query.pushTask({
|
|
56
|
+
run: () => resolveBoundingClientRect(this.target),
|
|
57
|
+
callback: callback
|
|
58
|
+
});
|
|
59
|
+
return this.query;
|
|
60
|
+
}
|
|
61
|
+
fields(fields, callback) {
|
|
62
|
+
this.query.pushTask({
|
|
63
|
+
run: () => resolveFields(this.target, fields ?? {}),
|
|
64
|
+
callback: callback
|
|
65
|
+
});
|
|
66
|
+
return this.query;
|
|
67
|
+
}
|
|
68
|
+
scrollOffset(callback) {
|
|
69
|
+
this.query.pushTask({
|
|
70
|
+
run: () => resolveScrollOffset(this.target),
|
|
71
|
+
callback: callback
|
|
72
|
+
});
|
|
73
|
+
return this.query;
|
|
74
|
+
}
|
|
75
|
+
context(callback) {
|
|
76
|
+
this.query.pushTask({
|
|
77
|
+
run: async () => resolveUnsupportedOperation(this.target, UNSUPPORTED_CONTEXT),
|
|
78
|
+
callback: callback
|
|
79
|
+
});
|
|
80
|
+
return this.query;
|
|
81
|
+
}
|
|
82
|
+
node(callback) {
|
|
83
|
+
this.query.pushTask({
|
|
84
|
+
run: async () => resolveUnsupportedOperation(this.target, UNSUPPORTED_NODE),
|
|
85
|
+
callback: callback
|
|
86
|
+
});
|
|
87
|
+
return this.query;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function getLynxRoot() {
|
|
91
|
+
return lynx;
|
|
92
|
+
}
|
|
93
|
+
async function resolveBoundingClientRect(target) {
|
|
94
|
+
if (target.kind === 'viewport') {
|
|
95
|
+
const rect = getViewportRect();
|
|
96
|
+
return createRectPayload(rect, '', {});
|
|
97
|
+
}
|
|
98
|
+
if (target.kind === 'single') {
|
|
99
|
+
const invokeResult = await runSingleInvoke(target.selector, 'boundingClientRect');
|
|
100
|
+
console.log('invokeResult', invokeResult);
|
|
101
|
+
if (invokeResult.selectorUnsupported) {
|
|
102
|
+
warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
if (!invokeResult.data) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const fieldsResult = await runSingleFields(target.selector, { id: true, dataset: true });
|
|
109
|
+
if (fieldsResult.selectorUnsupported) {
|
|
110
|
+
warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
|
|
111
|
+
}
|
|
112
|
+
const id = fieldsResult.selectorUnsupported ? '' : toStringOrEmpty(fieldsResult.data?.id);
|
|
113
|
+
const dataset = fieldsResult.selectorUnsupported ? {} : toRecord(fieldsResult.data?.dataset);
|
|
114
|
+
return createRectPayload(invokeResult.data, id, dataset);
|
|
115
|
+
}
|
|
116
|
+
const fieldsResult = await runMultiFields(target.selector, { id: true, dataset: true, query: true });
|
|
117
|
+
if (fieldsResult.selectorUnsupported) {
|
|
118
|
+
warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
if (fieldsResult.data.length === 0) {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
const rectResults = await Promise.all(fieldsResult.data.map(async (item) => {
|
|
125
|
+
const query = item.query;
|
|
126
|
+
const invokeResult = await runInvokeFromQueryRoot(query, 'boundingClientRect');
|
|
127
|
+
if (!invokeResult.data) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
return createRectPayload(invokeResult.data, toStringOrEmpty(item.id), toRecord(item.dataset));
|
|
131
|
+
}));
|
|
132
|
+
return rectResults.filter((item) => item !== null);
|
|
133
|
+
}
|
|
134
|
+
async function resolveFields(target, fields) {
|
|
135
|
+
const hasUnsupportedFields = markUnsupportedFields(fields);
|
|
136
|
+
const wantsId = fields.id === true;
|
|
137
|
+
const wantsDataset = fields.dataset === true;
|
|
138
|
+
const wantsRect = fields.rect === true;
|
|
139
|
+
const wantsSize = fields.size === true;
|
|
140
|
+
const wantsScrollOffset = fields.scrollOffset === true;
|
|
141
|
+
const hasSupportedFields = wantsId || wantsDataset || wantsRect || wantsSize || wantsScrollOffset;
|
|
142
|
+
if (!hasSupportedFields) {
|
|
143
|
+
if (hasUnsupportedFields) {
|
|
144
|
+
return getEmptyResult(target);
|
|
145
|
+
}
|
|
146
|
+
return getEmptyResult(target);
|
|
147
|
+
}
|
|
148
|
+
if (target.kind === 'viewport') {
|
|
149
|
+
return resolveViewportFields(fields);
|
|
150
|
+
}
|
|
151
|
+
if (target.kind === 'single') {
|
|
152
|
+
const output = {};
|
|
153
|
+
const [baseResult, rectResult, scrollResult] = await Promise.all([
|
|
154
|
+
wantsId || wantsDataset
|
|
155
|
+
? runSingleFields(target.selector, { id: true, dataset: true })
|
|
156
|
+
: Promise.resolve(null),
|
|
157
|
+
wantsRect || wantsSize ? runSingleInvoke(target.selector, 'boundingClientRect') : Promise.resolve(null),
|
|
158
|
+
wantsScrollOffset ? runSingleInvoke(target.selector, 'getScrollInfo') : Promise.resolve(null)
|
|
159
|
+
]);
|
|
160
|
+
if (baseResult?.selectorUnsupported ||
|
|
161
|
+
rectResult?.selectorUnsupported ||
|
|
162
|
+
scrollResult?.selectorUnsupported) {
|
|
163
|
+
warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
if (wantsId) {
|
|
167
|
+
output.id = toStringOrEmpty(baseResult?.data?.id);
|
|
168
|
+
}
|
|
169
|
+
if (wantsDataset) {
|
|
170
|
+
output.dataset = toRecord(baseResult?.data?.dataset);
|
|
171
|
+
}
|
|
172
|
+
if ((wantsRect || wantsSize) && rectResult?.data) {
|
|
173
|
+
const rect = createRectPayload(rectResult.data, toStringOrEmpty(baseResult?.data?.id), toRecord(baseResult?.data?.dataset));
|
|
174
|
+
if (wantsRect) {
|
|
175
|
+
output.left = rect.left;
|
|
176
|
+
output.right = rect.right;
|
|
177
|
+
output.top = rect.top;
|
|
178
|
+
output.bottom = rect.bottom;
|
|
179
|
+
}
|
|
180
|
+
if (wantsSize) {
|
|
181
|
+
output.width = rect.width;
|
|
182
|
+
output.height = rect.height;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (wantsScrollOffset) {
|
|
186
|
+
if (scrollResult?.data) {
|
|
187
|
+
output.scrollLeft = toNumber(scrollResult.data.scrollLeft);
|
|
188
|
+
output.scrollTop = toNumber(scrollResult.data.scrollTop);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
warnUnsupported(UNSUPPORTED_SCROLL_OFFSET);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return Object.keys(output).length > 0 ? output : null;
|
|
195
|
+
}
|
|
196
|
+
const needsQuery = wantsRect || wantsSize || wantsScrollOffset;
|
|
197
|
+
const baseResult = await runMultiFields(target.selector, {
|
|
198
|
+
id: wantsId || wantsDataset || needsQuery,
|
|
199
|
+
dataset: wantsId || wantsDataset || needsQuery,
|
|
200
|
+
query: needsQuery
|
|
201
|
+
});
|
|
202
|
+
if (baseResult.selectorUnsupported) {
|
|
203
|
+
warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
if (baseResult.data.length === 0) {
|
|
207
|
+
return [];
|
|
208
|
+
}
|
|
209
|
+
let hasScrollOffsetMiss = false;
|
|
210
|
+
const mapped = await Promise.all(baseResult.data.map(async (item) => {
|
|
211
|
+
const output = {};
|
|
212
|
+
if (wantsId) {
|
|
213
|
+
output.id = toStringOrEmpty(item.id);
|
|
214
|
+
}
|
|
215
|
+
if (wantsDataset) {
|
|
216
|
+
output.dataset = toRecord(item.dataset);
|
|
217
|
+
}
|
|
218
|
+
if (wantsRect || wantsSize) {
|
|
219
|
+
const rectResult = await runInvokeFromQueryRoot(item.query, 'boundingClientRect');
|
|
220
|
+
if (rectResult.data) {
|
|
221
|
+
const rect = createRectPayload(rectResult.data, toStringOrEmpty(item.id), toRecord(item.dataset));
|
|
222
|
+
if (wantsRect) {
|
|
223
|
+
output.left = rect.left;
|
|
224
|
+
output.right = rect.right;
|
|
225
|
+
output.top = rect.top;
|
|
226
|
+
output.bottom = rect.bottom;
|
|
227
|
+
}
|
|
228
|
+
if (wantsSize) {
|
|
229
|
+
output.width = rect.width;
|
|
230
|
+
output.height = rect.height;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (wantsScrollOffset) {
|
|
235
|
+
const scrollResult = await runInvokeFromQueryRoot(item.query, 'getScrollInfo');
|
|
236
|
+
if (scrollResult.data) {
|
|
237
|
+
output.scrollLeft = toNumber(scrollResult.data.scrollLeft);
|
|
238
|
+
output.scrollTop = toNumber(scrollResult.data.scrollTop);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
hasScrollOffsetMiss = true;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return output;
|
|
245
|
+
}));
|
|
246
|
+
if (wantsScrollOffset && hasScrollOffsetMiss) {
|
|
247
|
+
warnUnsupported(UNSUPPORTED_SCROLL_OFFSET);
|
|
248
|
+
}
|
|
249
|
+
return mapped;
|
|
250
|
+
}
|
|
251
|
+
async function resolveScrollOffset(target) {
|
|
252
|
+
if (target.kind === 'viewport') {
|
|
253
|
+
warnUnsupported(UNSUPPORTED_VIEWPORT_SCROLL_OFFSET);
|
|
254
|
+
return {
|
|
255
|
+
id: '',
|
|
256
|
+
dataset: {},
|
|
257
|
+
scrollLeft: 0,
|
|
258
|
+
scrollTop: 0
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
if (target.kind === 'single') {
|
|
262
|
+
const [fieldsResult, invokeResult] = await Promise.all([
|
|
263
|
+
runSingleFields(target.selector, { id: true, dataset: true }),
|
|
264
|
+
runSingleInvoke(target.selector, 'getScrollInfo')
|
|
265
|
+
]);
|
|
266
|
+
if (fieldsResult.selectorUnsupported || invokeResult.selectorUnsupported) {
|
|
267
|
+
warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
if (!invokeResult.data) {
|
|
271
|
+
warnUnsupported(UNSUPPORTED_SCROLL_OFFSET);
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
return {
|
|
275
|
+
id: toStringOrEmpty(fieldsResult.data?.id),
|
|
276
|
+
dataset: toRecord(fieldsResult.data?.dataset),
|
|
277
|
+
scrollLeft: toNumber(invokeResult.data.scrollLeft),
|
|
278
|
+
scrollTop: toNumber(invokeResult.data.scrollTop)
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
const fieldsResult = await runMultiFields(target.selector, { id: true, dataset: true, query: true });
|
|
282
|
+
if (fieldsResult.selectorUnsupported) {
|
|
283
|
+
warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
|
|
284
|
+
return [];
|
|
285
|
+
}
|
|
286
|
+
if (fieldsResult.data.length === 0) {
|
|
287
|
+
return [];
|
|
288
|
+
}
|
|
289
|
+
let hasMiss = false;
|
|
290
|
+
const results = await Promise.all(fieldsResult.data.map(async (item) => {
|
|
291
|
+
const invokeResult = await runInvokeFromQueryRoot(item.query, 'getScrollInfo');
|
|
292
|
+
if (!invokeResult.data) {
|
|
293
|
+
hasMiss = true;
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
id: toStringOrEmpty(item.id),
|
|
298
|
+
dataset: toRecord(item.dataset),
|
|
299
|
+
scrollLeft: toNumber(invokeResult.data.scrollLeft),
|
|
300
|
+
scrollTop: toNumber(invokeResult.data.scrollTop)
|
|
301
|
+
};
|
|
302
|
+
}));
|
|
303
|
+
if (hasMiss) {
|
|
304
|
+
warnUnsupported(UNSUPPORTED_SCROLL_OFFSET);
|
|
305
|
+
}
|
|
306
|
+
return results.filter((item) => item !== null);
|
|
307
|
+
}
|
|
308
|
+
function resolveUnsupportedOperation(target, feature) {
|
|
309
|
+
warnUnsupported(feature);
|
|
310
|
+
return getEmptyResult(target);
|
|
311
|
+
}
|
|
312
|
+
function resolveViewportFields(fields) {
|
|
313
|
+
const output = {};
|
|
314
|
+
const rect = getViewportRect();
|
|
315
|
+
if (fields.id === true) {
|
|
316
|
+
output.id = '';
|
|
317
|
+
}
|
|
318
|
+
if (fields.dataset === true) {
|
|
319
|
+
output.dataset = {};
|
|
320
|
+
}
|
|
321
|
+
if (fields.rect === true) {
|
|
322
|
+
output.left = rect.left;
|
|
323
|
+
output.right = rect.right;
|
|
324
|
+
output.top = rect.top;
|
|
325
|
+
output.bottom = rect.bottom;
|
|
326
|
+
}
|
|
327
|
+
if (fields.size === true) {
|
|
328
|
+
output.width = rect.width;
|
|
329
|
+
output.height = rect.height;
|
|
330
|
+
}
|
|
331
|
+
if (fields.scrollOffset === true) {
|
|
332
|
+
warnUnsupported(UNSUPPORTED_VIEWPORT_SCROLL_OFFSET);
|
|
333
|
+
output.scrollLeft = 0;
|
|
334
|
+
output.scrollTop = 0;
|
|
335
|
+
if (fields.id !== true) {
|
|
336
|
+
output.id = '';
|
|
337
|
+
}
|
|
338
|
+
if (fields.dataset !== true) {
|
|
339
|
+
output.dataset = {};
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return Object.keys(output).length > 0 ? output : null;
|
|
343
|
+
}
|
|
344
|
+
function markUnsupportedFields(fields) {
|
|
345
|
+
let hasUnsupported = false;
|
|
346
|
+
if (Array.isArray(fields.computedStyle) && fields.computedStyle.length > 0) {
|
|
347
|
+
hasUnsupported = true;
|
|
348
|
+
warnUnsupported(UNSUPPORTED_FIELDS_COMPUTED_STYLE);
|
|
349
|
+
}
|
|
350
|
+
if (Array.isArray(fields.properties) && fields.properties.length > 0) {
|
|
351
|
+
hasUnsupported = true;
|
|
352
|
+
warnUnsupported(UNSUPPORTED_FIELDS_PROPERTIES);
|
|
353
|
+
}
|
|
354
|
+
if (fields.mark === true) {
|
|
355
|
+
hasUnsupported = true;
|
|
356
|
+
warnUnsupported(UNSUPPORTED_FIELDS_MARK);
|
|
357
|
+
}
|
|
358
|
+
if (fields.context === true) {
|
|
359
|
+
hasUnsupported = true;
|
|
360
|
+
warnUnsupported(UNSUPPORTED_FIELDS_CONTEXT);
|
|
361
|
+
}
|
|
362
|
+
if (fields.node === true) {
|
|
363
|
+
hasUnsupported = true;
|
|
364
|
+
warnUnsupported(UNSUPPORTED_FIELDS_NODE);
|
|
365
|
+
}
|
|
366
|
+
return hasUnsupported;
|
|
367
|
+
}
|
|
368
|
+
function getViewportRect() {
|
|
369
|
+
const info = getWindowInfo();
|
|
370
|
+
const width = toNumber(info.windowWidth, toNumber(info.screenWidth));
|
|
371
|
+
const height = toNumber(info.windowHeight, toNumber(info.screenHeight));
|
|
372
|
+
return {
|
|
373
|
+
left: 0,
|
|
374
|
+
top: 0,
|
|
375
|
+
right: width,
|
|
376
|
+
bottom: height,
|
|
377
|
+
width,
|
|
378
|
+
height
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
function createRectPayload(rectLike, id, dataset) {
|
|
382
|
+
const left = toNumber(rectLike.left);
|
|
383
|
+
const top = toNumber(rectLike.top);
|
|
384
|
+
const width = toNumber(rectLike.width);
|
|
385
|
+
const height = toNumber(rectLike.height);
|
|
386
|
+
const right = toNumber(rectLike.right, left + width);
|
|
387
|
+
const bottom = toNumber(rectLike.bottom, top + height);
|
|
388
|
+
return {
|
|
389
|
+
id,
|
|
390
|
+
dataset,
|
|
391
|
+
left,
|
|
392
|
+
right,
|
|
393
|
+
top,
|
|
394
|
+
bottom,
|
|
395
|
+
width,
|
|
396
|
+
height
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
function getEmptyResult(target) {
|
|
400
|
+
return target.kind === 'multi' ? [] : null;
|
|
401
|
+
}
|
|
402
|
+
async function runSingleFields(selector, fields) {
|
|
403
|
+
const lynx = getLynxRoot();
|
|
404
|
+
if (!lynx) {
|
|
405
|
+
return { data: null, selectorUnsupported: false };
|
|
406
|
+
}
|
|
407
|
+
return new Promise((resolve) => {
|
|
408
|
+
try {
|
|
409
|
+
lynx
|
|
410
|
+
.createSelectorQuery()
|
|
411
|
+
.select(selector)
|
|
412
|
+
.fields(fields, (data, status) => {
|
|
413
|
+
resolve({
|
|
414
|
+
data: data ?? null,
|
|
415
|
+
selectorUnsupported: isSelectorUnsupported(status)
|
|
416
|
+
});
|
|
417
|
+
})
|
|
418
|
+
.exec();
|
|
419
|
+
}
|
|
420
|
+
catch (error) {
|
|
421
|
+
resolve({
|
|
422
|
+
data: null,
|
|
423
|
+
selectorUnsupported: isSelectorUnsupported(error)
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
async function runMultiFields(selector, fields) {
|
|
429
|
+
const lynx = getLynxRoot();
|
|
430
|
+
if (!lynx) {
|
|
431
|
+
return { data: [], selectorUnsupported: false };
|
|
432
|
+
}
|
|
433
|
+
return new Promise((resolve) => {
|
|
434
|
+
try {
|
|
435
|
+
lynx
|
|
436
|
+
.createSelectorQuery()
|
|
437
|
+
.selectAll(selector)
|
|
438
|
+
.fields(fields, (data, status) => {
|
|
439
|
+
resolve({
|
|
440
|
+
data: Array.isArray(data) ? data : [],
|
|
441
|
+
selectorUnsupported: isSelectorUnsupported(status)
|
|
442
|
+
});
|
|
443
|
+
})
|
|
444
|
+
.exec();
|
|
445
|
+
}
|
|
446
|
+
catch (error) {
|
|
447
|
+
resolve({
|
|
448
|
+
data: [],
|
|
449
|
+
selectorUnsupported: isSelectorUnsupported(error)
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
async function runSingleInvoke(selector, method, params) {
|
|
455
|
+
const lynx = getLynxRoot();
|
|
456
|
+
if (!lynx) {
|
|
457
|
+
return { data: null, selectorUnsupported: false };
|
|
458
|
+
}
|
|
459
|
+
return new Promise((resolve) => {
|
|
460
|
+
try {
|
|
461
|
+
lynx
|
|
462
|
+
.createSelectorQuery()
|
|
463
|
+
.select(selector)
|
|
464
|
+
.invoke({
|
|
465
|
+
method,
|
|
466
|
+
params,
|
|
467
|
+
success: (res) => {
|
|
468
|
+
resolve({
|
|
469
|
+
data: toRecordOrNull(res),
|
|
470
|
+
selectorUnsupported: false
|
|
471
|
+
});
|
|
472
|
+
},
|
|
473
|
+
fail: (error) => {
|
|
474
|
+
resolve({
|
|
475
|
+
data: null,
|
|
476
|
+
selectorUnsupported: isSelectorUnsupported(error)
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
})
|
|
480
|
+
.exec();
|
|
481
|
+
}
|
|
482
|
+
catch (error) {
|
|
483
|
+
resolve({
|
|
484
|
+
data: null,
|
|
485
|
+
selectorUnsupported: isSelectorUnsupported(error)
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
async function runInvokeFromQueryRoot(query, method, params) {
|
|
491
|
+
if (!query) {
|
|
492
|
+
return { data: null, selectorUnsupported: false };
|
|
493
|
+
}
|
|
494
|
+
return new Promise((resolve) => {
|
|
495
|
+
try {
|
|
496
|
+
query
|
|
497
|
+
.selectRoot()
|
|
498
|
+
.invoke({
|
|
499
|
+
method,
|
|
500
|
+
params,
|
|
501
|
+
success: (res) => {
|
|
502
|
+
resolve({
|
|
503
|
+
data: toRecordOrNull(res),
|
|
504
|
+
selectorUnsupported: false
|
|
505
|
+
});
|
|
506
|
+
},
|
|
507
|
+
fail: (error) => {
|
|
508
|
+
resolve({
|
|
509
|
+
data: null,
|
|
510
|
+
selectorUnsupported: isSelectorUnsupported(error)
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
})
|
|
514
|
+
.exec();
|
|
515
|
+
}
|
|
516
|
+
catch (error) {
|
|
517
|
+
resolve({
|
|
518
|
+
data: null,
|
|
519
|
+
selectorUnsupported: isSelectorUnsupported(error)
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
function isSelectorUnsupported(source) {
|
|
525
|
+
const code = extractCode(source);
|
|
526
|
+
if (code === 5) {
|
|
527
|
+
return true;
|
|
528
|
+
}
|
|
529
|
+
const text = extractMessage(source);
|
|
530
|
+
if (!text) {
|
|
531
|
+
return false;
|
|
532
|
+
}
|
|
533
|
+
return /selector/i.test(text) && /(not\s+support|unsupported)/i.test(text);
|
|
534
|
+
}
|
|
535
|
+
function extractCode(source) {
|
|
536
|
+
if (!source || typeof source !== 'object') {
|
|
537
|
+
return null;
|
|
538
|
+
}
|
|
539
|
+
const code = source.code;
|
|
540
|
+
if (typeof code === 'number' && Number.isFinite(code)) {
|
|
541
|
+
return code;
|
|
542
|
+
}
|
|
543
|
+
return null;
|
|
544
|
+
}
|
|
545
|
+
function extractMessage(source) {
|
|
546
|
+
if (typeof source === 'string') {
|
|
547
|
+
return source;
|
|
548
|
+
}
|
|
549
|
+
if (!source || typeof source !== 'object') {
|
|
550
|
+
return '';
|
|
551
|
+
}
|
|
552
|
+
const data = source.data;
|
|
553
|
+
if (typeof data === 'string') {
|
|
554
|
+
return data;
|
|
555
|
+
}
|
|
556
|
+
const message = source.message;
|
|
557
|
+
if (typeof message === 'string') {
|
|
558
|
+
return message;
|
|
559
|
+
}
|
|
560
|
+
return '';
|
|
561
|
+
}
|
|
562
|
+
function toNumber(value, fallback = 0) {
|
|
563
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
|
|
564
|
+
}
|
|
565
|
+
function toStringOrEmpty(value) {
|
|
566
|
+
return typeof value === 'string' ? value : '';
|
|
567
|
+
}
|
|
568
|
+
function toRecord(value) {
|
|
569
|
+
return value && typeof value === 'object' ? value : {};
|
|
570
|
+
}
|
|
571
|
+
function toRecordOrNull(value) {
|
|
572
|
+
return value && typeof value === 'object' ? value : null;
|
|
573
|
+
}
|
|
574
|
+
export function createSelectorQuery() {
|
|
575
|
+
return new SelectorQueryAdapter();
|
|
576
|
+
}
|
|
577
|
+
//# sourceMappingURL=index.js.map
|
package/dist/api/index.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
export { getEnv } from './base/index.js';
|
|
1
|
+
export { getEnv, ENV_TYPE } from './base/index.js';
|
|
2
2
|
export { request } from './request/index.js';
|
|
3
|
-
export { navigateTo } from './
|
|
4
|
-
export {
|
|
3
|
+
export { navigateBack, navigateTo, redirectTo } from './router/index.js';
|
|
4
|
+
export { setStorage, setStorageSync, getStorage, getStorageSync, removeStorage, removeStorageSync, clearStorage, clearStorageSync, getStorageInfo, getStorageInfoSync } from './storage/index.js';
|
|
5
|
+
export { getSystemSetting, getAppAuthorizeSetting, getDeviceInfo, getAppBaseInfo, getWindowInfo, makePhoneCall, getNetworkType } from './system/index.js';
|
|
6
|
+
export { getLocation } from './location/index.js';
|
|
7
|
+
export { showToast } from './show-toast/index.js';
|
|
5
8
|
export { createMapContext } from './map/index.js';
|
|
9
|
+
export { createSelectorQuery } from './create-selector-query/index.js';
|
|
6
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
export { getEnv } from './base/index.js';
|
|
1
|
+
export { getEnv, ENV_TYPE } from './base/index.js';
|
|
2
2
|
export { request } from './request/index.js';
|
|
3
|
-
export { navigateTo } from './
|
|
4
|
-
export {
|
|
3
|
+
export { navigateBack, navigateTo, redirectTo } from './router/index.js';
|
|
4
|
+
export { setStorage, setStorageSync, getStorage, getStorageSync, removeStorage, removeStorageSync, clearStorage, clearStorageSync, getStorageInfo, getStorageInfoSync } from './storage/index.js';
|
|
5
|
+
export { getSystemSetting, getAppAuthorizeSetting, getDeviceInfo, getAppBaseInfo, getWindowInfo, makePhoneCall, getNetworkType } from './system/index.js';
|
|
6
|
+
export { getLocation } from './location/index.js';
|
|
7
|
+
export { showToast } from './show-toast/index.js';
|
|
5
8
|
export { createMapContext } from './map/index.js';
|
|
9
|
+
export { createSelectorQuery } from './create-selector-query/index.js';
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { GetLocationParams } from '@byted-doubao-apps/framework/api';
|
|
2
|
+
import type { getLocation as taroGetLocation } from '@tarojs/taro';
|
|
3
|
+
type TaroGetLocationOption = Parameters<typeof taroGetLocation>[0];
|
|
4
|
+
type TaroGetLocationResult = Awaited<ReturnType<typeof taroGetLocation>>;
|
|
5
|
+
type RuntimeGetLocationOption = TaroGetLocationOption & Partial<Pick<GetLocationParams, 'source' | 'mode' | 'timeoutMs' | 'maxCacheMs'>> & {
|
|
6
|
+
cacheTimeout?: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function getLocation(option?: RuntimeGetLocationOption): Promise<TaroGetLocationResult>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|