@zbigniewsobiecki/squint 1.0.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/LICENSE +21 -0
- package/README.md +1065 -0
- package/bin/dev.js +5 -0
- package/bin/run.js +5 -0
- package/dist/commands/_shared/db-helper.d.ts +18 -0
- package/dist/commands/_shared/db-helper.d.ts.map +1 -0
- package/dist/commands/_shared/db-helper.js +72 -0
- package/dist/commands/_shared/db-helper.js.map +1 -0
- package/dist/commands/_shared/flags.d.ts +20 -0
- package/dist/commands/_shared/flags.d.ts.map +1 -0
- package/dist/commands/_shared/flags.js +38 -0
- package/dist/commands/_shared/flags.js.map +1 -0
- package/dist/commands/_shared/index.d.ts +6 -0
- package/dist/commands/_shared/index.d.ts.map +1 -0
- package/dist/commands/_shared/index.js +6 -0
- package/dist/commands/_shared/index.js.map +1 -0
- package/dist/commands/_shared/output.d.ts +22 -0
- package/dist/commands/_shared/output.d.ts.map +1 -0
- package/dist/commands/_shared/output.js +36 -0
- package/dist/commands/_shared/output.js.map +1 -0
- package/dist/commands/_shared/source-reader.d.ts +23 -0
- package/dist/commands/_shared/source-reader.d.ts.map +1 -0
- package/dist/commands/_shared/source-reader.js +45 -0
- package/dist/commands/_shared/source-reader.js.map +1 -0
- package/dist/commands/_shared/symbol-resolver.d.ts +35 -0
- package/dist/commands/_shared/symbol-resolver.d.ts.map +1 -0
- package/dist/commands/_shared/symbol-resolver.js +102 -0
- package/dist/commands/_shared/symbol-resolver.js.map +1 -0
- package/dist/commands/browse.d.ts +13 -0
- package/dist/commands/browse.d.ts.map +1 -0
- package/dist/commands/browse.js +106 -0
- package/dist/commands/browse.js.map +1 -0
- package/dist/commands/domains/create.d.ts +15 -0
- package/dist/commands/domains/create.d.ts.map +1 -0
- package/dist/commands/domains/create.js +34 -0
- package/dist/commands/domains/create.js.map +1 -0
- package/dist/commands/domains/delete.d.ts +14 -0
- package/dist/commands/domains/delete.d.ts.map +1 -0
- package/dist/commands/domains/delete.js +41 -0
- package/dist/commands/domains/delete.js.map +1 -0
- package/dist/commands/domains/index.d.ts +2 -0
- package/dist/commands/domains/index.d.ts.map +1 -0
- package/dist/commands/domains/index.js +2 -0
- package/dist/commands/domains/index.js.map +1 -0
- package/dist/commands/domains/list.d.ts +12 -0
- package/dist/commands/domains/list.d.ts.map +1 -0
- package/dist/commands/domains/list.js +67 -0
- package/dist/commands/domains/list.js.map +1 -0
- package/dist/commands/domains/merge.d.ts +14 -0
- package/dist/commands/domains/merge.d.ts.map +1 -0
- package/dist/commands/domains/merge.js +40 -0
- package/dist/commands/domains/merge.js.map +1 -0
- package/dist/commands/domains/rename.d.ts +14 -0
- package/dist/commands/domains/rename.d.ts.map +1 -0
- package/dist/commands/domains/rename.js +33 -0
- package/dist/commands/domains/rename.js.map +1 -0
- package/dist/commands/domains/show.d.ts +14 -0
- package/dist/commands/domains/show.d.ts.map +1 -0
- package/dist/commands/domains/show.js +47 -0
- package/dist/commands/domains/show.js.map +1 -0
- package/dist/commands/domains/sync.d.ts +11 -0
- package/dist/commands/domains/sync.d.ts.map +1 -0
- package/dist/commands/domains/sync.js +33 -0
- package/dist/commands/domains/sync.js.map +1 -0
- package/dist/commands/domains/update.d.ts +14 -0
- package/dist/commands/domains/update.d.ts.map +1 -0
- package/dist/commands/domains/update.js +28 -0
- package/dist/commands/domains/update.js.map +1 -0
- package/dist/commands/features/assign.d.ts +16 -0
- package/dist/commands/features/assign.d.ts.map +1 -0
- package/dist/commands/features/assign.js +51 -0
- package/dist/commands/features/assign.js.map +1 -0
- package/dist/commands/features/create.d.ts +15 -0
- package/dist/commands/features/create.d.ts.map +1 -0
- package/dist/commands/features/create.js +30 -0
- package/dist/commands/features/create.js.map +1 -0
- package/dist/commands/features/delete.d.ts +14 -0
- package/dist/commands/features/delete.d.ts.map +1 -0
- package/dist/commands/features/delete.js +37 -0
- package/dist/commands/features/delete.js.map +1 -0
- package/dist/commands/features/generate.d.ts +34 -0
- package/dist/commands/features/generate.d.ts.map +1 -0
- package/dist/commands/features/generate.js +178 -0
- package/dist/commands/features/generate.js.map +1 -0
- package/dist/commands/features/index.d.ts +2 -0
- package/dist/commands/features/index.d.ts.map +1 -0
- package/dist/commands/features/index.js +2 -0
- package/dist/commands/features/index.js.map +1 -0
- package/dist/commands/features/list.d.ts +11 -0
- package/dist/commands/features/list.d.ts.map +1 -0
- package/dist/commands/features/list.js +45 -0
- package/dist/commands/features/list.js.map +1 -0
- package/dist/commands/features/show.d.ts +15 -0
- package/dist/commands/features/show.d.ts.map +1 -0
- package/dist/commands/features/show.js +61 -0
- package/dist/commands/features/show.js.map +1 -0
- package/dist/commands/features/unassign.d.ts +16 -0
- package/dist/commands/features/unassign.d.ts.map +1 -0
- package/dist/commands/features/unassign.js +55 -0
- package/dist/commands/features/unassign.js.map +1 -0
- package/dist/commands/features/update.d.ts +16 -0
- package/dist/commands/features/update.d.ts.map +1 -0
- package/dist/commands/features/update.js +54 -0
- package/dist/commands/features/update.js.map +1 -0
- package/dist/commands/files/imported-by.d.ts +13 -0
- package/dist/commands/files/imported-by.d.ts.map +1 -0
- package/dist/commands/files/imported-by.js +40 -0
- package/dist/commands/files/imported-by.js.map +1 -0
- package/dist/commands/files/imports.d.ts +14 -0
- package/dist/commands/files/imports.d.ts.map +1 -0
- package/dist/commands/files/imports.js +48 -0
- package/dist/commands/files/imports.js.map +1 -0
- package/dist/commands/files/index.d.ts +2 -0
- package/dist/commands/files/index.d.ts.map +1 -0
- package/dist/commands/files/index.js +2 -0
- package/dist/commands/files/index.js.map +1 -0
- package/dist/commands/files/list.d.ts +11 -0
- package/dist/commands/files/list.d.ts.map +1 -0
- package/dist/commands/files/list.js +35 -0
- package/dist/commands/files/list.js.map +1 -0
- package/dist/commands/files/orphans.d.ts +12 -0
- package/dist/commands/files/orphans.d.ts.map +1 -0
- package/dist/commands/files/orphans.js +43 -0
- package/dist/commands/files/orphans.js.map +1 -0
- package/dist/commands/files/show.d.ts +14 -0
- package/dist/commands/files/show.d.ts.map +1 -0
- package/dist/commands/files/show.js +95 -0
- package/dist/commands/files/show.js.map +1 -0
- package/dist/commands/flows/add-step.d.ts +19 -0
- package/dist/commands/flows/add-step.d.ts.map +1 -0
- package/dist/commands/flows/add-step.js +46 -0
- package/dist/commands/flows/add-step.js.map +1 -0
- package/dist/commands/flows/create.d.ts +17 -0
- package/dist/commands/flows/create.d.ts.map +1 -0
- package/dist/commands/flows/create.js +39 -0
- package/dist/commands/flows/create.js.map +1 -0
- package/dist/commands/flows/delete.d.ts +14 -0
- package/dist/commands/flows/delete.d.ts.map +1 -0
- package/dist/commands/flows/delete.js +37 -0
- package/dist/commands/flows/delete.js.map +1 -0
- package/dist/commands/flows/generate.d.ts +50 -0
- package/dist/commands/flows/generate.d.ts.map +1 -0
- package/dist/commands/flows/generate.js +438 -0
- package/dist/commands/flows/generate.js.map +1 -0
- package/dist/commands/flows/index.d.ts +2 -0
- package/dist/commands/flows/index.d.ts.map +1 -0
- package/dist/commands/flows/index.js +2 -0
- package/dist/commands/flows/index.js.map +1 -0
- package/dist/commands/flows/list.d.ts +12 -0
- package/dist/commands/flows/list.d.ts.map +1 -0
- package/dist/commands/flows/list.js +98 -0
- package/dist/commands/flows/list.js.map +1 -0
- package/dist/commands/flows/remove-step.d.ts +18 -0
- package/dist/commands/flows/remove-step.d.ts.map +1 -0
- package/dist/commands/flows/remove-step.js +41 -0
- package/dist/commands/flows/remove-step.js.map +1 -0
- package/dist/commands/flows/show.d.ts +17 -0
- package/dist/commands/flows/show.d.ts.map +1 -0
- package/dist/commands/flows/show.js +136 -0
- package/dist/commands/flows/show.js.map +1 -0
- package/dist/commands/flows/trace.d.ts +22 -0
- package/dist/commands/flows/trace.d.ts.map +1 -0
- package/dist/commands/flows/trace.js +217 -0
- package/dist/commands/flows/trace.js.map +1 -0
- package/dist/commands/flows/update.d.ts +17 -0
- package/dist/commands/flows/update.d.ts.map +1 -0
- package/dist/commands/flows/update.js +60 -0
- package/dist/commands/flows/update.js.map +1 -0
- package/dist/commands/flows/verify.d.ts +21 -0
- package/dist/commands/flows/verify.d.ts.map +1 -0
- package/dist/commands/flows/verify.js +123 -0
- package/dist/commands/flows/verify.js.map +1 -0
- package/dist/commands/gaps.d.ts +14 -0
- package/dist/commands/gaps.d.ts.map +1 -0
- package/dist/commands/gaps.js +184 -0
- package/dist/commands/gaps.js.map +1 -0
- package/dist/commands/hierarchy/index.d.ts +20 -0
- package/dist/commands/hierarchy/index.d.ts.map +1 -0
- package/dist/commands/hierarchy/index.js +344 -0
- package/dist/commands/hierarchy/index.js.map +1 -0
- package/dist/commands/ingest.d.ts +23 -0
- package/dist/commands/ingest.d.ts.map +1 -0
- package/dist/commands/ingest.js +249 -0
- package/dist/commands/ingest.js.map +1 -0
- package/dist/commands/interactions/create.d.ts +16 -0
- package/dist/commands/interactions/create.d.ts.map +1 -0
- package/dist/commands/interactions/create.js +58 -0
- package/dist/commands/interactions/create.js.map +1 -0
- package/dist/commands/interactions/delete.d.ts +16 -0
- package/dist/commands/interactions/delete.d.ts.map +1 -0
- package/dist/commands/interactions/delete.js +28 -0
- package/dist/commands/interactions/delete.js.map +1 -0
- package/dist/commands/interactions/generate.d.ts +62 -0
- package/dist/commands/interactions/generate.d.ts.map +1 -0
- package/dist/commands/interactions/generate.js +870 -0
- package/dist/commands/interactions/generate.js.map +1 -0
- package/dist/commands/interactions/index.d.ts +2 -0
- package/dist/commands/interactions/index.d.ts.map +1 -0
- package/dist/commands/interactions/index.js +2 -0
- package/dist/commands/interactions/index.js.map +1 -0
- package/dist/commands/interactions/list.d.ts +15 -0
- package/dist/commands/interactions/list.d.ts.map +1 -0
- package/dist/commands/interactions/list.js +127 -0
- package/dist/commands/interactions/list.js.map +1 -0
- package/dist/commands/interactions/show.d.ts +17 -0
- package/dist/commands/interactions/show.d.ts.map +1 -0
- package/dist/commands/interactions/show.js +80 -0
- package/dist/commands/interactions/show.js.map +1 -0
- package/dist/commands/interactions/update.d.ts +20 -0
- package/dist/commands/interactions/update.d.ts.map +1 -0
- package/dist/commands/interactions/update.js +57 -0
- package/dist/commands/interactions/update.js.map +1 -0
- package/dist/commands/interactions/validate.d.ts +12 -0
- package/dist/commands/interactions/validate.d.ts.map +1 -0
- package/dist/commands/interactions/validate.js +94 -0
- package/dist/commands/interactions/validate.js.map +1 -0
- package/dist/commands/interactions/verify.d.ts +18 -0
- package/dist/commands/interactions/verify.d.ts.map +1 -0
- package/dist/commands/interactions/verify.js +127 -0
- package/dist/commands/interactions/verify.js.map +1 -0
- package/dist/commands/llm/_shared/base-llm-command.d.ts +44 -0
- package/dist/commands/llm/_shared/base-llm-command.d.ts.map +1 -0
- package/dist/commands/llm/_shared/base-llm-command.js +73 -0
- package/dist/commands/llm/_shared/base-llm-command.js.map +1 -0
- package/dist/commands/llm/_shared/coverage.d.ts +61 -0
- package/dist/commands/llm/_shared/coverage.d.ts.map +1 -0
- package/dist/commands/llm/_shared/coverage.js +161 -0
- package/dist/commands/llm/_shared/coverage.js.map +1 -0
- package/dist/commands/llm/_shared/csv-utils.d.ts +65 -0
- package/dist/commands/llm/_shared/csv-utils.d.ts.map +1 -0
- package/dist/commands/llm/_shared/csv-utils.js +231 -0
- package/dist/commands/llm/_shared/csv-utils.js.map +1 -0
- package/dist/commands/llm/_shared/csv.d.ts +44 -0
- package/dist/commands/llm/_shared/csv.d.ts.map +1 -0
- package/dist/commands/llm/_shared/csv.js +76 -0
- package/dist/commands/llm/_shared/csv.js.map +1 -0
- package/dist/commands/llm/_shared/entity-utils.d.ts +11 -0
- package/dist/commands/llm/_shared/entity-utils.d.ts.map +1 -0
- package/dist/commands/llm/_shared/entity-utils.js +87 -0
- package/dist/commands/llm/_shared/entity-utils.js.map +1 -0
- package/dist/commands/llm/_shared/flow-csv.d.ts +74 -0
- package/dist/commands/llm/_shared/flow-csv.d.ts.map +1 -0
- package/dist/commands/llm/_shared/flow-csv.js +198 -0
- package/dist/commands/llm/_shared/flow-csv.js.map +1 -0
- package/dist/commands/llm/_shared/flow-prompts.d.ts +61 -0
- package/dist/commands/llm/_shared/flow-prompts.d.ts.map +1 -0
- package/dist/commands/llm/_shared/flow-prompts.js +281 -0
- package/dist/commands/llm/_shared/flow-prompts.js.map +1 -0
- package/dist/commands/llm/_shared/flow-validation.d.ts +69 -0
- package/dist/commands/llm/_shared/flow-validation.d.ts.map +1 -0
- package/dist/commands/llm/_shared/flow-validation.js +176 -0
- package/dist/commands/llm/_shared/flow-validation.js.map +1 -0
- package/dist/commands/llm/_shared/llm-utils.d.ts +88 -0
- package/dist/commands/llm/_shared/llm-utils.d.ts.map +1 -0
- package/dist/commands/llm/_shared/llm-utils.js +256 -0
- package/dist/commands/llm/_shared/llm-utils.js.map +1 -0
- package/dist/commands/llm/_shared/module-csv.d.ts +76 -0
- package/dist/commands/llm/_shared/module-csv.d.ts.map +1 -0
- package/dist/commands/llm/_shared/module-csv.js +196 -0
- package/dist/commands/llm/_shared/module-csv.js.map +1 -0
- package/dist/commands/llm/_shared/module-prompts.d.ts +107 -0
- package/dist/commands/llm/_shared/module-prompts.d.ts.map +1 -0
- package/dist/commands/llm/_shared/module-prompts.js +395 -0
- package/dist/commands/llm/_shared/module-prompts.js.map +1 -0
- package/dist/commands/llm/_shared/process-utils.d.ts +52 -0
- package/dist/commands/llm/_shared/process-utils.d.ts.map +1 -0
- package/dist/commands/llm/_shared/process-utils.js +214 -0
- package/dist/commands/llm/_shared/process-utils.js.map +1 -0
- package/dist/commands/llm/_shared/prompts.d.ts +132 -0
- package/dist/commands/llm/_shared/prompts.d.ts.map +1 -0
- package/dist/commands/llm/_shared/prompts.js +391 -0
- package/dist/commands/llm/_shared/prompts.js.map +1 -0
- package/dist/commands/llm/_shared/pure-check.d.ts +10 -0
- package/dist/commands/llm/_shared/pure-check.d.ts.map +1 -0
- package/dist/commands/llm/_shared/pure-check.js +449 -0
- package/dist/commands/llm/_shared/pure-check.js.map +1 -0
- package/dist/commands/llm/_shared/verify/content-verifier.d.ts +40 -0
- package/dist/commands/llm/_shared/verify/content-verifier.d.ts.map +1 -0
- package/dist/commands/llm/_shared/verify/content-verifier.js +247 -0
- package/dist/commands/llm/_shared/verify/content-verifier.js.map +1 -0
- package/dist/commands/llm/_shared/verify/coverage-checker.d.ts +34 -0
- package/dist/commands/llm/_shared/verify/coverage-checker.d.ts.map +1 -0
- package/dist/commands/llm/_shared/verify/coverage-checker.js +1096 -0
- package/dist/commands/llm/_shared/verify/coverage-checker.js.map +1 -0
- package/dist/commands/llm/_shared/verify/verify-prompts.d.ts +30 -0
- package/dist/commands/llm/_shared/verify/verify-prompts.d.ts.map +1 -0
- package/dist/commands/llm/_shared/verify/verify-prompts.js +118 -0
- package/dist/commands/llm/_shared/verify/verify-prompts.js.map +1 -0
- package/dist/commands/llm/_shared/verify/verify-types.d.ts +47 -0
- package/dist/commands/llm/_shared/verify/verify-types.d.ts.map +1 -0
- package/dist/commands/llm/_shared/verify/verify-types.js +2 -0
- package/dist/commands/llm/_shared/verify/verify-types.js.map +1 -0
- package/dist/commands/llm/annotate.d.ts +7 -0
- package/dist/commands/llm/annotate.d.ts.map +1 -0
- package/dist/commands/llm/annotate.js +11 -0
- package/dist/commands/llm/annotate.js.map +1 -0
- package/dist/commands/llm/features/feature-grouper.d.ts +31 -0
- package/dist/commands/llm/features/feature-grouper.d.ts.map +1 -0
- package/dist/commands/llm/features/feature-grouper.js +223 -0
- package/dist/commands/llm/features/feature-grouper.js.map +1 -0
- package/dist/commands/llm/features/index.d.ts +6 -0
- package/dist/commands/llm/features/index.d.ts.map +1 -0
- package/dist/commands/llm/features/index.js +6 -0
- package/dist/commands/llm/features/index.js.map +1 -0
- package/dist/commands/llm/features/types.d.ts +10 -0
- package/dist/commands/llm/features/types.d.ts.map +1 -0
- package/dist/commands/llm/features/types.js +5 -0
- package/dist/commands/llm/features/types.js.map +1 -0
- package/dist/commands/llm/features.d.ts +7 -0
- package/dist/commands/llm/features.d.ts.map +1 -0
- package/dist/commands/llm/features.js +11 -0
- package/dist/commands/llm/features.js.map +1 -0
- package/dist/commands/llm/flows/atomic-flow-builder.d.ts +51 -0
- package/dist/commands/llm/flows/atomic-flow-builder.d.ts.map +1 -0
- package/dist/commands/llm/flows/atomic-flow-builder.js +247 -0
- package/dist/commands/llm/flows/atomic-flow-builder.js.map +1 -0
- package/dist/commands/llm/flows/dedup.d.ts +18 -0
- package/dist/commands/llm/flows/dedup.d.ts.map +1 -0
- package/dist/commands/llm/flows/dedup.js +76 -0
- package/dist/commands/llm/flows/dedup.js.map +1 -0
- package/dist/commands/llm/flows/entry-point-detector.d.ts +41 -0
- package/dist/commands/llm/flows/entry-point-detector.d.ts.map +1 -0
- package/dist/commands/llm/flows/entry-point-detector.js +388 -0
- package/dist/commands/llm/flows/entry-point-detector.js.map +1 -0
- package/dist/commands/llm/flows/flow-enhancer.d.ts +21 -0
- package/dist/commands/llm/flows/flow-enhancer.d.ts.map +1 -0
- package/dist/commands/llm/flows/flow-enhancer.js +166 -0
- package/dist/commands/llm/flows/flow-enhancer.js.map +1 -0
- package/dist/commands/llm/flows/flow-tracer.d.ts +50 -0
- package/dist/commands/llm/flows/flow-tracer.d.ts.map +1 -0
- package/dist/commands/llm/flows/flow-tracer.js +271 -0
- package/dist/commands/llm/flows/flow-tracer.js.map +1 -0
- package/dist/commands/llm/flows/flow-validator.d.ts +31 -0
- package/dist/commands/llm/flows/flow-validator.d.ts.map +1 -0
- package/dist/commands/llm/flows/flow-validator.js +262 -0
- package/dist/commands/llm/flows/flow-validator.js.map +1 -0
- package/dist/commands/llm/flows/gap-flow-generator.d.ts +13 -0
- package/dist/commands/llm/flows/gap-flow-generator.d.ts.map +1 -0
- package/dist/commands/llm/flows/gap-flow-generator.js +48 -0
- package/dist/commands/llm/flows/gap-flow-generator.js.map +1 -0
- package/dist/commands/llm/flows/index.d.ts +12 -0
- package/dist/commands/llm/flows/index.d.ts.map +1 -0
- package/dist/commands/llm/flows/index.js +12 -0
- package/dist/commands/llm/flows/index.js.map +1 -0
- package/dist/commands/llm/flows/types.d.ts +87 -0
- package/dist/commands/llm/flows/types.d.ts.map +1 -0
- package/dist/commands/llm/flows/types.js +5 -0
- package/dist/commands/llm/flows/types.js.map +1 -0
- package/dist/commands/llm/flows.d.ts +7 -0
- package/dist/commands/llm/flows.d.ts.map +1 -0
- package/dist/commands/llm/flows.js +11 -0
- package/dist/commands/llm/flows.js.map +1 -0
- package/dist/commands/llm/interactions.d.ts +7 -0
- package/dist/commands/llm/interactions.d.ts.map +1 -0
- package/dist/commands/llm/interactions.js +11 -0
- package/dist/commands/llm/interactions.js.map +1 -0
- package/dist/commands/llm/modules.d.ts +7 -0
- package/dist/commands/llm/modules.d.ts.map +1 -0
- package/dist/commands/llm/modules.js +11 -0
- package/dist/commands/llm/modules.js.map +1 -0
- package/dist/commands/llm/relationships.d.ts +7 -0
- package/dist/commands/llm/relationships.d.ts.map +1 -0
- package/dist/commands/llm/relationships.js +11 -0
- package/dist/commands/llm/relationships.js.map +1 -0
- package/dist/commands/modules/assign.d.ts +14 -0
- package/dist/commands/modules/assign.d.ts.map +1 -0
- package/dist/commands/modules/assign.js +54 -0
- package/dist/commands/modules/assign.js.map +1 -0
- package/dist/commands/modules/create.d.ts +16 -0
- package/dist/commands/modules/create.d.ts.map +1 -0
- package/dist/commands/modules/create.js +37 -0
- package/dist/commands/modules/create.js.map +1 -0
- package/dist/commands/modules/delete.d.ts +14 -0
- package/dist/commands/modules/delete.d.ts.map +1 -0
- package/dist/commands/modules/delete.js +54 -0
- package/dist/commands/modules/delete.js.map +1 -0
- package/dist/commands/modules/generate.d.ts +84 -0
- package/dist/commands/modules/generate.d.ts.map +1 -0
- package/dist/commands/modules/generate.js +1234 -0
- package/dist/commands/modules/generate.js.map +1 -0
- package/dist/commands/modules/index.d.ts +2 -0
- package/dist/commands/modules/index.d.ts.map +1 -0
- package/dist/commands/modules/index.js +2 -0
- package/dist/commands/modules/index.js.map +1 -0
- package/dist/commands/modules/list.d.ts +13 -0
- package/dist/commands/modules/list.d.ts.map +1 -0
- package/dist/commands/modules/list.js +92 -0
- package/dist/commands/modules/list.js.map +1 -0
- package/dist/commands/modules/prune.d.ts +10 -0
- package/dist/commands/modules/prune.d.ts.map +1 -0
- package/dist/commands/modules/prune.js +23 -0
- package/dist/commands/modules/prune.js.map +1 -0
- package/dist/commands/modules/show.d.ts +15 -0
- package/dist/commands/modules/show.d.ts.map +1 -0
- package/dist/commands/modules/show.js +95 -0
- package/dist/commands/modules/show.js.map +1 -0
- package/dist/commands/modules/unassign.d.ts +13 -0
- package/dist/commands/modules/unassign.d.ts.map +1 -0
- package/dist/commands/modules/unassign.js +49 -0
- package/dist/commands/modules/unassign.js.map +1 -0
- package/dist/commands/modules/update.d.ts +15 -0
- package/dist/commands/modules/update.d.ts.map +1 -0
- package/dist/commands/modules/update.js +50 -0
- package/dist/commands/modules/update.js.map +1 -0
- package/dist/commands/modules/verify.d.ts +18 -0
- package/dist/commands/modules/verify.d.ts.map +1 -0
- package/dist/commands/modules/verify.js +114 -0
- package/dist/commands/modules/verify.js.map +1 -0
- package/dist/commands/overview.d.ts +12 -0
- package/dist/commands/overview.d.ts.map +1 -0
- package/dist/commands/overview.js +219 -0
- package/dist/commands/overview.js.map +1 -0
- package/dist/commands/parse.d.ts +30 -0
- package/dist/commands/parse.d.ts.map +1 -0
- package/dist/commands/parse.js +211 -0
- package/dist/commands/parse.js.map +1 -0
- package/dist/commands/process-groups/index.d.ts +2 -0
- package/dist/commands/process-groups/index.d.ts.map +1 -0
- package/dist/commands/process-groups/index.js +2 -0
- package/dist/commands/process-groups/index.js.map +1 -0
- package/dist/commands/process-groups/list.d.ts +11 -0
- package/dist/commands/process-groups/list.d.ts.map +1 -0
- package/dist/commands/process-groups/list.js +98 -0
- package/dist/commands/process-groups/list.js.map +1 -0
- package/dist/commands/relationships/annotate.d.ts +27 -0
- package/dist/commands/relationships/annotate.d.ts.map +1 -0
- package/dist/commands/relationships/annotate.js +453 -0
- package/dist/commands/relationships/annotate.js.map +1 -0
- package/dist/commands/relationships/index.d.ts +2 -0
- package/dist/commands/relationships/index.d.ts.map +1 -0
- package/dist/commands/relationships/index.js +2 -0
- package/dist/commands/relationships/index.js.map +1 -0
- package/dist/commands/relationships/list.d.ts +18 -0
- package/dist/commands/relationships/list.d.ts.map +1 -0
- package/dist/commands/relationships/list.js +147 -0
- package/dist/commands/relationships/list.js.map +1 -0
- package/dist/commands/relationships/next.d.ts +17 -0
- package/dist/commands/relationships/next.d.ts.map +1 -0
- package/dist/commands/relationships/next.js +178 -0
- package/dist/commands/relationships/next.js.map +1 -0
- package/dist/commands/relationships/set.d.ts +19 -0
- package/dist/commands/relationships/set.d.ts.map +1 -0
- package/dist/commands/relationships/set.js +65 -0
- package/dist/commands/relationships/set.js.map +1 -0
- package/dist/commands/relationships/show.d.ts +13 -0
- package/dist/commands/relationships/show.d.ts.map +1 -0
- package/dist/commands/relationships/show.js +59 -0
- package/dist/commands/relationships/show.js.map +1 -0
- package/dist/commands/relationships/unset.d.ts +16 -0
- package/dist/commands/relationships/unset.d.ts.map +1 -0
- package/dist/commands/relationships/unset.js +62 -0
- package/dist/commands/relationships/unset.js.map +1 -0
- package/dist/commands/relationships/verify.d.ts +24 -0
- package/dist/commands/relationships/verify.d.ts.map +1 -0
- package/dist/commands/relationships/verify.js +328 -0
- package/dist/commands/relationships/verify.js.map +1 -0
- package/dist/commands/stats.d.ts +11 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +207 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/symbols/annotate.d.ts +32 -0
- package/dist/commands/symbols/annotate.d.ts.map +1 -0
- package/dist/commands/symbols/annotate.js +862 -0
- package/dist/commands/symbols/annotate.js.map +1 -0
- package/dist/commands/symbols/deps.d.ts +18 -0
- package/dist/commands/symbols/deps.d.ts.map +1 -0
- package/dist/commands/symbols/deps.js +104 -0
- package/dist/commands/symbols/deps.js.map +1 -0
- package/dist/commands/symbols/index.d.ts +2 -0
- package/dist/commands/symbols/index.d.ts.map +1 -0
- package/dist/commands/symbols/index.js +2 -0
- package/dist/commands/symbols/index.js.map +1 -0
- package/dist/commands/symbols/list.d.ts +17 -0
- package/dist/commands/symbols/list.d.ts.map +1 -0
- package/dist/commands/symbols/list.js +136 -0
- package/dist/commands/symbols/list.js.map +1 -0
- package/dist/commands/symbols/next.d.ts +15 -0
- package/dist/commands/symbols/next.d.ts.map +1 -0
- package/dist/commands/symbols/next.js +147 -0
- package/dist/commands/symbols/next.js.map +1 -0
- package/dist/commands/symbols/prereqs.d.ts +18 -0
- package/dist/commands/symbols/prereqs.d.ts.map +1 -0
- package/dist/commands/symbols/prereqs.js +107 -0
- package/dist/commands/symbols/prereqs.js.map +1 -0
- package/dist/commands/symbols/ready.d.ts +17 -0
- package/dist/commands/symbols/ready.d.ts.map +1 -0
- package/dist/commands/symbols/ready.js +126 -0
- package/dist/commands/symbols/ready.js.map +1 -0
- package/dist/commands/symbols/set.d.ts +27 -0
- package/dist/commands/symbols/set.d.ts.map +1 -0
- package/dist/commands/symbols/set.js +241 -0
- package/dist/commands/symbols/set.js.map +1 -0
- package/dist/commands/symbols/show.d.ts +19 -0
- package/dist/commands/symbols/show.d.ts.map +1 -0
- package/dist/commands/symbols/show.js +182 -0
- package/dist/commands/symbols/show.js.map +1 -0
- package/dist/commands/symbols/understood.d.ts +15 -0
- package/dist/commands/symbols/understood.d.ts.map +1 -0
- package/dist/commands/symbols/understood.js +101 -0
- package/dist/commands/symbols/understood.js.map +1 -0
- package/dist/commands/symbols/unset.d.ts +16 -0
- package/dist/commands/symbols/unset.d.ts.map +1 -0
- package/dist/commands/symbols/unset.js +48 -0
- package/dist/commands/symbols/unset.js.map +1 -0
- package/dist/commands/symbols/verify.d.ts +25 -0
- package/dist/commands/symbols/verify.d.ts.map +1 -0
- package/dist/commands/symbols/verify.js +360 -0
- package/dist/commands/symbols/verify.js.map +1 -0
- package/dist/db/connection.d.ts +14 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +37 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/database-facade.d.ts +125 -0
- package/dist/db/database-facade.d.ts.map +1 -0
- package/dist/db/database-facade.js +347 -0
- package/dist/db/database-facade.js.map +1 -0
- package/dist/db/database.d.ts +9 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +11 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +11 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/repositories/_shared/call-graph-query.d.ts +10 -0
- package/dist/db/repositories/_shared/call-graph-query.d.ts.map +1 -0
- package/dist/db/repositories/_shared/call-graph-query.js +59 -0
- package/dist/db/repositories/_shared/call-graph-query.js.map +1 -0
- package/dist/db/repositories/call-graph-service.d.ts +28 -0
- package/dist/db/repositories/call-graph-service.d.ts.map +1 -0
- package/dist/db/repositories/call-graph-service.js +223 -0
- package/dist/db/repositories/call-graph-service.js.map +1 -0
- package/dist/db/repositories/definition-repository.d.ts +99 -0
- package/dist/db/repositories/definition-repository.d.ts.map +1 -0
- package/dist/db/repositories/definition-repository.js +317 -0
- package/dist/db/repositories/definition-repository.js.map +1 -0
- package/dist/db/repositories/dependency-repository.d.ts +78 -0
- package/dist/db/repositories/dependency-repository.d.ts.map +1 -0
- package/dist/db/repositories/dependency-repository.js +446 -0
- package/dist/db/repositories/dependency-repository.js.map +1 -0
- package/dist/db/repositories/domain-repository.d.ts +97 -0
- package/dist/db/repositories/domain-repository.d.ts.map +1 -0
- package/dist/db/repositories/domain-repository.js +261 -0
- package/dist/db/repositories/domain-repository.js.map +1 -0
- package/dist/db/repositories/feature-repository.d.ts +64 -0
- package/dist/db/repositories/feature-repository.d.ts.map +1 -0
- package/dist/db/repositories/feature-repository.js +189 -0
- package/dist/db/repositories/feature-repository.js.map +1 -0
- package/dist/db/repositories/file-repository.d.ts +67 -0
- package/dist/db/repositories/file-repository.d.ts.map +1 -0
- package/dist/db/repositories/file-repository.js +179 -0
- package/dist/db/repositories/file-repository.js.map +1 -0
- package/dist/db/repositories/flow-repository.d.ts +172 -0
- package/dist/db/repositories/flow-repository.d.ts.map +1 -0
- package/dist/db/repositories/flow-repository.js +599 -0
- package/dist/db/repositories/flow-repository.js.map +1 -0
- package/dist/db/repositories/graph-repository.d.ts +93 -0
- package/dist/db/repositories/graph-repository.d.ts.map +1 -0
- package/dist/db/repositories/graph-repository.js +413 -0
- package/dist/db/repositories/graph-repository.js.map +1 -0
- package/dist/db/repositories/index.d.ts +20 -0
- package/dist/db/repositories/index.d.ts.map +1 -0
- package/dist/db/repositories/index.js +15 -0
- package/dist/db/repositories/index.js.map +1 -0
- package/dist/db/repositories/interaction-analysis.d.ts +78 -0
- package/dist/db/repositories/interaction-analysis.d.ts.map +1 -0
- package/dist/db/repositories/interaction-analysis.js +340 -0
- package/dist/db/repositories/interaction-analysis.js.map +1 -0
- package/dist/db/repositories/interaction-repository.d.ts +145 -0
- package/dist/db/repositories/interaction-repository.d.ts.map +1 -0
- package/dist/db/repositories/interaction-repository.js +395 -0
- package/dist/db/repositories/interaction-repository.js.map +1 -0
- package/dist/db/repositories/metadata-repository.d.ts +110 -0
- package/dist/db/repositories/metadata-repository.d.ts.map +1 -0
- package/dist/db/repositories/metadata-repository.js +294 -0
- package/dist/db/repositories/metadata-repository.js.map +1 -0
- package/dist/db/repositories/module-repository.d.ts +162 -0
- package/dist/db/repositories/module-repository.d.ts.map +1 -0
- package/dist/db/repositories/module-repository.js +519 -0
- package/dist/db/repositories/module-repository.js.map +1 -0
- package/dist/db/repositories/relationship-repository.d.ts +98 -0
- package/dist/db/repositories/relationship-repository.d.ts.map +1 -0
- package/dist/db/repositories/relationship-repository.js +421 -0
- package/dist/db/repositories/relationship-repository.js.map +1 -0
- package/dist/db/schema-manager.d.ts +31 -0
- package/dist/db/schema-manager.d.ts.map +1 -0
- package/dist/db/schema-manager.js +398 -0
- package/dist/db/schema-manager.js.map +1 -0
- package/dist/db/schema.d.ts +404 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +234 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/utils/tree-builder.d.ts +25 -0
- package/dist/db/utils/tree-builder.d.ts.map +1 -0
- package/dist/db/utils/tree-builder.js +38 -0
- package/dist/db/utils/tree-builder.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/ast-parser.d.ts +23 -0
- package/dist/parser/ast-parser.d.ts.map +1 -0
- package/dist/parser/ast-parser.js +65 -0
- package/dist/parser/ast-parser.js.map +1 -0
- package/dist/parser/definition-extractor.d.ts +29 -0
- package/dist/parser/definition-extractor.d.ts.map +1 -0
- package/dist/parser/definition-extractor.js +379 -0
- package/dist/parser/definition-extractor.js.map +1 -0
- package/dist/parser/reference-extractor.d.ts +72 -0
- package/dist/parser/reference-extractor.d.ts.map +1 -0
- package/dist/parser/reference-extractor.js +759 -0
- package/dist/parser/reference-extractor.js.map +1 -0
- package/dist/utils/file-scanner.d.ts +6 -0
- package/dist/utils/file-scanner.d.ts.map +1 -0
- package/dist/utils/file-scanner.js +33 -0
- package/dist/utils/file-scanner.js.map +1 -0
- package/dist/web/api-transforms.d.ts +4 -0
- package/dist/web/api-transforms.d.ts.map +1 -0
- package/dist/web/api-transforms.js +4 -0
- package/dist/web/api-transforms.js.map +1 -0
- package/dist/web/server.d.ts +16 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +229 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/server.test.d.ts +2 -0
- package/dist/web/server.test.d.ts.map +1 -0
- package/dist/web/server.test.js +505 -0
- package/dist/web/server.test.js.map +1 -0
- package/dist/web/transforms/flow-transforms.d.ts +117 -0
- package/dist/web/transforms/flow-transforms.d.ts.map +1 -0
- package/dist/web/transforms/flow-transforms.js +202 -0
- package/dist/web/transforms/flow-transforms.js.map +1 -0
- package/dist/web/transforms/index.d.ts +4 -0
- package/dist/web/transforms/index.d.ts.map +1 -0
- package/dist/web/transforms/index.js +4 -0
- package/dist/web/transforms/index.js.map +1 -0
- package/dist/web/transforms/module-transforms.d.ts +42 -0
- package/dist/web/transforms/module-transforms.d.ts.map +1 -0
- package/dist/web/transforms/module-transforms.js +64 -0
- package/dist/web/transforms/module-transforms.js.map +1 -0
- package/dist/web/transforms/symbol-transforms.d.ts +31 -0
- package/dist/web/transforms/symbol-transforms.d.ts.map +1 -0
- package/dist/web/transforms/symbol-transforms.js +95 -0
- package/dist/web/transforms/symbol-transforms.js.map +1 -0
- package/package.json +96 -0
- package/ui/dist/assets/index-DP3dRMlh.js +268 -0
- package/ui/dist/assets/index-DP3dRMlh.js.map +1 -0
- package/ui/dist/assets/index-Db204Xn1.css +1 -0
- package/ui/dist/index.html +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DP3dRMlh.js","sources":["../../src/api/client.ts","../../src/state/store.ts","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js","../../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespaces.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespace.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/creator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selector.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/array.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectorAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/matcher.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/enter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/exit.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/join.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/call.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/empty.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/attr.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/window.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/style.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/property.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/classed.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/text.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/html.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/raise.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/lower.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/append.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/insert.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/remove.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/clone.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/datum.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/index.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/pointer.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectAll.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/noevent.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/nodrag.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/constant.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/event.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/drag.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/constant.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/rgb.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/number.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/string.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/zoom.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timeout.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attr.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/style.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/text.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js","../../../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/cubic.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/index.js","../../../node_modules/.pnpm/d3-chord@3.0.1/node_modules/d3-chord/src/math.js","../../../node_modules/.pnpm/d3-chord@3.0.1/node_modules/d3-chord/src/chord.js","../../../node_modules/.pnpm/d3-path@3.1.0/node_modules/d3-path/src/path.js","../../../node_modules/.pnpm/d3-chord@3.0.1/node_modules/d3-chord/src/array.js","../../../node_modules/.pnpm/d3-chord@3.0.1/node_modules/d3-chord/src/constant.js","../../../node_modules/.pnpm/d3-chord@3.0.1/node_modules/d3-chord/src/ribbon.js","../../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/center.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/add.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/cover.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/data.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/extent.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/quad.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/find.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/remove.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/root.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/size.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/visit.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/visitAfter.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/x.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/y.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/quadtree.js","../../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/constant.js","../../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/jiggle.js","../../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/collide.js","../../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/link.js","../../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/lcg.js","../../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/simulation.js","../../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/manyBody.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/count.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/each.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/find.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/sum.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/sort.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/path.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/descendants.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/leaves.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/links.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/iterator.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/hierarchy/index.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/accessors.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/constant.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/lcg.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/array.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/pack/enclose.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/pack/siblings.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/pack/index.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/round.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/dice.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/tree.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/slice.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/squarify.js","../../../node_modules/.pnpm/d3-hierarchy@3.1.2/node_modules/d3-hierarchy/src/treemap/index.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/constant.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/math.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/path.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/arc.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/array.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/point.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/bump.js","../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/link.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/constant.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/event.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/noevent.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/zoom.js","../../src/d3/file-treemap.ts","../../src/views/files-treemap.ts","../../src/d3/colors.ts","../../src/d3/module-dag.ts","../../src/views/flows-dag.ts","../../src/d3/chord-diagram.ts","../../src/views/interactions.ts","../../src/views/modules-tree.ts","../../src/d3/hierarchy.ts","../../src/views/sunburst.ts","../../src/d3/zoom.ts","../../src/views/symbols.ts","../../src/main.ts"],"sourcesContent":["import type {\n DbStats,\n FlowsDagResponse,\n FlowsResponse,\n InteractionsResponse,\n ModulesResponse,\n SymbolGraphResponse,\n} from '../types/api';\n\n// API client interface\nexport interface ApiClient {\n getStats(): Promise<DbStats>;\n getSymbolGraph(): Promise<SymbolGraphResponse>;\n getModules(): Promise<ModulesResponse>;\n getFlows(): Promise<FlowsResponse>;\n getFlowsDag(): Promise<FlowsDagResponse>;\n getInteractions(): Promise<InteractionsResponse>;\n}\n\n// Create the API client\nexport function createApiClient(baseUrl = ''): ApiClient {\n async function fetchJson<T>(path: string): Promise<T> {\n const response = await fetch(`${baseUrl}${path}`);\n\n if (!response.ok) {\n throw new Error(`API error: ${response.status} ${response.statusText}`);\n }\n\n return response.json() as Promise<T>;\n }\n\n return {\n getStats() {\n return fetchJson<DbStats>('/api/stats');\n },\n\n getSymbolGraph() {\n return fetchJson<SymbolGraphResponse>('/api/graph/symbols');\n },\n\n getModules() {\n return fetchJson<ModulesResponse>('/api/modules');\n },\n\n getFlows() {\n return fetchJson<FlowsResponse>('/api/flows');\n },\n\n getFlowsDag() {\n return fetchJson<FlowsDagResponse>('/api/flows/dag');\n },\n\n getInteractions() {\n return fetchJson<InteractionsResponse>('/api/interactions');\n },\n };\n}\n","import type {\n FlowsDagResponse,\n FlowsResponse,\n InteractionsResponse,\n ModulesResponse,\n RelationshipType,\n SymbolGraphResponse,\n} from '../types/api';\n\n// Application state interface\nexport interface AppState {\n // Data\n graphData: SymbolGraphResponse | null;\n modulesData: ModulesResponse | null;\n flowsData: FlowsResponse | null;\n flowsDagData: FlowsDagResponse | null;\n interactionsData: InteractionsResponse | null;\n\n // UI state\n currentView: 'symbols' | 'sunburst' | 'modules' | 'flows' | 'interactions' | 'files';\n selectedGrouping: RelationshipType;\n selectedFlowId: number | null; // Currently viewed flow (for detail view)\n selectedFlows: Set<number>;\n expandedModules: Set<number>;\n sidebarCollapsed: boolean;\n selectedSymbolId: number | null;\n symbolSearchQuery: string;\n\n // Loading states\n loading: boolean;\n error: string | null;\n}\n\n// Subscriber callback type\ntype Subscriber = (state: AppState) => void;\n\n// Simple reactive store\nexport interface Store {\n getState(): AppState;\n setState(partial: Partial<AppState>): void;\n subscribe(callback: Subscriber): () => void;\n}\n\nexport function createStore(): Store {\n // Initial state\n let state: AppState = {\n graphData: null,\n modulesData: null,\n flowsData: null,\n flowsDagData: null,\n interactionsData: null,\n currentView: 'symbols',\n selectedGrouping: 'structure',\n selectedFlowId: null,\n selectedFlows: new Set(),\n expandedModules: new Set(),\n sidebarCollapsed: false,\n selectedSymbolId: null,\n symbolSearchQuery: '',\n loading: true,\n error: null,\n };\n\n // Subscribers\n const subscribers = new Set<Subscriber>();\n\n // Notify all subscribers\n function notify() {\n for (const callback of subscribers) {\n callback(state);\n }\n }\n\n return {\n getState() {\n return state;\n },\n\n setState(partial: Partial<AppState>) {\n state = { ...state, ...partial };\n notify();\n },\n\n subscribe(callback: Subscriber) {\n subscribers.add(callback);\n // Return unsubscribe function\n return () => {\n subscribers.delete(callback);\n };\n },\n };\n}\n\n// Helper functions for common state operations\nexport function toggleFlow(store: Store, flowId: number) {\n const state = store.getState();\n const selectedFlows = new Set(state.selectedFlows);\n\n if (selectedFlows.has(flowId)) {\n selectedFlows.delete(flowId);\n } else {\n selectedFlows.add(flowId);\n }\n\n store.setState({ selectedFlows });\n}\n\nexport function toggleModule(store: Store, moduleId: number) {\n const state = store.getState();\n const expandedModules = new Set(state.expandedModules);\n\n if (expandedModules.has(moduleId)) {\n expandedModules.delete(moduleId);\n } else {\n expandedModules.add(moduleId);\n }\n\n store.setState({ expandedModules });\n}\n\nexport function selectAllFlows(store: Store) {\n const state = store.getState();\n if (!state.flowsDagData) return;\n\n const selectedFlows = new Set(state.flowsDagData.flows.map((f) => f.id));\n store.setState({ selectedFlows });\n}\n\nexport function clearFlowSelection(store: Store) {\n store.setState({ selectedFlows: new Set() });\n}\n\nexport function selectFlow(store: Store, flowId: number | null) {\n const selectedFlows = flowId ? new Set([flowId]) : new Set<number>();\n store.setState({ selectedFlowId: flowId, selectedFlows });\n}\n\nexport function selectSymbol(store: Store, id: number | null) {\n store.setState({ selectedSymbolId: id });\n}\n\nexport function setSymbolSearch(store: Store, query: string) {\n store.setState({ symbolSearchQuery: query });\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export var abs = Math.abs;\nexport var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\nexport var epsilon = 1e-12;\n","import {max, tau} from \"./math.js\";\n\nfunction range(i, j) {\n return Array.from({length: j - i}, (_, k) => i + k);\n}\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n return chord(false, false);\n}\n\nexport function chordTranspose() {\n return chord(false, true);\n}\n\nexport function chordDirected() {\n return chord(true, false);\n}\n\nfunction chord(directed, transpose) {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = new Array(n),\n groupIndex = range(0, n),\n chords = new Array(n * n),\n groups = new Array(n),\n k = 0, dx;\n\n matrix = Float64Array.from({length: n * n}, transpose\n ? (_, i) => matrix[i % n][i / n | 0]\n : (_, i) => matrix[i / n | 0][i % n]);\n\n // Compute the scaling factor from value to angle in [0, 2pi].\n for (let i = 0; i < n; ++i) {\n let x = 0;\n for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i];\n k += groupSums[i] = x;\n }\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the angles for each group and constituent chord.\n {\n let x = 0;\n if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b]));\n for (const i of groupIndex) {\n const x0 = x;\n if (directed) {\n const subgroupIndex = range(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]);\n if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b]));\n for (const j of subgroupIndex) {\n if (j < 0) {\n const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null});\n chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]};\n } else {\n const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n }\n }\n groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n } else {\n const subgroupIndex = range(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]);\n if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b]));\n for (const j of subgroupIndex) {\n let chord;\n if (i < j) {\n chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n } else {\n chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null});\n chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n if (i === j) chord.source = chord.target;\n }\n if (chord.source && chord.target && chord.source.value < chord.target.value) {\n const source = chord.source;\n chord.source = chord.target;\n chord.target = source;\n }\n }\n groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n }\n x += dx;\n }\n }\n\n // Remove empty chords.\n chords = Object.values(chords);\n chords.groups = groups;\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {abs, cos, epsilon, halfPi, sin} from \"./math.js\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nfunction defaultPadAngle() {\n return 0;\n}\n\nfunction defaultArrowheadRadius() {\n return 10;\n}\n\nfunction ribbon(headRadius) {\n var source = defaultSource,\n target = defaultTarget,\n sourceRadius = defaultRadius,\n targetRadius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n padAngle = defaultPadAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n s = source.apply(this, arguments),\n t = target.apply(this, arguments),\n ap = padAngle.apply(this, arguments) / 2,\n argv = slice.call(arguments),\n sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n tr = +targetRadius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n if (ap > epsilon) {\n if (abs(sa1 - sa0) > ap * 2 + epsilon) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n else sa0 = sa1 = (sa0 + sa1) / 2;\n if (abs(ta1 - ta0) > ap * 2 + epsilon) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n else ta0 = ta1 = (ta0 + ta1) / 2;\n }\n\n context.moveTo(sr * cos(sa0), sr * sin(sa0));\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) {\n if (headRadius) {\n var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n context.quadraticCurveTo(0, 0, tr2 * cos(ta0), tr2 * sin(ta0));\n context.lineTo(tr * cos(ta2), tr * sin(ta2));\n context.lineTo(tr2 * cos(ta1), tr2 * sin(ta1));\n } else {\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n }\n context.quadraticCurveTo(0, 0, sr * cos(sa0), sr * sin(sa0));\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n if (headRadius) ribbon.headRadius = function(_) {\n return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : headRadius;\n };\n\n ribbon.radius = function(_) {\n return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n };\n\n ribbon.sourceRadius = function(_) {\n return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n };\n\n ribbon.targetRadius = function(_) {\n return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : targetRadius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : padAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n\nexport default function() {\n return ribbon();\n}\n\nexport function ribbonArrow() {\n return ribbon(defaultArrowheadRadius);\n}\n","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n let m = array.length,\n t,\n i;\n\n while (m) {\n i = random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle} from \"../array.js\";\nimport lcg from \"../lcg.js\";\n\nexport default function(circles) {\n return packEncloseRandom(circles, lcg());\n}\n\nexport function packEncloseRandom(circles, random) {\n var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport {packEncloseRandom} from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packSiblingsRandom(circles, random) {\n if (!(n = (circles = array(circles)).length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packSiblingsRandom(circles, lcg());\n return circles;\n}\n","import {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport {packSiblingsRandom} from \"./siblings.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n const random = lcg();\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildrenRandom(padding, 0.5, random))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildrenRandom(constantZero, 1, random))\n .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packSiblingsRandom(children, random);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nexport function link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null,\n output = null,\n path = withPath(link);\n\n function link() {\n let buffer;\n const argv = slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nexport function linkHorizontal() {\n return link(bumpX);\n}\n\nexport function linkVertical() {\n return link(bumpY);\n}\n\nexport function linkRadial() {\n const l = link(bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","import * as d3 from 'd3';\nimport type { SymbolNode } from '../types/api';\n\nexport interface FileTreeNode {\n name: string;\n children?: FileTreeNode[];\n value?: number;\n fullPath?: string;\n symbolCount?: number;\n}\n\n/** Find and strip the common directory prefix from all paths. */\nfunction stripCommonPrefix(paths: string[]): { prefix: string; stripped: Map<string, string> } {\n if (paths.length === 0) return { prefix: '', stripped: new Map() };\n\n const splitPaths = paths.map((p) => p.split('/').filter(Boolean));\n const minLen = Math.min(...splitPaths.map((p) => p.length));\n\n let commonLen = 0;\n for (let i = 0; i < minLen - 1; i++) {\n const seg = splitPaths[0][i];\n if (splitPaths.every((p) => p[i] === seg)) {\n commonLen = i + 1;\n } else {\n break;\n }\n }\n\n const prefix = commonLen > 0 ? splitPaths[0].slice(0, commonLen).join('/') : '';\n const stripped = new Map<string, string>();\n for (const p of paths) {\n const parts = p.split('/').filter(Boolean);\n stripped.set(p, parts.slice(commonLen).join('/'));\n }\n return { prefix, stripped };\n}\n\n/** Aggregate lines & symbol counts per filePath, then build a nested directory tree. */\nexport function buildFileTree(nodes: SymbolNode[]): FileTreeNode {\n // Aggregate per file\n const fileMap = new Map<string, { lines: number; symbols: number }>();\n for (const n of nodes) {\n const existing = fileMap.get(n.filePath);\n if (existing) {\n existing.lines += n.lines;\n existing.symbols += 1;\n } else {\n fileMap.set(n.filePath, { lines: n.lines, symbols: 1 });\n }\n }\n\n // Strip common prefix so we get meaningful top-level groupings\n const { stripped } = stripCommonPrefix([...fileMap.keys()]);\n\n // Build raw tree\n const root: FileTreeNode = { name: 'root', children: [] };\n\n for (const [filePath, info] of fileMap) {\n const relativePath = stripped.get(filePath) ?? filePath;\n const parts = relativePath.split('/').filter(Boolean);\n let current = root;\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const isLeaf = i === parts.length - 1;\n if (isLeaf) {\n current.children!.push({\n name: part,\n value: info.lines || 1,\n fullPath: filePath,\n symbolCount: info.symbols,\n });\n } else {\n let child = current.children!.find((c) => c.children && c.name === part);\n if (!child) {\n child = { name: part, children: [] };\n current.children!.push(child);\n }\n current = child;\n }\n }\n }\n\n // Collapse single-child directory chains\n collapse(root);\n\n // Compute symbolCount for directories\n computeDirSymbolCount(root);\n\n return root;\n}\n\nfunction collapse(node: FileTreeNode): void {\n if (!node.children) return;\n for (const child of node.children) collapse(child);\n\n // Collapse: if this directory has exactly one child and that child is also a directory\n let children: FileTreeNode[] | undefined = node.children;\n while (children && children.length === 1 && children[0].children) {\n const only: FileTreeNode = children[0];\n node.name = node.name === 'root' ? only.name : `${node.name}/${only.name}`;\n node.children = only.children;\n children = node.children;\n }\n}\n\nfunction computeDirSymbolCount(node: FileTreeNode): number {\n if (!node.children) return node.symbolCount ?? 0;\n let total = 0;\n for (const child of node.children) {\n total += computeDirSymbolCount(child);\n }\n node.symbolCount = total;\n return total;\n}\n\nexport interface FileTreemapControls {\n navigateTo(depth: number): void;\n}\n\nexport function renderFileTreemap(\n svgSelector: string,\n containerSelector: string,\n data: FileTreeNode,\n onSelect?: (path: string[]) => void\n): FileTreemapControls {\n const noop: FileTreemapControls = { navigateTo() {} };\n const mainContainer = document.querySelector(containerSelector);\n if (!mainContainer) return noop;\n\n const svgEl = document.querySelector(svgSelector) as SVGSVGElement;\n const width = svgEl.clientWidth;\n const height = svgEl.clientHeight;\n if (width === 0 || height === 0) return noop;\n\n const svg = d3.select<SVGSVGElement, unknown>(svgSelector);\n svg.selectAll('*').remove();\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n\n const tooltip = d3.select('#tooltip');\n\n // HSL palette — distinct hues that look good on dark backgrounds, with moderate saturation\n const PALETTE_HUES = [\n { h: 210, s: 45 }, // Blue\n { h: 160, s: 38 }, // Teal\n { h: 280, s: 35 }, // Purple\n { h: 35, s: 45 }, // Amber\n { h: 120, s: 35 }, // Green\n { h: 350, s: 38 }, // Rose\n { h: 195, s: 40 }, // Cyan\n { h: 55, s: 42 }, // Gold\n { h: 310, s: 32 }, // Magenta\n { h: 85, s: 35 }, // Lime\n ];\n\n // Collect \"color roots\": expand root children that have sub-directories,\n // so their children each get a distinct hue. Container dirs (like \"apps\")\n // that just group sub-dirs get a neutral fill instead of one dominant color.\n function collectColorRoots(rootNode: FileTreeNode): FileTreeNode[] {\n const roots: FileTreeNode[] = [];\n for (const child of rootNode.children ?? []) {\n if (child.children?.some((c) => c.children)) {\n // This dir has sub-directories — expand: use its children as color roots\n for (const grandchild of child.children) {\n roots.push(grandchild);\n }\n } else {\n roots.push(child);\n }\n }\n return roots;\n }\n\n function buildColorIndex(rootNode: FileTreeNode): Map<string, number> {\n const map = new Map<string, number>();\n const colorRoots = collectColorRoots(rootNode);\n for (let i = 0; i < colorRoots.length; i++) {\n assignIndex(colorRoots[i], i % PALETTE_HUES.length, map);\n }\n return map;\n }\n\n function assignIndex(node: FileTreeNode, idx: number, map: Map<string, number>): void {\n map.set(node.name, idx);\n for (const child of node.children ?? []) {\n assignIndex(child, idx, map);\n }\n }\n\n function cellFillFromDepth(hueIdx: number, depth: number): string {\n const { h, s } = PALETTE_HUES[hueIdx % PALETTE_HUES.length];\n const l = Math.min(18 + (depth - 1) * 3, 30);\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n\n function cellStrokeFromDepth(hueIdx: number, depth: number): string {\n const { h, s } = PALETTE_HUES[hueIdx % PALETTE_HUES.length];\n const l = Math.min(32 + (depth - 1) * 3, 45);\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n\n // Zoom stack: track current root for drill-down\n // Each entry is the FileTreeNode data for that zoom level\n const zoomDataStack: FileTreeNode[] = [];\n const zoomBreadcrumb: string[] = [];\n\n function layout(rootNode: FileTreeNode): d3.HierarchyRectangularNode<FileTreeNode> {\n const hierarchy = d3\n .hierarchy(rootNode)\n .sum((d) => d.value ?? 0)\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n d3\n .treemap<FileTreeNode>()\n .tile(d3.treemapSquarify)\n .size([width, height])\n .paddingOuter(3)\n .paddingTop(19)\n .paddingInner(1)\n .round(true)(hierarchy);\n\n return hierarchy as d3.HierarchyRectangularNode<FileTreeNode>;\n }\n\n function renderCurrent() {\n const rootData = zoomDataStack.length > 0 ? zoomDataStack[zoomDataStack.length - 1] : data;\n\n svg.selectAll('*').remove();\n\n const colorIndex = buildColorIndex(rootData);\n\n function cellFill(d: d3.HierarchyRectangularNode<FileTreeNode>): string {\n if (d.depth === 0) return 'var(--bg-primary)';\n const idx = colorIndex.get(d.data.name);\n if (idx === undefined) return 'hsl(0, 0%, 14%)';\n return cellFillFromDepth(idx, d.depth);\n }\n\n function cellStroke(d: d3.HierarchyRectangularNode<FileTreeNode>): string {\n if (d.depth === 0) return 'var(--border-primary)';\n const idx = colorIndex.get(d.data.name);\n if (idx === undefined) return 'hsl(0, 0%, 28%)';\n return cellStrokeFromDepth(idx, d.depth);\n }\n\n const root = layout(rootData);\n const nodes = root.descendants();\n\n // Background rect for click-to-zoom-out\n svg\n .append('rect')\n .attr('width', width)\n .attr('height', height)\n .attr('fill', 'transparent')\n .on('click', () => {\n if (zoomDataStack.length > 0) {\n zoomDataStack.pop();\n zoomBreadcrumb.pop();\n renderCurrent();\n onSelect?.([...zoomBreadcrumb]);\n }\n });\n\n const cell = svg\n .selectAll<SVGGElement, d3.HierarchyRectangularNode<FileTreeNode>>('g.treemap-cell')\n .data(nodes.filter((d) => d.depth > 0))\n .join('g')\n .attr('class', (d) => (d.children ? 'treemap-cell treemap-dir' : 'treemap-cell treemap-file'))\n .attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n // Rectangles\n cell\n .append('rect')\n .attr('width', (d) => Math.max(0, d.x1 - d.x0))\n .attr('height', (d) => Math.max(0, d.y1 - d.y0))\n .attr('fill', (d) => cellFill(d))\n .attr('stroke', (d) => cellStroke(d))\n .attr('stroke-width', (d) => (d.children ? 1 : 0.5))\n .attr('rx', 2);\n\n // Directory labels in the padding-top area\n cell\n .filter((d) => !!d.children && d.x1 - d.x0 > 40)\n .append('text')\n .attr('class', 'treemap-dir-label')\n .attr('x', 4)\n .attr('y', 13)\n .text((d) => d.data.name)\n .each(function (d) {\n // Clip text to cell width\n const maxW = d.x1 - d.x0 - 8;\n const el = this as SVGTextElement;\n if (el.getComputedTextLength() > maxW) {\n let txt = d.data.name;\n while (txt.length > 1 && el.getComputedTextLength() > maxW) {\n txt = txt.slice(0, -1);\n el.textContent = `${txt}\\u2026`;\n }\n }\n });\n\n // File labels — name + line count\n const fileCells = cell.filter((d) => !d.children && d.x1 - d.x0 > 40 && d.y1 - d.y0 > 20);\n\n fileCells\n .append('text')\n .attr('class', 'treemap-file-label')\n .attr('x', 4)\n .attr('y', 13)\n .text((d) => d.data.name)\n .each(function (d) {\n const maxW = d.x1 - d.x0 - 8;\n const el = this as SVGTextElement;\n if (el.getComputedTextLength() > maxW) {\n let txt = d.data.name;\n while (txt.length > 1 && el.getComputedTextLength() > maxW) {\n txt = txt.slice(0, -1);\n el.textContent = `${txt}\\u2026`;\n }\n }\n });\n\n fileCells\n .filter((d) => d.y1 - d.y0 > 32)\n .append('text')\n .attr('class', 'treemap-file-lines')\n .attr('x', 4)\n .attr('y', 25)\n .text((d) => `${d.data.value ?? 0} lines`);\n\n // Click on directories to zoom in\n cell\n .filter((d) => !!d.children)\n .style('cursor', 'pointer')\n .on('click', (event, d) => {\n event.stopPropagation();\n // Collect full ancestor chain from layout root down to clicked node\n const chain: d3.HierarchyRectangularNode<FileTreeNode>[] = [];\n let cur: d3.HierarchyRectangularNode<FileTreeNode> | null = d;\n while (cur && cur.depth > 0) {\n chain.unshift(cur);\n cur = cur.parent;\n }\n for (const node of chain) {\n zoomDataStack.push(node.data);\n zoomBreadcrumb.push(node.data.name);\n }\n renderCurrent();\n onSelect?.([...zoomBreadcrumb]);\n });\n\n // Tooltips on all visible cells\n cell\n .on('mouseover', (_event, d) => {\n const path = d.data.fullPath ?? d.data.name;\n const lines = d.value ?? 0;\n const symbols = d.data.symbolCount ?? 0;\n const type = d.children ? 'Directory' : 'File';\n tooltip.style('display', 'block').html(`\n <div class=\"name\">${path}</div>\n <span class=\"kind\">${type}</span>\n <span class=\"lines\">${lines} lines</span>\n <div class=\"location\">${symbols} symbol${symbols !== 1 ? 's' : ''}</div>\n `);\n })\n .on('mousemove', (event) => {\n tooltip.style('left', `${event.pageX + 10}px`).style('top', `${event.pageY - 10}px`);\n })\n .on('mouseout', () => {\n tooltip.style('display', 'none');\n });\n }\n\n function navigateTo(depth: number) {\n // depth 0 = root, depth 1 = first zoom level, etc.\n while (zoomDataStack.length > depth) {\n zoomDataStack.pop();\n zoomBreadcrumb.pop();\n }\n renderCurrent();\n onSelect?.([...zoomBreadcrumb]);\n }\n\n // Initial render\n renderCurrent();\n onSelect?.([]);\n\n return { navigateTo };\n}\n","import type { ApiClient } from '../api/client';\nimport { type FileTreemapControls, buildFileTree, renderFileTreemap } from '../d3/file-treemap';\nimport type { Store } from '../state/store';\n\nexport function initFilesTreemap(store: Store, _api: ApiClient) {\n const state = store.getState();\n const data = state.graphData;\n\n if (!data || data.nodes.length === 0) {\n showEmptyState();\n return;\n }\n\n renderFilesView(store);\n}\n\nfunction showEmptyState() {\n const container = document.getElementById('graph-container');\n if (container) {\n container.innerHTML = `\n <div class=\"empty-state\">\n <h2>No symbol data found</h2>\n <p>Index a codebase to see the file treemap</p>\n </div>\n `;\n }\n}\n\nfunction renderFilesView(store: Store) {\n const state = store.getState();\n const graphData = state.graphData;\n if (!graphData) return;\n\n const container = document.getElementById('graph-container');\n if (!container) return;\n\n const tree = buildFileTree(graphData.nodes);\n\n container.innerHTML = `\n <div class=\"files-treemap-container\" id=\"files-treemap-main\">\n <div class=\"treemap-breadcrumb\" id=\"treemap-breadcrumb\">\n <span class=\"breadcrumb-segment breadcrumb-root\">root</span>\n </div>\n <svg id=\"files-treemap-svg\"></svg>\n <div class=\"keyboard-hint\">\n <kbd>Click</kbd> directory to zoom in <kbd>Click</kbd> background or breadcrumb to zoom out\n </div>\n </div>\n `;\n\n let controls: FileTreemapControls | null = null;\n\n function onSelect(path: string[]) {\n const breadcrumb = document.getElementById('treemap-breadcrumb');\n if (!breadcrumb) return;\n\n let html = `<span class=\"breadcrumb-segment breadcrumb-root breadcrumb-clickable\" data-depth=\"0\">root</span>`;\n for (let i = 0; i < path.length; i++) {\n html += `<span class=\"breadcrumb-sep\">/</span><span class=\"breadcrumb-segment breadcrumb-clickable\" data-depth=\"${i + 1}\">${escapeHtml(path[i])}</span>`;\n }\n breadcrumb.innerHTML = html;\n\n // Attach click handlers to breadcrumb segments\n breadcrumb.querySelectorAll('.breadcrumb-clickable').forEach((el) => {\n el.addEventListener('click', () => {\n const depth = Number.parseInt((el as HTMLElement).dataset.depth ?? '0', 10);\n controls?.navigateTo(depth);\n });\n });\n }\n\n controls = renderFileTreemap('#files-treemap-svg', '#files-treemap-main', tree, onSelect);\n}\n\nfunction escapeHtml(text: string): string {\n const el = document.createElement('span');\n el.textContent = text;\n return el.innerHTML;\n}\n","import type * as d3 from 'd3';\nimport type { HierarchyNode } from '../types/api';\n\n/**\n * Color scheme for different symbol kinds\n */\nexport const KIND_COLORS: Record<string, string> = {\n function: '#3d5a80',\n class: '#5a3d80',\n interface: '#3d8050',\n type: '#806a3d',\n variable: '#803d3d',\n const: '#803d3d',\n enum: '#3d6880',\n method: '#4a6670',\n};\n\n/**\n * Hierarchy level colors (for directories/files)\n */\nexport const HIERARCHY_COLORS = {\n directory: '#2d4a5a',\n file: '#3d4a5a',\n};\n\n/**\n * Flow colors palette\n */\nexport const FLOW_COLORS = ['#4fc1ff', '#ce9178', '#6a9955', '#c586c0', '#dcdcaa', '#9cdcfe', '#d7ba7d', '#b5cea8'];\n\n/**\n * Get flow color by index\n */\nexport function getFlowColor(index: number): string {\n return FLOW_COLORS[index % FLOW_COLORS.length];\n}\n\n/**\n * Get color for a symbol node\n */\nexport function getKindColor(kind: string): string {\n return KIND_COLORS[kind] || '#666';\n}\n\n/**\n * Get color for hierarchy node (D3 hierarchy datum)\n */\nexport function getHierarchyColor(d: d3.HierarchyNode<HierarchyNode>): string {\n if (d.data.data) {\n // Symbol node - use kind color\n return KIND_COLORS[d.data.data.kind] || '#666';\n }\n if (d.data.isFile) {\n return HIERARCHY_COLORS.file;\n }\n if (d.data.isDirectory) {\n return HIERARCHY_COLORS.directory;\n }\n return '#2d2d2d';\n}\n\n/**\n * Get stroke color based on annotation status\n */\nexport function getStrokeColor(d: d3.HierarchyNode<HierarchyNode>): string {\n if (d.data.data?.hasAnnotations) {\n return '#6a9955';\n }\n return '#3c3c3c';\n}\n\n/**\n * Calculate node radius based on lines of code\n */\nexport function getNodeRadius(lines: number, minR = 5, maxR = 25, maxLines = 300): number {\n const normalized = Math.sqrt(Math.min(lines, maxLines)) / Math.sqrt(maxLines);\n return minR + normalized * (maxR - minR);\n}\n","import * as d3 from 'd3';\nimport type { DagModule } from '../types/api';\n\nexport interface ModuleTreeNode extends DagModule {\n children: ModuleTreeNode[];\n _value?: number;\n}\n\nexport interface ModuleDagResult {\n modulePositions: Map<number, { x: number; y: number; width: number; height: number }>;\n zoomGroup: d3.Selection<SVGGElement, unknown, HTMLElement, any>;\n svg: d3.Selection<SVGSVGElement, unknown, HTMLElement, any>;\n}\n\n// Branch hue palette for depth-1 subtrees\nconst BRANCH_HUES: { hue: number; fillSat: number; strokeSat: number }[] = [\n { hue: 210, fillSat: 35, strokeSat: 45 }, // Blue\n { hue: 175, fillSat: 30, strokeSat: 40 }, // Teal\n { hue: 270, fillSat: 30, strokeSat: 40 }, // Purple\n { hue: 35, fillSat: 35, strokeSat: 45 }, // Amber\n { hue: 140, fillSat: 30, strokeSat: 40 }, // Green\n { hue: 350, fillSat: 30, strokeSat: 40 }, // Rose\n];\n\nexport function getBoxColors(depth: number, branchIndex: number): { fill: string; stroke: string } {\n if (depth === 0) {\n return { fill: 'hsl(0, 0%, 12%)', stroke: 'hsl(0, 0%, 30%)' };\n }\n const palette = BRANCH_HUES[(branchIndex || 0) % BRANCH_HUES.length];\n const fillLightness = 14 + (depth - 1) * 3;\n const strokeLightness = 32 + (depth - 1) * 3;\n return {\n fill: `hsl(${palette.hue}, ${palette.fillSat}%, ${fillLightness}%)`,\n stroke: `hsl(${palette.hue}, ${palette.strokeSat}%, ${strokeLightness}%)`,\n };\n}\n\nfunction computeValue(node: ModuleTreeNode): number {\n const childrenSum = node.children.reduce((s, c) => s + computeValue(c), 0);\n node._value = node.memberCount + childrenSum;\n if (node._value === 0) node._value = 1;\n return node._value;\n}\n\nexport function renderModuleDag(\n svgSelector: string,\n containerSelector: string,\n modules: DagModule[],\n onSelect?: (moduleId: number | null) => void\n): ModuleDagResult | null {\n const modulePositions = new Map<number, { x: number; y: number; width: number; height: number }>();\n\n const mainContainer = document.querySelector(containerSelector);\n if (!mainContainer) return null;\n\n const svg = d3.select<SVGSVGElement, unknown>(svgSelector);\n const svgEl = document.querySelector(svgSelector) as SVGSVGElement;\n const width = svgEl.clientWidth;\n const height = svgEl.clientHeight;\n\n svg.selectAll('*').remove();\n\n if (modules.length === 0) return null;\n\n // Build tree structure from flat module list\n const moduleById = new Map<number, ModuleTreeNode>();\n for (const m of modules) {\n moduleById.set(m.id, { ...m, children: [] });\n }\n\n let rootModule: ModuleTreeNode | null = null;\n\n for (const m of modules) {\n const node = moduleById.get(m.id)!;\n if (m.parentId === null) {\n rootModule = node;\n } else {\n const parent = moduleById.get(m.parentId);\n if (parent) {\n parent.children.push(node);\n }\n }\n }\n\n if (!rootModule) {\n rootModule = moduleById.get(modules[0].id)!;\n }\n\n // Compute cumulative values\n computeValue(rootModule);\n\n // D3 pack layout\n const size = Math.min(width, height);\n const hierarchy = d3\n .hierarchy(rootModule)\n .sum((d) => (d.children.length === 0 ? (d._value ?? 1) : 0))\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n const pack = d3.pack<ModuleTreeNode>().size([size, size]).padding(3);\n\n const root = pack(hierarchy);\n\n // Color function for circles — all nodes use branch colors from data\n function getCircleColor(d: d3.HierarchyCircularNode<ModuleTreeNode>): string {\n return getBoxColors(d.depth, d.data.colorIndex ?? 0).fill;\n }\n\n function getCircleStroke(d: d3.HierarchyCircularNode<ModuleTreeNode>): string {\n return getBoxColors(d.depth, d.data.colorIndex ?? 0).stroke;\n }\n\n // Create zoom group\n const g = svg.append('g');\n\n // Populate modulePositions\n for (const d of root.descendants()) {\n modulePositions.set(d.data.id, {\n x: d.x - d.r,\n y: d.y - d.r,\n width: d.r * 2,\n height: d.r * 2,\n });\n }\n\n // Separate layers: circles below, labels above (so labels aren't covered by circles)\n const circleLayer = g.append('g').attr('class', 'circle-layer');\n const labelLayer = g.append('g').attr('class', 'label-layer').style('pointer-events', 'none');\n\n const descendants = root.descendants();\n\n // Circle nodes (clickable)\n const circleNode = circleLayer\n .selectAll<SVGGElement, d3.HierarchyCircularNode<ModuleTreeNode>>('g')\n .data(descendants)\n .join('g')\n .attr('class', (d) => {\n const classes = ['module-circle'];\n if (!d.children) classes.push('leaf');\n return classes.join(' ');\n })\n .attr('data-module-id', (d) => d.data.id);\n\n const circle = circleNode\n .append('circle')\n .attr('fill', (d) => getCircleColor(d))\n .attr('stroke', (d) => getCircleStroke(d));\n\n // Label nodes (non-interactive, rendered on top)\n const labelNode = labelLayer\n .selectAll<SVGGElement, d3.HierarchyCircularNode<ModuleTreeNode>>('g')\n .data(descendants)\n .join('g');\n\n const label = labelNode\n .append('text')\n .attr('class', 'module-circle-label')\n .style('display', (d) => (d.parent === root ? 'inline' : 'none'))\n .style('fill-opacity', (d) => (d.parent === root ? 1 : 0))\n .text((d) => d.data.name);\n\n // Count labels for all non-root circles with symbols\n const countLabel = labelNode\n .filter((d) => d !== root && (d.data._value ?? 0) > 0)\n .append('text')\n .attr('class', 'module-circle-count')\n .style('display', (d) => (d.parent === root ? 'inline' : 'none'))\n .style('fill-opacity', (d) => (d.parent === root ? 1 : 0))\n .attr('dy', '1.2em')\n .text((d) => `${d.data._value ?? 0} symbols`);\n\n // Click-to-zoom interaction\n let focus = root;\n let view: [number, number, number] = [root.x, root.y, root.r * 2];\n\n function zoomTo(v: [number, number, number]) {\n const k = size / v[2];\n view = v;\n const translate = (d: d3.HierarchyCircularNode<ModuleTreeNode>) =>\n `translate(${(d.x - v[0]) * k + width / 2},${(d.y - v[1]) * k + height / 2})`;\n circleNode.attr('transform', translate);\n labelNode.attr('transform', translate);\n circle.attr('r', (d) => d.r * k);\n }\n\n function zoom(_event: MouseEvent | null, d: d3.HierarchyCircularNode<ModuleTreeNode>) {\n focus = d;\n\n const transition = svg\n .transition()\n .duration(750)\n .tween('zoom', () => {\n const i = d3.interpolateZoom(view, [focus.x, focus.y, focus.r * 2]);\n return (t: number) => zoomTo(i(t));\n });\n\n label\n .filter(function (d) {\n return d.parent === focus || (this as SVGTextElement).style.display === 'inline';\n })\n .transition(transition as any)\n .style('fill-opacity', (d) => (d.parent === focus ? 1 : 0))\n .on('start', function (d) {\n if (d.parent === focus) (this as SVGTextElement).style.display = 'inline';\n })\n .on('end', function (d) {\n if (d.parent !== focus) (this as SVGTextElement).style.display = 'none';\n });\n\n countLabel\n .filter(function (d) {\n return d.parent === focus || (this as SVGTextElement).style.display === 'inline';\n })\n .transition(transition as any)\n .style('fill-opacity', (d) => (d.parent === focus ? 1 : 0))\n .on('start', function (d) {\n if (d.parent === focus) (this as SVGTextElement).style.display = 'inline';\n })\n .on('end', function (d) {\n if (d.parent !== focus) (this as SVGTextElement).style.display = 'none';\n });\n }\n\n // Selection highlight\n function setSelected(moduleId: number | null) {\n circleNode.classed('module-selected', (d) => d.data.id === moduleId);\n }\n\n // Click handlers\n circleNode.on('click', (event, d) => {\n if (d.children && focus !== d) {\n // Zoom into this node (it has children to reveal)\n zoom(event, d);\n } else if (!d.children && d.parent && d.parent !== focus) {\n // Leaf node: zoom to its parent so the intermediate level is shown\n zoom(event, d.parent);\n }\n setSelected(d.data.id);\n onSelect?.(d.data.id);\n event.stopPropagation();\n });\n\n svg.on('click', () => {\n zoom(null, root);\n setSelected(null);\n onSelect?.(null);\n });\n\n // Initial zoom\n zoomTo([root.x, root.y, root.r * 2]);\n\n return { modulePositions, zoomGroup: g, svg };\n}\n","import * as d3 from 'd3';\nimport type { ApiClient } from '../api/client';\nimport { getFlowColor } from '../d3/colors';\nimport { getBoxColors } from '../d3/module-dag';\nimport type { Store } from '../state/store';\nimport { selectFlow } from '../state/store';\nimport type { DagFlow, DagModule } from '../types/api';\n\nlet originalSidebarHtml: string | null = null;\n\n// Sequence diagram layout constants\nconst PARTICIPANT_WIDTH = 130;\nconst PARTICIPANT_GAP = 40;\nconst PARTICIPANT_HEIGHT = 48;\nconst MESSAGE_ROW_HEIGHT = 60;\nconst TOP_PADDING = 80;\nconst SELF_CALL_WIDTH = 30;\nconst SELF_CALL_HEIGHT = 30;\n\nexport function initFlowsDag(store: Store, _api: ApiClient) {\n const state = store.getState();\n const data = state.flowsDagData;\n\n if (!data || data.modules.length === 0) {\n showEmptyState();\n return;\n }\n\n renderFlowsDagView(store);\n}\n\nfunction showEmptyState() {\n const container = document.getElementById('graph-container');\n if (container) {\n container.innerHTML = `\n <div class=\"empty-state\">\n <h2>No modules found</h2>\n <p>Run 'squint llm modules' to detect modules first</p>\n </div>\n `;\n }\n}\n\nfunction renderFlowsDagView(store: Store) {\n const state = store.getState();\n const flowsDagData = state.flowsDagData;\n if (!flowsDagData) return;\n\n const container = document.getElementById('graph-container');\n if (!container) return;\n\n // Group flows by tier, then by stakeholder/domain\n const tierNames: Record<number, string> = { 0: 'Atomic', 1: 'Operations', 2: 'Journeys' };\n const tiers = [1, 2]; // Show operations and journeys only (atomics are sub-steps)\n\n // Build sidebar HTML\n let sidebarHtml = '';\n let flowIndex = 0;\n // Build global flow index for consistent colors\n const flowColorMap = new Map<number, number>();\n for (const flow of flowsDagData.flows) {\n flowColorMap.set(flow.id, flowIndex++);\n }\n\n for (const tier of tiers) {\n const tierFlows = flowsDagData.flows.filter((f) => f.tier === tier);\n if (tierFlows.length === 0) continue;\n\n // Group by feature within the tier (fall back to stakeholder if no features)\n const flowIdToFeature = new Map<number, string>();\n if (flowsDagData.features && flowsDagData.features.length > 0) {\n for (const feature of flowsDagData.features) {\n for (const flowId of feature.flowIds) {\n flowIdToFeature.set(flowId, feature.name);\n }\n }\n }\n const hasFeatures = flowIdToFeature.size > 0;\n const flowsByDomain = new Map<string, DagFlow[]>();\n for (const flow of tierFlows) {\n const domain = hasFeatures\n ? flowIdToFeature.get(flow.id) || 'Uncategorized'\n : flow.stakeholder || 'Uncategorized';\n if (!flowsByDomain.has(domain)) {\n flowsByDomain.set(domain, []);\n }\n flowsByDomain.get(domain)!.push(flow);\n }\n\n const tierLabel = tierNames[tier] ?? `Tier ${tier}`;\n const isCollapsed = tier === 0; // Atomics start collapsed\n sidebarHtml += `\n <div class=\"flow-tier-group${isCollapsed ? ' collapsed' : ''}\" data-tier=\"${tier}\">\n <div class=\"flow-tier-header\" data-tier=\"${tier}\">\n <span class=\"tier-toggle\">${isCollapsed ? '▶' : '▼'}</span>\n <span class=\"tier-label\">${tierLabel}</span>\n <span class=\"tier-count\">${tierFlows.length}</span>\n </div>\n <div class=\"flow-tier-content\">\n `;\n\n const sortedDomains = [...flowsByDomain.keys()].sort((a, b) => {\n if (a === 'Uncategorized') return 1;\n if (b === 'Uncategorized') return -1;\n return a.localeCompare(b);\n });\n for (const domain of sortedDomains) {\n const flows = flowsByDomain.get(domain)!;\n sidebarHtml += `\n <div class=\"flow-domain-group\">\n <div class=\"flow-domain-header\">${domain}</div>\n ${flows\n .map((flow) => {\n const colorIdx = flowColorMap.get(flow.id) ?? 0;\n const color = getFlowColor(colorIdx);\n const isSelected = state.selectedFlows.has(flow.id);\n return `\n <div class=\"flow-item${isSelected ? ' selected' : ''}\" data-flow-id=\"${flow.id}\">\n <span class=\"flow-color-dot\" style=\"background: ${color};\"></span>\n <div class=\"flow-item-content\">\n <span class=\"flow-name\" title=\"${flow.name}\">${flow.name}</span>\n ${flow.description ? `<span class=\"flow-description\">${flow.description}</span>` : ''}\n </div>\n <span class=\"flow-step-count\">${flow.stepCount}</span>\n </div>\n `;\n })\n .join('')}\n </div>\n `;\n }\n\n sidebarHtml += `\n </div>\n </div>\n `;\n }\n\n container.innerHTML = `\n <div class=\"flows-dag-container\">\n <div class=\"flows-sidebar\" id=\"flows-sidebar\">\n <div class=\"flows-sidebar-header\">\n <h3>Flows</h3>\n <button class=\"sidebar-toggle-btn\" id=\"sidebar-collapse-btn\" title=\"Collapse sidebar\">◀</button>\n </div>\n <div class=\"flows-sidebar-content\">\n ${sidebarHtml || '<div style=\"padding: 16px; color: #858585;\">No flows found</div>'}\n </div>\n </div>\n <div class=\"flows-dag-main\" id=\"flows-dag-main\">\n <button class=\"sidebar-expand-btn\" id=\"sidebar-expand-btn\" title=\"Expand sidebar\">▶</button>\n <svg id=\"flows-dag-svg\"></svg>\n <div class=\"keyboard-hint\">\n <kbd>Ctrl</kbd>+<kbd>S</kbd> Toggle sidebar\n <kbd>Esc</kbd> Deselect all\n </div>\n </div>\n </div>\n `;\n\n // Show placeholder when no flow is selected\n showSequencePlaceholder();\n\n // Setup sidebar interactions\n setupSidebarInteractions(store);\n\n // Setup keyboard shortcuts\n setupKeyboardShortcuts(store);\n}\n\nfunction showSequencePlaceholder() {\n const svg = d3.select<SVGSVGElement, unknown>('#flows-dag-svg');\n svg.selectAll('*').remove();\n\n const mainContainer = document.getElementById('flows-dag-main');\n if (!mainContainer) return;\n\n const width = mainContainer.clientWidth;\n const height = mainContainer.clientHeight;\n\n svg\n .append('text')\n .attr('class', 'seq-placeholder')\n .attr('x', width / 2)\n .attr('y', height / 2)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .text('Select a flow to view its sequence diagram');\n}\n\nfunction renderSequenceDiagram(store: Store) {\n const state = store.getState();\n const flowsDagData = state.flowsDagData;\n if (!flowsDagData) return;\n\n const flowId = state.selectedFlowId;\n if (!flowId) {\n showSequencePlaceholder();\n return;\n }\n\n // Find the selected flow and its color index\n const flow = flowsDagData.flows.find((f) => f.id === flowId);\n if (!flow || flow.steps.length === 0) {\n showSequencePlaceholder();\n return;\n }\n\n let flowColorIndex = 0;\n for (const f of flowsDagData.flows) {\n if (f.id === flowId) break;\n flowColorIndex++;\n }\n const flowColor = getFlowColor(flowColorIndex);\n\n const mainContainer = document.getElementById('flows-dag-main');\n if (!mainContainer) return;\n\n const svg = d3.select<SVGSVGElement, unknown>('#flows-dag-svg');\n svg.selectAll('*').remove();\n\n // Build module lookup\n const moduleById = new Map<number, DagModule>();\n for (const m of flowsDagData.modules) {\n moduleById.set(m.id, m);\n }\n\n // Determine unique participants (modules involved in this flow), preserving first-appearance order\n const participantIds: number[] = [];\n const participantSet = new Set<number>();\n for (const step of flow.steps) {\n if (!participantSet.has(step.fromModuleId)) {\n participantSet.add(step.fromModuleId);\n participantIds.push(step.fromModuleId);\n }\n if (!participantSet.has(step.toModuleId)) {\n participantSet.add(step.toModuleId);\n participantIds.push(step.toModuleId);\n }\n }\n\n const participantIndexMap = new Map<number, number>();\n for (let i = 0; i < participantIds.length; i++) {\n participantIndexMap.set(participantIds[i], i);\n }\n\n // Calculate diagram dimensions\n const diagramWidth = participantIds.length * (PARTICIPANT_WIDTH + PARTICIPANT_GAP) - PARTICIPANT_GAP;\n\n // Create zoom group\n const g = svg.append('g');\n\n // Define arrowhead markers\n const defs = svg.append('defs');\n\n defs\n .append('marker')\n .attr('id', 'seq-arrowhead')\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', 10)\n .attr('refY', 0)\n .attr('markerWidth', 8)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M0,-4L10,0L0,4')\n .attr('fill', flowColor);\n\n // Setup zoom\n const zoom = d3\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.2, 4])\n .on('zoom', (event) => {\n g.attr('transform', event.transform.toString());\n });\n\n svg.call(zoom);\n\n // Center the diagram\n const containerWidth = mainContainer.clientWidth;\n const initialX = Math.max(20, (containerWidth - diagramWidth) / 2);\n const initialY = 20;\n svg.call(zoom.transform, d3.zoomIdentity.translate(initialX, initialY));\n\n // Get branch-colored fill/stroke for participant box using data-driven color index\n function getParticipantColors(moduleId: number): { fill: string; stroke: string } {\n const mod = moduleById.get(moduleId);\n const depth = mod?.depth ?? 1;\n const colorIndex = mod?.colorIndex || 0;\n return getBoxColors(depth, colorIndex);\n }\n\n // Flow title at top of diagram\n const titleGroup = g.append('g').attr('class', 'seq-title');\n titleGroup\n .append('text')\n .attr('class', 'seq-title-text')\n .attr('x', diagramWidth / 2)\n .attr('y', -20)\n .attr('text-anchor', 'middle')\n .text(flow.name);\n\n // Draw participant boxes and lifelines\n for (let i = 0; i < participantIds.length; i++) {\n const moduleId = participantIds[i];\n const mod = moduleById.get(moduleId);\n const name = mod?.name || `Module ${moduleId}`;\n const x = i * (PARTICIPANT_WIDTH + PARTICIPANT_GAP);\n\n const participantGroup = g.append('g').attr('class', 'seq-participant');\n\n // Participant box\n participantGroup\n .append('rect')\n .attr('x', x)\n .attr('y', 0)\n .attr('width', PARTICIPANT_WIDTH)\n .attr('height', PARTICIPANT_HEIGHT)\n .attr('rx', 6)\n .attr('ry', 6)\n .attr('fill', getParticipantColors(moduleId).fill)\n .attr('stroke', getParticipantColors(moduleId).stroke)\n .attr('stroke-width', 1.5);\n\n // Participant label — wrap to two lines\n const lines = wrapText(name, 16);\n const textEl = participantGroup\n .append('text')\n .attr('x', x + PARTICIPANT_WIDTH / 2)\n .attr('text-anchor', 'middle');\n if (lines.length === 1) {\n textEl\n .attr('y', PARTICIPANT_HEIGHT / 2)\n .attr('dominant-baseline', 'central')\n .text(lines[0]);\n } else {\n textEl\n .append('tspan')\n .attr('x', x + PARTICIPANT_WIDTH / 2)\n .attr('y', PARTICIPANT_HEIGHT / 2 - 7)\n .text(lines[0]);\n textEl\n .append('tspan')\n .attr('x', x + PARTICIPANT_WIDTH / 2)\n .attr('y', PARTICIPANT_HEIGHT / 2 + 7)\n .text(lines[1]);\n }\n textEl.append('title').text(name);\n\n // Lifeline\n const lifelineEnd = TOP_PADDING + flow.steps.length * MESSAGE_ROW_HEIGHT + 20;\n g.append('line')\n .attr('class', 'seq-lifeline')\n .attr('x1', x + PARTICIPANT_WIDTH / 2)\n .attr('y1', PARTICIPANT_HEIGHT)\n .attr('x2', x + PARTICIPANT_WIDTH / 2)\n .attr('y2', lifelineEnd);\n }\n\n // Draw message arrows\n for (let stepIdx = 0; stepIdx < flow.steps.length; stepIdx++) {\n const step = flow.steps[stepIdx];\n const fromIdx = participantIndexMap.get(step.fromModuleId);\n const toIdx = participantIndexMap.get(step.toModuleId);\n if (fromIdx === undefined || toIdx === undefined) continue;\n\n const y = TOP_PADDING + stepIdx * MESSAGE_ROW_HEIGHT;\n const fromX = fromIdx * (PARTICIPANT_WIDTH + PARTICIPANT_GAP) + PARTICIPANT_WIDTH / 2;\n const toX = toIdx * (PARTICIPANT_WIDTH + PARTICIPANT_GAP) + PARTICIPANT_WIDTH / 2;\n\n const messageGroup = g.append('g').attr('class', 'seq-message').attr('data-step-idx', stepIdx);\n\n const isSelfCall = step.fromModuleId === step.toModuleId;\n\n if (isSelfCall) {\n // Self-call: draw a loop arc\n const loopPath = `M${fromX},${y} h${SELF_CALL_WIDTH} v${SELF_CALL_HEIGHT} h${-SELF_CALL_WIDTH}`;\n messageGroup\n .append('path')\n .attr('d', loopPath)\n .attr('fill', 'none')\n .attr('stroke', flowColor)\n .attr('stroke-width', 2)\n .attr('marker-end', 'url(#seq-arrowhead)');\n\n // Label to the right of the loop\n messageGroup\n .append('text')\n .attr('class', 'seq-message-label')\n .attr('x', fromX + SELF_CALL_WIDTH + 8)\n .attr('y', y + SELF_CALL_HEIGHT / 2)\n .attr('dominant-baseline', 'central')\n .text(step.semantic || step.toDefName || `Step ${stepIdx + 1}`);\n } else {\n // Normal arrow between two lifelines\n const arrowMargin = 2;\n const actualFromX = fromX + (fromIdx < toIdx ? arrowMargin : -arrowMargin);\n const actualToX = toX + (fromIdx < toIdx ? -arrowMargin : arrowMargin);\n\n messageGroup\n .append('line')\n .attr('x1', actualFromX)\n .attr('y1', y)\n .attr('x2', actualToX)\n .attr('y2', y)\n .attr('stroke', flowColor)\n .attr('stroke-width', 2)\n .attr('marker-end', 'url(#seq-arrowhead)');\n\n // Label above the arrow, centered between the two lifelines\n const labelX = (fromX + toX) / 2;\n messageGroup\n .append('text')\n .attr('class', 'seq-message-label')\n .attr('x', labelX)\n .attr('y', y - 10)\n .attr('text-anchor', 'middle')\n .text(step.semantic || step.toDefName || `Step ${stepIdx + 1}`);\n }\n\n // Step number badge\n const badgeX = fromX + (isSelfCall ? -16 : -16);\n messageGroup.append('circle').attr('class', 'seq-step-badge-circle').attr('cx', badgeX).attr('cy', y).attr('r', 10);\n\n messageGroup\n .append('text')\n .attr('class', 'seq-step-badge')\n .attr('x', badgeX)\n .attr('y', y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'central')\n .text(stepIdx + 1);\n }\n}\n\nfunction wrapText(text: string, maxCharsPerLine: number): [string] | [string, string] {\n if (text.length <= maxCharsPerLine) return [text];\n // Find a break point near the middle, preferring word boundaries\n const mid = Math.ceil(text.length / 2);\n let breakIdx = text.lastIndexOf(' ', mid);\n if (breakIdx <= 0) breakIdx = text.indexOf(' ', mid);\n if (breakIdx <= 0) breakIdx = mid; // no spaces, just split\n return [text.slice(0, breakIdx).trim(), text.slice(breakIdx).trim()];\n}\n\nfunction highlightStep(_store: Store, stepIdx: number) {\n // Dim all arrows except the hovered one\n d3.selectAll('.seq-message').classed('dimmed', function () {\n return Number.parseInt(d3.select(this).attr('data-step-idx') || '-1') !== stepIdx;\n });\n}\n\nfunction clearStepHighlight() {\n d3.selectAll('.seq-message').classed('dimmed', false);\n}\n\nfunction setupSidebarInteractions(store: Store) {\n // Collapse button\n document.getElementById('sidebar-collapse-btn')?.addEventListener('click', () => {\n document.getElementById('flows-sidebar')?.classList.add('collapsed');\n store.setState({ sidebarCollapsed: true });\n });\n\n // Expand button\n document.getElementById('sidebar-expand-btn')?.addEventListener('click', () => {\n document.getElementById('flows-sidebar')?.classList.remove('collapsed');\n store.setState({ sidebarCollapsed: false });\n });\n\n // Tier header toggle\n document.querySelectorAll('.flow-tier-header').forEach((header) => {\n header.addEventListener('click', () => {\n const group = header.closest('.flow-tier-group');\n if (group) {\n group.classList.toggle('collapsed');\n const toggle = header.querySelector('.tier-toggle');\n if (toggle) {\n toggle.textContent = group.classList.contains('collapsed') ? '▶' : '▼';\n }\n }\n });\n });\n\n // Flow item clicks\n document.querySelectorAll('.flow-item').forEach((item) => {\n item.addEventListener('click', () => {\n const flowId = Number.parseInt(item.getAttribute('data-flow-id') || '0');\n\n // Single-select: clear others, select this one\n selectFlow(store, flowId);\n\n // Update selected state\n document.querySelectorAll('.flow-item').forEach((el) => {\n el.classList.toggle('selected', el.getAttribute('data-flow-id') === String(flowId));\n });\n\n // Show steps in sidebar\n showFlowSteps(store, flowId);\n\n // Render sequence diagram\n renderSequenceDiagram(store);\n });\n });\n}\n\nfunction setupKeyboardShortcuts(store: Store) {\n document.addEventListener('keydown', (e) => {\n // Ctrl+S - Toggle sidebar\n if (e.ctrlKey && e.key === 's') {\n e.preventDefault();\n const sidebar = document.getElementById('flows-sidebar');\n sidebar?.classList.toggle('collapsed');\n store.setState({ sidebarCollapsed: sidebar?.classList.contains('collapsed') || false });\n }\n\n // Escape - Go back to flows list or deselect all\n if (e.key === 'Escape') {\n const state = store.getState();\n if (state.selectedFlowId !== null) {\n // If viewing a flow's steps, go back to flows list\n goBackToFlowsList(store);\n } else {\n // Otherwise just deselect all\n store.setState({ selectedFlows: new Set() });\n\n // Update UI\n document.querySelectorAll('.flow-item').forEach((item) => {\n item.classList.remove('selected');\n });\n\n showSequencePlaceholder();\n }\n }\n });\n}\n\nfunction showFlowSteps(store: Store, flowId: number) {\n const state = store.getState();\n const flow = state.flowsDagData?.flows.find((f) => f.id === flowId);\n if (!flow) return;\n\n const sidebarContent = document.querySelector('.flows-sidebar-content');\n if (!sidebarContent) return;\n\n // Store original HTML for back button\n if (!originalSidebarHtml) {\n originalSidebarHtml = sidebarContent.innerHTML;\n }\n\n // Build steps HTML with tree structure showing module paths\n const stepsHtml = flow.steps\n .map((step, idx) => {\n // Find module names from IDs\n const fromModule = state.flowsDagData?.modules.find((m) => m.id === step.fromModuleId);\n const toModule = state.flowsDagData?.modules.find((m) => m.id === step.toModuleId);\n\n return `\n <div class=\"step-item step-tree\" data-step-idx=\"${idx}\">\n <div class=\"step-tree-header\">\n <span class=\"step-number\">${idx + 1}</span>\n <span class=\"step-semantic\">${step.semantic || step.toDefName || `Step ${idx + 1}`}</span>\n </div>\n <div class=\"step-tree-path\">\n <span class=\"step-module from\">${step.fromDefName || fromModule?.name || 'Unknown'}</span>\n <span class=\"step-arrow\">→</span>\n <span class=\"step-module to\">${step.toDefName || toModule?.name || 'Unknown'}</span>\n </div>\n </div>\n `;\n })\n .join('');\n\n sidebarContent.innerHTML = `\n <div class=\"steps-back-btn\" id=\"steps-back-btn\">\n <span class=\"back-icon\">←</span>\n <span>Back to flows</span>\n </div>\n <div class=\"steps-flow-title\">${flow.name}</div>\n ${flow.description ? `<div class=\"steps-flow-description\">${flow.description}</div>` : ''}\n <div class=\"steps-list\">\n ${stepsHtml || '<div style=\"padding: 16px; color: #858585;\">No steps</div>'}\n </div>\n `;\n\n // Setup back button\n document.getElementById('steps-back-btn')?.addEventListener('click', () => {\n goBackToFlowsList(store);\n });\n\n // Setup step hover handlers\n document.querySelectorAll('.step-item').forEach((item) => {\n item.addEventListener('mouseenter', () => {\n const stepIdx = Number.parseInt(item.getAttribute('data-step-idx') || '0');\n highlightStep(store, stepIdx);\n });\n\n item.addEventListener('mouseleave', () => {\n clearStepHighlight();\n });\n });\n}\n\nfunction goBackToFlowsList(store: Store) {\n const sidebarContent = document.querySelector('.flows-sidebar-content');\n if (!sidebarContent || !originalSidebarHtml) return;\n\n // Restore original sidebar\n sidebarContent.innerHTML = originalSidebarHtml;\n\n // Clear selection\n selectFlow(store, null);\n\n // Re-setup event handlers\n setupSidebarInteractions(store);\n\n // Show placeholder\n showSequencePlaceholder();\n}\n","import * as d3 from 'd3';\nimport type { Interaction } from '../types/api';\nimport { getBoxColors } from './module-dag';\n\nexport interface ChordModule {\n id: number;\n name: string;\n fullPath: string;\n}\n\ninterface ChordData {\n modules: ChordModule[];\n matrix: number[][];\n interactionsByKey: Map<string, Interaction[]>;\n}\n\nexport interface ChordSelection {\n kind: 'module';\n moduleIndex: number;\n module: ChordModule;\n interactions: Interaction[];\n}\n\nexport interface ChordRibbonSelection {\n kind: 'ribbon';\n from: ChordModule;\n to: ChordModule;\n interactions: Interaction[];\n}\n\nexport type ChordSelectEvent = ChordSelection | ChordRibbonSelection | null;\n\nfunction stripPrefix(path: string): string {\n return path.replace(/^project\\./, '');\n}\n\nexport function buildChordData(interactions: Interaction[]): ChordData {\n // Collect unique modules\n const moduleMap = new Map<number, ChordModule>();\n for (const ix of interactions) {\n // Filter self-loops\n if (ix.fromModuleId === ix.toModuleId) continue;\n if (ix.weight <= 0) continue;\n\n if (!moduleMap.has(ix.fromModuleId)) {\n moduleMap.set(ix.fromModuleId, {\n id: ix.fromModuleId,\n name: stripPrefix(ix.fromModulePath),\n fullPath: ix.fromModulePath,\n });\n }\n if (!moduleMap.has(ix.toModuleId)) {\n moduleMap.set(ix.toModuleId, {\n id: ix.toModuleId,\n name: stripPrefix(ix.toModulePath),\n fullPath: ix.toModulePath,\n });\n }\n }\n\n // Sort alphabetically by fullPath for stable index assignment\n const modules = [...moduleMap.values()].sort((a, b) => a.fullPath.localeCompare(b.fullPath));\n const idxById = new Map<number, number>();\n for (let i = 0; i < modules.length; i++) {\n idxById.set(modules[i].id, i);\n }\n\n const n = modules.length;\n const matrix: number[][] = Array.from({ length: n }, () => Array(n).fill(0));\n const interactionsByKey = new Map<string, Interaction[]>();\n\n for (const ix of interactions) {\n if (ix.fromModuleId === ix.toModuleId) continue;\n if (ix.weight <= 0) continue;\n\n const fromIdx = idxById.get(ix.fromModuleId);\n const toIdx = idxById.get(ix.toModuleId);\n if (fromIdx === undefined || toIdx === undefined) continue;\n\n matrix[fromIdx][toIdx] += ix.weight;\n\n const key = `${fromIdx}->${toIdx}`;\n if (!interactionsByKey.has(key)) {\n interactionsByKey.set(key, []);\n }\n interactionsByKey.get(key)!.push(ix);\n\n if (ix.direction === 'bi') {\n matrix[toIdx][fromIdx] += ix.weight;\n\n const reverseKey = `${toIdx}->${fromIdx}`;\n if (!interactionsByKey.has(reverseKey)) {\n interactionsByKey.set(reverseKey, []);\n }\n interactionsByKey.get(reverseKey)!.push(ix);\n }\n }\n\n return { modules, matrix, interactionsByKey };\n}\n\n// Use the same branch color system as the modules view\nfunction moduleColor(colorIndex: number): string {\n return getBoxColors(1, colorIndex).stroke;\n}\n\nfunction moduleColorDim(colorIndex: number): string {\n return getBoxColors(1, colorIndex).fill;\n}\n\nexport function renderChordDiagram(\n svgSelector: string,\n containerSelector: string,\n interactions: Interaction[],\n onSelect?: (event: ChordSelectEvent) => void,\n colorIndexByModuleId?: Map<number, number>\n): void {\n const mainContainer = document.querySelector(containerSelector);\n if (!mainContainer) return;\n\n const svgEl = document.querySelector(svgSelector) as SVGSVGElement;\n if (!svgEl) return;\n const width = svgEl.clientWidth;\n const height = svgEl.clientHeight;\n if (width === 0 || height === 0) return;\n\n const { modules, matrix, interactionsByKey } = buildChordData(interactions);\n if (modules.length === 0) return;\n\n // Resolve color index: prefer data-driven colorIndex, fall back to positional index\n function resolveColorIndex(positionalIdx: number): number {\n if (!colorIndexByModuleId) return positionalIdx;\n const mod = modules[positionalIdx];\n return colorIndexByModuleId.get(mod.id) ?? positionalIdx;\n }\n\n const svg = d3.select<SVGSVGElement, unknown>(svgSelector);\n svg.selectAll('*').remove();\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n\n const outerRadius = Math.min(width, height) / 2 - 80;\n const innerRadius = outerRadius - 20;\n\n const g = svg.append('g').attr('transform', `translate(${width / 2},${height / 2})`);\n\n const tooltip = d3.select('#tooltip');\n\n // Build chord layout\n const chordLayout = d3.chordDirected().padAngle(0.04).sortSubgroups(d3.descending);\n\n const chords = chordLayout(matrix);\n\n const arc = d3.arc<d3.ChordGroup>().innerRadius(innerRadius).outerRadius(outerRadius);\n\n const ribbon = d3\n .ribbonArrow<d3.Chord, d3.ChordSubgroup>()\n .radius(innerRadius)\n .headRadius(innerRadius * 0.05);\n\n // Helper: get pattern for a ribbon\n function ribbonPattern(d: d3.Chord): string | null {\n const key = `${d.source.index}->${d.target.index}`;\n const ixs = interactionsByKey.get(key);\n if (!ixs || ixs.length === 0) return null;\n return ixs[0].pattern;\n }\n\n // Collect all interactions for a module index (both directions)\n function interactionsForModule(idx: number): Interaction[] {\n const seen = new Set<number>();\n const result: Interaction[] = [];\n for (const [key, ixs] of interactionsByKey) {\n const [fromStr, toStr] = key.split('->');\n if (Number(fromStr) === idx || Number(toStr) === idx) {\n for (const ix of ixs) {\n if (!seen.has(ix.id)) {\n seen.add(ix.id);\n result.push(ix);\n }\n }\n }\n }\n return result;\n }\n\n // Track active selection for sticky highlight\n let activeSelection: { kind: 'module'; index: number } | { kind: 'ribbon'; source: number; target: number } | null =\n null;\n\n function applyHighlight(kind: 'module' | 'ribbon', idx: number, targetIdx?: number) {\n if (kind === 'module') {\n ribbons.style('fill-opacity', (rd) => {\n return rd.source.index === idx || rd.target.index === idx ? 0.7 : 0.05;\n });\n arcs.style('opacity', (ad) => {\n if (ad.index === idx) return 1;\n const connected = chords.some(\n (c) =>\n (c.source.index === idx && c.target.index === ad.index) ||\n (c.target.index === idx && c.source.index === ad.index)\n );\n return connected ? 1 : 0.3;\n });\n } else if (kind === 'ribbon' && targetIdx !== undefined) {\n ribbons.style('fill-opacity', (rd) => {\n return rd.source.index === idx && rd.target.index === targetIdx ? 0.8 : 0.05;\n });\n arcs.style('opacity', (ad) => {\n return ad.index === idx || ad.index === targetIdx ? 1 : 0.3;\n });\n }\n }\n\n function clearHighlight() {\n ribbons.style('fill-opacity', null);\n arcs.style('opacity', null);\n }\n\n // Draw ribbons\n const ribbons = g\n .append('g')\n .attr('class', 'chord-ribbons')\n .selectAll<SVGPathElement, d3.Chord>('path')\n .data(chords)\n .join('path')\n .attr('class', (d) => {\n const pattern = ribbonPattern(d);\n return pattern === 'business' ? 'chord-ribbon chord-ribbon-business' : 'chord-ribbon chord-ribbon-utility';\n })\n .attr('d', (d) => ribbon(d) as unknown as string)\n .attr('fill', (d) => moduleColorDim(resolveColorIndex(d.source.index)))\n .attr('stroke', (d) => {\n const pattern = ribbonPattern(d);\n return pattern === 'utility' ? moduleColor(resolveColorIndex(d.source.index)) : 'none';\n })\n .attr('stroke-width', (d) => {\n const pattern = ribbonPattern(d);\n return pattern === 'utility' ? 0.8 : 0;\n });\n\n // Ribbon hover + click\n ribbons\n .on('mouseover', (_event, d) => {\n if (activeSelection) return;\n applyHighlight('ribbon', d.source.index, d.target.index);\n\n const fromMod = modules[d.source.index];\n const toMod = modules[d.target.index];\n const key = `${d.source.index}->${d.target.index}`;\n const ixs = interactionsByKey.get(key) ?? [];\n const totalWeight = ixs.reduce((sum, ix) => sum + ix.weight, 0);\n const pattern = ixs[0]?.pattern ?? 'unknown';\n const semantic = ixs[0]?.semantic ?? '';\n\n tooltip.style('display', 'block').html(`\n <div class=\"name\">${fromMod.name} → ${toMod.name}</div>\n <div class=\"location\">${fromMod.fullPath} → ${toMod.fullPath}</div>\n <span class=\"kind\">${pattern}</span>\n <span class=\"lines\">weight: ${totalWeight}</span>\n ${semantic ? `<div class=\"location\" style=\"margin-top: 4px; font-style: italic;\">${semantic}</div>` : ''}\n `);\n })\n .on('mousemove', (event) => {\n tooltip.style('left', `${event.pageX + 10}px`).style('top', `${event.pageY - 10}px`);\n })\n .on('mouseout', () => {\n tooltip.style('display', 'none');\n if (!activeSelection) clearHighlight();\n })\n .on('click', (_event, d) => {\n const key = `${d.source.index}->${d.target.index}`;\n const ixs = interactionsByKey.get(key) ?? [];\n activeSelection = { kind: 'ribbon', source: d.source.index, target: d.target.index };\n applyHighlight('ribbon', d.source.index, d.target.index);\n onSelect?.({\n kind: 'ribbon',\n from: modules[d.source.index],\n to: modules[d.target.index],\n interactions: ixs,\n });\n });\n\n // Draw arcs\n const arcs = g\n .append('g')\n .attr('class', 'chord-arcs')\n .selectAll<SVGGElement, d3.ChordGroup>('g')\n .data(chords.groups)\n .join('g')\n .attr('class', 'chord-arc');\n\n arcs\n .append('path')\n .attr('d', (d) => arc(d))\n .attr('fill', (_d, i) => moduleColor(resolveColorIndex(i)))\n .attr('stroke', (_d, i) => moduleColor(resolveColorIndex(i)));\n\n // Arc hover + click\n arcs\n .on('mouseover', (_event, d) => {\n if (activeSelection) return;\n const idx = d.index;\n applyHighlight('module', idx);\n\n const mod = modules[idx];\n let outgoing = 0;\n let incoming = 0;\n for (let j = 0; j < modules.length; j++) {\n outgoing += matrix[idx][j];\n incoming += matrix[j][idx];\n }\n\n tooltip.style('display', 'block').html(`\n <div class=\"name\">${mod.name}</div>\n <div class=\"location\">${mod.fullPath}</div>\n <span class=\"kind\">outgoing: ${outgoing}</span>\n <span class=\"lines\">incoming: ${incoming}</span>\n `);\n })\n .on('mousemove', (event) => {\n tooltip.style('left', `${event.pageX + 10}px`).style('top', `${event.pageY - 10}px`);\n })\n .on('mouseout', () => {\n tooltip.style('display', 'none');\n if (!activeSelection) clearHighlight();\n })\n .on('click', (_event, d) => {\n const idx = d.index;\n activeSelection = { kind: 'module', index: idx };\n applyHighlight('module', idx);\n onSelect?.({\n kind: 'module',\n moduleIndex: idx,\n module: modules[idx],\n interactions: interactionsForModule(idx),\n });\n });\n\n // Background click to deselect\n svg.on('click', (event) => {\n if (event.target === svgEl) {\n activeSelection = null;\n clearHighlight();\n onSelect?.(null);\n }\n });\n\n // Labels\n g.append('g')\n .attr('class', 'chord-labels')\n .selectAll<SVGTextElement, d3.ChordGroup>('text')\n .data(chords.groups)\n .join('text')\n .attr('class', 'chord-label')\n .each(function (d) {\n const angle = (d.startAngle + d.endAngle) / 2;\n const flip = angle > Math.PI;\n const labelRadius = outerRadius + 8;\n d3.select(this)\n .attr(\n 'transform',\n `rotate(${(angle * 180) / Math.PI - 90}) translate(${labelRadius},0)${flip ? ' rotate(180)' : ''}`\n )\n .attr('text-anchor', flip ? 'end' : 'start')\n .attr('dominant-baseline', 'central');\n })\n .text((_d, i) => modules[i].name);\n}\n","import type { ApiClient } from '../api/client';\nimport type { ChordSelectEvent } from '../d3/chord-diagram';\nimport { renderChordDiagram } from '../d3/chord-diagram';\nimport type { Store } from '../state/store';\nimport type { Interaction } from '../types/api';\n\nexport function initInteractions(store: Store, _api: ApiClient) {\n const state = store.getState();\n const data = state.interactionsData;\n\n if (!data || data.interactions.length === 0) {\n showEmptyState();\n return;\n }\n\n const container = document.getElementById('graph-container');\n if (!container) return;\n\n // Build process group summary\n const pg = data.processGroups;\n const processGroupHtml =\n pg && pg.groupCount >= 2\n ? `<div class=\"process-group-summary\">${pg.groupCount} process groups: ${pg.groups.map((g) => g.label).join(', ')}</div>`\n : '';\n\n container.innerHTML = `\n ${processGroupHtml}\n <div class=\"chord-container\" id=\"chord-main\">\n <svg id=\"chord-svg\"></svg>\n <div class=\"chord-sidebar hidden\" id=\"chord-sidebar\"></div>\n </div>\n `;\n\n // Build color index map from module data for consistent cross-view coloring\n const colorIndexByModuleId = new Map<number, number>();\n const dagData = state.flowsDagData;\n if (dagData) {\n for (const m of dagData.modules) {\n colorIndexByModuleId.set(m.id, m.colorIndex ?? 0);\n }\n }\n\n renderChordDiagram('#chord-svg', '#chord-main', data.interactions, onChordSelect, colorIndexByModuleId);\n}\n\nfunction onChordSelect(event: ChordSelectEvent) {\n const sidebar = document.getElementById('chord-sidebar');\n if (!sidebar) return;\n\n if (event === null) {\n sidebar.classList.add('hidden');\n return;\n }\n\n if (event.kind === 'module') {\n const mod = event.module;\n sidebar.innerHTML = `\n <div class=\"chord-sidebar-header\">\n <h3>${escapeHtml(mod.name)}</h3>\n <span class=\"chord-sidebar-path\">${escapeHtml(mod.fullPath)}</span>\n </div>\n <div class=\"chord-sidebar-list\">\n <div class=\"chord-sidebar-list-title\">${event.interactions.length} interaction${event.interactions.length !== 1 ? 's' : ''}</div>\n <div class=\"chord-sidebar-list-items\">\n ${event.interactions.map((ix) => renderInteractionItem(ix)).join('')}\n </div>\n </div>\n `;\n } else {\n sidebar.innerHTML = `\n <div class=\"chord-sidebar-header\">\n <h3>${escapeHtml(event.from.name)} → ${escapeHtml(event.to.name)}</h3>\n <span class=\"chord-sidebar-path\">${escapeHtml(event.from.fullPath)} → ${escapeHtml(event.to.fullPath)}</span>\n </div>\n <div class=\"chord-sidebar-list\">\n <div class=\"chord-sidebar-list-title\">${event.interactions.length} interaction${event.interactions.length !== 1 ? 's' : ''}</div>\n <div class=\"chord-sidebar-list-items\">\n ${event.interactions.map((ix) => renderInteractionItem(ix)).join('')}\n </div>\n </div>\n `;\n }\n\n sidebar.classList.remove('hidden');\n}\n\nfunction renderInteractionItem(ix: Interaction): string {\n const fromName = ix.fromModulePath.split('.').pop() || ix.fromModulePath;\n const toName = ix.toModulePath.split('.').pop() || ix.toModulePath;\n const patternClass = ix.pattern === 'business' ? 'business' : 'utility';\n const dirLabel = ix.direction === 'bi' ? '↔' : '→';\n const symbols = ix.symbols ? ix.symbols.split(',').map((s) => s.trim()) : [];\n const sourceLabel = ix.source === 'llm-inferred' ? 'inferred' : 'ast';\n const sourceClass = ix.source === 'llm-inferred' ? 'inferred' : 'ast';\n\n return `\n <div class=\"chord-sidebar-item\">\n <div class=\"chord-sidebar-item-header\">\n <span class=\"chord-sidebar-module\">${escapeHtml(fromName)}</span>\n <span class=\"chord-sidebar-arrow\">${dirLabel}</span>\n <span class=\"chord-sidebar-module\">${escapeHtml(toName)}</span>\n <span class=\"chord-sidebar-badge ${patternClass}\">${ix.pattern || 'utility'}</span>\n <span class=\"chord-sidebar-badge weight\">×${ix.weight}</span>\n <span class=\"chord-sidebar-badge ${sourceClass}\">${sourceLabel}</span>\n </div>\n ${ix.semantic ? `<div class=\"chord-sidebar-semantic\">${escapeHtml(ix.semantic)}</div>` : ''}\n ${symbols.length > 0 ? `<div class=\"chord-sidebar-symbols\">${symbols.map((s) => `<span class=\"chord-sidebar-symbol\">${escapeHtml(s)}</span>`).join('')}</div>` : ''}\n </div>\n `;\n}\n\nfunction showEmptyState() {\n const container = document.getElementById('graph-container');\n if (container) {\n container.innerHTML = `\n <div class=\"empty-state\">\n <h2>No interactions found</h2>\n <p>Run 'squint llm interactions' to detect interactions first</p>\n </div>\n `;\n }\n}\n\nfunction escapeHtml(text: string): string {\n const el = document.createElement('span');\n el.textContent = text;\n return el.innerHTML;\n}\n","import type { ApiClient } from '../api/client';\nimport { renderModuleDag } from '../d3/module-dag';\nimport type { Store } from '../state/store';\nimport type { Module } from '../types/api';\n\nexport function initModulesTree(store: Store, _api: ApiClient) {\n const state = store.getState();\n const data = state.flowsDagData;\n\n if (!data || data.modules.length === 0) {\n showEmptyState();\n return;\n }\n\n renderModulesView(store);\n}\n\nfunction showEmptyState() {\n const container = document.getElementById('graph-container');\n if (container) {\n container.innerHTML = `\n <div class=\"empty-state\">\n <h2>No modules found</h2>\n <p>Run 'squint llm modules' to detect modules</p>\n </div>\n `;\n }\n}\n\nfunction renderModulesView(store: Store) {\n const state = store.getState();\n const flowsDagData = state.flowsDagData;\n if (!flowsDagData) return;\n\n const container = document.getElementById('graph-container');\n if (!container) return;\n\n // Build lookup from modulesData for descriptions and members\n const modulesData = state.modulesData;\n const moduleDetailById = new Map<number, Module>();\n if (modulesData) {\n for (const m of modulesData.modules) {\n moduleDetailById.set(m.id, m);\n }\n }\n\n // Build parent→children map for collecting descendant members\n const childrenByParent = new Map<number, number[]>();\n for (const m of flowsDagData.modules) {\n if (m.parentId !== null) {\n const siblings = childrenByParent.get(m.parentId) ?? [];\n siblings.push(m.id);\n childrenByParent.set(m.parentId, siblings);\n }\n }\n\n function collectDescendantIds(moduleId: number): number[] {\n const ids = [moduleId];\n const children = childrenByParent.get(moduleId) ?? [];\n for (const childId of children) {\n ids.push(...collectDescendantIds(childId));\n }\n return ids;\n }\n\n // Find root module for default sidebar content\n const rootModule = flowsDagData.modules.find((m) => m.parentId === null) ?? flowsDagData.modules[0];\n\n container.innerHTML = `\n <div class=\"modules-dag-container\" id=\"modules-dag-main\">\n <svg id=\"modules-dag-svg\"></svg>\n <div class=\"modules-sidebar hidden\" id=\"modules-sidebar\"></div>\n <div class=\"keyboard-hint\">\n <kbd>Click</kbd> circle to zoom in <kbd>Click</kbd> background to zoom out\n </div>\n </div>\n `;\n\n function onModuleSelect(selectedId: number | null) {\n const sidebar = document.getElementById('modules-sidebar');\n if (!sidebar) return;\n\n // On background click, show root content instead of hiding\n const moduleId = selectedId ?? rootModule.id;\n\n const dagModule = flowsDagData!.modules.find((m) => m.id === moduleId);\n if (!dagModule) return;\n\n const detail = moduleDetailById.get(moduleId);\n const description = detail?.description ?? null;\n\n // Collect all members from this module and its descendants, grouped by submodule\n const descendantIds = collectDescendantIds(moduleId);\n let totalMembers = 0;\n\n let groupedHtml = '';\n for (const id of descendantIds) {\n const mod = moduleDetailById.get(id);\n if (!mod?.members?.length) continue;\n const sectionName = id === moduleId ? dagModule.name : mod.name;\n groupedHtml += `<div class=\"modules-sidebar-section\">${escapeHtml(sectionName)}</div>`;\n for (const member of mod.members) {\n groupedHtml += `\n <div class=\"modules-sidebar-member\">\n <span class=\"member-kind\">${escapeHtml(member.kind)}</span>\n <span class=\"member-name\">${escapeHtml(member.name)}</span>\n </div>`;\n totalMembers++;\n }\n }\n if (!groupedHtml) {\n groupedHtml = '<div class=\"modules-sidebar-empty\">No symbols assigned</div>';\n }\n\n const descHtml = description ? `<div class=\"modules-sidebar-desc\">${escapeHtml(description)}</div>` : '';\n\n sidebar.innerHTML = `\n <div class=\"modules-sidebar-header\">\n <h3>${escapeHtml(dagModule.name)}</h3>\n <span class=\"modules-sidebar-path\">${escapeHtml(dagModule.fullPath)}</span>\n </div>\n ${descHtml}\n <div class=\"modules-sidebar-members\">\n <div class=\"modules-sidebar-members-title\">${totalMembers} symbol${totalMembers !== 1 ? 's' : ''}</div>\n <div class=\"modules-sidebar-members-list\">\n ${groupedHtml}\n </div>\n </div>\n `;\n sidebar.classList.remove('hidden');\n }\n\n renderModuleDag('#modules-dag-svg', '#modules-dag-main', flowsDagData.modules, onModuleSelect);\n\n // Show root module content in sidebar on initial load\n onModuleSelect(rootModule.id);\n}\n\nfunction escapeHtml(text: string): string {\n const el = document.createElement('span');\n el.textContent = text;\n return el.innerHTML;\n}\n","import type { HierarchyNode, RelationshipType, SymbolEdge, SymbolNode } from '../types/api';\n\n/**\n * Classify relationship by semantic text\n */\nexport function classifyRelationship(semantic: string): RelationshipType {\n const s = (semantic || '').toLowerCase();\n if (s.includes('extend')) return 'extends';\n if (s.includes('implement')) return 'implements';\n if (s.includes('call')) return 'calls';\n if (s.includes('import')) return 'imports';\n if (s.includes('use')) return 'uses';\n return 'uses';\n}\n\n/**\n * Build hierarchy from file structure\n */\nexport function buildFileHierarchy(nodes: SymbolNode[]): HierarchyNode {\n const root: HierarchyNode = { name: 'root', children: [], isRoot: true };\n\n for (const node of nodes) {\n const parts = node.filePath.split('/').filter((p) => p);\n let current = root;\n\n // Navigate/create directory structure\n for (let i = 0; i < parts.length - 1; i++) {\n let child = current.children?.find((c) => c.name === parts[i] && !c.data);\n if (!child) {\n child = { name: parts[i], children: [], isDirectory: true, depth: i + 1 };\n current.children = current.children || [];\n current.children.push(child);\n }\n current = child;\n }\n\n // Add file level\n const fileName = parts[parts.length - 1];\n let fileNode = current.children?.find((c) => c.name === fileName && !c.data);\n if (!fileNode) {\n fileNode = { name: fileName, children: [], isFile: true, depth: parts.length };\n current.children = current.children || [];\n current.children.push(fileNode);\n }\n\n // Add symbol as leaf\n fileNode.children = fileNode.children || [];\n fileNode.children.push({\n name: node.name,\n value: Math.max(node.lines, 1),\n data: node,\n });\n }\n\n return root;\n}\n\n/**\n * Build hierarchy from relationship type (e.g., extends, calls)\n * If A extends B, then A is shown as a child of B\n */\nexport function buildRelationshipHierarchy(\n nodes: SymbolNode[],\n edges: SymbolEdge[],\n relationshipType: RelationshipType\n): HierarchyNode {\n const nodeById = new Map(nodes.map((n) => [n.id, n]));\n\n // Filter edges to only include the selected relationship type\n const relevantEdges = edges.filter((e) => {\n const type = classifyRelationship(e.semantic);\n return type === relationshipType;\n });\n\n // Build parent-child map: source -> targets (source depends on/relates to targets)\n // In \"A extends B\", source=A, target=B, so A is child of B\n const childrenOf = new Map<number, number[]>();\n const hasParent = new Set<number>();\n\n for (const edge of relevantEdges) {\n if (!nodeById.has(edge.source) || !nodeById.has(edge.target)) continue;\n\n if (!childrenOf.has(edge.target)) {\n childrenOf.set(edge.target, []);\n }\n childrenOf.get(edge.target)!.push(edge.source);\n hasParent.add(edge.source);\n }\n\n // Find root nodes (nodes that have children but no parent in this relationship)\n const involvedNodes = new Set<number>();\n for (const edge of relevantEdges) {\n if (nodeById.has(edge.source)) involvedNodes.add(edge.source);\n if (nodeById.has(edge.target)) involvedNodes.add(edge.target);\n }\n\n const rootIds = [...involvedNodes].filter((id) => !hasParent.has(id));\n\n // Build tree recursively\n const visited = new Set<number>();\n\n function buildNode(nodeId: number, depth = 0): HierarchyNode | null {\n if (visited.has(nodeId)) return null; // Prevent cycles\n visited.add(nodeId);\n\n const node = nodeById.get(nodeId);\n if (!node) return null;\n\n const children = (childrenOf.get(nodeId) || [])\n .map((childId) => buildNode(childId, depth + 1))\n .filter((c): c is HierarchyNode => c !== null);\n\n return {\n name: node.name,\n value: Math.max(node.lines, 1),\n data: node,\n children: children.length > 0 ? children : undefined,\n };\n }\n\n const rootChildren = rootIds.map((id) => buildNode(id)).filter((c): c is HierarchyNode => c !== null);\n\n // If no relationships of this type, show message\n if (rootChildren.length === 0) {\n return {\n name: 'root',\n children: [\n {\n name: `No \"${relationshipType}\" relationships found`,\n children: [],\n },\n ],\n isRoot: true,\n };\n }\n\n return {\n name: 'root',\n children: rootChildren,\n isRoot: true,\n };\n}\n","import * as d3 from 'd3';\nimport type { ApiClient } from '../api/client';\nimport { getHierarchyColor, getNodeRadius, getStrokeColor } from '../d3/colors';\nimport { buildFileHierarchy, buildRelationshipHierarchy } from '../d3/hierarchy';\nimport type { Store } from '../state/store';\nimport type { HierarchyNode, RelationshipType } from '../types/api';\n// import { setupZoom } from '../d3/zoom';\n\nexport function initSunburst(store: Store, _api: ApiClient) {\n const state = store.getState();\n const data = state.graphData;\n\n if (!data || data.nodes.length === 0) {\n showEmptyState();\n return;\n }\n\n hideLoading();\n renderSunburstGraph(store);\n}\n\nfunction hideLoading() {\n const loading = document.getElementById('loading');\n if (loading) loading.style.display = 'none';\n}\n\nfunction showEmptyState() {\n const container = document.getElementById('graph-container');\n if (container) {\n container.innerHTML = `\n <div class=\"empty-state\">\n <h2>No symbols found</h2>\n <p>Index a codebase to see the symbol graph</p>\n </div>\n `;\n }\n}\n\nfunction renderSunburstGraph(store: Store) {\n const state = store.getState();\n const data = state.graphData;\n if (!data) return;\n\n const container = document.getElementById('graph-container');\n if (!container) return;\n\n const width = container.clientWidth;\n const height = container.clientHeight;\n\n const svg = d3.select<SVGSVGElement, unknown>('#graph-svg');\n svg.selectAll('*').remove();\n\n // Build hierarchy based on selected grouping\n const selectedGrouping = state.selectedGrouping as RelationshipType;\n const hierarchyData =\n selectedGrouping === 'structure'\n ? buildFileHierarchy(data.nodes)\n : buildRelationshipHierarchy(data.nodes, data.edges, selectedGrouping);\n\n const root = d3.hierarchy(hierarchyData);\n\n // Count descendants for sizing\n root.count();\n\n // Sort children by size\n root.sort((a, b) => (b.value || 0) - (a.value || 0));\n\n // Calculate tree dimensions\n const dx = 20;\n const dy = Math.max(120, width / (root.height + 1));\n\n // Create tree layout\n const treeLayout = d3\n .tree<HierarchyNode>()\n .nodeSize([dx, dy])\n .separation((a, b) => (a.parent === b.parent ? 1 : 1.5));\n\n treeLayout(root);\n\n // Calculate bounds\n let x0 = Number.POSITIVE_INFINITY;\n let x1 = Number.NEGATIVE_INFINITY;\n let y0 = Number.POSITIVE_INFINITY;\n let y1 = Number.NEGATIVE_INFINITY;\n\n root.each((d) => {\n if (d.x !== undefined && d.y !== undefined) {\n if (d.x < x0) x0 = d.x;\n if (d.x > x1) x1 = d.x;\n if (d.y < y0) y0 = d.y;\n if (d.y > y1) y1 = d.y;\n }\n });\n\n const treeHeight = x1 - x0 + dx * 2;\n const treeWidth = y1 - y0 + dy;\n\n // Create main group with zoom\n const g = svg.append('g');\n\n // Set up zoom\n const zoom = d3\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.1, 4])\n .on('zoom', (event) => {\n g.attr('transform', event.transform.toString());\n });\n\n svg.call(zoom);\n\n // Initial transform to center and fit\n const scale = Math.min((width - 100) / treeWidth, (height - 100) / treeHeight, 1);\n const initialX = 50 - y0 * scale;\n const initialY = height / 2 - ((x0 + x1) / 2) * scale;\n\n svg.call(zoom.transform, d3.zoomIdentity.translate(initialX, initialY).scale(scale));\n\n // Draw links\n const linkGenerator = d3\n .linkHorizontal<d3.HierarchyLink<HierarchyNode>, d3.HierarchyPointNode<HierarchyNode>>()\n .x((d) => d.y!)\n .y((d) => d.x!);\n\n g.selectAll('.tree-link')\n .data(root.links())\n .enter()\n .append('path')\n .attr('class', 'tree-link')\n .attr('d', linkGenerator as any);\n\n // Draw nodes\n const node = g\n .selectAll('.tree-node')\n .data(root.descendants())\n .enter()\n .append('g')\n .attr('class', (d) => {\n let cls = 'tree-node';\n if (d.children && d.data.isDirectory) cls += ' has-children';\n return cls;\n })\n .attr('transform', (d) => `translate(${d.y},${d.x})`);\n\n // Node circles\n node\n .append('circle')\n .attr('r', (d) => {\n if (d.data.data) {\n const lines = d.data.data.lines || 1;\n return getNodeRadius(lines, 4, 12, 300);\n }\n if (d.data.isFile) {\n return 5;\n }\n if (d.data.isRoot) {\n return 8;\n }\n return 6;\n })\n .attr('fill', (d) => getHierarchyColor(d))\n .attr('stroke', (d) => getStrokeColor(d))\n .attr('stroke-width', (d) => (d.data.data?.hasAnnotations ? 2 : 1));\n\n // Node labels\n node\n .append('text')\n .attr('dy', '0.31em')\n .attr('x', (d) => (d.children ? -10 : 10))\n .attr('text-anchor', (d) => (d.children ? 'end' : 'start'))\n .text((d) => {\n const name = d.data.name;\n return name.length > 25 ? `${name.substring(0, 22)}...` : name;\n })\n .clone(true)\n .lower()\n .attr('stroke', '#1e1e1e')\n .attr('stroke-width', 3);\n\n // Tooltip\n const tooltip = d3.select('#tooltip');\n\n node\n .on('mouseover', (_event, d) => {\n if (d.data.data) {\n const sym = d.data.data;\n const domainHtml = sym.domain\n ? `<div class=\"domains\">${sym.domain.map((dom) => `<span class=\"domain-tag\">${dom}</span>`).join('')}</div>`\n : '';\n const pureHtml =\n sym.pure !== undefined\n ? `<div class=\"pure ${sym.pure ? 'is-pure' : 'has-side-effects'}\">${sym.pure ? 'Pure function' : 'Has side effects'}</div>`\n : '';\n const purposeHtml = sym.purpose ? `<div class=\"purpose\">${sym.purpose}</div>` : '';\n\n tooltip.style('display', 'block').html(`\n <div class=\"name\">${sym.name}</div>\n <span class=\"kind kind-${sym.kind}\">${sym.kind}</span>\n <span class=\"lines\">${sym.lines} lines</span>\n ${domainHtml}\n ${pureHtml}\n ${purposeHtml}\n <div class=\"location\">${sym.filePath.split('/').slice(-2).join('/')}</div>\n `);\n } else if (!d.data.isRoot) {\n const childCount = d.descendants().filter((c) => c.data.data).length;\n const totalLines = d\n .descendants()\n .filter((c) => c.data.data)\n .reduce((sum, c) => sum + (c.data.data?.lines || 0), 0);\n const type = d.data.isFile ? 'file' : 'directory';\n\n tooltip.style('display', 'block').html(`\n <div class=\"name\">${d.data.name}</div>\n <span class=\"kind kind-type\">${type}</span>\n <span class=\"lines\">${totalLines} lines</span>\n <div class=\"location\">${childCount} symbols</div>\n `);\n }\n })\n .on('mousemove', (event) => {\n tooltip.style('left', `${event.pageX + 10}px`).style('top', `${event.pageY - 10}px`);\n })\n .on('mouseout', () => {\n tooltip.style('display', 'none');\n });\n}\n","import * as d3 from 'd3';\n\n/**\n * Setup zoom behavior for SVG\n */\nexport function setupZoom(\n svg: d3.Selection<SVGSVGElement, unknown, HTMLElement, unknown>,\n g: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>,\n options: {\n scaleExtent?: [number, number];\n onZoom?: (transform: d3.ZoomTransform) => void;\n } = {}\n) {\n const { scaleExtent = [0.1, 4], onZoom } = options;\n\n const zoom = d3\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent(scaleExtent)\n .on('zoom', (event: d3.D3ZoomEvent<SVGSVGElement, unknown>) => {\n g.attr('transform', event.transform.toString());\n onZoom?.(event.transform);\n });\n\n svg.call(zoom);\n\n return zoom;\n}\n\n/**\n * Reset zoom to identity transform\n */\nexport function resetZoom(\n svg: d3.Selection<SVGSVGElement, unknown, HTMLElement, unknown>,\n zoom: d3.ZoomBehavior<SVGSVGElement, unknown>\n) {\n svg.transition().duration(500).call(zoom.transform, d3.zoomIdentity);\n}\n\n/**\n * Fit content to viewport\n */\nexport function fitToViewport(\n svg: d3.Selection<SVGSVGElement, unknown, HTMLElement, unknown>,\n zoom: d3.ZoomBehavior<SVGSVGElement, unknown>,\n contentBounds: { x: number; y: number; width: number; height: number },\n padding = 40\n) {\n const svgNode = svg.node();\n if (!svgNode) return;\n\n const { width: svgWidth, height: svgHeight } = svgNode.getBoundingClientRect();\n\n const scale = Math.min(\n (svgWidth - padding * 2) / contentBounds.width,\n (svgHeight - padding * 2) / contentBounds.height,\n 1\n );\n\n const translateX = svgWidth / 2 - (contentBounds.x + contentBounds.width / 2) * scale;\n const translateY = svgHeight / 2 - (contentBounds.y + contentBounds.height / 2) * scale;\n\n const transform = d3.zoomIdentity.translate(translateX, translateY).scale(scale);\n\n svg.transition().duration(500).call(zoom.transform, transform);\n}\n","import * as d3 from 'd3';\nimport type { ApiClient } from '../api/client';\nimport { getKindColor, getNodeRadius } from '../d3/colors';\nimport { setupZoom } from '../d3/zoom';\nimport type { Store } from '../state/store';\nimport { selectSymbol, setSymbolSearch } from '../state/store';\nimport type { SymbolNode } from '../types/api';\n\ninterface SimulationNode extends SymbolNode, d3.SimulationNodeDatum {}\n\ninterface SimulationLink extends d3.SimulationLinkDatum<SimulationNode> {\n semantic: string;\n}\n\nlet simulation: d3.Simulation<SimulationNode, SimulationLink> | null = null;\nlet debounceTimer: ReturnType<typeof setTimeout> | null = null;\n\nexport function initSymbols(store: Store, _api: ApiClient) {\n const state = store.getState();\n const data = state.graphData;\n\n if (!data || data.nodes.length === 0) {\n showEmptyState();\n return;\n }\n\n hideLoading();\n renderSymbolsView(store);\n}\n\nfunction hideLoading() {\n const loading = document.getElementById('loading');\n if (loading) loading.style.display = 'none';\n}\n\nfunction showEmptyState() {\n const container = document.getElementById('graph-container');\n if (container) {\n container.innerHTML = `\n <div class=\"empty-state\">\n <h2>No symbols found</h2>\n <p>Index a codebase to see the symbol graph</p>\n </div>\n `;\n }\n}\n\nfunction renderSymbolsView(store: Store) {\n const container = document.getElementById('graph-container');\n if (!container) return;\n\n const state = store.getState();\n\n container.innerHTML = `\n <div class=\"symbols-container\">\n <div class=\"symbols-sidebar${state.sidebarCollapsed ? ' collapsed' : ''}\" id=\"symbols-sidebar\">\n <div class=\"symbols-sidebar-header\">\n <h3>Symbols</h3>\n <button class=\"sidebar-toggle-btn\" id=\"symbols-collapse-btn\" title=\"Collapse sidebar\">◀</button>\n </div>\n <div class=\"symbols-search\">\n <input type=\"text\" id=\"symbols-search-input\" placeholder=\"Search symbols...\" value=\"${escapeHtml(state.symbolSearchQuery)}\" />\n </div>\n <div class=\"symbols-sidebar-content\" id=\"symbols-list\"></div>\n </div>\n <div class=\"symbols-main\">\n <button class=\"sidebar-expand-btn\" id=\"symbols-expand-btn\" title=\"Expand sidebar\">▶</button>\n <div class=\"symbols-detail\" id=\"symbols-detail\"></div>\n <svg id=\"symbols-force-svg\"></svg>\n </div>\n </div>\n `;\n\n renderSidebarList(store);\n setupEventHandlers(store);\n\n // Restore selection if any\n if (state.selectedSymbolId !== null) {\n renderDetail(store, state.selectedSymbolId);\n renderNeighborhoodGraph(store, state.selectedSymbolId);\n } else {\n showPlaceholder();\n }\n}\n\nfunction renderSidebarList(store: Store) {\n const state = store.getState();\n const data = state.graphData;\n if (!data) return;\n\n const listEl = document.getElementById('symbols-list');\n if (!listEl) return;\n\n const query = state.symbolSearchQuery.toLowerCase();\n const filtered = query\n ? data.nodes.filter(\n (n) =>\n n.name.toLowerCase().includes(query) ||\n n.filePath.toLowerCase().includes(query) ||\n n.kind.toLowerCase().includes(query)\n )\n : data.nodes;\n\n // Group by kind\n const byKind = new Map<string, SymbolNode[]>();\n for (const node of filtered) {\n const kind = node.kind;\n if (!byKind.has(kind)) byKind.set(kind, []);\n byKind.get(kind)!.push(node);\n }\n\n // Sort kinds and symbols within\n const sortedKinds = [...byKind.keys()].sort();\n\n let html = '';\n for (const kind of sortedKinds) {\n const nodes = byKind.get(kind)!;\n nodes.sort((a, b) => a.name.localeCompare(b.name));\n\n html += `<div class=\"symbol-kind-header\">${kind} (${nodes.length})</div>`;\n for (const node of nodes) {\n const fileParts = node.filePath.split('/');\n const shortPath = fileParts.slice(-2).join('/');\n const isSelected = node.id === state.selectedSymbolId;\n html += `\n <div class=\"symbol-item${isSelected ? ' selected' : ''}\" data-symbol-id=\"${node.id}\">\n <span class=\"symbol-item-kind kind-${kind}\" style=\"background: ${getKindColor(kind)}; color: #fff;\">${kind}</span>\n <span class=\"symbol-item-name\">${escapeHtml(node.name)}</span>\n <span class=\"symbol-item-file\" title=\"${escapeHtml(node.filePath)}\">${escapeHtml(shortPath)}</span>\n </div>\n `;\n }\n }\n\n if (filtered.length === 0) {\n html =\n '<div style=\"padding: 16px; color: var(--text-dimmed); text-align: center; font-size: 12px;\">No symbols match your search</div>';\n }\n\n listEl.innerHTML = html;\n\n // Attach click handlers to symbol items\n listEl.querySelectorAll('.symbol-item').forEach((el) => {\n el.addEventListener('click', () => {\n const id = Number((el as HTMLElement).dataset.symbolId);\n selectSymbol(store, id);\n highlightSelected(id);\n renderDetail(store, id);\n renderNeighborhoodGraph(store, id);\n });\n });\n}\n\nfunction highlightSelected(id: number) {\n document.querySelectorAll('.symbol-item').forEach((el) => {\n el.classList.toggle('selected', Number((el as HTMLElement).dataset.symbolId) === id);\n });\n}\n\nfunction setupEventHandlers(store: Store) {\n // Search input with debounce\n const searchInput = document.getElementById('symbols-search-input') as HTMLInputElement | null;\n if (searchInput) {\n searchInput.addEventListener('input', () => {\n if (debounceTimer) clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n setSymbolSearch(store, searchInput.value);\n renderSidebarList(store);\n }, 150);\n });\n }\n\n // Collapse button\n const collapseBtn = document.getElementById('symbols-collapse-btn');\n if (collapseBtn) {\n collapseBtn.addEventListener('click', () => {\n const sidebar = document.getElementById('symbols-sidebar');\n if (sidebar) {\n sidebar.classList.add('collapsed');\n store.setState({ sidebarCollapsed: true });\n }\n });\n }\n\n // Expand button\n const expandBtn = document.getElementById('symbols-expand-btn');\n if (expandBtn) {\n expandBtn.addEventListener('click', () => {\n const sidebar = document.getElementById('symbols-sidebar');\n if (sidebar) {\n sidebar.classList.remove('collapsed');\n store.setState({ sidebarCollapsed: false });\n }\n });\n }\n\n // Escape key to deselect\n const keyHandler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n selectSymbol(store, null);\n document.querySelectorAll('.symbol-item').forEach((el) => el.classList.remove('selected'));\n const detail = document.getElementById('symbols-detail');\n if (detail) detail.classList.remove('visible');\n stopSimulation();\n showPlaceholder();\n }\n };\n document.addEventListener('keydown', keyHandler);\n\n // Clean up on next view switch (MutationObserver on container removal)\n const container = document.getElementById('graph-container');\n if (container) {\n const observer = new MutationObserver(() => {\n if (!document.getElementById('symbols-sidebar')) {\n document.removeEventListener('keydown', keyHandler);\n stopSimulation();\n observer.disconnect();\n }\n });\n observer.observe(container, { childList: true });\n }\n}\n\nfunction renderDetail(store: Store, symbolId: number) {\n const state = store.getState();\n const data = state.graphData;\n if (!data) return;\n\n const node = data.nodes.find((n) => n.id === symbolId);\n if (!node) return;\n\n const detailEl = document.getElementById('symbols-detail');\n if (!detailEl) return;\n\n // Count connections\n const incoming = data.edges.filter((e) => e.target === symbolId).length;\n const outgoing = data.edges.filter((e) => e.source === symbolId).length;\n\n const fileParts = node.filePath.split('/');\n const shortPath = fileParts.slice(-2).join('/');\n\n let html = `\n <div class=\"symbol-detail-header\">\n <span class=\"symbol-detail-name\">${escapeHtml(node.name)}</span>\n <span class=\"symbol-detail-kind kind-${node.kind}\" style=\"background: ${getKindColor(node.kind)}; color: #fff;\">${node.kind}</span>\n </div>\n <div class=\"symbol-detail-meta\">\n <span title=\"${escapeHtml(node.filePath)}\">${escapeHtml(shortPath)}</span>\n <span>${node.lines} lines</span>\n ${node.moduleName ? `<span>Module: ${escapeHtml(node.moduleName)}</span>` : ''}\n </div>\n `;\n\n if (node.pure !== undefined) {\n html += `<span class=\"symbol-detail-badge ${node.pure ? 'is-pure' : 'has-side-effects'}\">${node.pure ? 'Pure function' : 'Has side effects'}</span>`;\n }\n\n if (node.purpose) {\n html += `<div class=\"symbol-detail-purpose\">${escapeHtml(node.purpose)}</div>`;\n }\n\n if (node.domain && node.domain.length > 0) {\n html += `<div class=\"symbol-detail-domains\">${node.domain.map((d) => `<span class=\"domain-tag\">${escapeHtml(d)}</span>`).join('')}</div>`;\n }\n\n html += `<div class=\"symbol-detail-connections\"><span>${incoming}</span> incoming, <span>${outgoing}</span> outgoing connections</div>`;\n\n detailEl.innerHTML = html;\n detailEl.classList.add('visible');\n}\n\nfunction renderNeighborhoodGraph(store: Store, symbolId: number) {\n const state = store.getState();\n const data = state.graphData;\n if (!data) return;\n\n stopSimulation();\n\n // Remove placeholder if present\n const placeholder = document.querySelector('.symbols-placeholder');\n if (placeholder) placeholder.remove();\n\n const svg = d3.select<SVGSVGElement, unknown>('#symbols-force-svg');\n svg.selectAll('*').remove();\n\n const svgNode = svg.node();\n if (!svgNode) return;\n\n const rect = svgNode.getBoundingClientRect();\n const width = rect.width;\n const height = rect.height;\n\n if (width === 0 || height === 0) return;\n\n // Build ego-network\n const neighborEdges = data.edges.filter((e) => e.source === symbolId || e.target === symbolId);\n const neighborIds = new Set<number>();\n neighborIds.add(symbolId);\n for (const e of neighborEdges) {\n neighborIds.add(e.source);\n neighborIds.add(e.target);\n }\n\n const nodeById = new Map(data.nodes.map((n) => [n.id, n]));\n const simNodes: SimulationNode[] = [...neighborIds]\n .map((id) => nodeById.get(id))\n .filter((n): n is SymbolNode => n !== undefined)\n .map((n) => {\n const sn: SimulationNode = { ...n };\n // Pin selected node to center\n if (n.id === symbolId) {\n sn.fx = width / 2;\n sn.fy = height / 2;\n }\n return sn;\n });\n\n const simNodeIds = new Set(simNodes.map((n) => n.id));\n const simLinks: SimulationLink[] = neighborEdges\n .filter((e) => simNodeIds.has(e.source) && simNodeIds.has(e.target))\n .map((e) => ({\n source: e.source,\n target: e.target,\n semantic: e.semantic,\n }));\n\n if (simNodes.length === 0) return;\n\n // Arrow marker\n svg\n .append('defs')\n .append('marker')\n .attr('id', 'nb-arrowhead')\n .attr('viewBox', '-0 -5 10 10')\n .attr('refX', 20)\n .attr('refY', 0)\n .attr('orient', 'auto')\n .attr('markerWidth', 6)\n .attr('markerHeight', 6)\n .append('path')\n .attr('d', 'M 0,-5 L 10,0 L 0,5')\n .attr('fill', '#4a4a4a');\n\n // Create simulation\n simulation = d3\n .forceSimulation(simNodes)\n .force(\n 'link',\n d3\n .forceLink<SimulationNode, SimulationLink>(simLinks)\n .id((d) => d.id)\n .distance(120)\n )\n .force('charge', d3.forceManyBody().strength(-200))\n .force('center', d3.forceCenter(width / 2, height / 2))\n .force(\n 'collision',\n d3.forceCollide<SimulationNode>().radius((d) => getNodeRadius(d.lines) + 10)\n );\n\n // Main group with zoom\n const g = svg.append('g');\n setupZoom(svg, g);\n\n // Draw links\n const link = g\n .append('g')\n .attr('class', 'links')\n .selectAll('line')\n .data(simLinks)\n .enter()\n .append('line')\n .attr('class', 'link')\n .attr('stroke', '#4a4a4a')\n .attr('stroke-width', 1.5)\n .attr('marker-end', 'url(#nb-arrowhead)');\n\n // Link labels\n const linkLabel = g\n .append('g')\n .attr('class', 'link-labels')\n .selectAll('text')\n .data(simLinks)\n .enter()\n .append('text')\n .attr('class', 'link-label')\n .text((d) => d.semantic || '');\n\n // Draw nodes\n const node = g\n .append('g')\n .attr('class', 'nodes')\n .selectAll<SVGGElement, SimulationNode>('.node')\n .data(simNodes)\n .enter()\n .append('g')\n .attr('class', (d) => `node${d.hasAnnotations ? '' : ' greyed-out'}`)\n .call(d3.drag<SVGGElement, SimulationNode>().on('start', dragstarted).on('drag', dragged).on('end', dragended));\n\n // Node circles - selected node gets highlight\n node\n .append('circle')\n .attr('r', (d) => (d.id === symbolId ? getNodeRadius(d.lines) * 1.5 : getNodeRadius(d.lines)))\n .attr('fill', (d) => getKindColor(d.kind))\n .attr('stroke', (d) => (d.id === symbolId ? 'var(--accent-blue)' : d.hasAnnotations ? '#6a9955' : '#3c3c3c'))\n .attr('stroke-width', (d) => (d.id === symbolId ? 3 : d.hasAnnotations ? 2 : 1.5));\n\n // Node labels\n node\n .append('text')\n .attr('dx', (d) => (d.id === symbolId ? getNodeRadius(d.lines) * 1.5 + 4 : getNodeRadius(d.lines) + 4))\n .attr('dy', 4)\n .text((d) => d.name);\n\n // Tooltip\n const tooltip = d3.select('#tooltip');\n\n node\n .on('mouseover', (_event, d) => {\n const domainHtml = d.domain\n ? `<div class=\"domains\">${d.domain.map((dom) => `<span class=\"domain-tag\">${dom}</span>`).join('')}</div>`\n : '';\n const pureHtml =\n d.pure !== undefined\n ? `<div class=\"pure ${d.pure ? 'is-pure' : 'has-side-effects'}\">${d.pure ? 'Pure function' : 'Has side effects'}</div>`\n : '';\n const purposeHtml = d.purpose ? `<div class=\"purpose\">${d.purpose}</div>` : '';\n\n tooltip.style('display', 'block').html(`\n <div class=\"name\">${d.name}</div>\n <span class=\"kind kind-${d.kind}\">${d.kind}</span>\n <span class=\"lines\">${d.lines} lines</span>\n ${domainHtml}\n ${pureHtml}\n ${purposeHtml}\n <div class=\"location\">${d.filePath.split('/').slice(-2).join('/')}</div>\n `);\n })\n .on('mousemove', (event) => {\n tooltip.style('left', `${event.pageX + 10}px`).style('top', `${event.pageY - 10}px`);\n })\n .on('mouseout', () => {\n tooltip.style('display', 'none');\n });\n\n // Click on neighbor node to navigate\n node.on('click', (_event, d) => {\n tooltip.style('display', 'none');\n if (d.id !== symbolId) {\n selectSymbol(store, d.id);\n highlightSelected(d.id);\n renderDetail(store, d.id);\n renderNeighborhoodGraph(store, d.id);\n // Scroll sidebar to selected\n const itemEl = document.querySelector(`.symbol-item[data-symbol-id=\"${d.id}\"]`);\n if (itemEl) itemEl.scrollIntoView({ block: 'nearest' });\n }\n });\n\n // Link hover\n link\n .on('mouseover', (_event, d) => {\n const sourceNode = typeof d.source === 'object' ? d.source : nodeById.get(d.source as number);\n const targetNode = typeof d.target === 'object' ? d.target : nodeById.get(d.target as number);\n tooltip.style('display', 'block').html(`\n <div class=\"name\">${sourceNode?.name || d.source} → ${targetNode?.name || d.target}</div>\n <div class=\"semantic\">${d.semantic}</div>\n `);\n })\n .on('mousemove', (event) => {\n tooltip.style('left', `${event.pageX + 10}px`).style('top', `${event.pageY - 10}px`);\n })\n .on('mouseout', () => {\n tooltip.style('display', 'none');\n });\n\n // Inline legend at bottom-left\n const legend = g\n .append('g')\n .attr('class', 'legend-inline')\n .attr('transform', `translate(20, ${height - 20})`);\n\n const kinds = [...new Set(simNodes.map((n) => n.kind))].sort();\n kinds.forEach((kind, i) => {\n const lg = legend.append('g').attr('transform', `translate(${i * 90}, 0)`);\n lg.append('circle').attr('r', 5).attr('fill', getKindColor(kind)).attr('cy', -2);\n lg.append('text').attr('x', 10).attr('y', 2).attr('font-size', '10px').attr('fill', 'var(--text-muted)').text(kind);\n });\n\n // Tick\n simulation.on('tick', () => {\n link\n .attr('x1', (d) => (d.source as SimulationNode).x!)\n .attr('y1', (d) => (d.source as SimulationNode).y!)\n .attr('x2', (d) => (d.target as SimulationNode).x!)\n .attr('y2', (d) => (d.target as SimulationNode).y!);\n\n linkLabel\n .attr('x', (d) => ((d.source as SimulationNode).x! + (d.target as SimulationNode).x!) / 2)\n .attr('y', (d) => ((d.source as SimulationNode).y! + (d.target as SimulationNode).y!) / 2);\n\n node.attr('transform', (d) => `translate(${d.x},${d.y})`);\n });\n\n function dragstarted(event: d3.D3DragEvent<SVGGElement, SimulationNode, SimulationNode>) {\n if (!event.active) simulation?.alphaTarget(0.3).restart();\n event.subject.fx = event.subject.x;\n event.subject.fy = event.subject.y;\n }\n\n function dragged(event: d3.D3DragEvent<SVGGElement, SimulationNode, SimulationNode>) {\n event.subject.fx = event.x;\n event.subject.fy = event.y;\n }\n\n function dragended(event: d3.D3DragEvent<SVGGElement, SimulationNode, SimulationNode>) {\n if (!event.active) simulation?.alphaTarget(0);\n // Don't unpin the selected center node\n if (event.subject.id !== symbolId) {\n event.subject.fx = null;\n event.subject.fy = null;\n }\n }\n}\n\nfunction showPlaceholder() {\n const svg = d3.select<SVGSVGElement, unknown>('#symbols-force-svg');\n svg.selectAll('*').remove();\n\n const detail = document.getElementById('symbols-detail');\n if (detail) detail.classList.remove('visible');\n\n // Add placeholder text in the main area\n const mainEl = document.querySelector('.symbols-main');\n if (mainEl && !mainEl.querySelector('.symbols-placeholder')) {\n const ph = document.createElement('div');\n ph.className = 'symbols-placeholder';\n ph.textContent = 'Select a symbol to view its neighborhood graph';\n mainEl.insertBefore(ph, mainEl.querySelector('svg'));\n }\n}\n\nfunction stopSimulation() {\n if (simulation) {\n simulation.stop();\n simulation = null;\n }\n}\n\nfunction escapeHtml(str: string): string {\n return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n}\n","import './styles/variables.css';\nimport './styles/base.css';\nimport './styles/layout.css';\nimport './styles/components.css';\nimport './styles/graph.css';\n\nimport { createApiClient } from './api/client';\nimport { createStore } from './state/store';\nimport { initFilesTreemap } from './views/files-treemap';\nimport { initFlowsDag } from './views/flows-dag';\nimport { initInteractions } from './views/interactions';\nimport { initModulesTree } from './views/modules-tree';\nimport { initSunburst } from './views/sunburst';\nimport { initSymbols } from './views/symbols';\n\n// Initialize store and API client\nconst store = createStore();\nconst api = createApiClient();\n\n// View initialization functions\nconst views = {\n symbols: initSymbols,\n sunburst: initSunburst,\n modules: initModulesTree,\n flows: initFlowsDag,\n interactions: initInteractions,\n files: initFilesTreemap,\n};\n\n// Current view state\nlet currentView: keyof typeof views = 'symbols';\n\n// Setup view toggle buttons\nfunction setupViewToggle() {\n document.querySelectorAll('.view-btn').forEach((btn) => {\n btn.addEventListener('click', () => {\n const view = (btn as HTMLElement).dataset.view as keyof typeof views;\n if (view && view !== currentView) {\n switchView(view);\n }\n });\n });\n}\n\n// Switch between views\nfunction switchView(view: keyof typeof views) {\n // Update button states\n document.querySelectorAll('.view-btn').forEach((btn) => {\n btn.classList.toggle('active', (btn as HTMLElement).dataset.view === view);\n });\n\n // Show/hide relationship filters (only for hierarchy view)\n const filters = document.getElementById('relationship-filters');\n if (filters) {\n filters.classList.toggle('visible', view === 'sunburst');\n }\n\n // Update stats display based on view\n updateStatsForView(view);\n\n currentView = view;\n renderCurrentView();\n}\n\n// Update stats display for the current view\nfunction updateStatsForView(view: string) {\n const statsContainer = document.getElementById('stats');\n if (!statsContainer) return;\n\n const state = store.getState();\n\n if (view === 'modules') {\n const moduleCount = state.modulesData?.stats.moduleCount ?? state.flowsDagData?.modules.length ?? '-';\n const assigned = state.modulesData?.stats.assigned ?? '-';\n const unassigned = state.modulesData?.stats.unassigned ?? '-';\n statsContainer.innerHTML = `\n <span class=\"stat\">Modules: <span class=\"stat-value\" id=\"stat-modules\">${moduleCount}</span></span>\n <span class=\"stat\">Assigned: <span class=\"stat-value annotated\" id=\"stat-assigned\">${assigned}</span></span>\n <span class=\"stat\">Unassigned: <span class=\"stat-value\" id=\"stat-unassigned\">${unassigned}</span></span>\n `;\n } else if (view === 'flows') {\n statsContainer.innerHTML = `\n <span class=\"stat\">Flows: <span class=\"stat-value\" id=\"stat-flows\">${state.flowsDagData?.flows.length ?? '-'}</span></span>\n <span class=\"stat\">Modules: <span class=\"stat-value\" id=\"stat-modules\">${state.flowsDagData?.modules.length ?? '-'}</span></span>\n `;\n } else if (view === 'interactions') {\n const data = state.interactionsData;\n if (data) {\n statsContainer.innerHTML = `\n <span class=\"stat\">Interactions: <span class=\"stat-value\">${data.stats.totalCount}</span></span>\n <span class=\"stat\">Business: <span class=\"stat-value annotated\">${data.stats.businessCount}</span></span>\n <span class=\"stat\">Utility: <span class=\"stat-value\">${data.stats.utilityCount}</span></span>\n <span class=\"stat\">Coverage: <span class=\"stat-value\">${data.relationshipCoverage.coveragePercent.toFixed(0)}%</span></span>\n `;\n }\n } else if (view === 'files') {\n const nodes = state.graphData?.nodes ?? [];\n const fileCount = new Set(nodes.map((n) => n.filePath)).size;\n const totalLines = nodes.reduce((sum, n) => sum + n.lines, 0);\n statsContainer.innerHTML = `\n <span class=\"stat\">Files: <span class=\"stat-value\">${fileCount}</span></span>\n <span class=\"stat\">Total Lines: <span class=\"stat-value annotated\">${totalLines.toLocaleString()}</span></span>\n <span class=\"stat\">Symbols: <span class=\"stat-value\">${nodes.length}</span></span>\n `;\n } else {\n statsContainer.innerHTML = `\n <span class=\"stat\">Symbols: <span class=\"stat-value\" id=\"stat-symbols\">${state.graphData?.stats.totalSymbols ?? '-'}</span></span>\n <span class=\"stat\">Annotated: <span class=\"stat-value annotated\" id=\"stat-annotated\">${state.graphData?.stats.annotatedSymbols ?? '-'}</span></span>\n <span class=\"stat\">Relationships: <span class=\"stat-value\" id=\"stat-relationships\">${state.graphData?.stats.totalRelationships ?? '-'}</span></span>\n `;\n }\n}\n\n// Render the current view\nfunction renderCurrentView() {\n const container = document.getElementById('graph-container');\n if (!container) return;\n\n // Clear container\n container.innerHTML = '<svg id=\"graph-svg\"></svg>';\n\n // Add loading state\n const loading = document.createElement('div');\n loading.className = 'loading';\n loading.id = 'loading';\n loading.textContent = 'Loading...';\n container.appendChild(loading);\n\n // Render the appropriate view\n const viewInit = views[currentView];\n if (viewInit) {\n viewInit(store, api);\n }\n}\n\n// Load initial data\nasync function loadInitialData() {\n try {\n const graphData = await api.getSymbolGraph();\n store.setState({ graphData });\n\n // Update stats\n document.getElementById('stat-symbols')!.textContent = String(graphData.stats.totalSymbols);\n document.getElementById('stat-annotated')!.textContent = String(graphData.stats.annotatedSymbols);\n document.getElementById('stat-relationships')!.textContent = String(graphData.stats.totalRelationships);\n\n // Load modules data\n const modulesData = await api.getModules();\n store.setState({ modulesData });\n\n // Load flows DAG data\n const flowsDagData = await api.getFlowsDag();\n store.setState({ flowsDagData });\n\n // Load interactions data\n const interactionsData = await api.getInteractions();\n store.setState({ interactionsData });\n\n // Render initial view\n renderCurrentView();\n } catch (error) {\n console.error('Failed to load data:', error);\n const loading = document.getElementById('loading');\n if (loading) {\n loading.textContent = 'Failed to load data. Is the API server running?';\n }\n }\n}\n\n// Setup relationship filters (for hierarchy view)\nfunction setupRelationshipFilters() {\n document.querySelectorAll('.filter-chip').forEach((chip) => {\n chip.addEventListener('click', () => {\n const type = (chip as HTMLElement).dataset.type;\n if (!type) return;\n\n // Update chip styles (single-select)\n document.querySelectorAll('.filter-chip').forEach((c) => {\n c.classList.remove('active');\n c.classList.add('inactive');\n });\n chip.classList.remove('inactive');\n chip.classList.add('active');\n\n // Update store and re-render\n store.setState({\n selectedGrouping: type as 'structure' | 'extends' | 'implements' | 'calls' | 'imports' | 'uses',\n });\n if (currentView === 'sunburst') {\n renderCurrentView();\n }\n });\n });\n}\n\n// Initialize the application\nfunction init() {\n setupViewToggle();\n setupRelationshipFilters();\n loadInitialData();\n}\n\n// Start when DOM is ready\nif (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', init);\n} else {\n init();\n}\n"],"names":["createApiClient","baseUrl","fetchJson","path","response","createStore","state","subscribers","notify","callback","partial","selectFlow","store","flowId","selectedFlows","selectSymbol","id","setSymbolSearch","query","descending","a","b","noop","dispatch","i","n","_","t","Dispatch","parseTypenames","typenames","types","name","typename","T","get","set","copy","type","that","args","c","xhtml","namespaces","namespace","prefix","creatorInherit","document","uri","creatorFixed","fullname","creator","none","selector","selection_select","select","groups","m","subgroups","j","group","subgroup","node","subnode","Selection","array","x","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum","child","next","constant$7","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","key","nodeByKeyValue","keyValues","keyValue","selection_data","value","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","context","selection","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","ascending","compareNode","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","v","attrFunctionNS","selection_attr","defaultView","styleRemove","styleConstant","priority","styleFunction","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","clone","selection_cloneDeep","selection_clone","deep","selection_datum","contextListener","listener","event","onRemove","on","o","onAdd","options","selection_on","dispatchEvent","params","window","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection_selection","sourceEvent","pointer","svg","point","rect","selectAll","nonpassive","nonpassivecapture","nopropagation","noevent$1","dragDisable","view","noevent","yesdrag","noclick","constant$6","DragEvent","subject","target","identifier","active","y","dx","dy","defaultFilter","defaultContainer","defaultSubject","d","defaultTouchable","drag","container","touchable","gestures","listeners","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","nodrag","touches","touch","p","s","p0","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","l","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h","Hsl","min","max","hsl","m2","hsl2rgb","clamph","clampt","constant$5","linear","exponential","gamma","nogamma","interpolateRgb","rgbGamma","start","end","colorRgb","interpolateNumber","reA","reB","zero","one","interpolateString","bi","am","bm","bs","q","number","degrees","identity","decompose","e","f","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","epsilon2","cosh","sinh","tanh","interpolateZoom","zoomRho","rho","rho2","rho4","zoom","p1","ux0","uy0","w0","ux1","uy1","w1","d2","S","d1","b0","b1","r0","r1","coshr0","u","_1","_2","_4","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","t0","t1","t2","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","index","timing","schedules","init","self","tween","stop","tick","interrupt","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","value1","string00","string1","interpolate0","string0","string10","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","styleNull","style","styleMaybeRemove","listener0","transition_style","styleInterpolate","styleTween","transition_styleTween","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","resolve","reject","cancel","selection_prototype","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","abs","cos","sin","pi","halfPi","tau","epsilon","range","compareValue","chordDirected","chord","directed","transpose","padAngle","sortGroups","sortSubgroups","sortChords","matrix","groupSums","groupIndex","chords","x0","subgroupIndex","tauEpsilon","append","strings","appendRound","digits","Path","x1","y1","x2","y2","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","a1","ccw","cw","da","w","slice","constant$4","defaultSource","defaultTarget","defaultRadius","defaultStartAngle","defaultEndAngle","defaultPadAngle","defaultArrowheadRadius","ribbon","headRadius","source","sourceRadius","targetRadius","startAngle","endAngle","buffer","ap","argv","sr","sa0","sa1","tr","ta0","ta1","hr","tr2","ta2","ribbonArrow","center","nodes","strength","force","sx","sy","tree_add","add","tree","leaf","xm","ym","xp","yp","right","bottom","addAll","xz","yz","tree_cover","z","tree_data","tree_extent","Quad","tree_find","radius","x3","y3","quads","tree_remove","retainer","removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","defaultX","tree_x","defaultY","tree_y","quadtree","Quadtree","leaf_copy","treeProto","tree_addAll","tree_removeAll","constant$3","jiggle","random","collide","radii","iterations","xi","yi","ri","ri2","prepare","apply","quad","rj","initialize","_nodes","_random","nodeById","nodeId","link$1","links","defaultStrength","strengths","distance","distances","count","bias","link","alpha","initializeStrength","initializeDistance","lcg$1","initialRadius","initialAngle","simulation$1","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","step","lcg","initializeNodes","angle","initializeForce","closest","manyBody","distanceMin2","distanceMax2","theta2","accumulate","weight","sum","node_count","node_each","node_eachBefore","node_eachAfter","node_find","node_sum","node_sort","node_path","ancestor","leastCommonAncestor","aNodes","bNodes","node_ancestors","node_descendants","node_leaves","leaves","node_links","node_iterator","current","hierarchy","mapChildren","objectChildren","Node","childs","computeHeight","node_copy","copyData","height","optional","required","constantZero","constant$2","shuffle","packEncloseRandom","circles","B","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","b2","b3","c2","c3","d3","ab","A","place","intersects","score","circle","packSiblingsRandom","aa","ca","sj","sk","pack","index$1","padding","radiusLeaf","packChildrenRandom","translateChild","roundNode","treemapDice","defaultSeparation","nextLeft","nextRight","moveSubtree","wm","wp","shift","change","executeShifts","nextAncestor","vim","TreeNode","treeRoot","separation","nodeSize","firstWalk","secondWalk","sizeNode","left","tx","kx","ky","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","treemapSlice","phi","squarifyRatio","ratio","rows","row","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","squarify","custom","tile","round","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","positionNode","constant$1","atan2","sqrt","acos","asin","withPath","shape","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x10","y10","x32","y32","cornerTangents","rc","lo","ox","oy","x11","y11","x00","y00","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","arc","innerRadius","outerRadius","cornerRadius","padRadius","a01","a11","a00","a10","da0","da1","rp","rc0","rc1","oc","ax","ay","bx","by","kc","lc","Bump","bumpX","linkSource","linkTarget","curve","pointX","pointY","output","linkHorizontal","ZoomEvent","transform","Transform","location","defaultExtent","defaultTransform","defaultWheelDelta","defaultConstrain","extent","translateExtent","constrain","wheelDelta","scaleExtent","duration","touchstarting","touchfirst","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","collection","k0","k1","centroid","clean","Gesture","wheelidled","currentTarget","dragEnable","started","l0","l1","dp","dl","stripCommonPrefix","paths","splitPaths","minLen","commonLen","seg","stripped","parts","buildFileTree","fileMap","existing","filePath","info","part","collapse","computeDirSymbolCount","only","total","renderFileTreemap","svgSelector","containerSelector","onSelect","svgEl","width","d3.select","tooltip","PALETTE_HUES","collectColorRoots","rootNode","roots","_a","grandchild","buildColorIndex","map","colorRoots","assignIndex","idx","cellFillFromDepth","hueIdx","depth","cellStrokeFromDepth","zoomDataStack","zoomBreadcrumb","layout","d3.hierarchy","d3.treemap","d3.treemapSquarify","renderCurrent","rootData","colorIndex","cellFill","cellStroke","cell","maxW","el","txt","fileCells","chain","cur","_event","lines","symbols","navigateTo","initFilesTreemap","_api","showEmptyState","renderFilesView","graphData","controls","breadcrumb","html","escapeHtml","text","KIND_COLORS","HIERARCHY_COLORS","FLOW_COLORS","getFlowColor","getKindColor","kind","getHierarchyColor","getStrokeColor","getNodeRadius","minR","maxR","maxLines","normalized","BRANCH_HUES","getBoxColors","branchIndex","palette","fillLightness","strokeLightness","computeValue","childrenSum","renderModuleDag","modules","modulePositions","moduleById","rootModule","d3.pack","getCircleColor","getCircleStroke","circleLayer","labelLayer","descendants","circleNode","classes","labelNode","label","countLabel","focus","zoomTo","d3.interpolateZoom","setSelected","moduleId","originalSidebarHtml","PARTICIPANT_WIDTH","PARTICIPANT_GAP","PARTICIPANT_HEIGHT","MESSAGE_ROW_HEIGHT","TOP_PADDING","SELF_CALL_WIDTH","SELF_CALL_HEIGHT","initFlowsDag","renderFlowsDagView","flowsDagData","tierNames","tiers","sidebarHtml","flowIndex","flowColorMap","flow","tier","tierFlows","flowIdToFeature","feature","hasFeatures","flowsByDomain","domain","tierLabel","isCollapsed","sortedDomains","flows","colorIdx","showSequencePlaceholder","setupSidebarInteractions","setupKeyboardShortcuts","mainContainer","renderSequenceDiagram","flowColorIndex","flowColor","participantIds","participantSet","participantIndexMap","diagramWidth","d3.zoom","containerWidth","initialX","d3.zoomIdentity","getParticipantColors","mod","participantGroup","wrapText","textEl","lifelineEnd","stepIdx","fromIdx","toIdx","fromX","toX","messageGroup","isSelfCall","loopPath","actualFromX","actualToX","labelX","badgeX","maxCharsPerLine","mid","breakIdx","highlightStep","_store","d3.selectAll","clearStepHighlight","_b","header","toggle","item","showFlowSteps","sidebar","goBackToFlowsList","sidebarContent","stepsHtml","fromModule","toModule","stripPrefix","buildChordData","interactions","moduleMap","ix","idxById","interactionsByKey","reverseKey","moduleColor","moduleColorDim","renderChordDiagram","colorIndexByModuleId","resolveColorIndex","positionalIdx","d3.chordDirected","d3.descending","d3.arc","d3.ribbonArrow","ribbonPattern","ixs","interactionsForModule","seen","result","fromStr","toStr","activeSelection","applyHighlight","targetIdx","ribbons","rd","arcs","ad","clearHighlight","fromMod","toMod","totalWeight","pattern","semantic","_d","outgoing","incoming","flip","labelRadius","initInteractions","pg","processGroupHtml","dagData","onChordSelect","renderInteractionItem","fromName","toName","patternClass","dirLabel","sourceLabel","sourceClass","initModulesTree","renderModulesView","modulesData","moduleDetailById","childrenByParent","collectDescendantIds","ids","childId","onModuleSelect","selectedId","dagModule","detail","description","descendantIds","totalMembers","groupedHtml","sectionName","member","descHtml","classifyRelationship","buildFileHierarchy","fileName","fileNode","buildRelationshipHierarchy","edges","relationshipType","relevantEdges","childrenOf","hasParent","edge","involvedNodes","rootIds","visited","buildNode","rootChildren","initSunburst","hideLoading","renderSunburstGraph","loading","selectedGrouping","hierarchyData","d3.tree","treeHeight","treeWidth","initialY","linkGenerator","d3.linkHorizontal","cls","sym","domainHtml","dom","pureHtml","purposeHtml","childCount","totalLines","setupZoom","onZoom","debounceTimer","initSymbols","renderSymbolsView","renderSidebarList","setupEventHandlers","renderDetail","renderNeighborhoodGraph","showPlaceholder","listEl","filtered","byKind","sortedKinds","shortPath","isSelected","highlightSelected","searchInput","collapseBtn","expandBtn","keyHandler","stopSimulation","observer","symbolId","detailEl","placeholder","neighborEdges","neighborIds","simNodes","sn","simNodeIds","simLinks","d3.forceSimulation","d3.forceLink","d3.forceManyBody","d3.forceCenter","d3.forceCollide","linkLabel","d3.drag","dragstarted","dragged","dragended","itemEl","sourceNode","targetNode","legend","lg","mainEl","ph","str","api","views","currentView","setupViewToggle","btn","switchView","filters","updateStatsForView","renderCurrentView","statsContainer","moduleCount","assigned","_c","unassigned","_e","_f","_g","fileCount","_h","_i","_j","viewInit","loadInitialData","interactionsData","error","setupRelationshipFilters","chip"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166]}
|