@lark-apaas/client-toolkit-lite 1.1.1-alpha.2 → 1.1.1-beta.1
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/index.cjs +140 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +136 -27
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -34,6 +34,7 @@ __export(index_exports, {
|
|
|
34
34
|
ActiveLink: () => ActiveLink,
|
|
35
35
|
AppContainer: () => AppContainer_default,
|
|
36
36
|
NavLink: () => NavLink2,
|
|
37
|
+
PagePlaceholder: () => PagePlaceholder_default,
|
|
37
38
|
QueryProvider: () => QueryProvider_default,
|
|
38
39
|
TrackKey: () => TrackKey,
|
|
39
40
|
UniversalLink: () => UniversalLink,
|
|
@@ -531,6 +532,65 @@ function useLogout() {
|
|
|
531
532
|
}
|
|
532
533
|
__name(useLogout, "useLogout");
|
|
533
534
|
|
|
535
|
+
// src/locales/messages.ts
|
|
536
|
+
var messages = {
|
|
537
|
+
// ── Safety 组件 ──────────────────────────────────────────────
|
|
538
|
+
"safety.badge.label": {
|
|
539
|
+
zh: "\u5999\u642D",
|
|
540
|
+
en: "Spark"
|
|
541
|
+
},
|
|
542
|
+
"safety.badge.builtWith": {
|
|
543
|
+
zh: "\u7531\u5999\u642D\u642D\u5EFA",
|
|
544
|
+
en: "Built with Spark"
|
|
545
|
+
},
|
|
546
|
+
"safety.ai.disclaimer": {
|
|
547
|
+
zh: "\u5305\u542B AI \u751F\u6210\u5185\u5BB9\uFF0C\u8BF7\u6CE8\u610F\u7504\u522B",
|
|
548
|
+
en: "AI-generated content. Use with care."
|
|
549
|
+
},
|
|
550
|
+
"safety.tenant.operated": {
|
|
551
|
+
zh: "{name}\u8FD0\u8425",
|
|
552
|
+
en: "Operated by {name}"
|
|
553
|
+
},
|
|
554
|
+
"safety.button.dontShowAgain": {
|
|
555
|
+
zh: "\u4E0D\u518D\u5C55\u793A",
|
|
556
|
+
en: "Don't show again"
|
|
557
|
+
},
|
|
558
|
+
"safety.button.learnMore": {
|
|
559
|
+
zh: "\u4E86\u89E3\u66F4\u591A",
|
|
560
|
+
en: "Learn more"
|
|
561
|
+
},
|
|
562
|
+
"safety.cover.pc": {
|
|
563
|
+
zh: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover.png",
|
|
564
|
+
en: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover-weben.png"
|
|
565
|
+
},
|
|
566
|
+
"safety.cover.mobile": {
|
|
567
|
+
zh: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover-mobile.png",
|
|
568
|
+
en: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover-mobileen.png"
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
var messages_default = messages;
|
|
572
|
+
|
|
573
|
+
// src/utils/locale.ts
|
|
574
|
+
function getLocale() {
|
|
575
|
+
const lang = navigator.language || "zh";
|
|
576
|
+
return lang.startsWith("zh") ? "zh" : "en";
|
|
577
|
+
}
|
|
578
|
+
__name(getLocale, "getLocale");
|
|
579
|
+
|
|
580
|
+
// src/locales/index.ts
|
|
581
|
+
function t(key, params) {
|
|
582
|
+
const locale = getLocale();
|
|
583
|
+
const entry = messages_default[key];
|
|
584
|
+
let text = entry?.[locale] ?? entry?.zh ?? key;
|
|
585
|
+
if (params) {
|
|
586
|
+
for (const [k, v] of Object.entries(params)) {
|
|
587
|
+
text = text.replace(`{${k}}`, v);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
return text;
|
|
591
|
+
}
|
|
592
|
+
__name(t, "t");
|
|
593
|
+
|
|
534
594
|
// src/components/AppContainer/safety.tsx
|
|
535
595
|
var resetBase = {
|
|
536
596
|
boxSizing: "border-box",
|
|
@@ -553,8 +613,8 @@ var FONT_FAMILY = "'PingFang SC', -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
|
|
553
613
|
var Z_BADGE = 1e7;
|
|
554
614
|
var Z_OVERLAY = 10000001;
|
|
555
615
|
var LOGO_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodalogo.svg";
|
|
556
|
-
var
|
|
557
|
-
var
|
|
616
|
+
var getCoverUrl = /* @__PURE__ */ __name(() => t("safety.cover.pc"), "getCoverUrl");
|
|
617
|
+
var getCoverMobileUrl = /* @__PURE__ */ __name(() => t("safety.cover.mobile"), "getCoverMobileUrl");
|
|
558
618
|
var ICON_COMPANY_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/icon/icon_company_outlined.svg";
|
|
559
619
|
var ICON_AI_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/icon/icon_efficiency-ai_outlined.svg";
|
|
560
620
|
var LANDING_URL = "https://miaoda.feishu.cn/landing";
|
|
@@ -840,7 +900,7 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
840
900
|
const link = document.createElement("link");
|
|
841
901
|
link.rel = "preload";
|
|
842
902
|
link.as = "image";
|
|
843
|
-
link.href =
|
|
903
|
+
link.href = getCoverMobileUrl();
|
|
844
904
|
document.head.appendChild(link);
|
|
845
905
|
}
|
|
846
906
|
}, [
|
|
@@ -867,7 +927,7 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
867
927
|
...badgeTextStyle,
|
|
868
928
|
minWidth: 28
|
|
869
929
|
}
|
|
870
|
-
}, "
|
|
930
|
+
}, t("safety.badge.label")))), /* @__PURE__ */ import_react5.default.createElement(DialogPrimitive.Portal, null, /* @__PURE__ */ import_react5.default.createElement(DialogPrimitive.Overlay, {
|
|
871
931
|
style: overlayStyle
|
|
872
932
|
}), /* @__PURE__ */ import_react5.default.createElement(DialogPrimitive.Content, {
|
|
873
933
|
style: sheetContent,
|
|
@@ -877,13 +937,13 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
877
937
|
position: "absolute",
|
|
878
938
|
clip: "rect(0 0 0 0)"
|
|
879
939
|
}
|
|
880
|
-
}, "
|
|
940
|
+
}, t("safety.badge.builtWith")), /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
881
941
|
style: sheetInner
|
|
882
942
|
}, /* @__PURE__ */ import_react5.default.createElement(XIcon, {
|
|
883
943
|
style: sheetCloseBtn,
|
|
884
944
|
onClick: /* @__PURE__ */ __name(() => setOpen(false), "onClick")
|
|
885
945
|
}), /* @__PURE__ */ import_react5.default.createElement("img", {
|
|
886
|
-
src:
|
|
946
|
+
src: getCoverMobileUrl(),
|
|
887
947
|
alt: "",
|
|
888
948
|
style: sheetCover,
|
|
889
949
|
onClick: /* @__PURE__ */ __name(() => window.open(LANDING_URL, "_blank"), "onClick")
|
|
@@ -903,14 +963,16 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
903
963
|
style: infoIconMobile
|
|
904
964
|
}), /* @__PURE__ */ import_react5.default.createElement("p", {
|
|
905
965
|
style: sheetInfoText
|
|
906
|
-
},
|
|
966
|
+
}, t("safety.tenant.operated", {
|
|
967
|
+
name: userinfo?.name ?? ""
|
|
968
|
+
}))), /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
907
969
|
style: infoRow
|
|
908
970
|
}, /* @__PURE__ */ import_react5.default.createElement("img", {
|
|
909
971
|
src: ICON_AI_URL,
|
|
910
972
|
style: infoIconMobile
|
|
911
973
|
}), /* @__PURE__ */ import_react5.default.createElement("p", {
|
|
912
974
|
style: sheetInfoText
|
|
913
|
-
}, "
|
|
975
|
+
}, t("safety.ai.disclaimer")))), /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
914
976
|
style: mobileBtnRow
|
|
915
977
|
}, /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
916
978
|
style: mobileBtnOutline,
|
|
@@ -921,10 +983,10 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
921
983
|
setTimeout(() => setVisible(false), 200);
|
|
922
984
|
window.localStorage?.setItem(HasClosedKey, "true");
|
|
923
985
|
}, "onClick")
|
|
924
|
-
}, "
|
|
986
|
+
}, t("safety.button.dontShowAgain")), /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
925
987
|
style: mobileBtnFilled,
|
|
926
988
|
onClick: /* @__PURE__ */ __name(() => window.open(LANDING_URL, "_blank"), "onClick")
|
|
927
|
-
}, "
|
|
989
|
+
}, t("safety.button.learnMore"))))))));
|
|
928
990
|
}
|
|
929
991
|
return /* @__PURE__ */ import_react5.default.createElement(PopoverPrimitive.Root, {
|
|
930
992
|
open,
|
|
@@ -948,7 +1010,7 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
948
1010
|
...badgeTextStyle,
|
|
949
1011
|
minWidth: 60
|
|
950
1012
|
}
|
|
951
|
-
}, "
|
|
1013
|
+
}, t("safety.badge.builtWith")))), /* @__PURE__ */ import_react5.default.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ import_react5.default.createElement(PopoverPrimitive.Content, {
|
|
952
1014
|
style: popoverContent,
|
|
953
1015
|
side: "top",
|
|
954
1016
|
align: "end",
|
|
@@ -963,7 +1025,7 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
963
1025
|
}, /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
964
1026
|
style: popoverInner
|
|
965
1027
|
}, /* @__PURE__ */ import_react5.default.createElement("img", {
|
|
966
|
-
src:
|
|
1028
|
+
src: getCoverUrl(),
|
|
967
1029
|
alt: "",
|
|
968
1030
|
style: popoverCover,
|
|
969
1031
|
onClick: /* @__PURE__ */ __name(() => window.open(LANDING_URL, "_blank"), "onClick")
|
|
@@ -983,14 +1045,16 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
983
1045
|
style: infoIcon
|
|
984
1046
|
}), /* @__PURE__ */ import_react5.default.createElement("p", {
|
|
985
1047
|
style: infoText
|
|
986
|
-
},
|
|
1048
|
+
}, t("safety.tenant.operated", {
|
|
1049
|
+
name: userinfo?.name ?? ""
|
|
1050
|
+
}))), /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
987
1051
|
style: infoRow
|
|
988
1052
|
}, /* @__PURE__ */ import_react5.default.createElement("img", {
|
|
989
1053
|
src: ICON_AI_URL,
|
|
990
1054
|
style: infoIcon
|
|
991
1055
|
}), /* @__PURE__ */ import_react5.default.createElement("p", {
|
|
992
1056
|
style: infoText
|
|
993
|
-
}, "
|
|
1057
|
+
}, t("safety.ai.disclaimer")))), /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
994
1058
|
style: btnRow
|
|
995
1059
|
}, /* @__PURE__ */ import_react5.default.createElement(HoverButton, {
|
|
996
1060
|
style: btnBase,
|
|
@@ -1001,11 +1065,11 @@ var Safety = /* @__PURE__ */ __name(() => {
|
|
|
1001
1065
|
setVisible(false);
|
|
1002
1066
|
window.localStorage?.setItem(HasClosedKey, "true");
|
|
1003
1067
|
}, "onClick")
|
|
1004
|
-
}, "
|
|
1068
|
+
}, t("safety.button.dontShowAgain")), /* @__PURE__ */ import_react5.default.createElement(HoverButton, {
|
|
1005
1069
|
style: btnBase,
|
|
1006
1070
|
"data-custom-element": "safety-more",
|
|
1007
1071
|
onClick: /* @__PURE__ */ __name(() => window.open(LANDING_URL, "_blank"), "onClick")
|
|
1008
|
-
}, "
|
|
1072
|
+
}, t("safety.button.learnMore"))))))));
|
|
1009
1073
|
}, "Safety");
|
|
1010
1074
|
var safety_default = Safety;
|
|
1011
1075
|
|
|
@@ -1215,13 +1279,58 @@ var Welcome = /* @__PURE__ */ __name(({ title = "\u9875\u9762\u5F85\u5F00\u53D1"
|
|
|
1215
1279
|
}, "Welcome");
|
|
1216
1280
|
var Welcome_default = Welcome;
|
|
1217
1281
|
|
|
1218
|
-
// src/
|
|
1282
|
+
// src/components/PagePlaceholder/index.tsx
|
|
1219
1283
|
var import_react9 = __toESM(require("react"), 1);
|
|
1284
|
+
var PagePlaceholder = /* @__PURE__ */ __name(({ title = "\u9875\u9762\u5F85\u5F00\u53D1", description = "\u9875\u9762\u6682\u672A\u5F00\u53D1\uFF0C\u8BF7\u8010\u5FC3\u7B49\u5F85..." }) => {
|
|
1285
|
+
return /* @__PURE__ */ import_react9.default.createElement("div", {
|
|
1286
|
+
style: {
|
|
1287
|
+
display: "flex",
|
|
1288
|
+
flexDirection: "column",
|
|
1289
|
+
alignItems: "center",
|
|
1290
|
+
justifyContent: "center",
|
|
1291
|
+
padding: "0 24px",
|
|
1292
|
+
width: "100%",
|
|
1293
|
+
height: "calc(100vh - 64px)",
|
|
1294
|
+
textAlign: "center"
|
|
1295
|
+
}
|
|
1296
|
+
}, /* @__PURE__ */ import_react9.default.createElement("img", {
|
|
1297
|
+
style: {
|
|
1298
|
+
borderRadius: "6px",
|
|
1299
|
+
marginBottom: "24px"
|
|
1300
|
+
},
|
|
1301
|
+
width: "320",
|
|
1302
|
+
height: "200",
|
|
1303
|
+
src: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/miao/welcome.svg",
|
|
1304
|
+
alt: "Welcome"
|
|
1305
|
+
}), /* @__PURE__ */ import_react9.default.createElement("div", {
|
|
1306
|
+
style: {
|
|
1307
|
+
fontSize: "16px",
|
|
1308
|
+
fontWeight: 500,
|
|
1309
|
+
marginBottom: "4px",
|
|
1310
|
+
lineHeight: "24px"
|
|
1311
|
+
}
|
|
1312
|
+
}, title), /* @__PURE__ */ import_react9.default.createElement("div", {
|
|
1313
|
+
style: {
|
|
1314
|
+
color: "#6b7280",
|
|
1315
|
+
fontSize: "16px",
|
|
1316
|
+
lineHeight: "24px",
|
|
1317
|
+
maxWidth: "480px",
|
|
1318
|
+
overflow: "hidden",
|
|
1319
|
+
display: "-webkit-box",
|
|
1320
|
+
WebkitLineClamp: 2,
|
|
1321
|
+
WebkitBoxOrient: "vertical"
|
|
1322
|
+
}
|
|
1323
|
+
}, description));
|
|
1324
|
+
}, "PagePlaceholder");
|
|
1325
|
+
var PagePlaceholder_default = PagePlaceholder;
|
|
1326
|
+
|
|
1327
|
+
// src/route-components/ActiveLink.tsx
|
|
1328
|
+
var import_react10 = __toESM(require("react"), 1);
|
|
1220
1329
|
var import_react_router_dom = require("react-router-dom");
|
|
1221
|
-
var ActiveLink = /* @__PURE__ */ (0,
|
|
1222
|
-
const [currentHash, setCurrentHash] = (0,
|
|
1330
|
+
var ActiveLink = /* @__PURE__ */ (0, import_react10.forwardRef)(({ to, onClick, className, style, children, ...rest }, ref) => {
|
|
1331
|
+
const [currentHash, setCurrentHash] = (0, import_react10.useState)(() => typeof window !== "undefined" ? window.location.hash : "");
|
|
1223
1332
|
const isHashRoute = typeof to === "string" && to.startsWith("#");
|
|
1224
|
-
(0,
|
|
1333
|
+
(0, import_react10.useEffect)(() => {
|
|
1225
1334
|
if (!isHashRoute) return;
|
|
1226
1335
|
const handleHashChange = /* @__PURE__ */ __name(() => {
|
|
1227
1336
|
setCurrentHash(window.location.hash);
|
|
@@ -1233,7 +1342,7 @@ var ActiveLink = /* @__PURE__ */ (0, import_react9.forwardRef)(({ to, onClick, c
|
|
|
1233
1342
|
]);
|
|
1234
1343
|
const isActive = isHashRoute && currentHash === to;
|
|
1235
1344
|
if (!isHashRoute) {
|
|
1236
|
-
return /* @__PURE__ */
|
|
1345
|
+
return /* @__PURE__ */ import_react10.default.createElement(import_react_router_dom.NavLink, {
|
|
1237
1346
|
ref,
|
|
1238
1347
|
to,
|
|
1239
1348
|
onClick,
|
|
@@ -1274,7 +1383,7 @@ var ActiveLink = /* @__PURE__ */ (0, import_react9.forwardRef)(({ to, onClick, c
|
|
|
1274
1383
|
isPending: false,
|
|
1275
1384
|
isTransitioning: false
|
|
1276
1385
|
}) : children;
|
|
1277
|
-
return /* @__PURE__ */
|
|
1386
|
+
return /* @__PURE__ */ import_react10.default.createElement("a", {
|
|
1278
1387
|
ref,
|
|
1279
1388
|
href: to,
|
|
1280
1389
|
onClick: handleHashClick,
|
|
@@ -1286,9 +1395,9 @@ var ActiveLink = /* @__PURE__ */ (0, import_react9.forwardRef)(({ to, onClick, c
|
|
|
1286
1395
|
ActiveLink.displayName = "ActiveLink";
|
|
1287
1396
|
|
|
1288
1397
|
// src/route-components/NavLink.tsx
|
|
1289
|
-
var
|
|
1398
|
+
var React8 = __toESM(require("react"), 1);
|
|
1290
1399
|
var import_react_router_dom2 = require("react-router-dom");
|
|
1291
|
-
var NavLink2 = /* @__PURE__ */
|
|
1400
|
+
var NavLink2 = /* @__PURE__ */ React8.forwardRef(({ to, children, className, style, ...props }, ref) => {
|
|
1292
1401
|
const isHashLink = typeof to === "string" && to.startsWith("#");
|
|
1293
1402
|
const location = (0, import_react_router_dom2.useLocation)();
|
|
1294
1403
|
const navigate = (0, import_react_router_dom2.useNavigate)();
|
|
@@ -1312,7 +1421,7 @@ var NavLink2 = /* @__PURE__ */ React7.forwardRef(({ to, children, className, sty
|
|
|
1312
1421
|
const resolvedClassName = typeof className === "function" ? className(renderProps) : className;
|
|
1313
1422
|
const resolvedStyle = typeof style === "function" ? style(renderProps) : style;
|
|
1314
1423
|
const { caseSensitive, end, replace, state, preventScrollReset, relative, viewTransition, ...restProps } = props;
|
|
1315
|
-
return /* @__PURE__ */
|
|
1424
|
+
return /* @__PURE__ */ React8.createElement("a", {
|
|
1316
1425
|
href: to,
|
|
1317
1426
|
onClick: handleClick,
|
|
1318
1427
|
ref,
|
|
@@ -1321,7 +1430,7 @@ var NavLink2 = /* @__PURE__ */ React7.forwardRef(({ to, children, className, sty
|
|
|
1321
1430
|
...restProps
|
|
1322
1431
|
}, typeof children === "function" ? children(renderProps) : children);
|
|
1323
1432
|
}
|
|
1324
|
-
return /* @__PURE__ */
|
|
1433
|
+
return /* @__PURE__ */ React8.createElement(import_react_router_dom2.NavLink, {
|
|
1325
1434
|
to,
|
|
1326
1435
|
ref,
|
|
1327
1436
|
className,
|
|
@@ -1336,7 +1445,7 @@ var NavLink2 = /* @__PURE__ */ React7.forwardRef(({ to, children, className, sty
|
|
|
1336
1445
|
NavLink2.displayName = "NavLink";
|
|
1337
1446
|
|
|
1338
1447
|
// src/route-components/UniversalLink.tsx
|
|
1339
|
-
var
|
|
1448
|
+
var import_react11 = __toESM(require("react"), 1);
|
|
1340
1449
|
var import_react_router_dom3 = require("react-router-dom");
|
|
1341
1450
|
function isInternalRoute(to) {
|
|
1342
1451
|
return !to.startsWith("#") && !to.startsWith("http://") && !to.startsWith("https://") && !to.startsWith("//");
|
|
@@ -1346,15 +1455,15 @@ function isExternalLink(to) {
|
|
|
1346
1455
|
return to.startsWith("http://") || to.startsWith("https://") || to.startsWith("//");
|
|
1347
1456
|
}
|
|
1348
1457
|
__name(isExternalLink, "isExternalLink");
|
|
1349
|
-
var UniversalLink = /* @__PURE__ */
|
|
1458
|
+
var UniversalLink = /* @__PURE__ */ import_react11.default.forwardRef(/* @__PURE__ */ __name(function UniversalLink2({ to, ...props }, ref) {
|
|
1350
1459
|
if (isInternalRoute(to)) {
|
|
1351
|
-
return /* @__PURE__ */
|
|
1460
|
+
return /* @__PURE__ */ import_react11.default.createElement(import_react_router_dom3.Link, {
|
|
1352
1461
|
to,
|
|
1353
1462
|
ref,
|
|
1354
1463
|
...props
|
|
1355
1464
|
});
|
|
1356
1465
|
}
|
|
1357
|
-
return /* @__PURE__ */
|
|
1466
|
+
return /* @__PURE__ */ import_react11.default.createElement("a", {
|
|
1358
1467
|
href: to,
|
|
1359
1468
|
ref,
|
|
1360
1469
|
...props,
|
|
@@ -1779,6 +1888,7 @@ var abstractArt3dRenderingCoverImg6 = "https://lf3-static.bytednsdoc.com/obj/ede
|
|
|
1779
1888
|
ActiveLink,
|
|
1780
1889
|
AppContainer,
|
|
1781
1890
|
NavLink,
|
|
1891
|
+
PagePlaceholder,
|
|
1782
1892
|
QueryProvider,
|
|
1783
1893
|
TrackKey,
|
|
1784
1894
|
UniversalLink,
|