@marko/runtime-tags 0.3.9 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/debug/dom.js +3 -4
- package/dist/debug/dom.mjs +3 -4
- package/dist/dom.js +3 -3
- package/dist/dom.mjs +3 -3
- package/index.d.ts +144 -0
- package/package.json +24 -10
- package/tags-html.d.ts +3935 -0
package/dist/debug/dom.js
CHANGED
|
@@ -1181,15 +1181,14 @@ function controllable_detailsOrDialog_open(scope, nodeAccessor, open, openChange
|
|
|
1181
1181
|
}
|
|
1182
1182
|
function controllable_detailsOrDialog_open_effect(scope, nodeAccessor) {
|
|
1183
1183
|
const el = scope[nodeAccessor];
|
|
1184
|
+
const hasChanged = () => el.open !== scope[nodeAccessor + ":" /* ControlledValue */];
|
|
1184
1185
|
syncControllable(
|
|
1185
1186
|
el,
|
|
1186
1187
|
el.tagName === "DIALOG" ? "close" : "toggle",
|
|
1187
|
-
|
|
1188
|
-
return scope[nodeAccessor + ";" /* ControlledHandler */] && el.open !== scope[nodeAccessor + ":" /* ControlledValue */];
|
|
1189
|
-
},
|
|
1188
|
+
hasChanged,
|
|
1190
1189
|
() => {
|
|
1191
1190
|
const openChange = scope[nodeAccessor + ";" /* ControlledHandler */];
|
|
1192
|
-
if (openChange) {
|
|
1191
|
+
if (openChange && hasChanged()) {
|
|
1193
1192
|
scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */;
|
|
1194
1193
|
openChange(el.open);
|
|
1195
1194
|
run();
|
package/dist/debug/dom.mjs
CHANGED
|
@@ -1091,15 +1091,14 @@ function controllable_detailsOrDialog_open(scope, nodeAccessor, open, openChange
|
|
|
1091
1091
|
}
|
|
1092
1092
|
function controllable_detailsOrDialog_open_effect(scope, nodeAccessor) {
|
|
1093
1093
|
const el = scope[nodeAccessor];
|
|
1094
|
+
const hasChanged = () => el.open !== scope[nodeAccessor + ":" /* ControlledValue */];
|
|
1094
1095
|
syncControllable(
|
|
1095
1096
|
el,
|
|
1096
1097
|
el.tagName === "DIALOG" ? "close" : "toggle",
|
|
1097
|
-
|
|
1098
|
-
return scope[nodeAccessor + ";" /* ControlledHandler */] && el.open !== scope[nodeAccessor + ":" /* ControlledValue */];
|
|
1099
|
-
},
|
|
1098
|
+
hasChanged,
|
|
1100
1099
|
() => {
|
|
1101
1100
|
const openChange = scope[nodeAccessor + ";" /* ControlledHandler */];
|
|
1102
|
-
if (openChange) {
|
|
1101
|
+
if (openChange && hasChanged()) {
|
|
1103
1102
|
scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */;
|
|
1104
1103
|
openChange(el.open);
|
|
1105
1104
|
run();
|
package/dist/dom.js
CHANGED
|
@@ -731,14 +731,14 @@ function controllable_detailsOrDialog_open(scope, nodeAccessor, open, openChange
|
|
|
731
731
|
scope[nodeAccessor + ";" /* ControlledHandler */] = openChange, openChange ? scope[nodeAccessor + "=" /* ControlledType */] = 4 /* DetailsOrDialogOpen */ : scope[nodeAccessor + "=" /* ControlledType */] = 5 /* None */, scope[nodeAccessor].open = normalizeBoolProp(open);
|
|
732
732
|
}
|
|
733
733
|
function controllable_detailsOrDialog_open_effect(scope, nodeAccessor) {
|
|
734
|
-
let el = scope[nodeAccessor];
|
|
734
|
+
let el = scope[nodeAccessor], hasChanged = () => el.open !== scope[nodeAccessor + ":" /* ControlledValue */];
|
|
735
735
|
syncControllable(
|
|
736
736
|
el,
|
|
737
737
|
el.tagName === "DIALOG" ? "close" : "toggle",
|
|
738
|
-
|
|
738
|
+
hasChanged,
|
|
739
739
|
() => {
|
|
740
740
|
let openChange = scope[nodeAccessor + ";" /* ControlledHandler */];
|
|
741
|
-
openChange && (scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, openChange(el.open), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && (el.open = !el.open));
|
|
741
|
+
openChange && hasChanged() && (scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, openChange(el.open), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && (el.open = !el.open));
|
|
742
742
|
}
|
|
743
743
|
);
|
|
744
744
|
}
|
package/dist/dom.mjs
CHANGED
|
@@ -644,14 +644,14 @@ function controllable_detailsOrDialog_open(scope, nodeAccessor, open, openChange
|
|
|
644
644
|
scope[nodeAccessor + ";" /* ControlledHandler */] = openChange, openChange ? scope[nodeAccessor + "=" /* ControlledType */] = 4 /* DetailsOrDialogOpen */ : scope[nodeAccessor + "=" /* ControlledType */] = 5 /* None */, scope[nodeAccessor].open = normalizeBoolProp(open);
|
|
645
645
|
}
|
|
646
646
|
function controllable_detailsOrDialog_open_effect(scope, nodeAccessor) {
|
|
647
|
-
let el = scope[nodeAccessor];
|
|
647
|
+
let el = scope[nodeAccessor], hasChanged = () => el.open !== scope[nodeAccessor + ":" /* ControlledValue */];
|
|
648
648
|
syncControllable(
|
|
649
649
|
el,
|
|
650
650
|
el.tagName === "DIALOG" ? "close" : "toggle",
|
|
651
|
-
|
|
651
|
+
hasChanged,
|
|
652
652
|
() => {
|
|
653
653
|
let openChange = scope[nodeAccessor + ";" /* ControlledHandler */];
|
|
654
|
-
openChange && (scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, openChange(el.open), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && (el.open = !el.open));
|
|
654
|
+
openChange && hasChanged() && (scope[nodeAccessor + "=" /* ControlledType */] = 6 /* Pending */, openChange(el.open), run(), scope[nodeAccessor + "=" /* ControlledType */] === 6 /* Pending */ && (el.open = !el.open));
|
|
655
655
|
}
|
|
656
656
|
);
|
|
657
657
|
}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import "./tags-html";
|
|
2
|
+
|
|
3
|
+
declare module "*.marko" {
|
|
4
|
+
const template: Marko.Template;
|
|
5
|
+
export default template;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
declare global {
|
|
9
|
+
namespace NodeJS {
|
|
10
|
+
interface ReadableStream {}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
namespace Marko {
|
|
14
|
+
/** A mutable global object for the current render. */
|
|
15
|
+
export interface Global {
|
|
16
|
+
[x: PropertyKey]: unknown;
|
|
17
|
+
/** An AbortSignal instance that, when aborted, stops further streamed content. */
|
|
18
|
+
signal?: AbortSignal;
|
|
19
|
+
/** A CSP Nonce to add to each script output from Marko. */
|
|
20
|
+
cspNonce?: string;
|
|
21
|
+
/** Used for rendering multiple Marko templates in a single hydrated page. */
|
|
22
|
+
renderId?: string;
|
|
23
|
+
/** Used to uniquely identify a instance of a Marko runtime. */
|
|
24
|
+
runtimeId?: string;
|
|
25
|
+
/** A list of globals that should be serialized to the browser. */
|
|
26
|
+
serializedGlobals?:
|
|
27
|
+
| (string | number)[]
|
|
28
|
+
| Record<string | number, boolean>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type TemplateInput<Input> = Input & {
|
|
32
|
+
/** Data available within all rendered templates as `$global`. */
|
|
33
|
+
$global?: Global;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** Body content created from by a component, typically held in an object with a renderBody property. */
|
|
37
|
+
export interface Body<
|
|
38
|
+
in Params extends readonly any[] = [],
|
|
39
|
+
out Return = void,
|
|
40
|
+
> {}
|
|
41
|
+
|
|
42
|
+
/** Valid data types which can be passed in as a <${dynamic}/> tag name. */
|
|
43
|
+
export type Renderable =
|
|
44
|
+
| { renderBody: Body<any, any> | Template | string }
|
|
45
|
+
| Body<any, any>
|
|
46
|
+
| Template
|
|
47
|
+
| string;
|
|
48
|
+
|
|
49
|
+
/** Extract the return tag type from a renderBody. */
|
|
50
|
+
export type BodyReturnType<B> =
|
|
51
|
+
B extends Body<any, infer Return> ? Return : never;
|
|
52
|
+
|
|
53
|
+
/** Extract the tag parameter types received by a renderBody. */
|
|
54
|
+
export type BodyParameters<B> =
|
|
55
|
+
B extends Body<infer Params, any> ? Params : never;
|
|
56
|
+
|
|
57
|
+
/** The top level api for a Marko Template. */
|
|
58
|
+
export abstract class Template<Input = unknown, Return = unknown> {
|
|
59
|
+
/**
|
|
60
|
+
* The folowing types are processed up by the @marko/language-tools
|
|
61
|
+
* and inlined into the compiled template.
|
|
62
|
+
*
|
|
63
|
+
* This is done to support generics on each of these methods
|
|
64
|
+
* until TypeScript supports higher kinded types.
|
|
65
|
+
*
|
|
66
|
+
* https://github.com/microsoft/TypeScript/issues/1213
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
/** @marko-overload-start */
|
|
70
|
+
/** Render the template to a string. */
|
|
71
|
+
abstract render(input: Marko.TemplateInput<Input>): Promise<string> &
|
|
72
|
+
AsyncIterable<string> & {
|
|
73
|
+
toReadable(): ReadableStream;
|
|
74
|
+
pipe(stream: {
|
|
75
|
+
write(chunk: string): unknown;
|
|
76
|
+
end(): unknown;
|
|
77
|
+
flush?(): void;
|
|
78
|
+
}): void;
|
|
79
|
+
toString(): string;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/** Render and attach the template to a DOM node. */
|
|
83
|
+
abstract mount(
|
|
84
|
+
input: Marko.TemplateInput<Input>,
|
|
85
|
+
reference: ParentNode & Node,
|
|
86
|
+
position?: "afterbegin" | "afterend" | "beforebegin" | "beforeend",
|
|
87
|
+
): {
|
|
88
|
+
update(input: Marko.TemplateInput<Input>): void;
|
|
89
|
+
destroy(): void;
|
|
90
|
+
};
|
|
91
|
+
/** @marko-overload-end */
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export type AttrTag<T> = T & {
|
|
95
|
+
[Symbol.iterator](): Iterator<T>;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export interface NativeTag<
|
|
99
|
+
Input extends Record<string, any>,
|
|
100
|
+
Return extends Element,
|
|
101
|
+
> {
|
|
102
|
+
input: Input;
|
|
103
|
+
return: { value: () => Return };
|
|
104
|
+
}
|
|
105
|
+
export interface NativeTags {
|
|
106
|
+
[name: string]: NativeTag<Record<string, any>, Element>;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export type Input<Name> = 0 extends 1 & Name
|
|
110
|
+
? any
|
|
111
|
+
: Name extends string
|
|
112
|
+
? Name extends keyof NativeTags
|
|
113
|
+
? NativeTags[Name]["input"]
|
|
114
|
+
: Record<string, unknown>
|
|
115
|
+
: Name extends
|
|
116
|
+
| Template<infer Input, any>
|
|
117
|
+
| { _(): () => (input: infer Input) => any }
|
|
118
|
+
? Input
|
|
119
|
+
: Name extends Body<infer Args, any>
|
|
120
|
+
? Args extends {
|
|
121
|
+
length: infer Length;
|
|
122
|
+
}
|
|
123
|
+
? number extends Length
|
|
124
|
+
? Args[0] | undefined
|
|
125
|
+
: 0 extends Length
|
|
126
|
+
? undefined
|
|
127
|
+
: Args[0]
|
|
128
|
+
: never
|
|
129
|
+
: never;
|
|
130
|
+
|
|
131
|
+
export type Return<Name> = 0 extends 1 & Name
|
|
132
|
+
? any
|
|
133
|
+
: Name extends string
|
|
134
|
+
? Name extends keyof NativeTags
|
|
135
|
+
? NativeTags[Name]["return"]
|
|
136
|
+
: () => Element
|
|
137
|
+
: Name extends
|
|
138
|
+
| { _(): () => (input: any) => { return: infer Return } }
|
|
139
|
+
| Template<any, infer Return>
|
|
140
|
+
| Body<any, infer Return>
|
|
141
|
+
? Return
|
|
142
|
+
: never;
|
|
143
|
+
}
|
|
144
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marko/runtime-tags",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.12",
|
|
4
4
|
"description": "Optimized runtime for Marko templates.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"api",
|
|
@@ -17,23 +17,29 @@
|
|
|
17
17
|
},
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"exports": {
|
|
20
|
-
"
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./index.d.ts"
|
|
22
|
+
},
|
|
21
23
|
"./package.json": "./package.json",
|
|
22
24
|
"./translator": "./dist/translator/index.js",
|
|
23
|
-
"
|
|
24
|
-
"types": "./dist/*.d.ts",
|
|
25
|
-
"import": "./dist/*.mjs",
|
|
26
|
-
"default": "./dist/*.js"
|
|
27
|
-
},
|
|
25
|
+
"./tag-types/*": "./tag-types/*",
|
|
28
26
|
"./debug/*": {
|
|
29
27
|
"types": "./dist/*.d.ts",
|
|
30
28
|
"import": "./dist/debug/*.mjs",
|
|
31
29
|
"default": "./dist/debug/*.js"
|
|
30
|
+
},
|
|
31
|
+
"./*": {
|
|
32
|
+
"types": "./dist/*.d.ts",
|
|
33
|
+
"import": "./dist/*.mjs",
|
|
34
|
+
"default": "./dist/*.js"
|
|
32
35
|
}
|
|
33
36
|
},
|
|
37
|
+
"types": "index.d.ts",
|
|
34
38
|
"files": [
|
|
35
39
|
"dist",
|
|
36
40
|
"tag-types",
|
|
41
|
+
"index.d.ts",
|
|
42
|
+
"tags-html.d.ts",
|
|
37
43
|
"!**/meta.*.json",
|
|
38
44
|
"!**/__tests__",
|
|
39
45
|
"!**/*.tsbuildinfo"
|
|
@@ -41,10 +47,18 @@
|
|
|
41
47
|
"scripts": {
|
|
42
48
|
"build": "node -r ~ts ./scripts/bundle.ts"
|
|
43
49
|
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@marko/compiler": "^5.39.5",
|
|
52
|
+
"csstype": "^3.1.3",
|
|
53
|
+
"magic-string": "^0.30.17"
|
|
54
|
+
},
|
|
44
55
|
"exports:override": {
|
|
45
|
-
"
|
|
56
|
+
".": {
|
|
57
|
+
"types": "./index.d.ts"
|
|
58
|
+
},
|
|
46
59
|
"./translator": "./src/translator/index.ts",
|
|
47
|
-
"
|
|
48
|
-
"./debug/*": "./src/*.ts"
|
|
60
|
+
"./tag-types/*": "./tag-types/*",
|
|
61
|
+
"./debug/*": "./src/*.ts",
|
|
62
|
+
"./*": "./src/*.ts"
|
|
49
63
|
}
|
|
50
64
|
}
|