@lark-apaas/client-toolkit-lite 1.1.15-alpha.12 → 1.1.15-alpha.13

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 CHANGED
@@ -281,18 +281,19 @@ function getLegacyParentOrigin() {
281
281
  return "https://miaoda.feishu-boe.cn";
282
282
  }
283
283
  __name(getLegacyParentOrigin, "getLegacyParentOrigin");
284
+ var MIAODA_PARENT_ORIGIN_RE = /^https:\/\/(miaoda|force)\.feishu(-pre|-boe|-staging)?\.cn$/;
284
285
  function resolveParentOrigin() {
286
+ const paramOrigin = getParentOriginFromParams();
287
+ if (paramOrigin) return paramOrigin;
285
288
  try {
286
289
  if (document.referrer) {
287
290
  const referrerOrigin = new URL(document.referrer).origin;
288
- if (referrerOrigin.startsWith("http://localhost") || referrerOrigin.startsWith("http://127.0.0.1")) {
291
+ if (MIAODA_PARENT_ORIGIN_RE.test(referrerOrigin) || referrerOrigin.startsWith("http://localhost") || referrerOrigin.startsWith("http://127.0.0.1")) {
289
292
  return referrerOrigin;
290
293
  }
291
294
  }
292
295
  } catch {
293
296
  }
294
- const paramOrigin = getParentOriginFromParams();
295
- if (paramOrigin) return paramOrigin;
296
297
  return process.env?.FORCE_FRAMEWORK_DOMAIN_MAIN ?? getLegacyParentOrigin();
297
298
  }
298
299
  __name(resolveParentOrigin, "resolveParentOrigin");
@@ -300,7 +301,10 @@ function submitPostMessage(message, targetOrigin) {
300
301
  try {
301
302
  const parentOrigin = resolveParentOrigin();
302
303
  const origin = targetOrigin ?? parentOrigin;
303
- if (!origin) return;
304
+ if (!origin) {
305
+ console.error("postMessage skipped: cannot resolve parent origin");
306
+ return;
307
+ }
304
308
  window.parent.postMessage(message, origin);
305
309
  } catch (e) {
306
310
  console.error("postMessage error", e);
@@ -1182,29 +1186,6 @@ function getAppId() {
1182
1186
  }
1183
1187
  __name(getAppId, "getAppId");
1184
1188
 
1185
- // src/utils/getEnv.ts
1186
- function getEnv() {
1187
- switch (globalThis.ENVIRONMENT) {
1188
- case "staging":
1189
- return "BOE";
1190
- case "gray":
1191
- return "PRE";
1192
- case "online":
1193
- return "ONLINE";
1194
- default:
1195
- break;
1196
- }
1197
- const { origin } = window.location;
1198
- if (origin.includes("feishuapp.cn") || origin.includes("miaoda.feishuapp.net") || origin.includes("aiforce.cloud") || origin.includes("aiforce.run")) {
1199
- return "ONLINE";
1200
- } else if (origin.includes("fsapp.kundou.cn") || origin.includes("miaoda-pre.feishuapp.net") || origin.includes("aiforce-pre.bytedance.net") || origin.includes("aiforce-pre-preview.bytedance.net") || origin.includes("aiforce-pre.cloud") || origin.includes("aiforce-pre.run")) {
1201
- return "PRE";
1202
- } else {
1203
- return "BOE";
1204
- }
1205
- }
1206
- __name(getEnv, "getEnv");
1207
-
1208
1189
  // src/utils/getInitialInfo.ts
1209
1190
  async function getAppPublished() {
1210
1191
  try {
@@ -1535,10 +1516,6 @@ var messages = {
1535
1516
  zh: "\u4E86\u89E3\u66F4\u591A",
1536
1517
  en: "Learn more"
1537
1518
  },
1538
- "safety.report": {
1539
- zh: "\u6295\u8BC9\u4E0E\u4E3E\u62A5",
1540
- en: "Report"
1541
- },
1542
1519
  "safety.cover.pc": {
1543
1520
  zh: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover.png",
1544
1521
  en: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover-weben.png"
@@ -1640,23 +1617,7 @@ var getCoverUrl = /* @__PURE__ */ __name(() => t("safety.cover.pc"), "getCoverUr
1640
1617
  var getCoverMobileUrl = /* @__PURE__ */ __name(() => t("safety.cover.mobile"), "getCoverMobileUrl");
1641
1618
  var ICON_COMPANY_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/icon/icon_company_outlined.svg";
1642
1619
  var ICON_AI_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/icon/icon_efficiency-ai_outlined.svg";
1643
- var ICON_FEEDBACK_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/miaoda-ui/icon_feedback_outlined.png";
1644
1620
  var LANDING_URL = "https://miaoda.feishu.cn/landing";
1645
- var REPORT_DOMAIN = {
1646
- BOE: "tns.feishu-boe.cn",
1647
- PRE: "tns.feishu-pre.cn",
1648
- ONLINE: "tns.feishu.cn"
1649
- };
1650
- var openReport = /* @__PURE__ */ __name(() => {
1651
- const params = JSON.stringify({
1652
- scene: "miaoda_app_report",
1653
- entity_id: getAppId() ?? "",
1654
- entity_type: "miaoda_app",
1655
- extra: ""
1656
- });
1657
- const url = `https://${REPORT_DOMAIN[getEnv()]}/cust/lark_report/?type=common&params=${encodeURIComponent(params)}&lang=zh-CN`;
1658
- window.open(url, "_blank", "noopener,noreferrer");
1659
- }, "openReport");
1660
1621
  var badgeBase = {
1661
1622
  ...resetBase,
1662
1623
  position: "fixed",
@@ -2001,24 +1962,7 @@ var Safety = /* @__PURE__ */ __name(() => {
2001
1962
  style: infoIconMobile
2002
1963
  }), /* @__PURE__ */ import_react5.default.createElement("p", {
2003
1964
  style: sheetInfoText
2004
- }, t("safety.ai.disclaimer"))), /* @__PURE__ */ import_react5.default.createElement("div", {
2005
- style: {
2006
- ...infoRow,
2007
- cursor: "pointer"
2008
- },
2009
- "data-custom-element": "safety-report",
2010
- onClick: openReport
2011
- }, /* @__PURE__ */ import_react5.default.createElement("img", {
2012
- src: ICON_FEEDBACK_URL,
2013
- style: infoIconMobile
2014
- }), /* @__PURE__ */ import_react5.default.createElement("p", {
2015
- style: {
2016
- ...sheetInfoText,
2017
- cursor: "pointer",
2018
- textDecoration: "underline",
2019
- textUnderlineOffset: "2px"
2020
- }
2021
- }, t("safety.report")))), /* @__PURE__ */ import_react5.default.createElement("div", {
1965
+ }, t("safety.ai.disclaimer")))), /* @__PURE__ */ import_react5.default.createElement("div", {
2022
1966
  style: mobileBtnRow
2023
1967
  }, /* @__PURE__ */ import_react5.default.createElement("div", {
2024
1968
  style: mobileBtnOutline,
@@ -2100,24 +2044,7 @@ var Safety = /* @__PURE__ */ __name(() => {
2100
2044
  style: infoIcon
2101
2045
  }), /* @__PURE__ */ import_react5.default.createElement("p", {
2102
2046
  style: infoText
2103
- }, t("safety.ai.disclaimer"))), /* @__PURE__ */ import_react5.default.createElement("div", {
2104
- style: {
2105
- ...infoRow,
2106
- cursor: "pointer"
2107
- },
2108
- "data-custom-element": "safety-report",
2109
- onClick: openReport
2110
- }, /* @__PURE__ */ import_react5.default.createElement("img", {
2111
- src: ICON_FEEDBACK_URL,
2112
- style: infoIcon
2113
- }), /* @__PURE__ */ import_react5.default.createElement("p", {
2114
- style: {
2115
- ...infoText,
2116
- cursor: "pointer",
2117
- textDecoration: "underline",
2118
- textUnderlineOffset: "2px"
2119
- }
2120
- }, t("safety.report")))), /* @__PURE__ */ import_react5.default.createElement("div", {
2047
+ }, t("safety.ai.disclaimer")))), /* @__PURE__ */ import_react5.default.createElement("div", {
2121
2048
  style: btnRow
2122
2049
  }, /* @__PURE__ */ import_react5.default.createElement(HoverButton, {
2123
2050
  style: btnBase,
@@ -2147,7 +2074,7 @@ var DOUBAO_PILL_MOBILE_PNG = `${CDN}/Frame%202147223991%20(3).png`;
2147
2074
 
2148
2075
  // src/components/AppContainer/Watermark.tsx
2149
2076
  var DOUBAO_SOURCE = "5";
2150
- var REPORT_ENABLED = true;
2077
+ var REPORT_ENABLED = false;
2151
2078
  var BRAND_TEXT = "\u8C46\u5305 AI \u751F\u6210";
2152
2079
  var POWERED_BY_TEXT = "\u7531\u98DE\u4E66\u5999\u642D\u63D0\u4F9B\u652F\u6301";
2153
2080
  var FONT_FAMILY2 = "'PingFang SC', -apple-system, BlinkMacSystemFont, sans-serif";
@@ -2224,7 +2151,7 @@ var Avatar = /* @__PURE__ */ __name(({ size }) => /* @__PURE__ */ import_react6.
2224
2151
  display: "block"
2225
2152
  }
2226
2153
  }), "Avatar");
2227
- var Pill = /* @__PURE__ */ __name(({ variant, onClose, showClose = false }) => {
2154
+ var Pill = /* @__PURE__ */ __name(({ variant, onClose }) => {
2228
2155
  const isDesktop = variant === "desktop";
2229
2156
  return /* @__PURE__ */ import_react6.default.createElement("div", {
2230
2157
  style: {
@@ -2249,7 +2176,7 @@ var Pill = /* @__PURE__ */ __name(({ variant, onClose, showClose = false }) => {
2249
2176
  color: "rgba(255,255,255,0.85)",
2250
2177
  whiteSpace: "nowrap"
2251
2178
  }
2252
- }, BRAND_TEXT), isDesktop && onClose && showClose && /* @__PURE__ */ import_react6.default.createElement("span", {
2179
+ }, BRAND_TEXT), isDesktop && onClose && /* @__PURE__ */ import_react6.default.createElement("span", {
2253
2180
  role: "button",
2254
2181
  "aria-label": "\u5173\u95ED",
2255
2182
  onClick: /* @__PURE__ */ __name((e) => {
@@ -2456,8 +2383,7 @@ var Watermark = /* @__PURE__ */ __name(() => {
2456
2383
  minWidth: 144
2457
2384
  }), /* @__PURE__ */ import_react6.default.createElement(Pill, {
2458
2385
  variant: "desktop",
2459
- onClose: /* @__PURE__ */ __name(() => setClosed(true), "onClose"),
2460
- showClose: open
2386
+ onClose: /* @__PURE__ */ __name(() => setClosed(true), "onClose")
2461
2387
  }));
2462
2388
  }, "Watermark");
2463
2389
  var Watermark_default = Watermark;
@@ -2596,6 +2522,29 @@ var isIOS = /* @__PURE__ */ __name(() => {
2596
2522
  return false;
2597
2523
  }, "isIOS");
2598
2524
 
2525
+ // src/utils/getEnv.ts
2526
+ function getEnv() {
2527
+ switch (globalThis.ENVIRONMENT) {
2528
+ case "staging":
2529
+ return "BOE";
2530
+ case "gray":
2531
+ return "PRE";
2532
+ case "online":
2533
+ return "ONLINE";
2534
+ default:
2535
+ break;
2536
+ }
2537
+ const { origin } = window.location;
2538
+ if (origin.includes("feishuapp.cn") || origin.includes("miaoda.feishuapp.net") || origin.includes("aiforce.cloud") || origin.includes("aiforce.run")) {
2539
+ return "ONLINE";
2540
+ } else if (origin.includes("fsapp.kundou.cn") || origin.includes("miaoda-pre.feishuapp.net") || origin.includes("aiforce-pre.bytedance.net") || origin.includes("aiforce-pre-preview.bytedance.net") || origin.includes("aiforce-pre.cloud") || origin.includes("aiforce-pre.run")) {
2541
+ return "PRE";
2542
+ } else {
2543
+ return "BOE";
2544
+ }
2545
+ }
2546
+ __name(getEnv, "getEnv");
2547
+
2599
2548
  // src/components/AppContainer/utils/getLarkUser.ts
2600
2549
  async function getLarkUserInfo() {
2601
2550
  const appId = getAppId();
@@ -2961,19 +2910,57 @@ function isExternalLink(to) {
2961
2910
  return to.startsWith("http://") || to.startsWith("https://") || to.startsWith("//");
2962
2911
  }
2963
2912
  __name(isExternalLink, "isExternalLink");
2964
- var UniversalLink = /* @__PURE__ */ import_react15.default.forwardRef(/* @__PURE__ */ __name(function UniversalLink2({ to, ...props }, ref) {
2913
+ var MIAODA_PARENT_ORIGIN_RE2 = /^https:\/\/(miaoda|force)\.feishu(-pre|-boe|-staging)?\.cn$/;
2914
+ function isIframeUnderMiaoda() {
2915
+ if (typeof window === "undefined") return false;
2916
+ if (window.parent === window) return false;
2917
+ try {
2918
+ if (!document.referrer) return false;
2919
+ const refOrigin = new URL(document.referrer).origin;
2920
+ return MIAODA_PARENT_ORIGIN_RE2.test(refOrigin);
2921
+ } catch {
2922
+ return false;
2923
+ }
2924
+ }
2925
+ __name(isIframeUnderMiaoda, "isIframeUnderMiaoda");
2926
+ var UniversalLink = /* @__PURE__ */ import_react15.default.forwardRef(/* @__PURE__ */ __name(function UniversalLink2({ to, onClick, ...props }, ref) {
2927
+ const isExternal = isExternalLink(to);
2928
+ const preview = (isPreview() || isIframeUnderMiaoda()) && isExternal;
2929
+ if (preview) {
2930
+ const handlePreviewClick = /* @__PURE__ */ __name((e) => {
2931
+ e.preventDefault();
2932
+ onClick?.(e);
2933
+ submitPostMessage({
2934
+ type: "OpenIframeLink",
2935
+ data: {
2936
+ href: to,
2937
+ external: true
2938
+ }
2939
+ });
2940
+ }, "handlePreviewClick");
2941
+ return /* @__PURE__ */ import_react15.default.createElement("a", {
2942
+ href: to,
2943
+ ref,
2944
+ ...props,
2945
+ onClick: handlePreviewClick,
2946
+ target: props.target ?? "_blank",
2947
+ rel: props.rel ?? "noopener noreferrer"
2948
+ });
2949
+ }
2965
2950
  if (isInternalRoute(to)) {
2966
2951
  return /* @__PURE__ */ import_react15.default.createElement(import_react_router_dom4.Link, {
2967
2952
  to,
2968
2953
  ref,
2969
- ...props
2954
+ ...props,
2955
+ onClick
2970
2956
  });
2971
2957
  }
2972
2958
  return /* @__PURE__ */ import_react15.default.createElement("a", {
2973
2959
  href: to,
2974
2960
  ref,
2975
2961
  ...props,
2976
- ...isExternalLink(to) && {
2962
+ onClick,
2963
+ ...isExternal && {
2977
2964
  target: props.target ?? "_blank",
2978
2965
  rel: props.rel ?? "noopener noreferrer"
2979
2966
  }