1
1
// the first part of this file is being generated by => scripts/selector-declaration-builder.js
2
2
// Run `npm run generate-dts` to generate it
3
- declare type IntersectionArrayAndBase < T , P > = {
3
+ type IntersectionArrayAndBase < T , P > = {
4
4
[ K in keyof T ] : K extends P ? T [ K ] : T [ K ] & T [ K ] [ ] ;
5
5
} ;
6
+ type CommaChar = ","
7
+ type LegalChars = CommaChar | " " | "\n" | "\t"
8
+ type WixElements = PageElementsMap & IntersectionArrayAndBase < TypeNameToSdkType , 'Document' > ;
9
+ type NicknameSelector = keyof PageElementsMap
10
+ type TypeSelector = keyof IntersectionArrayAndBase < TypeNameToSdkType , 'Document' >
6
11
7
- declare type IsWixElementSelector < S > = S extends keyof WixElementSelector ? WixElementSelector [ S ] : never ;
8
- declare type WixElementSelector = PageElementsMap & IntersectionArrayAndBase < TypeNameToSdkType , 'Document' > ;
12
+ type WixElementSelector = NicknameSelector | TypeSelector
13
+ type VaildSelectorsChars = WixElementSelector | LegalChars
9
14
15
+ type OnlyVaildSelectorsChars < S > =
16
+ S extends ""
17
+ ? any
18
+ : S extends `${VaildSelectorsChars } ${infer Tail } `
19
+ ? OnlyVaildSelectorsChars < Tail >
20
+ : never
21
+
22
+ type HasComma < S > =
23
+ S extends `${CommaChar } ${infer Tail } `
24
+ ? unknown
25
+ : S extends `${VaildSelectorsChars } ${infer Tail2 } `
26
+ ? HasCommaRec2 < Tail2 >
27
+ : never
28
+ type MultiSelector < S > = S & OnlyVaildSelectorsChars < S > & HasComma < S >
10
29
/**
11
30
* Selects and returns elements from a page.
12
31
*/
13
- declare function $w < T extends keyof WixElementSelector , S extends string > ( selector : T | S & IsWixElementSelector < S > ) :
14
- S extends keyof WixElementSelector
15
- ? WixElementSelector [ S ]
32
+ declare function $w < T extends WixElementSelector , S extends string > ( selector : T | MultiSelector < S > ) :
33
+ S extends keyof WixElements
34
+ ? WixElements [ S ]
16
35
: any
17
36
/**
18
37
* The `$w` namespace contains everything you need in order to work
@@ -32,9 +51,9 @@ declare namespace $w {
32
51
/**
33
52
* Selects and returns elements from a page.
34
53
*/
35
- type $w = < T extends keyof WixElementSelector , S extends string > ( selector : T | S & IsWixElementSelector < S > ) =>
36
- S extends keyof WixElementSelector
37
- ? WixElementSelector [ S ]
54
+ type $w = < T extends WixElementSelector , S extends string > ( selector : T | MultiSelector < S > ) =>
55
+ S extends keyof WixElements
56
+ ? WixElements [ S ]
38
57
: any
39
58
}
40
59
0 commit comments