@oh-just-another/renderer-core 0.60.1 → 0.61.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 (154) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/caches/edge-cache-bitmap.d.ts.map +1 -0
  4. package/dist/caches/edge-cache-bitmap.js.map +1 -0
  5. package/dist/caches/edge-cache.d.ts.map +1 -0
  6. package/dist/caches/edge-cache.js.map +1 -0
  7. package/dist/caches/layer-cache-composite.d.ts.map +1 -0
  8. package/dist/caches/layer-cache-composite.js.map +1 -0
  9. package/dist/caches/lru-cache.d.ts.map +1 -0
  10. package/dist/caches/lru-cache.js.map +1 -0
  11. package/dist/caches/shape-cache-bitmap.d.ts.map +1 -0
  12. package/dist/caches/shape-cache-bitmap.js.map +1 -0
  13. package/dist/caches/shape-cache.d.ts.map +1 -0
  14. package/dist/caches/shape-cache.js.map +1 -0
  15. package/dist/caches/tile-renderer.d.ts.map +1 -0
  16. package/dist/caches/tile-renderer.js.map +1 -0
  17. package/dist/constants.d.ts +95 -9
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/constants.js +98 -11
  20. package/dist/constants.js.map +1 -1
  21. package/dist/index.d.ts +40 -37
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +24 -21
  24. package/dist/index.js.map +1 -1
  25. package/dist/raster/animation-adapter.d.ts.map +1 -0
  26. package/dist/raster/animation-adapter.js.map +1 -0
  27. package/dist/raster/image-source-guard.d.ts +2 -0
  28. package/dist/raster/image-source-guard.d.ts.map +1 -0
  29. package/dist/raster/image-source-guard.js +44 -0
  30. package/dist/raster/image-source-guard.js.map +1 -0
  31. package/dist/raster/js-rasterizer.d.ts.map +1 -0
  32. package/dist/raster/js-rasterizer.js.map +1 -0
  33. package/dist/raster/rasterizer.d.ts.map +1 -0
  34. package/dist/raster/rasterizer.js.map +1 -0
  35. package/dist/raster/wasm-bytes.d.ts.map +1 -0
  36. package/dist/raster/wasm-bytes.js.map +1 -0
  37. package/dist/rendering/built-in-renderers.d.ts +85 -0
  38. package/dist/rendering/built-in-renderers.d.ts.map +1 -0
  39. package/dist/rendering/built-in-renderers.js +1087 -0
  40. package/dist/rendering/built-in-renderers.js.map +1 -0
  41. package/dist/{edge-renderer.d.ts → rendering/edge-renderer.d.ts} +3 -3
  42. package/dist/rendering/edge-renderer.d.ts.map +1 -0
  43. package/dist/{edge-renderer.js → rendering/edge-renderer.js} +4 -4
  44. package/dist/rendering/edge-renderer.js.map +1 -0
  45. package/dist/{grid-renderer.d.ts → rendering/grid-renderer.d.ts} +1 -1
  46. package/dist/rendering/grid-renderer.d.ts.map +1 -0
  47. package/dist/{grid-renderer.js → rendering/grid-renderer.js} +1 -1
  48. package/dist/rendering/grid-renderer.js.map +1 -0
  49. package/dist/rendering/lod.d.ts +26 -0
  50. package/dist/rendering/lod.d.ts.map +1 -0
  51. package/dist/rendering/lod.js +5 -0
  52. package/dist/rendering/lod.js.map +1 -0
  53. package/dist/{scene-renderer.d.ts → rendering/scene-renderer.d.ts} +21 -21
  54. package/dist/rendering/scene-renderer.d.ts.map +1 -0
  55. package/dist/{scene-renderer.js → rendering/scene-renderer.js} +26 -9
  56. package/dist/rendering/scene-renderer.js.map +1 -0
  57. package/dist/{shape-renderer.d.ts → rendering/shape-renderer.d.ts} +32 -2
  58. package/dist/rendering/shape-renderer.d.ts.map +1 -0
  59. package/dist/rendering/shape-renderer.js.map +1 -0
  60. package/dist/targets/dim-target.d.ts.map +1 -0
  61. package/dist/targets/dim-target.js.map +1 -0
  62. package/dist/targets/layers.d.ts.map +1 -0
  63. package/dist/targets/layers.js.map +1 -0
  64. package/dist/{render-target.d.ts → targets/render-target.d.ts} +8 -0
  65. package/dist/targets/render-target.d.ts.map +1 -0
  66. package/dist/targets/render-target.js.map +1 -0
  67. package/dist/{text-editing.d.ts → text/text-editing.d.ts} +22 -1
  68. package/dist/text/text-editing.d.ts.map +1 -0
  69. package/dist/{text-editing.js → text/text-editing.js} +53 -12
  70. package/dist/text/text-editing.js.map +1 -0
  71. package/dist/{text-layout.d.ts → text/text-layout.d.ts} +1 -1
  72. package/dist/text/text-layout.d.ts.map +1 -0
  73. package/dist/text/text-layout.js.map +1 -0
  74. package/dist/{text-shaper.d.ts → text/text-shaper.d.ts} +9 -1
  75. package/dist/text/text-shaper.d.ts.map +1 -0
  76. package/dist/text/text-shaper.js +32 -0
  77. package/dist/text/text-shaper.js.map +1 -0
  78. package/package.json +3 -3
  79. package/dist/animation-adapter.d.ts.map +0 -1
  80. package/dist/animation-adapter.js.map +0 -1
  81. package/dist/built-in-renderers.d.ts +0 -25
  82. package/dist/built-in-renderers.d.ts.map +0 -1
  83. package/dist/built-in-renderers.js +0 -601
  84. package/dist/built-in-renderers.js.map +0 -1
  85. package/dist/dim-target.d.ts.map +0 -1
  86. package/dist/dim-target.js.map +0 -1
  87. package/dist/edge-cache-bitmap.d.ts.map +0 -1
  88. package/dist/edge-cache-bitmap.js.map +0 -1
  89. package/dist/edge-cache.d.ts.map +0 -1
  90. package/dist/edge-cache.js.map +0 -1
  91. package/dist/edge-renderer.d.ts.map +0 -1
  92. package/dist/edge-renderer.js.map +0 -1
  93. package/dist/grid-renderer.d.ts.map +0 -1
  94. package/dist/grid-renderer.js.map +0 -1
  95. package/dist/js-rasterizer.d.ts.map +0 -1
  96. package/dist/js-rasterizer.js.map +0 -1
  97. package/dist/layer-cache-composite.d.ts.map +0 -1
  98. package/dist/layer-cache-composite.js.map +0 -1
  99. package/dist/layers.d.ts.map +0 -1
  100. package/dist/layers.js.map +0 -1
  101. package/dist/lru-cache.d.ts.map +0 -1
  102. package/dist/lru-cache.js.map +0 -1
  103. package/dist/rasterizer.d.ts.map +0 -1
  104. package/dist/rasterizer.js.map +0 -1
  105. package/dist/render-target.d.ts.map +0 -1
  106. package/dist/render-target.js.map +0 -1
  107. package/dist/scene-renderer.d.ts.map +0 -1
  108. package/dist/scene-renderer.js.map +0 -1
  109. package/dist/shape-cache-bitmap.d.ts.map +0 -1
  110. package/dist/shape-cache-bitmap.js.map +0 -1
  111. package/dist/shape-cache.d.ts.map +0 -1
  112. package/dist/shape-cache.js.map +0 -1
  113. package/dist/shape-renderer.d.ts.map +0 -1
  114. package/dist/shape-renderer.js.map +0 -1
  115. package/dist/text-editing.d.ts.map +0 -1
  116. package/dist/text-editing.js.map +0 -1
  117. package/dist/text-layout.d.ts.map +0 -1
  118. package/dist/text-layout.js.map +0 -1
  119. package/dist/text-shaper.d.ts.map +0 -1
  120. package/dist/text-shaper.js +0 -16
  121. package/dist/text-shaper.js.map +0 -1
  122. package/dist/tile-renderer.d.ts.map +0 -1
  123. package/dist/tile-renderer.js.map +0 -1
  124. package/dist/wasm-bytes.d.ts.map +0 -1
  125. package/dist/wasm-bytes.js.map +0 -1
  126. /package/dist/{edge-cache-bitmap.d.ts → caches/edge-cache-bitmap.d.ts} +0 -0
  127. /package/dist/{edge-cache-bitmap.js → caches/edge-cache-bitmap.js} +0 -0
  128. /package/dist/{edge-cache.d.ts → caches/edge-cache.d.ts} +0 -0
  129. /package/dist/{edge-cache.js → caches/edge-cache.js} +0 -0
  130. /package/dist/{layer-cache-composite.d.ts → caches/layer-cache-composite.d.ts} +0 -0
  131. /package/dist/{layer-cache-composite.js → caches/layer-cache-composite.js} +0 -0
  132. /package/dist/{lru-cache.d.ts → caches/lru-cache.d.ts} +0 -0
  133. /package/dist/{lru-cache.js → caches/lru-cache.js} +0 -0
  134. /package/dist/{shape-cache-bitmap.d.ts → caches/shape-cache-bitmap.d.ts} +0 -0
  135. /package/dist/{shape-cache-bitmap.js → caches/shape-cache-bitmap.js} +0 -0
  136. /package/dist/{shape-cache.d.ts → caches/shape-cache.d.ts} +0 -0
  137. /package/dist/{shape-cache.js → caches/shape-cache.js} +0 -0
  138. /package/dist/{tile-renderer.d.ts → caches/tile-renderer.d.ts} +0 -0
  139. /package/dist/{tile-renderer.js → caches/tile-renderer.js} +0 -0
  140. /package/dist/{animation-adapter.d.ts → raster/animation-adapter.d.ts} +0 -0
  141. /package/dist/{animation-adapter.js → raster/animation-adapter.js} +0 -0
  142. /package/dist/{js-rasterizer.d.ts → raster/js-rasterizer.d.ts} +0 -0
  143. /package/dist/{js-rasterizer.js → raster/js-rasterizer.js} +0 -0
  144. /package/dist/{rasterizer.d.ts → raster/rasterizer.d.ts} +0 -0
  145. /package/dist/{rasterizer.js → raster/rasterizer.js} +0 -0
  146. /package/dist/{wasm-bytes.d.ts → raster/wasm-bytes.d.ts} +0 -0
  147. /package/dist/{wasm-bytes.js → raster/wasm-bytes.js} +0 -0
  148. /package/dist/{shape-renderer.js → rendering/shape-renderer.js} +0 -0
  149. /package/dist/{dim-target.d.ts → targets/dim-target.d.ts} +0 -0
  150. /package/dist/{dim-target.js → targets/dim-target.js} +0 -0
  151. /package/dist/{layers.d.ts → targets/layers.d.ts} +0 -0
  152. /package/dist/{layers.js → targets/layers.js} +0 -0
  153. /package/dist/{render-target.js → targets/render-target.js} +0 -0
  154. /package/dist/{text-layout.js → text/text-layout.js} +0 -0
@@ -0,0 +1,85 @@
1
+ import { type ElementBase, type StickyElement, type ImageMask, type TextElement } from "@oh-just-another/scene";
2
+ import type { RenderTarget } from "../targets/render-target.js";
3
+ import { type LodOptions } from "./lod.js";
4
+ /**
5
+ * Build a rounded-rect path via the standard "4 corners with
6
+ * quadratic Bezier arcs" pattern — same shape every backend
7
+ * understands without a special `roundRect()` API:
8
+ *
9
+ * ┌───arc───┐
10
+ * │ │
11
+ * arc arc
12
+ * │ │
13
+ * └───arc───┘
14
+ *
15
+ * Quadratic control points sit at each corner of the rect; the
16
+ * curve goes from `r` units along one side to `r` units along the
17
+ * adjacent side.
18
+ *
19
+ * Radius `r` is pre-clamped by `getCornerRadius` to half the
20
+ * smaller side, so no overlap-handling is needed here.
21
+ */
22
+ export declare const buildRoundedRectPath: (target: RenderTarget, x: number, y: number, w: number, h: number, r: number) => void;
23
+ interface StickyReactionRect {
24
+ readonly x: number;
25
+ readonly y: number;
26
+ readonly width: number;
27
+ readonly height: number;
28
+ }
29
+ interface StickyReactionPill extends StickyReactionRect {
30
+ readonly glyph: string;
31
+ readonly label: string;
32
+ }
33
+ /**
34
+ * Layout of a sticky's reaction pills + the "+" add button under its
35
+ * bottom edge, in the shape's LOCAL space. Pills flow left-to-right and
36
+ * WRAP onto new rows (inline-block style) when they'd overrun the card
37
+ * width — every reaction is always laid out, none are dropped. ONE
38
+ * implementation shared by the canvas renderer and the DOM click-zone
39
+ * overlay so the hit areas always match the painted pills.
40
+ *
41
+ * `measure` must be bound to `STICKY_REACTION_FONT_SIZE`-sized system-ui
42
+ * text (base px); `zoom` is the current view scale — pill sizes are
43
+ * divided by it so they stay visually constant (see
44
+ * {@link STICKY_REACTION_MIN_ZOOM} for the low-zoom clamp).
45
+ */
46
+ export declare const stickyReactionLayout: (shape: StickyElement, measure: (s: string) => number, zoom?: number) => {
47
+ readonly pills: readonly StickyReactionPill[];
48
+ readonly add: StickyReactionRect;
49
+ };
50
+ /** Pills half of {@link stickyReactionLayout} (click-zone overlay helper). */
51
+ export declare const stickyReactionPillRects: (shape: StickyElement, measure: (s: string) => number, zoom?: number) => readonly StickyReactionPill[];
52
+ /** "+" button half of {@link stickyReactionLayout} (click-zone overlay helper). */
53
+ export declare const stickyReactionAddRect: (shape: StickyElement, measure: (s: string) => number, zoom?: number) => StickyReactionRect;
54
+ export declare const shapeLabelLayout: (shape: ElementBase, measure: (s: string) => number) => {
55
+ readonly synthetic: TextElement;
56
+ readonly offsetX: number;
57
+ readonly offsetY: number;
58
+ /** Visible window in layout-space Y (lines outside are not painted). */
59
+ readonly windowTop: number;
60
+ readonly windowBottom: number;
61
+ } | null;
62
+ /**
63
+ * Draw a shape's embedded label inside its local bounds. Reuses the text
64
+ * renderer wholesale (wrap, runs, lists, highlight); vertical alignment
65
+ * places the whole block, `textAlign` centres lines within the padded
66
+ * width. Called by the scene renderer after the shape body.
67
+ */
68
+ export declare const drawShapeLabel: (shape: ElementBase, target: RenderTarget,
69
+ /** Readable-text LOD: skip the label when its resolved font size is below the floor on screen. */
70
+ lod?: {
71
+ readonly zoom: number;
72
+ readonly lod: LodOptions;
73
+ }) => void;
74
+ /**
75
+ * Build an {@link ImageMask}'s path in the shape's LOCAL space
76
+ * (normalised mask coordinates × the element box). Exported so overlays
77
+ * (crop/mask preview) can trace the same outline the renderer clips by.
78
+ */
79
+ export declare const buildImageMaskPath: (target: RenderTarget, mask: ImageMask, width: number, height: number) => void;
80
+ /**
81
+ * Registers renderers for every `BuiltinElement` type.
82
+ */
83
+ export declare const installBuiltinRenderers: () => void;
84
+ export {};
85
+ //# sourceMappingURL=built-in-renderers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-renderers.d.ts","sourceRoot":"","sources":["../../src/rendering/built-in-renderers.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,KAAK,WAAW,EAEhB,KAAK,aAAa,EAMlB,KAAK,SAAS,EAKd,KAAK,WAAW,EASjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAiI3D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,YAAY,EACpB,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,KACR,IAWF,CAAC;AAsHF,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,kBAAmB,SAAQ,kBAAkB;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,aAAa,EACpB,SAAS,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC9B,aAAQ,KACP;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;CAyBnF,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,GAClC,OAAO,aAAa,EACpB,SAAS,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC9B,aAAQ,KACP,SAAS,kBAAkB,EAAsD,CAAC;AAErF,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,GAChC,OAAO,aAAa,EACpB,SAAS,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC9B,aAAQ,KACP,kBAAoE,CAAC;AAgMxE,eAAO,MAAM,gBAAgB,GAC3B,OAAO,WAAW,EAClB,SAAS,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,KAC7B;IACD,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,GAAG,IAqFH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,WAAW,EAClB,QAAQ,YAAY;AACpB,kGAAkG;AAClG,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CAAE,KACxD,IAmBF,CAAC;AAoWF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,YAAY,EACpB,MAAM,SAAS,EACf,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,IAuBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAO,IAoC1C,CAAC"}