@aloudata/ink-lineage 0.0.1-beta.1

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 (50) hide show
  1. package/package.json +27 -0
  2. package/src/assets/big/dataSourceTypeIcon.ts +65 -0
  3. package/src/assets/big/entityType.ts +1 -0
  4. package/src/assets/big/index.ts +5 -0
  5. package/src/assets/big/lineageIcon.ts +35 -0
  6. package/src/assets/big/tableTypeIcon.ts +17 -0
  7. package/src/assets/big/tipIcon.ts +1 -0
  8. package/src/assets/index.ts +14 -0
  9. package/src/components/Edges/DefaultEdge.ts +196 -0
  10. package/src/components/Edges/FoldEdge.ts +97 -0
  11. package/src/components/Edges/LineageEdge.ts +24 -0
  12. package/src/components/Edges/index.ts +3 -0
  13. package/src/components/Nodes/AssetNode.ts +438 -0
  14. package/src/components/Nodes/ColumnNode.ts +491 -0
  15. package/src/components/Nodes/CustomNode.ts +63 -0
  16. package/src/components/Nodes/DefaultNode.ts +74 -0
  17. package/src/components/Nodes/DowngradeNode.ts +115 -0
  18. package/src/components/Nodes/TableNode.ts +534 -0
  19. package/src/components/Nodes/index.ts +4 -0
  20. package/src/components/index.ts +2 -0
  21. package/src/constant/index.ts +1 -0
  22. package/src/constant/nodeStyle.ts +141 -0
  23. package/src/index.ts +6 -0
  24. package/src/manager/BaseManager.ts +20 -0
  25. package/src/manager/DataProcessor.ts +782 -0
  26. package/src/manager/ExpandManager.ts +93 -0
  27. package/src/manager/FoldLineageManager.ts +196 -0
  28. package/src/manager/GraphEventManager.ts +90 -0
  29. package/src/manager/LineageManager.ts +680 -0
  30. package/src/manager/RightKeyMenuManager.ts +114 -0
  31. package/src/manager/SearchNodeManager.ts +188 -0
  32. package/src/manager/ToolbarManager.ts +42 -0
  33. package/src/manager/index.ts +8 -0
  34. package/src/manager/nodeManager/AssetEventManager.ts +442 -0
  35. package/src/manager/nodeManager/BaseEventManager.ts +68 -0
  36. package/src/manager/nodeManager/ColumnEventManager.ts +467 -0
  37. package/src/manager/nodeManager/CustomEventManager.ts +11 -0
  38. package/src/manager/nodeManager/TableEventManager.ts +87 -0
  39. package/src/manager/nodeManager/index.ts +3 -0
  40. package/src/types/NodeConfig.ts +69 -0
  41. package/src/types/eventEnum.ts +58 -0
  42. package/src/types/index.ts +3 -0
  43. package/src/types/manager.ts +75 -0
  44. package/src/types/node.ts +246 -0
  45. package/src/utils/downgradeNode.ts +22 -0
  46. package/src/utils/foldNode.ts +345 -0
  47. package/src/utils/getIconByType.ts +104 -0
  48. package/src/utils/index.ts +3 -0
  49. package/src/utils/node.ts +294 -0
  50. package/tsconfig.json +30 -0
@@ -0,0 +1,17 @@
1
+ export const view24 =
2
+ "data:image/svg+xml;charset=utf-8;base64,Cjxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI1IiB2aWV3Qm94PSIwIDAgMjYgMjUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjYiIGZpbGw9IiMxNUMzOTEiLz4KPHJlY3QgeD0iMS41IiB5PSI4IiB3aWR0aD0iMjEiIGhlaWdodD0iMTMiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8zNjkxXzEyNzAwMykiLz4KPHBhdGggZD0iTTguNSA4VjIyIiBzdHJva2U9IiM5Q0EzQUYiLz4KPHBhdGggZD0iTTE1LjUgOFYyMiIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxwYXRoIGQ9Ik0yMiAxMi41TDEgMTIuNSIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxwYXRoIGQ9Ik0yMiA4TDEgOCIgc3Ryb2tlPSIjMDk4ODY0Ii8+CjxwYXRoIGQ9Ik0yMiAxN0gxIiBzdHJva2U9IiM5Q0EzQUYiLz4KPHJlY3QgeD0iMS41IiB5PSIyIiB3aWR0aD0iMjEiIGhlaWdodD0iMTkuNSIgcng9IjAuODMzMzMzIiBzdHJva2U9IiM2QjcyODAiLz4KPGNpcmNsZSBjeD0iMTEuNDU0OCIgY3k9IjE5LjM2MzkiIHI9IjUuMDc3OTkiIHRyYW5zZm9ybT0icm90YXRlKC00NSAxMS40NTQ4IDE5LjM2MzkpIiBmaWxsPSJ3aGl0ZSIvPgo8Y2lyY2xlIGN4PSIyMC4xODE0IiBjeT0iMTkuMzYzOSIgcj0iNS4wNzc5OSIgdHJhbnNmb3JtPSJyb3RhdGUoLTQ1IDIwLjE4MTQgMTkuMzYzOSkiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMyAxOUgxOCIgc3Ryb2tlPSIjNkI3MjgwIi8+CjxjaXJjbGUgY3g9IjExLjQ1NDgiIGN5PSIxOS4zNjM5IiByPSIzLjE1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNDUgMTEuNDU0OCAxOS4zNjM5KSIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM2OTFfMTI3MDAzKSIgc3Ryb2tlPSIjNkI3MjgwIiBzdHJva2Utd2lkdGg9IjAuOSIvPgo8Y2lyY2xlIGN4PSIyMC4zNjQyIiBjeT0iMTkuMzYzOSIgcj0iMy4xNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTQ1IDIwLjM2NDIgMTkuMzYzOSkiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8zNjkxXzEyNzAwMykiIHN0cm9rZT0iIzZCNzI4MCIgc3Ryb2tlLXdpZHRoPSIwLjkiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8zNjkxXzEyNzAwMyIgeDE9IjEzLjUiIHkxPSI4IiB4Mj0iMTMuNSIgeTI9IjE1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNCMEIwQjAiLz4KPHN0b3Agb2Zmc2V0PSIwLjAwMDEiIHN0b3AtY29sb3I9IiNFNkU2RTYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJ3aGl0ZSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfMzY5MV8xMjcwMDMiIHgxPSIxMS40NTQ4IiB5MT0iMTYuMjEzOSIgeDI9IjExLjQ1NDgiIHkyPSIyMi41MTM5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGMEZCRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjOEVERUY3Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhcl8zNjkxXzEyNzAwMyIgeDE9IjIwLjM2NDIiIHkxPSIxNi4yMTM5IiB4Mj0iMjAuMzY0MiIgeTI9IjIyLjUxMzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0YwRkJGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4RURFRjciLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4="
3
+
4
+ export const taskSql =
5
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTExLjk0NDQgMC44MzMwMDhIMi41VjE5LjE2NjNIMTYuNjY2N1Y1LjY4NTk1TDExLjk0NDQgMC44MzMwMDhaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMTY4MzRfMTI3NDQ1KSIvPgo8cGF0aCBkPSJNMTIuNSAwLjgzMzAwOFY1LjgzMzAxSDE3LjA4MzMiIHN0cm9rZT0iIzlDQTNBRiIgc3Ryb2tlLXdpZHRoPSIwLjgzMzMzMyIvPgo8cGF0aCBkPSJNMTIuMDY3OSAwLjgzMzAwOEgzLjYxMTA3QzMuMjI3NTQgMC44MzMwMDggMi45MTY2MyAxLjE0MzkyIDIuOTE2NjMgMS41Mjc0NVYxOC40NzE5QzIuOTE2NjMgMTguODU1NCAzLjIyNzU0IDE5LjE2NjMgMy42MTEwNyAxOS4xNjYzSDE2LjM4ODhDMTYuNzcyNCAxOS4xNjYzIDE3LjA4MzMgMTguODU1NCAxNy4wODMzIDE4LjQ3MTlWNS45NjgwNkMxNy4wODMzIDUuNzg3MTYgMTcuMDEyNyA1LjYxMzQxIDE2Ljg4NjYgNS40ODM3NkwxMi41NjU2IDEuMDQzMTVDMTIuNDM0OCAwLjkwODggMTIuMjU1MyAwLjgzMzAwOCAxMi4wNjc5IDAuODMzMDA4WiIgc3Ryb2tlPSIjNkI3MjgwIiBzdHJva2Utd2lkdGg9IjAuODMzMzMzIi8+CjxyZWN0IHg9IjAuODMzMzc0IiB5PSI4LjMzMzAxIiB3aWR0aD0iMTguMzMzMyIgaGVpZ2h0PSI4LjMzMzMzIiByeD0iMC44MzMzMzMiIGZpbGw9IiNFM0E1NUIiIHN0cm9rZT0iI0MyNzIxMyIgc3Ryb2tlLXdpZHRoPSIwLjgzMzMzMyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEzLjIzNDUgMTQuNjA5NlY5LjgzMzAxSDEzLjk2OTNWMTQuMjQyMkgxNS40MzlWMTQuOTc3SDEzLjYwMTlDMTMuMzk5IDE0Ljk3NyAxMy4yMzQ1IDE0LjgxMjUgMTMuMjM0NSAxNC42MDk2Wk01LjE1MDUxIDExLjMwMjlDNS4xNTA1MSAxMC40OTEyIDUuODA4NTMgOS44MzMxOSA2LjYyMDI0IDkuODMzMTlDNy40MzE5NCA5LjgzMzE5IDguMDg5OTYgMTAuNDkxMiA4LjA4OTk2IDExLjMwMjlINy4zNTUxQzcuMzU1MSAxMC44OTcxIDcuMDI2MDkgMTAuNTY4MSA2LjYyMDI0IDEwLjU2ODFDNi4yMTQzOCAxMC41NjgxIDUuODg1MzcgMTAuODk3MSA1Ljg4NTM3IDExLjMwMjlDNS44ODUzNyAxMS43MDg4IDYuMjE0MzggMTIuMDM3OCA2LjYyMDI0IDEyLjAzNzhDNy40MzE5NCAxMi4wMzc4IDguMDg5OTYgMTIuNjk1OCA4LjA4OTk2IDEzLjUwNzVDOC4wODk5NiAxNC4zMTkyIDcuNDMxOTQgMTQuOTc3MiA2LjYyMDI0IDE0Ljk3NzJDNS44MDg1MyAxNC45NzcyIDUuMTUwNTEgMTQuMzE5MiA1LjE1MDUxIDEzLjUwNzVINS44ODUzN0M1Ljg4NTM3IDEzLjkxMzQgNi4yMTQzOCAxNC4yNDI0IDYuNjIwMjQgMTQuMjQyNEM3LjAyNjA5IDE0LjI0MjQgNy4zNTUxIDEzLjkxMzQgNy4zNTUxIDEzLjUwNzVDNy4zNTUxIDEzLjEwMTcgNy4wMjYwOSAxMi43NzI2IDYuNjIwMjQgMTIuNzcyNkM1LjgwODUzIDEyLjc3MjYgNS4xNTA1MSAxMi4xMTQ2IDUuMTUwNTEgMTEuMzAyOVpNMTEuMDMwMiAxMy41MDczVjExLjMwMjdDMTEuMDMwMiAxMC44OTY5IDEwLjcwMTIgMTAuNTY3OSAxMC4yOTU0IDEwLjU2NzlDOS44ODk1IDEwLjU2NzkgOS41NjA0OSAxMC44OTY5IDkuNTYwNDkgMTEuMzAyN1YxMy41MDczQzkuNTYwNDkgMTMuOTEzMiA5Ljg4OTUgMTQuMjQyMiAxMC4yOTU0IDE0LjI0MjJDMTAuNzAxMiAxNC4yNDIyIDExLjAzMDIgMTMuOTEzMiAxMS4wMzAyIDEzLjUwNzNaTTEwLjI5NTQgOS44MzMwMUM5LjQ4MzY1IDkuODMzMDEgOC44MjU2MyAxMC40OTEgOC44MjU2MyAxMS4zMDI3VjEzLjUwNzNDOC44MjU2MyAxNC4zMTkgOS40ODM2NSAxNC45NzcgMTAuMjk1NCAxNC45NzdDMTAuNTY3OSAxNC45NzcgMTAuODIzIDE0LjkwMjkgMTEuMDQxOCAxNC43NzM2TDExLjUwNSAxNS4yMzY4TDEyLjAyNDYgMTQuNzE3MkwxMS41NjE1IDE0LjI1NDFDMTEuNjkwOCAxNC4wMzUyIDExLjc2NTEgMTMuNzc5OSAxMS43NjUxIDEzLjUwNzNWMTEuMzAyN0MxMS43NjUxIDEwLjQ5MSAxMS4xMDcxIDkuODMzMDEgMTAuMjk1NCA5LjgzMzAxWiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xNjgzNF8xMjc0NDUiIHgxPSIxMC42NDU4IiB5MT0iLTAuMDAwMzI1NDYiIHgyPSIxMC42NDU4IiB5Mj0iOS45OTk2NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRTZFNkU2Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K';
6
+
7
+ export const tableTemporary =
8
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjUgNUMyLjUgNC4xNzE1NyAzLjE3MTU3IDMuNSA0IDMuNUgyMEMyMC44Mjg0IDMuNSAyMS41IDQuMTcxNTcgMjEuNSA1VjEzLjg3MjJDMjEuMTk2NiAxMy41NzMgMjAuODYxNCAxMy4zMDU4IDIwLjUgMTMuMDc2MlY5LjVIMTUuNVYxMi40MTUxQzE1LjE1MiAxMi41MjM1IDE0LjgxNzYgMTIuNjYyOCAxNC41IDEyLjgyOTdWOS41SDkuNVYxNEgxMi45NDg1QzEyLjkwNTcgMTQuMDQ0OCAxMi44NjM2IDE0LjA5MDIgMTIuODIyMiAxNC4xMzYzQzEyLjU4MjEgMTQuNDAzNiAxMi4zNjU2IDE0LjY5MjYgMTIuMTc2MSAxNUg5LjVWMTkuNUgxMS40NDA5QzExLjUyMDcgMTkuODQ1NyAxMS42MzA0IDIwLjE4IDExLjc2NzIgMjAuNUg0QzMuMTcxNTcgMjAuNSAyLjUgMTkuODI4NCAyLjUgMTlWNVpNNCA0LjVDMy43MjM4NiA0LjUgMy41IDQuNzIzODYgMy41IDVWOC41SDIwLjVWNUMyMC41IDQuNzIzODYgMjAuMjc2MSA0LjUgMjAgNC41SDRaTTMuNSAxNFY5LjVIOC41VjE0SDMuNVpNMy41IDE5VjE1SDguNVYxOS41SDRDMy43MjM4NiAxOS41IDMuNSAxOS4yNzYxIDMuNSAxOVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0yMS41NzM4IDE4LjA3NjRDMjEuNTczOCAyMC40MTcxIDE5LjY1NDQgMjIuMzE0NiAxNy4yODY5IDIyLjMxNDZDMTYuNTE5MSAyMi4zMTQ2IDE1Ljc5ODUgMjIuMTE1MSAxNS4xNzUyIDIxLjc2NTZDMTQuMDc3OCAyMS4xNTAzIDEzLjI4MiAyMC4wNzAzIDEzLjA2MTYgMTguNzk2MkMxMy4wMjExIDE4LjU2MjIgMTMgMTguMzIxNyAxMyAxOC4wNzY0QzEzIDE2Ljk4ODEgMTMuNDE0OSAxNS45OTU3IDE0LjA5NjggMTUuMjQ1MUMxNC44ODE2IDE0LjM4MTQgMTYuMDIwMSAxMy44MzgxIDE3LjI4NjkgMTMuODM4MUMxOS42NTQ0IDEzLjgzODEgMjEuNTczOCAxNS43MzU3IDIxLjU3MzggMTguMDc2NFoiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTkuMDAxOSAxOC4wNzY0SDE3LjI4NzFWMTYuMzgxMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=';
9
+
10
+ export const table24 =
11
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjYiIGZpbGw9IiMxNUMzOTEiLz4KPHJlY3QgeD0iMS41IiB5PSI4IiB3aWR0aD0iMjEiIGhlaWdodD0iMTMiIGZpbGw9InVybCgjcGF0dGVybjApIi8+CjxwYXRoIGQ9Ik04LjUgOFYyMiIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxwYXRoIGQ9Ik0xNS41IDhWMjIiIHN0cm9rZT0iIzlDQTNBRiIvPgo8cGF0aCBkPSJNMjIuNSAxMi41TDEuNSAxMi41IiBzdHJva2U9IiM5Q0EzQUYiLz4KPHBhdGggZD0iTTIyLjUgOEwxLjUgOCIgc3Ryb2tlPSIjMDk4ODY0Ii8+CjxwYXRoIGQ9Ik0yMi41IDE3SDEuNSIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjE5LjUiIHJ4PSIwLjgzMzMzMyIgc3Ryb2tlPSIjNkI3MjgwIi8+CjxkZWZzPgo8cGF0dGVybiBpZD0icGF0dGVybjAiIHBhdHRlcm5Db250ZW50VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KPHVzZSB4bGluazpocmVmPSIjaW1hZ2UwXzE5MThfNTgzNzciIHRyYW5zZm9ybT0ibWF0cml4KDAuMDE1ODczIDAgMCAwLjAyNTY0MSAtMC4wMDc5MzY1MSAwKSIvPgo8L3BhdHRlcm4+CjxpbWFnZSBpZD0iaW1hZ2UwXzE5MThfNTgzNzciIHdpZHRoPSI2NCIgaGVpZ2h0PSIzOSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUFuQ0FZQUFBQy9tRTQ4QUFBQUNYQklXWE1BQUNFNEFBQWhPQUZGbGpGZ0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQVZHU1VSQlZIZ0JsVmdMY3VVNENBVEg5OTY5Ymk0UjV0a2xsS2JWeUk2cnBwd25JVDROTlBLNGZaN3Y3Ky8vZm41Ky92LzhHWjkvSGhGMkhFZDgxdng2Zng2LzVLNTFkNzlsVER6WDNpV2I3eUZ2Y0xiSXd4cnJMSDRNV2FsUDZGaDBYZnRYTE1OM3kvM3I3QW5PRjRYWHY0L3hzZVdMREFSc1lEQmxQV1ZSUHozaFloRWRCSHMrL0prQTJ5K0lKZWlCUHZwM3I0OVlwdTdVdndDQXYrRzlHR1kwVVk2Q0NUS2FNczRCZDJDQUwyZ0x6emxXWDRLR1o0WGNid1Y4MEVuVVBKRzZoQUMxNnNrYWVMN1p3UVJwR2pVS0ZrdWExaERNRVBweHo5UGZQRE1TaXVCajhtYWxKd0JaeXFwa01QWWdweDJNeEpDYi9XdUVXZXFBUlZrZEFHcEFKZ1BQSmgrQlRnUW8wTC94UnB1cEowNEtrRXVtbEV2MkZ4dk52VFQ4SVp3bEEvQTM5cXdUT0U1eWhlQWNPRWRrbCsyZ1R0VjZ0eHhXd0dKRUhKYkV4VDM1OWZXbHVPRHQ4NG9Qd05mcEp4RnlDZ1cyQmR0SkFPNHhBVUxzUkJtSFVHTFdPWXJ5cVRmTEZwazdBWWZxS3FNVW5GWGoxMFhHT2ZCTTRuQzVKb2Fud0N4NTdDTUlxaWdacE1NZVRSa0NJZlZpVUlvOEhjWmRJU3g4Q3hES21sRkxjQlhrKzJ5Y1EwRkdIamtCaVE4WkdFRUxJcU13S2xuSzNES0J1T3Z5Y21SUUdRd090VzRaOHloN29rSXFPMHZGZVNzRUJ6UDdQczRXZEhNZkFhTjNFSkFwR3dUSU1pV3NFdW1zdEhIVEswbmhsczF6YUtCVUFJMGdITjVUK2ZVSHNMeXhNUVNpZVlLRDlmVkdPVlhOUTc4dFZZREJpa2t1U1huME1STXBPZUE2ckhyZTF4aytleCtEc05xSHkxeTNKaWdub29LQXJBR1ZMenZCU1NONUUrZExTNTdzV0pjOTRkRFNMcmhuMEpjN2ZmaXhzM04yNkM4QkF5Qkd0bWNGQ0c0b25EQXJJQmVqZnZGaElOdlJpRUVSVHhUSFVoOEhxQUEycXg4NFRHd3BoL3NJSXB4aDBPY3Q4UWJnUE0rTFJHN2dockxDQ2VJckxNa2tBd3lVSFovUjB4RThRMnNsWTlESGFDUDdGL1VvWXJQVWd3a29HWU5XU1lCdkFQaTduL3NSMXJJTXNaU1F1ZVZOOEEzSnBRMWc5Rmw5cU0vcmxiYUFFREErQlFmd2hLazNRVnRKRDN2VEtWTVk0SklCMW1XLzVaNi9aeVVFZmIxQkVPNHJTYlk4NVhBQjg0WjhmUjJOM3Q0RURXYXQvYzVldzdtUHlrSHBCSkN6bGpmSkJFcjAvZ0l1M2dxeEdxRUtzU0lXQW1XUXFJS01PY0NkN3MzdTlYK0JDQWk4T3l5M1FpQkJkS2lVWVlKZy9kU1k4Z2srazV0NmFIOG1MZW9Vc2NrQlR3cUowUmRGSmxxSXh4eVJIT3NKWHk5ajZtNVNQc1BObGc4MTljMnd0RkR1bFRHNGdqZ3ppd3RJSnVyem1HV1lMTXNIQUxhTkNlNGdtYVdraGErZ2V2MGZJZGk4RjJYa2VNQjB2M2Q3dGxsM2VnZnRPYTNaSC9hdDJYT2hvOGdldEJDYnc3bVBseVIxemw0NDZjSXVrMnVJczI0MUVLV3pzeWxqTzJpaEo0RjNXV1ZEbldFT2hyT3psTzRmYkRDb0pzNVAyV09qd0lRaWRGUXFGR3RkdG5hT2R1V3V3T2pLWFAxR0hmZHpDQ1g4dU8zTHE4dXdrdDA1anVkUXRqdXpxd0tXN2RiblJXaFhLbDBKZHNBOGtSeTNnYkt4cTY0bllGaDIyMDZuclU0cjF1ZkRxa1Q5NFhkWEFlaGs1N2pSdW0xOGZsTnA4OEVLZUdMeXB3QzdwNnVXM1pqTmQyeCtzN3phZS9UcklFVzdIc3UxdjQ2L0hRbHg5anNPZVpvRWlqczZtMFd1dXdoMWluaGs3UkR2cXVvcG8vSHdOanFQZmxtanE2MmEwL1R6aEdMWHR5ajdwaHhkNk1UMUp6MVA3ZEQ1TngrdWdIaGhUTDEzanJ4cGw2ZE1tZERIWjd0eld3Q1B6VUZsbEM4d3ZLOGM2ZHBGVlpTUzZ4NVZMVy9BS1hzSE9mQ0VKdjdlVllBMHR0SGJFYUM2YUhtenZ4dTdiZzJwdjUwQ3ltZzBzcnltZ252VEZzb25QTU9Fdk9Pa1Z2OGhGQ3Rsdk02T2RSUERiRTlvS2tNZFdIeG05NmdreWVTZWpVRFh0enUwZDhaMmJkSlZVamNtelhvdzM4clB2LzhCVFE1UlZEbE9WNXNBQUFBQVNVVk9SSzVDWUlJPSIvPgo8L2RlZnM+Cjwvc3ZnPgo=';
12
+
13
+ export const custom24 =
14
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxwYXRoIGQ9Ik0xNC4zMzMzIDFIM1YyM0gyMFY2LjgyMzUzTDE0LjMzMzMgMVoiIGZpbGw9InVybCgjcGF0dGVybjApIi8+CjxwYXRoIGQ9Ik02IDEwSDEyIiBzdHJva2U9IiM5Q0EzQUYiLz4KPHBhdGggZD0iTTYgMTNIMTIiIHN0cm9rZT0iIzlDQTNBRiIvPgo8cGF0aCBkPSJNMTUgMVY3SDIwLjUiIHN0cm9rZT0iIzlDQTNBRiIvPgo8cGF0aCBkPSJNMTQuNDgxNSAxSDQuMzMzMzNDMy44NzMxIDEgMy41IDEuMzczMSAzLjUgMS44MzMzM1YyMi4xNjY3QzMuNSAyMi42MjY5IDMuODczMSAyMyA0LjMzMzMzIDIzSDE5LjY2NjdDMjAuMTI2OSAyMyAyMC41IDIyLjYyNjkgMjAuNSAyMi4xNjY3VjcuMTYyMDZDMjAuNSA2Ljk0NDk5IDIwLjQxNTMgNi43MzY0OCAyMC4yNjM5IDYuNTgwOTFMMTUuMDc4NyAxLjI1MjE4QzE0LjkyMTggMS4wOTA5NSAxNC43MDY0IDEgMTQuNDgxNSAxWiIgc3Ryb2tlPSIjNkI3MjgwIi8+CjxwYXRoIGQ9Ik0yMC4xOTI0IDEwTDIzLjAyMDggMTIuODI4NEwyMS44NDkyIDE0TDE1Ljk4OSAxOS44NjAyTDEzLjE2MDYgMTcuMDMxOEwxOSAxMS4xOTI0TDIwLjE5MjQgMTBaIiBmaWxsPSIjREVFOUZFIi8+CjxwYXRoIGQ9Ik0xNS45ODkgMTkuODYwMkwxMy4xNjA2IDE3LjAzMThNMTUuOTg5IDE5Ljg2MDJMMTIuNDE0MiAyMC42MDY2TDEzLjE2MDYgMTcuMDMxOE0xNS45ODkgMTkuODYwMkwyMS44NDkyIDE0TTEzLjE2MDYgMTcuMDMxOEwxOSAxMS4xOTI0TTE5IDExLjE5MjRMMjAuMTkyNCAxMEwyMy4wMjA4IDEyLjgyODRMMjEuODQ5MiAxNE0xOSAxMS4xOTI0TDIxLjg0OTIgMTQiIHN0cm9rZT0iIzRCNTU2MyIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8ZGVmcz4KPHBhdHRlcm4gaWQ9InBhdHRlcm4wIiBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+Cjx1c2UgeGxpbms6aHJlZj0iI2ltYWdlMF8xOTE4XzU4NDE0IiB0cmFuc2Zvcm09InNjYWxlKDAuMDI5NDExOCAwLjAyMjcyNzMpIi8+CjwvcGF0dGVybj4KPGltYWdlIGlkPSJpbWFnZTBfMTkxOF81ODQxNCIgd2lkdGg9IjM0IiBoZWlnaHQ9IjQ0IiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNJQUFBQXNDQVlBQUFBQVRXcXlBQUFBQ1hCSVdYTUFBQllsQUFBV0pRRkpVaVR3QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBTnhTVVJCVkhnQnBWZE5ibU1oRExaZm8wcmR0WnR1cDFlWUkzUU9Qbk9GSGlHenJOUWZSVzBYVVpMSHdBdnd6SWNOVElvVUFjL0dmTmlmRGVIbjUrZVptY2s1eDBUay9JLzltS1pwY3ZNOGMraWpMT2lRMTExMFNHbEJGblJqdi9QOTQvMzkvUk1OdENtc2lrYkM1a1cvaWpoL1Q3SzBjZndWdXJHLzlmMmY5L2YzaDFFZ2FMd2FCNitrUG4yL3VycHlDdEFNS3Y1dWo4Zmo3eEV3L1BMeTRtSm9XbnBtT0JiaE9XUzE4WE1ZUTl0NmtML3U3dTYybGcxK2ZYMmQweVlweHFieWFqZ0JaN0hHd1J4YkFQTm9nZUczdHpmWDJyZ0JyUEpTQWlyV1NKM2crYisrVjhGTUdnOFNBU25HWDhUZWFZU1daQTAvWVF2bEQ3NVhDVHdKRXJKWXhMaEJOTDVNRkZKV21ZWTJoZnlIQm9aM3U1MUxaSk9oVU54TUErRXFkRHE2VzErbmNwajQ0K05qMXBRbE1Ta1d1WlJkb3M4YlN0QXlDeEdVQk9mNzdmWDE5ZVBOemMyV1B6OC81NmdRWllWSFdHN1lPcjJZOTBvQmVuNTdPQngrQmlET1VwYW5SSENqWUJBWWxJQzA1b20vdnI1U2h1U05MVU9hVWVsTkRYaXZMaVg1UmxURXpIQ3NsSkxJTE80Wk9hZTFLR0pZbTRkSTE4WW1wRlU4U1ZaT055NFl4Sk1WTnpPQ2kzWUswdko2eXhmckY5bCt2M2NDU01VQlNXTEpHeEZyTnVRcFhDekJLUE9sYmRDZDBvMnlUNmVSQUFDa0RDOTZ4bUg0MGp5RDhxa3pTeVh3RG1rRlRza1NMUk9Ld3dIZy9Kd0lqNjlsN044TE05WU9XbHN6aFJWaVY3Vkg4Vm9SMG55NDArazBTemNaUnJVM1IrRnVXbTlhL0U0Z1h6OUV3RXM0UFJCbmJZUkZDaHZXRnppeFJtcXlEcmI0RHhWa3cvaGozS25tVnY2T0hrWmdrb3RoTWhPcHowRGNrQ3dBRnpUa0NVOVV4clc0Y1pXeG81SUwycnBSQUhMdUpoQzBUc21OYjFXbUdYUDBhUDVOaXJKbVNKNmtCVnJ6akFZU283QjRwQmR2YnNnbFNLTGE1YWlyaFhzWjU2eHBOSzB1akpDMUZSSTV6bG5qQmpld2lJYWJ0WUNadGpkQ3FkZTRNKzhCMENwdHRqTlJ6V0JVeE1YL203WVdnQ1E3Lyswd09QTGRnaVUzNUk3TythbG9LUFJTazZsOXlZMGVKT3VrMEl5NG1odTl4WjlSMis2UzlKV2VzRHd5MGdxdkpZOGtRYTh5eW5uTEk5cW1MYnRPWG5xdHJNSHZDTm9pUEZGZHhMUytLR2hXMWJ1RWhHUUEweXJzMGlZeDF1NkJGZ2xUajJQcjltM2VWOGdSellEV05LQVdWNnkzYTFWWmU2ZlhtaGJPMXJwZURTcEMwL1BJcU9jdXlyeU5vZXdHRnBNeEp3TllVMjh5RnVLYkZPVUlRaEoxaE9CVi93OEhNOU1FTWRYSmZnQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==';
15
+
16
+ export const column24 =
17
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjYiIGZpbGw9IiM3RkJFRjAiLz4KPHJlY3QgeD0iMS41IiB5PSI4IiB3aWR0aD0iMjEiIGhlaWdodD0iMTMiIGZpbGw9InVybCgjcGF0dGVybjApIi8+CjxwYXRoIGQ9Ik03LjUgOFYyMiIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxwYXRoIGQ9Ik0xOCAxMS41SDEyIiBzdHJva2U9IiM5Q0EzQUYiLz4KPHBhdGggZD0iTTIyIDhMMSA4IiBzdHJva2U9IiM0ODgxQUYiLz4KPHBhdGggZD0iTTE4IDE3LjVIMTIiIHN0cm9rZT0iIzlDQTNBRiIvPgo8cGF0aCBkPSJNMTggMTQuNUgxMiIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjE5LjUiIHJ4PSIwLjgzMzMzMyIgc3Ryb2tlPSIjNkI3MjgwIi8+CjxkZWZzPgo8cGF0dGVybiBpZD0icGF0dGVybjAiIHBhdHRlcm5Db250ZW50VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KPHVzZSB4bGluazpocmVmPSIjaW1hZ2UwXzE5MThfNTgzODYiIHRyYW5zZm9ybT0ibWF0cml4KDAuMDE1ODczIDAgMCAwLjAyNTY0MSAtMC4wMDc5MzY1MSAwKSIvPgo8L3BhdHRlcm4+CjxpbWFnZSBpZD0iaW1hZ2UwXzE5MThfNTgzODYiIHdpZHRoPSI2NCIgaGVpZ2h0PSIzOSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUFuQ0FZQUFBQy9tRTQ4QUFBQUNYQklXWE1BQUNFNEFBQWhPQUZGbGpGZ0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQVZHU1VSQlZIZ0JsVmdMY3VVNENBVEg5OTY5Ymk0UjV0a2xsS2JWeUk2cnBwd25JVDROTlBLNGZaN3Y3Ky8vZm41Ky92LzhHWjkvSGhGMkhFZDgxdng2Zng2LzVLNTFkNzlsVER6WDNpV2I3eUZ2Y0xiSXd4cnJMSDRNV2FsUDZGaDBYZnRYTE1OM3kvM3I3QW5PRjRYWHY0L3hzZVdMREFSc1lEQmxQV1ZSUHozaFloRWRCSHMrL0prQTJ5K0lKZWlCUHZwM3I0OVlwdTdVdndDQXYrRzlHR1kwVVk2Q0NUS2FNczRCZDJDQUwyZ0x6emxXWDRLR1o0WGNid1Y4MEVuVVBKRzZoQUMxNnNrYWVMN1p3UVJwR2pVS0ZrdWExaERNRVBweHo5UGZQRE1TaXVCajhtYWxKd0JaeXFwa01QWWdweDJNeEpDYi9XdUVXZXFBUlZrZEFHcEFKZ1BQSmgrQlRnUW8wTC94UnB1cEowNEtrRXVtbEV2MkZ4dk52VFQ4SVp3bEEvQTM5cXdUT0U1eWhlQWNPRWRrbCsyZ1R0VjZ0eHhXd0dKRUhKYkV4VDM1OWZXbHVPRHQ4NG9Qd05mcEp4RnlDZ1cyQmR0SkFPNHhBVUxzUkJtSFVHTFdPWXJ5cVRmTEZwazdBWWZxS3FNVW5GWGoxMFhHT2ZCTTRuQzVKb2Fud0N4NTdDTUlxaWdacE1NZVRSa0NJZlZpVUlvOEhjWmRJU3g4Q3hES21sRkxjQlhrKzJ5Y1EwRkdIamtCaVE4WkdFRUxJcU13S2xuSzNES0J1T3Z5Y21SUUdRd090VzRaOHloN29rSXFPMHZGZVNzRUJ6UDdQczRXZEhNZkFhTjNFSkFwR3dUSU1pV3NFdW1zdEhIVEswbmhsczF6YUtCVUFJMGdITjVUK2ZVSHNMeXhNUVNpZVlLRDlmVkdPVlhOUTc4dFZZREJpa2t1U1huME1STXBPZUE2ckhyZTF4aytleCtEc05xSHkxeTNKaWdub29LQXJBR1ZMenZCU1NONUUrZExTNTdzV0pjOTRkRFNMcmhuMEpjN2ZmaXhzM04yNkM4QkF5Qkd0bWNGQ0c0b25EQXJJQmVqZnZGaElOdlJpRUVSVHhUSFVoOEhxQUEycXg4NFRHd3BoL3NJSXB4aDBPY3Q4UWJnUE0rTFJHN2dockxDQ2VJckxNa2tBd3lVSFovUjB4RThRMnNsWTlESGFDUDdGL1VvWXJQVWd3a29HWU5XU1lCdkFQaTduL3NSMXJJTXNaU1F1ZVZOOEEzSnBRMWc5Rmw5cU0vcmxiYUFFREErQlFmd2hLazNRVnRKRDN2VEtWTVk0SklCMW1XLzVaNi9aeVVFZmIxQkVPNHJTYlk4NVhBQjg0WjhmUjJOM3Q0RURXYXQvYzVldzdtUHlrSHBCSkN6bGpmSkJFcjAvZ0l1M2dxeEdxRUtzU0lXQW1XUXFJS01PY0NkN3MzdTlYK0JDQWk4T3l5M1FpQkJkS2lVWVlKZy9kU1k4Z2srazV0NmFIOG1MZW9Vc2NrQlR3cUowUmRGSmxxSXh4eVJIT3NKWHk5ajZtNVNQc1BObGc4MTljMnd0RkR1bFRHNGdqZ3ppd3RJSnVyem1HV1lMTXNIQUxhTkNlNGdtYVdraGErZ2V2MGZJZGk4RjJYa2VNQjB2M2Q3dGxsM2VnZnRPYTNaSC9hdDJYT2hvOGdldEJDYnc3bVBseVIxemw0NDZjSXVrMnVJczI0MUVLV3pzeWxqTzJpaEo0RjNXV1ZEbldFT2hyT3psTzRmYkRDb0pzNVAyV09qd0lRaWRGUXFGR3RkdG5hT2R1V3V3T2pLWFAxR0hmZHpDQ1g4dU8zTHE4dXdrdDA1anVkUXRqdXpxd0tXN2RiblJXaFhLbDBKZHNBOGtSeTNnYkt4cTY0bllGaDIyMDZuclU0cjF1ZkRxa1Q5NFhkWEFlaGs1N2pSdW0xOGZsTnA4OEVLZUdMeXB3QzdwNnVXM1pqTmQyeCtzN3phZS9UcklFVzdIc3UxdjQ2L0hRbHg5anNPZVpvRWlqczZtMFd1dXdoMWluaGs3UkR2cXVvcG8vSHdOanFQZmxtanE2MmEwL1R6aEdMWHR5ajdwaHhkNk1UMUp6MVA3ZEQ1TngrdWdIaGhUTDEzanJ4cGw2ZE1tZERIWjd0eld3Q1B6VUZsbEM4d3ZLOGM2ZHBGVlpTUzZ4NVZMVy9BS1hzSE9mQ0VKdjdlVllBMHR0SGJFYUM2YUhtenZ4dTdiZzJwdjUwQ3ltZzBzcnltZ252VEZzb25QTU9Fdk9Pa1Z2OGhGQ3Rsdk02T2RSUERiRTlvS2tNZFdIeG05NmdreWVTZWpVRFh0enUwZDhaMmJkSlZVamNtelhvdzM4clB2LzhCVFE1UlZEbE9WNXNBQUFBQVNVVk9SSzVDWUlJPSIvPgo8L2RlZnM+Cjwvc3ZnPgo=';
@@ -0,0 +1 @@
1
+ export const hotspot = "data:image/svg+xml;charset=utf-8;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguNDc5MDUgMTguMzMzNEg4LjIyOTE5QzcuNDI0MTkgMTguMDY1IDYuNjc5MzcgMTcuNzM3MyA2LjAxNTYyIDE3LjM1OTVDNS42Nzg5MyAxNy4xNjg3IDUuMzU0MTcgMTYuOTU3NSA1LjA0MzEzIDE2LjcyNzJDNC43NDI1IDE2LjUwNDUgNC40NTgyOSAxNi4yNjA1IDQuMTkyNzEgMTUuOTk3QzQuMDYzMzcgMTUuODY4IDMuOTM5MzMgMTUuNzMzOSAzLjgyMDkgMTUuNTk0OUMzLjcwNDAxIDE1LjQ1NzYgMy41OTMxOSAxNS4zMTUyIDMuNDg4NzYgMTUuMTY4MkMzLjM4NTI2IDE1LjAyMjIgMy4yODg2OSAxNC44NzE1IDMuMTk5MzYgMTQuNzE2NkMzLjExMDI5IDE0LjU2MTkgMy4wMjg5OCAxNC40MDI4IDIuOTU1NzIgMTQuMjQwMUMyLjgwNzI4IDEzLjkxMDIgMi42OTQwOCAxMy41NjU2IDIuNjE3OTkgMTMuMjEyQzIuNTc4OSAxMy4wMjk4IDIuNTQ5NTMgMTIuODQ1NiAyLjUzIDEyLjY2MDNDMi41MDk5NCAxMi40Njg2IDIuNDk5OTMgMTIuMjc2MSAyLjUgMTIuMDgzM0MyLjUgMTEuODk2OSAyLjUwNTk4IDExLjcxMjggMi41MTc3OCAxMS41MzYzQzIuNTI4OTggMTEuMzY2NyAyLjU0NjI2IDExLjE5NzYgMi41Njk1NiAxMS4wMjkyQzIuNTkxNDcgMTAuODcxNiAyLjYxOTM0IDEwLjcxNSAyLjY1MzEzIDEwLjU1OTVDMi42ODUwNSAxMC40MTMxIDIuNzIyNzggMTAuMjY3OSAyLjc2NjIzIDEwLjEyNDVDMi44MDc1NyA5Ljk4ODI5IDIuODU0MzkgOS44NTM4MSAyLjkwNjU5IDkuNzIxMzhDMi45NTY2OCA5LjU5NDYyIDMuMDExODUgOS40Njk5NCAzLjA3MTk5IDkuMzQ3NjNDMy4xMzAxNSA5LjIyOTUyIDMuMTkyOTIgOS4xMTM3MiAzLjI2MDE0IDkuMDAwNTFDMy4zMjU3MiA4Ljg5MDI3IDMuMzk1MzIgOC43ODI0NyAzLjQ2ODgxIDguNjc3MzRDMy42MTI2NCA4LjQ3MjMzIDMuNzY5NTggOC4yNzY4NSAzLjkzODY3IDguMDkyMTJDNC4wOTU4MSA3LjkxOTQzIDQuMjY3NSA3Ljc0ODggNC40NjM1NSA3LjU3MDQ5QzQuODI3ODEgNy4yMzkxOCA1LjIyMzU3IDYuOTMwNjMgNS42MDYyOSA2LjYzMjI2QzUuOTY2NTUgNi4zNTEzOSA2LjMzOTA4IDYuMDYwOTcgNi42ODYyOSA1Ljc1MDlDNi44NzMyOCA1LjU4NDAzIDcuMDM4MTEgNS40MjQ5MyA3LjE5MDE5IDUuMjY0NzNDNy4zNTM1OSA1LjA5MzUxIDcuNTA3MTMgNC45MTMxNCA3LjY1MDA2IDQuNzI0NDlDNy45NTQ3NiA0LjMyMzkxIDguMTk5ODkgMy44ODEzNCA4LjM3NzgyIDMuNDEwNTVDOC40NzY5NyAzLjE0NzAxIDguNTU2NTEgMi44NzY1IDguNjE1NzkgMi42MDEyNEM4LjY4MTcgMi4yOTMxMyA4LjcyNjUzIDEuOTgwODkgOC43NDk5OSAxLjY2NjY5TDguNzUwNTEgMS42NjY4NEM4Ljc2NjIgMS42NzE4MSA4Ljg1MTMzIDEuNjk5MjcgOC45ODY2MyAxLjc1MTQ2QzkuMTIzMjQgMS44MDQxNCA5LjM0MDU3IDEuODkzNTggOS42MDAwMyAyLjAyMDQ2QzkuODkwNzEgMi4xNjI1NSAxMC4xNzMgMi4zMjEyOCAxMC40NDU0IDIuNDk1ODVDMTAuNzc0IDIuNzA1ODUgMTEuMDg1OCAyLjk0MTE5IDExLjM3NzggMy4xOTk3QzEyLjA5NiAzLjgzODc0IDEyLjYxNjUgNC41NzI3MyAxMi45MjQ3IDUuMzgxM0MxMy4wMTQzIDUuNjE2NTIgMTMuMDg2MSA1Ljg1ODEyIDEzLjEzOTYgNi4xMDQwNkMxMy4xOTY1IDYuMzY3MjggMTMuMjMzMyA2LjYzNDQ2IDEzLjI0OTYgNi45MDMyN0MxMy4yNjY5IDcuMTk2MDEgMTMuMjYyNSA3LjQ4OTY0IDEzLjIzNjUgNy43ODE3M0MxMy4yMDczIDguMTA1MDQgMTMuMTU1NyA4LjQyNTk1IDEzLjA4MjIgOC43NDIxNkMxMy4yMTc4IDguNjMyNDEgMTMuMzQ2MyA4LjUxNDI1IDEzLjQ2NyA4LjM4ODM4QzEzLjYwMSA4LjI1MTUxIDEzLjczMzYgOC4xMDI2NyAxMy44NjEzIDcuOTQ2MTdDMTQuMDIyOCA3Ljc0NzkgMTQuMTczNiA3LjU0MTI1IDE0LjMxMzMgNy4zMjcwNkwxNC4zMTM2IDcuMzI3MjVDMTQuMzMyIDcuMzQyMDQgMTQuNTAwOCA3LjQ3ODc1IDE0Ljc0NjEgNy43MjAxNUMxNC44OTY5IDcuODY4NSAxNS4wNDYxIDguMDI2MzggMTUuMTg5NyA4LjE4OTM5QzE1LjM2ODUgOC4zOTIyNCAxNS41MzgyIDguNjAyOTEgMTUuNjk4MyA4LjgyMDc4QzE2LjEwMDMgOS4zNjg1MiAxNi40MjA3IDkuOTM3MjEgMTYuNjUwNCAxMC41MTFDMTYuNzE2MyAxMC42NzU1IDE2Ljc3NTQgMTAuODQyNiAxNi44Mjc2IDExLjAxMTlDMTYuODgxMSAxMS4xODU5IDE2LjkyNjcgMTEuMzYyMyAxNi45NjQyIDExLjU0MDRDMTcuMDAyNiAxMS43MjM2IDE3LjAzMiAxMS45MDg2IDE3LjA1MjEgMTIuMDk0N0MxNy4wNzI4IDEyLjI4NjggMTcuMDgzMiAxMi40Nzk4IDE3LjA4MzMgMTIuNjcyOUMxNy4wODMzIDEyLjgwOTYgMTcuMDc2MSAxMi45NDYxIDE3LjA2MTcgMTMuMDgyQzE3LjA0NzIgMTMuMjE2OSAxNy4wMjU2IDEzLjM1MSAxNi45OTY4IDEzLjQ4MzdDMTYuOTY3NyAxMy42MTY5IDE2LjkzMTYgMTMuNzQ4NSAxNi44ODg2IDEzLjg3OEMxNi44NDQ3IDE0LjAwOTUgMTYuNzk0MiAxNC4xMzg2IDE2LjczNzEgMTQuMjY0OUMxNi42Nzk3IDE0LjM5MjEgMTYuNjE0MSAxNC41MTk4IDE2LjU0MjMgMTQuNjQ0NUMxNi40NzA1IDE0Ljc2OTIgMTYuMzkwNSAxNC44OTQ0IDE2LjMwNDIgMTUuMDE2N0MxNi4xMjE4IDE1LjI3MzIgMTUuOTE5MiAxNS41MTQ4IDE1LjY5ODMgMTUuNzM5QzE1LjQ1NCAxNS45ODY3IDE1LjE5MzggMTYuMjE4MSAxNC45MTkzIDE2LjQzMThDMTQuNjEzOCAxNi42Njk1IDE0LjI5NiAxNi44OTA5IDEzLjk2NzEgMTcuMDk1MUMxMy42MjI1IDE3LjMxMDMgMTMuMjQzOSAxNy41MjM1IDEyLjg0MTkgMTcuNzI4OUMxMi40Mzk4IDE3LjkzNDIgMTIuMDAzIDE4LjEzNzYgMTEuNTQzNSAxOC4zMzMySDExLjA5NUMxMS4xOTAxIDE4LjE4OTcgMTEuMjc3NiAxOC4wNDEzIDExLjM1NzEgMTcuODg4NUMxMS40NDE5IDE3LjcyOCAxMS41MTk3IDE3LjU2MzcgMTEuNTkgMTcuMzk2M0MxMS42NzQ2IDE3LjE5NTYgMTEuNzQ3IDE2Ljk5IDExLjgwNjcgMTYuNzgwNkMxMS45NTE5IDE2LjI2NyAxMS45OTY0IDE1Ljc4NTIgMTEuOTM4OSAxNS4zNDgzQzExLjg3MjEgMTQuODEyNCAxMS42Mjk1IDE0LjMxMzkgMTEuMjQ4OSAxMy45MzA4QzEwLjk3MjUgMTMuNjY4NSAxMC43MTYzIDEzLjM4NTcgMTAuNDgyNSAxMy4wODQ3QzEwLjI5NyAxMi44NDU1IDEwLjEzMzUgMTIuNTkwMSA5Ljk5Mzg0IDEyLjMyMTZDOS43NzY4NyAxMS44OTc4IDkuNjU1NDYgMTEuNDgwNCA5LjYzMzEzIDExLjA4MUM5LjYyNDIgMTAuOTI3NyA5LjYzMDg0IDEwLjc3MzkgOS42NTI5NyAxMC42MjE5QzkuNjY5ODIgMTAuNTA2NiA5LjY5Njk4IDEwLjM5MyA5LjczNDEyIDEwLjI4MjZDOS43NjU2OSAxMC4xODM0IDkuODA5MyAxMC4wODg2IDkuODYzOTYgMTBDOS44NjI2MSAxMC4wMDA3IDkuNjk2NTQgMTAuMDgxOSA5LjQ0ODgzIDEwLjIzNDRDOS4zMDAxOCAxMC4zMjYxIDkuMTU0NyAxMC40MjI4IDkuMDEyNjQgMTAuNTI0NEM4LjgzNTI1IDEwLjY1MTIgOC42NjM0IDEwLjc4NTUgOC40OTc1NiAxMC45MjdDOC4wODI1MSAxMS4yODE2IDcuNzMwNTEgMTEuNjYzMyA3LjQ1MTMxIDEyLjA2MTNDNy4xMDIzMyAxMi41NTkgNi44NjY4MyAxMy4wODM4IDYuNzUxMzEgMTMuNjIxM0M2LjQzMjMgMTUuMTA1OCA3LjAxMzU5IDE2LjY5MTEgOC40Nzg5OSAxOC4zMzMyTDguNDc5MDUgMTguMzMzNFoiIGZpbGw9IiNFRjQ0NDQiLz4KPC9zdmc+Cg=="
@@ -0,0 +1,14 @@
1
+ // 放大
2
+ export const zoomInSVG =
3
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9ImFkZC1MLWxpbmUiPgo8cGF0aCBpZD0iSWNvbiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS41IDExLjVWNEgxMi41VjExLjVIMjBWMTIuNUgxMi41VjIwSDExLjVWMTIuNUg0VjExLjVIMTEuNVoiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPC9zdmc+Cg==';
4
+
5
+ // 缩小
6
+ export const zoomOutSVG =
7
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9InN1YnRyYWN0LUwtbGluZSI+CjxwYXRoIGlkPSJJY29uIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDExLjVWMTIuNUgzVjExLjVIMjFaIiBmaWxsPSJibGFjayIvPgo8L2c+Cjwvc3ZnPgo=';
8
+
9
+ // 重置定位
10
+ export const resetPositionSVG =
11
+ 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9ImNlbnRlci1jaXJjbGUtbGluZSI+CjxwYXRoIGlkPSJJY29uIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgNS4wMTc1OFY3SDEyLjVWNS4wMTc1OEMxNS45Njc1IDUuMjYyMyAxOC43Mzc3IDguMDMyNTEgMTguOTgyNCAxMS41SDE3VjEyLjVIMTguOTgyNEMxOC43Mzc3IDE1Ljk2NzUgMTUuOTY3NSAxOC43Mzc3IDEyLjUgMTguOTgyNFYxN0gxMS41VjE4Ljk4MjRDOC4wMzI1MSAxOC43Mzc3IDUuMjYyMyAxNS45Njc1IDUuMDE3NTggMTIuNUg3VjExLjVINS4wMTc1OEM1LjI2MjMgOC4wMzI1MSA4LjAzMjUxIDUuMjYyMyAxMS41IDUuMDE3NThaTTExLjUgNC4wMTUzN0M3LjQ3OTk5IDQuMjYzMjcgNC4yNjMyNyA3LjQ3OTk5IDQuMDE1MzcgMTEuNUgyVjEyLjVINC4wMTUzN0M0LjI2MzI3IDE2LjUyIDcuNDc5OTkgMTkuNzM2NyAxMS41IDE5Ljk4NDZWMjJIMTIuNVYxOS45ODQ2QzE2LjUyIDE5LjczNjcgMTkuNzM2NyAxNi41MiAxOS45ODQ2IDEyLjVIMjJWMTEuNUgxOS45ODQ2QzE5LjczNjcgNy40Nzk5OSAxNi41MiA0LjI2MzI3IDEyLjUgNC4wMTUzN1YySDExLjVWNC4wMTUzN1oiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPC9zdmc+Cg==';
12
+
13
+
14
+ export * from './big';
@@ -0,0 +1,196 @@
1
+ import { vec3 } from 'gl-matrix';
2
+ import { Cursor } from '@aloudata/ink/dist/displayObjects/types';
3
+ import {
4
+ Graph,
5
+ Group,
6
+ IBaseNodeConfig,
7
+ Path,
8
+ Rect,
9
+ BaseEdge,
10
+ bezierPath,
11
+ loopBackPath,
12
+ selfConnectPath,
13
+ } from '@aloudata/ink-graph-new';
14
+ import { InkLineageManager } from '../../manager';
15
+ import {
16
+ IColResBase,
17
+ IEdgeConfig,
18
+ TDataBase,
19
+ } from '../../types';
20
+
21
+ export interface IEdgeDataConfig {
22
+ name: string;
23
+ style: {
24
+ path: string;
25
+ fill: string;
26
+ stroke: string;
27
+ strokeDasharray: number[];
28
+ lineWidth: number;
29
+ zIndex: number;
30
+ cursor: Cursor;
31
+ markerMid?: Rect;
32
+ markerEnd?: Path;
33
+ markerEndOffset?: number;
34
+ };
35
+ }
36
+
37
+ export class DefaultEdge extends BaseEdge {
38
+ static lineageManager: InkLineageManager<TDataBase<IColResBase>, IColResBase>;
39
+
40
+ edgeConfig: IEdgeDataConfig;
41
+
42
+ get lineageManager(): InkLineageManager<TDataBase<IColResBase>, IColResBase> {
43
+ return DefaultEdge.lineageManager;
44
+ }
45
+
46
+ constructor(graph: Graph, config: IEdgeConfig) {
47
+ super(graph, config);
48
+ }
49
+
50
+ // 折叠边和普通边公用部分
51
+ renderContent(cfg: IEdgeConfig, container: Group) {
52
+ const { target, source, visible, style } = cfg;
53
+
54
+ if (visible === false) return;
55
+
56
+ const srcNodeConfig = this.lineageManager.getNodeConfigById(source);
57
+ const dstNodeConfig = this.lineageManager.getNodeConfigById(target);
58
+
59
+ if (!srcNodeConfig || !dstNodeConfig) return;
60
+
61
+ if (!visible || !srcNodeConfig?.visible || !dstNodeConfig?.visible) return;
62
+
63
+ const isSrcRelatedColumn = srcNodeConfig.isRelatedColumn;
64
+ const isDstRelatedColumn = dstNodeConfig.isRelatedColumn;
65
+
66
+ container.style.zIndex = style?.zIndex || -1;
67
+
68
+ const defaultPos = 0;
69
+ let srcTransform: vec3;
70
+ let dstTransform: vec3;
71
+
72
+ const srcParentNodeConfig = this.getParentNodeConfig(srcNodeConfig);
73
+ const dstParentNodeConfig = this.getParentNodeConfig(dstNodeConfig);
74
+ if (isSrcRelatedColumn && !srcParentNodeConfig) return;
75
+ if (isDstRelatedColumn && !dstParentNodeConfig) return;
76
+
77
+ const srcPositionX = isSrcRelatedColumn
78
+ ? srcNodeConfig.position.x + srcParentNodeConfig?.position?.x
79
+ : srcNodeConfig.position.x;
80
+
81
+ const srcPositionY = isSrcRelatedColumn
82
+ ? srcNodeConfig.position.y + 100 + 8 + srcParentNodeConfig?.position?.y
83
+ : srcNodeConfig.position.y;
84
+
85
+ const dstPositionX = isDstRelatedColumn
86
+ ? dstNodeConfig.position.x + dstParentNodeConfig?.position?.x
87
+ : dstNodeConfig.position.x;
88
+
89
+ const dstPositionY = isDstRelatedColumn
90
+ ? dstNodeConfig.position.y + 100 + 8 + dstParentNodeConfig?.position?.y
91
+ : dstNodeConfig.position.y;
92
+ srcTransform =
93
+ vec3.fromValues(srcPositionX, srcPositionY, 0) || vec3.create();
94
+ dstTransform =
95
+ vec3.fromValues(dstPositionX, dstPositionY, 0) || vec3.create();
96
+
97
+ // 剔除rootGroup的矩阵
98
+ let [rootX, rootY, rootScaleX, rootScaleY] = [0, 0, 1, 1];
99
+ const rootGroup = this.graph.rootGroup;
100
+ if (rootGroup && rootGroup.transformable) {
101
+ const rootGroupTrans = rootGroup.transformable;
102
+
103
+ rootScaleX = rootGroupTrans.scaling[0];
104
+ rootScaleY = rootGroupTrans.scaling[1];
105
+ rootX = rootGroupTrans.position[0];
106
+ rootY = rootGroupTrans.position[1];
107
+ }
108
+
109
+ const DEFAULT_ROOT_X = srcNodeConfig?.style?.width; // 目标节点的宽度
110
+
111
+ const DEFAULT_ROOT_Y =
112
+ (isSrcRelatedColumn
113
+ ? srcNodeConfig?.style?.height
114
+ : (srcNodeConfig?.style?.headerHeight as number)) / 2; // 目标节点一半的高度
115
+
116
+ const startXOffset = 0;
117
+
118
+ // 起点原始位置
119
+ const [srcX = defaultPos, srcY = defaultPos] = [
120
+ (srcTransform[0] + (DEFAULT_ROOT_X + startXOffset) * rootScaleX - rootX) /
121
+ rootScaleX,
122
+ (srcTransform[1] + DEFAULT_ROOT_Y * rootScaleY - rootY) / rootScaleY,
123
+ ];
124
+
125
+ // 终点原始位置
126
+ const target_height =
127
+ (isDstRelatedColumn
128
+ ? dstNodeConfig.style.height
129
+ : (dstNodeConfig.style?.headerHeight as number)) / 2; // 目标节点一半的高度
130
+
131
+ const [dstX = defaultPos, dstY = defaultPos] = [
132
+ (dstTransform[0] - rootX) / rootScaleX,
133
+ (dstTransform[1] + target_height * rootScaleY - rootY) / rootScaleY,
134
+ ];
135
+
136
+ const arrowOffsetX = 11;
137
+
138
+ const targetX = dstX - arrowOffsetX;
139
+ const targetY = dstY;
140
+ let d = '';
141
+ // 自环
142
+ if (srcNodeConfig.id === dstNodeConfig.id) {
143
+ d = selfConnectPath(srcX, srcY, dstX, dstY);
144
+ } else if (srcX > dstX) {
145
+ // 回环场景
146
+ d = loopBackPath(srcX, srcY, targetX, targetY);
147
+ // d += normalArrow;
148
+ } else {
149
+ // 普通场景
150
+ d = bezierPath(srcX, srcY, dstX, dstY);
151
+ // d += normalArrow;
152
+ }
153
+
154
+ if (!d) return;
155
+
156
+ const arrowConfig = {
157
+ name: 'arrow',
158
+ style: {
159
+ path: 'M 3,3 L -3,0 L 3,-3 Z',
160
+ anchor: '0.5 0.5',
161
+ transformOrigin: 'center',
162
+ fill: style?.stroke || '#B1B1B1',
163
+ stroke: style?.stroke || '#B1B1B1',
164
+ strokeDasharray: style?.strokeDasharray || [0],
165
+ lineWidth: style?.lineWidth || 1,
166
+ zIndex: style?.zIndex || -1,
167
+ cursor: 'pointer' as Cursor,
168
+ },
169
+ };
170
+ this.markerEnd = new Path(arrowConfig);
171
+
172
+ this.edgeConfig = {
173
+ name: 'big-edge',
174
+ style: {
175
+ path: d,
176
+ fill: style?.fill || 'rgb(255, 255, 255,0)',
177
+ stroke: style?.stroke || '#B1B1B1',
178
+ strokeDasharray: style?.strokeDasharray || [0],
179
+ lineWidth: style?.lineWidth || 1,
180
+ zIndex: style?.zIndex || -1,
181
+ cursor: 'pointer' as Cursor,
182
+ },
183
+ };
184
+
185
+ if (srcNodeConfig.id !== dstNodeConfig.id) {
186
+ this.edgeConfig.style.markerEnd = this.markerEnd;
187
+ this.edgeConfig.style.markerEndOffset = -3;
188
+ }
189
+ }
190
+
191
+ getParentNodeConfig(node: IBaseNodeConfig) {
192
+ let parentNode = this.graph.data.nodes.find((n) => n.id === node.tableId);
193
+
194
+ return parentNode;
195
+ }
196
+ }
@@ -0,0 +1,97 @@
1
+ import {
2
+ Graph,
3
+ Group,
4
+ Path,
5
+ Rect,
6
+ Text,
7
+ } from '@aloudata/ink-graph-new';
8
+ import { DefaultEdge } from './DefaultEdge';
9
+ import { IEdgeConfig } from '../../types';
10
+
11
+ export class FoldEdge extends DefaultEdge {
12
+ constructor(public graph: Graph, public config: IEdgeConfig) {
13
+ super(graph, config);
14
+ }
15
+
16
+ render(cfg: IEdgeConfig, container: Group) {
17
+ this.renderContent(cfg, container);
18
+
19
+ if (!this.edgeConfig) return;
20
+
21
+ const markerRect = new Rect({
22
+ name: 'edge-marker-rect',
23
+ style: {
24
+ width: 32,
25
+ height: 16,
26
+ fill: '#FEFAF1',
27
+ stroke: '#F28E2C',
28
+ lineWidth: 1,
29
+ radius: 3,
30
+ },
31
+ });
32
+
33
+ const { foldNodeId, foldTableId } = this.config;
34
+ const { foldStatusMap, foldNodesGroupMap } = this.lineageManager.foldLineageManager;
35
+ const foldNodeLen = foldNodesGroupMap.get(foldNodeId)?.foldNodes.length;
36
+ let markerText = new Text({
37
+ name: 'edge-marker-text',
38
+ style: {
39
+ text: `...${foldNodeLen}`,
40
+ x: 16,
41
+ y: 8,
42
+ textAlign: 'center',
43
+ textBaseline: 'middle',
44
+ fontSize: 11,
45
+ fontFamily: 'PingFang SC',
46
+ fill: '#F28E2C',
47
+ },
48
+ });
49
+ if (foldStatusMap.get(foldNodeId || foldTableId) === false) {
50
+ markerText = new Text({
51
+ name: 'edge-marker-text',
52
+ style: {
53
+ text: '收起',
54
+ x: 16,
55
+ y: 8,
56
+ textAlign: 'center',
57
+ textBaseline: 'middle',
58
+ fontSize: 11,
59
+ fontFamily: 'PingFang SC',
60
+ fill: '#F28E2C',
61
+ },
62
+ });
63
+ }
64
+
65
+ markerRect.appendChild(markerText);
66
+
67
+ this.edgeConfig.style.markerMid = markerRect;
68
+ const path = new Path(this.edgeConfig);
69
+ path.addEventListener('click', () => {
70
+ this.onMarkerMidClick();
71
+ });
72
+
73
+ this.path = path;
74
+ (path as any).node = this;
75
+
76
+ container.appendChild(path);
77
+ }
78
+
79
+ onMarkerMidClick() {
80
+ const key = this.id;
81
+ const { foldNodeId, foldTableId } = this.config;
82
+ const { foldStatusMap } = this.lineageManager.foldLineageManager;
83
+
84
+ const foldGroupKey = foldNodeId || foldTableId;
85
+ if (foldStatusMap.get(foldGroupKey) === false) {
86
+ this.lineageManager.foldNodeGroup(foldGroupKey, true);
87
+ this.lineageManager.update();
88
+ } else {
89
+ this.lineageManager.unfoldNodeGroup(key, false);
90
+ this.lineageManager.update();
91
+ }
92
+ }
93
+
94
+ onMarkerMidMouseEnter() {
95
+ this.config?.onMarkerMidMouseEnter?.(this);
96
+ }
97
+ }
@@ -0,0 +1,24 @@
1
+ import {
2
+ Graph,
3
+ Group,
4
+ Path,
5
+ } from '@aloudata/ink-graph-new';
6
+ import { DefaultEdge } from './DefaultEdge';
7
+ import { IEdgeConfig } from '../../types';
8
+
9
+ export class LineageEdge extends DefaultEdge {
10
+ constructor(public graph: Graph, public config: IEdgeConfig) {
11
+ super(graph, config);
12
+ }
13
+
14
+ render(cfg: IEdgeConfig, container: Group) {
15
+ this.renderContent(cfg, container);
16
+ if (!this.edgeConfig) return;
17
+
18
+ const path = new Path(this.edgeConfig);
19
+ this.path = path;
20
+ (path as any).node = this;
21
+
22
+ container.appendChild(path);
23
+ }
24
+ }
@@ -0,0 +1,3 @@
1
+ export * from './DefaultEdge';
2
+ export * from './FoldEdge';
3
+ export * from './LineageEdge';