@agentscope-ai/design 1.0.26-beta.1768271896414 → 1.0.26-beta.1768815624178

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.
@@ -1,7 +1,9 @@
1
1
  var _templateObject;
2
2
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
3
  import createGlobalStyle from "../../libs/createStyle";
4
- export var useButtonStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n/* \u53D6\u6D88\u6240\u6709button\u7684boxShadow */\nbutton[type=\"button\"].", "-btn {\n font-weight: 500;\n padding-inline: 11px;\n \n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 20px;\n }\n \n &.", "-btn-sm {\n padding-inline: 7px;\n \n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 16px;\n }\n }\n \n &.", "-btn-lg {\n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 24px;\n }\n }\n}\n\n.", "-btn-default {\n border-color: var(--", "-color-border-secondary);\n}\n\n.", "-btn-textCompact:hover {\n color: var(--", "-color-text-tertiary) !important;\n}\n\n.", "-btn.", "-btn-default.", "-btn-dangerous:not(:disabled):not(.", "-btn-disabled) {\n border-color: transparent;\n background-color: var(--", "-color-error-bg);\n color: var(--", "-color-error);\n \n &:hover {\n background-color: var(--", "-color-error-bg-hover);\n border-color: transparent;\n color: var(--", "-color-error-hover);\n }\n}\n\n.", "-btn-color-dangerous.", "-btn-variant-solid:disabled,\n.", "-btn-color-dangerous.", "-btn-variant-solid.", "-btn-disabled {\n border-color: transparent;\n background-color: var(--", "-color-fill-disable);\n color: var(--", "-color-text-white);\n}\n\n.", "-btn-primary {\n color: var(--", "-color-text-on-primary);\n}\n.", "-btn-primary.", "-btn-variant-solid:not(:disabled):not(.", "-btn-disabled):hover {\n color: var(--", "-color-text-on-primary);\n}\n\n.", "-btn-primary:disabled {\n background: var(--", "-color-fill-disable);\n color: var(--", "-color-text-white);\n border-color: transparent;\n}\n\n.", "-btn-default:disabled {\n background: var(--", "-color-bg-base);\n color: var(--", "-color-text-tertiary);\n border-color: var(--", "-color-border-secondary);\n}\n\n/* Keep white text color for primaryLess buttons */\n.spark-button-primaryLess.", "-btn-primary {\n color: var(--", "-color-text-white);\n}\n.spark-button-primaryLess.", "-btn-primary.", "-btn-variant-solid:not(:disabled):not(.", "-btn-disabled):hover {\n color: var(--", "-color-text-white);\n}\n"])), function (p) {
4
+ export var useButtonStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n/* \u53D6\u6D88\u6240\u6709button\u7684boxShadow */\nbutton[type=\"button\"].", "-btn {\n font-weight: 500;\n padding-inline: 11px;\n \n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 20px;\n }\n \n &.", "-btn-sm {\n padding-inline: 7px;\n \n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 16px;\n }\n }\n \n &.", "-btn-lg {\n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 24px;\n }\n }\n}\n\n.", "-btn-default {\n border-color: var(--", "-color-border-secondary);\n}\n\n.", "-btn-textCompact:hover {\n color: var(--", "-color-text-tertiary) !important;\n}\n\n.", "-btn.", "-btn-default.", "-btn-dangerous:not(:disabled):not(.", "-btn-disabled) {\n border-color: transparent;\n background-color: var(--", "-color-error-bg);\n color: var(--", "-color-error);\n \n &:hover {\n background-color: var(--", "-color-error-bg-hover);\n border-color: transparent;\n color: var(--", "-color-error-hover);\n }\n}\n\n.", "-btn-color-dangerous.", "-btn-variant-solid:disabled,\n.", "-btn-color-dangerous.", "-btn-variant-solid.", "-btn-disabled {\n border-color: transparent;\n background-color: var(--", "-color-fill-disable);\n color: var(--", "-color-text-white);\n}\n\n.", "-btn-primary {\n color: var(--", "-color-text-on-primary);\n}\n.", "-btn-primary.", "-btn-variant-solid:not(:disabled):not(.", "-btn-background-ghost):not(.", "-btn-disabled):hover {\n color: var(--", "-color-text-on-primary);\n}\n\n.", "-btn-primary:disabled {\n background: var(--", "-color-fill-disable);\n color: var(--", "-color-text-white);\n border-color: transparent;\n}\n\n.", "-btn-default:disabled {\n background: var(--", "-color-bg-base);\n color: var(--", "-color-text-tertiary);\n border-color: var(--", "-color-border-secondary);\n}\n\n/* Keep white text color for primaryLess buttons */\n.spark-button-primaryLess.", "-btn-primary {\n color: var(--", "-color-text-white);\n}\n.spark-button-primaryLess.", "-btn-primary.", "-btn-variant-solid:not(:disabled):not(.", "-btn-disabled):hover {\n color: var(--", "-color-text-white);\n}\n"])), function (p) {
5
+ return p.antPrefix;
6
+ }, function (p) {
5
7
  return p.antPrefix;
6
8
  }, function (p) {
7
9
  return p.antPrefix;
@@ -64,7 +64,7 @@
64
64
 
65
65
  "colorTextWhite": "#ffffff",
66
66
  "colorTextBlack": "#000000",
67
- "colorTextOnPrimary": "#000000",
67
+ "colorTextOnPrimary": "#ffffff",
68
68
  "colorFillDisable": "#898989",
69
69
  "colorPurple": "#615CED",
70
70
  "colorPurpleHover": "#8383F0",
@@ -8,7 +8,7 @@ export interface CodeBlockProps {
8
8
  * @description 值
9
9
  * @descriptionEn Value
10
10
  */
11
- value: string;
11
+ value?: string;
12
12
  /**
13
13
  * @description 类名
14
14
  * @descriptionEn Class name
@@ -23,7 +23,7 @@ export interface CodeBlockProps {
23
23
  * @descriptionEn Read only
24
24
  */
25
25
  readOnly?: boolean;
26
- onChange?: (value: string) => void;
26
+ onChange?: (value?: string) => void;
27
27
  }
28
28
  export declare const langExtensionsMap: Record<string, any[]>;
29
29
  export declare const beautifulJson: (val?: string, count?: number) => string;
@@ -85,7 +85,7 @@ var CodeMirrorWrapper = function CodeMirrorWrapper(props) {
85
85
  className: cls("".concat(sparkPrefix, "-code-block"), props.className),
86
86
  children: /*#__PURE__*/_jsx(CodeMirror, _objectSpread({
87
87
  extensions: extensions,
88
- value: props.language === 'json' ? beautifulJson(props.value) : props.value,
88
+ value: props.language === 'json' ? beautifulJson(props.value || '') : props.value || '',
89
89
  theme: getTheme
90
90
  }, omit(props, ['language', 'theme', 'extensions', 'value'])))
91
91
  });
@@ -1,3 +1,7 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1
5
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
6
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
7
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -7,7 +11,48 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
11
  import useToken from 'antd/es/theme/useToken';
8
12
  import { useEffect, useState } from 'react';
9
13
  import { jsx as _jsx } from "react/jsx-runtime";
10
- var svgContainer = document.querySelector('#empty-svg-container');
14
+ var SVG_NS = 'http://www.w3.org/2000/svg';
15
+ var XLINK_NS = 'http://www.w3.org/1999/xlink';
16
+
17
+ // 避免多实例并发注入时互相覆盖:用任务 Map 去重同一个 svgId 的加载
18
+ var svgSymbolTasks = new Map();
19
+ var svgContainer = null;
20
+ if (typeof document !== 'undefined') {
21
+ svgContainer = document.querySelector('#empty-svg-container');
22
+ }
23
+ function escapeRegExp(str) {
24
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
25
+ }
26
+ function toBase64Url(input) {
27
+ // btoa 仅支持 latin1,这里 input 是 URL(ascii),可直接使用
28
+ // 转成 base64url,避免 id 中出现 + / =
29
+ return btoa(input).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
30
+ }
31
+ function ensureSvgContainer() {
32
+ if (svgContainer || typeof document === 'undefined') return svgContainer;
33
+ var container = document.createElement('div');
34
+ container.innerHTML = '<svg></svg>';
35
+ svgContainer = container.querySelector('svg');
36
+ svgContainer.id = 'empty-svg-container';
37
+ svgContainer.setAttribute('aria-hidden', 'true');
38
+ svgContainer.style.position = 'absolute';
39
+ svgContainer.style.width = '0';
40
+ svgContainer.style.height = '0';
41
+ svgContainer.style.overflow = 'hidden';
42
+ document.body.insertBefore(svgContainer, document.body.firstChild);
43
+ return svgContainer;
44
+ }
45
+ function ensureSymbol(svgId) {
46
+ if (!svgContainer) return null;
47
+ var existed = document.getElementById(svgId);
48
+ var symbol = existed || null;
49
+ if (symbol) return symbol;
50
+ symbol = document.createElementNS(SVG_NS, 'symbol');
51
+ symbol.id = svgId;
52
+ symbol.setAttribute('data-loaded', 'false');
53
+ svgContainer.appendChild(symbol);
54
+ return symbol;
55
+ }
11
56
  export default function Illustrate(props) {
12
57
  var _useToken = useToken(),
13
58
  _useToken2 = _slicedToArray(_useToken, 5),
@@ -23,18 +68,7 @@ export default function Illustrate(props) {
23
68
  svgString = _useState2[0],
24
69
  setSvgString = _useState2[1];
25
70
  useEffect(function () {
26
- if (!svgContainer) {
27
- var container = document.createElement('div');
28
- container.innerHTML = '<svg></svg>';
29
- svgContainer = container.querySelector('svg');
30
- svgContainer.id = 'empty-svg-container';
31
- svgContainer.setAttribute('aria-hidden', 'true');
32
- svgContainer.style.position = 'absolute';
33
- svgContainer.style.width = '0';
34
- svgContainer.style.height = '0';
35
- svgContainer.style.overflow = 'hidden';
36
- document.body.insertBefore(svgContainer, document.body.firstChild);
37
- }
71
+ ensureSvgContainer();
38
72
  }, []);
39
73
  useEffect(function () {
40
74
  if (svgContainer && cssVar !== null && cssVar !== void 0 && cssVar.key) {
@@ -48,33 +82,77 @@ export default function Illustrate(props) {
48
82
  if (!isSvg) {
49
83
  return;
50
84
  }
51
- var svgId = btoa(svgUrl);
52
- var svgString = "<svg><use xlink:href=\"#".concat(svgId, "\"></use></svg>");
53
- setSvgString(svgString);
54
- if (document.getElementById(svgId)) {
55
- return;
56
- }
57
- var symbolStr = "<symbol id=\"".concat(svgId, "\"></symbol>");
58
- svgContainer.innerHTML = svgContainer.innerHTML + symbolStr;
59
- fetch(svgUrl).then(function (res) {
60
- return res.text();
61
- }).then(function (res) {
62
- var str = res;
63
- Object.keys(tokenMap).forEach(function (key) {
64
- str = str.replace(new RegExp(key, 'g'), tokenMap[key]);
65
- });
85
+ ensureSvgContainer();
86
+ if (!svgContainer) return;
87
+ var svgId = toBase64Url(svgUrl);
88
+ setSvgString("<svg width=\"100%\" height=\"100%\"><use href=\"#".concat(svgId, "\" xlink:href=\"#").concat(svgId, "\"></use></svg>"));
89
+ var symbol = ensureSymbol(svgId);
90
+ if (!symbol) return;
66
91
 
67
- // 提取viewBox属性
68
- var viewBoxMatch = str.match(/viewBox="([^"]*)"/);
69
- var viewBox = viewBoxMatch ? viewBoxMatch[1] : '';
70
- var symbolElement = document.getElementById(svgId);
71
- var symbolContentStr = str.replace(/<svg[^>]*>/, '');
72
- symbolContentStr = symbolContentStr.replace(/<\/svg>/, '');
73
- if (viewBox) {
74
- symbolElement.setAttribute('viewBox', viewBox);
75
- }
76
- symbolElement.innerHTML = symbolContentStr;
77
- });
92
+ // 已经加载过,直接复用
93
+ if (symbol.getAttribute('data-loaded') === 'true') return;
94
+
95
+ // 同一个 svgId 的并发请求去重
96
+ if (!svgSymbolTasks.has(svgId)) {
97
+ var task = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
98
+ var res, raw, str, viewBoxMatch, viewBox, symbolContentStr;
99
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
100
+ while (1) switch (_context.prev = _context.next) {
101
+ case 0:
102
+ _context.prev = 0;
103
+ _context.next = 3;
104
+ return fetch(svgUrl);
105
+ case 3:
106
+ res = _context.sent;
107
+ if (res.ok) {
108
+ _context.next = 6;
109
+ break;
110
+ }
111
+ throw new Error("HTTP ".concat(res.status));
112
+ case 6:
113
+ _context.next = 8;
114
+ return res.text();
115
+ case 8:
116
+ raw = _context.sent;
117
+ str = raw;
118
+ Object.keys(tokenMap).forEach(function (key) {
119
+ str = str.replace(new RegExp(escapeRegExp(key), 'g'), tokenMap[key]);
120
+ });
121
+
122
+ // 提取 viewBox
123
+ viewBoxMatch = str.match(/viewBox="([^"]*)"/);
124
+ viewBox = viewBoxMatch ? viewBoxMatch[1] : ''; // 只保留 <svg> 内部内容
125
+ symbolContentStr = str.replace(/<svg[^>]*>/, '');
126
+ symbolContentStr = symbolContentStr.replace(/<\/svg>/, '');
127
+ if (viewBox) {
128
+ symbol.setAttribute('viewBox', viewBox);
129
+ }
130
+
131
+ // 使用 DOM API 写入,避免 innerHTML 触发 svgContainer 重建
132
+ symbol.innerHTML = symbolContentStr;
133
+ symbol.setAttribute('data-loaded', 'true');
134
+ symbol.removeAttribute('data-error');
135
+ _context.next = 27;
136
+ break;
137
+ case 21:
138
+ _context.prev = 21;
139
+ _context.t0 = _context["catch"](0);
140
+ // 失败时保证不会进入“空壳已存在但永远不再加载”的状态
141
+ symbol.setAttribute('data-loaded', 'false');
142
+ symbol.setAttribute('data-error', 'true');
143
+ symbol.innerHTML = '';
144
+ // eslint-disable-next-line no-console
145
+ console.warn('[SparkDesign][Empty][Illustrate] load svg failed:', svgUrl, _context.t0);
146
+ case 27:
147
+ case "end":
148
+ return _context.stop();
149
+ }
150
+ }, _callee, null, [[0, 21]]);
151
+ }))().finally(function () {
152
+ svgSymbolTasks.delete(svgId);
153
+ });
154
+ svgSymbolTasks.set(svgId, task);
155
+ }
78
156
  }, [svgUrl]);
79
157
  if (isSvg) {
80
158
  return /*#__PURE__*/_jsx("div", {
@@ -18,8 +18,6 @@ import ppt from "./icons/ppt.svg";
18
18
  import txt from "./icons/txt.svg";
19
19
  import web from "./icons/web.svg";
20
20
  import word from "./icons/word.svg";
21
- import video from "./icons/video.svg";
22
- import audio from "./icons/audio.svg";
23
21
  import { useStyle } from "./index.style";
24
22
  import { jsx as _jsx } from "react/jsx-runtime";
25
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -36,9 +34,7 @@ var maps = {
36
34
  ppt: ppt,
37
35
  txt: txt,
38
36
  web: web,
39
- word: word,
40
- video: video,
41
- audio: audio
37
+ word: word
42
38
  };
43
39
  function getSize(size) {
44
40
  var retSize = size;
@@ -17,6 +17,7 @@ import { getCommonConfig } from "../../../config";
17
17
  import useMergedState from '@rc-component/util/lib/hooks/useMergedState';
18
18
  import { Segmented, Tabs } from 'antd';
19
19
  import classNames from 'classnames';
20
+ import { useCallback, useMemo } from 'react';
20
21
  import { useStyle } from "./index.style";
21
22
  import { jsx as _jsx } from "react/jsx-runtime";
22
23
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -38,35 +39,53 @@ var SparkTabs = function SparkTabs(props) {
38
39
  mergedActiveKey = _useMergedState2[0],
39
40
  setMergedActiveKey = _useMergedState2[1];
40
41
  var Style = useStyle();
42
+
43
+ // 缓存 onChange 回调
44
+ var handleChange = useCallback(function (key) {
45
+ var _props$onChange;
46
+ setMergedActiveKey(key);
47
+ (_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, key);
48
+ }, [setMergedActiveKey, props.onChange]);
49
+
50
+ // 缓存 options 配置
51
+ var segmentedOptions = useMemo(function () {
52
+ var _props$items;
53
+ return ((_props$items = props.items) === null || _props$items === void 0 ? void 0 : _props$items.map(function (item) {
54
+ return {
55
+ label: item.label,
56
+ value: item.key,
57
+ disabled: item.disabled
58
+ };
59
+ })) || [];
60
+ }, [props.items]);
61
+
62
+ // 缓存 className
63
+ var segmentedClassName = useMemo(function () {
64
+ return classNames("".concat(sparkPrefix, "-segmented-tab-bar"), _defineProperty({}, "".concat(sparkPrefix, "-segmented-tab-bar-centered"), centered));
65
+ }, [sparkPrefix, centered]);
66
+
67
+ // 获取当前选中 tab 的内容
68
+ var activeContent = useMemo(function () {
69
+ var _props$items2;
70
+ var activeItem = (_props$items2 = props.items) === null || _props$items2 === void 0 ? void 0 : _props$items2.find(function (item) {
71
+ return item.key === mergedActiveKey;
72
+ });
73
+ return activeItem === null || activeItem === void 0 ? void 0 : activeItem.children;
74
+ }, [props.items, mergedActiveKey]);
75
+
76
+ // segmented 类型:分离 Segmented 和内容渲染,避免 renderTabBar 导致的样式问题
41
77
  if (type === 'segmented') {
42
- var handleChange = function handleChange(key) {
43
- var _props$onChange;
44
- setMergedActiveKey(key);
45
- (_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, key);
46
- };
47
78
  return /*#__PURE__*/_jsxs(_Fragment, {
48
- children: [/*#__PURE__*/_jsx(Style, {}), /*#__PURE__*/_jsx(Tabs, _objectSpread(_objectSpread({
49
- animated: false
50
- }, restProps), {}, {
51
- activeKey: mergedActiveKey,
52
- renderTabBar: function renderTabBar(tabProps) {
53
- var _props$items;
54
- var options = ((_props$items = props.items) === null || _props$items === void 0 ? void 0 : _props$items.map(function (item) {
55
- return {
56
- label: item.label,
57
- value: item.key,
58
- disabled: item.disabled
59
- };
60
- })) || [];
61
- return /*#__PURE__*/_jsx(Segmented, {
62
- options: options,
63
- onChange: handleChange,
64
- className: classNames("".concat(sparkPrefix, "-segmented-tab-bar"), _defineProperty({}, "".concat(sparkPrefix, "-segmented-tab-bar-centered"), centered)),
65
- value: mergedActiveKey,
66
- size: props.size
67
- });
68
- }
69
- }))]
79
+ children: [/*#__PURE__*/_jsx(Style, {}), /*#__PURE__*/_jsx(Segmented, {
80
+ options: segmentedOptions,
81
+ value: mergedActiveKey,
82
+ onChange: handleChange,
83
+ className: segmentedClassName,
84
+ size: props.size
85
+ }), /*#__PURE__*/_jsx("div", {
86
+ className: "".concat(sparkPrefix, "-segmented-tab-content"),
87
+ children: activeContent
88
+ })]
70
89
  });
71
90
  }
72
91
  return /*#__PURE__*/_jsxs(_Fragment, {
@@ -1,7 +1,9 @@
1
1
  var _templateObject;
2
2
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
3
  import createGlobalStyle from "../../../libs/createStyle";
4
- export var useStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n/* Default dark mode */\n.", "-tooltip-content {\n .", "-tooltip-inner {\n border: 1px solid transparent;\n padding: 6px 12px;\n background: var(--", "-color-slate);\n color: var(--", "-color-text-white);\n }\n}\n\n/* Light mode - keep same style as dark mode */\n.", "-tooltip-light {\n .", "-tooltip-content .", "-tooltip-inner {\n background: var(--", "-color-slate);\n color: var(--", "-color-text-white);\n }\n \n .", "-tooltip-arrow {\n &::after {\n background: var(--", "-color-slate);\n }\n }\n}\n"])), function (p) {
4
+ export var useStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n/* Default dark mode */\n.", "-tooltip {\n .", "-tooltip-content {\n .", "-tooltip-inner {\n border: 1px solid transparent;\n padding: 6px 12px;\n background: var(--", "-color-slate);\n color: var(--", "-color-text-white);\n }\n }\n}\n\n/* Light mode - keep same style as dark mode */\n.", "-tooltip-light {\n .", "-tooltip-content .", "-tooltip-inner {\n background: var(--", "-color-slate);\n color: var(--", "-color-text-white);\n }\n \n .", "-tooltip-arrow {\n &::after {\n background: var(--", "-color-slate);\n }\n }\n}\n"])), function (p) {
5
+ return p.antPrefix;
6
+ }, function (p) {
5
7
  return p.antPrefix;
6
8
  }, function (p) {
7
9
  return p.antPrefix;
@@ -12,5 +12,11 @@
12
12
  "components.SlateEditor.utils.editor.WraptagnameCannotBePlacedIn": "[{wrapTagName}] cannot be placed in [{tagName}]",
13
13
  "components.SlateEditor.utils.editor.WraptagnameCannotBeNestedIn": "[{wrapTagName}] cannot be nested in [{tagName}]]",
14
14
  "components.SlateEditor.utils.withEditor.YouCanEnterAMaximum": "You can enter a maximum of {maxLen} characters.",
15
- "components.commonComponents.Image.Preview": "Preview"
15
+ "components.commonComponents.Image.Preview": "Preview",
16
+ "docs.icons.IconLibrary.SearchPlaceholder": "Search icons (by export name)",
17
+ "docs.icons.IconLibrary.CopyName": "Copy name",
18
+ "docs.icons.IconLibrary.CopyImport": "Copy import",
19
+ "docs.icons.IconLibrary.CopyJSX": "Copy JSX",
20
+ "docs.icons.IconLibrary.TotalCount": "{count} total",
21
+ "docs.icons.IconLibrary.CopySuccess": "Copied"
16
22
  }
@@ -12,5 +12,11 @@
12
12
  "components.SlateEditor.utils.editor.WraptagnameCannotBePlacedIn": "【{wrapTagName}】不能在放在【{tagName}】内",
13
13
  "components.SlateEditor.utils.editor.WraptagnameCannotBeNestedIn": "【{wrapTagName}】中不能嵌套【{tagName}】",
14
14
  "components.SlateEditor.utils.withEditor.YouCanEnterAMaximum": "最多可输入{maxLen}字",
15
- "components.commonComponents.Image.Preview": "预览"
15
+ "components.commonComponents.Image.Preview": "预览",
16
+ "docs.icons.IconLibrary.SearchPlaceholder": "搜索图标(按导出名)",
17
+ "docs.icons.IconLibrary.CopyName": "复制名称",
18
+ "docs.icons.IconLibrary.CopyImport": "复制 import",
19
+ "docs.icons.IconLibrary.CopyJSX": "复制 JSX",
20
+ "docs.icons.IconLibrary.TotalCount": "共 {count} 个",
21
+ "docs.icons.IconLibrary.CopySuccess": "已复制"
16
22
  }