@reidelsaltres/pureper 0.1.143 → 0.1.144
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.
|
@@ -29,14 +29,17 @@ export default class Triplet {
|
|
|
29
29
|
private readonly access;
|
|
30
30
|
private uni?;
|
|
31
31
|
private lightCssApplied;
|
|
32
|
+
private componentCssTextPromise?;
|
|
32
33
|
private componentCssSheetPromise?;
|
|
33
34
|
constructor(struct: TripletStruct);
|
|
34
35
|
private getMarkupText;
|
|
35
36
|
private getLightCssText;
|
|
37
|
+
private getComponentCssText;
|
|
36
38
|
private getComponentCssSheet;
|
|
39
|
+
private static canUseConstructableStylesheets;
|
|
40
|
+
private static ensureInlineStyle;
|
|
37
41
|
init(): Promise<boolean>;
|
|
38
42
|
cache(): Promise<void>;
|
|
39
|
-
private createLink;
|
|
40
43
|
register(type: "router" | "markup", name: string): Promise<boolean>;
|
|
41
44
|
private createInjectedClass;
|
|
42
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Triplet.d.ts","sourceRoot":"","sources":["../../src/foundation/Triplet.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,4BAA4B,CAAC;AAKjD,OAAO,EAAE,cAAc,EAAe,MAAM,gCAAgC,CAAC;AAM7E,oBAAY,UAAU;IAClB,IAAI,IAAI;IACR,OAAO,IAAS;IAChB,MAAM,IAAS;IACf,IAAI,IAAmB;CAC1B;AACD,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAG,cAAc,CAAC,OAAO,CAAC,CAAC;CACpC,CAAA;AACD,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,GAAG,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,EAAE,CAAC,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAS;IAEhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IAEpC,OAAO,CAAC,GAAG,CAAC,CAA0B;IAEtC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,wBAAwB,CAAC,CAAgC;gBAE9C,MAAM,EAAE,aAAa;YAgB1B,aAAa;YAMb,eAAe;YAMf,oBAAoB;
|
|
1
|
+
{"version":3,"file":"Triplet.d.ts","sourceRoot":"","sources":["../../src/foundation/Triplet.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,4BAA4B,CAAC;AAKjD,OAAO,EAAE,cAAc,EAAe,MAAM,gCAAgC,CAAC;AAM7E,oBAAY,UAAU;IAClB,IAAI,IAAI;IACR,OAAO,IAAS;IAChB,MAAM,IAAS;IACf,IAAI,IAAmB;CAC1B;AACD,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAG,cAAc,CAAC,OAAO,CAAC,CAAC;CACpC,CAAA;AACD,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,GAAG,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,EAAE,CAAC,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAS;IAEhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IAEpC,OAAO,CAAC,GAAG,CAAC,CAA0B;IAEtC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,uBAAuB,CAAC,CAA8B;IAC9D,OAAO,CAAC,wBAAwB,CAAC,CAAgC;gBAE9C,MAAM,EAAE,aAAa;YAgB1B,aAAa;YAMb,eAAe;YAMf,mBAAmB;YAQnB,oBAAoB;IAelC,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAa7C,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAenB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAcxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiEhF,OAAO,CAAC,mBAAmB;CA2C9B"}
|
|
@@ -23,6 +23,7 @@ export default class Triplet {
|
|
|
23
23
|
access;
|
|
24
24
|
uni;
|
|
25
25
|
lightCssApplied = false;
|
|
26
|
+
componentCssTextPromise;
|
|
26
27
|
componentCssSheetPromise;
|
|
27
28
|
constructor(struct) {
|
|
28
29
|
this.markup = struct.markup;
|
|
@@ -50,11 +51,19 @@ export default class Triplet {
|
|
|
50
51
|
return Fetcher.fetchText(this.ltCssURL);
|
|
51
52
|
return undefined;
|
|
52
53
|
}
|
|
54
|
+
async getComponentCssText() {
|
|
55
|
+
if (this.css)
|
|
56
|
+
return this.css;
|
|
57
|
+
if (!this.cssURL)
|
|
58
|
+
return undefined;
|
|
59
|
+
this.componentCssTextPromise = this.componentCssTextPromise ?? Fetcher.fetchText(this.cssURL);
|
|
60
|
+
return this.componentCssTextPromise;
|
|
61
|
+
}
|
|
53
62
|
async getComponentCssSheet() {
|
|
54
63
|
if (this.componentCssSheetPromise)
|
|
55
64
|
return this.componentCssSheetPromise;
|
|
56
65
|
this.componentCssSheetPromise = (async () => {
|
|
57
|
-
const cssText =
|
|
66
|
+
const cssText = await this.getComponentCssText();
|
|
58
67
|
if (!cssText)
|
|
59
68
|
return null;
|
|
60
69
|
const sheet = new CSSStyleSheet();
|
|
@@ -63,6 +72,30 @@ export default class Triplet {
|
|
|
63
72
|
})();
|
|
64
73
|
return this.componentCssSheetPromise;
|
|
65
74
|
}
|
|
75
|
+
static canUseConstructableStylesheets(target) {
|
|
76
|
+
try {
|
|
77
|
+
return (typeof CSSStyleSheet !== "undefined" &&
|
|
78
|
+
typeof CSSStyleSheet.prototype?.replace === "function" &&
|
|
79
|
+
typeof target.adoptedStyleSheets !== "undefined" &&
|
|
80
|
+
Array.isArray(target.adoptedStyleSheets));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
static ensureInlineStyle(target, key, cssText) {
|
|
87
|
+
const container = (target instanceof Document)
|
|
88
|
+
? (target.head ?? target.documentElement)
|
|
89
|
+
: target;
|
|
90
|
+
const selector = `style[data-triplet-css="${CSS.escape(key)}"]`;
|
|
91
|
+
const existing = container.querySelector?.(selector);
|
|
92
|
+
if (existing)
|
|
93
|
+
return;
|
|
94
|
+
const styleEl = document.createElement("style");
|
|
95
|
+
styleEl.setAttribute("data-triplet-css", key);
|
|
96
|
+
styleEl.textContent = cssText;
|
|
97
|
+
container.appendChild(styleEl);
|
|
98
|
+
}
|
|
66
99
|
async init() {
|
|
67
100
|
const isOnline = await ServiceWorker.isOnline();
|
|
68
101
|
if (this.access === AccessType.NONE)
|
|
@@ -81,14 +114,6 @@ export default class Triplet {
|
|
|
81
114
|
async cache() {
|
|
82
115
|
//
|
|
83
116
|
}
|
|
84
|
-
createLink(cssPath) {
|
|
85
|
-
const link = document.createElement('link');
|
|
86
|
-
link.rel = 'stylesheet';
|
|
87
|
-
///
|
|
88
|
-
link.href = cssPath;
|
|
89
|
-
///
|
|
90
|
-
return link;
|
|
91
|
-
}
|
|
92
117
|
async register(type, name) {
|
|
93
118
|
if (!this.uni) {
|
|
94
119
|
switch (type) {
|
|
@@ -103,12 +128,18 @@ export default class Triplet {
|
|
|
103
128
|
if (!this.lightCssApplied) {
|
|
104
129
|
const lightCssText = await this.getLightCssText();
|
|
105
130
|
if (lightCssText) {
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
131
|
+
const key = this.ltCssURL ?? "light-inline";
|
|
132
|
+
if (Triplet.canUseConstructableStylesheets(document)) {
|
|
133
|
+
const style = new CSSStyleSheet();
|
|
134
|
+
await style.replace(lightCssText);
|
|
135
|
+
document.adoptedStyleSheets = [
|
|
136
|
+
...document.adoptedStyleSheets,
|
|
137
|
+
style
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
Triplet.ensureInlineStyle(document, key, lightCssText);
|
|
142
|
+
}
|
|
112
143
|
}
|
|
113
144
|
this.lightCssApplied = true;
|
|
114
145
|
}
|
|
@@ -159,10 +190,22 @@ export default class Triplet {
|
|
|
159
190
|
return parser.parseToDOM(markupText, this);
|
|
160
191
|
};
|
|
161
192
|
proto._postInit = async function (preHtml) {
|
|
162
|
-
|
|
163
|
-
const
|
|
164
|
-
if (
|
|
165
|
-
|
|
193
|
+
const dmc = this.shadowRoot ?? document;
|
|
194
|
+
const cssText = await that.getComponentCssText();
|
|
195
|
+
if (cssText) {
|
|
196
|
+
const key = that.cssURL ?? "component-inline";
|
|
197
|
+
if (Triplet.canUseConstructableStylesheets(dmc)) {
|
|
198
|
+
const cssSheet = await that.getComponentCssSheet();
|
|
199
|
+
if (cssSheet) {
|
|
200
|
+
const sheets = dmc.adoptedStyleSheets;
|
|
201
|
+
if (!sheets.includes(cssSheet)) {
|
|
202
|
+
dmc.adoptedStyleSheets = [...sheets, cssSheet];
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
Triplet.ensureInlineStyle(dmc, key, cssText);
|
|
208
|
+
}
|
|
166
209
|
}
|
|
167
210
|
parser.hydrate(preHtml, this);
|
|
168
211
|
return preHtml;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Triplet.js","sourceRoot":"","sources":["../../src/foundation/Triplet.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,IAAI,MAAM,yBAAyB,CAAC;AAC3C,OAAO,SAAS,MAAM,8BAA8B,CAAC;AAIrD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IAClB,2CAAQ,CAAA;IACR,iDAAgB,CAAA;IAChB,+CAAe,CAAA;IACf,2CAAuB,CAAA;AAC3B,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAgBD,MAAM,CAAC,OAAO,OAAO,OAAO;IACR,MAAM,CAAU;IAChB,GAAG,CAAU;IACb,QAAQ,CAAU;IAClB,EAAE,CAAU;IAEX,SAAS,CAAU;IACnB,MAAM,CAAU;IAChB,QAAQ,CAAU;IAClB,KAAK,CAAU;IAEf,MAAM,CAAa;IAE5B,GAAG,CAA2B;IAE9B,eAAe,GAAY,KAAK,CAAC;IACjC,wBAAwB,CAAiC;IAEjE,YAAmB,MAAqB;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QAEpB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC;QAE/C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,aAAa;QACvB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,eAAe;QACzB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Triplet.js","sourceRoot":"","sources":["../../src/foundation/Triplet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -47,6 +47,7 @@ export default class Triplet {
|
|
|
47
47
|
private uni?: AnyConstructor<UniHtml>;
|
|
48
48
|
|
|
49
49
|
private lightCssApplied: boolean = false;
|
|
50
|
+
private componentCssTextPromise?: Promise<string | undefined>;
|
|
50
51
|
private componentCssSheetPromise?: Promise<CSSStyleSheet | null>;
|
|
51
52
|
|
|
52
53
|
public constructor(struct: TripletStruct) {
|
|
@@ -77,11 +78,19 @@ export default class Triplet {
|
|
|
77
78
|
return undefined;
|
|
78
79
|
}
|
|
79
80
|
|
|
81
|
+
private async getComponentCssText(): Promise<string | undefined> {
|
|
82
|
+
if (this.css) return this.css;
|
|
83
|
+
if (!this.cssURL) return undefined;
|
|
84
|
+
|
|
85
|
+
this.componentCssTextPromise = this.componentCssTextPromise ?? Fetcher.fetchText(this.cssURL);
|
|
86
|
+
return this.componentCssTextPromise;
|
|
87
|
+
}
|
|
88
|
+
|
|
80
89
|
private async getComponentCssSheet(): Promise<CSSStyleSheet | null> {
|
|
81
90
|
if (this.componentCssSheetPromise) return this.componentCssSheetPromise;
|
|
82
91
|
|
|
83
92
|
this.componentCssSheetPromise = (async () => {
|
|
84
|
-
const cssText =
|
|
93
|
+
const cssText = await this.getComponentCssText();
|
|
85
94
|
if (!cssText) return null;
|
|
86
95
|
|
|
87
96
|
const sheet = new CSSStyleSheet();
|
|
@@ -92,6 +101,34 @@ export default class Triplet {
|
|
|
92
101
|
return this.componentCssSheetPromise;
|
|
93
102
|
}
|
|
94
103
|
|
|
104
|
+
private static canUseConstructableStylesheets(target: Document | ShadowRoot): boolean {
|
|
105
|
+
try {
|
|
106
|
+
return (
|
|
107
|
+
typeof CSSStyleSheet !== "undefined" &&
|
|
108
|
+
typeof (CSSStyleSheet as any).prototype?.replace === "function" &&
|
|
109
|
+
typeof (target as any).adoptedStyleSheets !== "undefined" &&
|
|
110
|
+
Array.isArray((target as any).adoptedStyleSheets)
|
|
111
|
+
);
|
|
112
|
+
} catch {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
private static ensureInlineStyle(target: Document | ShadowRoot, key: string, cssText: string): void {
|
|
118
|
+
const container: ParentNode = (target instanceof Document)
|
|
119
|
+
? (target.head ?? target.documentElement)
|
|
120
|
+
: target;
|
|
121
|
+
|
|
122
|
+
const selector = `style[data-triplet-css="${CSS.escape(key)}"]`;
|
|
123
|
+
const existing = (container as ParentNode).querySelector?.(selector);
|
|
124
|
+
if (existing) return;
|
|
125
|
+
|
|
126
|
+
const styleEl = document.createElement("style");
|
|
127
|
+
styleEl.setAttribute("data-triplet-css", key);
|
|
128
|
+
styleEl.textContent = cssText;
|
|
129
|
+
(container as any).appendChild(styleEl);
|
|
130
|
+
}
|
|
131
|
+
|
|
95
132
|
public async init(): Promise<boolean> {
|
|
96
133
|
const isOnline: boolean = await ServiceWorker.isOnline();
|
|
97
134
|
|
|
@@ -110,16 +147,6 @@ export default class Triplet {
|
|
|
110
147
|
//
|
|
111
148
|
}
|
|
112
149
|
|
|
113
|
-
private createLink(cssPath: string): HTMLLinkElement {
|
|
114
|
-
const link = document.createElement('link');
|
|
115
|
-
link.rel = 'stylesheet';
|
|
116
|
-
///
|
|
117
|
-
link.href = cssPath;
|
|
118
|
-
///
|
|
119
|
-
return link;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
150
|
public async register(type: "router" | "markup", name: string): Promise<boolean> {
|
|
124
151
|
if (!this.uni) {
|
|
125
152
|
switch (type) {
|
|
@@ -134,12 +161,17 @@ export default class Triplet {
|
|
|
134
161
|
if (!this.lightCssApplied) {
|
|
135
162
|
const lightCssText = await this.getLightCssText();
|
|
136
163
|
if (lightCssText) {
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
164
|
+
const key = this.ltCssURL ?? "light-inline";
|
|
165
|
+
if (Triplet.canUseConstructableStylesheets(document)) {
|
|
166
|
+
const style = new CSSStyleSheet();
|
|
167
|
+
await style.replace(lightCssText);
|
|
168
|
+
document.adoptedStyleSheets = [
|
|
169
|
+
...document.adoptedStyleSheets,
|
|
170
|
+
style
|
|
171
|
+
];
|
|
172
|
+
} else {
|
|
173
|
+
Triplet.ensureInlineStyle(document, key, lightCssText);
|
|
174
|
+
}
|
|
143
175
|
}
|
|
144
176
|
this.lightCssApplied = true;
|
|
145
177
|
}
|
|
@@ -179,6 +211,7 @@ export default class Triplet {
|
|
|
179
211
|
}
|
|
180
212
|
return Promise.resolve(false);
|
|
181
213
|
}
|
|
214
|
+
|
|
182
215
|
private createInjectedClass(c: AnyConstructor<UniHtml>, type: "router" | "markup"): any {
|
|
183
216
|
let that = this;
|
|
184
217
|
let ori = class extends c {
|
|
@@ -188,20 +221,37 @@ export default class Triplet {
|
|
|
188
221
|
};
|
|
189
222
|
let proto = ori.prototype as any;
|
|
190
223
|
const parser = new HMLEParserReborn();
|
|
224
|
+
|
|
191
225
|
proto._init = async function (): Promise<DocumentFragment> {
|
|
192
226
|
const markupText = await that.getMarkupText();
|
|
193
227
|
if (!markupText) return new DocumentFragment();
|
|
194
228
|
return parser.parseToDOM(markupText, this);
|
|
195
229
|
}
|
|
230
|
+
|
|
196
231
|
proto._postInit = async function (preHtml: DocumentFragment): Promise<DocumentFragment> {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
232
|
+
const dmc: Document | ShadowRoot = this.shadowRoot ?? document;
|
|
233
|
+
|
|
234
|
+
const cssText = await that.getComponentCssText();
|
|
235
|
+
if (cssText) {
|
|
236
|
+
const key = that.cssURL ?? "component-inline";
|
|
237
|
+
|
|
238
|
+
if (Triplet.canUseConstructableStylesheets(dmc)) {
|
|
239
|
+
const cssSheet = await that.getComponentCssSheet();
|
|
240
|
+
if (cssSheet) {
|
|
241
|
+
const sheets = (dmc as any).adoptedStyleSheets as CSSStyleSheet[];
|
|
242
|
+
if (!sheets.includes(cssSheet)) {
|
|
243
|
+
(dmc as any).adoptedStyleSheets = [...sheets, cssSheet];
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
} else {
|
|
247
|
+
Triplet.ensureInlineStyle(dmc, key, cssText);
|
|
248
|
+
}
|
|
201
249
|
}
|
|
250
|
+
|
|
202
251
|
parser.hydrate(preHtml, this);
|
|
203
252
|
return preHtml;
|
|
204
253
|
}
|
|
254
|
+
|
|
205
255
|
return ori;
|
|
206
256
|
}
|
|
207
257
|
|