annil 1.9.0 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/api/SubComponent/SubComponentType.d.ts +1 -1
- package/dist/api/SubComponent/index.d.ts +9 -1
- package/dist/api/SubComponent/index.js.map +1 -1
- package/dist/api/wxSugar.d.ts +10 -1
- package/dist/api/wxSugar.js +24 -1
- package/dist/api/wxSugar.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/thirdLib/wm/index.d.ts +1 -0
- package/dist/thirdLib/wm/map.d.ts +201 -0
- package/dist/thirdLib/wm/map.js +2 -0
- package/dist/thirdLib/wm/map.js.map +1 -0
- package/package.json +1 -1
- package/src/api/SubComponent/SubComponentType.ts +1 -0
- package/src/api/SubComponent/SubComputed/test/error.test.ts +33 -0
- package/src/api/SubComponent/SubComputed/test/normal.test.ts +12 -0
- package/src/api/SubComponent/SubData/test/error.test.ts +7 -0
- package/src/api/SubComponent/SubStore/test/error.test.ts +15 -3
- package/src/api/SubComponent/index.ts +57 -7
- package/src/api/wxSugar.ts +29 -1
- package/src/index.ts +2 -1
- package/src/thirdLib/wm/index.ts +2 -0
- package/src/thirdLib/wm/map.ts +266 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,25 @@
|
|
|
4
4
|
|
|
5
5
|
* 解决DetailedType不接收接口类型的错误 ([ae8acbf](https://github.com/missannil/annil/commit/ae8acbfc2e62f99db565c448ad9253aa549e78bb))
|
|
6
6
|
|
|
7
|
+
## [1.10.1](https://github.com/missannil/annil/compare/v1.10.0...v1.10.1) (2024-11-11)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* 上次覆盖率没通过 ([d5b4f23](https://github.com/missannil/annil/commit/d5b4f2398974878ae92d87c4155265554e08e5e7))
|
|
13
|
+
|
|
14
|
+
## [1.10.0](https://github.com/missannil/annil/compare/v1.9.0...v1.10.0) (2024-11-11)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* 增加原生组件类型 Wm.Map,增加API navigateBack ([a58fed1](https://github.com/missannil/annil/commit/a58fed110582a6f5edd0013f920a69769d08e1a8))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* _SubComponentType 增加undefined类型,subComponent组件配置增加与root数据字段和彼此内部字段重复检测 ([eacc152](https://github.com/missannil/annil/commit/eacc152c7a8fe8953202fa53aff2742c0066dccc))
|
|
25
|
+
|
|
7
26
|
## [1.9.0](https://github.com/missannil/annil/compare/v1.8.3...v1.9.0) (2024-10-23)
|
|
8
27
|
|
|
9
28
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SelectKeys } from "hry-types/src/Object/_api";
|
|
2
2
|
import type { Composed, CustomEventsTags } from "../RootComponent/CustomEvents/CustomEventsTag";
|
|
3
3
|
type _SubComponentType = {
|
|
4
|
-
[k in string]: string | number | bigint | boolean | symbol | null | Record<string, any> | unknown[] | CustomEventsTags;
|
|
4
|
+
[k in string]: string | number | bigint | boolean | symbol | null | undefined | Record<string, any> | unknown[] | CustomEventsTags;
|
|
5
5
|
};
|
|
6
6
|
type _Validator<O, ErrKeys = Exclude<keyof O, SelectKeys<O, Composed, "contains->">>> = [ErrKeys] extends [never] ? _SubComponentType : `${ErrKeys & string} 不是穿透事件`;
|
|
7
7
|
/**
|
|
@@ -38,7 +38,15 @@ import type { CreateSubComponentDoc } from "./SubReturnType/CreateSubComponentDo
|
|
|
38
38
|
import type { SubStoreConstraint } from "./SubStore/SubStoreConstraint";
|
|
39
39
|
import type { SubStoreOption } from "./SubStore/SubStoreOption";
|
|
40
40
|
import type { SubWatchOption } from "./SubWatch/SubWatchOption";
|
|
41
|
-
type Options<RootDoc extends RootComponentType, IsPage extends boolean, CurrentCompDoc extends ComponentType, Prefix extends string, AllRootDataDoc extends object, TInherit extends object, TSubData extends object, TSubStore extends object, TSubComputed extends object, TEvents extends object, TSubMethods extends SubMethodsConstraint, InheritDoc extends object, SubDataDoc extends object, SubStoreDoc extends object, SubComputedDoc extends object, SubEventsDoc extends object, SubMethodsDoc extends object, CompDocKeys extends PropertyKey = keyof CurrentCompDoc["properties"]> = SubInheritOption<TInherit,
|
|
41
|
+
type Options<RootDoc extends RootComponentType, IsPage extends boolean, CurrentCompDoc extends ComponentType, Prefix extends string, AllRootDataDoc extends object, TInherit extends object, TSubData extends object, TSubStore extends object, TSubComputed extends object, TEvents extends object, TSubMethods extends SubMethodsConstraint, InheritDoc extends object, SubDataDoc extends object, SubStoreDoc extends object, SubComputedDoc extends object, SubEventsDoc extends object, SubMethodsDoc extends object, CompDocKeys extends PropertyKey = keyof CurrentCompDoc["properties"]> = SubInheritOption<TInherit, {
|
|
42
|
+
[k in keyof NoInfer<TInherit>]: k extends keyof (AllRootDataDoc) ? never : k extends CompDocKeys ? k : never;
|
|
43
|
+
}[keyof NoInfer<TInherit>]> & SubDataOption<TSubData, {
|
|
44
|
+
[k in keyof NoInfer<TSubData>]: k extends keyof (AllRootDataDoc) ? never : k extends Exclude<CompDocKeys, (keyof (InheritDoc))> ? k : k extends InnerFields<Prefix> ? k : never;
|
|
45
|
+
}[keyof NoInfer<TSubData>]> & SubStoreOption<TSubStore, {
|
|
46
|
+
[k in keyof NoInfer<TSubStore>]: k extends keyof (AllRootDataDoc & SubDataDoc) ? never : k extends Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc))> ? k : k extends InnerFields<Prefix> ? k : never;
|
|
47
|
+
}[keyof NoInfer<TSubStore>]> & SubComputedOption<TSubComputed, {
|
|
48
|
+
[k in keyof NoInfer<TSubComputed>]: k extends keyof (AllRootDataDoc & SubDataDoc & SubStoreDoc) ? never : k extends Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc & SubStoreDoc))> ? k : k extends InnerFields<Prefix> ? k : never;
|
|
49
|
+
}[keyof NoInfer<TSubComputed>], {
|
|
42
50
|
data: ComputeObject<AllRootDataDoc & Replace<SubComputedDoc, Required<CurrentCompDoc["properties"]>> & SubStoreDoc & SubDataDoc & IInjectAllData>;
|
|
43
51
|
}> & SubEventsOption<TEvents, SubEventsDoc, keyof SubEventsConstraint<CurrentCompDoc>> & SubMethodsOption<TSubMethods, Prefix, keyof (CurrentCompDoc["customEvents"] & SubEventsDoc)> & SubPageLifetimesOption<IsPage, NonNullable<RootDoc["properties"]>> & SubLifetimesOption & SubWatchOption<SubComputedDoc & SubDataDoc & AllRootDataDoc & SubStoreDoc & IInjectStore> & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "export" | "observers" | "relations">> & SubObserversOption<SubComputedDoc & SubDataDoc & AllRootDataDoc & SubStoreDoc & IInjectStore> & ThisType<SubInstance<SubMethodsDoc & RootDoc["methods"], Replace<SubDataDoc, Required<CurrentCompDoc["properties"]>>, AllRootDataDoc & Replace<SubDataDoc & SubComputedDoc & SubStoreDoc, Required<CurrentCompDoc["properties"]>>, NonNullable<RootDoc["customEvents"]>, SubStoreDoc>>;
|
|
44
52
|
type SubComponentConstructor<TRootDoc extends RootComponentType, TOriginalCompDoc extends ComponentType, TSupplementalPrefix extends string = "", IsPage extends boolean = TRootDoc["isPage"] extends true ? true : false, CurrentPrefix extends string = `${GetComponentPrefix<TOriginalCompDoc>}${Capitalize<TSupplementalPrefix>}`, CurrentCompDoc extends ComponentType = IfExtends<TSupplementalPrefix, "", TOriginalCompDoc & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/SubComponent/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/SubComponent/index.ts"],"names":[],"mappings":"AA8RA;;;GAGG;AACH,MAAM,UAAU,YAAY;IAK1B,8DAA8D;IAC9D,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAkC,CAAQ,CAAC;AACvE,CAAC"}
|
package/dist/api/wxSugar.d.ts
CHANGED
|
@@ -16,6 +16,15 @@ type NavigateToOption<T extends PageDoc> = {
|
|
|
16
16
|
* test页面onLoad(data)的参数data接受内容为` data = {num:"123",obj:"{"name":"zhao"}"}`即默认的url传的数据值为字符串,需要在接收时自行解析(JSON.parse)。且url采取ASCII编码只能接受0x20-0x7e区间的符号。无法使用一些特殊符号 如 ` :/?#[]@!$&'()*+,;= `。
|
|
17
17
|
* navigateTo API 为 wx.navigateTo的语法糖,增加了data字段,最终的url数据拼接了通过encodeURIComponent编码(支持默认忽略的特殊符号)的data字段,在跳转页面的onload中通过decodeURIComponent解析url赋值给实例的data对象。为求使用时更加方便(无需对参数data解析再赋值)。且有ts类型提示。
|
|
18
18
|
*/
|
|
19
|
-
export declare function navigateTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc
|
|
19
|
+
export declare function navigateTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc>>, onBack?: (res: unknown) => void): Promise<WechatMiniprogram.NavigateToSuccessCallbackResult>;
|
|
20
|
+
type WMNavigateBackOption = WechatMiniprogram.NavigateBackOption;
|
|
21
|
+
type NavigateBackOption<Data> = WMNavigateBackOption & {
|
|
22
|
+
data?: Data;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* @param options
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
export declare function navigateBack<Data, T extends NavigateBackOption<Data> = NavigateBackOption<Data>>(options?: T): WechatMiniprogram.PromisifySuccessResult<T, WMNavigateBackOption>;
|
|
20
29
|
export declare function redirectTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc>>): Promise<WechatMiniprogram.GeneralCallbackResult>;
|
|
21
30
|
export {};
|
package/dist/api/wxSugar.js
CHANGED
|
@@ -10,12 +10,14 @@ function _encodeURIComponent(option) {
|
|
|
10
10
|
Reflect.deleteProperty(option, "data");
|
|
11
11
|
return Object.assign(result, option);
|
|
12
12
|
}
|
|
13
|
+
const backFuncs = [];
|
|
13
14
|
/**
|
|
14
15
|
* 页面onload参数中接受的数据值是传递的url解析后的字符串。例如:A页面通过`wx.navigateTo({url:'/pages/test/test?num=123&obj={"name":"zhao"}'})`
|
|
15
16
|
* test页面onLoad(data)的参数data接受内容为` data = {num:"123",obj:"{"name":"zhao"}"}`即默认的url传的数据值为字符串,需要在接收时自行解析(JSON.parse)。且url采取ASCII编码只能接受0x20-0x7e区间的符号。无法使用一些特殊符号 如 ` :/?#[]@!$&'()*+,;= `。
|
|
16
17
|
* navigateTo API 为 wx.navigateTo的语法糖,增加了data字段,最终的url数据拼接了通过encodeURIComponent编码(支持默认忽略的特殊符号)的data字段,在跳转页面的onload中通过decodeURIComponent解析url赋值给实例的data对象。为求使用时更加方便(无需对参数data解析再赋值)。且有ts类型提示。
|
|
17
18
|
*/
|
|
18
|
-
export function navigateTo(option) {
|
|
19
|
+
export function navigateTo(option, onBack) {
|
|
20
|
+
backFuncs.push(onBack);
|
|
19
21
|
// @ts-ignore 隐式索引
|
|
20
22
|
if (!option.data) {
|
|
21
23
|
return wx.navigateTo(option);
|
|
@@ -24,6 +26,27 @@ export function navigateTo(option) {
|
|
|
24
26
|
return wx.navigateTo(_encodeURIComponent(option));
|
|
25
27
|
}
|
|
26
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* @param options
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
export function navigateBack(options) {
|
|
34
|
+
const backFunc = backFuncs.pop();
|
|
35
|
+
if (backFunc) {
|
|
36
|
+
if (!options || options.data === undefined) {
|
|
37
|
+
throw new Error("navigateBack 需要带有data参数的配置对象,因为返回的组件需要data数据");
|
|
38
|
+
}
|
|
39
|
+
const data = options.data;
|
|
40
|
+
const complete = options.complete;
|
|
41
|
+
options.complete = (res) => {
|
|
42
|
+
backFunc(data);
|
|
43
|
+
if (complete) {
|
|
44
|
+
complete(res);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return wx.navigateBack(options);
|
|
49
|
+
}
|
|
27
50
|
export function redirectTo(option) {
|
|
28
51
|
// @ts-ignore 隐式索引
|
|
29
52
|
if (!option.data) {
|
package/dist/api/wxSugar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wxSugar.js","sourceRoot":"","sources":["../../src/api/wxSugar.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAwBnD;;GAEG;AACH,SAAS,mBAAmB,CAC1B,MAAuE;IAEvE,MAAM,MAAM,GAAuB;QACjC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,IACnC,kBAAkB,CAChB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAE/B,EAAE;KACH,CAAC;IAEF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;
|
|
1
|
+
{"version":3,"file":"wxSugar.js","sourceRoot":"","sources":["../../src/api/wxSugar.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAwBnD;;GAEG;AACH,SAAS,mBAAmB,CAC1B,MAAuE;IAEvE,MAAM,MAAM,GAAuB;QACjC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,IACnC,kBAAkB,CAChB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAE/B,EAAE;KACH,CAAC;IAEF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AACD,MAAM,SAAS,GAAmD,EAAE,CAAC;AACrE;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,MAA2C,EAC3C,MAA+B;IAE/B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,UAAU,CAClB,mBAAmB,CAAC,MAAuD,CAAC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAID;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAW;IAEX,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;IACjC,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AACD,MAAM,UAAU,UAAU,CACxB,MAA2C;IAE3C,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,UAAU,CAClB,mBAAmB,CAAC,MAAuD,CAAC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { DefineComponent } from "./api/DefineComponent";
|
|
|
2
2
|
import { type IInjectInfo, instanceConfig } from "./api/InstanceInject/instanceConfig";
|
|
3
3
|
import { RootComponent } from "./api/RootComponent";
|
|
4
4
|
import { SubComponent } from "./api/SubComponent";
|
|
5
|
-
import { navigateTo, redirectTo } from "./api/wxSugar";
|
|
5
|
+
import { navigateBack, navigateTo, redirectTo } from "./api/wxSugar";
|
|
6
6
|
import type { CreateComponentType } from "./types/CreateComponentType";
|
|
7
7
|
import type { DetailedType } from "./types/DetailedType";
|
|
8
8
|
import type { ExtendComponentType } from "./types/ExtendComponentType";
|
|
@@ -11,4 +11,4 @@ export * from "./utils/_utils";
|
|
|
11
11
|
export type { Bubbles, BubblesCapture, BubblesCaptureComposed, BubblesComposed, Capture, CaptureComposed, Composed, CustomEventsTags, } from "./api/RootComponent/CustomEvents/CustomEventsTag";
|
|
12
12
|
export type { Vant, Wm } from "./thirdLib";
|
|
13
13
|
export type { CurrentTargetDataset, Dataset, Detail, Mark, TargetDataset, WMBaseEvent, WMCustomEvent, } from "./types/OfficialTypeAlias";
|
|
14
|
-
export { type CreateComponentType, DefineComponent, type DetailedType, type ExtendComponentType, type IInjectInfo, instanceConfig, navigateTo, type ParamsEqual, redirectTo, RootComponent, SubComponent, };
|
|
14
|
+
export { type CreateComponentType, DefineComponent, type DetailedType, type ExtendComponentType, type IInjectInfo, instanceConfig, navigateBack, navigateTo, type ParamsEqual, redirectTo, RootComponent, SubComponent, };
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { DefineComponent } from "./api/DefineComponent";
|
|
|
2
2
|
import { instanceConfig } from "./api/InstanceInject/instanceConfig";
|
|
3
3
|
import { RootComponent } from "./api/RootComponent";
|
|
4
4
|
import { SubComponent } from "./api/SubComponent";
|
|
5
|
-
import { navigateTo, redirectTo } from "./api/wxSugar";
|
|
5
|
+
import { navigateBack, navigateTo, redirectTo } from "./api/wxSugar";
|
|
6
6
|
export * from "./utils/_utils";
|
|
7
|
-
export { DefineComponent, instanceConfig, navigateTo, redirectTo, RootComponent, SubComponent, };
|
|
7
|
+
export { DefineComponent, instanceConfig, navigateBack, navigateTo, redirectTo, RootComponent, SubComponent, };
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAKrE,cAAc,gBAAgB,CAAC;AAwB/B,OAAO,EAEL,eAAe,EAIf,cAAc,EACd,YAAY,EACZ,UAAU,EAEV,UAAU,EACV,aAAa,EACb,YAAY,GACb,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import type { CreateComponentType } from "../../types/CreateComponentType";
|
|
2
|
+
type RegionChangeBegin = {
|
|
3
|
+
type: "begin";
|
|
4
|
+
causedBy: "gesture" | "update";
|
|
5
|
+
};
|
|
6
|
+
export type MarkLocation = {
|
|
7
|
+
latitude: number;
|
|
8
|
+
longitude: number;
|
|
9
|
+
};
|
|
10
|
+
type RegionChangeEnd = {
|
|
11
|
+
type: "end";
|
|
12
|
+
causedBy: "drag" | "scale" | "update";
|
|
13
|
+
centerLocation: MarkLocation;
|
|
14
|
+
region: {
|
|
15
|
+
northeast: MarkLocation;
|
|
16
|
+
southwest: MarkLocation;
|
|
17
|
+
};
|
|
18
|
+
rotate: number;
|
|
19
|
+
scale: number;
|
|
20
|
+
skew: number;
|
|
21
|
+
};
|
|
22
|
+
type RegionChangeDetail = RegionChangeBegin | RegionChangeEnd;
|
|
23
|
+
export type Callout = {
|
|
24
|
+
content: string;
|
|
25
|
+
display: "ALWAYS" | "BYCLICK";
|
|
26
|
+
color?: string;
|
|
27
|
+
fontSize?: string | number;
|
|
28
|
+
borderWidth?: number;
|
|
29
|
+
borderRadius?: number;
|
|
30
|
+
borderColor?: string;
|
|
31
|
+
bgColor?: string;
|
|
32
|
+
padding?: number;
|
|
33
|
+
textAlign?: "center" | "left" | "right";
|
|
34
|
+
/**
|
|
35
|
+
* 横向偏移量,向右为正数 number 2.11.0
|
|
36
|
+
*/
|
|
37
|
+
anchorX?: number;
|
|
38
|
+
/**
|
|
39
|
+
* anchorY 纵向偏移量,向下为正数 number 2.11.0
|
|
40
|
+
*/
|
|
41
|
+
anchorYL?: number;
|
|
42
|
+
};
|
|
43
|
+
export type Marker = {
|
|
44
|
+
id: number;
|
|
45
|
+
width: number | string;
|
|
46
|
+
height: number | string;
|
|
47
|
+
clusterId?: number;
|
|
48
|
+
joinCluster?: boolean;
|
|
49
|
+
latitude: number;
|
|
50
|
+
longitude: number;
|
|
51
|
+
title?: string;
|
|
52
|
+
zIndex?: number;
|
|
53
|
+
iconPath: string;
|
|
54
|
+
rotate?: number;
|
|
55
|
+
alpha?: number;
|
|
56
|
+
callout?: Callout;
|
|
57
|
+
customCallout?: Callout;
|
|
58
|
+
label?: Callout;
|
|
59
|
+
anchor?: {
|
|
60
|
+
x: number;
|
|
61
|
+
y: number;
|
|
62
|
+
};
|
|
63
|
+
ariaLabel?: string;
|
|
64
|
+
collisionRelation?: string;
|
|
65
|
+
collision?: string;
|
|
66
|
+
};
|
|
67
|
+
export type Circle = {
|
|
68
|
+
latitude: number;
|
|
69
|
+
longitude: number;
|
|
70
|
+
radius: number;
|
|
71
|
+
color?: string;
|
|
72
|
+
fillColor?: string;
|
|
73
|
+
strokeWidth?: number;
|
|
74
|
+
level?: string;
|
|
75
|
+
};
|
|
76
|
+
export type Polygon = {
|
|
77
|
+
dashArray?: number[];
|
|
78
|
+
points: MarkLocation[];
|
|
79
|
+
strokeWidth?: number;
|
|
80
|
+
strokeColor?: string;
|
|
81
|
+
fillColor?: string;
|
|
82
|
+
zIndex?: number;
|
|
83
|
+
level?: string;
|
|
84
|
+
};
|
|
85
|
+
export type Polyline = {
|
|
86
|
+
points: MarkLocation[];
|
|
87
|
+
color?: string;
|
|
88
|
+
colorList?: string[];
|
|
89
|
+
width?: number;
|
|
90
|
+
dottedLine?: boolean;
|
|
91
|
+
arrowLine?: boolean;
|
|
92
|
+
arrowIconPath?: string;
|
|
93
|
+
borderColor?: string;
|
|
94
|
+
borderWidth?: number;
|
|
95
|
+
level?: string;
|
|
96
|
+
textStyle?: TextStyle;
|
|
97
|
+
segmentTexts?: SegmentText[];
|
|
98
|
+
};
|
|
99
|
+
export type TextStyle = {
|
|
100
|
+
textColor?: string;
|
|
101
|
+
strokeColor?: string;
|
|
102
|
+
fontSize?: number;
|
|
103
|
+
};
|
|
104
|
+
export type SegmentText = {
|
|
105
|
+
name: string;
|
|
106
|
+
startIndex: string;
|
|
107
|
+
endIndex: number;
|
|
108
|
+
};
|
|
109
|
+
export type Map = CreateComponentType<"map", {
|
|
110
|
+
properties: {
|
|
111
|
+
latitude: number;
|
|
112
|
+
longitude: number;
|
|
113
|
+
scale?: number;
|
|
114
|
+
minScale?: number;
|
|
115
|
+
maxScale?: number;
|
|
116
|
+
markers?: Marker[];
|
|
117
|
+
covers?: Marker[];
|
|
118
|
+
polyline?: Polyline[];
|
|
119
|
+
circles?: Circle[];
|
|
120
|
+
controls?: Marker[];
|
|
121
|
+
includePoints?: Marker[];
|
|
122
|
+
/**
|
|
123
|
+
* 显示带有方向的当前定位点 1.0.0
|
|
124
|
+
*/
|
|
125
|
+
showLocation?: boolean;
|
|
126
|
+
polygons?: Polygon[];
|
|
127
|
+
subkey?: string;
|
|
128
|
+
layerStyle?: number;
|
|
129
|
+
rotate?: number;
|
|
130
|
+
skew?: number;
|
|
131
|
+
enable3D?: boolean;
|
|
132
|
+
showCompass?: boolean;
|
|
133
|
+
showScale?: boolean;
|
|
134
|
+
enableOverlooking?: boolean;
|
|
135
|
+
enableAutoMaxOverlooking?: boolean;
|
|
136
|
+
enableZoom?: boolean;
|
|
137
|
+
enableScroll?: boolean;
|
|
138
|
+
enableRotate?: boolean;
|
|
139
|
+
enableSatellite?: boolean;
|
|
140
|
+
enableTraffic?: boolean;
|
|
141
|
+
enablePOI?: boolean;
|
|
142
|
+
enableBuilding?: boolean;
|
|
143
|
+
setting?: object;
|
|
144
|
+
};
|
|
145
|
+
customEvents: {
|
|
146
|
+
tap: MarkLocation;
|
|
147
|
+
markertap: {
|
|
148
|
+
markerId: number;
|
|
149
|
+
};
|
|
150
|
+
labeltap: {
|
|
151
|
+
markerId: number;
|
|
152
|
+
};
|
|
153
|
+
controltap: {
|
|
154
|
+
controlId: number;
|
|
155
|
+
};
|
|
156
|
+
callouttap: {
|
|
157
|
+
markerId: number;
|
|
158
|
+
};
|
|
159
|
+
updated: undefined;
|
|
160
|
+
/**
|
|
161
|
+
* 视野改变时,regionchange 会触发两次,返回的 type 值分别为 begin 和 end。
|
|
162
|
+
* 2.8.0 起 begin 阶段返回 causedBy,有效值为 gesture(手势触发) & update(接口触发)
|
|
163
|
+
* 2.3.0 起 end 阶段返回 causedBy,有效值为 drag(拖动导致)、scale(缩放导致)、update(调用更新接口导致)
|
|
164
|
+
*/
|
|
165
|
+
regionchange: RegionChangeDetail;
|
|
166
|
+
poitap: {
|
|
167
|
+
name: string;
|
|
168
|
+
longitude: number;
|
|
169
|
+
latitude: number;
|
|
170
|
+
};
|
|
171
|
+
polylinetap: {
|
|
172
|
+
longitude: number;
|
|
173
|
+
latitude: number;
|
|
174
|
+
};
|
|
175
|
+
abilitysuccess: {
|
|
176
|
+
ability: string;
|
|
177
|
+
errCode: number;
|
|
178
|
+
errMsg: string;
|
|
179
|
+
};
|
|
180
|
+
abilityfail: {
|
|
181
|
+
ability: string;
|
|
182
|
+
errCode: number;
|
|
183
|
+
errMsg: string;
|
|
184
|
+
};
|
|
185
|
+
authsuccess: {
|
|
186
|
+
errCode: number;
|
|
187
|
+
errMsg: string;
|
|
188
|
+
};
|
|
189
|
+
interpolatepoint: {
|
|
190
|
+
markerId: number;
|
|
191
|
+
longitude: number;
|
|
192
|
+
latitude: number;
|
|
193
|
+
animationStatus: "interpolating" | "complete";
|
|
194
|
+
};
|
|
195
|
+
error: {
|
|
196
|
+
longitude: number;
|
|
197
|
+
latitude: number;
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
}>;
|
|
201
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../src/thirdLib/wm/map.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -53,3 +53,36 @@ SubComponent<{}, OnlyPropsCompDoc>()({
|
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
55
|
});
|
|
56
|
+
// 4 与data的内部字段重复
|
|
57
|
+
SubComponent<{}, OnlyPropsCompDoc>()({
|
|
58
|
+
data: {
|
|
59
|
+
_aaa_fff: 123,
|
|
60
|
+
},
|
|
61
|
+
computed: {
|
|
62
|
+
// @ts-expect-error 与data的内部字段重复
|
|
63
|
+
_aaa_fff(): number {
|
|
64
|
+
return 123;
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
// 5 与store的内部字段重复
|
|
69
|
+
SubComponent<{}, OnlyPropsCompDoc>()({
|
|
70
|
+
store: {
|
|
71
|
+
_aaa_ccc: () => 123,
|
|
72
|
+
},
|
|
73
|
+
computed: {
|
|
74
|
+
// @ts-expect-error 与store的内部字段重复
|
|
75
|
+
_aaa_ccc(): number {
|
|
76
|
+
return 123;
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
// 6 与root字段重复
|
|
81
|
+
SubComponent<{ data: { _aaa_ccc: 123 } }, OnlyPropsCompDoc>()({
|
|
82
|
+
computed: {
|
|
83
|
+
// @ts-expect-error 与store的内部字段重复
|
|
84
|
+
_aaa_ccc(): number {
|
|
85
|
+
return 123;
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
});
|
|
@@ -168,3 +168,15 @@ SubComponent<{ data: { _num: number } }, $aaa>()({
|
|
|
168
168
|
},
|
|
169
169
|
},
|
|
170
170
|
});
|
|
171
|
+
|
|
172
|
+
// computed中可写 内部字段
|
|
173
|
+
SubComponent<{ data: { _num: number } }, $aaa>()({
|
|
174
|
+
computed: {
|
|
175
|
+
aaa_isReady() {
|
|
176
|
+
return true;
|
|
177
|
+
},
|
|
178
|
+
_aaa_ccc(): string {
|
|
179
|
+
return "123";
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
});
|
|
@@ -16,15 +16,15 @@ type DocA = ComponentType<{
|
|
|
16
16
|
|
|
17
17
|
SubComponent<{
|
|
18
18
|
properties: {
|
|
19
|
-
|
|
20
|
-
aaa_num: number;
|
|
19
|
+
str: string;
|
|
21
20
|
};
|
|
22
21
|
}, DocA>()({
|
|
23
22
|
inherit: {
|
|
24
|
-
aaa_str: "
|
|
23
|
+
aaa_str: "str",
|
|
25
24
|
},
|
|
26
25
|
data: {
|
|
27
26
|
aaa_num: 20,
|
|
27
|
+
_aaa_xxx: 30,
|
|
28
28
|
},
|
|
29
29
|
store: {
|
|
30
30
|
// @ts-expect-error 1 与 inherit 字段重复
|
|
@@ -33,5 +33,17 @@ SubComponent<{
|
|
|
33
33
|
aaa_num: () => user.age,
|
|
34
34
|
// @ts-expect-error 3 超出约束字段
|
|
35
35
|
num: () => user.age,
|
|
36
|
+
// @ts-expect-error 4 与data的内部字段重复
|
|
37
|
+
_aaa_xxx: () => user.age,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
SubComponent<{
|
|
41
|
+
properties: {
|
|
42
|
+
aaa_num: number;
|
|
43
|
+
};
|
|
44
|
+
}, DocA>()({
|
|
45
|
+
store: {
|
|
46
|
+
// @ts-expect-error 与 root 的 properties 字段重复
|
|
47
|
+
aaa_num: () => 123,
|
|
36
48
|
},
|
|
37
49
|
});
|
|
@@ -38,7 +38,10 @@ import type { CreateSubComponentDoc } from "./SubReturnType/CreateSubComponentDo
|
|
|
38
38
|
import type { SubStoreConstraint } from "./SubStore/SubStoreConstraint";
|
|
39
39
|
import type { SubStoreOption } from "./SubStore/SubStoreOption";
|
|
40
40
|
import type { SubWatchOption } from "./SubWatch/SubWatchOption";
|
|
41
|
-
|
|
41
|
+
// type getLegalKeys<K> = K extends Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc))> ? K
|
|
42
|
+
// : K extends keyof AllRootDataDoc ? never
|
|
43
|
+
// : K extends Extract<Exclude<keyof NoInfer<TSubStore>, keyof SubDataDoc>, InnerFields<Prefix>> ? K
|
|
44
|
+
// : never;
|
|
42
45
|
type Options<
|
|
43
46
|
RootDoc extends RootComponentType,
|
|
44
47
|
IsPage extends boolean,
|
|
@@ -59,21 +62,68 @@ type Options<
|
|
|
59
62
|
SubMethodsDoc extends object,
|
|
60
63
|
CompDocKeys extends PropertyKey = keyof CurrentCompDoc["properties"],
|
|
61
64
|
> =
|
|
62
|
-
& SubInheritOption<
|
|
65
|
+
& SubInheritOption<
|
|
66
|
+
TInherit,
|
|
67
|
+
{
|
|
68
|
+
[k in keyof NoInfer<TInherit>]:
|
|
69
|
+
// 与根组件的数据字段重复的不合法
|
|
70
|
+
k extends keyof (AllRootDataDoc) ? never
|
|
71
|
+
// 继承CompDocKeys的字段合法
|
|
72
|
+
: k extends CompDocKeys ? k
|
|
73
|
+
: never;
|
|
74
|
+
}[keyof NoInfer<TInherit>]
|
|
75
|
+
>
|
|
63
76
|
& SubDataOption<
|
|
64
77
|
TSubData,
|
|
65
78
|
// 合法的配置
|
|
66
|
-
|
|
79
|
+
{
|
|
80
|
+
[k in keyof NoInfer<TSubData>]:
|
|
81
|
+
// 与根组件和InheritDoc的数据字段重复的不合法
|
|
82
|
+
k extends keyof (AllRootDataDoc) ? never
|
|
83
|
+
// 继承剩余的Doc的字段合法
|
|
84
|
+
: k extends Exclude<CompDocKeys, (keyof (InheritDoc))> ? k
|
|
85
|
+
// 内部字段合法
|
|
86
|
+
: k extends InnerFields<Prefix> ? k
|
|
87
|
+
: never;
|
|
88
|
+
}[keyof NoInfer<TSubData>]
|
|
67
89
|
>
|
|
68
90
|
& SubStoreOption<
|
|
69
91
|
TSubStore,
|
|
70
|
-
|
|
71
|
-
|
|
92
|
+
{
|
|
93
|
+
[k in keyof NoInfer<TSubStore>]:
|
|
94
|
+
// 与根组件和DataDoc的数据字段重复的不合法(主要是验证内部字段)
|
|
95
|
+
k extends keyof (AllRootDataDoc & SubDataDoc) ? never
|
|
96
|
+
// 继承剩余Doc的字段合法
|
|
97
|
+
: k extends Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc))> ? k
|
|
98
|
+
// 内部字段合法
|
|
99
|
+
: k extends InnerFields<Prefix> ? k
|
|
100
|
+
: never;
|
|
101
|
+
}[keyof NoInfer<TSubStore>]
|
|
72
102
|
>
|
|
103
|
+
// 下面为之前的写法 不好与根组件的字段重复检测。
|
|
104
|
+
|
|
105
|
+
// // 合法的字段(继承组件类型的keys)
|
|
106
|
+
// | Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc))>
|
|
107
|
+
// // 合法的内部字段(不与data重复的内部字段)
|
|
108
|
+
// | Extract<Exclude<keyof NoInfer<TSubStore>, keyof SubDataDoc>, InnerFields<Prefix>>
|
|
109
|
+
// 不与allData重复的字段
|
|
110
|
+
// | Exclude<keyof NoInfer<TSubStore>, keyof AllRootDataDoc>
|
|
111
|
+
|
|
73
112
|
& SubComputedOption<
|
|
74
113
|
TSubComputed,
|
|
75
|
-
|
|
76
|
-
|
|
114
|
+
{
|
|
115
|
+
[k in keyof NoInfer<TSubComputed>]:
|
|
116
|
+
// 与根组件和DataDoc和SubStoreDoc的key重复的不合法(主要是验证内部字段)
|
|
117
|
+
k extends keyof (AllRootDataDoc & SubDataDoc & SubStoreDoc) ? never
|
|
118
|
+
// 继承剩余Doc的字段合法
|
|
119
|
+
: k extends Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc & SubStoreDoc))> ? k
|
|
120
|
+
// 内部字段合法
|
|
121
|
+
: k extends InnerFields<Prefix> ? k
|
|
122
|
+
: never;
|
|
123
|
+
}[keyof NoInfer<TSubComputed>],
|
|
124
|
+
// 下面为之前的写法 不好与根组件的字段重复检测。
|
|
125
|
+
// | Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc & SubStoreDoc))>
|
|
126
|
+
// | Extract<Exclude<keyof NoInfer<TSubComputed>, keyof (SubDataDoc & SubStoreDoc)>, InnerFields<Prefix>>,
|
|
77
127
|
{
|
|
78
128
|
data: ComputeObject<
|
|
79
129
|
& AllRootDataDoc
|
package/src/api/wxSugar.ts
CHANGED
|
@@ -47,7 +47,7 @@ function _encodeURIComponent(
|
|
|
47
47
|
|
|
48
48
|
return Object.assign(result, option);
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
const backFuncs: (undefined | ((...args: unknown[]) => void))[] = [];
|
|
51
51
|
/**
|
|
52
52
|
* 页面onload参数中接受的数据值是传递的url解析后的字符串。例如:A页面通过`wx.navigateTo({url:'/pages/test/test?num=123&obj={"name":"zhao"}'})`
|
|
53
53
|
* test页面onLoad(data)的参数data接受内容为` data = {num:"123",obj:"{"name":"zhao"}"}`即默认的url传的数据值为字符串,需要在接收时自行解析(JSON.parse)。且url采取ASCII编码只能接受0x20-0x7e区间的符号。无法使用一些特殊符号 如 ` :/?#[]@!$&'()*+,;= `。
|
|
@@ -55,7 +55,9 @@ function _encodeURIComponent(
|
|
|
55
55
|
*/
|
|
56
56
|
export function navigateTo<TPageDoc extends PageDoc = never>(
|
|
57
57
|
option: NoInfer<NavigateToOption<TPageDoc>>,
|
|
58
|
+
onBack?: (res: unknown) => void,
|
|
58
59
|
) {
|
|
60
|
+
backFuncs.push(onBack);
|
|
59
61
|
// @ts-ignore 隐式索引
|
|
60
62
|
if (!option.data) {
|
|
61
63
|
return wx.navigateTo(option);
|
|
@@ -65,6 +67,32 @@ export function navigateTo<TPageDoc extends PageDoc = never>(
|
|
|
65
67
|
);
|
|
66
68
|
}
|
|
67
69
|
}
|
|
70
|
+
type WMNavigateBackOption = WechatMiniprogram.NavigateBackOption;
|
|
71
|
+
type NavigateBackOption<Data> = WMNavigateBackOption & { data?: Data };
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @param options
|
|
75
|
+
* @returns
|
|
76
|
+
*/
|
|
77
|
+
export function navigateBack<Data, T extends NavigateBackOption<Data> = NavigateBackOption<Data>>(
|
|
78
|
+
options?: T,
|
|
79
|
+
): WechatMiniprogram.PromisifySuccessResult<T, WMNavigateBackOption> {
|
|
80
|
+
const backFunc = backFuncs.pop();
|
|
81
|
+
if (backFunc) {
|
|
82
|
+
if (!options || options.data === undefined) {
|
|
83
|
+
throw new Error("navigateBack 需要带有data参数的配置对象,因为返回的组件需要data数据");
|
|
84
|
+
}
|
|
85
|
+
const data = options.data;
|
|
86
|
+
const complete = options.complete;
|
|
87
|
+
options.complete = (res) => {
|
|
88
|
+
backFunc(data);
|
|
89
|
+
if (complete) {
|
|
90
|
+
complete(res);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return wx.navigateBack(options);
|
|
95
|
+
}
|
|
68
96
|
export function redirectTo<TPageDoc extends PageDoc = never>(
|
|
69
97
|
option: NoInfer<NavigateToOption<TPageDoc>>,
|
|
70
98
|
) {
|
package/src/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { DefineComponent } from "./api/DefineComponent";
|
|
|
2
2
|
import { type IInjectInfo, instanceConfig } from "./api/InstanceInject/instanceConfig";
|
|
3
3
|
import { RootComponent } from "./api/RootComponent";
|
|
4
4
|
import { SubComponent } from "./api/SubComponent";
|
|
5
|
-
import { navigateTo, redirectTo } from "./api/wxSugar";
|
|
5
|
+
import { navigateBack, navigateTo, redirectTo } from "./api/wxSugar";
|
|
6
6
|
import type { CreateComponentType } from "./types/CreateComponentType";
|
|
7
7
|
import type { DetailedType } from "./types/DetailedType";
|
|
8
8
|
import type { ExtendComponentType } from "./types/ExtendComponentType";
|
|
@@ -38,6 +38,7 @@ export {
|
|
|
38
38
|
type ExtendComponentType,
|
|
39
39
|
type IInjectInfo,
|
|
40
40
|
instanceConfig,
|
|
41
|
+
navigateBack,
|
|
41
42
|
navigateTo,
|
|
42
43
|
type ParamsEqual,
|
|
43
44
|
redirectTo,
|
package/src/thirdLib/wm/index.ts
CHANGED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import type { CreateComponentType } from "../../types/CreateComponentType";
|
|
2
|
+
|
|
3
|
+
type RegionChangeBegin = { type: "begin"; causedBy: "gesture" | "update" };
|
|
4
|
+
|
|
5
|
+
export type MarkLocation = { latitude: number; longitude: number };
|
|
6
|
+
|
|
7
|
+
type RegionChangeEnd = {
|
|
8
|
+
type: "end";
|
|
9
|
+
causedBy: "drag" | "scale" | "update";
|
|
10
|
+
centerLocation: MarkLocation;
|
|
11
|
+
region: { northeast: MarkLocation; southwest: MarkLocation };
|
|
12
|
+
rotate: number;
|
|
13
|
+
scale: number;
|
|
14
|
+
skew: number;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
type RegionChangeDetail = RegionChangeBegin | RegionChangeEnd;
|
|
18
|
+
|
|
19
|
+
export type Callout = {
|
|
20
|
+
content: string;
|
|
21
|
+
display: "ALWAYS" | "BYCLICK";
|
|
22
|
+
color?: string;
|
|
23
|
+
fontSize?: string | number;
|
|
24
|
+
borderWidth?: number;
|
|
25
|
+
borderRadius?: number;
|
|
26
|
+
borderColor?: string;
|
|
27
|
+
bgColor?: string;
|
|
28
|
+
padding?: number;
|
|
29
|
+
textAlign?: "center" | "left" | "right";
|
|
30
|
+
/**
|
|
31
|
+
* 横向偏移量,向右为正数 number 2.11.0
|
|
32
|
+
*/
|
|
33
|
+
anchorX?: number;
|
|
34
|
+
/**
|
|
35
|
+
* anchorY 纵向偏移量,向下为正数 number 2.11.0
|
|
36
|
+
*/
|
|
37
|
+
anchorYL?: number;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// 官方说明 https://developers.weixin.qq.com/miniprogram/dev/component/map.html#marker
|
|
41
|
+
export type Marker = {
|
|
42
|
+
// 标记点 id marker 点击事件回调会返回此 id
|
|
43
|
+
id: number;
|
|
44
|
+
// 标注图标宽度 默认为图片实际宽度
|
|
45
|
+
width: number | string;
|
|
46
|
+
// 标注图标高度 默认为图片实际高度
|
|
47
|
+
height: number | string;
|
|
48
|
+
// 聚合簇的 id 自定义点聚合簇效果时使用
|
|
49
|
+
clusterId?: number;
|
|
50
|
+
// 是否参与点聚合 默认不参与点聚合
|
|
51
|
+
joinCluster?: boolean;
|
|
52
|
+
// 纬度 浮点数,范围 -90 ~ 90
|
|
53
|
+
latitude: number;
|
|
54
|
+
// 经度 浮点数,范围 -180 ~ 180
|
|
55
|
+
longitude: number;
|
|
56
|
+
// 标注点名 点击时显示,callout 存在时将被忽略
|
|
57
|
+
title?: string;
|
|
58
|
+
// 显示层级 默认为 0
|
|
59
|
+
zIndex?: number;
|
|
60
|
+
// 显示的图标 项目目录下的图片路径,支持网络路径、本地路径、代码包路径(2.3.0)
|
|
61
|
+
iconPath: string;
|
|
62
|
+
// 旋转角度 顺时针旋转的角度,范围 0 ~ 360,默认为 0
|
|
63
|
+
rotate?: number;
|
|
64
|
+
// 标注的透明度 默认 1,无透明,范围 0 ~ 1
|
|
65
|
+
alpha?: number;
|
|
66
|
+
// 标记点上方的气泡窗口 支持的属性见下表,可识别换行符
|
|
67
|
+
callout?: Callout;
|
|
68
|
+
// 自定义气泡窗口 支持的属性见下表
|
|
69
|
+
customCallout?: Callout;
|
|
70
|
+
// 为标记点旁边增加标签 支持的属性见下表,可识别换行符
|
|
71
|
+
label?: Callout;
|
|
72
|
+
// 经纬度在标注图标的锚点,默认底边中点
|
|
73
|
+
anchor?: { x: number; y: number };
|
|
74
|
+
// 无障碍访问,(属性)元素的额外描述
|
|
75
|
+
ariaLabel?: string;
|
|
76
|
+
// 碰撞关系 详见下表碰撞关系 3.4.3
|
|
77
|
+
collisionRelation?: string;
|
|
78
|
+
// 碰撞类型 详见下表碰撞关系 3.4.3
|
|
79
|
+
collision?: string;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export type Circle = {
|
|
83
|
+
// 纬度 number 是 浮点数,范围 -90 ~ 90
|
|
84
|
+
latitude: number;
|
|
85
|
+
// 经度 number 是 浮点数,范围 -180 ~ 180
|
|
86
|
+
longitude: number;
|
|
87
|
+
// 半径 number 是
|
|
88
|
+
radius: number;
|
|
89
|
+
// 描边的颜色 string 否 十六进制
|
|
90
|
+
color?: string;
|
|
91
|
+
// 填充颜色 string 否 十六进制
|
|
92
|
+
fillColor?: string;
|
|
93
|
+
// 描边的宽度 number 否
|
|
94
|
+
strokeWidth?: number;
|
|
95
|
+
// 压盖关系 string 否 默认为 abovelabels
|
|
96
|
+
level?: string;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
export type Polygon = {
|
|
100
|
+
// 边线虚线 Array<number> 否 默认值 [0, 0] 为实线,[10, 10]表示十个像素的实线和十个像素的空白(如此反复)组成的虚线 2.22.0
|
|
101
|
+
dashArray?: number[];
|
|
102
|
+
// 经纬度数组 array 是 [{latitude: 0, longitude: 0}] 2.3.0
|
|
103
|
+
points: MarkLocation[];
|
|
104
|
+
// 描边的宽度 number 否 2.3.0
|
|
105
|
+
strokeWidth?: number;
|
|
106
|
+
// 描边的颜色 string 否 十六进制 2.3.0
|
|
107
|
+
strokeColor?: string;
|
|
108
|
+
// 填充颜色 string 否 十六进制
|
|
109
|
+
fillColor?: string;
|
|
110
|
+
// 设置多边形 Z 轴数值 number 否 2.3.0
|
|
111
|
+
zIndex?: number;
|
|
112
|
+
// 压盖关系 string 否 默认为 abovelabels 2.14.0
|
|
113
|
+
level?: string;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export type Polyline = {
|
|
117
|
+
// 经纬度数组 array
|
|
118
|
+
points: MarkLocation[];
|
|
119
|
+
// 线的颜色 string 否 十六进制
|
|
120
|
+
color?: string;
|
|
121
|
+
// 彩虹线 array 否 存在时忽略 color 值 2.13.0
|
|
122
|
+
colorList?: string[];
|
|
123
|
+
// 线的宽度 number 否
|
|
124
|
+
width?: number;
|
|
125
|
+
// 是否虚线 boolean 否 默认 false
|
|
126
|
+
dottedLine?: boolean;
|
|
127
|
+
// 带箭头的线 boolean 否 默认 false,开发者工具暂不支持该属性 1.2.0
|
|
128
|
+
arrowLine?: boolean;
|
|
129
|
+
// 更换箭头图标 string 否 在 arrowLine 为 true 时生效 1.6.0
|
|
130
|
+
arrowIconPath?: string;
|
|
131
|
+
// 线的边框颜色 string 否 1.2.0
|
|
132
|
+
borderColor?: string;
|
|
133
|
+
// 线的厚度 number 否 1.2.0
|
|
134
|
+
borderWidth?: number;
|
|
135
|
+
// 压盖关系 string 否 默认为 abovelabels 2.14.0
|
|
136
|
+
level?: string;
|
|
137
|
+
// 文字样式 TextStyle 否 折线上文本样式 2.22.0
|
|
138
|
+
textStyle?: TextStyle;
|
|
139
|
+
// 分段文本 Array<SegmentText> 否 折线上文本内容和位置 2.22.0
|
|
140
|
+
segmentTexts?: SegmentText[];
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
export type TextStyle = {
|
|
144
|
+
// 文本颜色 string 否 #000000
|
|
145
|
+
textColor?: string;
|
|
146
|
+
// 描边颜色 string 否 #ffffff
|
|
147
|
+
strokeColor?: string;
|
|
148
|
+
// 文本大小 number 否 14
|
|
149
|
+
fontSize?: number;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export type SegmentText = {
|
|
153
|
+
// 名称 string 默认''
|
|
154
|
+
name: string;
|
|
155
|
+
// 起点 number
|
|
156
|
+
startIndex: string;
|
|
157
|
+
// 终点 number
|
|
158
|
+
endIndex: number;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
// 源自 https://developers.weixin.qq.com/miniprogram/dev/component/map.html#%E5%B1%9E%E6%80%A7%E8%AF%B4%E6%98%8E
|
|
162
|
+
export type Map = CreateComponentType<"map", {
|
|
163
|
+
properties: {
|
|
164
|
+
// 中心经度 1.0.0
|
|
165
|
+
latitude: number;
|
|
166
|
+
// 中心纬度 1.0.0
|
|
167
|
+
longitude: number;
|
|
168
|
+
// 缩放级别,取值范围为3-20 1.0.0
|
|
169
|
+
scale?: number;
|
|
170
|
+
// 最小缩放级别 2.13.0
|
|
171
|
+
minScale?: number;
|
|
172
|
+
// 最大缩放级别 2.13.0
|
|
173
|
+
maxScale?: number;
|
|
174
|
+
// 标记点 1.0.0
|
|
175
|
+
markers?: Marker[];
|
|
176
|
+
// 即将移除,请使用 markers 1.0.0
|
|
177
|
+
covers?: Marker[];
|
|
178
|
+
// 路线 1.0.0
|
|
179
|
+
polyline?: Polyline[];
|
|
180
|
+
// 圆 1.0.0
|
|
181
|
+
circles?: Circle[];
|
|
182
|
+
// 控件(即将废弃,建议使用 cover-view 代替) 1.0.0
|
|
183
|
+
controls?: Marker[];
|
|
184
|
+
// 缩放视野以包含所有给定的坐标点 1.0.0
|
|
185
|
+
includePoints?: Marker[];
|
|
186
|
+
/**
|
|
187
|
+
* 显示带有方向的当前定位点 1.0.0
|
|
188
|
+
*/
|
|
189
|
+
showLocation?: boolean;
|
|
190
|
+
// 多边形 2.3.0
|
|
191
|
+
polygons?: Polygon[];
|
|
192
|
+
// 地图能力【个性化地图】使用的key,不支持动态修改 2.3.0
|
|
193
|
+
subkey?: string;
|
|
194
|
+
// 地图能力【个性化地图】配置的 style
|
|
195
|
+
layerStyle?: number;
|
|
196
|
+
// 旋转角度,范围 0 ~ 360, 地图正北和设备 y 轴角度的夹角 2.5.0
|
|
197
|
+
rotate?: number;
|
|
198
|
+
// 倾斜角度,范围 0 ~ 40 , 关于 z 轴的倾角 2.5.0
|
|
199
|
+
skew?: number;
|
|
200
|
+
// 展示3D楼块 2.3.0
|
|
201
|
+
enable3D?: boolean;
|
|
202
|
+
// 显示指南针 2.3.0
|
|
203
|
+
showCompass?: boolean;
|
|
204
|
+
// 显示比例尺,工具暂不支持 2.8.0
|
|
205
|
+
showScale?: boolean;
|
|
206
|
+
// 开启俯视 2.3.0
|
|
207
|
+
enableOverlooking?: boolean;
|
|
208
|
+
// 开启最大俯视角,俯视角度从 45 度拓展到 75 度 2.26.0
|
|
209
|
+
enableAutoMaxOverlooking?: boolean;
|
|
210
|
+
// 是否支持缩放 2.3.0
|
|
211
|
+
enableZoom?: boolean;
|
|
212
|
+
// 是否支持拖动 2.3.0
|
|
213
|
+
enableScroll?: boolean;
|
|
214
|
+
// 是否支持旋转 2.3.0
|
|
215
|
+
enableRotate?: boolean;
|
|
216
|
+
// 是否开启卫星图 2.7.0
|
|
217
|
+
enableSatellite?: boolean;
|
|
218
|
+
// 是否开启实时路况 2.7.0
|
|
219
|
+
enableTraffic?: boolean;
|
|
220
|
+
// 是否展示 POI 点 2.14.0
|
|
221
|
+
enablePOI?: boolean;
|
|
222
|
+
// 是否展示建筑物 2.14.0
|
|
223
|
+
enableBuilding?: boolean;
|
|
224
|
+
// 配置项 2.8.2
|
|
225
|
+
setting?: object;
|
|
226
|
+
};
|
|
227
|
+
customEvents: {
|
|
228
|
+
// 点击地图时触发,2.9.0起返回经纬度信息 1.0.0
|
|
229
|
+
tap: MarkLocation;
|
|
230
|
+
// 点击标记点时触发,e.detail = {markerId} 1.0.0
|
|
231
|
+
markertap: { markerId: number };
|
|
232
|
+
// 点击label时触发,e.detail = {markerId} 2.9.0
|
|
233
|
+
labeltap: { markerId: number };
|
|
234
|
+
// 点击控件时触发,e.detail = {controlId} 1.0.0
|
|
235
|
+
controltap: { controlId: number };
|
|
236
|
+
// 点击标记点对应的气泡时触发e.detail = {markerId} 1.2.0
|
|
237
|
+
callouttap: { markerId: number };
|
|
238
|
+
// 在地图渲染更新完成时触发 1.6.0
|
|
239
|
+
updated: undefined;
|
|
240
|
+
/**
|
|
241
|
+
* 视野改变时,regionchange 会触发两次,返回的 type 值分别为 begin 和 end。
|
|
242
|
+
* 2.8.0 起 begin 阶段返回 causedBy,有效值为 gesture(手势触发) & update(接口触发)
|
|
243
|
+
* 2.3.0 起 end 阶段返回 causedBy,有效值为 drag(拖动导致)、scale(缩放导致)、update(调用更新接口导致)
|
|
244
|
+
*/
|
|
245
|
+
regionchange: RegionChangeDetail;
|
|
246
|
+
// 点击地图poi点时触发,e.detail = {name, longitude, latitude} 2.3.0
|
|
247
|
+
poitap: { name: string; longitude: number; latitude: number };
|
|
248
|
+
// 点击地图路线时触发,e.detail = {longitude, latitude} 3.1.0
|
|
249
|
+
polylinetap: { longitude: number; latitude: number };
|
|
250
|
+
// 地图能力生效时触发,e.detail = {ability, errCode, errMsg}
|
|
251
|
+
abilitysuccess: { ability: string; errCode: number; errMsg: string };
|
|
252
|
+
// 地图能力失败时触发,e.detail = {ability, errCode, errMsg}
|
|
253
|
+
abilityfail: { ability: string; errCode: number; errMsg: string };
|
|
254
|
+
// 地图鉴权结果成功时触发,e.detail = {errCode, errMsg}
|
|
255
|
+
authsuccess: { errCode: number; errMsg: string };
|
|
256
|
+
// MapContext.moveAlong 插值动画时触发。e.detail = {markerId, longitude, latitude, animationStatus: "interpolating" | "complete"}, 3.1.0
|
|
257
|
+
interpolatepoint: {
|
|
258
|
+
markerId: number;
|
|
259
|
+
longitude: number;
|
|
260
|
+
latitude: number;
|
|
261
|
+
animationStatus: "interpolating" | "complete";
|
|
262
|
+
};
|
|
263
|
+
// 组件错误时触发,例如创建或鉴权失败,e.detail = {longitude, latitude}
|
|
264
|
+
error: { longitude: number; latitude: number };
|
|
265
|
+
};
|
|
266
|
+
}>;
|