@getnarro/atlas 0.1.0 → 0.2.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.
Files changed (2) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/package.json +2 -2
package/CHANGELOG.md ADDED
@@ -0,0 +1,70 @@
1
+ # @getnarro/atlas
2
+
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - cea1117: Three more scenes for `@getnarro/atlas`: a map, a gigapixel image, and a web page
8
+
9
+ **`@getnarro/atlas/map`** — a camera over real geography. Web Mercator is a plane, so
10
+ projecting the world onto the unit square turns longitude, latitude and zoom into an
11
+ ordinary framing: the same interpolation, the same checker, the same timeline, with no
12
+ second camera anywhere. The provider only converts on the way out.
13
+
14
+ It _tells_ the map where to be rather than asking it to fly. `flyTo` decides the camera
15
+ from the wall clock, which is the one thing a renderer advancing a frame counter cannot
16
+ use; a `jumpTo` per frame from a camera that is a pure function of time works in a deck, a
17
+ video and a page alike, and the frame is held until tiles and style have both arrived.
18
+ `maplibre-gl` is an optional peer that nothing here imports. Routes come with it:
19
+ `routeCamera` follows a traveller, and `routeTo` returns the line behind them, ending
20
+ exactly where they are.
21
+
22
+ **`@getnarro/atlas/image`** — a Deep Zoom pyramid, so a camera can fly all the way into a
23
+ 40000×30000 scan for the same handful of tiles it costs at any other zoom. Cost follows the
24
+ screen, not the source. The readiness gate covers exactly the tiles the current framing
25
+ draws, and a tile that 404s counts as settled so one missing file cannot stall a render.
26
+
27
+ **`@getnarro/atlas/web`** and **`/embed`** — `<narro-atlas>`, driven by the page's scroll.
28
+ The third clock after a presenter's keypress and a renderer's frame counter, and nearly
29
+ free because the camera was already a pure function of a moment. The page's own markup is
30
+ both the scene and the no-JavaScript fallback: the element slots it rather than copying it,
31
+ and a waypoint can name any element in it. Reduced motion snaps to the nearest waypoint
32
+ rather than removing the feature. 8.5 KB, 3.6 KB gzipped, no framework.
33
+
34
+ `@getnarro/atlas/web` is importable during server rendering; the element itself lives in
35
+ `/embed`, because a class extending `HTMLElement` cannot be evaluated in Node.
36
+
37
+ - cea1117: Add `@getnarro/atlas` — a zooming canvas, and an ` ```atlas ` fence for it
38
+
39
+ One plane, many named framings, and a camera that moves between them instead of cutting.
40
+ Authored as a fence in markdown mode, as `<Atlas>` in React, and as `<AtlasScene>` in a
41
+ video, all over the same camera path.
42
+
43
+ **The camera does not lurch.** Every product in this field — and narro's own
44
+ `TransformSlide` — tweens the centre and the zoom as independent curves, which makes
45
+ _apparent_ speed vary by more than an order of magnitude across one flight. That mismatch
46
+ is the mechanical cause of the motion-sickness complaint the whole category attracts. This
47
+ uses van Wijk & Nuij's interpolation, which holds perceived speed constant; the property is
48
+ asserted by a test rather than claimed in a comment. It also means a flight knows how long
49
+ it should take, so `duration` is rarely worth setting.
50
+
51
+ **A waypoint frames a rectangle, not a scale.** `at: 0, 0, 4000` is a fact about the world
52
+ and survives a change of render target; a scale is a ratio against a viewport and does not.
53
+ A waypoint can also name a reference — `at: "#ingest"` — which the scene resolves.
54
+
55
+ **`narro check` refuses paths nobody could watch.** A zoom jump above 8x, a duration far
56
+ from what the move needs (including milliseconds typed into a seconds field), a framing
57
+ that cannot be rendered, a selector that matches nothing in a recording, a canvas with
58
+ nothing to show. Every one is decidable before anything is rendered, and nothing in this
59
+ field checks them.
60
+
61
+ **Zooming into a recorded app.** `@getnarro/atlas/replay` puts the camera over a
62
+ `@getnarro/replay` cast, so a control magnified 3x is still live DOM — sharp and
63
+ selectable, where a screenshot falls apart. Waypoints name a CSS selector rather than
64
+ coordinates, and `findInCast` verifies them offline.
65
+
66
+ **Cost.** One `translate3d(…) scale(…)` on one element per frame, whatever the scene holds;
67
+ nodes outside the frame are unmounted; `will-change: transform` is switched on for a flight
68
+ and off on arrival, so resting frames are sharp. `prefers-reduced-motion` is honoured by
69
+ cutting between waypoints rather than by hiding anything. The package reaches a deck only
70
+ when it has a fence.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getnarro/atlas",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "A spatial canvas for Narro — a camera path as text, one pure camera function over it, and scene providers a deck, a video and a web page all render the same way",
6
6
  "license": "MIT",
@@ -104,7 +104,7 @@
104
104
  "tsup": "8.5.1",
105
105
  "typescript": "5.9.3",
106
106
  "vitest": "4.0.14",
107
- "@getnarro/replay": "0.1.0",
107
+ "@getnarro/replay": "0.2.0",
108
108
  "@getnarro/video": "0.7.0"
109
109
  },
110
110
  "scripts": {