@gjsify/canvas2d 0.61.0 → 0.62.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.
@@ -0,0 +1 @@
1
+ import{Canvas2DBridge as e}from"@gjsify/adwaita-web/canvas2d";export{e as Canvas2DBridge};
@@ -0,0 +1 @@
1
+ import"./_virtual/_rolldown/runtime.js";const e=[{row:`size-1`,rule:`there is no canvas and no context before the first allocation`,observe:async e=>{let t=e.create();return{canvas:t.canvas,context:t.getContext(`2d`)}},shows:{canvas:null,context:null}},{row:`size-2`,rule:`the canvas is created at the allocation in logical pixels and a queued onReady runs once`,observe:async e=>{let t=e.create(),n=[];return t.onReady(e=>n.push([e.width,e.height])),await e.allocate(t,32,24),await e.allocate(t,32,24),{ready:n,canvas:[t.canvas.width,t.canvas.height],context:t.getContext(`2d`)!==null}},shows:{ready:[[32,24]],canvas:[32,24],context:!0}},{row:`size-3`,rule:`onReady after the context exists runs synchronously`,observe:async e=>{let t=e.create();await e.allocate(t,16,16);let n=!1;return t.onReady(()=>{n=!0}),n},shows:!0},{row:`size-4`,rule:`an allocation change resizes the canvas BEFORE the DOM event, the signal and onResize, each once`,observe:async e=>{let t=e.create();await e.allocate(t,32,32);let n=[],r=[],i=[],a=t.canvas;return a.addEventListener(`resize`,()=>n.push([a.width,a.height])),t.connect(`resize`,(...e)=>{let[t,n]=e.slice(-2);r.push([t,n])}),t.onResize((e,t)=>i.push([e,t])),await e.allocate(t,48,16),{dom:n,signal:r,callback:i}},shows:{dom:[[48,16]],signal:[[48,16]],callback:[[48,16]]}}];async function driveCanvas2DVectors(t,n,r=e){let{describe:i,it:a,expect:o}=n;await i(`${t.name}: Canvas2DBridge size and resize`,async()=>{for(let e of r)await a(`${e.row}: ${e.rule}`,async()=>{let n=await e.observe(t);o(JSON.stringify(n)).toBe(JSON.stringify(e.shows))})})}export{e as CANVAS2D_VECTORS,driveCanvas2DVectors};
@@ -0,0 +1 @@
1
+ import{Canvas2DBridge as e}from"@gjsify/adwaita-nativescript/canvas2d";export{e as Canvas2DBridge};
@@ -0,0 +1 @@
1
+ export { Canvas2DBridge } from '@gjsify/adwaita-web/canvas2d';
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
@@ -0,0 +1,35 @@
1
+ export interface Canvas2DCanvasLike {
2
+ width: number;
3
+ height: number;
4
+ addEventListener(type: 'resize', listener: () => void): void;
5
+ }
6
+ export interface Canvas2DBridgeLike {
7
+ readonly canvas: Canvas2DCanvasLike | null;
8
+ getContext(id: '2d'): unknown;
9
+ onReady(cb: (canvas: Canvas2DCanvasLike, ctx: unknown) => void): void;
10
+ onResize(cb: (width: number, height: number) => void): void;
11
+ connect(signal: 'resize', handler: (...args: any[]) => unknown): number;
12
+ }
13
+ export interface Canvas2DSubject {
14
+ name: string;
15
+ create(): Canvas2DBridgeLike;
16
+ /**
17
+ * Give the bridge an allocation of `width` x `height` LOGICAL pixels and wait until the toolkit
18
+ * has delivered it. Allocating the size it already has must still let a pending draw happen.
19
+ */
20
+ allocate(bridge: Canvas2DBridgeLike, width: number, height: number): Promise<void>;
21
+ }
22
+ export interface Canvas2DVector {
23
+ row: string;
24
+ rule: string;
25
+ observe(subject: Canvas2DSubject): Promise<unknown>;
26
+ shows: unknown;
27
+ }
28
+ export declare const CANVAS2D_VECTORS: readonly Canvas2DVector[];
29
+ export declare function driveCanvas2DVectors(subject: Canvas2DSubject, harness: {
30
+ describe: (name: string, fn: () => Promise<void> | void) => unknown;
31
+ it: (name: string, fn: () => Promise<void> | void) => unknown;
32
+ expect: (value: unknown) => {
33
+ toBe(expected: unknown): void;
34
+ };
35
+ }, vectors?: readonly Canvas2DVector[]): Promise<void>;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
@@ -0,0 +1 @@
1
+ export { Canvas2DBridge } from '@gjsify/adwaita-nativescript/canvas2d';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gjsify/canvas2d",
3
- "version": "0.61.0",
4
- "description": "Canvas 2D rendering context for GJS, backed by Cairo",
3
+ "version": "0.62.0",
4
+ "description": "Canvas 2D rendering context for GJS, backed by Cairo; Canvas2DBridge on GJS, the browser and NativeScript",
5
5
  "type": "module",
6
6
  "module": "lib/esm/index.js",
7
7
  "types": "lib/types/index.d.ts",
@@ -10,6 +10,18 @@
10
10
  "types": "./lib/types/index.d.ts",
11
11
  "default": "./lib/esm/index.js"
12
12
  },
13
+ "./browser": {
14
+ "types": "./lib/types/browser.d.ts",
15
+ "default": "./lib/esm/browser.js"
16
+ },
17
+ "./nativescript": {
18
+ "types": "./lib/types/nativescript.d.ts",
19
+ "default": "./lib/esm/nativescript.js"
20
+ },
21
+ "./conformance": {
22
+ "types": "./lib/types/conformance.d.ts",
23
+ "default": "./lib/esm/conformance.js"
24
+ },
13
25
  "./register": {
14
26
  "types": "./lib/types/register.d.ts",
15
27
  "default": "./lib/esm/register.js"
@@ -19,18 +31,21 @@
19
31
  "./lib/esm/register.js"
20
32
  ],
21
33
  "files": [
22
- "lib"
34
+ "lib",
35
+ "!lib/types/**/*.spec.d.ts",
36
+ "!lib/types/test.d.mts"
23
37
  ],
24
38
  "scripts": {
25
- "clear": "gjsify clear lib tmp tsconfig.tsbuildinfo test.gjs.mjs",
39
+ "clear": "gjsify clear lib tmp tsconfig.tsbuildinfo test.gjs.mjs dist",
26
40
  "check": "gjsify tsc --noEmit",
27
41
  "build": "gjsify run build:gjsify && gjsify run build:types",
28
- "build:gjsify": "gjsify build --library 'src/**/*.{ts,js}' --exclude 'src/**/*.spec.{mts,ts}' 'src/test.{mts,ts}'",
42
+ "build:gjsify": "gjsify build --library 'src/**/*.{ts,js}' --exclude 'src/**/*.spec.{mts,ts}' 'src/test.{mts,ts}' 'src/test.browser.{mts,ts}'",
29
43
  "build:types": "gjsify tsc",
30
44
  "build:test": "gjsify run build:test:gjs",
31
45
  "build:test:gjs": "gjsify build src/test.mts --app gjs --outfile test.gjs.mjs",
32
46
  "test": "gjsify run build:gjsify && gjsify run build:test && gjsify run test:gjs",
33
- "test:gjs": "gjsify run test.gjs.mjs"
47
+ "test:gjs": "gjsify run test.gjs.mjs",
48
+ "build:test:browser": "gjsify build src/test.browser.mts --app browser --outfile dist/test.browser.mjs"
34
49
  },
35
50
  "keywords": [
36
51
  "gjs",
@@ -47,15 +62,17 @@
47
62
  "@girs/gtk-4.0": "5.4.0",
48
63
  "@girs/pango-1.0": "5.4.0",
49
64
  "@girs/pangocairo-1.0": "5.4.0",
50
- "@gjsify/canvas2d-core": "^0.61.0",
51
- "@gjsify/dom-elements": "^0.61.0",
52
- "@gjsify/dom-events": "^0.61.0",
53
- "@gjsify/event-bridge": "^0.61.0",
54
- "@gjsify/utils": "^0.61.0"
65
+ "@gjsify/canvas2d-core": "^0.62.0",
66
+ "@gjsify/dom-elements": "^0.62.0",
67
+ "@gjsify/dom-events": "^0.62.0",
68
+ "@gjsify/event-bridge": "^0.62.0",
69
+ "@gjsify/utils": "^0.62.0"
55
70
  },
56
71
  "devDependencies": {
57
- "@gjsify/cli": "^0.61.0",
58
- "@gjsify/unit": "^0.61.0",
72
+ "@gjsify/adwaita-nativescript": "^0.62.0",
73
+ "@gjsify/adwaita-web": "^0.62.0",
74
+ "@gjsify/cli": "^0.62.0",
75
+ "@gjsify/unit": "^0.62.0",
59
76
  "@types/node": "^25.9.2",
60
77
  "typescript": "^6.0.3"
61
78
  },
@@ -77,5 +94,17 @@
77
94
  "bugs": {
78
95
  "url": "https://github.com/gjsify/gjsify/issues"
79
96
  },
80
- "homepage": "https://github.com/gjsify/gjsify/tree/main/packages/framework/canvas2d#readme"
97
+ "homepage": "https://github.com/gjsify/gjsify/tree/main/packages/framework/canvas2d#readme",
98
+ "peerDependencies": {
99
+ "@gjsify/adwaita-web": "^0.62.0",
100
+ "@gjsify/adwaita-nativescript": "^0.62.0"
101
+ },
102
+ "peerDependenciesMeta": {
103
+ "@gjsify/adwaita-web": {
104
+ "optional": true
105
+ },
106
+ "@gjsify/adwaita-nativescript": {
107
+ "optional": true
108
+ }
109
+ }
81
110
  }