@agentscope-ai/design 1.0.26-beta.1768906295632 → 1.0.26

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,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", {