@rindo/core 2.16.0-beta.0

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.
Files changed (229) hide show
  1. package/LICENSE.md +27 -0
  2. package/bin/rindo +57 -0
  3. package/cli/index.cjs +1784 -0
  4. package/cli/index.d.ts +15 -0
  5. package/cli/index.js +1758 -0
  6. package/cli/package.json +14 -0
  7. package/compiler/lib.d.ts +24 -0
  8. package/compiler/lib.dom.d.ts +17791 -0
  9. package/compiler/lib.dom.iterable.d.ts +323 -0
  10. package/compiler/lib.es2015.collection.d.ts +89 -0
  11. package/compiler/lib.es2015.core.d.ts +559 -0
  12. package/compiler/lib.es2015.d.ts +30 -0
  13. package/compiler/lib.es2015.generator.d.ts +79 -0
  14. package/compiler/lib.es2015.iterable.d.ts +497 -0
  15. package/compiler/lib.es2015.promise.d.ts +78 -0
  16. package/compiler/lib.es2015.proxy.d.ts +41 -0
  17. package/compiler/lib.es2015.reflect.d.ts +123 -0
  18. package/compiler/lib.es2015.symbol.d.ts +48 -0
  19. package/compiler/lib.es2015.symbol.wellknown.d.ts +324 -0
  20. package/compiler/lib.es2016.array.include.d.ts +118 -0
  21. package/compiler/lib.es2016.d.ts +22 -0
  22. package/compiler/lib.es2016.full.d.ts +25 -0
  23. package/compiler/lib.es2017.d.ts +26 -0
  24. package/compiler/lib.es2017.full.d.ts +25 -0
  25. package/compiler/lib.es2017.intl.d.ts +32 -0
  26. package/compiler/lib.es2017.object.d.ts +51 -0
  27. package/compiler/lib.es2017.sharedmemory.d.ts +137 -0
  28. package/compiler/lib.es2017.string.d.ts +47 -0
  29. package/compiler/lib.es2017.typedarrays.d.ts +55 -0
  30. package/compiler/lib.es2018.asyncgenerator.d.ts +79 -0
  31. package/compiler/lib.es2018.asynciterable.d.ts +45 -0
  32. package/compiler/lib.es2018.d.ts +26 -0
  33. package/compiler/lib.es2018.full.d.ts +25 -0
  34. package/compiler/lib.es2018.intl.d.ts +73 -0
  35. package/compiler/lib.es2018.promise.d.ts +32 -0
  36. package/compiler/lib.es2018.regexp.d.ts +39 -0
  37. package/compiler/lib.es2019.array.d.ts +85 -0
  38. package/compiler/lib.es2019.d.ts +25 -0
  39. package/compiler/lib.es2019.full.d.ts +25 -0
  40. package/compiler/lib.es2019.object.d.ts +35 -0
  41. package/compiler/lib.es2019.string.d.ts +39 -0
  42. package/compiler/lib.es2019.symbol.d.ts +26 -0
  43. package/compiler/lib.es2020.bigint.d.ts +728 -0
  44. package/compiler/lib.es2020.d.ts +27 -0
  45. package/compiler/lib.es2020.full.d.ts +25 -0
  46. package/compiler/lib.es2020.intl.d.ts +368 -0
  47. package/compiler/lib.es2020.promise.d.ts +49 -0
  48. package/compiler/lib.es2020.sharedmemory.d.ts +99 -0
  49. package/compiler/lib.es2020.string.d.ts +30 -0
  50. package/compiler/lib.es2020.symbol.wellknown.d.ts +39 -0
  51. package/compiler/lib.es2021.d.ts +25 -0
  52. package/compiler/lib.es2021.full.d.ts +25 -0
  53. package/compiler/lib.es2021.intl.d.ts +44 -0
  54. package/compiler/lib.es2021.promise.d.ts +50 -0
  55. package/compiler/lib.es2021.string.d.ts +35 -0
  56. package/compiler/lib.es2021.weakref.d.ts +75 -0
  57. package/compiler/lib.es5.d.ts +4495 -0
  58. package/compiler/lib.es6.d.ts +25 -0
  59. package/compiler/lib.esnext.d.ts +22 -0
  60. package/compiler/lib.esnext.full.d.ts +25 -0
  61. package/compiler/lib.esnext.intl.d.ts +23 -0
  62. package/compiler/lib.esnext.promise.d.ts +43 -0
  63. package/compiler/lib.esnext.string.d.ts +35 -0
  64. package/compiler/lib.esnext.weakref.d.ts +75 -0
  65. package/compiler/lib.scripthost.d.ts +327 -0
  66. package/compiler/lib.webworker.d.ts +5733 -0
  67. package/compiler/lib.webworker.importscripts.d.ts +26 -0
  68. package/compiler/lib.webworker.iterable.d.ts +160 -0
  69. package/compiler/package.json +8 -0
  70. package/compiler/rindo.d.ts +95 -0
  71. package/compiler/rindo.js +67222 -0
  72. package/compiler/rindo.min.js +4 -0
  73. package/dependencies.json +109 -0
  74. package/dev-server/client/app-error.d.ts +18 -0
  75. package/dev-server/client/events.d.ts +6 -0
  76. package/dev-server/client/hmr-components.d.ts +1 -0
  77. package/dev-server/client/hmr-external-styles.d.ts +1 -0
  78. package/dev-server/client/hmr-images.d.ts +1 -0
  79. package/dev-server/client/hmr-inline-styles.d.ts +1 -0
  80. package/dev-server/client/hmr-util.d.ts +9 -0
  81. package/dev-server/client/hmr-window.d.ts +10 -0
  82. package/dev-server/client/index.d.ts +6 -0
  83. package/dev-server/client/index.js +808 -0
  84. package/dev-server/client/logger.d.ts +5 -0
  85. package/dev-server/client/package.json +8 -0
  86. package/dev-server/client/progress.d.ts +3 -0
  87. package/dev-server/client/status.d.ts +4 -0
  88. package/dev-server/connector.html +6 -0
  89. package/dev-server/index.d.ts +3 -0
  90. package/dev-server/index.js +264 -0
  91. package/dev-server/open-in-editor-api.js +1 -0
  92. package/dev-server/package.json +8 -0
  93. package/dev-server/server-process.js +1763 -0
  94. package/dev-server/server-worker-thread.js +39 -0
  95. package/dev-server/static/favicon.ico +0 -0
  96. package/dev-server/templates/directory-index.html +132 -0
  97. package/dev-server/templates/initial-load.html +160 -0
  98. package/dev-server/visualstudio.vbs +82 -0
  99. package/dev-server/ws.js +1 -0
  100. package/dev-server/xdg-open +1066 -0
  101. package/internal/app-data/index.cjs +92 -0
  102. package/internal/app-data/index.d.ts +4 -0
  103. package/internal/app-data/index.js +88 -0
  104. package/internal/app-data/package.json +15 -0
  105. package/internal/client/css-shim.js +4 -0
  106. package/internal/client/dom.js +73 -0
  107. package/internal/client/index.js +3059 -0
  108. package/internal/client/package.json +8 -0
  109. package/internal/client/patch-browser.js +124 -0
  110. package/internal/client/patch-esm.js +23 -0
  111. package/internal/client/polyfills/core-js.js +11 -0
  112. package/internal/client/polyfills/css-shim.js +1 -0
  113. package/internal/client/polyfills/dom.js +79 -0
  114. package/internal/client/polyfills/es5-html-element.js +1 -0
  115. package/internal/client/polyfills/index.js +34 -0
  116. package/internal/client/polyfills/system.js +6 -0
  117. package/internal/client/shadow-css.js +387 -0
  118. package/internal/hydrate/index.js +1132 -0
  119. package/internal/hydrate/package.json +7 -0
  120. package/internal/hydrate/runner.d.ts +217 -0
  121. package/internal/hydrate/runner.js +777 -0
  122. package/internal/hydrate/shadow-css.js +143 -0
  123. package/internal/index.d.ts +4 -0
  124. package/internal/index.js +2 -0
  125. package/internal/package.json +9 -0
  126. package/internal/rindo-core/index.cjs +1 -0
  127. package/internal/rindo-core/index.d.ts +52 -0
  128. package/internal/rindo-core/index.js +16 -0
  129. package/internal/rindo-ext-modules.d.ts +41 -0
  130. package/internal/rindo-private.d.ts +2289 -0
  131. package/internal/rindo-public-compiler.d.ts +2273 -0
  132. package/internal/rindo-public-docs.d.ts +116 -0
  133. package/internal/rindo-public-runtime.d.ts +1565 -0
  134. package/internal/testing/index.js +1093 -0
  135. package/internal/testing/package.json +7 -0
  136. package/internal/testing/shadow-css.js +143 -0
  137. package/mock-doc/index.cjs +4658 -0
  138. package/mock-doc/index.d.ts +928 -0
  139. package/mock-doc/index.js +4622 -0
  140. package/mock-doc/package.json +15 -0
  141. package/package.json +151 -0
  142. package/readme.md +74 -0
  143. package/screenshot/compare/assets/favicon.ico +0 -0
  144. package/screenshot/compare/assets/logo.png +0 -0
  145. package/screenshot/compare/build/app.css +1 -0
  146. package/screenshot/compare/build/app.esm.js +1 -0
  147. package/screenshot/compare/build/app.js +33 -0
  148. package/screenshot/compare/build/index.esm.js +0 -0
  149. package/screenshot/compare/build/p-081b0641.js +1 -0
  150. package/screenshot/compare/build/p-227a1e18.entry.js +1 -0
  151. package/screenshot/compare/build/p-2c298727.entry.js +1 -0
  152. package/screenshot/compare/build/p-5479268c.entry.js +1 -0
  153. package/screenshot/compare/build/p-573ec8a4.entry.js +1 -0
  154. package/screenshot/compare/build/p-6ba08604.entry.js +1 -0
  155. package/screenshot/compare/build/p-6bc63295.entry.js +1 -0
  156. package/screenshot/compare/build/p-7a3759fd.entry.js +1 -0
  157. package/screenshot/compare/build/p-7b4e3ba7.js +1 -0
  158. package/screenshot/compare/build/p-988eb362.css +1 -0
  159. package/screenshot/compare/build/p-9b6a9315.js +1 -0
  160. package/screenshot/compare/build/p-b4cc611c.entry.js +1 -0
  161. package/screenshot/compare/build/p-d1bf53f5.entry.js +1 -0
  162. package/screenshot/compare/build/p-e2efe0df.js +1 -0
  163. package/screenshot/compare/build/p-e8ca6d97.entry.js +1 -0
  164. package/screenshot/compare/build/p-ec2f13e0.entry.js +1 -0
  165. package/screenshot/compare/build/p-f0b99977.entry.js +1 -0
  166. package/screenshot/compare/build/p-f4745c2f.entry.js +1 -0
  167. package/screenshot/compare/build/p-fbbae598.js +1 -0
  168. package/screenshot/compare/host.config.json +15 -0
  169. package/screenshot/compare/index.html +1 -0
  170. package/screenshot/compare/manifest.json +13 -0
  171. package/screenshot/connector-base.d.ts +42 -0
  172. package/screenshot/connector-local.d.ts +7 -0
  173. package/screenshot/connector.js +2 -0
  174. package/screenshot/index.d.ts +3 -0
  175. package/screenshot/index.js +659 -0
  176. package/screenshot/local-connector.js +2 -0
  177. package/screenshot/package.json +15 -0
  178. package/screenshot/pixel-match.d.ts +1 -0
  179. package/screenshot/pixel-match.js +2673 -0
  180. package/screenshot/screenshot-compare.d.ts +3 -0
  181. package/screenshot/screenshot-fs.d.ts +15 -0
  182. package/sys/node/autoprefixer.js +8 -0
  183. package/sys/node/glob.js +1 -0
  184. package/sys/node/graceful-fs.js +1 -0
  185. package/sys/node/index.d.ts +18 -0
  186. package/sys/node/index.js +6124 -0
  187. package/sys/node/node-fetch.js +1 -0
  188. package/sys/node/package.json +8 -0
  189. package/sys/node/prompts.js +1 -0
  190. package/sys/node/worker.js +52 -0
  191. package/testing/index.d.ts +12 -0
  192. package/testing/index.js +4232 -0
  193. package/testing/jest/jest-config.d.ts +16 -0
  194. package/testing/jest/jest-environment.d.ts +15 -0
  195. package/testing/jest/jest-preprocessor.d.ts +59 -0
  196. package/testing/jest/jest-runner.d.ts +9 -0
  197. package/testing/jest/jest-screenshot.d.ts +2 -0
  198. package/testing/jest/jest-serializer.d.ts +5 -0
  199. package/testing/jest/jest-setup-test-framework.d.ts +1 -0
  200. package/testing/jest-environment.js +3 -0
  201. package/testing/jest-preprocessor.js +3 -0
  202. package/testing/jest-preset.js +37 -0
  203. package/testing/jest-runner.js +3 -0
  204. package/testing/jest-setuptestframework.js +3 -0
  205. package/testing/matchers/attributes.d.ts +14 -0
  206. package/testing/matchers/class-list.d.ts +12 -0
  207. package/testing/matchers/events.d.ts +21 -0
  208. package/testing/matchers/html.d.ts +12 -0
  209. package/testing/matchers/index.d.ts +23 -0
  210. package/testing/matchers/screenshot.d.ts +5 -0
  211. package/testing/matchers/text.d.ts +4 -0
  212. package/testing/mock-fetch.d.ts +11 -0
  213. package/testing/mocks.d.ts +10 -0
  214. package/testing/package.json +8 -0
  215. package/testing/puppeteer/index.d.ts +2 -0
  216. package/testing/puppeteer/puppeteer-browser.d.ts +6 -0
  217. package/testing/puppeteer/puppeteer-declarations.d.ts +429 -0
  218. package/testing/puppeteer/puppeteer-element.d.ts +67 -0
  219. package/testing/puppeteer/puppeteer-emulate.d.ts +2 -0
  220. package/testing/puppeteer/puppeteer-events.d.ts +21 -0
  221. package/testing/puppeteer/puppeteer-page.d.ts +2 -0
  222. package/testing/puppeteer/puppeteer-screenshot.d.ts +4 -0
  223. package/testing/reset-build-conditionals.d.ts +2 -0
  224. package/testing/spec-page.d.ts +2 -0
  225. package/testing/test-transpile.d.ts +2 -0
  226. package/testing/testing-logger.d.ts +25 -0
  227. package/testing/testing-sys.d.ts +6 -0
  228. package/testing/testing-utils.d.ts +6 -0
  229. package/testing/testing.d.ts +2 -0
@@ -0,0 +1,777 @@
1
+ function createWindowFromHtml(e, t) {
2
+ let r = templateWindows.get(t);
3
+ return null == r && (r = new MockWindow(e), templateWindows.set(t, r)), cloneWindow(r);
4
+ }
5
+
6
+ function normalizeHydrateOptions(e) {
7
+ const t = Object.assign({
8
+ serializeToHtml: !1,
9
+ destroyWindow: !1,
10
+ destroyDocument: !1
11
+ }, e || {});
12
+ return "boolean" != typeof t.clientHydrateAnnotations && (t.clientHydrateAnnotations = !0),
13
+ "boolean" != typeof t.constrainTimeouts && (t.constrainTimeouts = !0), "number" != typeof t.maxHydrateCount && (t.maxHydrateCount = 300),
14
+ "boolean" != typeof t.runtimeLogging && (t.runtimeLogging = !1), "number" != typeof t.timeout && (t.timeout = 15e3),
15
+ Array.isArray(t.excludeComponents) ? t.excludeComponents = t.excludeComponents.filter(filterValidTags).map(mapValidTags) : t.excludeComponents = [],
16
+ Array.isArray(t.staticComponents) ? t.staticComponents = t.staticComponents.filter(filterValidTags).map(mapValidTags) : t.staticComponents = [],
17
+ t;
18
+ }
19
+
20
+ function filterValidTags(e) {
21
+ return "string" == typeof e && e.includes("-");
22
+ }
23
+
24
+ function mapValidTags(e) {
25
+ return e.trim().toLowerCase();
26
+ }
27
+
28
+ function generateHydrateResults(e) {
29
+ "string" != typeof e.url && (e.url = "https://hydrate-rindojs.web.app/"), "string" != typeof e.buildId && (e.buildId = createHydrateBuildId());
30
+ const t = {
31
+ buildId: e.buildId,
32
+ diagnostics: [],
33
+ url: e.url,
34
+ host: null,
35
+ hostname: null,
36
+ href: null,
37
+ pathname: null,
38
+ port: null,
39
+ search: null,
40
+ hash: null,
41
+ html: null,
42
+ httpStatus: null,
43
+ hydratedCount: 0,
44
+ anchors: [],
45
+ components: [],
46
+ imgs: [],
47
+ scripts: [],
48
+ staticData: [],
49
+ styles: [],
50
+ title: null
51
+ };
52
+ try {
53
+ const r = new URL(e.url, "https://hydrate-rindojs.web.app/");
54
+ t.url = r.href, t.host = r.host, t.hostname = r.hostname, t.href = r.href, t.port = r.port,
55
+ t.pathname = r.pathname, t.search = r.search, t.hash = r.hash;
56
+ } catch (e) {
57
+ renderCatchError(t, e);
58
+ }
59
+ return t;
60
+ }
61
+
62
+ function renderBuildDiagnostic(e, t, r, s) {
63
+ const n = {
64
+ level: t,
65
+ type: "build",
66
+ header: r,
67
+ messageText: s,
68
+ relFilePath: null,
69
+ absFilePath: null,
70
+ lines: []
71
+ };
72
+ return e.pathname ? "/" !== e.pathname && (n.header += ": " + e.pathname) : e.url && (n.header += ": " + e.url),
73
+ e.diagnostics.push(n), n;
74
+ }
75
+
76
+ function renderBuildError(e, t) {
77
+ return renderBuildDiagnostic(e, "error", "Hydrate Error", t);
78
+ }
79
+
80
+ function renderCatchError(e, t) {
81
+ const r = renderBuildError(e, null);
82
+ return null != t && (null != t.stack ? r.messageText = t.stack.toString() : null != t.message ? r.messageText = t.message.toString() : r.messageText = t.toString()),
83
+ r;
84
+ }
85
+
86
+ function runtimeLog(e, t, r) {
87
+ global.console[t].apply(global.console, [ `[ ${e} ${t} ] `, ...r ]);
88
+ }
89
+
90
+ function inspectElement(e, t, r) {
91
+ const s = t.children;
92
+ for (let t = 0, n = s.length; t < n; t++) {
93
+ const n = s[t], o = n.nodeName.toLowerCase();
94
+ if (o.includes("-")) {
95
+ const t = e.components.find((e => e.tag === o));
96
+ null != t && (t.count++, r > t.depth && (t.depth = r));
97
+ } else switch (o) {
98
+ case "a":
99
+ const t = collectAttributes(n);
100
+ t.href = n.href, "string" == typeof t.href && (e.anchors.some((e => e.href === t.href)) || e.anchors.push(t));
101
+ break;
102
+
103
+ case "img":
104
+ const r = collectAttributes(n);
105
+ r.src = n.src, "string" == typeof r.src && (e.imgs.some((e => e.src === r.src)) || e.imgs.push(r));
106
+ break;
107
+
108
+ case "link":
109
+ const s = collectAttributes(n);
110
+ s.href = n.href, "string" == typeof s.rel && "stylesheet" === s.rel.toLowerCase() && "string" == typeof s.href && (e.styles.some((e => e.link === s.href)) || (delete s.rel,
111
+ delete s.type, e.styles.push(s)));
112
+ break;
113
+
114
+ case "script":
115
+ const o = collectAttributes(n);
116
+ if (n.hasAttribute("src")) o.src = n.src, "string" == typeof o.src && (e.scripts.some((e => e.src === o.src)) || e.scripts.push(o)); else {
117
+ const t = n.getAttribute("data-rindo-static");
118
+ t && e.staticData.push({
119
+ id: t,
120
+ type: n.getAttribute("type"),
121
+ content: n.textContent
122
+ });
123
+ }
124
+ }
125
+ inspectElement(e, n, ++r);
126
+ }
127
+ }
128
+
129
+ function collectAttributes(e) {
130
+ const t = {}, r = e.attributes;
131
+ for (let e = 0, s = r.length; e < s; e++) {
132
+ const s = r.item(e), n = s.nodeName.toLowerCase();
133
+ if (SKIP_ATTRS.has(n)) continue;
134
+ const o = s.nodeValue;
135
+ "class" === n && "" === o || (t[n] = o);
136
+ }
137
+ return t;
138
+ }
139
+
140
+ function patchDomImplementation(e, t) {
141
+ let r;
142
+ if (null != e.defaultView ? (t.destroyWindow = !0, patchWindow(e.defaultView), r = e.defaultView) : (t.destroyWindow = !0,
143
+ t.destroyDocument = !1, r = new MockWindow(!1)), r.document !== e && (r.document = e),
144
+ e.defaultView !== r && (e.defaultView = r), "function" != typeof e.documentElement.constructor.prototype.getRootNode && (e.createElement("unknown-element").constructor.prototype.getRootNode = getRootNode),
145
+ "function" == typeof e.createEvent) {
146
+ const t = e.createEvent("CustomEvent").constructor;
147
+ r.CustomEvent !== t && (r.CustomEvent = t);
148
+ }
149
+ try {
150
+ e.baseURI;
151
+ } catch (t) {
152
+ Object.defineProperty(e, "baseURI", {
153
+ get() {
154
+ const t = e.querySelector("base[href]");
155
+ return t ? new URL(t.getAttribute("href"), r.location.href).href : r.location.href;
156
+ }
157
+ });
158
+ }
159
+ return r;
160
+ }
161
+
162
+ function getRootNode(e) {
163
+ const t = null != e && !0 === e.composed;
164
+ let r = this;
165
+ for (;null != r.parentNode; ) r = r.parentNode, !0 === t && null == r.parentNode && null != r.host && (r = r.host);
166
+ return r;
167
+ }
168
+
169
+ function renderToString(e, t) {
170
+ const r = normalizeHydrateOptions(t);
171
+ return r.serializeToHtml = !0, new Promise((t => {
172
+ let s;
173
+ const n = generateHydrateResults(r);
174
+ if (hasError(n.diagnostics)) t(n); else if ("string" == typeof e) try {
175
+ r.destroyWindow = !0, r.destroyDocument = !0, s = new MockWindow(e), render(s, r, n, t);
176
+ } catch (e) {
177
+ s && s.close && s.close(), s = null, renderCatchError(n, e), t(n);
178
+ } else if (isValidDocument(e)) try {
179
+ r.destroyDocument = !1, s = patchDomImplementation(e, r), render(s, r, n, t);
180
+ } catch (e) {
181
+ s && s.close && s.close(), s = null, renderCatchError(n, e), t(n);
182
+ } else renderBuildError(n, 'Invalid html or document. Must be either a valid "html" string, or DOM "document".'),
183
+ t(n);
184
+ }));
185
+ }
186
+
187
+ function hydrateDocument(e, t) {
188
+ const r = normalizeHydrateOptions(t);
189
+ return r.serializeToHtml = !1, new Promise((t => {
190
+ let s;
191
+ const n = generateHydrateResults(r);
192
+ if (hasError(n.diagnostics)) t(n); else if ("string" == typeof e) try {
193
+ r.destroyWindow = !0, r.destroyDocument = !0, s = new MockWindow(e), render(s, r, n, t);
194
+ } catch (e) {
195
+ s && s.close && s.close(), s = null, renderCatchError(n, e), t(n);
196
+ } else if (isValidDocument(e)) try {
197
+ r.destroyDocument = !1, s = patchDomImplementation(e, r), render(s, r, n, t);
198
+ } catch (e) {
199
+ s && s.close && s.close(), s = null, renderCatchError(n, e), t(n);
200
+ } else renderBuildError(n, 'Invalid html or document. Must be either a valid "html" string, or DOM "document".'),
201
+ t(n);
202
+ }));
203
+ }
204
+
205
+ function render(e, t, r, s) {
206
+ if (process.__rindoErrors || (process.__rindoErrors = !0, process.on("unhandledRejection", (e => {
207
+ console.log("unhandledRejection", e);
208
+ }))), function n(e, t, r, s) {
209
+ try {
210
+ e.location.href = r.url;
211
+ } catch (e) {
212
+ renderCatchError(s, e);
213
+ }
214
+ if ("string" == typeof r.userAgent) try {
215
+ e.navigator.userAgent = r.userAgent;
216
+ } catch (e) {}
217
+ if ("string" == typeof r.cookie) try {
218
+ t.cookie = r.cookie;
219
+ } catch (e) {}
220
+ if ("string" == typeof r.referrer) try {
221
+ t.referrer = r.referrer;
222
+ } catch (e) {}
223
+ if ("string" == typeof r.direction) try {
224
+ t.documentElement.setAttribute("dir", r.direction);
225
+ } catch (e) {}
226
+ if ("string" == typeof r.language) try {
227
+ t.documentElement.setAttribute("lang", r.language);
228
+ } catch (e) {}
229
+ if ("string" == typeof r.buildId) try {
230
+ t.documentElement.setAttribute("data-rindo-build", r.buildId);
231
+ } catch (e) {}
232
+ try {
233
+ e.customElements = null;
234
+ } catch (e) {}
235
+ return r.constrainTimeouts && constrainTimeouts(e), function n(e, t, r) {
236
+ try {
237
+ const s = e.location.pathname;
238
+ e.console.error = (...e) => {
239
+ const n = e.reduce(((e, t) => {
240
+ if (t) {
241
+ if (null != t.stack) return e + " " + String(t.stack);
242
+ if (null != t.message) return e + " " + String(t.message);
243
+ }
244
+ return String(t);
245
+ }), "").trim();
246
+ "" !== n && (renderCatchError(r, n), t.runtimeLogging && runtimeLog(s, "error", [ n ]));
247
+ }, e.console.debug = (...e) => {
248
+ renderBuildDiagnostic(r, "debug", "Hydrate Debug", [ ...e ].join(", ")), t.runtimeLogging && runtimeLog(s, "debug", e);
249
+ }, t.runtimeLogging && [ "log", "warn", "assert", "info", "trace" ].forEach((t => {
250
+ e.console[t] = (...e) => {
251
+ runtimeLog(s, t, e);
252
+ };
253
+ }));
254
+ } catch (e) {
255
+ renderCatchError(r, e);
256
+ }
257
+ }(e, r, s), e;
258
+ }(e, e.document, t, r), "function" == typeof t.beforeHydrate) try {
259
+ const n = t.beforeHydrate(e.document);
260
+ isPromise(n) ? n.then((() => {
261
+ hydrateFactory(e, t, r, afterHydrate, s);
262
+ })) : hydrateFactory(e, t, r, afterHydrate, s);
263
+ } catch (n) {
264
+ renderCatchError(r, n), finalizeHydrate(e, e.document, t, r, s);
265
+ } else hydrateFactory(e, t, r, afterHydrate, s);
266
+ }
267
+
268
+ function afterHydrate(e, t, r, s) {
269
+ if ("function" == typeof t.afterHydrate) try {
270
+ const n = t.afterHydrate(e.document);
271
+ isPromise(n) ? n.then((() => {
272
+ finalizeHydrate(e, e.document, t, r, s);
273
+ })) : finalizeHydrate(e, e.document, t, r, s);
274
+ } catch (n) {
275
+ renderCatchError(r, n), finalizeHydrate(e, e.document, t, r, s);
276
+ } else finalizeHydrate(e, e.document, t, r, s);
277
+ }
278
+
279
+ function finalizeHydrate(e, t, r, s, n) {
280
+ try {
281
+ if (inspectElement(s, t.documentElement, 0), !1 !== r.removeUnusedStyles) try {
282
+ ((e, t) => {
283
+ try {
284
+ const r = e.head.querySelectorAll("style[data-styles]"), s = r.length;
285
+ if (s > 0) {
286
+ const n = (e => {
287
+ const t = {
288
+ attrs: new Set,
289
+ classNames: new Set,
290
+ ids: new Set,
291
+ tags: new Set
292
+ };
293
+ return collectUsedSelectors(t, e), t;
294
+ })(e.documentElement);
295
+ for (let e = 0; e < s; e++) removeUnusedStyleText(n, t, r[e]);
296
+ }
297
+ } catch (e) {
298
+ ((e, t, r) => {
299
+ const s = {
300
+ level: "error",
301
+ type: "build",
302
+ header: "Build Error",
303
+ messageText: "build error",
304
+ relFilePath: null,
305
+ absFilePath: null,
306
+ lines: []
307
+ };
308
+ null != t && (null != t.stack ? s.messageText = t.stack.toString() : null != t.message ? s.messageText = t.message.length ? t.message : "UNKNOWN ERROR" : s.messageText = t.toString()),
309
+ null == e || shouldIgnoreError(s.messageText) || e.push(s);
310
+ })(t, e);
311
+ }
312
+ })(t, s.diagnostics);
313
+ } catch (e) {
314
+ renderCatchError(s, e);
315
+ }
316
+ if ("string" == typeof r.title) try {
317
+ t.title = r.title;
318
+ } catch (e) {
319
+ renderCatchError(s, e);
320
+ }
321
+ s.title = t.title, r.removeScripts && removeScripts(t.documentElement);
322
+ try {
323
+ ((e, t) => {
324
+ let r = e.head.querySelector('link[rel="canonical"]');
325
+ "string" == typeof t ? (null == r && (r = e.createElement("link"), r.setAttribute("rel", "canonical"),
326
+ e.head.appendChild(r)), r.setAttribute("href", t)) : null != r && (r.getAttribute("href") || r.parentNode.removeChild(r));
327
+ })(t, r.canonicalUrl);
328
+ } catch (e) {
329
+ renderCatchError(s, e);
330
+ }
331
+ try {
332
+ (e => {
333
+ const t = e.head;
334
+ let r = t.querySelector("meta[charset]");
335
+ null == r ? (r = e.createElement("meta"), r.setAttribute("charset", "utf-8")) : r.remove(),
336
+ t.insertBefore(r, t.firstChild);
337
+ })(t);
338
+ } catch (e) {}
339
+ hasError(s.diagnostics) || (s.httpStatus = 200);
340
+ try {
341
+ const e = t.head.querySelector('meta[http-equiv="status"]');
342
+ if (null != e) {
343
+ const t = e.getAttribute("content");
344
+ t && t.length > 0 && (s.httpStatus = parseInt(t, 10));
345
+ }
346
+ } catch (e) {}
347
+ r.clientHydrateAnnotations && t.documentElement.classList.add("hydrated"), r.serializeToHtml && (s.html = serializeDocumentToString(t, r));
348
+ } catch (e) {
349
+ renderCatchError(s, e);
350
+ }
351
+ if (r.destroyWindow) try {
352
+ r.destroyDocument || (e.document = null, t.defaultView = null), e.close && e.close();
353
+ } catch (e) {
354
+ renderCatchError(s, e);
355
+ }
356
+ n(s);
357
+ }
358
+
359
+ function serializeDocumentToString(e, t) {
360
+ return serializeNodeToHtml(e, {
361
+ approximateLineWidth: t.approximateLineWidth,
362
+ outerHtml: !1,
363
+ prettyHtml: t.prettyHtml,
364
+ removeAttributeQuotes: t.removeAttributeQuotes,
365
+ removeBooleanAttributeQuotes: t.removeBooleanAttributeQuotes,
366
+ removeEmptyAttributes: t.removeEmptyAttributes,
367
+ removeHtmlComments: t.removeHtmlComments,
368
+ serializeShadowRoot: !1
369
+ });
370
+ }
371
+
372
+ function isValidDocument(e) {
373
+ return null != e && 9 === e.nodeType && null != e.documentElement && 1 === e.documentElement.nodeType && null != e.body && 1 === e.body.nodeType;
374
+ }
375
+
376
+ function removeScripts(e) {
377
+ const t = e.children;
378
+ for (let e = t.length - 1; e >= 0; e--) {
379
+ const r = t[e];
380
+ removeScripts(r), ("SCRIPT" === r.nodeName || "LINK" === r.nodeName && "modulepreload" === r.getAttribute("rel")) && r.remove();
381
+ }
382
+ }
383
+
384
+ import { MockWindow, cloneWindow, constrainTimeouts, patchWindow, serializeNodeToHtml } from "@rindo/core/mock-doc";
385
+
386
+ import { hydrateFactory } from "@rindo/core/hydrate-factory";
387
+
388
+ const templateWindows = new Map, createHydrateBuildId = () => {
389
+ let e = "abcdefghijklmnopqrstuvwxyz", t = "";
390
+ for (;t.length < 8; ) t += e[Math.floor(Math.random() * e.length)], 1 === t.length && (e += "0123456789");
391
+ return t;
392
+ }, isPromise = e => !!e && ("object" == typeof e || "function" == typeof e) && "function" == typeof e.then, hasError = e => null != e && 0 !== e.length && e.some((e => "error" === e.level && "runtime" !== e.type)), shouldIgnoreError = e => e === TASK_CANCELED_MSG, TASK_CANCELED_MSG = "task canceled", SKIP_ATTRS = new Set([ "s-id", "c-id" ]), collectUsedSelectors = (e, t) => {
393
+ if (null != t && 1 === t.nodeType) {
394
+ const r = t.children, s = t.nodeName.toLowerCase();
395
+ e.tags.add(s);
396
+ const n = t.attributes;
397
+ for (let r = 0, s = n.length; r < s; r++) {
398
+ const s = n.item(r), o = s.name.toLowerCase();
399
+ if (e.attrs.add(o), "class" === o) {
400
+ const r = t.classList;
401
+ for (let t = 0, s = r.length; t < s; t++) e.classNames.add(r.item(t));
402
+ } else "id" === o && e.ids.add(s.value);
403
+ }
404
+ if (r) for (let t = 0, s = r.length; t < s; t++) collectUsedSelectors(e, r[t]);
405
+ }
406
+ }, parseCss = (e, t) => {
407
+ let r = 1, s = 1;
408
+ const n = [], o = e => {
409
+ const t = e.match(/\n/g);
410
+ t && (r += t.length);
411
+ const n = e.lastIndexOf("\n");
412
+ s = ~n ? e.length - n : s + e.length;
413
+ }, i = () => {
414
+ const e = {
415
+ line: r,
416
+ column: s
417
+ };
418
+ return t => (t.position = new z(e), m(), t);
419
+ }, a = o => {
420
+ const i = e.split("\n"), a = {
421
+ level: "error",
422
+ type: "css",
423
+ language: "css",
424
+ header: "CSS Parse",
425
+ messageText: o,
426
+ absFilePath: t,
427
+ lines: [ {
428
+ lineIndex: r - 1,
429
+ lineNumber: r,
430
+ errorCharStart: s,
431
+ text: e[r - 1]
432
+ } ]
433
+ };
434
+ if (r > 1) {
435
+ const t = {
436
+ lineIndex: r - 1,
437
+ lineNumber: r - 1,
438
+ text: e[r - 2],
439
+ errorCharStart: -1,
440
+ errorLength: -1
441
+ };
442
+ a.lines.unshift(t);
443
+ }
444
+ if (r + 2 < i.length) {
445
+ const e = {
446
+ lineIndex: r,
447
+ lineNumber: r + 1,
448
+ text: i[r],
449
+ errorCharStart: -1,
450
+ errorLength: -1
451
+ };
452
+ a.lines.push(e);
453
+ }
454
+ return n.push(a), null;
455
+ }, l = () => u(/^{\s*/), c = () => u(/^}/), u = t => {
456
+ const r = t.exec(e);
457
+ if (!r) return;
458
+ const s = r[0];
459
+ return o(s), e = e.slice(s.length), r;
460
+ }, d = () => {
461
+ let t;
462
+ const r = [];
463
+ for (m(), h(r); e.length && "}" !== e.charAt(0) && (t = w() || A()); ) !1 !== t && (r.push(t),
464
+ h(r));
465
+ return r;
466
+ }, m = () => u(/^\s*/), h = e => {
467
+ let t;
468
+ for (e = e || []; t = p(); ) !1 !== t && e.push(t);
469
+ return e;
470
+ }, p = () => {
471
+ const t = i();
472
+ if ("/" !== e.charAt(0) || "*" !== e.charAt(1)) return null;
473
+ let r = 2;
474
+ for (;"" !== e.charAt(r) && ("*" !== e.charAt(r) || "/" !== e.charAt(r + 1)); ) ++r;
475
+ if (r += 2, "" === e.charAt(r - 1)) return a("End of comment missing");
476
+ const n = e.slice(2, r - 2);
477
+ return s += 2, o(n), e = e.slice(r), s += 2, t({
478
+ type: 1,
479
+ comment: n
480
+ });
481
+ }, f = () => {
482
+ const e = u(/^([^{]+)/);
483
+ return e ? trim(e[0]).replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g, "").replace(/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'/g, (function(e) {
484
+ return e.replace(/,/g, "‌");
485
+ })).split(/\s*(?![^(]*\)),\s*/).map((function(e) {
486
+ return e.replace(/\u200C/g, ",");
487
+ })) : null;
488
+ }, g = () => {
489
+ const e = i();
490
+ let t = u(/^(\*?[-#\/\*\\\w]+(\[[0-9a-z_-]+\])?)\s*/);
491
+ if (!t) return null;
492
+ if (t = trim(t[0]), !u(/^:\s*/)) return a("property missing ':'");
493
+ const r = u(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/), s = e({
494
+ type: 4,
495
+ property: t.replace(commentre, ""),
496
+ value: r ? trim(r[0]).replace(commentre, "") : ""
497
+ });
498
+ return u(/^[;\s]*/), s;
499
+ }, y = () => {
500
+ const e = [];
501
+ if (!l()) return a("missing '{'");
502
+ let t;
503
+ for (h(e); t = g(); ) !1 !== t && (e.push(t), h(e));
504
+ return c() ? e : a("missing '}'");
505
+ }, C = () => {
506
+ let e;
507
+ const t = [], r = i();
508
+ for (;e = u(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/); ) t.push(e[1]), u(/^,\s*/);
509
+ return t.length ? r({
510
+ type: 9,
511
+ values: t,
512
+ declarations: y()
513
+ }) : null;
514
+ }, S = (e, t) => {
515
+ const r = new RegExp("^@" + e + "\\s*([^;]+);");
516
+ return () => {
517
+ const s = i(), n = u(r);
518
+ if (!n) return null;
519
+ const o = {
520
+ type: t
521
+ };
522
+ return o[e] = n[1].trim(), s(o);
523
+ };
524
+ }, E = S("import", 7), b = S("charset", 0), T = S("namespace", 11), w = () => "@" !== e[0] ? null : (() => {
525
+ const e = i();
526
+ let t = u(/^@([-\w]+)?keyframes\s*/);
527
+ if (!t) return null;
528
+ const r = t[1];
529
+ if (t = u(/^([-\w]+)\s*/), !t) return a("@keyframes missing name");
530
+ const s = t[1];
531
+ if (!l()) return a("@keyframes missing '{'");
532
+ let n, o = h();
533
+ for (;n = C(); ) o.push(n), o = o.concat(h());
534
+ return c() ? e({
535
+ type: 8,
536
+ name: s,
537
+ vendor: r,
538
+ keyframes: o
539
+ }) : a("@keyframes missing '}'");
540
+ })() || (() => {
541
+ const e = i(), t = u(/^@media *([^{]+)/);
542
+ if (!t) return null;
543
+ const r = trim(t[1]);
544
+ if (!l()) return a("@media missing '{'");
545
+ const s = h().concat(d());
546
+ return c() ? e({
547
+ type: 10,
548
+ media: r,
549
+ rules: s
550
+ }) : a("@media missing '}'");
551
+ })() || (() => {
552
+ const e = i(), t = u(/^@custom-media\s+(--[^\s]+)\s*([^{;]+);/);
553
+ return t ? e({
554
+ type: 2,
555
+ name: trim(t[1]),
556
+ media: trim(t[2])
557
+ }) : null;
558
+ })() || (() => {
559
+ const e = i(), t = u(/^@supports *([^{]+)/);
560
+ if (!t) return null;
561
+ const r = trim(t[1]);
562
+ if (!l()) return a("@supports missing '{'");
563
+ const s = h().concat(d());
564
+ return c() ? e({
565
+ type: 15,
566
+ supports: r,
567
+ rules: s
568
+ }) : a("@supports missing '}'");
569
+ })() || E() || b() || T() || (() => {
570
+ const e = i(), t = u(/^@([-\w]+)?document *([^{]+)/);
571
+ if (!t) return null;
572
+ const r = trim(t[1]), s = trim(t[2]);
573
+ if (!l()) return a("@document missing '{'");
574
+ const n = h().concat(d());
575
+ return c() ? e({
576
+ type: 3,
577
+ document: s,
578
+ vendor: r,
579
+ rules: n
580
+ }) : a("@document missing '}'");
581
+ })() || (() => {
582
+ const e = i();
583
+ if (!u(/^@page */)) return null;
584
+ const t = f() || [];
585
+ if (!l()) return a("@page missing '{'");
586
+ let r, s = h();
587
+ for (;r = g(); ) s.push(r), s = s.concat(h());
588
+ return c() ? e({
589
+ type: 12,
590
+ selectors: t,
591
+ declarations: s
592
+ }) : a("@page missing '}'");
593
+ })() || (() => {
594
+ const e = i();
595
+ if (!u(/^@host\s*/)) return null;
596
+ if (!l()) return a("@host missing '{'");
597
+ const t = h().concat(d());
598
+ return c() ? e({
599
+ type: 6,
600
+ rules: t
601
+ }) : a("@host missing '}'");
602
+ })() || (() => {
603
+ const e = i();
604
+ if (!u(/^@font-face\s*/)) return null;
605
+ if (!l()) return a("@font-face missing '{'");
606
+ let t, r = h();
607
+ for (;t = g(); ) r.push(t), r = r.concat(h());
608
+ return c() ? e({
609
+ type: 5,
610
+ declarations: r
611
+ }) : a("@font-face missing '}'");
612
+ })(), A = () => {
613
+ const e = i(), t = f();
614
+ return t ? (h(), e({
615
+ type: 13,
616
+ selectors: t,
617
+ declarations: y()
618
+ })) : a("selector missing");
619
+ };
620
+ class z {
621
+ constructor(e) {
622
+ this.start = e, this.end = {
623
+ line: r,
624
+ column: s
625
+ }, this.source = t;
626
+ }
627
+ }
628
+ return z.prototype.content = e, {
629
+ diagnostics: n,
630
+ ...addParent((() => {
631
+ const e = d();
632
+ return {
633
+ type: 14,
634
+ stylesheet: {
635
+ source: t,
636
+ rules: e
637
+ }
638
+ };
639
+ })())
640
+ };
641
+ }, trim = e => e ? e.trim() : "", addParent = (e, t) => {
642
+ const r = e && "string" == typeof e.type, s = r ? e : t;
643
+ for (const t in e) {
644
+ const r = e[t];
645
+ Array.isArray(r) ? r.forEach((function(e) {
646
+ addParent(e, s);
647
+ })) : r && "object" == typeof r && addParent(r, s);
648
+ }
649
+ return r && Object.defineProperty(e, "parent", {
650
+ configurable: !0,
651
+ writable: !0,
652
+ enumerable: !1,
653
+ value: t || null
654
+ }), e;
655
+ }, commentre = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g, getCssSelectors = e => {
656
+ SELECTORS.all.length = SELECTORS.tags.length = SELECTORS.classNames.length = SELECTORS.ids.length = SELECTORS.attrs.length = 0;
657
+ const t = (e = e.replace(/\./g, " .").replace(/\#/g, " #").replace(/\[/g, " [").replace(/\>/g, " > ").replace(/\+/g, " + ").replace(/\~/g, " ~ ").replace(/\*/g, " * ").replace(/\:not\((.*?)\)/g, " ")).split(" ");
658
+ for (let e = 0, r = t.length; e < r; e++) t[e] = t[e].split(":")[0], 0 !== t[e].length && ("." === t[e].charAt(0) ? SELECTORS.classNames.push(t[e].slice(1)) : "#" === t[e].charAt(0) ? SELECTORS.ids.push(t[e].slice(1)) : "[" === t[e].charAt(0) ? (t[e] = t[e].slice(1).split("=")[0].split("]")[0].trim(),
659
+ SELECTORS.attrs.push(t[e].toLowerCase())) : /[a-z]/g.test(t[e].charAt(0)) && SELECTORS.tags.push(t[e].toLowerCase()));
660
+ return SELECTORS.classNames = SELECTORS.classNames.sort(((e, t) => e.length < t.length ? -1 : e.length > t.length ? 1 : 0)),
661
+ SELECTORS;
662
+ }, SELECTORS = {
663
+ all: [],
664
+ tags: [],
665
+ classNames: [],
666
+ ids: [],
667
+ attrs: []
668
+ }, serializeCssVisitNode = (e, t, r, s) => {
669
+ const n = t.type;
670
+ return 4 === n ? serializeCssDeclaration(t, r, s) : 13 === n ? serializeCssRule(e, t) : 1 === n ? "!" === t.comment[0] ? `/*${t.comment}*/` : "" : 10 === n ? serializeCssMedia(e, t) : 8 === n ? serializeCssKeyframes(e, t) : 9 === n ? serializeCssKeyframe(e, t) : 5 === n ? serializeCssFontFace(e, t) : 15 === n ? serializeCssSupports(e, t) : 7 === n ? "@import " + t.import + ";" : 0 === n ? "@charset " + t.charset + ";" : 12 === n ? serializeCssPage(e, t) : 6 === n ? "@host{" + serializeCssMapVisit(e, t.rules) + "}" : 2 === n ? "@custom-media " + t.name + " " + t.media + ";" : 3 === n ? serializeCssDocument(e, t) : 11 === n ? "@namespace " + t.namespace + ";" : "";
671
+ }, serializeCssRule = (e, t) => {
672
+ const r = t.declarations, s = e.usedSelectors, n = t.selectors.slice();
673
+ if (null == r || 0 === r.length) return "";
674
+ if (s) {
675
+ let t, r, o = !0;
676
+ for (t = n.length - 1; t >= 0; t--) {
677
+ const i = getCssSelectors(n[t]);
678
+ o = !0;
679
+ let a = i.classNames.length;
680
+ if (a > 0 && e.hasUsedClassNames) for (r = 0; r < a; r++) if (!s.classNames.has(i.classNames[r])) {
681
+ o = !1;
682
+ break;
683
+ }
684
+ if (o && e.hasUsedTags && (a = i.tags.length, a > 0)) for (r = 0; r < a; r++) if (!s.tags.has(i.tags[r])) {
685
+ o = !1;
686
+ break;
687
+ }
688
+ if (o && e.hasUsedAttrs && (a = i.attrs.length, a > 0)) for (r = 0; r < a; r++) if (!s.attrs.has(i.attrs[r])) {
689
+ o = !1;
690
+ break;
691
+ }
692
+ if (o && e.hasUsedIds && (a = i.ids.length, a > 0)) for (r = 0; r < a; r++) if (!s.ids.has(i.ids[r])) {
693
+ o = !1;
694
+ break;
695
+ }
696
+ o || n.splice(t, 1);
697
+ }
698
+ }
699
+ if (0 === n.length) return "";
700
+ const o = [];
701
+ let i = "";
702
+ for (const e of t.selectors) i = removeSelectorWhitespace(e), o.includes(i) || o.push(i);
703
+ return `${o}{${serializeCssMapVisit(e, r)}}`;
704
+ }, serializeCssDeclaration = (e, t, r) => "" === e.value ? "" : r - 1 === t ? e.property + ":" + e.value : e.property + ":" + e.value + ";", serializeCssMedia = (e, t) => {
705
+ const r = serializeCssMapVisit(e, t.rules);
706
+ return "" === r ? "" : "@media " + removeMediaWhitespace(t.media) + "{" + r + "}";
707
+ }, serializeCssKeyframes = (e, t) => {
708
+ const r = serializeCssMapVisit(e, t.keyframes);
709
+ return "" === r ? "" : "@" + (t.vendor || "") + "keyframes " + t.name + "{" + r + "}";
710
+ }, serializeCssKeyframe = (e, t) => t.values.join(",") + "{" + serializeCssMapVisit(e, t.declarations) + "}", serializeCssFontFace = (e, t) => {
711
+ const r = serializeCssMapVisit(e, t.declarations);
712
+ return "" === r ? "" : "@font-face{" + r + "}";
713
+ }, serializeCssSupports = (e, t) => {
714
+ const r = serializeCssMapVisit(e, t.rules);
715
+ return "" === r ? "" : "@supports " + t.supports + "{" + r + "}";
716
+ }, serializeCssPage = (e, t) => "@page " + t.selectors.join(", ") + "{" + serializeCssMapVisit(e, t.declarations) + "}", serializeCssDocument = (e, t) => {
717
+ const r = serializeCssMapVisit(e, t.rules), s = "@" + (t.vendor || "") + "document " + t.document;
718
+ return "" === r ? "" : s + "{" + r + "}";
719
+ }, serializeCssMapVisit = (e, t) => {
720
+ let r = "";
721
+ if (t) for (let s = 0, n = t.length; s < n; s++) r += serializeCssVisitNode(e, t[s], s, n);
722
+ return r;
723
+ }, removeSelectorWhitespace = e => {
724
+ let t = "", r = "", s = !1;
725
+ for (let n = 0, o = (e = e.trim()).length; n < o; n++) if (r = e[n], "[" === r && "\\" !== t[t.length - 1] ? s = !0 : "]" === r && "\\" !== t[t.length - 1] && (s = !1),
726
+ !s && CSS_WS_REG.test(r)) {
727
+ if (CSS_NEXT_CHAR_REG.test(e[n + 1])) continue;
728
+ if (CSS_PREV_CHAR_REG.test(t[t.length - 1])) continue;
729
+ t += " ";
730
+ } else t += r;
731
+ return t;
732
+ }, removeMediaWhitespace = e => {
733
+ let t = "", r = "";
734
+ for (let s = 0, n = (e = e.trim()).length; s < n; s++) if (r = e[s], CSS_WS_REG.test(r)) {
735
+ if (CSS_WS_REG.test(t[t.length - 1])) continue;
736
+ t += " ";
737
+ } else t += r;
738
+ return t;
739
+ }, CSS_WS_REG = /\s/, CSS_NEXT_CHAR_REG = /[>\(\)\~\,\+\s]/, CSS_PREV_CHAR_REG = /[>\(\~\,\+]/, removeUnusedStyleText = (e, t, r) => {
740
+ try {
741
+ const s = parseCss(r.innerHTML);
742
+ if (t.push(...s.diagnostics), hasError(t)) return;
743
+ try {
744
+ r.innerHTML = ((e, t) => {
745
+ const r = t.usedSelectors || null, s = {
746
+ usedSelectors: r || null,
747
+ hasUsedAttrs: !!r && r.attrs.size > 0,
748
+ hasUsedClassNames: !!r && r.classNames.size > 0,
749
+ hasUsedIds: !!r && r.ids.size > 0,
750
+ hasUsedTags: !!r && r.tags.size > 0
751
+ }, n = e.rules;
752
+ if (!n) return "";
753
+ const o = n.length, i = [];
754
+ for (let e = 0; e < o; e++) i.push(serializeCssVisitNode(s, n[e], e, o));
755
+ return i.join("");
756
+ })(s.stylesheet, {
757
+ usedSelectors: e
758
+ });
759
+ } catch (e) {
760
+ t.push({
761
+ level: "warn",
762
+ type: "css",
763
+ header: "CSS Stringify",
764
+ messageText: e
765
+ });
766
+ }
767
+ } catch (e) {
768
+ t.push({
769
+ level: "warn",
770
+ type: "css",
771
+ header: "CSS Parse",
772
+ messageText: e
773
+ });
774
+ }
775
+ };
776
+
777
+ export { createWindowFromHtml, hydrateDocument, renderToString, serializeDocumentToString };