@basic-genomics/hivtrace-viz 1.1.3 → 1.1.4

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.
@@ -1303,11 +1303,17 @@
1303
1303
  overlay.innerHTML = `
1304
1304
  <i class="fa fa-exclamation-triangle hivtrace-error-icon"></i>
1305
1305
  <div class="hivtrace-error-message">${message}</div>
1306
- <button class="hivtrace-retry-btn" onclick="location.reload()">重试</button>
1306
+ <button class="hivtrace-retry-btn" onclick="requestRetry()">重试</button>
1307
1307
  `;
1308
1308
  window.parent.postMessage({ type: 'ERROR', message: message }, '*');
1309
1309
  }
1310
1310
 
1311
+ // 请求宿主应用重试
1312
+ function requestRetry() {
1313
+ window.parent.postMessage({ type: 'HIVTRACE_RETRY' }, '*');
1314
+ }
1315
+
1316
+
1311
1317
 
1312
1318
  function in_progress() {
1313
1319
  return $(".progress").length > 0;
@@ -3,6 +3,6 @@
3
3
  * 封装 iframe 和 postMessage 通信,提供简洁的 React 接口
4
4
  */
5
5
  import type { HivtraceVizProps } from './types';
6
- export declare function HivtraceViz({ data, options, isDataFetched, showLoadingOnUpdate, onTrackCluster, onFullscreenChange, onReady, onError, error, className, style, emptyState, loadingState, }: HivtraceVizProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function HivtraceViz({ data, options, isDataFetched, showLoadingOnUpdate, onTrackCluster, onFullscreenChange, onReady, onError, onRetry, error, className, style, emptyState, loadingState, }: HivtraceVizProps): import("react/jsx-runtime").JSX.Element;
7
7
  export default HivtraceViz;
8
8
  //# sourceMappingURL=HivtraceViz.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HivtraceViz.d.ts","sourceRoot":"","sources":["../../src/react/HivtraceViz.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAA6C,MAAM,SAAS,CAAC;AA2F3F,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EACP,aAAa,EACb,mBAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,KAAK,EACL,UAAU,EACV,YAAY,GACb,EAAE,gBAAgB,2CAiKlB;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"HivtraceViz.d.ts","sourceRoot":"","sources":["../../src/react/HivtraceViz.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAA6C,MAAM,SAAS,CAAC;AA4F3F,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EACP,aAAa,EACb,mBAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,KAAK,EACL,UAAU,EACV,YAAY,GACb,EAAE,gBAAgB,2CAsKlB;AAED,eAAe,WAAW,CAAC"}
@@ -44,7 +44,7 @@ function DefaultLoadingState({ message }) {
44
44
  animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
45
45
  } }), _jsx("p", { style: { color: '#6b7280' }, children: message })] }) }));
46
46
  }
47
- export function HivtraceViz({ data, options, isDataFetched, showLoadingOnUpdate = true, onTrackCluster, onFullscreenChange, onReady, onError, error, className, style, emptyState, loadingState, }) {
47
+ export function HivtraceViz({ data, options, isDataFetched, showLoadingOnUpdate = true, onTrackCluster, onFullscreenChange, onReady, onError, onRetry, error, className, style, emptyState, loadingState, }) {
48
48
  const iframeRef = useRef(null);
49
49
  const [internalLoadingState, setInternalLoadingState] = useState('initial');
50
50
  const [isIframeReady, setIsIframeReady] = useState(false);
@@ -105,11 +105,14 @@ export function HivtraceViz({ data, options, isDataFetched, showLoadingOnUpdate
105
105
  case 'ERROR':
106
106
  onError?.(msg.message || 'Unknown error');
107
107
  break;
108
+ case 'HIVTRACE_RETRY':
109
+ onRetry?.();
110
+ break;
108
111
  }
109
112
  };
110
113
  window.addEventListener('message', handleMessage);
111
114
  return () => window.removeEventListener('message', handleMessage);
112
- }, [onTrackCluster, onFullscreenChange, onReady, onError]);
115
+ }, [onTrackCluster, onFullscreenChange, onReady, onError, onRetry]);
113
116
  // iframe 加载完成时发送初始数据或错误
114
117
  useEffect(() => {
115
118
  if (isIframeReady && internalLoadingState === 'frameReady') {
@@ -64,6 +64,8 @@ export interface HivtraceVizProps {
64
64
  onReady?: () => void;
65
65
  /** 错误回调 */
66
66
  onError?: (message: string) => void;
67
+ /** 重试回调(用户点击错误状态下的重试按钮时触发) */
68
+ onRetry?: () => void;
67
69
  /**
68
70
  * 错误信息
69
71
  * - 传入错误消息时,组件会显示错误状态而不是加载态
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/react/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,IAAI,CAAC,EAAE,eAAe,CAAC;IAEvB,WAAW;IACX,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAE7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,YAAY;IACZ,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAE9E,eAAe;IACf,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IAErD,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,WAAW;IACX,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,YAAY;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B,eAAe;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,gBAAgB;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/react/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,IAAI,CAAC,EAAE,eAAe,CAAC;IAEvB,WAAW;IACX,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAE7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,YAAY;IACZ,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAE9E,eAAe;IACf,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IAErD,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,WAAW;IACX,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAGrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,YAAY;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B,eAAe;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,gBAAgB;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basic-genomics/hivtrace-viz",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "HIV-TRACE molecular transmission network visualization with React integration",
5
5
  "engines": {
6
6
  "node": ">=18"