59 | type Property = Component.Property
60 | type Method = Component.Method
61 |
62 | type DefinitionFilter = Component.DefinitionFilter
63 | type Lifetimes = Component.Lifetimes
64 |
65 | type OtherOption = Omit
66 | }
67 | /** 注册一个 `behavior`,接受一个 `Object` 类型的参数。*/
68 | declare let Behavior: WechatMiniprogram.Behavior.Constructor
69 |
--------------------------------------------------------------------------------
/typings/types/wx/lib.wx.cloud.d.ts:
--------------------------------------------------------------------------------
1 | /*! *****************************************************************************
2 | Copyright (c) 2021 Tencent, Inc. All rights reserved.
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | this software and associated documentation files (the "Software"), to deal in
6 | the Software without restriction, including without limitation the rights to
7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
8 | of the Software, and to permit persons to whom the Software is furnished to do
9 | so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all
12 | copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 | SOFTWARE.
21 | ***************************************************************************** */
22 |
23 | interface IAPIError {
24 | errMsg: string
25 | }
26 |
27 | interface IAPIParam {
28 | config?: ICloudConfig
29 | success?: (res: T) => void
30 | fail?: (err: IAPIError) => void
31 | complete?: (val: T | IAPIError) => void
32 | }
33 |
34 | interface IAPISuccessParam {
35 | errMsg: string
36 | }
37 |
38 | type IAPICompleteParam = IAPISuccessParam | IAPIError
39 |
40 | type IAPIFunction> = (param?: P) => Promise
41 |
42 | interface IInitCloudConfig {
43 | env?:
44 | | string
45 | | {
46 | database?: string
47 | functions?: string
48 | storage?: string
49 | }
50 | traceUser?: boolean
51 | }
52 |
53 | interface ICloudConfig {
54 | env?: string
55 | traceUser?: boolean
56 | }
57 |
58 | interface IICloudAPI {
59 | init: (config?: IInitCloudConfig) => void
60 | [api: string]: AnyFunction | IAPIFunction
61 | }
62 |
63 | interface ICloudService {
64 | name: string
65 |
66 | getAPIs: () => { [name: string]: IAPIFunction }
67 | }
68 |
69 | interface ICloudServices {
70 | [serviceName: string]: ICloudService
71 | }
72 |
73 | interface ICloudMetaData {
74 | session_id: string
75 | }
76 |
77 | declare class InternalSymbol {}
78 |
79 | interface AnyObject {
80 | [x: string]: any
81 | }
82 |
83 | type AnyArray = any[]
84 |
85 | type AnyFunction = (...args: any[]) => any
86 |
87 | /**
88 | * extend wx with cloud
89 | */
90 | interface WxCloud {
91 | init: (config?: ICloudConfig) => void
92 |
93 | callFunction(param: OQ): void
94 | callFunction(
95 | param: RQ
96 | ): Promise
97 |
98 | uploadFile(param: OQ): WechatMiniprogram.UploadTask
99 | uploadFile(
100 | param: RQ
101 | ): Promise
102 |
103 | downloadFile(
104 | param: OQ
105 | ): WechatMiniprogram.DownloadTask
106 | downloadFile(
107 | param: RQ
108 | ): Promise
109 |
110 | getTempFileURL(param: OQ): void
111 | getTempFileURL(
112 | param: RQ
113 | ): Promise
114 |
115 | deleteFile(param: OQ): void
116 | deleteFile(
117 | param: RQ
118 | ): Promise
119 |
120 | database: (config?: ICloudConfig) => DB.Database
121 |
122 | CloudID: ICloud.ICloudIDConstructor
123 | CDN: ICloud.ICDNConstructor
124 | }
125 |
126 | declare namespace ICloud {
127 | interface ICloudAPIParam extends IAPIParam {
128 | config?: ICloudConfig
129 | }
130 |
131 | // === API: callFunction ===
132 | type CallFunctionData = AnyObject
133 |
134 | interface CallFunctionResult extends IAPISuccessParam {
135 | result: AnyObject | string | undefined
136 | }
137 |
138 | interface CallFunctionParam extends ICloudAPIParam {
139 | name: string
140 | data?: CallFunctionData
141 | slow?: boolean
142 | }
143 | // === end ===
144 |
145 | // === API: uploadFile ===
146 | interface UploadFileResult extends IAPISuccessParam {
147 | fileID: string
148 | statusCode: number
149 | }
150 |
151 | interface UploadFileParam extends ICloudAPIParam {
152 | cloudPath: string
153 | filePath: string
154 | header?: AnyObject
155 | }
156 | // === end ===
157 |
158 | // === API: downloadFile ===
159 | interface DownloadFileResult extends IAPISuccessParam {
160 | tempFilePath: string
161 | statusCode: number
162 | }
163 |
164 | interface DownloadFileParam extends ICloudAPIParam {
165 | fileID: string
166 | cloudPath?: string
167 | }
168 | // === end ===
169 |
170 | // === API: getTempFileURL ===
171 | interface GetTempFileURLResult extends IAPISuccessParam {
172 | fileList: GetTempFileURLResultItem[]
173 | }
174 |
175 | interface GetTempFileURLResultItem {
176 | fileID: string
177 | tempFileURL: string
178 | maxAge: number
179 | status: number
180 | errMsg: string
181 | }
182 |
183 | interface GetTempFileURLParam extends ICloudAPIParam {
184 | fileList: string[]
185 | }
186 | // === end ===
187 |
188 | // === API: deleteFile ===
189 | interface DeleteFileResult extends IAPISuccessParam {
190 | fileList: DeleteFileResultItem[]
191 | }
192 |
193 | interface DeleteFileResultItem {
194 | fileID: string
195 | status: number
196 | errMsg: string
197 | }
198 |
199 | interface DeleteFileParam extends ICloudAPIParam {
200 | fileList: string[]
201 | }
202 | // === end ===
203 |
204 | // === API: CloudID ===
205 | abstract class CloudID {
206 | constructor(cloudID: string)
207 | }
208 |
209 | interface ICloudIDConstructor {
210 | new (cloudId: string): CloudID
211 | (cloudId: string): CloudID
212 | }
213 | // === end ===
214 |
215 | // === API: CDN ===
216 | abstract class CDN {
217 | target: string | ArrayBuffer | ICDNFilePathSpec
218 | constructor(target: string | ArrayBuffer | ICDNFilePathSpec)
219 | }
220 |
221 | interface ICDNFilePathSpec {
222 | type: 'filePath'
223 | filePath: string
224 | }
225 |
226 | interface ICDNConstructor {
227 | new (options: string | ArrayBuffer | ICDNFilePathSpec): CDN
228 | (options: string | ArrayBuffer | ICDNFilePathSpec): CDN
229 | }
230 | // === end ===
231 | }
232 |
233 | // === Database ===
234 | declare namespace DB {
235 | /**
236 | * The class of all exposed cloud database instances
237 | */
238 | class Database {
239 | readonly config: ICloudConfig
240 | readonly command: DatabaseCommand
241 | readonly Geo: IGeo
242 | readonly serverDate: () => ServerDate
243 | readonly RegExp: IRegExpConstructor
244 |
245 | private constructor()
246 |
247 | collection(collectionName: string): CollectionReference
248 | }
249 |
250 | class CollectionReference extends Query {
251 | readonly collectionName: string
252 |
253 | private constructor(name: string, database: Database)
254 |
255 | doc(docId: string | number): DocumentReference
256 |
257 | add(options: OQ): void
258 | add(options: RQ): Promise
259 | }
260 |
261 | class DocumentReference {
262 | private constructor(docId: string | number, database: Database)
263 |
264 | field(object: Record): this
265 |
266 | get(options: OQ): void
267 | get(options?: RQ): Promise
268 |
269 | set(options: OQ): void
270 | set(options?: RQ): Promise
271 |
272 | update(options: OQ): void
273 | update(
274 | options?: RQ
275 | ): Promise
276 |
277 | remove(options: OQ): void
278 | remove(
279 | options?: RQ
280 | ): Promise
281 |
282 | watch(options: IWatchOptions): RealtimeListener
283 | }
284 |
285 | class RealtimeListener {
286 | // "And Now His Watch Is Ended"
287 | close: () => Promise
288 | }
289 |
290 | class Query {
291 | where(condition: IQueryCondition): Query
292 |
293 | orderBy(fieldPath: string, order: string): Query
294 |
295 | limit(max: number): Query
296 |
297 | skip(offset: number): Query
298 |
299 | field(object: Record): Query
300 |
301 | get(options: OQ): void
302 | get(options?: RQ): Promise
303 |
304 | count(options: OQ): void
305 | count(options?: RQ): Promise
306 |
307 | watch(options: IWatchOptions): RealtimeListener
308 | }
309 |
310 | interface DatabaseCommand {
311 | eq(val: any): DatabaseQueryCommand
312 | neq(val: any): DatabaseQueryCommand
313 | gt(val: any): DatabaseQueryCommand
314 | gte(val: any): DatabaseQueryCommand
315 | lt(val: any): DatabaseQueryCommand
316 | lte(val: any): DatabaseQueryCommand
317 | in(val: any[]): DatabaseQueryCommand
318 | nin(val: any[]): DatabaseQueryCommand
319 |
320 | geoNear(options: IGeoNearCommandOptions): DatabaseQueryCommand
321 | geoWithin(options: IGeoWithinCommandOptions): DatabaseQueryCommand
322 | geoIntersects(
323 | options: IGeoIntersectsCommandOptions
324 | ): DatabaseQueryCommand
325 |
326 | and(
327 | ...expressions: Array
328 | ): DatabaseLogicCommand
329 | or(
330 | ...expressions: Array
331 | ): DatabaseLogicCommand
332 | nor(
333 | ...expressions: Array
334 | ): DatabaseLogicCommand
335 | not(expression: DatabaseLogicCommand): DatabaseLogicCommand
336 |
337 | exists(val: boolean): DatabaseQueryCommand
338 |
339 | mod(divisor: number, remainder: number): DatabaseQueryCommand
340 |
341 | all(val: any[]): DatabaseQueryCommand
342 | elemMatch(val: any): DatabaseQueryCommand
343 | size(val: number): DatabaseQueryCommand
344 |
345 | set(val: any): DatabaseUpdateCommand
346 | remove(): DatabaseUpdateCommand
347 | inc(val: number): DatabaseUpdateCommand
348 | mul(val: number): DatabaseUpdateCommand
349 | min(val: number): DatabaseUpdateCommand
350 | max(val: number): DatabaseUpdateCommand
351 | rename(val: string): DatabaseUpdateCommand
352 | bit(val: number): DatabaseUpdateCommand
353 |
354 | push(...values: any[]): DatabaseUpdateCommand
355 | pop(): DatabaseUpdateCommand
356 | shift(): DatabaseUpdateCommand
357 | unshift(...values: any[]): DatabaseUpdateCommand
358 | addToSet(val: any): DatabaseUpdateCommand
359 | pull(val: any): DatabaseUpdateCommand
360 | pullAll(val: any): DatabaseUpdateCommand
361 |
362 | project: {
363 | slice(val: number | [number, number]): DatabaseProjectionCommand
364 | }
365 |
366 | aggregate: {
367 | __safe_props__?: Set
368 |
369 | abs(val: any): DatabaseAggregateCommand
370 | add(val: any): DatabaseAggregateCommand
371 | addToSet(val: any): DatabaseAggregateCommand
372 | allElementsTrue(val: any): DatabaseAggregateCommand
373 | and(val: any): DatabaseAggregateCommand
374 | anyElementTrue(val: any): DatabaseAggregateCommand
375 | arrayElemAt(val: any): DatabaseAggregateCommand
376 | arrayToObject(val: any): DatabaseAggregateCommand
377 | avg(val: any): DatabaseAggregateCommand
378 | ceil(val: any): DatabaseAggregateCommand
379 | cmp(val: any): DatabaseAggregateCommand
380 | concat(val: any): DatabaseAggregateCommand
381 | concatArrays(val: any): DatabaseAggregateCommand
382 | cond(val: any): DatabaseAggregateCommand
383 | convert(val: any): DatabaseAggregateCommand
384 | dateFromParts(val: any): DatabaseAggregateCommand
385 | dateToParts(val: any): DatabaseAggregateCommand
386 | dateFromString(val: any): DatabaseAggregateCommand
387 | dateToString(val: any): DatabaseAggregateCommand
388 | dayOfMonth(val: any): DatabaseAggregateCommand
389 | dayOfWeek(val: any): DatabaseAggregateCommand
390 | dayOfYear(val: any): DatabaseAggregateCommand
391 | divide(val: any): DatabaseAggregateCommand
392 | eq(val: any): DatabaseAggregateCommand
393 | exp(val: any): DatabaseAggregateCommand
394 | filter(val: any): DatabaseAggregateCommand
395 | first(val: any): DatabaseAggregateCommand
396 | floor(val: any): DatabaseAggregateCommand
397 | gt(val: any): DatabaseAggregateCommand
398 | gte(val: any): DatabaseAggregateCommand
399 | hour(val: any): DatabaseAggregateCommand
400 | ifNull(val: any): DatabaseAggregateCommand
401 | in(val: any): DatabaseAggregateCommand
402 | indexOfArray(val: any): DatabaseAggregateCommand
403 | indexOfBytes(val: any): DatabaseAggregateCommand
404 | indexOfCP(val: any): DatabaseAggregateCommand
405 | isArray(val: any): DatabaseAggregateCommand
406 | isoDayOfWeek(val: any): DatabaseAggregateCommand
407 | isoWeek(val: any): DatabaseAggregateCommand
408 | isoWeekYear(val: any): DatabaseAggregateCommand
409 | last(val: any): DatabaseAggregateCommand
410 | let(val: any): DatabaseAggregateCommand
411 | literal(val: any): DatabaseAggregateCommand
412 | ln(val: any): DatabaseAggregateCommand
413 | log(val: any): DatabaseAggregateCommand
414 | log10(val: any): DatabaseAggregateCommand
415 | lt(val: any): DatabaseAggregateCommand
416 | lte(val: any): DatabaseAggregateCommand
417 | ltrim(val: any): DatabaseAggregateCommand
418 | map(val: any): DatabaseAggregateCommand
419 | max(val: any): DatabaseAggregateCommand
420 | mergeObjects(val: any): DatabaseAggregateCommand
421 | meta(val: any): DatabaseAggregateCommand
422 | min(val: any): DatabaseAggregateCommand
423 | millisecond(val: any): DatabaseAggregateCommand
424 | minute(val: any): DatabaseAggregateCommand
425 | mod(val: any): DatabaseAggregateCommand
426 | month(val: any): DatabaseAggregateCommand
427 | multiply(val: any): DatabaseAggregateCommand
428 | neq(val: any): DatabaseAggregateCommand
429 | not(val: any): DatabaseAggregateCommand
430 | objectToArray(val: any): DatabaseAggregateCommand
431 | or(val: any): DatabaseAggregateCommand
432 | pow(val: any): DatabaseAggregateCommand
433 | push(val: any): DatabaseAggregateCommand
434 | range(val: any): DatabaseAggregateCommand
435 | reduce(val: any): DatabaseAggregateCommand
436 | reverseArray(val: any): DatabaseAggregateCommand
437 | rtrim(val: any): DatabaseAggregateCommand
438 | second(val: any): DatabaseAggregateCommand
439 | setDifference(val: any): DatabaseAggregateCommand
440 | setEquals(val: any): DatabaseAggregateCommand
441 | setIntersection(val: any): DatabaseAggregateCommand
442 | setIsSubset(val: any): DatabaseAggregateCommand
443 | setUnion(val: any): DatabaseAggregateCommand
444 | size(val: any): DatabaseAggregateCommand
445 | slice(val: any): DatabaseAggregateCommand
446 | split(val: any): DatabaseAggregateCommand
447 | sqrt(val: any): DatabaseAggregateCommand
448 | stdDevPop(val: any): DatabaseAggregateCommand
449 | stdDevSamp(val: any): DatabaseAggregateCommand
450 | strcasecmp(val: any): DatabaseAggregateCommand
451 | strLenBytes(val: any): DatabaseAggregateCommand
452 | strLenCP(val: any): DatabaseAggregateCommand
453 | substr(val: any): DatabaseAggregateCommand
454 | substrBytes(val: any): DatabaseAggregateCommand
455 | substrCP(val: any): DatabaseAggregateCommand
456 | subtract(val: any): DatabaseAggregateCommand
457 | sum(val: any): DatabaseAggregateCommand
458 | switch(val: any): DatabaseAggregateCommand
459 | toBool(val: any): DatabaseAggregateCommand
460 | toDate(val: any): DatabaseAggregateCommand
461 | toDecimal(val: any): DatabaseAggregateCommand
462 | toDouble(val: any): DatabaseAggregateCommand
463 | toInt(val: any): DatabaseAggregateCommand
464 | toLong(val: any): DatabaseAggregateCommand
465 | toObjectId(val: any): DatabaseAggregateCommand
466 | toString(val: any): DatabaseAggregateCommand
467 | toLower(val: any): DatabaseAggregateCommand
468 | toUpper(val: any): DatabaseAggregateCommand
469 | trim(val: any): DatabaseAggregateCommand
470 | trunc(val: any): DatabaseAggregateCommand
471 | type(val: any): DatabaseAggregateCommand
472 | week(val: any): DatabaseAggregateCommand
473 | year(val: any): DatabaseAggregateCommand
474 | zip(val: any): DatabaseAggregateCommand
475 | }
476 | }
477 |
478 | class DatabaseAggregateCommand {}
479 |
480 | enum LOGIC_COMMANDS_LITERAL {
481 | AND = 'and',
482 | OR = 'or',
483 | NOT = 'not',
484 | NOR = 'nor'
485 | }
486 |
487 | class DatabaseLogicCommand {
488 | and(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand
489 | or(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand
490 | nor(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand
491 | not(expression: DatabaseLogicCommand): DatabaseLogicCommand
492 | }
493 |
494 | enum QUERY_COMMANDS_LITERAL {
495 | // comparison
496 | EQ = 'eq',
497 | NEQ = 'neq',
498 | GT = 'gt',
499 | GTE = 'gte',
500 | LT = 'lt',
501 | LTE = 'lte',
502 | IN = 'in',
503 | NIN = 'nin',
504 | // geo
505 | GEO_NEAR = 'geoNear',
506 | GEO_WITHIN = 'geoWithin',
507 | GEO_INTERSECTS = 'geoIntersects',
508 | // element
509 | EXISTS = 'exists',
510 | // evaluation
511 | MOD = 'mod',
512 | // array
513 | ALL = 'all',
514 | ELEM_MATCH = 'elemMatch',
515 | SIZE = 'size'
516 | }
517 |
518 | class DatabaseQueryCommand extends DatabaseLogicCommand {
519 | eq(val: any): DatabaseLogicCommand
520 | neq(val: any): DatabaseLogicCommand
521 | gt(val: any): DatabaseLogicCommand
522 | gte(val: any): DatabaseLogicCommand
523 | lt(val: any): DatabaseLogicCommand
524 | lte(val: any): DatabaseLogicCommand
525 | in(val: any[]): DatabaseLogicCommand
526 | nin(val: any[]): DatabaseLogicCommand
527 |
528 | exists(val: boolean): DatabaseLogicCommand
529 |
530 | mod(divisor: number, remainder: number): DatabaseLogicCommand
531 |
532 | all(val: any[]): DatabaseLogicCommand
533 | elemMatch(val: any): DatabaseLogicCommand
534 | size(val: number): DatabaseLogicCommand
535 |
536 | geoNear(options: IGeoNearCommandOptions): DatabaseLogicCommand
537 | geoWithin(options: IGeoWithinCommandOptions): DatabaseLogicCommand
538 | geoIntersects(
539 | options: IGeoIntersectsCommandOptions
540 | ): DatabaseLogicCommand
541 | }
542 |
543 | enum PROJECTION_COMMANDS_LITERAL {
544 | SLICE = 'slice'
545 | }
546 |
547 | class DatabaseProjectionCommand {}
548 |
549 | enum UPDATE_COMMANDS_LITERAL {
550 | // field
551 | SET = 'set',
552 | REMOVE = 'remove',
553 | INC = 'inc',
554 | MUL = 'mul',
555 | MIN = 'min',
556 | MAX = 'max',
557 | RENAME = 'rename',
558 | // bitwise
559 | BIT = 'bit',
560 | // array
561 | PUSH = 'push',
562 | POP = 'pop',
563 | SHIFT = 'shift',
564 | UNSHIFT = 'unshift',
565 | ADD_TO_SET = 'addToSet',
566 | PULL = 'pull',
567 | PULL_ALL = 'pullAll'
568 | }
569 |
570 | class DatabaseUpdateCommand {}
571 |
572 | class Batch {}
573 |
574 | /**
575 | * A contract that all API provider must adhere to
576 | */
577 | class APIBaseContract<
578 | PromiseReturn,
579 | CallbackReturn,
580 | Param extends IAPIParam,
581 | Context = any
582 | > {
583 | getContext(param: Param): Context
584 |
585 | /**
586 | * In case of callback-style invocation, this function will be called
587 | */
588 | getCallbackReturn(param: Param, context: Context): CallbackReturn
589 |
590 | getFinalParam(param: Param, context: Context): T
591 |
592 | run(param: T): Promise
593 | }
594 |
595 | interface IGeoPointConstructor {
596 | new (longitude: number, latitide: number): GeoPoint
597 | new (geojson: IGeoJSONPoint): GeoPoint
598 | (longitude: number, latitide: number): GeoPoint
599 | (geojson: IGeoJSONPoint): GeoPoint
600 | }
601 |
602 | interface IGeoMultiPointConstructor {
603 | new (points: GeoPoint[] | IGeoJSONMultiPoint): GeoMultiPoint
604 | (points: GeoPoint[] | IGeoJSONMultiPoint): GeoMultiPoint
605 | }
606 |
607 | interface IGeoLineStringConstructor {
608 | new (points: GeoPoint[] | IGeoJSONLineString): GeoLineString
609 | (points: GeoPoint[] | IGeoJSONLineString): GeoLineString
610 | }
611 |
612 | interface IGeoMultiLineStringConstructor {
613 | new (
614 | lineStrings: GeoLineString[] | IGeoJSONMultiLineString
615 | ): GeoMultiLineString
616 | (
617 | lineStrings: GeoLineString[] | IGeoJSONMultiLineString
618 | ): GeoMultiLineString
619 | }
620 |
621 | interface IGeoPolygonConstructor {
622 | new (lineStrings: GeoLineString[] | IGeoJSONPolygon): GeoPolygon
623 | (lineStrings: GeoLineString[] | IGeoJSONPolygon): GeoPolygon
624 | }
625 |
626 | interface IGeoMultiPolygonConstructor {
627 | new (polygons: GeoPolygon[] | IGeoJSONMultiPolygon): GeoMultiPolygon
628 | (polygons: GeoPolygon[] | IGeoJSONMultiPolygon): GeoMultiPolygon
629 | }
630 |
631 | interface IGeo {
632 | Point: IGeoPointConstructor
633 | MultiPoint: IGeoMultiPointConstructor
634 | LineString: IGeoLineStringConstructor
635 | MultiLineString: IGeoMultiLineStringConstructor
636 | Polygon: IGeoPolygonConstructor
637 | MultiPolygon: IGeoMultiPolygonConstructor
638 | }
639 |
640 | interface IGeoJSONPoint {
641 | type: 'Point'
642 | coordinates: [number, number]
643 | }
644 |
645 | interface IGeoJSONMultiPoint {
646 | type: 'MultiPoint'
647 | coordinates: Array<[number, number]>
648 | }
649 |
650 | interface IGeoJSONLineString {
651 | type: 'LineString'
652 | coordinates: Array<[number, number]>
653 | }
654 |
655 | interface IGeoJSONMultiLineString {
656 | type: 'MultiLineString'
657 | coordinates: Array>
658 | }
659 |
660 | interface IGeoJSONPolygon {
661 | type: 'Polygon'
662 | coordinates: Array>
663 | }
664 |
665 | interface IGeoJSONMultiPolygon {
666 | type: 'MultiPolygon'
667 | coordinates: Array>>
668 | }
669 |
670 | type IGeoJSONObject =
671 | | IGeoJSONPoint
672 | | IGeoJSONMultiPoint
673 | | IGeoJSONLineString
674 | | IGeoJSONMultiLineString
675 | | IGeoJSONPolygon
676 | | IGeoJSONMultiPolygon
677 |
678 | abstract class GeoPoint {
679 | longitude: number
680 | latitude: number
681 |
682 | constructor(longitude: number, latitude: number)
683 |
684 | toJSON(): Record
685 | toString(): string
686 | }
687 |
688 | abstract class GeoMultiPoint {
689 | points: GeoPoint[]
690 |
691 | constructor(points: GeoPoint[])
692 |
693 | toJSON(): IGeoJSONMultiPoint
694 | toString(): string
695 | }
696 |
697 | abstract class GeoLineString {
698 | points: GeoPoint[]
699 |
700 | constructor(points: GeoPoint[])
701 |
702 | toJSON(): IGeoJSONLineString
703 | toString(): string
704 | }
705 |
706 | abstract class GeoMultiLineString {
707 | lines: GeoLineString[]
708 |
709 | constructor(lines: GeoLineString[])
710 |
711 | toJSON(): IGeoJSONMultiLineString
712 | toString(): string
713 | }
714 |
715 | abstract class GeoPolygon {
716 | lines: GeoLineString[]
717 |
718 | constructor(lines: GeoLineString[])
719 |
720 | toJSON(): IGeoJSONPolygon
721 | toString(): string
722 | }
723 |
724 | abstract class GeoMultiPolygon {
725 | polygons: GeoPolygon[]
726 |
727 | constructor(polygons: GeoPolygon[])
728 |
729 | toJSON(): IGeoJSONMultiPolygon
730 | toString(): string
731 | }
732 |
733 | type GeoInstance =
734 | | GeoPoint
735 | | GeoMultiPoint
736 | | GeoLineString
737 | | GeoMultiLineString
738 | | GeoPolygon
739 | | GeoMultiPolygon
740 |
741 | interface IGeoNearCommandOptions {
742 | geometry: GeoPoint
743 | maxDistance?: number
744 | minDistance?: number
745 | }
746 |
747 | interface IGeoWithinCommandOptions {
748 | geometry: GeoPolygon | GeoMultiPolygon
749 | }
750 |
751 | interface IGeoIntersectsCommandOptions {
752 | geometry:
753 | | GeoPoint
754 | | GeoMultiPoint
755 | | GeoLineString
756 | | GeoMultiLineString
757 | | GeoPolygon
758 | | GeoMultiPolygon
759 | }
760 |
761 | interface IServerDateOptions {
762 | offset: number
763 | }
764 |
765 | abstract class ServerDate {
766 | readonly options: IServerDateOptions
767 | constructor(options?: IServerDateOptions)
768 | }
769 |
770 | interface IRegExpOptions {
771 | regexp: string
772 | options?: string
773 | }
774 |
775 | interface IRegExpConstructor {
776 | new (options: IRegExpOptions): RegExp
777 | (options: IRegExpOptions): RegExp
778 | }
779 |
780 | abstract class RegExp {
781 | readonly regexp: string
782 | readonly options: string
783 | constructor(options: IRegExpOptions)
784 | }
785 |
786 | type DocumentId = string | number
787 |
788 | interface IDocumentData {
789 | _id?: DocumentId
790 | [key: string]: any
791 | }
792 |
793 | type IDBAPIParam = IAPIParam
794 |
795 | interface IAddDocumentOptions extends IDBAPIParam {
796 | data: IDocumentData
797 | }
798 |
799 | type IGetDocumentOptions = IDBAPIParam
800 |
801 | type ICountDocumentOptions = IDBAPIParam
802 |
803 | interface IUpdateDocumentOptions extends IDBAPIParam {
804 | data: IUpdateCondition
805 | }
806 |
807 | interface IUpdateSingleDocumentOptions extends IDBAPIParam {
808 | data: IUpdateCondition
809 | }
810 |
811 | interface ISetDocumentOptions extends IDBAPIParam {
812 | data: IUpdateCondition
813 | }
814 |
815 | interface ISetSingleDocumentOptions extends IDBAPIParam {
816 | data: IUpdateCondition
817 | }
818 |
819 | interface IRemoveDocumentOptions extends IDBAPIParam {
820 | query: IQueryCondition
821 | }
822 |
823 | type IRemoveSingleDocumentOptions = IDBAPIParam
824 |
825 | interface IWatchOptions {
826 | // server realtime data init & change event
827 | onChange: (snapshot: ISnapshot) => void
828 | // error while connecting / listening
829 | onError: (error: any) => void
830 | }
831 |
832 | interface ISnapshot {
833 | id: number
834 | docChanges: ISingleDBEvent[]
835 | docs: Record
836 | type?: SnapshotType
837 | }
838 |
839 | type SnapshotType = 'init'
840 |
841 | interface ISingleDBEvent {
842 | id: number
843 | dataType: DataType
844 | queueType: QueueType
845 | docId: string
846 | doc: Record
847 | updatedFields?: Record
848 | removedFields?: string[]
849 | }
850 |
851 | type DataType = 'init' | 'update' | 'replace' | 'add' | 'remove' | 'limit'
852 |
853 | type QueueType = 'init' | 'enqueue' | 'dequeue' | 'update'
854 |
855 | interface IQueryCondition {
856 | [key: string]: any
857 | }
858 |
859 | type IStringQueryCondition = string
860 |
861 | interface IQueryResult extends IAPISuccessParam {
862 | data: IDocumentData[]
863 | }
864 |
865 | interface IQuerySingleResult extends IAPISuccessParam {
866 | data: IDocumentData
867 | }
868 |
869 | interface IUpdateCondition {
870 | [key: string]: any
871 | }
872 |
873 | type IStringUpdateCondition = string
874 |
875 | interface IAddResult extends IAPISuccessParam {
876 | _id: DocumentId
877 | }
878 |
879 | interface IUpdateResult extends IAPISuccessParam {
880 | stats: {
881 | updated: number
882 | // created: number,
883 | }
884 | }
885 |
886 | interface ISetResult extends IAPISuccessParam {
887 | _id: DocumentId
888 | stats: {
889 | updated: number
890 | created: number
891 | }
892 | }
893 |
894 | interface IRemoveResult extends IAPISuccessParam {
895 | stats: {
896 | removed: number
897 | }
898 | }
899 |
900 | interface ICountResult extends IAPISuccessParam {
901 | total: number
902 | }
903 | }
904 |
905 | type Optional = { [K in keyof T]+?: T[K] }
906 |
907 | type OQ<
908 | T extends Optional<
909 | Record<'complete' | 'success' | 'fail', (...args: any[]) => any>
910 | >
911 | > =
912 | | (RQ & Required>)
913 | | (RQ & Required>)
914 | | (RQ & Required>)
915 | | (RQ & Required>)
916 | | (RQ & Required>)
917 | | (RQ & Required>)
918 | | (RQ & Required>)
919 |
920 | type RQ<
921 | T extends Optional<
922 | Record<'complete' | 'success' | 'fail', (...args: any[]) => any>
923 | >
924 | > = Pick>
925 |
--------------------------------------------------------------------------------
/typings/types/wx/lib.wx.component.d.ts:
--------------------------------------------------------------------------------
1 | /*! *****************************************************************************
2 | Copyright (c) 2021 Tencent, Inc. All rights reserved.
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | this software and associated documentation files (the "Software"), to deal in
6 | the Software without restriction, including without limitation the rights to
7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
8 | of the Software, and to permit persons to whom the Software is furnished to do
9 | so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all
12 | copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 | SOFTWARE.
21 | ***************************************************************************** */
22 |
23 | declare namespace WechatMiniprogram.Component {
24 | type Instance<
25 | TData extends DataOption,
26 | TProperty extends PropertyOption,
27 | TMethod extends Partial,
28 | TCustomInstanceProperty extends IAnyObject = {},
29 | TIsPage extends boolean = false
30 | > = InstanceProperties &
31 | InstanceMethods &
32 | TMethod &
33 | (TIsPage extends true ? Page.ILifetime : {}) &
34 | TCustomInstanceProperty & {
35 | /** 组件数据,**包括内部数据和属性值** */
36 | data: TData & PropertyOptionToData
37 | /** 组件数据,**包括内部数据和属性值**(与 `data` 一致) */
38 | properties: TData & PropertyOptionToData
39 | }
40 | type TrivialInstance = Instance<
41 | IAnyObject,
42 | IAnyObject,
43 | IAnyObject,
44 | IAnyObject
45 | >
46 | type TrivialOption = Options
47 | type Options<
48 | TData extends DataOption,
49 | TProperty extends PropertyOption,
50 | TMethod extends MethodOption,
51 | TCustomInstanceProperty extends IAnyObject = {},
52 | TIsPage extends boolean = false
53 | > = Partial> &
54 | Partial> &
55 | Partial> &
56 | Partial &
57 | Partial &
58 | ThisType<
59 | Instance<
60 | TData,
61 | TProperty,
62 | TMethod,
63 | TCustomInstanceProperty,
64 | TIsPage
65 | >
66 | >
67 | interface Constructor {
68 | <
69 | TData extends DataOption,
70 | TProperty extends PropertyOption,
71 | TMethod extends MethodOption,
72 | TCustomInstanceProperty extends IAnyObject = {},
73 | TIsPage extends boolean = false
74 | >(
75 | options: Options<
76 | TData,
77 | TProperty,
78 | TMethod,
79 | TCustomInstanceProperty,
80 | TIsPage
81 | >
82 | ): string
83 | }
84 | type DataOption = Record
85 | type PropertyOption = Record
86 | type MethodOption = Record
87 |
88 | interface Data {
89 | /** 组件的内部数据,和 `properties` 一同用于组件的模板渲染 */
90 | data?: D
91 | }
92 | interface Property {
93 | /** 组件的对外属性,是属性名到属性设置的映射表 */
94 | properties: P
95 | }
96 | interface Method {
97 | /** 组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用,参见 [组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html) */
98 | methods: M & (TIsPage extends true ? Partial : {})
99 | }
100 | type PropertyType =
101 | | StringConstructor
102 | | NumberConstructor
103 | | BooleanConstructor
104 | | ArrayConstructor
105 | | ObjectConstructor
106 | | null
107 | type ValueType = T extends null
108 | ? any
109 | : T extends StringConstructor
110 | ? string
111 | : T extends NumberConstructor
112 | ? number
113 | : T extends BooleanConstructor
114 | ? boolean
115 | : T extends ArrayConstructor
116 | ? any[]
117 | : T extends ObjectConstructor
118 | ? IAnyObject
119 | : never
120 | type FullProperty = {
121 | /** 属性类型 */
122 | type: T
123 | /** 属性初始值 */
124 | value?: ValueType
125 | /** 属性值被更改时的响应函数 */
126 | observer?:
127 | | string
128 | | ((
129 | newVal: ValueType,
130 | oldVal: ValueType,
131 | changedPath: Array
132 | ) => void)
133 | /** 属性的类型(可以指定多个) */
134 | optionalTypes?: ShortProperty[]
135 | }
136 | type AllFullProperty =
137 | | FullProperty
138 | | FullProperty
139 | | FullProperty
140 | | FullProperty
141 | | FullProperty
142 | | FullProperty
143 | type ShortProperty =
144 | | StringConstructor
145 | | NumberConstructor
146 | | BooleanConstructor
147 | | ArrayConstructor
148 | | ObjectConstructor
149 | | null
150 | type AllProperty = AllFullProperty | ShortProperty
151 | type PropertyToData = T extends ShortProperty
152 | ? ValueType
153 | : FullPropertyToData>
154 | type FullPropertyToData = ValueType
155 | type PropertyOptionToData = {
156 | [name in keyof P]: PropertyToData
157 | }
158 |
159 | interface InstanceProperties {
160 | /** 组件的文件路径 */
161 | is: string
162 | /** 节点id */
163 | id: string
164 | /** 节点dataset */
165 | dataset: Record
166 | }
167 |
168 | interface InstanceMethods {
169 | /** `setData` 函数用于将数据从逻辑层发送到视图层
170 | *(异步),同时改变对应的 `this.data` 的值(同步)。
171 | *
172 | * **注意:**
173 | *
174 | * 1. **直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致**。
175 | * 1. 仅支持设置可 JSON 化的数据。
176 | * 1. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
177 | * 1. 请不要把 data 中任何一项的 value 设为 `undefined` ,否则这一项将不被设置并可能遗留一些潜在问题。
178 | */
179 | setData(
180 | /** 这次要改变的数据
181 | *
182 | * 以 `key: value` 的形式表示,将 `this.data` 中的 `key` 对应的值改变成 `value`。
183 | *
184 | * 其中 `key` 可以以数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如 `array[2].message`,`a.b.c.d`,并且不需要在 this.data 中预先定义。
185 | */
186 | data: Partial & IAnyObject,
187 | /** setData引起的界面更新渲染完毕后的回调函数,最低基础库: `1.5.0` */
188 | callback?: () => void
189 | ): void
190 |
191 | /** 检查组件是否具有 `behavior` (检查时会递归检查被直接或间接引入的所有behavior) */
192 | hasBehavior(behavior: Behavior.BehaviorIdentifier): void
193 | /** 触发事件,参见组件事件 */
194 | triggerEvent(
195 | name: string,
196 | detail?: DetailType,
197 | options?: TriggerEventOption
198 | ): void
199 | /** 创建一个 SelectorQuery 对象,选择器选取范围为这个组件实例内 */
200 | createSelectorQuery(): SelectorQuery
201 | /** 创建一个 IntersectionObserver 对象,选择器选取范围为这个组件实例内 */
202 | createIntersectionObserver(
203 | options: CreateIntersectionObserverOption
204 | ): IntersectionObserver
205 | /** 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 `wx://component-export` 影响) */
206 | selectComponent(selector: string): TrivialInstance
207 | /** 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组 */
208 | selectAllComponents(selector: string): TrivialInstance[]
209 | /**
210 | * 选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 `wx://component-export` 影响)
211 | *
212 | * 最低基础库版本:[`2.8.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
213 | **/
214 | selectOwnerComponent(): TrivialInstance
215 | /** 获取这个关系所对应的所有关联节点,参见 组件间关系 */
216 | getRelationNodes(relationKey: string): TrivialInstance[]
217 | /**
218 | * 立刻执行 callback ,其中的多个 setData 之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData 时进行界面绘制同步)
219 | *
220 | * 最低基础库版本:[`2.4.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
221 | **/
222 | groupSetData(callback?: () => void): void
223 | /**
224 | * 返回当前页面的 custom-tab-bar 的组件实例
225 | *
226 | * 最低基础库版本:[`2.6.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
227 | **/
228 | getTabBar(): TrivialInstance
229 | /**
230 | * 返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内
231 | *
232 | * 最低基础库版本:[`2.7.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
233 | **/
234 | getPageId(): string
235 | /**
236 | * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html)
237 | *
238 | * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
239 | **/
240 | animate(
241 | selector: string,
242 | keyFrames: KeyFrame[],
243 | duration: number,
244 | callback?: () => void
245 | ): void
246 | /**
247 | * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html)
248 | *
249 | * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
250 | **/
251 | animate(
252 | selector: string,
253 | keyFrames: ScrollTimelineKeyframe[],
254 | duration: number,
255 | scrollTimeline: ScrollTimelineOption
256 | ): void
257 | /**
258 | * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html)
259 | *
260 | * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
261 | **/
262 | clearAnimation(selector: string, callback: () => void): void
263 | /**
264 | * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html)
265 | *
266 | * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
267 | **/
268 | clearAnimation(
269 | selector: string,
270 | options?: ClearAnimationOptions,
271 | callback?: () => void
272 | ): void
273 | getOpenerEventChannel(): EventChannel
274 | }
275 |
276 | interface ComponentOptions {
277 | /**
278 | * [启用多slot支持](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件wxml的slot)
279 | */
280 | multipleSlots?: boolean
281 | /**
282 | * [组件样式隔离](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件样式隔离)
283 | */
284 | addGlobalClass?: boolean
285 | /**
286 | * [组件样式隔离](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件样式隔离)
287 | */
288 | styleIsolation?:
289 | | 'isolated'
290 | | 'apply-shared'
291 | | 'shared'
292 | | 'page-isolated'
293 | | 'page-apply-shared'
294 | | 'page-shared'
295 | /**
296 | * [纯数据字段](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/pure-data.html) 是一些不用于界面渲染的 data 字段,可以用于提升页面更新性能。从小程序基础库版本 2.8.2 开始支持。
297 | */
298 | pureDataPattern?: RegExp
299 | /**
300 | * [虚拟化组件节点](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E8%99%9A%E6%8B%9F%E5%8C%96%E7%BB%84%E4%BB%B6%E8%8A%82%E7%82%B9) 使自定义组件内部的第一层节点由自定义组件本身完全决定。从小程序基础库版本 [`2.11.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 开始支持 */
301 | virtualHost?: boolean
302 | }
303 |
304 | interface TriggerEventOption {
305 | /** 事件是否冒泡
306 | *
307 | * 默认值: `false`
308 | */
309 | bubbles?: boolean
310 | /** 事件是否可以穿越组件边界,为false时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部
311 | *
312 | * 默认值: `false`
313 | */
314 | composed?: boolean
315 | /** 事件是否拥有捕获阶段
316 | *
317 | * 默认值: `false`
318 | */
319 | capturePhase?: boolean
320 | }
321 |
322 | interface RelationOption {
323 | /** 目标组件的相对关系 */
324 | type: 'parent' | 'child' | 'ancestor' | 'descendant'
325 | /** 关系生命周期函数,当关系被建立在页面节点树中时触发,触发时机在组件attached生命周期之后 */
326 | linked?(target: TrivialInstance): void
327 | /** 关系生命周期函数,当关系在页面节点树中发生改变时触发,触发时机在组件moved生命周期之后 */
328 | linkChanged?(target: TrivialInstance): void
329 | /** 关系生命周期函数,当关系脱离页面节点树时触发,触发时机在组件detached生命周期之后 */
330 | unlinked?(target: TrivialInstance): void
331 | /** 如果这一项被设置,则它表示关联的目标节点所应具有的behavior,所有拥有这一behavior的组件节点都会被关联 */
332 | target?: string
333 | }
334 |
335 | interface PageLifetimes {
336 | /** 页面生命周期回调—监听页面显示
337 | *
338 | * 页面显示/切入前台时触发。
339 | */
340 | show(): void
341 | /** 页面生命周期回调—监听页面隐藏
342 | *
343 | * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,小程序切入后台等。
344 | */
345 | hide(): void
346 | /** 页面生命周期回调—监听页面尺寸变化
347 | *
348 | * 所在页面尺寸变化时执行
349 | */
350 | resize(size: Page.IResizeOption): void
351 | }
352 |
353 | type DefinitionFilter = (
354 | /** 使用该 behavior 的 component/behavior 的定义对象 */
355 | defFields: T,
356 | /** 该 behavior 所使用的 behavior 的 definitionFilter 函数列表 */
357 | definitionFilterArr?: DefinitionFilter[]
358 | ) => void
359 |
360 | interface Lifetimes {
361 | /** 组件生命周期声明对象,组件的生命周期:`created`、`attached`、`ready`、`moved`、`detached` 将收归到 `lifetimes` 字段内进行声明,原有声明方式仍旧有效,如同时存在两种声明方式,则 `lifetimes` 字段内声明方式优先级最高
362 | *
363 | * 最低基础库: `2.2.3` */
364 | lifetimes: Partial<{
365 | /**
366 | * 在组件实例刚刚被创建时执行,注意此时不能调用 `setData`
367 | *
368 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
369 | */
370 | created(): void
371 | /**
372 | * 在组件实例进入页面节点树时执行
373 | *
374 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
375 | */
376 | attached(): void
377 | /**
378 | * 在组件在视图层布局完成后执行
379 | *
380 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
381 | */
382 | ready(): void
383 | /**
384 | * 在组件实例被移动到节点树另一个位置时执行
385 | *
386 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
387 | */
388 | moved(): void
389 | /**
390 | * 在组件实例被从页面节点树移除时执行
391 | *
392 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
393 | */
394 | detached(): void
395 | /**
396 | * 每当组件方法抛出错误时执行
397 | *
398 | * 最低基础库版本:[`2.4.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
399 | */
400 | error(err: Error): void
401 | }>
402 | /**
403 | * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
404 | *
405 | * 在组件实例刚刚被创建时执行
406 | *
407 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
408 | */
409 | created(): void
410 | /**
411 | * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
412 | *
413 | * 在组件实例进入页面节点树时执行
414 | *
415 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
416 | */
417 | attached(): void
418 | /**
419 | * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
420 | *
421 | * 在组件在视图层布局完成后执行
422 | *
423 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
424 | */
425 | ready(): void
426 | /**
427 | * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
428 | *
429 | * 在组件实例被移动到节点树另一个位置时执行
430 | *
431 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
432 | */
433 | moved(): void
434 | /**
435 | * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
436 | *
437 | * 在组件实例被从页面节点树移除时执行
438 | *
439 | * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
440 | */
441 | detached(): void
442 | /**
443 | * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
444 | *
445 | * 每当组件方法抛出错误时执行
446 | *
447 | * 最低基础库版本:[`2.4.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
448 | */
449 | error(err: Error): void
450 | }
451 |
452 | interface OtherOption {
453 | /** 类似于mixins和traits的组件间代码复用机制,参见 [behaviors](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/behaviors.html) */
454 | behaviors: Behavior.BehaviorIdentifier[]
455 | /**
456 | * 组件数据字段监听器,用于监听 properties 和 data 的变化,参见 [数据监听器](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/observer.html)
457 | *
458 | * 最低基础库版本:[`2.6.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
459 | */
460 | observers: Record any>
461 | /** 组件间关系定义,参见 [组件间关系](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html) */
462 | relations: {
463 | [componentName: string]: RelationOption
464 | }
465 | /** 组件接受的外部样式类,参见 [外部样式类](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html) */
466 | externalClasses?: string[]
467 | /** 组件所在页面的生命周期声明对象,参见 [组件生命周期](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html)
468 | *
469 | * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */
470 | pageLifetimes?: Partial
471 | /** 一些选项(文档中介绍相关特性时会涉及具体的选项设置,这里暂不列举) */
472 | options: ComponentOptions
473 |
474 | /** 定义段过滤器,用于自定义组件扩展,参见 [自定义组件扩展](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/extend.html)
475 | *
476 | * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */
477 | definitionFilter?: DefinitionFilter
478 | /**
479 | * 组件自定义导出,当使用 `behavior: wx://component-export` 时,这个定义段可以用于指定组件被 selectComponent 调用时的返回值,参见 [组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html)
480 | * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */
481 | export: () => IAnyObject
482 | }
483 |
484 | interface KeyFrame {
485 | /** 关键帧的偏移,范围[0-1] */
486 | offset?: number
487 | /** 动画缓动函数 */
488 | ease?: string
489 | /** 基点位置,即 CSS transform-origin */
490 | transformOrigin?: string
491 | /** 背景颜色,即 CSS background-color */
492 | backgroundColor?: string
493 | /** 底边位置,即 CSS bottom */
494 | bottom?: number | string
495 | /** 高度,即 CSS height */
496 | height?: number | string
497 | /** 左边位置,即 CSS left */
498 | left?: number | string
499 | /** 宽度,即 CSS width */
500 | width?: number | string
501 | /** 不透明度,即 CSS opacity */
502 | opacity?: number | string
503 | /** 右边位置,即 CSS right */
504 | right?: number | string
505 | /** 顶边位置,即 CSS top */
506 | top?: number | string
507 | /** 变换矩阵,即 CSS transform matrix */
508 | matrix?: number[]
509 | /** 三维变换矩阵,即 CSS transform matrix3d */
510 | matrix3d?: number[]
511 | /** 旋转,即 CSS transform rotate */
512 | rotate?: number
513 | /** 三维旋转,即 CSS transform rotate3d */
514 | rotate3d?: number[]
515 | /** X 方向旋转,即 CSS transform rotateX */
516 | rotateX?: number
517 | /** Y 方向旋转,即 CSS transform rotateY */
518 | rotateY?: number
519 | /** Z 方向旋转,即 CSS transform rotateZ */
520 | rotateZ?: number
521 | /** 缩放,即 CSS transform scale */
522 | scale?: number[]
523 | /** 三维缩放,即 CSS transform scale3d */
524 | scale3d?: number[]
525 | /** X 方向缩放,即 CSS transform scaleX */
526 | scaleX?: number
527 | /** Y 方向缩放,即 CSS transform scaleY */
528 | scaleY?: number
529 | /** Z 方向缩放,即 CSS transform scaleZ */
530 | scaleZ?: number
531 | /** 倾斜,即 CSS transform skew */
532 | skew?: number[]
533 | /** X 方向倾斜,即 CSS transform skewX */
534 | skewX?: number
535 | /** Y 方向倾斜,即 CSS transform skewY */
536 | skewY?: number
537 | /** 位移,即 CSS transform translate */
538 | translate?: Array
539 | /** 三维位移,即 CSS transform translate3d */
540 | translate3d?: Array
541 | /** X 方向位移,即 CSS transform translateX */
542 | translateX?: number | string
543 | /** Y 方向位移,即 CSS transform translateY */
544 | translateY?: number | string
545 | /** Z 方向位移,即 CSS transform translateZ */
546 | translateZ?: number | string
547 | }
548 | interface ClearAnimationOptions {
549 | /** 基点位置,即 CSS transform-origin */
550 | transformOrigin?: boolean
551 | /** 背景颜色,即 CSS background-color */
552 | backgroundColor?: boolean
553 | /** 底边位置,即 CSS bottom */
554 | bottom?: boolean
555 | /** 高度,即 CSS height */
556 | height?: boolean
557 | /** 左边位置,即 CSS left */
558 | left?: boolean
559 | /** 宽度,即 CSS width */
560 | width?: boolean
561 | /** 不透明度,即 CSS opacity */
562 | opacity?: boolean
563 | /** 右边位置,即 CSS right */
564 | right?: boolean
565 | /** 顶边位置,即 CSS top */
566 | top?: boolean
567 | /** 变换矩阵,即 CSS transform matrix */
568 | matrix?: boolean
569 | /** 三维变换矩阵,即 CSS transform matrix3d */
570 | matrix3d?: boolean
571 | /** 旋转,即 CSS transform rotate */
572 | rotate?: boolean
573 | /** 三维旋转,即 CSS transform rotate3d */
574 | rotate3d?: boolean
575 | /** X 方向旋转,即 CSS transform rotateX */
576 | rotateX?: boolean
577 | /** Y 方向旋转,即 CSS transform rotateY */
578 | rotateY?: boolean
579 | /** Z 方向旋转,即 CSS transform rotateZ */
580 | rotateZ?: boolean
581 | /** 缩放,即 CSS transform scale */
582 | scale?: boolean
583 | /** 三维缩放,即 CSS transform scale3d */
584 | scale3d?: boolean
585 | /** X 方向缩放,即 CSS transform scaleX */
586 | scaleX?: boolean
587 | /** Y 方向缩放,即 CSS transform scaleY */
588 | scaleY?: boolean
589 | /** Z 方向缩放,即 CSS transform scaleZ */
590 | scaleZ?: boolean
591 | /** 倾斜,即 CSS transform skew */
592 | skew?: boolean
593 | /** X 方向倾斜,即 CSS transform skewX */
594 | skewX?: boolean
595 | /** Y 方向倾斜,即 CSS transform skewY */
596 | skewY?: boolean
597 | /** 位移,即 CSS transform translate */
598 | translate?: boolean
599 | /** 三维位移,即 CSS transform translate3d */
600 | translate3d?: boolean
601 | /** X 方向位移,即 CSS transform translateX */
602 | translateX?: boolean
603 | /** Y 方向位移,即 CSS transform translateY */
604 | translateY?: boolean
605 | /** Z 方向位移,即 CSS transform translateZ */
606 | translateZ?: boolean
607 | }
608 | interface ScrollTimelineKeyframe {
609 | composite?: 'replace' | 'add' | 'accumulate' | 'auto'
610 | easing?: string
611 | offset?: number | null
612 | [property: string]: string | number | null | undefined
613 | }
614 | interface ScrollTimelineOption {
615 | /** 指定滚动元素的选择器(只支持 scroll-view),该元素滚动时会驱动动画的进度 */
616 | scrollSource: string
617 | /** 指定滚动的方向。有效值为 horizontal 或 vertical */
618 | orientation?: string
619 | /** 指定开始驱动动画进度的滚动偏移量,单位 px */
620 | startScrollOffset: number
621 | /** 指定停止驱动动画进度的滚动偏移量,单位 px */
622 | endScrollOffset: number
623 | /** 起始和结束的滚动范围映射的时间长度,该时间可用于与关键帧动画里的时间 (duration) 相匹配,单位 ms */
624 | timeRange: number
625 | }
626 | }
627 | /** Component构造器可用于定义组件,调用Component构造器时可以指定组件的属性、数据、方法等。
628 | *
629 | * * 使用 `this.data` 可以获取内部数据和属性值,但不要直接修改它们,应使用 `setData` 修改。
630 | * * 生命周期函数无法在组件方法中通过 `this` 访问到。
631 | * * 属性名应避免以 data 开头,即不要命名成 `dataXyz` 这样的形式,因为在 WXML 中, `data-xyz=""` 会被作为节点 dataset 来处理,而不是组件属性。
632 | * * 在一个组件的定义和使用时,组件的属性名和 data 字段相互间都不能冲突(尽管它们位于不同的定义段中)。
633 | * * 从基础库 `2.0.9` 开始,对象类型的属性和 data 字段中可以包含函数类型的子字段,即可以通过对象类型的属性字段来传递函数。低于这一版本的基础库不支持这一特性。
634 | * * `bug` : 对于 type 为 Object 或 Array 的属性,如果通过该组件自身的 `this.setData` 来改变属性值的一个子字段,则依旧会触发属性 observer ,且 observer 接收到的 `newVal` 是变化的那个子字段的值, `oldVal` 为空, `changedPath` 包含子字段的字段名相关信息。
635 | */
636 | declare let Component: WechatMiniprogram.Component.Constructor
637 |
--------------------------------------------------------------------------------
/typings/types/wx/lib.wx.event.d.ts:
--------------------------------------------------------------------------------
1 | /*! *****************************************************************************
2 | Copyright (c) 2021 Tencent, Inc. All rights reserved.
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | this software and associated documentation files (the "Software"), to deal in
6 | the Software without restriction, including without limitation the rights to
7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
8 | of the Software, and to permit persons to whom the Software is furnished to do
9 | so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all
12 | copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 | SOFTWARE.
21 | ***************************************************************************** */
22 |
23 | declare namespace WechatMiniprogram {
24 | interface Target {
25 | /** 事件组件的 id */
26 | id: string
27 | /** 当前组件的类型 */
28 | tagName?: string
29 | /** 事件组件上由 `data-` 开头的自定义属性组成的集合 */
30 | dataset: DataSet
31 | /** 距离页面顶部的偏移量 */
32 | offsetTop: number
33 | /** 距离页面左边的偏移量 */
34 | offsetLeft: number
35 | }
36 |
37 | /** 基础事件参数 */
38 | interface BaseEvent<
39 | Mark extends IAnyObject = IAnyObject,
40 | CurrentTargetDataset extends IAnyObject = IAnyObject,
41 | TargetDataset extends IAnyObject = CurrentTargetDataset
42 | > {
43 | /** 事件类型 */
44 | type: string
45 | /** 页面打开到触发事件所经过的毫秒数 */
46 | timeStamp: number
47 | /** 事件冒泡路径上所有由 `mark:` 开头的自定义属性组成的集合 */
48 | mark?: Mark
49 | /** 触发事件的源组件 */
50 | target: Target
51 | /** 事件绑定的当前组件 */
52 | currentTarget: Target
53 | }
54 |
55 | /** 自定义事件 */
56 | interface CustomEvent<
57 | Detail extends IAnyObject = IAnyObject,
58 | Mark extends IAnyObject = IAnyObject,
59 | CurrentTargetDataset extends IAnyObject = IAnyObject,
60 | TargetDataset extends IAnyObject = CurrentTargetDataset
61 | > extends BaseEvent {
62 | /** 额外的信息 */
63 | detail: Detail
64 | }
65 |
66 | /** Touch 对象 */
67 | interface TouchDetail {
68 | /** 距离页面可显示区域 (屏幕除去导航条) 左上角距离,横向为 X 轴 */
69 | clientX: number
70 | /** 距离页面可显示区域 (屏幕除去导航条) 左上角距离,纵向为 Y 轴 */
71 | clientY: number
72 | /** 触摸点的标识符 */
73 | identifier: number
74 | /** 距离文档左上角的距离,文档的左上角为原点,横向为 X 轴 */
75 | pageX: number
76 | /** 距离文档左上角的距离,文档的左上角为原点,纵向为 Y 轴 */
77 | pageY: number
78 | }
79 |
80 | /** canvas Touch 对象 */
81 | interface TouchCanvasDetail {
82 | /** 触摸点的标识符 */
83 | identifier: number
84 | /** 距离 Canvas 左上角的距离,Canvas 的左上角为原点 ,横向为X轴 */
85 | x: number
86 | /** 距离 Canvas 左上角的距离,Canvas 的左上角为原点 纵向为Y轴 */
87 | y: number
88 | }
89 |
90 | /** 触摸事件 */
91 | interface Touch<
92 | Detail extends IAnyObject = IAnyObject,
93 | T extends TouchDetail | TouchCanvasDetail = TouchDetail,
94 | Mark extends IAnyObject = IAnyObject,
95 | CurrentTargetDataset extends IAnyObject = IAnyObject,
96 | TargetDataset extends IAnyObject = CurrentTargetDataset
97 | > extends CustomEvent {
98 | /** 触摸事件,当前停留在屏幕中的触摸点信息的数组 */
99 | touches: T[]
100 | /** 触摸事件,当前变化的触摸点信息的数组 */
101 | changedTouches: T[]
102 | }
103 |
104 | /** 触摸事件响应 */
105 | type TouchEvent<
106 | Detail extends IAnyObject = IAnyObject,
107 | Mark extends IAnyObject = IAnyObject,
108 | CurrentTargetDataset extends IAnyObject = IAnyObject,
109 | TargetDataset extends IAnyObject = CurrentTargetDataset
110 | > = Touch
111 |
112 | /** canvas 触摸事件响应 */
113 | interface TouchCanvas<
114 | Mark extends IAnyObject = IAnyObject,
115 | TargetDataset extends IAnyObject = IAnyObject
116 | > extends Touch {
117 | // canvas 中的触摸事件不可冒泡,所以没有 currentTarget。
118 | currentTarget: never
119 | }
120 |
121 | /**
122 | * 图片加载成功时触发
123 | *
124 | * 最低基础库: 2.1.0
125 | */
126 | type CoverImageLoad<
127 | Mark extends IAnyObject = IAnyObject,
128 | TargetDataset extends IAnyObject = IAnyObject
129 | > = CustomEvent<
130 | {
131 | /** 图片宽度 */
132 | width: number
133 | /** 图片高度 */
134 | height: number
135 | },
136 | Mark,
137 | TargetDataset
138 | >
139 |
140 | /**
141 | * 图片加载失败时触发
142 | *
143 | * 最低基础库: 2.1.0
144 | */
145 | type CoverImageError = CustomEvent
146 |
147 | /**
148 | * 拖动过程中触发的事件,event.detail = {x, y, source}
149 | *
150 | * 最低基础库: 1.9.90
151 | */
152 | type MovableViewChange<
153 | Mark extends IAnyObject = IAnyObject,
154 | TargetDataset extends IAnyObject = IAnyObject
155 | > = CustomEvent<
156 | {
157 | x: number
158 | y: number
159 | /**
160 | * 产生移动的原因
161 | *
162 | * - `touch` 拖动
163 | * - `touch-out-of-bounds` 超出移动范围
164 | * - `out-of-bounds` 超出移动范围后的回弹
165 | * - `friction` 惯性
166 | * - `空字符串` setData
167 | */
168 | source:
169 | | 'touch'
170 | | 'touch-out-of-bounds'
171 | | 'out-of-bounds'
172 | | 'friction'
173 | | ''
174 | },
175 | Mark,
176 | TargetDataset
177 | >
178 |
179 | /**
180 | * 缩放过程中触发的事件
181 | *
182 | * event.detail = {x, y, scale}
183 | *
184 | * x 和 y 字段在 2.1.0 之后支持
185 | *
186 | * 最低基础库: 1.9.90
187 | */
188 | type MovableViewScale<
189 | Mark extends IAnyObject = IAnyObject,
190 | TargetDataset extends IAnyObject = IAnyObject
191 | > = CustomEvent<
192 | {
193 | /** 最低基础库: 2.1.0 */
194 | x: number
195 | /** 最低基础库: 2.1.0 */
196 | y: number
197 | scale: number
198 | },
199 | Mark,
200 | TargetDataset
201 | >
202 |
203 | /**
204 | * 滑动开始事件 (同时开启 enhanced 属性后生效)
205 | *
206 | * detail { scrollTop, scrollLeft }
207 | *
208 | * 最低基础库: 2.12.0
209 | */
210 | type ScrollViewDragStart<
211 | Mark extends IAnyObject = IAnyObject,
212 | TargetDataset extends IAnyObject = IAnyObject
213 | > = CustomEvent<
214 | {
215 | scrollTop: number
216 | scrollLeft: number
217 | },
218 | Mark,
219 | TargetDataset
220 | >
221 |
222 | /**
223 | * 滑动事件 (同时开启 enhanced 属性后生效)
224 | *
225 | * detail { scrollTop, scrollLeft }
226 | *
227 | * 最低基础库: 2.12.0
228 | */
229 | type ScrollViewDragging<
230 | Mark extends IAnyObject = IAnyObject,
231 | TargetDataset extends IAnyObject = IAnyObject
232 | > = CustomEvent<
233 | {
234 | scrollTop: number
235 | scrollLeft: number
236 | },
237 | Mark,
238 | TargetDataset
239 | >
240 |
241 | /**
242 | * 滑动结束事件 (同时开启 enhanced 属性后生效)
243 | *
244 | * detail { scrollTop, scrollLeft }
245 | *
246 | * 最低基础库: 2.12.0
247 | */
248 | type ScrollViewDragEnd<
249 | Mark extends IAnyObject = IAnyObject,
250 | TargetDataset extends IAnyObject = IAnyObject
251 | > = CustomEvent<
252 | {
253 | scrollTop: number
254 | scrollLeft: number
255 | },
256 | Mark,
257 | TargetDataset
258 | >
259 |
260 | /** 滚动到顶部/左边时触发 */
261 | type ScrollViewScrollToUpper<
262 | Mark extends IAnyObject = IAnyObject,
263 | TargetDataset extends IAnyObject = IAnyObject
264 | > = CustomEvent<
265 | {
266 | direction: 'top' | 'left'
267 | },
268 | Mark,
269 | TargetDataset
270 | >
271 |
272 | /** 滚动到底部/右边时触发 */
273 | type ScrollViewScrollToLower<
274 | Mark extends IAnyObject = IAnyObject,
275 | TargetDataset extends IAnyObject = IAnyObject
276 | > = CustomEvent<
277 | {
278 | direction: 'bottom' | 'right'
279 | },
280 | Mark,
281 | TargetDataset
282 | >
283 |
284 | /**
285 | * 滚动时触发
286 | *
287 | * event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
288 | */
289 | type ScrollViewScroll<
290 | Mark extends IAnyObject = IAnyObject,
291 | TargetDataset extends IAnyObject = IAnyObject
292 | > = CustomEvent<
293 | {
294 | scrollLeft: number
295 | scrollTop: number
296 | scrollHeight: number
297 | scrollWidth: number
298 | deltaX: number
299 | deltaY: number
300 | },
301 | Mark,
302 | TargetDataset
303 | >
304 |
305 | type ScrollViewRefresherPulling<
306 | Mark extends IAnyObject = IAnyObject,
307 | TargetDataset extends IAnyObject = IAnyObject
308 | > = CustomEvent
309 |
310 | type ScrollViewRefresherRefresh<
311 | Mark extends IAnyObject = IAnyObject,
312 | TargetDataset extends IAnyObject = IAnyObject
313 | > = CustomEvent
314 |
315 | type ScrollViewRefresherRestore<
316 | Mark extends IAnyObject = IAnyObject,
317 | TargetDataset extends IAnyObject = IAnyObject
318 | > = CustomEvent
319 |
320 | type ScrollViewRefresherAbort<
321 | Mark extends IAnyObject = IAnyObject,
322 | TargetDataset extends IAnyObject = IAnyObject
323 | > = CustomEvent
324 |
325 | /**
326 | * current 改变时会触发 change 事件
327 | *
328 | * event.detail = {current, source}
329 | *
330 | * **Tip**: 如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起。
331 | */
332 | type SwiperChange<
333 | Mark extends IAnyObject = IAnyObject,
334 | TargetDataset extends IAnyObject = IAnyObject
335 | > = CustomEvent<
336 | {
337 | current: number
338 | /**
339 | * 表示导致变更的原因
340 | *
341 | * - `autoplay` 自动播放导致 swiper 变化;
342 | * - `touch` 用户划动引起 swiper 变化;
343 | * - 其它原因将用空字符串表示。
344 | *
345 | * 最低基础库: 1.4.0
346 | */
347 | source: '' | 'autoplay' | 'touch'
348 | /** 该 swiper-item 的标识符 */
349 | currentItemId: string
350 | },
351 | Mark,
352 | TargetDataset
353 | >
354 |
355 | /**
356 | * swiper-item 的位置发生改变时会触发 transition 事件
357 | *
358 | * event.detail = {dx: dx, dy: dy}
359 | *
360 | * 最低基础库: 2.4.3
361 | */
362 | type SwiperTransition<
363 | Mark extends IAnyObject = IAnyObject,
364 | TargetDataset extends IAnyObject = IAnyObject
365 | > = CustomEvent<
366 | {
367 | dx: number
368 | dy: number
369 | },
370 | Mark,
371 | TargetDataset
372 | >
373 |
374 | /**
375 | * 动画结束时会触发 animationfinish 事件
376 | *
377 | * 最低基础库: 1.9.0
378 | */
379 | type SwiperAnimationFinish<
380 | Mark extends IAnyObject = IAnyObject,
381 | TargetDataset extends IAnyObject = IAnyObject
382 | > = SwiperChange
383 |
384 | /**
385 | * progress 动画完成事件
386 | *
387 | * 最低基础库 2.4.1
388 | */
389 | type ProgressActiveEnd<
390 | Mark extends IAnyObject = IAnyObject,
391 | TargetDataset extends IAnyObject = IAnyObject
392 | > = CustomEvent<
393 | {
394 | curPercent: number
395 | },
396 | Mark,
397 | TargetDataset
398 | >
399 |
400 | /**
401 | * 用户点击该按钮时,会返回获取到的用户信息,回调的 detail 数据与 `wx. getUserInfo` 返回的一致,`open-type="getUserInfo"` 时有效
402 | *
403 | * 最低基础库: 1.3.0
404 | */
405 | type ButtonGetUserInfo = CustomEvent<
406 | GeneralCallbackResult & GetUserInfoSuccessCallbackResult
407 | >
408 |
409 | /**
410 | * 客服消息回调,`open-type="contact"` 时有效
411 | *
412 | * 最低基础库: 1.5.0
413 | */
414 | type ButtonContact = CustomEvent
415 |
416 | /**
417 | * 获取用户手机号回调,`open-type=getPhoneNumber` 时有效
418 | *
419 | * 最低基础库: 1.2.0
420 | */
421 | type ButtonGetPhoneNumber = CustomEvent<
422 | GeneralCallbackResult & Partial
423 | >
424 |
425 | /**
426 | * 当使用开放能力时,发生错误的回调,`open-type=launchApp` 时有效
427 | *
428 | * 最低基础库: 1.9.5
429 | */
430 | type ButtonError = CustomEvent
431 |
432 | /**
433 | * 在打开授权设置页后回调,`open-type=openSetting` 时有效
434 | *
435 | * 最低基础库: 2.0.7
436 | */
437 | type ButtonOpenSetting = CustomEvent<
438 | GeneralCallbackResult & OpenSettingSuccessCallbackResult
439 | >
440 |
441 | /**
442 | * 打开 APP 成功的回调,`open-type=launchApp` 时有效
443 | *
444 | * 最低基础库: 2.4.4
445 | */
446 | type ButtonLaunchApp = CustomEvent
447 |
448 | /**
449 | * checkbox-group 中选中项发生改变时触发 change 事件
450 | *
451 | * detail = { value: ['选中的checkbox 的 value 的数组'] }
452 | */
453 | type CheckboxGroupChange<
454 | Mark extends IAnyObject = IAnyObject,
455 | TargetDataset extends IAnyObject = IAnyObject
456 | > = CustomEvent<
457 | {
458 | /** 选中的 checkbox 的 value 的数组 */
459 | value: string[]
460 | },
461 | Mark,
462 | TargetDataset
463 | >
464 |
465 | /**
466 | * 编辑器初始化完成时触发
467 | *
468 | * 最低基础库: 2.7.0
469 | */
470 | type EditorReady<
471 | Mark extends IAnyObject = IAnyObject,
472 | TargetDataset extends IAnyObject = IAnyObject
473 | > = CustomEvent
474 |
475 | /**
476 | * 编辑器聚焦时触发
477 | *
478 | * event.detail = {html, text, delta}
479 | *
480 | * 最低基础库: 2.7.0
481 | */
482 | type EditorFocus<
483 | Mark extends IAnyObject = IAnyObject,
484 | TargetDataset extends IAnyObject = IAnyObject
485 | > = CustomEvent<
486 | {
487 | html: string
488 | text: string
489 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
490 | delta: any[]
491 | },
492 | Mark,
493 | TargetDataset
494 | >
495 |
496 | /**
497 | * 编辑器失去焦点时触发
498 | *
499 | * detail = {html, text, delta}
500 | *
501 | * 最低基础库: 2.7.0
502 | */
503 | type EditorBlur<
504 | Mark extends IAnyObject = IAnyObject,
505 | TargetDataset extends IAnyObject = IAnyObject
506 | > = EditorFocus
507 |
508 | /**
509 | * 编辑器内容改变时触发
510 | *
511 | * detail = {html, text, delta}
512 | *
513 | * 最低基础库: 2.7.0
514 | */
515 | type EditorInput<
516 | Mark extends IAnyObject = IAnyObject,
517 | TargetDataset extends IAnyObject = IAnyObject
518 | > = EditorFocus
519 |
520 | /**
521 | * 通过 Context 方法改变编辑器内样式时触发,返回选区已设置的样式
522 | *
523 | * 最低基础库: 2.7.0
524 | */
525 | type EditorStatusChange<
526 | Mark extends IAnyObject = IAnyObject,
527 | TargetDataset extends IAnyObject = IAnyObject
528 | > = CustomEvent<
529 | Partial<{
530 | align: 'left' | 'center' | 'right' | 'justify'
531 | bold: 'strong'
532 | italic: 'em'
533 | underline: true
534 | strike: 'del'
535 | lineHeight: string
536 | letterSpacing: string
537 | marginTop: string
538 | marginBottom: string
539 | fontFamily: string
540 | fontSize: string
541 | color: string
542 | backgroundColor: string
543 | list: 'checked' | 'unchecked' | 'ordered' | 'bullet'
544 | indent: number
545 | header: number
546 | script: 'sub' | 'super'
547 | direction: 'rtl'
548 | }>,
549 | Mark,
550 | TargetDataset
551 | >
552 |
553 | /**
554 | * 携带 form 中的数据触发 submit 事件
555 | *
556 | * event.detail = {value : {'name': 'value'} , formId: ''}
557 | */
558 | type FormSubmit<
559 | Mark extends IAnyObject = IAnyObject,
560 | TargetDataset extends IAnyObject = IAnyObject
561 | > = CustomEvent<
562 | {
563 | formId?: unknown
564 | target: Target
565 | /** 表单中的数据,需要在表单组件中加上 name 来作为 key。 */
566 | value: IAnyObject
567 | },
568 | Mark,
569 | TargetDataset
570 | >
571 |
572 | /** 表单重置时会触发 reset 事件 */
573 | type FormReset<
574 | Mark extends IAnyObject = IAnyObject,
575 | TargetDataset extends IAnyObject = IAnyObject
576 | > = CustomEvent<
577 | {
578 | target: Target
579 | },
580 | Mark,
581 | TargetDataset
582 | >
583 |
584 | /** 键盘输入时触发
585 | *
586 | * event.detail = {value, cursor, keyCode}
587 | *
588 | * 处理函数可以直接 return 一个字符串,将替换输入框的内容。
589 | */
590 | type Input<
591 | Mark extends IAnyObject = IAnyObject,
592 | TargetDataset extends IAnyObject = IAnyObject
593 | > = CustomEvent<
594 | {
595 | /** 输入框内容 */
596 | value: string
597 | /** 光标位置 */
598 | cursor: number
599 | /** keyCode 为键值 (目前工具还不支持返回keyCode参数) `2.1.0` 起支持 */
600 | keyCode?: number
601 | },
602 | Mark,
603 | TargetDataset
604 | >
605 |
606 | /**
607 | * 输入框聚焦时触发
608 | *
609 | * event.detail = { value, height }
610 | */
611 | type InputFocus<
612 | Mark extends IAnyObject = IAnyObject,
613 | TargetDataset extends IAnyObject = IAnyObject
614 | > = CustomEvent<
615 | {
616 | /** 输入框内容 */
617 | value: string
618 | /** 键盘高度, 在基础库 `1.9.90` 起支持 */
619 | height: number
620 | },
621 | Mark,
622 | TargetDataset
623 | >
624 |
625 | /**
626 | * 输入框失去焦点时触发
627 | *
628 | * event.detail = {value: value}
629 | */
630 | type InputBlur<
631 | Mark extends IAnyObject = IAnyObject,
632 | TargetDataset extends IAnyObject = IAnyObject
633 | > = CustomEvent<
634 | {
635 | /** 输入框内容 */
636 | value: string
637 | },
638 | Mark,
639 | TargetDataset
640 | >
641 |
642 | /**
643 | * 点击完成按钮时触发
644 | *
645 | * event.detail = {value: value}
646 | */
647 | type InputConfirm<
648 | Mark extends IAnyObject = IAnyObject,
649 | TargetDataset extends IAnyObject = IAnyObject
650 | > = CustomEvent<
651 | {
652 | /** 输入框内容 */
653 | value: string
654 | },
655 | Mark,
656 | TargetDataset
657 | >
658 |
659 | /**
660 | * 键盘高度发生变化的时候触发此事件
661 | *
662 | * event.detail = {height: height, duration: duration}
663 | *
664 | * **tip**: 键盘高度发生变化,keyboardheightchange 事件可能会多次触发,开发者对于相同的 height 值应该忽略掉
665 | *
666 | * 最低基础库: `2.7.0`
667 | */
668 | type InputKeyboardHeightChange<
669 | Mark extends IAnyObject = IAnyObject,
670 | TargetDataset extends IAnyObject = IAnyObject
671 | > = CustomEvent<
672 | {
673 | /** 键盘高度 */
674 | height: number
675 | duration: number
676 | },
677 | Mark,
678 | TargetDataset
679 | >
680 |
681 | /**
682 | * 取消选择时触发
683 | *
684 | * 最低基础库: 1.9.90
685 | */
686 | type PickerCancel<
687 | Mark extends IAnyObject = IAnyObject,
688 | TargetDataset extends IAnyObject = IAnyObject
689 | > = CustomEvent
690 |
691 | /**
692 | * value 改变时触发 change 事件
693 | *
694 | * event.detail = {value}
695 | *
696 | * 当 mode = region 时 (最低基础库: 1.4.0)
697 | *
698 | * value 改变时触发 change 事件,event.detail = {value, code, postcode},其中字段 code 是统计用区划代码,postcode 是邮政编码
699 | */
700 | type PickerChange<
701 | Mark extends IAnyObject = IAnyObject,
702 | TargetDataset extends IAnyObject = IAnyObject
703 | > = CustomEvent<
704 | {
705 | /**
706 | * 当 mode = selector 时, 返回当前选择的 value
707 | *
708 | * 当 mode = multiSelector 时, 返回一个索引数组
709 | *
710 | * 当 mode = time | date 时, 返回 `"12:01"` | `"2016-09-01"`
711 | *
712 | * 当 mode = region 时, 返回 `["广东省", "广州市", "海珠区"]`
713 | */
714 | value: string | number[] | [string, string, string]
715 | /** 统计用区划代码 当 mode = region 时有效 (最低基础库: 1.4.0) */
716 | code: [string, string, string]
717 | /** 邮政编码 当 mode = region 时有效 (最低基础库: 1.4.0) */
718 | postcode: string
719 | },
720 | Mark,
721 | TargetDataset
722 | >
723 |
724 | /** 列改变时触发 当 `mode = multiSelector` 时有效 */
725 | type PickerColumnChange<
726 | Mark extends IAnyObject = IAnyObject,
727 | TargetDataset extends IAnyObject = IAnyObject
728 | > = CustomEvent<
729 | {
730 | /** 修改的列 */
731 | column: number
732 | value: number
733 | },
734 | Mark,
735 | TargetDataset
736 | >
737 |
738 | /**
739 | * 滚动选择时触发 change 事件
740 | *
741 | * event.detail = {value}
742 | */
743 | type PickerViewChange<
744 | Mark extends IAnyObject = IAnyObject,
745 | TargetDataset extends IAnyObject = IAnyObject
746 | > = CustomEvent<
747 | {
748 | /** value 为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项 (下标从 0 开始) */
749 | value: number[]
750 | },
751 | Mark,
752 | TargetDataset
753 | >
754 |
755 | /**
756 | * 当滚动选择开始时候触发事件
757 | *
758 | * 最低基础库: 2.3.1
759 | */
760 | type PickerViewPickStart<
761 | Mark extends IAnyObject = IAnyObject,
762 | TargetDataset extends IAnyObject = IAnyObject
763 | > = CustomEvent
764 |
765 | /**
766 | * 当滚动选择结束时候触发事件
767 | *
768 | * 最低基础库: 2.3.1
769 | */
770 | type PickerViewPickEnd<
771 | Mark extends IAnyObject = IAnyObject,
772 | TargetDataset extends IAnyObject = IAnyObject
773 | > = CustomEvent
774 |
775 | /** radio-group 切换事件 */
776 | type RadioGroupChange<
777 | Mark extends IAnyObject = IAnyObject,
778 | TargetDataset extends IAnyObject = IAnyObject
779 | > = CustomEvent<
780 | /** radio-group 中选中项的 value */
781 | {
782 | value: string
783 | },
784 | Mark,
785 | TargetDataset
786 | >
787 |
788 | /**
789 | * 完成一次拖动后触发的事件
790 | *
791 | * event.detail = {value}
792 | */
793 | type SliderChange<
794 | Mark extends IAnyObject = IAnyObject,
795 | TargetDataset extends IAnyObject = IAnyObject
796 | > = CustomEvent<
797 | {
798 | /** slider 的数值 0 - 100 */
799 | value: number
800 | },
801 | Mark,
802 | TargetDataset
803 | >
804 |
805 | /**
806 | * 拖动过程中触发的事件
807 | *
808 | * event.detail = {value}
809 | *
810 | * 最低基础库: 1.7.0
811 | */
812 | type SliderChanging<
813 | Mark extends IAnyObject = IAnyObject,
814 | TargetDataset extends IAnyObject = IAnyObject
815 | > = SliderChange
816 |
817 | /**
818 | * checked 改变时触发 change 事件
819 | *
820 | * event.detail={ value}
821 | */
822 | type SwitchChange<
823 | Mark extends IAnyObject = IAnyObject,
824 | TargetDataset extends IAnyObject = IAnyObject
825 | > = CustomEvent<
826 | {
827 | value: boolean
828 | },
829 | Mark,
830 | TargetDataset
831 | >
832 |
833 | /**
834 | * 输入框聚焦时触发
835 | *
836 | * event.detail = { value, height },height 为键盘高度
837 | *
838 | * 在基础库 1.9.90 起支持
839 | */
840 | type TextareaFocus<
841 | Mark extends IAnyObject = IAnyObject,
842 | TargetDataset extends IAnyObject = IAnyObject
843 | > = InputFocus
844 |
845 | /**
846 | * 输入框失去焦点时触发
847 | *
848 | * event.detail = {value, cursor}
849 | *
850 | * **tip**: textarea 的 blur 事件会晚于页面上的 tap 事件,如果需要在 button 的点击事件获取 textarea,可以使用 form 的 bindsubmit。
851 | */
852 | type TextareaBlur<
853 | Mark extends IAnyObject = IAnyObject,
854 | TargetDataset extends IAnyObject = IAnyObject
855 | > = InputBlur
856 |
857 | /**
858 | * 输入框行数变化时调用
859 | *
860 | * event.detail = {height: 0, heightRpx: 0, lineCount: 0}
861 | */
862 | type TextareaLineChange<
863 | Mark extends IAnyObject = IAnyObject,
864 | TargetDataset extends IAnyObject = IAnyObject
865 | > = CustomEvent<
866 | {
867 | /** 输入框高度(px) */
868 | height: number
869 | /** 输入框高度(rpx) */
870 | heightRpx: number
871 | /** 行数 */
872 | lineCount: number
873 | /** 行高 */
874 | lineHeight: number
875 | },
876 | Mark,
877 | TargetDataset
878 | >
879 |
880 | /**
881 | * 当键盘输入时,触发 input 事件
882 | *
883 | * event.detail = {value, cursor, keyCode}
884 | *
885 | * keyCode 为键值,目前工具还不支持返回 keyCode 参数。
886 | *
887 | * **tip**: 不建议在多行文本上对用户的输入进行修改,所以 **bindinput 处理函数的返回值并不会反映到 textarea 上**
888 | */
889 | type TextareaInput<
890 | Mark extends IAnyObject = IAnyObject,
891 | TargetDataset extends IAnyObject = IAnyObject
892 | > = Input
893 |
894 | /**
895 | * 点击完成时, 触发 confirm 事件
896 | *
897 | * event.detail = {value: value}
898 | */
899 | type TextareaConfirm<
900 | Mark extends IAnyObject = IAnyObject,
901 | TargetDataset extends IAnyObject = IAnyObject
902 | > = InputConfirm
903 |
904 | /**
905 | * 键盘高度发生变化的时候触发此事件
906 | *
907 | * event.detail = {height: height, duration: duration}
908 | *
909 | * **tip**: 键盘高度发生变化,keyboardheightchange事件可能会多次触发,开发者对于相同的height值应该忽略掉
910 | *
911 | * 最低基础库: 2.7.0
912 | */
913 | type TextareaKeyboardHeightChange<
914 | Mark extends IAnyObject = IAnyObject,
915 | TargetDataset extends IAnyObject = IAnyObject
916 | > = InputKeyboardHeightChange
917 |
918 | /**
919 | * 功能页返回,且操作成功时触发, detail 格式与具体功能页相关
920 | *
921 | * 最低基础库: 2.1.0
922 | */
923 | type FunctionalNavigatorSuccess<
924 | Detail extends IAnyObject = IAnyObject
925 | > = CustomEvent
926 |
927 | /**
928 | * 功能页返回,且操作失败时触发, detail 格式与具体功能页相关
929 | *
930 | * 最低基础库: 2.1.0
931 | */
932 | type FunctionalNavigatorFail<
933 | Detail extends IAnyObject = IAnyObject
934 | > = CustomEvent
935 |
936 | /**
937 | * 当 `target="miniProgram"` 时有效,跳转小程序成功
938 | *
939 | * 最低基础库: 2.0.7
940 | */
941 | type NavigatorSuccess = CustomEvent
942 | /**
943 | * 当 `target="miniProgram"` 时有效,跳转小程序失败
944 | *
945 | * `tips`: 需要用户确认跳转 从 2.3.0 版本开始,在跳转至其他小程序前,将统一增加弹窗,询问是否跳转,用户确认后才可以跳转其他小程序。如果用户点击取消,则回调 fail cancel。
946 | *
947 | * 最低基础库: 2.0.7
948 | */
949 | type NavigatorFail = CustomEvent
950 | /**
951 | * 当 `target="miniProgram"` 时有效,跳转小程序完成
952 | *
953 | * 最低基础库: 2.0.7
954 | */
955 | type NavigatorComplete = CustomEvent
956 |
957 | /**
958 | * 当发生错误时触发 error 事件
959 | *
960 | * detail = {errMsg:MediaError.code}
961 | */
962 | type AudioError = CustomEvent<{
963 | /**
964 | * MediaError.code
965 | *
966 | * - 1 获取资源被用户禁止
967 | * - 2 网络错误
968 | * - 3 解码错误
969 | * - 4 不合适资源
970 | */
971 | errMsg: 1 | 2 | 3 | 4
972 | }>
973 |
974 | /** 当开始/继续播放时触发play事件 */
975 | type AudioPlay = CustomEvent
976 |
977 | /** 当暂停播放时触发 pause 事件 */
978 | type AudioPause = CustomEvent
979 |
980 | /**
981 | * 当播放进度改变时触发 timeupdate 事件
982 | *
983 | * detail = {currentTime, duration}
984 | */
985 | type AudioTimeUpdate = CustomEvent<{
986 | currentTime: number
987 | duration: number
988 | }>
989 |
990 | /** 当播放到末尾时触发 ended 事件 */
991 | type AudioEnded = CustomEvent
992 |
993 | /** 摄像头在非正常终止时触发,如退出后台等情况 */
994 | type CameraStop = CustomEvent
995 |
996 | /** 用户不允许使用摄像头时触发 */
997 | type CameraError = CustomEvent
998 |
999 | /**
1000 | * 相机初始化完成时触发
1001 | *
1002 | * 最低基础库: 2.7.0
1003 | */
1004 | type CameraInitDone = CustomEvent
1005 |
1006 | /**
1007 | * 在扫码识别成功时触发,仅在 mode="scanCode" 时生效
1008 | *
1009 | * 最低基础库: 2.1.0
1010 | */
1011 | type CameraScanCode = CustomEvent
1012 |
1013 | /** 当错误发生时触发,event.detail = {errMsg} */
1014 | type ImageError = CoverImageError
1015 | /** 当图片载入完毕时触发,event.detail = {height, width} */
1016 | type ImageLoad = CoverImageLoad
1017 |
1018 | /**
1019 | * 播放状态变化事件,detail = {code}
1020 | *
1021 | * 最低基础库 1.7.0
1022 | */
1023 | type LivePlayerStateChange = CustomEvent<{
1024 | /**
1025 | * 状态码
1026 | *
1027 | * - `2001` 已经连接服务器
1028 | * - `2002` 已经连接服务器,开始拉流
1029 | * - `2003` 网络接收到首个视频数据包(IDR)
1030 | * - `2004` 视频播放开始
1031 | * - `2005` 视频播放进度
1032 | * - `2006` 视频播放结束
1033 | * - `2007` 视频播放Loading
1034 | * - `2008` 解码器启动
1035 | * - `2009` 视频分辨率改变
1036 | * - `-2301` 网络断连,且经多次重连抢救无效,更多重试请自行重启播放
1037 | * - `-2302` 获取加速拉流地址失败
1038 | * - `2101` 当前视频帧解码失败
1039 | * - `2102` 当前音频帧解码失败
1040 | * - `2103` 网络断连, 已启动自动重连
1041 | * - `2104` 网络来包不稳: 可能是下行带宽不足,或由于主播端出流不均匀
1042 | * - `2105` 当前视频播放出现卡顿
1043 | * - `2106` 硬解启动失败,采用软解
1044 | * - `2107` 当前视频帧不连续,可能丢帧
1045 | * - `2108` 当前流硬解第一个I帧失败,SDK自动切软解
1046 | * - `3001` RTMP -DNS解析失败
1047 | * - `3002` RTMP服务器连接失败
1048 | * - `3003` RTMP服务器握手失败
1049 | * - `3005` RTMP 读/写失败
1050 | */
1051 | code: number
1052 | }>
1053 |
1054 | /**
1055 | * 全屏变化事件,detail = {direction, fullScreen}
1056 | *
1057 | * 最低基础库 1.7.0
1058 | */
1059 | type LivePlayerFullScreenChange = CustomEvent<{
1060 | direction: 'vertical' | 'horizontal'
1061 | fullScreen: boolean
1062 | }>
1063 |
1064 | /**
1065 | * 网络状态通知,detail = {info}
1066 | *
1067 | * 最低基础库 1.9.0
1068 | */
1069 | type LivePlayerNetStatus = CustomEvent<{
1070 | /**
1071 | * 网络状态数据
1072 | *
1073 | *
1074 | * - `videoBitrate` 当前视频编/码器输出的比特率,单位 kbps
1075 | * - `audioBitrate` 当前音频编/码器输出的比特率,单位 kbps
1076 | * - `videoFPS` 当前视频帧率
1077 | * - `videoGOP` 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
1078 | * - `netSpeed` 当前的发送/接收速度
1079 | * - `netJitter` 网络抖动情况,抖动越大,网络越不稳定
1080 | * - `videoWidth` 视频画面的宽度
1081 | * - `videoHeight` 视频画面的高度
1082 | */
1083 | info:
1084 | | 'videoBitrate'
1085 | | 'audioBitrate'
1086 | | 'videoFPS'
1087 | | 'videoGOP'
1088 | | 'netSpeed'
1089 | | 'netJitter'
1090 | | 'videoWidth'
1091 | | 'videoHeight'
1092 | }>
1093 |
1094 | /**
1095 | * 状态变化事件,detail = {code}
1096 | *
1097 | * 最低基础库: 1.7.0
1098 | */
1099 | type LivePusherStateChange = CustomEvent<{
1100 | /**
1101 | * 状态码
1102 | *
1103 | * - `1001` 已经连接推流服务器
1104 | * - `1002` 已经与服务器握手完毕,开始推流
1105 | * - `1003` 打开摄像头成功
1106 | * - `1004` 录屏启动成功
1107 | * - `1005` 推流动态调整分辨率
1108 | * - `1006` 推流动态调整码率
1109 | * - `1007` 首帧画面采集完成
1110 | * - `1008` 编码器启动
1111 | * - `-1301` 打开摄像头失败
1112 | * - `-1302` 打开麦克风失败
1113 | * - `-1303` 视频编码失败
1114 | * - `-1304` 音频编码失败
1115 | * - `-1305` 不支持的视频分辨率
1116 | * - `-1306` 不支持的音频采样率
1117 | * - `-1307` 网络断连,且经多次重连抢救无效,更多重试请自行重启推流
1118 | * - `-1308` 开始录屏失败,可能是被用户拒绝
1119 | * - `-1309` 录屏失败,不支持的Android系统版本,需要5.0以上的系统
1120 | * - `-1310` 录屏被其他应用打断了
1121 | * - `-1311` Android Mic打开成功,但是录不到音频数据
1122 | * - `-1312` 录屏动态切横竖屏失败
1123 | * - `1101` 网络状况不佳: 上行带宽太小,上传数据受阻
1124 | * - `1102` 网络断连, 已启动自动重连
1125 | * - `1103` 硬编码启动失败,采用软编码
1126 | * - `1104` 视频编码失败
1127 | * - `1105` 新美颜软编码启动失败,采用老的软编码
1128 | * - `1106` 新美颜软编码启动失败,采用老的软编码
1129 | * - `3001` RTMP -DNS解析失败
1130 | * - `3002` RTMP服务器连接失败
1131 | * - `3003` RTMP服务器握手失败
1132 | * - `3004` RTMP服务器主动断开,请检查推流地址的合法性或防盗链有效期
1133 | * - `3005` RTMP 读/写失败
1134 | */
1135 | code: number
1136 | }>
1137 |
1138 | /**
1139 | * 网络状态通知,detail = {info}
1140 | *
1141 | * 最低基础库: 1.9.0
1142 | */
1143 | type LivePusherNetStatus = CustomEvent<{
1144 | /**
1145 | * 网络状态数据
1146 | *
1147 | * -`videoBitrate` 当前视频编/码器输出的比特率,单位 kbps
1148 | * -`audioBitrate` 当前音频编/码器输出的比特率,单位 kbps
1149 | * -`videoFPS` 当前视频帧率
1150 | * -`videoGOP` 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
1151 | * -`netSpeed` 当前的发送/接收速度
1152 | * -`netJitter` 网络抖动情况,抖动越大,网络越不稳定
1153 | * -`videoWidth` 视频画面的宽度
1154 | * -`videoHeight` 视频画面的高度
1155 | */
1156 | info:
1157 | | 'videoBitrate'
1158 | | 'audioBitrate'
1159 | | 'videoFPS'
1160 | | 'videoGOP'
1161 | | 'netSpeed'
1162 | | 'netJitter'
1163 | | 'videoWidth'
1164 | | 'videoHeight'
1165 | }>
1166 |
1167 | /**
1168 | * 渲染错误事件,detail = {errMsg, errCode}
1169 | *
1170 | * `tip`: 开发者工具上暂不支持 live-pusher
1171 | *
1172 | * 最低基础库: 1.7.4
1173 | */
1174 | type LivePusherError = CustomEvent<{
1175 | errMsg: string
1176 | /**
1177 | * 错误码
1178 | *
1179 | * - `10001` 用户禁止使用摄像头
1180 | * - `10002` 用户禁止使用录音
1181 | * - `10003` 背景音资源 (BGM) 加载失败
1182 | * - `10004` 等待画面资源 (waiting-image) 加载失败
1183 | */
1184 | errCode: number
1185 | }>
1186 |
1187 | /**
1188 | * 背景音开始播放时触发
1189 | *
1190 | * 最低基础库: 2.4.0
1191 | */
1192 | type LivePusherBgmStart = CustomEvent
1193 |
1194 | /**
1195 | * 背景音进度变化时触发,detail = {progress, duration}
1196 | *
1197 | * 最低基础库: 2.4.0
1198 | */
1199 | type LivePusherBgmProgress = CustomEvent<{
1200 | progress: number
1201 | duration: number
1202 | }>
1203 |
1204 | /**
1205 | * 背景音播放完成时触发
1206 | *
1207 | * 最低基础库: 2.4.0
1208 | */
1209 | type LivePusherBgmComplete = CustomEvent
1210 |
1211 | /** 当开始/继续播放时触发play事件 */
1212 | type VideoPlay = CustomEvent
1213 |
1214 | /** 当暂停播放时触发 pause 事件 */
1215 | type VideoPause = CustomEvent
1216 |
1217 | /** 当播放到末尾时触发 ended 事件 */
1218 | type VideoEnded = CustomEvent
1219 |
1220 | /** 播放进度变化时触发,event.detail = {currentTime, duration} 。触发频率 250ms 一次 */
1221 | type VideoTimeUpdate = CustomEvent<{
1222 | currentTime: number
1223 | duration: number
1224 | }>
1225 |
1226 | /**
1227 | * 视频进入和退出全屏时触发,event.detail = {fullScreen, direction}
1228 | *
1229 | * 最低基础库: 1.4.0
1230 | */
1231 | type VideoFullScreenChange = CustomEvent<{
1232 | fullScreen: boolean
1233 | direction: 'vertical' | 'horizontal'
1234 | }>
1235 |
1236 | /**
1237 | * 视频出现缓冲时触发
1238 | *
1239 | * 最低基础库: 1.7.0
1240 | */
1241 | type VideoWaiting = CustomEvent
1242 |
1243 | /**
1244 | * 视频播放出错时触发
1245 | *
1246 | * 最低基础库: 1.7.0
1247 | */
1248 | type VideoError = CustomEvent
1249 |
1250 | /**
1251 | * 加载进度变化时触发,只支持一段加载。
1252 | *
1253 | * 最低基础库: 2.4.0
1254 | */
1255 | type VideoPregress = CustomEvent<{
1256 | /** 百分比 */
1257 | buffered: number
1258 | }>
1259 |
1260 | /**
1261 | * 加载进度变化时触发,只支持一段加载。
1262 | *
1263 | * 最低基础库: 2.4.0
1264 | */
1265 | type VoipRoomError = CustomEvent
1266 |
1267 | /**
1268 | * 点击地图时触发
1269 | *
1270 | * 2.9.0 起返回经纬度信息
1271 | */
1272 | type MapTap = CustomEvent<{
1273 | /** 经度,最低基础库 2.9.0 */
1274 | longitude: number
1275 | /** 纬度,最低基础库 2.9.0 */
1276 | latitude: number
1277 | }>
1278 |
1279 | /**
1280 | * 点击标记点时触发
1281 | *
1282 | * e.detail = {markerId}
1283 | */
1284 | type MarkerTap = CustomEvent<{
1285 | /** 标记点 ID */
1286 | markerId: number
1287 | }>
1288 |
1289 | /**
1290 | * 点击 label 时触发
1291 | *
1292 | * e.detail = {markerId}
1293 | *
1294 | * 最低基础库: 2.9.0
1295 | */
1296 | type LabelTap = MarkerTap
1297 |
1298 | /**
1299 | * 点击控件时触发
1300 | *
1301 | * e.detail = {controlId}
1302 | */
1303 | type ControlTap = CustomEvent<{
1304 | /** 控件 ID */
1305 | controlId: number
1306 | }>
1307 |
1308 | /**
1309 | * 点击 label 时触发
1310 | *
1311 | * e.detail = {markerId}
1312 | *
1313 | * 最低基础库: 1.2.0
1314 | */
1315 | type CalloutTap = MarkerTap
1316 |
1317 | /**
1318 | * 在地图渲染更新完成时触发
1319 | *
1320 | * 最低基础库: 1.6.0
1321 | */
1322 | type MapUpdated = CustomEvent
1323 |
1324 | /**
1325 | * 在地图渲染更新完成时触发
1326 | *
1327 | * 最低基础库: 1.6.0
1328 | */
1329 | type RegionChange = CustomEvent<{
1330 | /** 旋转程度,最低基础库 2.3.0 */
1331 | rotate: number
1332 | /** 缩放程度,最低基础库 2.3.0 */
1333 | skew: number
1334 | }> &
1335 | (
1336 | | {
1337 | /**
1338 | * 视野变化开始、结束时触发
1339 | *
1340 | * 视野变化开始为 `begin`
1341 | */
1342 | type: 'begin'
1343 | /**
1344 | * 导致视野变化的原因
1345 | *
1346 | * - gesture: 用户手势
1347 | * - update: 调用接口导致
1348 | */
1349 | causedBy: 'gesture' | 'update'
1350 | }
1351 | | {
1352 | /**
1353 | * 视野变化结束时触发
1354 | *
1355 | * 视野变化结束为 `end`
1356 | */
1357 | type: 'end'
1358 | /**
1359 | * 导致视野变化的原因
1360 | *
1361 | * - drag: 拖动地图导致
1362 | * - scale: 缩放导致
1363 | * - update: 调用接口导致
1364 | */
1365 | causedBy: 'drag' | 'scale' | 'update'
1366 | }
1367 | )
1368 |
1369 | /**
1370 | * 广告加载成功的回调
1371 | *
1372 | * 最低基础库: 2.2.1
1373 | */
1374 | type AdLoad = CustomEvent
1375 |
1376 | /**
1377 | * 广告加载失败的回调,event.detail = {errCode: 1002}
1378 | *
1379 | * `tip`: 监听到error回调后,开发者可以针对性的处理,比如隐藏广告组件的父容器,以保证用户体验,但不要移除广告组件,否则将无法收到bindload的回调。
1380 | *
1381 | * 最低基础库: 2.2.1
1382 | */
1383 | type AdError = CustomEvent<{
1384 | /**
1385 | * 错误码
1386 | *
1387 | * - `1000` 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
1388 | * - `1001` 参数错误 使用方法错误 可以前往developers.weixin.qq.com 确认具体教程 (小程序和小游戏分别有各自的教程,可以在顶部选项中,“设计”一栏的右侧进行切换)。
1389 | * - `1002` 广告单元无效 可能是拼写错误、或者误用了其他APP的广告ID 请重新前往mp.weixin.qq.com确认广告位ID。
1390 | * - `1003` 内部错误 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
1391 | * - `1004` 无适合的广告 广告不是每一次都会出现,这次没有出现可能是由于该用户不适合浏览广告 属于正常情况,且开发者需要针对这种情况做形态上的兼容。
1392 | * - `1005` 广告组件审核中 你的广告正在被审核,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
1393 | * - `1006` 广告组件被驳回 你的广告审核失败,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
1394 | * - `1007` 广告组件被驳回 你的广告能力已经被封禁,封禁期间无法展现广告 请前往mp.weixin.qq.com确认小程序广告封禁状态。
1395 | * - `1008` 广告单元已关闭 该广告位的广告能力已经被关闭 请前往mp.weixin.qq.com重新打开对应广告位的展现。
1396 | */
1397 | errCode: number
1398 | }>
1399 |
1400 | /**
1401 | * 广告关闭的回调
1402 | *
1403 | * 最低基础库: 2.6.5
1404 | */
1405 | type AdClose = CustomEvent
1406 |
1407 | /**
1408 | * 网页向小程序 postMessage 时,会在特定时机 (小程序后退、组件销毁、分享) 触发并收到消息。e.detail = { data }
1409 | *
1410 | * 最低基础库: 1.6.4
1411 | */
1412 | type WebviewMessage = CustomEvent<{
1413 | /** 多次 postMessage 的参数组成的数组 */
1414 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
1415 | data: any[]
1416 | }>
1417 |
1418 | /**
1419 | * 网页加载成功时候触发此事件。e.detail = { src }
1420 | *
1421 | * 最低基础库: 1.6.4
1422 | */
1423 | type WebviewLoad = CustomEvent<{
1424 | src: string
1425 | }>
1426 |
1427 | /**
1428 | * 网页加载失败的时候触发此事件。e.detail = { src }
1429 | *
1430 | * 最低基础库: 1.6.4
1431 | */
1432 | type WebviewError = CustomEvent<{
1433 | src: string
1434 | }>
1435 | }
1436 |
--------------------------------------------------------------------------------
/typings/types/wx/lib.wx.page.d.ts:
--------------------------------------------------------------------------------
1 | /*! *****************************************************************************
2 | Copyright (c) 2021 Tencent, Inc. All rights reserved.
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | this software and associated documentation files (the "Software"), to deal in
6 | the Software without restriction, including without limitation the rights to
7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
8 | of the Software, and to permit persons to whom the Software is furnished to do
9 | so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all
12 | copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 | SOFTWARE.
21 | ***************************************************************************** */
22 |
23 | declare namespace WechatMiniprogram.Page {
24 | type Instance<
25 | TData extends DataOption,
26 | TCustom extends CustomOption
27 | > = OptionalInterface &
28 | InstanceProperties &
29 | InstanceMethods &
30 | Data &
31 | TCustom
32 | type Options<
33 | TData extends DataOption,
34 | TCustom extends CustomOption
35 | > = (TCustom & Partial> & Partial) &
36 | ThisType>
37 | type TrivialInstance = Instance
38 | interface Constructor {
39 | (
40 | options: Options
41 | ): void
42 | }
43 | interface ILifetime {
44 | /** 生命周期回调—监听页面加载
45 | *
46 | * 页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
47 | */
48 | onLoad(
49 | /** 打开当前页面路径中的参数 */
50 | query: Record
51 | ): void | Promise
52 | /** 生命周期回调—监听页面显示
53 | *
54 | * 页面显示/切入前台时触发。
55 | */
56 | onShow(): void | Promise
57 | /** 生命周期回调—监听页面初次渲染完成
58 | *
59 | * 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
60 | *
61 |
62 | * 注意:对界面内容进行设置的 API 如`wx.setNavigationBarTitle`,请在`onReady`之后进行。
63 | */
64 | onReady(): void | Promise
65 | /** 生命周期回调—监听页面隐藏
66 | *
67 | * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,小程序切入后台等。
68 | */
69 | onHide(): void | Promise
70 | /** 生命周期回调—监听页面卸载
71 | *
72 | * 页面卸载时触发。如`redirectTo`或`navigateBack`到其他页面时。
73 | */
74 | onUnload(): void | Promise
75 | /** 监听用户下拉动作
76 | *
77 | * 监听用户下拉刷新事件。
78 | * - 需要在`app.json`的`window`选项中或页面配置中开启`enablePullDownRefresh`。
79 | * - 可以通过`wx.startPullDownRefresh`触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
80 | * - 当处理完数据刷新后,`wx.stopPullDownRefresh`可以停止当前页面的下拉刷新。
81 | */
82 | onPullDownRefresh(): void | Promise
83 | /** 页面上拉触底事件的处理函数
84 | *
85 | * 监听用户上拉触底事件。
86 | * - 可以在`app.json`的`window`选项中或页面配置中设置触发距离`onReachBottomDistance`。
87 | * - 在触发距离内滑动期间,本事件只会被触发一次。
88 | */
89 | onReachBottom(): void | Promise
90 | /** 用户点击右上角转发
91 | *
92 | * 监听用户点击页面内转发按钮(`