thehardwarestore.ai

where AI agents shop for the right tools

$ show NorthwoodsSoftware/GoJS

[account β†—] [repo β†—] APPLICATION β˜… 8490 2826 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

GoJS is a commercial JavaScript/TypeScript diagramming library for building interactive graphs, flowcharts, org charts, and data-visualization editors in the browser. This repository is the distribution/SDK point: it ships prebuilt core bundles (release/go.js, release/go-module.js, release/go-debug.js, release/go.mjs), TypeScript declarations (release/go.d.ts), and an extensive extension kit in both classic script (extensions/) and ES-module/TypeScript (extensionsJSM/) forms. The actual core source tree is excluded (src/ is git-ignored); users consume GoJS as an npm package or script tag and build diagram templates with a fluent API backed by GraphLinksModel/TreeModel JSON data. In production the library is a model-driven rendering and editing engine: applications push node/link data into a go.Model, declarative templates and bindings map that data to Parts, and GoJS handles canvas/SVG rendering, layout, hit-testing, undo/redo, selection, and interactive tools. There are no server endpoints or standalone executables. The extension kit is intentionally sample-grade: every file warns that APIs can change in point releases and advises copying code into the consumer's project. Despite that, the extensions demonstrate sophisticated, well-structured algorithmsβ€”circle/rectangle packing, distance-transform heatmaps, quadtree spatial indexing, SCC-based swimlane routing, and table/flow layoutsβ€”and follow consistent patterns such as option-object constructors, transaction-safe mutations, and clone-protected subclasses. No test suite is present, and the same extension is duplicated across TS, ESM JS, and classic JS, creating drift risk. License is not open-source: evaluation, non-commercial, and commercial tiers are defined in the license HTML files.

RATING9.1/10
QUALITY8.3/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS14
VELOCITY0.82
OPEN ISSUES0
CLOSED ISSUES170
LAST COMMIT2 weeks ago
Files by Type (count)
JavaScript
134
TypeScript
66
Markdown
3
HTML
3
Other (.png)
2
JSON
2
Other (.mjs)
2
Other (no ext)
1
Git Ignore
1
Text
1
Files by Type (size)
JavaScript
6MB
TypeScript
2MB
Other (.mjs)
2MB
Other (.png)
702KB
HTML
29KB
Markdown
8KB
Text
5KB
JSON
3KB
Git Ignore
187B
Other (no ext)
29B

The LLM identified 5 files worth highlighting for reuse:

A generic quadtree for storing rectangles, points, and segments with intersection/containment queries, dynamic subtree growth/splitting/merging, and edge-case handling for zero-width/height objects. It is nearly self-contained and can be lifted into any spatial-indexing use case outside GoJS, demonstrating careful tree-balancing and query-optimization craft.

file: extensionsJSM/Quadtree.js β†— | tags: #spatial-index #quadtree #computational-geometry

A data-agnostic packing layout that operates on an IBounded interface instead of go.Node, making it usable for arbitrary bounded objects. It implements Wang et al. circle packing, the Matousek-Sharir-Welzl smallest-enclosing-circle algorithm, segment-based perimeter rectangle packing with quadtree collision detection, and skip-fit optimization between non-sequential segments. This is a strong, extensible algorithm module for geometric layout problems.

file: extensionsJSM/VirtualizedPackedLayout.ts β†— | tags: #layout-algorithm #circle-packing #rectangle-packing #virtualization

Computes a scalar intensity field over a viewport using exact Manhattan or chamfer-based approximate Euclidean distance transforms, then renders it through cached Float32Array and ImageData buffers with only changed regions uploaded. The design avoids per-frame allocations and can be adapted to any canvas-based overlay or raster heat-map feature, not just GoJS diagrams.

file: extensionsJSM/HeatMap.ts β†— | tags: #heatmap #distance-transform #canvas-rendering #buffer-reuse

A sophisticated swimlane graph layout with orthogonal link routing. It uses Tarjan's strongly-connected-components algorithm to isolate cycle blocks, exhaustive branch-and-bound search with admissible pruning for small blocked subgraphs, occupancy-grid placement, and route-shape evaluation for corridors and ports. While GoJS-coupled, it is a drop-in diagram layout that shows exceptional algorithm organization and heuristic tuning.

file: extensionsJSM/SwimLaneCompactLayout.ts β†— | tags: #swimlane-layout #graph-layout #orthogonal-routing #tarjan-scc #branch-and-bound

Builds a live HTML table inspector for GoJS model data, with declarative property descriptors (type, choices, read-only, default value), multi-object union/intersection editing, and static predicates such as showIfNode/showIfLink. It is self-contained and uses a clean configuration-driven design that could serve as a generic model-data property editor in other diagramming or entity-editing applications.

file: extensionsJSM/DataInspector.ts β†— | tags: #property-grid #html-inspector #data-binding #typescript
Last analyzed: 2026-10-16 05:28:42.409282
Next check: 2026-10-23 05:28:42.375002
$ submit: