@unicom-cloud/utils 0.1.30 → 0.1.32

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 (287) hide show
  1. package/case-name/index.js +1 -1
  2. package/caseName.js +1 -1
  3. package/class-name/index.js +6 -5
  4. package/className.js +1 -1
  5. package/clipboard-copy/index.js +1 -1
  6. package/clipboardCopy.js +1 -1
  7. package/constant/address.js +1 -1
  8. package/constant/chineseCharacters.js +1 -1
  9. package/constant/constellations.js +1 -1
  10. package/constant/domain.js +1 -1
  11. package/constant/emoji.js +1 -1
  12. package/constant/identity.js +1 -1
  13. package/constant/index.js +1 -1
  14. package/constant/isMobile.js +7 -0
  15. package/constant/keyboardCode.js +1 -1
  16. package/constant/licensePlate.js +1 -1
  17. package/constant/name.js +1 -1
  18. package/constant/platform.js +18 -17
  19. package/constant/protocol.js +1 -1
  20. package/constant/string.js +1 -1
  21. package/constant/ui.js +1 -1
  22. package/constant.js +1 -1
  23. package/content-disposition/index.js +1 -1
  24. package/contentDisposition.js +1 -1
  25. package/cookie/index.js +1 -1
  26. package/cookie/src/api.js +1 -1
  27. package/cookie/src/assign.js +1 -1
  28. package/cookie/src/converter.js +1 -1
  29. package/cookie.js +1 -1
  30. package/date/convertTime.js +1 -1
  31. package/date/convertToDuration.js +1 -1
  32. package/date/index.js +1 -1
  33. package/date.js +1 -1
  34. package/decimal/decimal.js +1 -1
  35. package/decimal/index.js +1 -1
  36. package/decimal.js +1 -1
  37. package/dom-helpers/activeElement.js +1 -1
  38. package/dom-helpers/addClass.js +1 -1
  39. package/dom-helpers/addEventListener.js +1 -1
  40. package/dom-helpers/animate.js +1 -1
  41. package/dom-helpers/animationFrame.js +1 -1
  42. package/dom-helpers/attribute.js +1 -1
  43. package/dom-helpers/camelize.js +1 -1
  44. package/dom-helpers/camelizeStyle.js +1 -1
  45. package/dom-helpers/canUseDOM.js +1 -1
  46. package/dom-helpers/childElements.js +1 -1
  47. package/dom-helpers/childNodes.js +1 -1
  48. package/dom-helpers/clear.js +1 -1
  49. package/dom-helpers/closest.js +1 -1
  50. package/dom-helpers/collectElements.js +1 -1
  51. package/dom-helpers/collectSiblings.js +1 -1
  52. package/dom-helpers/contains.js +1 -1
  53. package/dom-helpers/css.js +1 -1
  54. package/dom-helpers/filterEventHandler.js +1 -1
  55. package/dom-helpers/getComputedStyle.js +1 -1
  56. package/dom-helpers/getScrollAccessor.js +1 -1
  57. package/dom-helpers/hasClass.js +1 -1
  58. package/dom-helpers/height.js +1 -1
  59. package/dom-helpers/hyphenate.js +1 -1
  60. package/dom-helpers/hyphenateStyle.js +1 -1
  61. package/dom-helpers/index.js +1 -1
  62. package/dom-helpers/insertAfter.js +1 -1
  63. package/dom-helpers/isDocument.js +1 -1
  64. package/dom-helpers/isInput.js +1 -1
  65. package/dom-helpers/isTransform.js +1 -1
  66. package/dom-helpers/isVisible.js +1 -1
  67. package/dom-helpers/isWindow.js +1 -1
  68. package/dom-helpers/listen.js +1 -1
  69. package/dom-helpers/matches.js +1 -1
  70. package/dom-helpers/nextUntil.js +1 -1
  71. package/dom-helpers/offset.js +1 -1
  72. package/dom-helpers/offsetParent.js +1 -1
  73. package/dom-helpers/ownerDocument.js +1 -1
  74. package/dom-helpers/ownerWindow.js +1 -1
  75. package/dom-helpers/parents.js +1 -1
  76. package/dom-helpers/position.js +1 -1
  77. package/dom-helpers/prepend.js +1 -1
  78. package/dom-helpers/querySelectorAll.js +1 -1
  79. package/dom-helpers/reflow.js +1 -1
  80. package/dom-helpers/remove.js +1 -1
  81. package/dom-helpers/removeClass.js +1 -1
  82. package/dom-helpers/removeEventListener.js +1 -1
  83. package/dom-helpers/scrollLeft.js +1 -1
  84. package/dom-helpers/scrollParent.js +1 -1
  85. package/dom-helpers/scrollTo.js +1 -1
  86. package/dom-helpers/scrollTop.js +1 -1
  87. package/dom-helpers/scrollbarSize.js +1 -1
  88. package/dom-helpers/siblings.js +1 -1
  89. package/dom-helpers/text.js +1 -1
  90. package/dom-helpers/toggleClass.js +1 -1
  91. package/dom-helpers/transitionEnd.js +1 -1
  92. package/dom-helpers/triggerEvent.js +1 -1
  93. package/dom-helpers/types.js +1 -1
  94. package/dom-helpers/width.js +1 -1
  95. package/domHelpers.js +1 -1
  96. package/emitter/index.js +1 -1
  97. package/emitter/src/index.js +1 -1
  98. package/emitter.js +1 -1
  99. package/file/fileToURL.js +1 -1
  100. package/file/index.js +1 -1
  101. package/file/saveAs.js +1 -1
  102. package/file.js +1 -1
  103. package/idb/index.js +1 -1
  104. package/idb.js +1 -1
  105. package/index.js +1 -1
  106. package/invariant/index.js +1 -1
  107. package/invariant.js +1 -1
  108. package/is/index.js +1 -1
  109. package/is.js +1 -1
  110. package/lunar/index.js +1 -1
  111. package/lunar/lib/Holiday.js +1 -1
  112. package/lunar/lib/HolidayUtil.js +1 -1
  113. package/lunar/lib/I18n.js +1 -1
  114. package/lunar/lib/JieQi.js +1 -1
  115. package/lunar/lib/Lunar.js +1 -1
  116. package/lunar/lib/LunarMonth.js +1 -1
  117. package/lunar/lib/LunarTime.js +1 -1
  118. package/lunar/lib/LunarUtil.js +1 -1
  119. package/lunar/lib/LunarYear.js +1 -1
  120. package/lunar/lib/ShouXingUtil.js +1 -1
  121. package/lunar/lib/Solar.js +1 -1
  122. package/lunar/lib/SolarHalfYear.js +1 -1
  123. package/lunar/lib/SolarMonth.js +1 -1
  124. package/lunar/lib/SolarSeason.js +1 -1
  125. package/lunar/lib/SolarUtil.js +1 -1
  126. package/lunar/lib/SolarWeek.js +1 -1
  127. package/lunar/lib/SolarYear.js +1 -1
  128. package/lunar/lib/index.js +1 -1
  129. package/lunar.js +1 -1
  130. package/math/index.js +1 -1
  131. package/math.js +1 -1
  132. package/md5/index.js +1 -1
  133. package/md5.js +1 -1
  134. package/mock/MockWebSocket.js +1 -1
  135. package/mock/MockXMLHttpRequest.js +1 -1
  136. package/mock/index.js +1 -1
  137. package/mock.js +1 -1
  138. package/normalize-wheel/ExecutionEnvironment.js +1 -1
  139. package/normalize-wheel/UserAgent_DEPRECATED.js +1 -1
  140. package/normalize-wheel/index.js +1 -1
  141. package/normalize-wheel/isEventSupported.js +1 -1
  142. package/normalizeWheel.js +1 -1
  143. package/number-to-chinese/index.js +1 -1
  144. package/numberToChinese.js +1 -1
  145. package/nzh/cn.js +1 -1
  146. package/nzh/hk.js +1 -1
  147. package/nzh/index.js +1 -1
  148. package/nzh/nzh.js +1 -1
  149. package/nzh/src/autoGet.js +1 -1
  150. package/nzh/src/index.js +1 -1
  151. package/nzh/src/langs/cn_b.js +1 -1
  152. package/nzh/src/langs/cn_s.js +1 -1
  153. package/nzh/src/langs/hk_b.js +1 -1
  154. package/nzh/src/langs/hk_s.js +1 -1
  155. package/nzh/src/utils.js +1 -1
  156. package/nzh.js +1 -1
  157. package/object-keys-sort/index.js +1 -1
  158. package/object-prototype-to-string-call/index.js +1 -1
  159. package/objectKeysSort.js +1 -1
  160. package/objectPrototypeToStringCall.js +1 -1
  161. package/package.json +1 -1
  162. package/pinyin/index.js +1 -1
  163. package/pinyin/simplified.js +1 -1
  164. package/pinyin/src/core.js +1 -1
  165. package/pinyin/src/simplified.js +1 -1
  166. package/pinyin/src/simplified_dict.js +1 -1
  167. package/pinyin/src/traditional.js +1 -1
  168. package/pinyin/src/traditional_dict.js +1 -1
  169. package/pinyin/traditional.js +1 -1
  170. package/pinyin.js +1 -1
  171. package/query-string/base.js +1 -1
  172. package/query-string/index.js +1 -1
  173. package/query-string/splitOnFirst.js +1 -1
  174. package/queryString.js +1 -1
  175. package/random/address.js +1 -1
  176. package/random/constellation.js +1 -1
  177. package/random/image.js +1 -1
  178. package/random/index.js +1 -1
  179. package/random/licensePlate.js +1 -1
  180. package/random/name.js +1 -1
  181. package/random/number.js +1 -1
  182. package/random/text.js +1 -1
  183. package/random/time.js +1 -1
  184. package/random/web.js +1 -1
  185. package/random.js +1 -1
  186. package/screenfull/index.js +1 -1
  187. package/screenfull.js +1 -1
  188. package/sleep/index.js +1 -1
  189. package/sleep.js +1 -1
  190. package/snapdom/index.js +1 -1
  191. package/snapdom/src/api/preCache.js +1 -1
  192. package/snapdom/src/api/snapdom.js +198 -153
  193. package/snapdom/src/core/cache.js +1 -1
  194. package/snapdom/src/core/capture.js +121 -326
  195. package/snapdom/src/core/clone.js +117 -266
  196. package/snapdom/src/core/context.js +1 -1
  197. package/snapdom/src/core/plugins.js +1 -1
  198. package/snapdom/src/core/prepare.js +48 -157
  199. package/snapdom/src/exporters/download.js +9 -10
  200. package/snapdom/src/exporters/toBlob.js +10 -15
  201. package/snapdom/src/exporters/toCanvas.js +72 -65
  202. package/snapdom/src/exporters/toImg.js +1 -1
  203. package/snapdom/src/modules/CSSVar.js +1 -1
  204. package/snapdom/src/modules/background.js +1 -1
  205. package/snapdom/src/modules/changeCSS.js +1 -1
  206. package/snapdom/src/modules/counter.js +1 -1
  207. package/snapdom/src/modules/fonts.js +118 -112
  208. package/snapdom/src/modules/iconFonts.js +133 -69
  209. package/snapdom/src/modules/images.js +36 -33
  210. package/snapdom/src/modules/lineClamp.js +1 -1
  211. package/snapdom/src/modules/pseudo.js +275 -161
  212. package/snapdom/src/modules/rasterize.js +6 -7
  213. package/snapdom/src/modules/snapFetch.js +1 -1
  214. package/snapdom/src/modules/styles.js +89 -67
  215. package/snapdom/src/modules/svgDefs.js +73 -60
  216. package/snapdom/src/utils/browser.js +13 -8
  217. package/snapdom/src/utils/capture.helpers.js +131 -0
  218. package/snapdom/src/utils/clone.helpers.js +283 -0
  219. package/snapdom/src/utils/css.js +1 -1
  220. package/snapdom/src/utils/helpers.js +1 -1
  221. package/snapdom/src/utils/image.js +15 -24
  222. package/snapdom/src/utils/prepare.helpers.js +8 -0
  223. package/snapdom/src/utils/transforms.helpers.js +211 -0
  224. package/snapdom.js +1 -1
  225. package/string/index.js +1 -1
  226. package/string.js +1 -1
  227. package/tinycolor/index.js +1 -1
  228. package/tinycolor/src/conversion.js +1 -1
  229. package/tinycolor/src/css-color-names.js +1 -1
  230. package/tinycolor/src/format-input.js +1 -1
  231. package/tinycolor/src/from-ratio.js +1 -1
  232. package/tinycolor/src/index.js +1 -1
  233. package/tinycolor/src/random.js +1 -1
  234. package/tinycolor/src/readability.js +1 -1
  235. package/tinycolor/src/to-ms-filter.js +1 -1
  236. package/tinycolor/src/utils.js +1 -1
  237. package/tinycolor.js +1 -1
  238. package/tree/index.js +1 -1
  239. package/tree/search/index.js +1 -1
  240. package/tree.js +1 -1
  241. package/tween/index.js +1 -1
  242. package/tween/src/easing.js +1 -1
  243. package/tween/src/tween.js +1 -1
  244. package/tween.js +1 -1
  245. package/types/constant/isMobile.d.ts +3 -0
  246. package/types/snapdom/src/api/snapdom.d.ts +10 -79
  247. package/types/snapdom/src/exporters/toCanvas.d.ts +11 -3
  248. package/types/snapdom/src/exporters/toJpg.d.ts +1 -0
  249. package/types/snapdom/src/exporters/toPng.d.ts +6 -0
  250. package/types/snapdom/src/exporters/toSvg.d.ts +1 -0
  251. package/types/snapdom/src/exporters/toWebp.d.ts +1 -0
  252. package/types/snapdom/src/modules/iconFonts.d.ts +7 -20
  253. package/types/snapdom/src/modules/pseudo.d.ts +18 -0
  254. package/types/snapdom/src/modules/rasterize.d.ts +6 -10
  255. package/types/snapdom/src/utils/browser.d.ts +0 -3
  256. package/types/snapdom/src/utils/capture.helpers.d.ts +45 -0
  257. package/types/snapdom/src/utils/clone.helpers.d.ts +97 -0
  258. package/types/snapdom/src/utils/image.d.ts +0 -8
  259. package/types/snapdom/src/utils/index.d.ts +1 -1
  260. package/types/snapdom/src/utils/prepare.helpers.d.ts +9 -0
  261. package/types/snapdom/src/utils/transforms.helpers.d.ts +118 -0
  262. package/ui-color/compareColorByRange.js +1 -1
  263. package/ui-color/index.js +1 -1
  264. package/uiColor.js +1 -1
  265. package/url-toolkit/index.js +1 -1
  266. package/url-toolkit/src/url-toolkit.js +1 -1
  267. package/urlToolkit.js +1 -1
  268. package/validate/index.js +1 -1
  269. package/validate/src/index.js +1 -1
  270. package/validate/src/locale/en-US.js +1 -1
  271. package/validate/src/locale/zh-CN.js +1 -1
  272. package/validate/src/message.js +1 -1
  273. package/validate/src/rules/array.js +1 -1
  274. package/validate/src/rules/base.js +1 -1
  275. package/validate/src/rules/boolean.js +1 -1
  276. package/validate/src/rules/custom.js +1 -1
  277. package/validate/src/rules/number.js +1 -1
  278. package/validate/src/rules/object.js +1 -1
  279. package/validate/src/rules/string.js +1 -1
  280. package/validate/src/rules/type.js +1 -1
  281. package/validate/src/utils.js +1 -1
  282. package/validate.js +1 -1
  283. package/version/index.js +1 -1
  284. package/version.js +1 -1
  285. package/xlsx/index.js +1 -1
  286. package/xlsx/xlsx.js +1 -1
  287. package/xlsx.js +1 -1
@@ -1,8 +1,8 @@
1
- /* 2025-11-19 09:08:12 */
2
- import { cache as g } from "../core/cache.js";
3
- import { isIconFont as x } from "./iconFonts.js";
1
+ /* 2025-11-27 12:11:03 */
2
+ import { cache as w } from "../core/cache.js";
3
+ import { isIconFont as k } from "./iconFonts.js";
4
4
  import { extractURL as X } from "../utils/helpers.js";
5
- import { snapFetch as A } from "./snapFetch.js";
5
+ import { snapFetch as U } from "./snapFetch.js";
6
6
  async function lt(o, e, r, a = 32, n = "#000") {
7
7
  e = e.replace(/^['"]+|['"]+$/g, "");
8
8
  const c = window.devicePixelRatio || 1;
@@ -47,31 +47,31 @@ function T(o) {
47
47
  }
48
48
  return "";
49
49
  }
50
- function N(o) {
50
+ function I(o) {
51
51
  const e = String(o ?? "400").trim().toLowerCase();
52
52
  if (e === "normal") return 400;
53
53
  if (e === "bold") return 700;
54
54
  const r = parseInt(e, 10);
55
55
  return Number.isFinite(r) ? Math.min(900, Math.max(100, r)) : 400;
56
56
  }
57
- function W(o) {
57
+ function N(o) {
58
58
  const e = String(o ?? "normal").trim().toLowerCase();
59
59
  return e.startsWith("italic") ? "italic" : e.startsWith("oblique") ? "oblique" : "normal";
60
60
  }
61
- function Y(o) {
61
+ function K(o) {
62
62
  const e = String(o ?? "100%").match(/(\d+(?:\.\d+)?)\s*%/);
63
63
  return e ? Math.max(50, Math.min(200, parseFloat(e[1]))) : 100;
64
64
  }
65
- function J(o) {
65
+ function Y(o) {
66
66
  const e = String(o || "400").trim(), r = e.match(/^(\d{2,3})\s+(\d{2,3})$/);
67
67
  if (r) {
68
- const n = N(r[1]), c = N(r[2]);
68
+ const n = I(r[1]), c = I(r[2]);
69
69
  return { min: Math.min(n, c), max: Math.max(n, c) };
70
70
  }
71
- const a = N(e);
71
+ const a = I(e);
72
72
  return { min: a, max: a };
73
73
  }
74
- function K(o) {
74
+ function J(o) {
75
75
  const e = String(o || "normal").trim().toLowerCase();
76
76
  return e === "italic" ? { kind: "italic" } : e.startsWith("oblique") ? { kind: "oblique" } : { kind: "normal" };
77
77
  }
@@ -129,7 +129,7 @@ function q(o, e) {
129
129
  return `url("${t}")`;
130
130
  });
131
131
  }
132
- const v = /@import\s+(?:url\(\s*(['"]?)([^)"']+)\1\s*\)|(['"])([^"']+)\3)([^;]*);/g, I = 4;
132
+ const v = /@import\s+(?:url\(\s*(['"]?)([^)"']+)\1\s*\)|(['"])([^"']+)\3)([^;]*);/g, W = 4;
133
133
  async function et(o, e, r) {
134
134
  if (!o) return o;
135
135
  const a = /* @__PURE__ */ new Set();
@@ -141,22 +141,22 @@ async function et(o, e, r) {
141
141
  }
142
142
  }
143
143
  async function c(f, s, u = 0) {
144
- if (u > I)
144
+ if (u > W)
145
145
  return console.warn(
146
- `[snapDOM] @import depth exceeded (${I}) at ${s}`
146
+ `[snapDOM] @import depth exceeded (${W}) at ${s}`
147
147
  ), f;
148
148
  let m = "", d = 0, p;
149
149
  for (; p = v.exec(f); ) {
150
150
  m += f.slice(d, p.index), d = v.lastIndex;
151
- const L = (p[2] || p[4] || "").trim(), C = n(L, s);
152
- if (a.has(C)) {
153
- console.warn(`[snapDOM] Skipping circular @import: ${C}`);
151
+ const b = (p[2] || p[4] || "").trim(), R = n(b, s);
152
+ if (a.has(R)) {
153
+ console.warn(`[snapDOM] Skipping circular @import: ${R}`);
154
154
  continue;
155
155
  }
156
- a.add(C);
156
+ a.add(R);
157
157
  let i = "";
158
158
  try {
159
- const l = await A(C, {
159
+ const l = await U(R, {
160
160
  as: "text",
161
161
  useProxy: r,
162
162
  silent: !0
@@ -164,8 +164,8 @@ async function et(o, e, r) {
164
164
  l.ok && typeof l.data == "string" && (i = l.data);
165
165
  } catch {
166
166
  }
167
- i ? (i = q(i, C), i = await c(i, C, u + 1), m += `
168
- /* inlined: ${C} */
167
+ i ? (i = q(i, R), i = await c(i, R, u + 1), m += `
168
+ /* inlined: ${R} */
169
169
  ${i}
170
170
  `) : m += p[0];
171
171
  }
@@ -229,17 +229,17 @@ async function z(o, e, r = "") {
229
229
  t = new URL(t, e || location.href).href;
230
230
  } catch {
231
231
  }
232
- if (!x(t)) {
233
- if (g.resource?.has(t)) {
234
- g.font?.add(t), a = a.replace(n[0], `url(${g.resource.get(t)})`);
232
+ if (!k(t)) {
233
+ if (w.resource?.has(t)) {
234
+ w.font?.add(t), a = a.replace(n[0], `url(${w.resource.get(t)})`);
235
235
  continue;
236
236
  }
237
- if (!g.font?.has(t))
237
+ if (!w.font?.has(t))
238
238
  try {
239
- const f = await A(t, { as: "dataURL", useProxy: r, silent: !0 });
239
+ const f = await U(t, { as: "dataURL", useProxy: r, silent: !0 });
240
240
  if (f.ok && typeof f.data == "string") {
241
241
  const s = f.data;
242
- g.resource?.set(t, s), g.font?.add(t), a = a.replace(n[0], `url(${s})`);
242
+ w.resource?.set(t, s), w.font?.add(t), a = a.replace(n[0], `url(${s})`);
243
243
  }
244
244
  } catch {
245
245
  console.warn("[snapDOM] Failed to fetch font resource:", t);
@@ -280,13 +280,13 @@ function rt(o) {
280
280
  if (!o) return o;
281
281
  const e = /@font-face[^{}]*\{[^}]*\}/gi, r = /* @__PURE__ */ new Set(), a = [];
282
282
  for (const c of o.match(e) || []) {
283
- const t = c.match(/font-family:\s*([^;]+);/i)?.[1] || "", f = T(t), s = (c.match(/font-weight:\s*([^;]+);/i)?.[1] || "400").trim(), u = (c.match(/font-style:\s*([^;]+);/i)?.[1] || "normal").trim(), m = (c.match(/font-stretch:\s*([^;]+);/i)?.[1] || "100%").trim(), d = (c.match(/unicode-range:\s*([^;]+);/i)?.[1] || "").trim(), p = (c.match(/src\s*:\s*([^;}]+)[;}]/i)?.[1] || "").trim(), L = P(p, location.href), C = L.length ? L.map((l) => String(l).toLowerCase()).sort().join("|") : p.toLowerCase(), i = [
283
+ const t = c.match(/font-family:\s*([^;]+);/i)?.[1] || "", f = T(t), s = (c.match(/font-weight:\s*([^;]+);/i)?.[1] || "400").trim(), u = (c.match(/font-style:\s*([^;]+);/i)?.[1] || "normal").trim(), m = (c.match(/font-stretch:\s*([^;]+);/i)?.[1] || "100%").trim(), d = (c.match(/unicode-range:\s*([^;]+);/i)?.[1] || "").trim(), p = (c.match(/src\s*:\s*([^;}]+)[;}]/i)?.[1] || "").trim(), b = P(p, location.href), R = b.length ? b.map((l) => String(l).toLowerCase()).sort().join("|") : p.toLowerCase(), i = [
284
284
  String(f || "").toLowerCase(),
285
285
  s,
286
286
  u,
287
287
  m,
288
288
  d.toLowerCase(),
289
- C
289
+ R
290
290
  ].join("|");
291
291
  r.has(i) || (r.add(i), a.push(c));
292
292
  }
@@ -321,9 +321,9 @@ async function H(o, e, r, a) {
321
321
  for (const t of n) {
322
322
  if (t.type === CSSRule.IMPORT_RULE && t.styleSheet) {
323
323
  const f = t.href ? c(t.href, e) : e;
324
- if (a.depth >= I) {
324
+ if (a.depth >= W) {
325
325
  console.warn(
326
- `[snapDOM] CSSOM import depth exceeded (${I}) at ${f}`
326
+ `[snapDOM] CSSOM import depth exceeded (${W}) at ${f}`
327
327
  );
328
328
  continue;
329
329
  }
@@ -343,23 +343,23 @@ async function H(o, e, r, a) {
343
343
  }
344
344
  if (t.type === CSSRule.FONT_FACE_RULE) {
345
345
  const f = (t.style.getPropertyValue("font-family") || "").trim(), s = T(f);
346
- if (!s || x(s)) continue;
347
- const u = (t.style.getPropertyValue("font-weight") || "400").trim(), m = (t.style.getPropertyValue("font-style") || "normal").trim(), d = (t.style.getPropertyValue("font-stretch") || "100%").trim(), p = (t.style.getPropertyValue("src") || "").trim(), L = (t.style.getPropertyValue("unicode-range") || "").trim();
346
+ if (!s || k(s)) continue;
347
+ const u = (t.style.getPropertyValue("font-weight") || "400").trim(), m = (t.style.getPropertyValue("font-style") || "normal").trim(), d = (t.style.getPropertyValue("font-stretch") || "100%").trim(), p = (t.style.getPropertyValue("src") || "").trim(), b = (t.style.getPropertyValue("unicode-range") || "").trim();
348
348
  if (!a.faceMatchesRequired(s, m, u, d))
349
349
  continue;
350
- const C = B(L);
351
- if (!V(a.usedCodepoints, C)) continue;
350
+ const R = B(b);
351
+ if (!V(a.usedCodepoints, R)) continue;
352
352
  const i = {
353
353
  family: s,
354
354
  weightSpec: u,
355
355
  styleSpec: m,
356
356
  stretchSpec: d,
357
- unicodeRange: L,
357
+ unicodeRange: b,
358
358
  srcRaw: p,
359
359
  srcUrls: P(p, e || location.href),
360
360
  href: e || location.href
361
361
  };
362
- if (a.simpleExcluder && a.simpleExcluder(i, C)) continue;
362
+ if (a.simpleExcluder && a.simpleExcluder(i, R)) continue;
363
363
  if (/url\(/i.test(p)) {
364
364
  const l = await z(
365
365
  p,
@@ -367,11 +367,11 @@ async function H(o, e, r, a) {
367
367
  a.useProxy
368
368
  );
369
369
  await r(
370
- `@font-face{font-family:${s};src:${l};font-style:${m};font-weight:${u};font-stretch:${d};${L ? `unicode-range:${L};` : ""}}`
370
+ `@font-face{font-family:${s};src:${l};font-style:${m};font-weight:${u};font-stretch:${d};${b ? `unicode-range:${b};` : ""}}`
371
371
  );
372
372
  } else
373
373
  await r(
374
- `@font-face{font-family:${s};src:${p};font-style:${m};font-weight:${u};font-stretch:${d};${L ? `unicode-range:${L};` : ""}}`
374
+ `@font-face{font-family:${s};src:${p};font-style:${m};font-weight:${u};font-stretch:${d};${b ? `unicode-range:${b};` : ""}}`
375
375
  );
376
376
  }
377
377
  }
@@ -386,42 +386,48 @@ async function ut({
386
386
  o instanceof Set || (o = /* @__PURE__ */ new Set()), e instanceof Set || (e = /* @__PURE__ */ new Set());
387
387
  const c = /* @__PURE__ */ new Map();
388
388
  for (const i of o) {
389
- const [l, h, w, S] = String(i).split("__");
389
+ const [l, h, S, g] = String(i).split("__");
390
390
  if (!l) continue;
391
391
  const y = c.get(l) || [];
392
- y.push({ w: parseInt(h, 10), s: w, st: parseInt(S, 10) }), c.set(l, y);
392
+ y.push({ w: parseInt(h, 10), s: S, st: parseInt(g, 10) }), c.set(l, y);
393
393
  }
394
- function t(i, l, h, w) {
394
+ function t(i, l, h, S) {
395
395
  if (!c.has(i)) return !1;
396
- const S = c.get(i), y = J(h), R = K(l), b = Q(w), F = y.min !== y.max, M = y.min, E = ($) => R.kind === "normal" && $ === "normal" || R.kind !== "normal" && ($ === "italic" || $ === "oblique");
397
- let k = !1;
398
- for (const $ of S) {
399
- const _ = F ? $.w >= y.min && $.w <= y.max : $.w === M, O = E(W($.s)), U = $.st >= b.min && $.st <= b.max;
400
- if (_ && O && U) {
401
- k = !0;
396
+ const g = c.get(i), y = Y(h), C = J(l), L = Q(S), M = y.min !== y.max, F = y.min, A = ($) => C.kind === "normal" && $ === "normal" || C.kind !== "normal" && ($ === "italic" || $ === "oblique");
397
+ let O = !1;
398
+ for (const $ of g) {
399
+ const x = M ? $.w >= y.min && $.w <= y.max : $.w === F, _ = A(N($.s)), E = $.st >= L.min && $.st <= L.max;
400
+ if (x && _ && E) {
401
+ O = !0;
402
402
  break;
403
403
  }
404
404
  }
405
- if (k) return !0;
406
- if (!F)
407
- for (const $ of S) {
408
- const _ = E(W($.s)), O = $.st >= b.min && $.st <= b.max;
409
- if (Math.abs(M - $.w) <= 300 && _ && O) return !0;
405
+ if (O) return !0;
406
+ if (!M)
407
+ for (const $ of g) {
408
+ const x = A(N($.s)), _ = $.st >= L.min && $.st <= L.max;
409
+ if (Math.abs(F - $.w) <= 300 && x && _) return !0;
410
+ }
411
+ if (!M && C.kind === "normal" && g.some((x) => N(x.s) !== "normal"))
412
+ for (const x of g) {
413
+ const _ = Math.abs(F - x.w) <= 300, E = x.st >= L.min && x.st <= L.max;
414
+ if (_ && E)
415
+ return !0;
410
416
  }
411
417
  return !1;
412
418
  }
413
419
  const f = D(r), s = st(o, r, a, n);
414
- if (g.resource?.has(s))
415
- return g.resource.get(s);
420
+ if (w.resource?.has(s))
421
+ return w.resource.get(s);
416
422
  const u = tt(o), m = [], d = v;
417
423
  for (const i of document.querySelectorAll("style")) {
418
424
  const l = i.textContent || "";
419
425
  for (const h of l.matchAll(d)) {
420
- const w = (h[2] || h[4] || "").trim();
421
- if (!w || x(w)) continue;
426
+ const S = (h[2] || h[4] || "").trim();
427
+ if (!S || k(S)) continue;
422
428
  !!document.querySelector(
423
- `link[rel="stylesheet"][href="${w}"]`
424
- ) || m.push(w);
429
+ `link[rel="stylesheet"][href="${S}"]`
430
+ ) || m.push(S);
425
431
  }
426
432
  }
427
433
  m.length && await Promise.all(
@@ -435,12 +441,12 @@ async function ut({
435
441
  )
436
442
  );
437
443
  let p = "";
438
- const L = Array.from(
444
+ const b = Array.from(
439
445
  document.querySelectorAll('link[rel="stylesheet"]')
440
446
  ).filter((i) => !!i.href);
441
- for (const i of L)
447
+ for (const i of b)
442
448
  try {
443
- if (x(i.href)) continue;
449
+ if (k(i.href)) continue;
444
450
  let l = "", h = !1;
445
451
  try {
446
452
  h = new URL(i.href, location.href).origin === location.origin;
@@ -449,47 +455,47 @@ async function ut({
449
455
  if (!h && !Z(i.href, u))
450
456
  continue;
451
457
  if (h) {
452
- const S = Array.from(document.styleSheets).find(
458
+ const g = Array.from(document.styleSheets).find(
453
459
  (y) => y.href === i.href
454
460
  );
455
- if (S)
461
+ if (g)
456
462
  try {
457
- const y = S.cssRules || [];
458
- l = Array.from(y).map((R) => R.cssText).join("");
463
+ const y = g.cssRules || [];
464
+ l = Array.from(y).map((C) => C.cssText).join("");
459
465
  } catch {
460
466
  }
461
467
  }
462
- if (!l && (l = (await A(i.href, { as: "text", useProxy: n })).data, x(i.href)))
468
+ if (!l && (l = (await U(i.href, { as: "text", useProxy: n })).data, k(i.href)))
463
469
  continue;
464
470
  l = await et(l, i.href, n);
465
- let w = "";
466
- for (const S of l.match(nt) || []) {
467
- const y = (S.match(/font-family:\s*([^;]+);/i)?.[1] || "").trim(), R = T(y);
468
- if (!R || x(R)) continue;
469
- const b = (S.match(/font-weight:\s*([^;]+);/i)?.[1] || "400").trim(), F = (S.match(/font-style:\s*([^;]+);/i)?.[1] || "normal").trim(), M = (S.match(/font-stretch:\s*([^;]+);/i)?.[1] || "100%").trim(), E = (S.match(/unicode-range:\s*([^;]+);/i)?.[1] || "").trim(), k = (S.match(/src\s*:\s*([^;}]+)[;}]/i)?.[1] || "").trim(), $ = P(k, i.href);
470
- if (!t(R, F, b, M))
471
+ let S = "";
472
+ for (const g of l.match(nt) || []) {
473
+ const y = (g.match(/font-family:\s*([^;]+);/i)?.[1] || "").trim(), C = T(y);
474
+ if (!C || k(C)) continue;
475
+ const L = (g.match(/font-weight:\s*([^;]+);/i)?.[1] || "400").trim(), M = (g.match(/font-style:\s*([^;]+);/i)?.[1] || "normal").trim(), F = (g.match(/font-stretch:\s*([^;]+);/i)?.[1] || "100%").trim(), A = (g.match(/unicode-range:\s*([^;]+);/i)?.[1] || "").trim(), O = (g.match(/src\s*:\s*([^;}]+)[;}]/i)?.[1] || "").trim(), $ = P(O, i.href);
476
+ if (!t(C, M, L, F))
471
477
  continue;
472
- const _ = B(E);
473
- if (!V(e, _)) continue;
474
- const O = {
475
- family: R,
476
- weightSpec: b,
477
- styleSpec: F,
478
- stretchSpec: M,
479
- unicodeRange: E,
480
- srcRaw: k,
478
+ const x = B(A);
479
+ if (!V(e, x)) continue;
480
+ const _ = {
481
+ family: C,
482
+ weightSpec: L,
483
+ styleSpec: M,
484
+ stretchSpec: F,
485
+ unicodeRange: A,
486
+ srcRaw: O,
481
487
  srcUrls: $,
482
488
  href: i.href
483
489
  };
484
- if (r && f(O, _)) continue;
485
- const U = /url\(/i.test(k) ? await z(S, i.href, n) : S;
486
- w += U;
490
+ if (r && f(_, x)) continue;
491
+ const E = /url\(/i.test(O) ? await z(g, i.href, n) : g;
492
+ S += E;
487
493
  }
488
- w.trim() && (p += w);
494
+ S.trim() && (p += S);
489
495
  } catch {
490
496
  console.warn("[snapDOM] Failed to process stylesheet:", i.href);
491
497
  }
492
- const C = {
498
+ const R = {
493
499
  requiredIndex: c,
494
500
  usedCodepoints: e,
495
501
  faceMatchesRequired: t,
@@ -499,16 +505,16 @@ async function ut({
499
505
  depth: 0
500
506
  };
501
507
  for (const i of document.styleSheets)
502
- if (!(i.href && L.some((l) => l.href === i.href)))
508
+ if (!(i.href && b.some((l) => l.href === i.href)))
503
509
  try {
504
510
  const l = i.href || location.href;
505
- l && C.visitedSheets.add(l), await H(
511
+ l && R.visitedSheets.add(l), await H(
506
512
  i,
507
513
  l,
508
514
  async (h) => {
509
515
  p += h;
510
516
  },
511
- C
517
+ R
512
518
  );
513
519
  } catch {
514
520
  }
@@ -516,23 +522,23 @@ async function ut({
516
522
  for (const i of document.fonts || []) {
517
523
  if (!i || !i.family || i.status !== "loaded" || !i._snapdomSrc) continue;
518
524
  const l = String(i.family).replace(/^['"]+|['"]+$/g, "");
519
- if (x(l) || !c.has(l) || r?.families && r.families.some(
520
- (w) => String(w).toLowerCase() === l.toLowerCase()
525
+ if (k(l) || !c.has(l) || r?.families && r.families.some(
526
+ (S) => String(S).toLowerCase() === l.toLowerCase()
521
527
  ))
522
528
  continue;
523
529
  let h = i._snapdomSrc;
524
530
  if (!String(h).startsWith("data:")) {
525
- if (g.resource?.has(i._snapdomSrc))
526
- h = g.resource.get(i._snapdomSrc), g.font?.add(i._snapdomSrc);
527
- else if (!g.font?.has(i._snapdomSrc))
531
+ if (w.resource?.has(i._snapdomSrc))
532
+ h = w.resource.get(i._snapdomSrc), w.font?.add(i._snapdomSrc);
533
+ else if (!w.font?.has(i._snapdomSrc))
528
534
  try {
529
- const w = await A(i._snapdomSrc, {
535
+ const S = await U(i._snapdomSrc, {
530
536
  as: "dataURL",
531
537
  useProxy: n,
532
538
  silent: !0
533
539
  });
534
- if (w.ok && typeof w.data == "string")
535
- h = w.data, g.resource?.set(i._snapdomSrc, h), g.font?.add(i._snapdomSrc);
540
+ if (S.ok && typeof S.data == "string")
541
+ h = S.data, w.resource?.set(i._snapdomSrc, h), w.font?.add(i._snapdomSrc);
536
542
  else
537
543
  continue;
538
544
  } catch {
@@ -550,24 +556,24 @@ async function ut({
550
556
  for (const i of a) {
551
557
  if (!i || typeof i != "object") continue;
552
558
  const l = String(i.family || "").replace(/^['"]+|['"]+$/g, "");
553
- if (!l || x(l) || !c.has(l) || r?.families && r.families.some(
554
- (b) => String(b).toLowerCase() === l.toLowerCase()
559
+ if (!l || k(l) || !c.has(l) || r?.families && r.families.some(
560
+ (L) => String(L).toLowerCase() === l.toLowerCase()
555
561
  ))
556
562
  continue;
557
- const h = i.weight != null ? String(i.weight) : "normal", w = i.style != null ? String(i.style) : "normal", S = i.stretchPct != null ? `${i.stretchPct}%` : "100%", y = String(i.src || "");
558
- let R = y;
559
- if (!R.startsWith("data:")) {
560
- if (g.resource?.has(y))
561
- R = g.resource.get(y), g.font?.add(y);
562
- else if (!g.font?.has(y))
563
+ const h = i.weight != null ? String(i.weight) : "normal", S = i.style != null ? String(i.style) : "normal", g = i.stretchPct != null ? `${i.stretchPct}%` : "100%", y = String(i.src || "");
564
+ let C = y;
565
+ if (!C.startsWith("data:")) {
566
+ if (w.resource?.has(y))
567
+ C = w.resource.get(y), w.font?.add(y);
568
+ else if (!w.font?.has(y))
563
569
  try {
564
- const b = await A(y, {
570
+ const L = await U(y, {
565
571
  as: "dataURL",
566
572
  useProxy: n,
567
573
  silent: !0
568
574
  });
569
- if (b.ok && typeof b.data == "string")
570
- R = b.data, g.resource?.set(y, R), g.font?.add(y);
575
+ if (L.ok && typeof L.data == "string")
576
+ C = L.data, w.resource?.set(y, C), w.font?.add(y);
571
577
  else
572
578
  continue;
573
579
  } catch {
@@ -575,9 +581,9 @@ async function ut({
575
581
  continue;
576
582
  }
577
583
  }
578
- p += `@font-face{font-family:'${l}';src:url(${R});font-style:${w};font-weight:${h};font-stretch:${S};}`;
584
+ p += `@font-face{font-family:'${l}';src:url(${C});font-style:${S};font-weight:${h};font-stretch:${g};}`;
579
585
  }
580
- return p && (p = rt(p), g.resource?.set(s, p)), p;
586
+ return p && (p = rt(p), w.resource?.set(s, p)), p;
581
587
  }
582
588
  function mt(o) {
583
589
  const e = /* @__PURE__ */ new Set();
@@ -585,7 +591,7 @@ function mt(o) {
585
591
  const r = document.createTreeWalker(o, NodeFilter.SHOW_ELEMENT, null), a = (t) => {
586
592
  const f = T(t.fontFamily);
587
593
  if (!f) return;
588
- const s = (u, m, d) => `${f}__${N(u)}__${W(m)}__${Y(d)}`;
594
+ const s = (u, m, d) => `${f}__${I(u)}__${N(m)}__${K(d)}`;
589
595
  e.add(s(t.fontWeight, t.fontStyle, t.fontStretch));
590
596
  };
591
597
  a(getComputedStyle(o));