@krainovsd/graph 0.6.1 → 0.8.0
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.
- package/lib/cjs/index.cjs +1098 -253
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/esm/index.js +3 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/lib/draw-time.js +25 -0
- package/lib/esm/lib/draw-time.js.map +1 -0
- package/lib/esm/lib/get-controls-info.js +541 -0
- package/lib/esm/lib/get-controls-info.js.map +1 -0
- package/lib/esm/module/GraphCanvas/GraphCanvas.js +365 -155
- package/lib/esm/module/GraphCanvas/GraphCanvas.js.map +1 -1
- package/lib/esm/module/GraphCanvas/constants/settings.js +26 -7
- package/lib/esm/module/GraphCanvas/constants/settings.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/settings/link-settings-getter.js +9 -4
- package/lib/esm/module/GraphCanvas/lib/settings/link-settings-getter.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/settings/node-settings-getter.js +10 -5
- package/lib/esm/module/GraphCanvas/lib/settings/node-settings-getter.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/animation-by-progress.js +12 -0
- package/lib/esm/module/GraphCanvas/lib/utils/animation-by-progress.js.map +1 -0
- package/lib/esm/module/GraphCanvas/lib/utils/calculate-link-position-by-radius.js +2 -2
- package/lib/esm/module/GraphCanvas/lib/utils/calculate-link-position-by-radius.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/get-particle-position.js +24 -0
- package/lib/esm/module/GraphCanvas/lib/utils/get-particle-position.js.map +1 -0
- package/lib/esm/module/GraphCanvas/lib/utils/is-node-visible.js +14 -0
- package/lib/esm/module/GraphCanvas/lib/utils/is-node-visible.js.map +1 -0
- package/lib/esm/module/GraphCanvas/lib/utils/link-iteration-extractor.js +1 -0
- package/lib/esm/module/GraphCanvas/lib/utils/link-iteration-extractor.js.map +1 -1
- package/lib/esm/module/GraphCanvas/lib/utils/node-iteration-extractor.js +1 -0
- package/lib/esm/module/GraphCanvas/lib/utils/node-iteration-extractor.js.map +1 -1
- package/lib/index.d.ts +84 -9
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-particle-position.js","sources":["../../../../../../src/module/GraphCanvas/lib/utils/get-particle-position.ts"],"sourcesContent":["import type { GraphParticle } from \"../../types\";\n\ntype GetParticlePositionOptions = {\n particle: GraphParticle;\n xStart: number;\n yStart: number;\n xEnd: number;\n yEnd: number;\n totalSteps: number;\n};\n\nexport function getParticlePosition(opts: GetParticlePositionOptions) {\n if (opts.particle.wait > 0) {\n opts.particle.wait--;\n\n return;\n }\n\n const remainingSteps = opts.totalSteps - opts.particle.step;\n const progress = opts.particle.step / opts.totalSteps;\n\n if (remainingSteps === 0) {\n opts.particle.x = opts.xEnd;\n opts.particle.y = opts.yEnd;\n opts.particle.step = 0;\n\n return;\n }\n\n const dx = opts.xEnd - opts.xStart;\n const dy = opts.yEnd - opts.yStart;\n\n const newX = opts.xStart + dx * progress;\n const newY = opts.yStart + dy * progress;\n\n opts.particle.x = newX;\n opts.particle.y = newY;\n opts.particle.step++;\n}\n"],"names":[],"mappings":"AAWM,SAAU,mBAAmB,CAAC,IAAgC,EAAA;IAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAEpB;;IAGF,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU;AAErD,IAAA,IAAI,cAAc,KAAK,CAAC,EAAE;QACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI;QAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;QAEtB;;IAGF,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM;IAClC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM;IAElC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ;AAExC,IAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;AACtB,IAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI;AACtB,IAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtB;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const ADDITIONAL_VIEWPORT = 10;
|
|
2
|
+
function isNodeVisible(opts) {
|
|
3
|
+
const left = -opts.transform.x / opts.transform.k;
|
|
4
|
+
const right = (opts.width - opts.transform.x) / opts.transform.k;
|
|
5
|
+
const top = -opts.transform.y / opts.transform.k;
|
|
6
|
+
const bottom = (opts.height - opts.transform.y) / opts.transform.k;
|
|
7
|
+
return (left < opts.x + opts.radius + ADDITIONAL_VIEWPORT &&
|
|
8
|
+
opts.x - opts.radius - ADDITIONAL_VIEWPORT < right &&
|
|
9
|
+
top < opts.y + opts.radius + ADDITIONAL_VIEWPORT &&
|
|
10
|
+
opts.y - opts.radius - ADDITIONAL_VIEWPORT < bottom);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { isNodeVisible };
|
|
14
|
+
//# sourceMappingURL=is-node-visible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-node-visible.js","sources":["../../../../../../src/module/GraphCanvas/lib/utils/is-node-visible.ts"],"sourcesContent":["import type { ZoomTransform } from \"d3-zoom\";\n\ntype IsNodeVisibleOptions = {\n x: number;\n y: number;\n radius: number;\n width: number;\n height: number;\n transform: ZoomTransform;\n};\n\nconst ADDITIONAL_VIEWPORT = 10;\n\nexport function isNodeVisible(opts: IsNodeVisibleOptions) {\n const left = -opts.transform.x / opts.transform.k;\n const right = (opts.width - opts.transform.x) / opts.transform.k;\n const top = -opts.transform.y / opts.transform.k;\n const bottom = (opts.height - opts.transform.y) / opts.transform.k;\n\n return (\n left < opts.x + opts.radius + ADDITIONAL_VIEWPORT &&\n opts.x - opts.radius - ADDITIONAL_VIEWPORT < right &&\n top < opts.y + opts.radius + ADDITIONAL_VIEWPORT &&\n opts.y - opts.radius - ADDITIONAL_VIEWPORT < bottom\n );\n}\n"],"names":[],"mappings":"AAWA,MAAM,mBAAmB,GAAG,EAAE;AAExB,SAAU,aAAa,CAAC,IAA0B,EAAA;AACtD,IAAA,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,IAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAChE,IAAA,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAChD,IAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAElE,QACE,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,mBAAmB;QACjD,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,mBAAmB,GAAG,KAAK;QAClD,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,mBAAmB;QAChD,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,mBAAmB,GAAG,MAAM;AAEvD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-iteration-extractor.js","sources":["../../../../../../src/module/GraphCanvas/lib/utils/link-iteration-extractor.ts"],"sourcesContent":["import { checkType } from \"@/lib\";\nimport type { LinkInterface } from \"@/types\";\nimport type { GraphState, LinkIterationPropsInterface } from \"../../types\";\n\nexport function linkIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[],\n>(\n link: LinkInterface<NodeData, LinkData>,\n i: number,\n links: LinkInterface<NodeData, LinkData>[],\n state: GraphState<NodeData, LinkData>,\n option: LinkIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter: undefined,\n): Result;\n\nexport function linkIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[],\n>(\n link: LinkInterface<NodeData, LinkData>,\n i: number,\n links: LinkInterface<NodeData, LinkData>[],\n state: GraphState<NodeData, LinkData>,\n option: LinkIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter:\n | LinkIterationPropsInterface<NodeData, LinkData, Required<Result>>\n | Required<Result>,\n): Required<Result>;\n\nexport function linkIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[],\n>(\n link: LinkInterface<NodeData, LinkData>,\n i: number,\n links: LinkInterface<NodeData, LinkData>[],\n state: GraphState<NodeData, LinkData>,\n option: LinkIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter:\n | LinkIterationPropsInterface<NodeData, LinkData, Required<Result>>\n | Required<Result>\n | undefined,\n): Result {\n let customOptions: Result | undefined;\n let constantOptions: Result | undefined;\n\n if (typeof option === \"function\") customOptions = option(link, i, links, state);\n else customOptions = option;\n\n if (customOptions && typeof customOptions === \"object\" && !Array.isArray(customOptions)) {\n for (const key in customOptions) {\n if (customOptions[key] === undefined) delete customOptions[key];\n }\n }\n\n if (optionConstantGetter) {\n if (typeof optionConstantGetter === \"function\")\n constantOptions = optionConstantGetter(link, i, links, state);\n else constantOptions = optionConstantGetter;\n\n if (\n constantOptions &&\n typeof constantOptions === \"object\" &&\n !Array.isArray(constantOptions) &&\n checkType<Record<string, unknown> | undefined>(\n customOptions,\n customOptions === undefined ||\n (typeof customOptions === \"object\" && !Array.isArray(customOptions)),\n )\n ) {\n return {\n ...(constantOptions as Record<string, unknown> | undefined),\n ...(customOptions as Record<string, unknown> | undefined),\n } as Result;\n }\n }\n\n return customOptions;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"link-iteration-extractor.js","sources":["../../../../../../src/module/GraphCanvas/lib/utils/link-iteration-extractor.ts"],"sourcesContent":["import { checkType } from \"@/lib\";\nimport type { LinkInterface } from \"@/types\";\nimport type { GraphState, LinkIterationPropsInterface } from \"../../types\";\n\nexport function linkIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[],\n>(\n link: LinkInterface<NodeData, LinkData>,\n i: number,\n links: LinkInterface<NodeData, LinkData>[],\n state: GraphState<NodeData, LinkData>,\n option: LinkIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter: undefined,\n): Result;\n\nexport function linkIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[],\n>(\n link: LinkInterface<NodeData, LinkData>,\n i: number,\n links: LinkInterface<NodeData, LinkData>[],\n state: GraphState<NodeData, LinkData>,\n option: LinkIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter:\n | LinkIterationPropsInterface<NodeData, LinkData, Required<Result>>\n | Required<Result>,\n): Required<Result>;\n\nexport function linkIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[],\n>(\n link: LinkInterface<NodeData, LinkData>,\n i: number,\n links: LinkInterface<NodeData, LinkData>[],\n state: GraphState<NodeData, LinkData>,\n option: LinkIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter:\n | LinkIterationPropsInterface<NodeData, LinkData, Required<Result>>\n | Required<Result>\n | undefined,\n): Result {\n let customOptions: Result | undefined;\n let constantOptions: Result | undefined;\n\n if (typeof option === \"function\") customOptions = option(link, i, links, state);\n else customOptions = option;\n\n if (customOptions && typeof customOptions === \"object\" && !Array.isArray(customOptions)) {\n for (const key in customOptions) {\n if (customOptions[key] === undefined) delete customOptions[key];\n }\n }\n\n if (optionConstantGetter) {\n if (typeof optionConstantGetter === \"function\")\n constantOptions = optionConstantGetter(link, i, links, state);\n else constantOptions = optionConstantGetter;\n\n if (\n constantOptions &&\n typeof constantOptions === \"object\" &&\n !Array.isArray(constantOptions) &&\n checkType<Record<string, unknown> | undefined>(\n customOptions,\n customOptions === undefined ||\n (typeof customOptions === \"object\" && !Array.isArray(customOptions)),\n )\n ) {\n return {\n ...(constantOptions as Record<string, unknown> | undefined),\n ...(customOptions as Record<string, unknown> | undefined),\n } as Result;\n }\n }\n\n return customOptions;\n}\n"],"names":[],"mappings":";;;;AAgCgB,SAAA,sBAAsB,CAKpC,IAAuC,EACvC,CAAS,EACT,KAA0C,EAC1C,KAAqC,EACrC,MAAwE,EACxE,oBAGa,EAAA;AAEb,IAAA,IAAI,aAAiC;AACrC,IAAA,IAAI,eAAmC;IAEvC,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;;QAC1E,aAAa,GAAG,MAAM;AAE3B,IAAA,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACvF,QAAA,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;AAC/B,YAAA,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS;AAAE,gBAAA,OAAO,aAAa,CAAC,GAAG,CAAC;;;IAInE,IAAI,oBAAoB,EAAE;QACxB,IAAI,OAAO,oBAAoB,KAAK,UAAU;YAC5C,eAAe,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;;YAC1D,eAAe,GAAG,oBAAoB;AAE3C,QAAA,IACE,eAAe;YACf,OAAO,eAAe,KAAK,QAAQ;AACnC,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AAC/B,YAAA,SAAS,CACP,aAAa,EACb,aAAa,KAAK,SAAS;AACzB,iBAAC,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CACvE,EACD;YACA,OAAO;AACL,gBAAA,GAAI,eAAuD;AAC3D,gBAAA,GAAI,aAAqD;aAChD;;;AAIf,IAAA,OAAO,aAAa;AACtB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-iteration-extractor.js","sources":["../../../../../../src/module/GraphCanvas/lib/utils/node-iteration-extractor.ts"],"sourcesContent":["import { checkType } from \"@/lib\";\nimport type { NodeInterface } from \"@/types\";\nimport type { GraphState, NodeIterationPropsInterface } from \"../../types\";\n\nexport function nodeIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null,\n>(\n node: NodeInterface<NodeData>,\n i: number,\n nodes: NodeInterface<NodeData>[],\n state: GraphState<NodeData, LinkData>,\n option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter: undefined,\n): Result;\nexport function nodeIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null,\n>(\n node: NodeInterface<NodeData>,\n i: number,\n nodes: NodeInterface<NodeData>[],\n state: GraphState<NodeData, LinkData>,\n option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result,\n): Required<Result>;\nexport function nodeIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null,\n>(\n node: NodeInterface<NodeData>,\n i: number,\n nodes: NodeInterface<NodeData>[],\n state: GraphState<NodeData, LinkData>,\n option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter:\n | NodeIterationPropsInterface<NodeData, LinkData, Result>\n | Result\n | undefined,\n) {\n let customOptions: Result | undefined;\n let constantOptions: Result | undefined;\n\n if (typeof option === \"function\") customOptions = option(node, i, nodes, state);\n else customOptions = option;\n\n if (customOptions && typeof customOptions === \"object\" && !Array.isArray(customOptions)) {\n for (const key in customOptions) {\n if (customOptions[key] === undefined) delete customOptions[key];\n }\n }\n\n if (optionConstantGetter) {\n if (typeof optionConstantGetter === \"function\")\n constantOptions = optionConstantGetter(node, i, nodes, state);\n else constantOptions = optionConstantGetter;\n\n if (\n constantOptions &&\n typeof constantOptions === \"object\" &&\n !Array.isArray(constantOptions) &&\n checkType<Record<string, unknown> | undefined>(\n customOptions,\n customOptions === undefined ||\n (typeof customOptions === \"object\" && !Array.isArray(customOptions)),\n )\n ) {\n return {\n ...(constantOptions as Record<string, unknown> | undefined),\n ...(customOptions as Record<string, unknown> | undefined),\n } as Result;\n }\n }\n\n return customOptions;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node-iteration-extractor.js","sources":["../../../../../../src/module/GraphCanvas/lib/utils/node-iteration-extractor.ts"],"sourcesContent":["import { checkType } from \"@/lib\";\nimport type { NodeInterface } from \"@/types\";\nimport type { GraphState, NodeIterationPropsInterface } from \"../../types\";\n\nexport function nodeIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null,\n>(\n node: NodeInterface<NodeData>,\n i: number,\n nodes: NodeInterface<NodeData>[],\n state: GraphState<NodeData, LinkData>,\n option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter: undefined,\n): Result;\nexport function nodeIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null,\n>(\n node: NodeInterface<NodeData>,\n i: number,\n nodes: NodeInterface<NodeData>[],\n state: GraphState<NodeData, LinkData>,\n option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result,\n): Required<Result>;\nexport function nodeIterationExtractor<\n NodeData extends Record<string, unknown>,\n LinkData extends Record<string, unknown>,\n Result extends string | number | boolean | Record<string, unknown> | unknown[] | undefined | null,\n>(\n node: NodeInterface<NodeData>,\n i: number,\n nodes: NodeInterface<NodeData>[],\n state: GraphState<NodeData, LinkData>,\n option: NodeIterationPropsInterface<NodeData, LinkData, Result> | Result,\n optionConstantGetter:\n | NodeIterationPropsInterface<NodeData, LinkData, Result>\n | Result\n | undefined,\n) {\n let customOptions: Result | undefined;\n let constantOptions: Result | undefined;\n\n if (typeof option === \"function\") customOptions = option(node, i, nodes, state);\n else customOptions = option;\n\n if (customOptions && typeof customOptions === \"object\" && !Array.isArray(customOptions)) {\n for (const key in customOptions) {\n if (customOptions[key] === undefined) delete customOptions[key];\n }\n }\n\n if (optionConstantGetter) {\n if (typeof optionConstantGetter === \"function\")\n constantOptions = optionConstantGetter(node, i, nodes, state);\n else constantOptions = optionConstantGetter;\n\n if (\n constantOptions &&\n typeof constantOptions === \"object\" &&\n !Array.isArray(constantOptions) &&\n checkType<Record<string, unknown> | undefined>(\n customOptions,\n customOptions === undefined ||\n (typeof customOptions === \"object\" && !Array.isArray(customOptions)),\n )\n ) {\n return {\n ...(constantOptions as Record<string, unknown> | undefined),\n ...(customOptions as Record<string, unknown> | undefined),\n } as Result;\n }\n }\n\n return customOptions;\n}\n"],"names":[],"mappings":";;;;AA4BgB,SAAA,sBAAsB,CAKpC,IAA6B,EAC7B,CAAS,EACT,KAAgC,EAChC,KAAqC,EACrC,MAAwE,EACxE,oBAGa,EAAA;AAEb,IAAA,IAAI,aAAiC;AACrC,IAAA,IAAI,eAAmC;IAEvC,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;;QAC1E,aAAa,GAAG,MAAM;AAE3B,IAAA,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACvF,QAAA,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;AAC/B,YAAA,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS;AAAE,gBAAA,OAAO,aAAa,CAAC,GAAG,CAAC;;;IAInE,IAAI,oBAAoB,EAAE;QACxB,IAAI,OAAO,oBAAoB,KAAK,UAAU;YAC5C,eAAe,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;;YAC1D,eAAe,GAAG,oBAAoB;AAE3C,QAAA,IACE,eAAe;YACf,OAAO,eAAe,KAAK,QAAQ;AACnC,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AAC/B,YAAA,SAAS,CACP,aAAa,EACb,aAAa,KAAK,SAAS;AACzB,iBAAC,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CACvE,EACD;YACA,OAAO;AACL,gBAAA,GAAI,eAAuD;AAC3D,gBAAA,GAAI,aAAqD;aAChD;;;AAIf,IAAA,OAAO,aAAa;AACtB;;;;"}
|
package/lib/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ interface NodeInterface<NodeData extends Record<string, unknown>> extends Simula
|
|
|
8
8
|
group?: number | string;
|
|
9
9
|
neighbors?: (string | number)[];
|
|
10
10
|
_radius?: number;
|
|
11
|
+
_visible?: boolean;
|
|
11
12
|
name?: string;
|
|
12
13
|
data?: NodeData;
|
|
13
14
|
drag?: boolean;
|
|
@@ -40,6 +41,7 @@ type GraphSettingsInterface<NodeData extends Record<string, unknown>> = {
|
|
|
40
41
|
highlightOnlyRoot?: boolean;
|
|
41
42
|
highlightFadingMin?: number;
|
|
42
43
|
highlightLinkFadingMin?: number;
|
|
44
|
+
highlightArrowFadingMin?: number;
|
|
43
45
|
highlightColorFadingMin?: number;
|
|
44
46
|
highlightTextFadingMin?: number;
|
|
45
47
|
highlightSizingAdditional?: number;
|
|
@@ -66,6 +68,8 @@ type GraphSettingsInterface<NodeData extends Record<string, unknown>> = {
|
|
|
66
68
|
nodeRadiusCoefficient?: number;
|
|
67
69
|
nodeRadiusFactor?: number;
|
|
68
70
|
nodeRadiusFlexible?: boolean;
|
|
71
|
+
showDrawTime?: boolean;
|
|
72
|
+
showDrawTimeEveryTick?: boolean;
|
|
69
73
|
};
|
|
70
74
|
type ForceSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
|
|
71
75
|
collideOn?: boolean;
|
|
@@ -94,10 +98,15 @@ type ForceSettingsInterface<NodeData extends Record<string, unknown>, LinkData e
|
|
|
94
98
|
yStrength?: NodeIterationPropsInterface<NodeData, LinkData> | number;
|
|
95
99
|
};
|
|
96
100
|
type NodeSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
|
|
101
|
+
cache?: boolean;
|
|
97
102
|
idGetter?: NodeIterationPropsInterface<NodeData, LinkData, string | number>;
|
|
98
|
-
options?: NodeIterationPropsInterface<NodeData, LinkData, NodeOptionsInterface
|
|
103
|
+
options?: NodeIterationPropsInterface<NodeData, LinkData, NodeOptionsInterface<NodeData, LinkData>> | NodeOptionsInterface<NodeData, LinkData>;
|
|
99
104
|
};
|
|
100
|
-
type NodeOptionsInterface = {
|
|
105
|
+
type NodeOptionsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
|
|
106
|
+
nodeDraw?: ((node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
|
|
107
|
+
textDraw?: ((node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
|
|
108
|
+
nodeExtraDraw?: ((node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
|
|
109
|
+
textExtraDraw?: ((node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
|
|
101
110
|
highlightFading?: boolean;
|
|
102
111
|
highlightSizing?: boolean;
|
|
103
112
|
highlightTextFading?: boolean;
|
|
@@ -106,7 +115,6 @@ type NodeOptionsInterface = {
|
|
|
106
115
|
borderColor?: string;
|
|
107
116
|
borderWidth?: number;
|
|
108
117
|
radius?: number;
|
|
109
|
-
width?: number;
|
|
110
118
|
alpha?: number;
|
|
111
119
|
color?: string;
|
|
112
120
|
textVisible?: boolean;
|
|
@@ -125,14 +133,29 @@ type NodeOptionsInterface = {
|
|
|
125
133
|
};
|
|
126
134
|
type NodeIterationPropsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Return = number> = (node: NodeInterface<NodeData>, i: number, nodes: NodeInterface<NodeData>[], state?: GraphState<NodeData, LinkData>) => Return;
|
|
127
135
|
type LinkSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
|
|
128
|
-
|
|
136
|
+
particles?: boolean;
|
|
137
|
+
cache?: boolean;
|
|
138
|
+
options?: LinkIterationPropsInterface<NodeData, LinkData, LinkOptionsInterface<NodeData, LinkData>> | LinkOptionsInterface<NodeData, LinkData>;
|
|
129
139
|
};
|
|
130
|
-
type LinkOptionsInterface = {
|
|
140
|
+
type LinkOptionsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
|
|
141
|
+
drawLink?: ((link: LinkInterface<NodeData, LinkData>, options: Required<LinkOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
|
|
142
|
+
drawExtraLink?: ((link: LinkInterface<NodeData, LinkData>, options: Required<LinkOptionsInterface<NodeData, LinkData>>, state: GraphState<NodeData, LinkData>) => void) | null;
|
|
131
143
|
alpha?: number;
|
|
132
144
|
color?: string;
|
|
133
145
|
width?: number;
|
|
134
146
|
highlightFading?: boolean;
|
|
135
147
|
pretty?: boolean;
|
|
148
|
+
arrow?: boolean;
|
|
149
|
+
arrowAlpha?: number;
|
|
150
|
+
arrowColor?: string;
|
|
151
|
+
arrowSize?: number;
|
|
152
|
+
arrowHighlightFading?: boolean;
|
|
153
|
+
arrowReverseAppear?: boolean;
|
|
154
|
+
particleAlpha?: number;
|
|
155
|
+
particleColor?: string;
|
|
156
|
+
particleRadius?: number;
|
|
157
|
+
particleCount?: number;
|
|
158
|
+
particleSteps?: number;
|
|
136
159
|
};
|
|
137
160
|
type LinkIterationPropsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Return = number> = (link: LinkInterface<NodeData, LinkData>, i: number, links: LinkInterface<NodeData, LinkData>[], state?: GraphState<NodeData, LinkData>) => Return;
|
|
138
161
|
type TextStyleEnum = "normal" | "italic" | "oblique";
|
|
@@ -175,11 +198,20 @@ type RGB = {
|
|
|
175
198
|
g: number;
|
|
176
199
|
b: number;
|
|
177
200
|
};
|
|
201
|
+
type GraphParticle = {
|
|
202
|
+
step: number;
|
|
203
|
+
wait: number;
|
|
204
|
+
x?: number;
|
|
205
|
+
y?: number;
|
|
206
|
+
sourceId: number;
|
|
207
|
+
targetId: number;
|
|
208
|
+
};
|
|
178
209
|
|
|
179
210
|
declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> {
|
|
180
211
|
/** initial data */
|
|
181
212
|
private nodes;
|
|
182
213
|
private links;
|
|
214
|
+
private particles;
|
|
183
215
|
private width;
|
|
184
216
|
private height;
|
|
185
217
|
private root;
|
|
@@ -199,6 +231,8 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
|
|
|
199
231
|
private draw;
|
|
200
232
|
private eventAbortController;
|
|
201
233
|
private cachedNodeText;
|
|
234
|
+
private linkOptionsCache;
|
|
235
|
+
private nodeOptionsCache;
|
|
202
236
|
private isDragging;
|
|
203
237
|
private highlightedNode;
|
|
204
238
|
private highlightedNeighbors;
|
|
@@ -212,6 +246,7 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
|
|
|
212
246
|
getData(): Pick<GraphCanvasInterface<NodeData, LinkData>, "nodes" | "links">;
|
|
213
247
|
changeData(options: Pick<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes">, alpha?: number): void;
|
|
214
248
|
changeSettings(options: Omit<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes" | "listeners">): undefined;
|
|
249
|
+
clearCache(): void;
|
|
215
250
|
tick(): void;
|
|
216
251
|
restart(alpha?: number): void;
|
|
217
252
|
start(): void;
|
|
@@ -236,9 +271,9 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
|
|
|
236
271
|
private initZoom;
|
|
237
272
|
}
|
|
238
273
|
|
|
239
|
-
declare function linkOptionsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(_: LinkInterface<NodeData, LinkData>, __: number, ___: LinkInterface<NodeData, LinkData>[], state?: GraphState<NodeData, LinkData>): Required<LinkOptionsInterface
|
|
274
|
+
declare function linkOptionsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(_: LinkInterface<NodeData, LinkData>, __: number, ___: LinkInterface<NodeData, LinkData>[], state?: GraphState<NodeData, LinkData>): Required<LinkOptionsInterface<NodeData, LinkData>>;
|
|
240
275
|
|
|
241
|
-
declare function nodeOptionsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(node: NodeInterface<NodeData>, _: number, __: NodeInterface<NodeData>[], state?: GraphState<NodeData, LinkData>): Required<NodeOptionsInterface
|
|
276
|
+
declare function nodeOptionsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(node: NodeInterface<NodeData>, _: number, __: NodeInterface<NodeData>[], state?: GraphState<NodeData, LinkData>): Required<NodeOptionsInterface<NodeData, LinkData>>;
|
|
242
277
|
type NodeRadiusGetterOptions = {
|
|
243
278
|
linkCount: number | undefined;
|
|
244
279
|
radiusFlexible: boolean;
|
|
@@ -272,13 +307,25 @@ type DrawTextOptions = {
|
|
|
272
307
|
};
|
|
273
308
|
declare function drawText({ context, id, textAlign, textColor, textFont, textStyle, textGap, textWeight, textSize, text, x, y, cachedNodeText, maxWidth, }: DrawTextOptions): void;
|
|
274
309
|
|
|
275
|
-
declare function calculateLinkPositionByRadius<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(link: LinkInterface<NodeData, LinkData
|
|
310
|
+
declare function calculateLinkPositionByRadius<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(link: LinkInterface<NodeData, LinkData>, arrowSize?: number): {
|
|
276
311
|
x1: number;
|
|
277
312
|
y1: number;
|
|
278
313
|
x2: number;
|
|
279
314
|
y2: number;
|
|
280
315
|
} | null;
|
|
281
316
|
|
|
317
|
+
declare function animationByProgress(initial: number, additional: number, progress: number): number;
|
|
318
|
+
|
|
319
|
+
type GetParticlePositionOptions = {
|
|
320
|
+
particle: GraphParticle;
|
|
321
|
+
xStart: number;
|
|
322
|
+
yStart: number;
|
|
323
|
+
xEnd: number;
|
|
324
|
+
yEnd: number;
|
|
325
|
+
totalSteps: number;
|
|
326
|
+
};
|
|
327
|
+
declare function getParticlePosition(opts: GetParticlePositionOptions): void;
|
|
328
|
+
|
|
282
329
|
declare function colorToRgb(color: string): string | null;
|
|
283
330
|
|
|
284
331
|
declare function extractRgb(color: string | null): {
|
|
@@ -291,4 +338,32 @@ declare function fadeRgb(color: RGB, fade: number): RGB;
|
|
|
291
338
|
|
|
292
339
|
declare function rgbAnimationByProgress(start: RGB, end: RGB, progress: number): RGB;
|
|
293
340
|
|
|
294
|
-
|
|
341
|
+
type GraphSettingsInputRange<I extends string> = {
|
|
342
|
+
type: "range";
|
|
343
|
+
min: number;
|
|
344
|
+
max: number;
|
|
345
|
+
step: number;
|
|
346
|
+
initialValue: number;
|
|
347
|
+
id: I;
|
|
348
|
+
label: string;
|
|
349
|
+
};
|
|
350
|
+
type GraphSettingsInputCheckBox<I extends string> = {
|
|
351
|
+
type: "checkbox";
|
|
352
|
+
id: I;
|
|
353
|
+
initialValue: boolean;
|
|
354
|
+
label: string;
|
|
355
|
+
};
|
|
356
|
+
type GraphSettingsInputColorBox<I extends string> = {
|
|
357
|
+
type: "color";
|
|
358
|
+
id: I;
|
|
359
|
+
initialValue: string;
|
|
360
|
+
label: string;
|
|
361
|
+
};
|
|
362
|
+
type GraphSettingsInputInterface<I extends string> = GraphSettingsInputRange<I> | GraphSettingsInputCheckBox<I> | GraphSettingsInputColorBox<I>;
|
|
363
|
+
|
|
364
|
+
declare function getForceControls<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(keys?: (keyof ForceSettingsInterface<NodeData, LinkData>)[]): GraphSettingsInputInterface<keyof ForceSettingsInterface<NodeData, LinkData>>[];
|
|
365
|
+
declare function getGraphControls<NodeData extends Record<string, unknown>>(keys?: (keyof GraphSettingsInterface<NodeData>)[]): GraphSettingsInputInterface<keyof GraphSettingsInterface<NodeData>>[];
|
|
366
|
+
declare function getNodeControls<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(keys?: (keyof NodeOptionsInterface<NodeData, LinkData>)[]): GraphSettingsInputInterface<keyof NodeOptionsInterface<NodeData, LinkData>>[];
|
|
367
|
+
declare function getLinkControls<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(keys?: (keyof LinkOptionsInterface<NodeData, LinkData>)[]): GraphSettingsInputInterface<keyof LinkOptionsInterface<NodeData, LinkData>>[];
|
|
368
|
+
|
|
369
|
+
export { type CachedNodeTextInterface, type DragEventInterface, type ForceSettingsInterface, GraphCanvas, type GraphCanvasInterface, type GraphCanvasSimulation, type GraphParticle, type GraphSettingsInterface, type GraphState, type LinkInterface, type LinkIterationPropsInterface, type LinkOptionsInterface, type LinkSettingsInterface, type ListenersInterface, type NodeInterface, type NodeIterationPropsInterface, type NodeOptionsInterface, type NodeSettingsInterface, type RGB, type TextStyleEnum, type ZoomEventInterface, animationByProgress, calculateLinkPositionByRadius, colorToRgb, drawText, extractRgb, fadeRgb, getForceControls, getGraphControls, getLinkControls, getNodeControls, getParticlePosition, linkIterationExtractor, linkOptionsGetter, nodeIterationExtractor, nodeOptionsGetter, nodeRadiusGetter, rgbAnimationByProgress };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@krainovsd/graph",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Krainov graph",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "KrainovSD <denislosev48@gmail.com>",
|
|
@@ -55,7 +55,9 @@
|
|
|
55
55
|
"@types/d3-drag": "3.0.7",
|
|
56
56
|
"@types/d3-array": "3.2.1",
|
|
57
57
|
"vite": "6.0.11",
|
|
58
|
-
"@types/lodash": "4.17.14"
|
|
58
|
+
"@types/lodash": "4.17.14",
|
|
59
|
+
"@sveltejs/vite-plugin-svelte": "5.0.3",
|
|
60
|
+
"svelte": "5.23.2"
|
|
59
61
|
},
|
|
60
62
|
"dependencies": {
|
|
61
63
|
"@krainovsd/js-helpers": "0.12.0",
|