@deep-eye/core 1.2.81 → 1.2.83

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.
Files changed (73) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/chat/components/ChatSender.vue.d.ts +2 -0
  3. package/dist/components/chat/components/ChatSender.vue.d.ts.map +1 -1
  4. package/dist/components/chat/components/ProcessStepGroup.vue.d.ts.map +1 -1
  5. package/dist/components/chat/composables/fetchModelList.d.ts +29 -0
  6. package/dist/components/chat/composables/fetchModelList.d.ts.map +1 -0
  7. package/dist/components/chat/composables/pcmCapture.d.ts +19 -0
  8. package/dist/components/chat/composables/pcmCapture.d.ts.map +1 -0
  9. package/dist/components/chat/composables/qwenAsrWs.d.ts +42 -0
  10. package/dist/components/chat/composables/qwenAsrWs.d.ts.map +1 -0
  11. package/dist/components/chat/composables/useChatVoice.d.ts +3 -0
  12. package/dist/components/chat/composables/useChatVoice.d.ts.map +1 -1
  13. package/dist/components/chat/index.d.ts +2 -0
  14. package/dist/components/chat/index.d.ts.map +1 -1
  15. package/dist/components/chat/types.d.ts +27 -1
  16. package/dist/components/chat/types.d.ts.map +1 -1
  17. package/dist/components/chat/useProcessGroupTimer.d.ts.map +1 -1
  18. package/dist/components/visualization/D3MindMap.vue.d.ts +31 -44
  19. package/dist/components/visualization/D3MindMap.vue.d.ts.map +1 -1
  20. package/dist/components/visualization/composables/index.d.ts +7 -0
  21. package/dist/components/visualization/composables/index.d.ts.map +1 -0
  22. package/dist/components/visualization/{useMindMapDrag.d.ts → composables/useMindMapDrag.d.ts} +32 -2
  23. package/dist/components/visualization/composables/useMindMapDrag.d.ts.map +1 -0
  24. package/dist/components/visualization/{useMindMapHistory.d.ts → composables/useMindMapHistory.d.ts} +1 -1
  25. package/dist/components/visualization/composables/useMindMapHistory.d.ts.map +1 -0
  26. package/dist/components/visualization/{useMindMapLayoutEngine.d.ts → composables/useMindMapLayoutEngine.d.ts} +1 -1
  27. package/dist/components/visualization/composables/useMindMapLayoutEngine.d.ts.map +1 -0
  28. package/dist/components/visualization/composables/useMindMapNodeActions.d.ts +9 -0
  29. package/dist/components/visualization/composables/useMindMapNodeActions.d.ts.map +1 -0
  30. package/dist/components/visualization/composables/useMindMapPeripheralActions.d.ts +24 -0
  31. package/dist/components/visualization/composables/useMindMapPeripheralActions.d.ts.map +1 -0
  32. package/dist/components/visualization/composables/useMindMapTrailingIcon.d.ts +12 -0
  33. package/dist/components/visualization/composables/useMindMapTrailingIcon.d.ts.map +1 -0
  34. package/dist/components/visualization/{useMindMapTreeOps.d.ts → composables/useMindMapTreeOps.d.ts} +1 -1
  35. package/dist/components/visualization/composables/useMindMapTreeOps.d.ts.map +1 -0
  36. package/dist/components/visualization/index.d.ts +2 -2
  37. package/dist/components/visualization/index.d.ts.map +1 -1
  38. package/dist/components/visualization/lib/applyMindMapNodeDecorationFeatures.d.ts +9 -0
  39. package/dist/components/visualization/lib/applyMindMapNodeDecorationFeatures.d.ts.map +1 -0
  40. package/dist/components/visualization/lib/computeMindMapLayoutSpacing.d.ts +31 -0
  41. package/dist/components/visualization/lib/computeMindMapLayoutSpacing.d.ts.map +1 -0
  42. package/dist/components/visualization/lib/computeMindMapLinkPath.d.ts +30 -0
  43. package/dist/components/visualization/lib/computeMindMapLinkPath.d.ts.map +1 -0
  44. package/dist/components/visualization/lib/computeMindMapNodeScreenRect.d.ts +21 -0
  45. package/dist/components/visualization/lib/computeMindMapNodeScreenRect.d.ts.map +1 -0
  46. package/dist/components/visualization/lib/computeMindMapPeripheralExtents.d.ts +24 -0
  47. package/dist/components/visualization/lib/computeMindMapPeripheralExtents.d.ts.map +1 -0
  48. package/dist/components/visualization/lib/computeMindMapVisibleBounds.d.ts +43 -0
  49. package/dist/components/visualization/lib/computeMindMapVisibleBounds.d.ts.map +1 -0
  50. package/dist/components/visualization/lib/index.d.ts +11 -0
  51. package/dist/components/visualization/lib/index.d.ts.map +1 -0
  52. package/dist/components/visualization/lib/resolveNodeTrailingLayout.d.ts +71 -0
  53. package/dist/components/visualization/lib/resolveNodeTrailingLayout.d.ts.map +1 -0
  54. package/dist/components/visualization/lib/stripNodeDecorationAnimation.d.ts +4 -0
  55. package/dist/components/visualization/lib/stripNodeDecorationAnimation.d.ts.map +1 -0
  56. package/dist/components/visualization/{themes.d.ts → lib/themes.d.ts} +1 -1
  57. package/dist/components/visualization/lib/themes.d.ts.map +1 -0
  58. package/dist/components/visualization/{utils.d.ts → lib/utils.d.ts} +2 -0
  59. package/dist/components/visualization/lib/utils.d.ts.map +1 -0
  60. package/dist/components/visualization/lib/wrapNodeText.d.ts +24 -0
  61. package/dist/components/visualization/lib/wrapNodeText.d.ts.map +1 -0
  62. package/dist/components/visualization/types.d.ts +332 -8
  63. package/dist/components/visualization/types.d.ts.map +1 -1
  64. package/dist/index.cjs +105 -102
  65. package/dist/index.js +19872 -18320
  66. package/dist/style.css +2 -2
  67. package/package.json +1 -1
  68. package/dist/components/visualization/themes.d.ts.map +0 -1
  69. package/dist/components/visualization/useMindMapDrag.d.ts.map +0 -1
  70. package/dist/components/visualization/useMindMapHistory.d.ts.map +0 -1
  71. package/dist/components/visualization/useMindMapLayoutEngine.d.ts.map +0 -1
  72. package/dist/components/visualization/useMindMapTreeOps.d.ts.map +0 -1
  73. package/dist/components/visualization/utils.d.ts.map +0 -1
@@ -0,0 +1,9 @@
1
+ import type { MindMapNodeAction, MindMapNodeGroupSelection, MindMapPointNode } from '../types';
2
+ export declare const disposeNodeActionComponent: (nodeId: string | undefined | null, actionId?: string) => void;
3
+ export declare const disposeAllNodeActionComponents: () => void;
4
+ export type NodeActionClickHandler = (node: MindMapPointNode, action: MindMapNodeAction, event: MouseEvent) => void;
5
+ /** 同步节点尾部操作按钮(可点击,位于展开按钮左侧) */
6
+ export declare const syncNodeActions: (nodeGroup: MindMapNodeGroupSelection, node: MindMapPointNode, actions: MindMapNodeAction[], slotCenterX: Record<string, number>, onActionClick: NodeActionClickHandler) => void;
7
+ /** 移除节点上全部操作按钮 */
8
+ export declare const clearNodeActions: (nodeGroup: MindMapNodeGroupSelection, nodeId: string | undefined | null) => void;
9
+ //# sourceMappingURL=useMindMapNodeActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMindMapNodeActions.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/composables/useMindMapNodeActions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EAEzB,gBAAgB,EACjB,MAAM,UAAU,CAAA;AA8BjB,eAAO,MAAM,0BAA0B,GACrC,QAAQ,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,WAAW,MAAM,SAoBlB,CAAA;AAED,eAAO,MAAM,8BAA8B,YAO1C,CAAA;AA+HD,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,UAAU,KACd,IAAI,CAAA;AAET,+BAA+B;AAC/B,eAAO,MAAM,eAAe,GAC1B,WAAW,yBAAyB,EACpC,MAAM,gBAAgB,EACtB,SAAS,iBAAiB,EAAE,EAC5B,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,eAAe,sBAAsB,SAmCtC,CAAA;AAED,kBAAkB;AAClB,eAAO,MAAM,gBAAgB,GAC3B,WAAW,yBAAyB,EACpC,QAAQ,MAAM,GAAG,SAAS,GAAG,IAAI,SAIlC,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { MindMapNodeGroupSelection, MindMapNodePeripheralAction, MindMapPointNode } from '../types';
2
+ export type NodePeripheralActionClickHandler = (node: MindMapPointNode, action: MindMapNodePeripheralAction, event: MouseEvent) => void;
3
+ export interface MindMapPeripheralSlotBounds {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ labelX: number;
9
+ labelY: number;
10
+ pathD: string;
11
+ }
12
+ /** 计算周边操作槽位包围盒与默认底形 path */
13
+ export declare const resolveMindMapPeripheralSlotBounds: (action: MindMapNodePeripheralAction, rect: {
14
+ x: number;
15
+ y: number;
16
+ width: number;
17
+ height: number;
18
+ }) => MindMapPeripheralSlotBounds;
19
+ export declare const disposePeripheralActionComponent: (nodeId: string | undefined | null, actionId?: string) => void;
20
+ export declare const disposeAllPeripheralActionComponents: () => void;
21
+ /** 同步节点周边操作(上/下/右) */
22
+ export declare const syncNodePeripheralActions: (nodeGroup: MindMapNodeGroupSelection, node: MindMapPointNode, actions: MindMapNodePeripheralAction[], onActionClick: NodePeripheralActionClickHandler) => void;
23
+ export declare const clearNodePeripheralActions: (nodeGroup: MindMapNodeGroupSelection, nodeId?: string | null) => void;
24
+ //# sourceMappingURL=useMindMapPeripheralActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMindMapPeripheralActions.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/composables/useMindMapPeripheralActions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EACzB,2BAA2B,EAE3B,gBAAgB,EACjB,MAAM,UAAU,CAAA;AA8BjB,MAAM,MAAM,gCAAgC,GAAG,CAC7C,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,2BAA2B,EACnC,KAAK,EAAE,UAAU,KACd,IAAI,CAAA;AAET,MAAM,WAAW,2BAA2B;IAC1C,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,4BAA4B;AAC5B,eAAO,MAAM,kCAAkC,GAC7C,QAAQ,2BAA2B,EACnC,MAAM;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAC5D,2BA2CF,CAAA;AAUD,eAAO,MAAM,gCAAgC,GAC3C,QAAQ,MAAM,GAAG,SAAS,GAAG,IAAI,EACjC,WAAW,MAAM,SAoBlB,CAAA;AAED,eAAO,MAAM,oCAAoC,YAOhD,CAAA;AAqLD,sBAAsB;AACtB,eAAO,MAAM,yBAAyB,GACpC,WAAW,yBAAyB,EACpC,MAAM,gBAAgB,EACtB,SAAS,2BAA2B,EAAE,EACtC,eAAe,gCAAgC,SAuDhD,CAAA;AAED,eAAO,MAAM,0BAA0B,GACrC,WAAW,yBAAyB,EACpC,SAAS,MAAM,GAAG,IAAI,SAIvB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { MindMapNodeDecoration, MindMapNodeGroupSelection, MindMapPointNode } from '../types';
2
+ type TrailingIconAnimation = NonNullable<MindMapNodeDecoration['trailingIcon']>['animation'] | undefined;
3
+ export declare const toCssAnimationTime: (value: string | number | undefined) => string | undefined;
4
+ export declare const resolveDecorationAnimation: (animation: TrailingIconAnimation) => string | null;
5
+ /** 卸载指定节点的 Vue 尾部图标 */
6
+ export declare const disposeTrailingIconComponent: (nodeId: string | undefined | null) => void;
7
+ /** 组件销毁或整图重置时清理全部 Vue 尾部图标 */
8
+ export declare const disposeAllTrailingIconComponents: () => void;
9
+ /** 同步节点尾部图标:component 优先,其次 src 图片 */
10
+ export declare const syncTrailingIcon: (nodeGroup: MindMapNodeGroupSelection, node: MindMapPointNode, trailingIcon: NonNullable<MindMapNodeDecoration["trailingIcon"]> | undefined, iconX: number) => void;
11
+ export {};
12
+ //# sourceMappingURL=useMindMapTrailingIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMindMapTrailingIcon.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/composables/useMindMapTrailingIcon.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EAErB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,UAAU,CAAA;AAIjB,KAAK,qBAAqB,GACtB,WAAW,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,GAC/D,SAAS,CAAA;AASb,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAGhF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,WAAW,qBAAqB,KAAG,MAAM,GAAG,IAetF,CAAA;AAgBD,uBAAuB;AACvB,eAAO,MAAM,4BAA4B,GAAI,QAAQ,MAAM,GAAG,SAAS,GAAG,IAAI,SAO7E,CAAA;AAED,8BAA8B;AAC9B,eAAO,MAAM,gCAAgC,YAI5C,CAAA;AAmGD,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,GAC3B,WAAW,yBAAyB,EACpC,MAAM,gBAAgB,EACtB,cAAc,WAAW,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,GAAG,SAAS,EAC5E,OAAO,MAAM,SAgBd,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { MindMapApplyTreeOptions, MindMapData, MindMapDatum, MindMapDropPosition, MindMapNode, MindMapPointNode } from './types';
1
+ import type { MindMapApplyTreeOptions, MindMapData, MindMapDatum, MindMapDropPosition, MindMapNode, MindMapPointNode } from '../types';
2
2
  export declare const generateMindMapId: () => string;
3
3
  /** 外部输入 → 组件内部 MindMapDatum */
4
4
  export declare function convertMindMapData(data: unknown): MindMapDatum;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMindMapTreeOps.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/composables/useMindMapTreeOps.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { default as D3MindMap } from './D3MindMap.vue';
2
2
  export * from './types';
3
- export * from './themes';
4
- export * from './utils';
3
+ export * from './lib';
4
+ export * from './composables';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/visualization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACtD,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/visualization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACtD,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,eAAe,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { MindMapNodeDecoration, MindMapNodeFeatures } from '../types';
2
+ /** 是否启用了任意装饰能力(边框或尾部 icon) */
3
+ export declare function isAnyNodeDecorationFeatureEnabled(features?: MindMapNodeFeatures): boolean;
4
+ /**
5
+ * 按 nodeFeatures 裁剪 resolver 返回的装饰:边框与尾部 icon 可独立开关,动画也可分别关闭。
6
+ * decoration / decorationAnimation 仍兼容为「同时开启边框与 icon(及对应动画)」。
7
+ */
8
+ export declare function applyMindMapNodeDecorationFeatures(decoration: MindMapNodeDecoration, features?: MindMapNodeFeatures): MindMapNodeDecoration | null;
9
+ //# sourceMappingURL=applyMindMapNodeDecorationFeatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyMindMapNodeDecorationFeatures.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/applyMindMapNodeDecorationFeatures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAwB1E,8BAA8B;AAC9B,wBAAgB,iCAAiC,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAEzF;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,qBAAqB,EACjC,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,qBAAqB,GAAG,IAAI,CA2B9B"}
@@ -0,0 +1,31 @@
1
+ import type { LayoutConfig } from '../types';
2
+ export interface MindMapLayoutSpacingInput {
3
+ /** 当前可见节点总数 */
4
+ visibleNodeCount: number;
5
+ /** 单个父节点下最多的直接子节点数 */
6
+ maxSiblings: number;
7
+ /** 各层节点宽度的最大值 */
8
+ maxNodeWidth: number;
9
+ /** 节点高度近似值 */
10
+ nodeHeight: number;
11
+ layoutConfig?: LayoutConfig;
12
+ }
13
+ export interface MindMapLayoutSpacingResult {
14
+ /** 兄弟节点之间的垂直间距(D3 tree nodeSize[0]) */
15
+ verticalGap: number;
16
+ /** D3 tree 水平 nodeSize[1] */
17
+ baseLevelGap: number;
18
+ /** 相邻层级之间的水平 padding(叠加在父节点宽度之后) */
19
+ levelPadding: number;
20
+ /** separation 计算用的节点 padding */
21
+ separationPadding: number;
22
+ /** 是否触发了拥挤间距补偿 */
23
+ crowdedActive: boolean;
24
+ }
25
+ /**
26
+ * 根据可见节点规模与 layoutConfig 计算布局间距。
27
+ * 仅当 layoutConfig 显式配置了 crowdedThreshold 或 crowdedSiblingThreshold 时,
28
+ * 才会在超出对应阈值后加大垂直/层级间距并标记 crowdedActive。
29
+ */
30
+ export declare function computeMindMapLayoutSpacing(input: MindMapLayoutSpacingInput): MindMapLayoutSpacingResult;
31
+ //# sourceMappingURL=computeMindMapLayoutSpacing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeMindMapLayoutSpacing.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/computeMindMapLayoutSpacing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,yBAAyB;IACxC,eAAe;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,gCAAgC;IAChC,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB;IAClB,aAAa,EAAE,OAAO,CAAA;CACvB;AAMD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,yBAAyB,GAC/B,0BAA0B,CAiD5B"}
@@ -0,0 +1,30 @@
1
+ import type { LinkStyleConfig } from '../types';
2
+ export type MindMapLinkCurve = NonNullable<LinkStyleConfig['curve']>;
3
+ /** 布局坐标点:x=垂直(SVG y),y=水平(SVG x) */
4
+ export interface MindMapLinkPoint {
5
+ x: number;
6
+ y: number;
7
+ }
8
+ export interface MindMapLinkPathOptions {
9
+ curve?: MindMapLinkCurve;
10
+ /** step/smooth:父节点到竖向干线的水平出距 */
11
+ trunkOffset?: number;
12
+ /** smooth 圆角半径 */
13
+ cornerRadius?: number;
14
+ }
15
+ /** 贝塞尔曲线(原有默认) */
16
+ export declare function computeBezierLinkPath(source: MindMapLinkPoint, target: MindMapLinkPoint): string;
17
+ /** 工作流式正交连线:父 → 竖向干线 → 子(线条在干线处自然分开) */
18
+ export declare function computeStepLinkPath(source: MindMapLinkPoint, target: MindMapLinkPoint, trunkOffset?: number): string;
19
+ /** 带圆角的工作流连线,视觉更柔和 */
20
+ export declare function computeSmoothStepLinkPath(source: MindMapLinkPoint, target: MindMapLinkPoint, trunkOffset?: number, cornerRadius?: number): string;
21
+ export declare function computeMindMapLinkPath(source: MindMapLinkPoint, target: MindMapLinkPoint, options?: MindMapLinkPathOptions): string;
22
+ /**
23
+ * 拥挤模式激活时切换工作流连线;未激活时保持主题/默认 bezier。
24
+ */
25
+ export declare function resolveMindMapLinkCurve(themeCurve: MindMapLinkCurve | undefined, layout: {
26
+ crowdedActive: boolean;
27
+ }, layoutConfig?: {
28
+ crowdedLinkCurve?: 'step' | 'smooth';
29
+ }): MindMapLinkCurve;
30
+ //# sourceMappingURL=computeMindMapLinkPath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeMindMapLinkPath.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/computeMindMapLinkPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;AAEpE,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAKD,kBAAkB;AAClB,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAGhG;AAED,wCAAwC;AACxC,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,EACxB,WAAW,SAAuB,GACjC,MAAM,CAGR;AAED,sBAAsB;AACtB,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,EACxB,WAAW,SAAuB,EAClC,YAAY,SAAwB,GACnC,MAAM,CAuBR;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,sBAA2B,GACnC,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,MAAM,EAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,EAClC,YAAY,CAAC,EAAE;IACb,gBAAgB,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CACrC,GACA,gBAAgB,CAUlB"}
@@ -0,0 +1,21 @@
1
+ import type { MindMapNodeScreenRect, MindMapNodeScreenRectOptions, MindMapPointNode } from '../types';
2
+ import { type MindMapTreeBounds } from './computeMindMapVisibleBounds';
3
+ /** 屏幕矩形部位:content=节点 rect;full=含尾部 chrome / 周边操作 */
4
+ export type MindMapNodeScreenRectPart = NonNullable<MindMapNodeScreenRectOptions['part']>;
5
+ export interface MindMapTransformState {
6
+ x: number;
7
+ y: number;
8
+ k: number;
9
+ }
10
+ /**
11
+ * 将 tree 节点局部坐标转为相对容器的屏幕矩形。
12
+ * SVG 世界坐标:x = treeY + localX,y = treeX + localY;再应用 zoom transform。
13
+ */
14
+ export declare function computeMindMapNodeScreenRect(node: MindMapPointNode, transform: MindMapTransformState, nodeWidth: number, groupRightX: number, options?: MindMapNodeScreenRectOptions, peripheralExtents?: {
15
+ top?: number;
16
+ bottom?: number;
17
+ right?: number;
18
+ }, nodeHeight?: number): MindMapNodeScreenRect;
19
+ /** tree 包围盒 → 相对容器的屏幕矩形(调试用) */
20
+ export declare function computeMindMapTreeBoundsScreenRect(bounds: MindMapTreeBounds, transform: MindMapTransformState): MindMapNodeScreenRect;
21
+ //# sourceMappingURL=computeMindMapNodeScreenRect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeMindMapNodeScreenRect.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/computeMindMapNodeScreenRect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAG5F,oDAAoD;AACpD,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAA;AAEzF,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,qBAAqB,EAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,4BAAiC,EAC1C,iBAAiB,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,EACzE,UAAU,GAAE,MAA6B,GACxC,qBAAqB,CAuBvB;AAED,gCAAgC;AAChC,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,qBAAqB,GAC/B,qBAAqB,CAQvB"}
@@ -0,0 +1,24 @@
1
+ import type { MindMapNode, MindMapNodePeripheralAction, MindMapPointNode } from '../types';
2
+ import type { MindMapNodeHeightInput, MindMapTreeBounds } from './computeMindMapVisibleBounds';
3
+ /** 与业务 D3MindMapPanel 默认几何一致 */
4
+ export declare const MIND_MAP_PERIPHERAL_BTN_BASE = 28;
5
+ export declare const MIND_MAP_PERIPHERAL_BTN_DEPTH = 14;
6
+ export interface MindMapPeripheralExtents {
7
+ top: number;
8
+ bottom: number;
9
+ right: number;
10
+ }
11
+ export declare function computeMindMapPeripheralExtents(actions: MindMapNodePeripheralAction[]): MindMapPeripheralExtents;
12
+ /** 右「+」占用 content 右缘的宽度;尾部 icon 需从此之后开始排列 */
13
+ export declare function resolveMindMapPeripheralTrailingOffset(actions: MindMapNodePeripheralAction[]): number;
14
+ /** 在 trailing/content bounds 基础上并入周边操作占用(top/bottom;right 由 trailingLeadingOffset 纳入 layout) */
15
+ export declare function computeMindMapNodeTreeBoundsWithPeripheral(node: MindMapPointNode, getGroupRightX: (node: MindMapPointNode) => number, nodeWidth: number, peripheralExtents: MindMapPeripheralExtents, nodeHeight?: MindMapNodeHeightInput): MindMapTreeBounds;
16
+ export declare function filterVisibleMindMapPeripheralActions(actions: MindMapNodePeripheralAction[], nodeId: string | undefined, selectedNodeId: string | null | undefined, isExpanded?: boolean): MindMapNodePeripheralAction[];
17
+ export type OutlinePeripheralActionFactory = (id: string, position: MindMapNodePeripheralAction['position']) => MindMapNodePeripheralAction;
18
+ /**
19
+ * 大纲编辑周边「+」默认方向(不含展开/收起过滤;展示内容由 factory 决定,如是否传 slot):
20
+ * - 根节点:仅 right(加子节点)
21
+ * - 非根节点:top / bottom / right
22
+ */
23
+ export declare function resolveOutlineMindMapPeripheralActions(node: MindMapNode, depth: number, factory: OutlinePeripheralActionFactory): MindMapNodePeripheralAction[];
24
+ //# sourceMappingURL=computeMindMapPeripheralExtents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeMindMapPeripheralExtents.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/computeMindMapPeripheralExtents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAG9F,gCAAgC;AAChC,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAC9C,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAE/C,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,2BAA2B,EAAE,GACrC,wBAAwB,CAqB1B;AAED,6CAA6C;AAC7C,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,2BAA2B,EAAE,GACrC,MAAM,CAQR;AAED,gGAAgG;AAChG,wBAAgB,0CAA0C,CACxD,IAAI,EAAE,gBAAgB,EACtB,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,EAClD,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,wBAAwB,EAC3C,UAAU,GAAE,sBAA6C,GACxD,iBAAiB,CASnB;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,2BAA2B,EAAE,EACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,UAAU,UAAO,GAChB,2BAA2B,EAAE,CAiB/B;AAED,MAAM,MAAM,8BAA8B,GAAG,CAC3C,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,KAC9C,2BAA2B,CAAA;AAEhC;;;;GAIG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,8BAA8B,GACtC,2BAA2B,EAAE,CAO/B"}
@@ -0,0 +1,43 @@
1
+ import type { MindMapFitInsets, MindMapFitOptions, MindMapPointNode } from '../types';
2
+ /** 节点内容 rect 固定高度(与 D3MindMap 渲染一致) */
3
+ export declare const MIND_MAP_NODE_HEIGHT = 55;
4
+ export type { MindMapFitInsets, MindMapFitOptions };
5
+ /** D3 tree 坐标系下的轴对齐包围盒(treeX=垂直,treeY=水平) */
6
+ export interface MindMapTreeBounds {
7
+ minTreeX: number;
8
+ maxTreeX: number;
9
+ minTreeY: number;
10
+ maxTreeY: number;
11
+ }
12
+ export interface MindMapFitTransform {
13
+ scale: number;
14
+ translateX: number;
15
+ translateY: number;
16
+ }
17
+ /** 收集当前可见节点(与 renderMindMap / 旧 fitToWindow 逻辑一致) */
18
+ export declare function collectVisibleMindMapNodes(root: MindMapPointNode, isNodeExpanded: (node: MindMapPointNode) => boolean): MindMapPointNode[];
19
+ /** 收集目标节点及其已展开子树(fitToNode 用) */
20
+ export declare function collectMindMapSubtreeNodes(root: MindMapPointNode, isNodeExpanded: (node: MindMapPointNode) => boolean): MindMapPointNode[];
21
+ /** 节点高度:固定数值,或按节点动态取值(自动换行节点的高度会随行数变化) */
22
+ export type MindMapNodeHeightInput = number | ((node: MindMapPointNode) => number);
23
+ /**
24
+ * 单节点在 tree 坐标系下的视觉包围盒。
25
+ * group 原点 = (treeY, treeX);水平范围含 content rect 与尾部 chrome 右缘。
26
+ */
27
+ export declare function computeMindMapNodeTreeBounds(node: MindMapPointNode, getGroupRightX: (node: MindMapPointNode) => number, nodeHeight?: MindMapNodeHeightInput): MindMapTreeBounds;
28
+ export declare function mergeMindMapTreeBounds(boundsList: MindMapTreeBounds[]): MindMapTreeBounds | null;
29
+ export declare function applyMindMapFitInsets(bounds: MindMapTreeBounds, extraInsets?: MindMapFitInsets): MindMapTreeBounds;
30
+ export declare function expandMindMapTreeBoundsPadding(bounds: MindMapTreeBounds, padding: number): MindMapTreeBounds;
31
+ /**
32
+ * 由 tree 包围盒计算 SVG zoom transform。
33
+ * SVG:x = treeY,y = treeX;默认居中于包围盒中心,可指定 anchor 用于 fitToNode。
34
+ */
35
+ export declare function computeMindMapFitTransform(bounds: MindMapTreeBounds, containerWidth: number, containerHeight: number, options?: MindMapFitOptions & {
36
+ anchorTreeX?: number;
37
+ anchorTreeY?: number;
38
+ }): MindMapFitTransform;
39
+ /** 合并多节点 bounds;nodes 为空时返回 null */
40
+ export declare function computeMindMapNodesTreeBounds(nodes: MindMapPointNode[], getGroupRightX: (node: MindMapPointNode) => number, nodeHeight?: MindMapNodeHeightInput): MindMapTreeBounds | null;
41
+ /** 节点 group 内最右端 x(content 右缘、尾部 chrome、展开钮) */
42
+ export declare function resolveMindMapNodeGroupRightX(nodeWidth: number, linkSourceX: number, expandButtonX: number | null, expandButtonRadius?: number): number;
43
+ //# sourceMappingURL=computeMindMapVisibleBounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeMindMapVisibleBounds.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/computeMindMapVisibleBounds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAGrF,uCAAuC;AACvC,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAA;AAEnD,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,qDAAqD;AACrD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,gBAAgB,EACtB,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,GAClD,gBAAgB,EAAE,CAcpB;AAED,iCAAiC;AACjC,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,gBAAgB,EACtB,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,GAClD,gBAAgB,EAAE,CAYpB;AAED,0CAA0C;AAC1C,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAC,CAAA;AAMlF;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,gBAAgB,EACtB,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,EAClD,UAAU,GAAE,sBAA6C,GACxD,iBAAiB,CAWnB;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAYhG;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,WAAW,CAAC,EAAE,gBAAgB,GAC7B,iBAAiB,CASnB;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,MAAM,GACd,iBAAiB,CAOnB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,iBAAiB,EACzB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,iBAAiB,GAAG;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CAChB,GACL,mBAAmB,CAwBrB;AAED,oCAAoC;AACpC,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,gBAAgB,EAAE,EACzB,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,EAClD,UAAU,GAAE,sBAA6C,GACxD,iBAAiB,GAAG,IAAI,CAI1B;AAED,gDAAgD;AAChD,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,kBAAkB,SAAuB,GACxC,MAAM,CAMR"}
@@ -0,0 +1,11 @@
1
+ export * from './applyMindMapNodeDecorationFeatures';
2
+ export * from './computeMindMapPeripheralExtents';
3
+ export * from './computeMindMapNodeScreenRect';
4
+ export * from './computeMindMapVisibleBounds';
5
+ export * from './computeMindMapLayoutSpacing';
6
+ export * from './computeMindMapLinkPath';
7
+ export * from './resolveNodeTrailingLayout';
8
+ export * from './stripNodeDecorationAnimation';
9
+ export * from './themes';
10
+ export * from './utils';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAA;AACpD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA"}
@@ -0,0 +1,71 @@
1
+ import type { MindMapNodeAction, MindMapNodeDecoration } from '../types';
2
+ /** 节点内容 rect 相对 group 原点的 x(与 D3MindMap 中 rect 一致) */
3
+ export declare const NODE_CONTENT_RECT_X = -18;
4
+ /** 内容右缘与尾部 icon 之间的最小间距 */
5
+ export declare const TRAILING_CONTENT_GAP = 4;
6
+ /** 展开按钮默认半径 */
7
+ export declare const EXPAND_BUTTON_RADIUS = 12;
8
+ /** 节点内容右缘到展开按钮中心的默认水平偏移 */
9
+ export declare const EXPAND_BUTTON_OFFSET = 18;
10
+ /** 从展开按钮左侧开始、从右向左排列的占位槽 */
11
+ export interface TrailingLayoutSlot {
12
+ key: string;
13
+ size: number;
14
+ gap: number;
15
+ }
16
+ export interface ResolveNodeTrailingLayoutInput {
17
+ nodeWidth: number;
18
+ /**
19
+ * 是否有子节点(展开/收起状态不影响展开钮位置,始终在尾部最右侧)。
20
+ * 叶子节点传 false。
21
+ */
22
+ hasExpandButton: boolean;
23
+ /** 展开按钮半径,默认 12 */
24
+ expandButtonRadius?: number;
25
+ /** 节点内容右缘到展开按钮中心的偏移,默认 18 */
26
+ expandButtonOffset?: number;
27
+ /** 从右向左排列:数组第一项最靠近展开按钮 */
28
+ slots: TrailingLayoutSlot[];
29
+ /**
30
+ * 右「+」等在 content 右缘占用的宽度(默认 0)。
31
+ * 尾部 icon 从 trailingAnchorEdge 起排;右「+」本身仍锚在 content 右缘。
32
+ */
33
+ trailingLeadingOffset?: number;
34
+ /** 覆盖 contentRight + trailingLeadingOffset 的计算结果 */
35
+ trailingAnchorEdge?: number;
36
+ }
37
+ export interface ResolveNodeTrailingLayoutResult {
38
+ /** 内容区域(rect)右缘在 group 内的 x */
39
+ contentRightEdge: number;
40
+ expandButtonX: number | null;
41
+ /** 连线起点:展开态为展开钮右缘;收起/叶子为尾部 chrome 最右端 */
42
+ linkSourceX: number;
43
+ slotCenterX: Record<string, number>;
44
+ }
45
+ /** 尾部 chrome 占用宽度(icon 尺寸 + 各槽 gap,含与展开按钮的间距) */
46
+ export declare function computeTrailingChromeWidth(slots: TrailingLayoutSlot[]): number;
47
+ /**
48
+ * 节点尾部布局:
49
+ *
50
+ * - **有展开按钮**(有子节点,展开/收起状态一致):icon 在 trailing 锚点与
51
+ * 展开按钮之间,从右向左排,展开按钮始终在最右侧。
52
+ * - **无展开按钮**(叶子节点):icon 在 trailing 锚点外侧,从左向右排。
53
+ *
54
+ * 视觉顺序(左→右):… content → 右「+」? → [装饰] [操作] [展开] → 连线
55
+ *
56
+ * 收起时子节点与连线本不可见,故展开按钮位置不随展开/收起状态改变,
57
+ * 避免用户在两种状态间看到按钮跳动。
58
+ */
59
+ export declare function resolveNodeTrailingLayout(input: ResolveNodeTrailingLayoutInput): ResolveNodeTrailingLayoutResult;
60
+ /** 构建尾部槽位:操作 icon 靠展开侧,装饰 icon 在操作左侧 */
61
+ export declare function buildTrailingLayoutSlots(actions: MindMapNodeAction[], decoration: MindMapNodeDecoration | null | undefined): TrailingLayoutSlot[];
62
+ /** 按 visible 拆分:参与布局的 action vs 悬停浮层 action(不占布局位) */
63
+ export declare function partitionNodeActions(actions: MindMapNodeAction[], nodeId: string | undefined, selectedNodeId: string | null | undefined): {
64
+ layoutActions: MindMapNodeAction[];
65
+ hoverActions: MindMapNodeAction[];
66
+ };
67
+ /** 悬停 action 的定位:紧贴 trailing 起始缘外侧,不参与 link / expand 布局 */
68
+ export declare function resolveHoverActionCenterX(nodeWidth: number, hoverActions: MindMapNodeAction[], trailingLeadingOffset?: number): Record<string, number>;
69
+ /** 判断 icon 是否完全在内容 rect 外侧(用于测试) */
70
+ export declare function isIconOutsideContent(centerX: number, size: number, contentRightEdge: number): boolean;
71
+ //# sourceMappingURL=resolveNodeTrailingLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveNodeTrailingLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/resolveNodeTrailingLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAGxE,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC,2BAA2B;AAC3B,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAErC,eAAe;AACf,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,2BAA2B;AAC3B,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,2BAA2B;AAC3B,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAA;IACxB,mBAAmB;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,6BAA6B;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,0BAA0B;IAC1B,KAAK,EAAE,kBAAkB,EAAE,CAAA;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,+BAA+B;IAC9C,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED,iDAAiD;AACjD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAG9E;AAyDD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,GACpC,+BAA+B,CAqBjC;AAED,wCAAwC;AACxC,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,UAAU,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GACnD,kBAAkB,EAAE,CAwBtB;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACxC;IAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;IAAC,YAAY,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAwB3E;AAED,2DAA2D;AAC3D,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,iBAAiB,EAAE,EACjC,qBAAqB,SAAI,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAED,oCAAoC;AACpC,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAET"}
@@ -0,0 +1,4 @@
1
+ import type { MindMapNodeDecoration } from '../types';
2
+ /** 关闭装饰动画字段,保留静态边框与 icon */
3
+ export declare function stripNodeDecorationAnimation(decoration: MindMapNodeDecoration): MindMapNodeDecoration;
4
+ //# sourceMappingURL=stripNodeDecorationAnimation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripNodeDecorationAnimation.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/stripNodeDecorationAnimation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAErD,4BAA4B;AAC5B,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,qBAAqB,GAChC,qBAAqB,CAUvB"}
@@ -1,4 +1,4 @@
1
- import type { Theme } from './types';
1
+ import type { Theme } from '../types';
2
2
  /**
3
3
  * 默认主题(保持原有样式)
4
4
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/themes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAErC;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,KAwC1B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAwCvB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAwC3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,KAgC1B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAwC/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAA;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,MAAM,GAAG,KAAK,CAEzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAqBvE"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * 工具函数
3
3
  */
4
+ /** 编译期穷尽检查;运行时不应到达 */
5
+ export declare function assertNever(value: never, message?: string): never;
4
6
  /**
5
7
  * 获取文本宽度
6
8
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sBAAsB;AACtB,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAEjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAuBtC;AAED;;GAEG;AACH,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAA;AAE7C,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EACzC,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,GACX,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAalC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EACzC,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,GACX,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CA0BlC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB5F;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,UAAU,EAAE,aAAa,EACzB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;CACZ,GACL,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG3D"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 节点文字自动换行的纯函数实现。
3
+ *
4
+ * 设计取舍:换行仍然渲染成 SVG <text>/<tspan>(不引入 foreignObject),
5
+ * 原因是组件的图片导出(exportImage)依赖把 <svg> 序列化后交给
6
+ * <img>/canvas 光栅化,foreignObject 里的 HTML 在这条链路上兼容性较脆弱,
7
+ * 而 tspan 是标准 SVG 元素,和现有单行文本渲染路径完全一致、零风险。
8
+ */
9
+ export interface WrappedNodeText {
10
+ /** 换行后的每一行文本(已 trim 行尾空白) */
11
+ lines: string[];
12
+ /** 所有行中最宽的一行的测量宽度(<= maxWidth) */
13
+ width: number;
14
+ }
15
+ /**
16
+ * 对一段 topic 文本按 maxWidth 自动换行;同时保留用户通过 Shift+Enter
17
+ * 手动插入的 \n(先按 \n 分段,再对每段分别贪心装行)。
18
+ *
19
+ * @param topic 原始文本(可能包含手动换行符 \n)
20
+ * @param font canvas font 简写字符串,如 '16px "Google Sans"',需与实际渲染字体一致
21
+ * @param maxWidth 单行最大宽度(px)
22
+ */
23
+ export declare function wrapNodeText(topic: string, font: string, maxWidth: number): WrappedNodeText;
24
+ //# sourceMappingURL=wrapNodeText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapNodeText.d.ts","sourceRoot":"","sources":["../../../../src/components/visualization/lib/wrapNodeText.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgDH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAoD3F"}