refactoring
This commit is contained in:
+18
-4
@@ -9,9 +9,16 @@ racket-wiki. Its public additions include `onSelection` on a map and
|
||||
same hit-test and drag lifecycle as selection, so it does not depend on a DOM
|
||||
`dblclick` event that may be suppressed by dragging.
|
||||
|
||||
`cmap-racket-wiki.js` contains the wiki-specific editor model, selection state,
|
||||
content-based initial sizing, resize and relation controls, page concepts and
|
||||
submap concepts. Automatic sizing remains active while text is edited and is
|
||||
`model/concept-repository.js` owns shared concepts, semantic concept relations
|
||||
and concept ownership. `model/concept-map.js` owns one map's concept
|
||||
placements, linking phrases, connectors, metadata and presentation values.
|
||||
Neither model module contains DOM or drawing-engine objects.
|
||||
|
||||
`cmap-view.js` owns the canvas and the concrete `cmap.js` drawing instance.
|
||||
`cmap-racket-wiki.js` contains the wiki-specific editor controller, selection
|
||||
state, content-based initial sizing, resize and relation controls. Its view
|
||||
records connect pure model ids to drawing nodes without making those nodes part
|
||||
of the model. Automatic sizing remains active while text is edited and is
|
||||
disabled when the user resizes a concept manually.
|
||||
|
||||
Selected concepts expose an edit handle. The host opens a modal editor for
|
||||
@@ -42,6 +49,13 @@ Multiple selected items can be moved or deleted together. Grouping is a
|
||||
structural operation: the editor creates an expanded sub-CMap with a named main
|
||||
concept and adopts the selection as its contents. Ungrouping dissolves a
|
||||
selected inline sub-CMap or moves selected child items one level outward.
|
||||
**Make separate CMap** extracts the descendants into a complete stored CMap.
|
||||
The former sub-CMap head remains in the parent as an ordinary concept whose
|
||||
shared `cmapSlug` links to the new map. Ownership from that concept to the
|
||||
extracted concepts is removed; internal child connectors move with the child,
|
||||
while relations crossing the boundary terminate on the retained owner concept.
|
||||
The same action converts an older `derivedView` in place: its slug, title and
|
||||
metadata remain intact, but its document no longer depends on the parent CMap.
|
||||
|
||||
`toDocument` and `loadDocument` round-trip the complete editor model: items,
|
||||
formatting, positions, connectors, recursive submap membership and promoted
|
||||
@@ -49,7 +63,7 @@ map references. The wiki host persists this JSON document through its CMap API.
|
||||
|
||||
## JSON interchange
|
||||
|
||||
`/js/cmap-interchange.js` implements the versioned `racket-wiki-cmap-bundle`
|
||||
`/js/wiki/cmap/interchange.js` implements the versioned `racket-wiki-cmap-bundle`
|
||||
format. A bundle mirrors the normalized database model: `cmaps[]` contains the
|
||||
complete placement and presentation document, `concepts[]` contains shared
|
||||
content once per UUID, and `pages[]` contains the current Markdown, tags and
|
||||
|
||||
Reference in New Issue
Block a user