@sealpixel/core 1.0.0-rc.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.
- package/README.md +3 -0
- package/dist/assets.d.ts +37 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +96 -0
- package/dist/assets.js.map +1 -0
- package/dist/canonical-json.d.ts +11 -0
- package/dist/canonical-json.d.ts.map +1 -0
- package/dist/canonical-json.js +48 -0
- package/dist/canonical-json.js.map +1 -0
- package/dist/compile.d.ts +30 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +64 -0
- package/dist/compile.js.map +1 -0
- package/dist/embedded.d.ts +13 -0
- package/dist/embedded.d.ts.map +1 -0
- package/dist/embedded.js +145 -0
- package/dist/embedded.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +19 -0
- package/dist/errors.js.map +1 -0
- package/dist/external-kernel.d.ts +13 -0
- package/dist/external-kernel.d.ts.map +1 -0
- package/dist/external-kernel.js +68 -0
- package/dist/external-kernel.js.map +1 -0
- package/dist/generated/geometry.d.ts +33 -0
- package/dist/generated/geometry.d.ts.map +1 -0
- package/dist/generated/geometry.js +3 -0
- package/dist/generated/geometry.js.map +1 -0
- package/dist/generated/output.d.ts +40 -0
- package/dist/generated/output.d.ts.map +1 -0
- package/dist/generated/output.js +3 -0
- package/dist/generated/output.js.map +1 -0
- package/dist/generated/plan.d.ts +292 -0
- package/dist/generated/plan.d.ts.map +1 -0
- package/dist/generated/plan.js +3 -0
- package/dist/generated/plan.js.map +1 -0
- package/dist/history.d.ts +16 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +38 -0
- package/dist/history.js.map +1 -0
- package/dist/image-size.d.ts +12 -0
- package/dist/image-size.d.ts.map +1 -0
- package/dist/image-size.js +86 -0
- package/dist/image-size.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/inline-renderer.d.ts +28 -0
- package/dist/inline-renderer.d.ts.map +1 -0
- package/dist/inline-renderer.js +48 -0
- package/dist/inline-renderer.js.map +1 -0
- package/dist/options.d.ts +13 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +35 -0
- package/dist/options.js.map +1 -0
- package/dist/plan.d.ts +16 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +15 -0
- package/dist/plan.js.map +1 -0
- package/dist/plugin.d.ts +200 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +2 -0
- package/dist/plugin.js.map +1 -0
- package/dist/registry.d.ts +58 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +187 -0
- package/dist/registry.js.map +1 -0
- package/dist/render.d.ts +25 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +164 -0
- package/dist/render.js.map +1 -0
- package/dist/renderer-core.d.ts +82 -0
- package/dist/renderer-core.d.ts.map +1 -0
- package/dist/renderer-core.js +228 -0
- package/dist/renderer-core.js.map +1 -0
- package/dist/renderer.d.ts +29 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +2 -0
- package/dist/renderer.js.map +1 -0
- package/dist/session.d.ts +188 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +513 -0
- package/dist/session.js.map +1 -0
- package/dist/types.d.ts +114 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/worker-protocol.d.ts +100 -0
- package/dist/worker-protocol.d.ts.map +1 -0
- package/dist/worker-protocol.js +30 -0
- package/dist/worker-protocol.js.map +1 -0
- package/dist/worker-renderer.d.ts +35 -0
- package/dist/worker-renderer.d.ts.map +1 -0
- package/dist/worker-renderer.js +85 -0
- package/dist/worker-renderer.js.map +1 -0
- package/dist/worker.d.ts +23 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +81 -0
- package/dist/worker.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headless editor session. Owns the edit log (as `History`), the derived
|
|
3
|
+
* document, and a renderer. Every state change schedules a debounced preview
|
|
4
|
+
* render on the proxy; stale results are discarded by version.
|
|
5
|
+
*/
|
|
6
|
+
import type { RgbaBuffer } from '@sealpixel/wasm';
|
|
7
|
+
import { type AssetResolver } from './assets.js';
|
|
8
|
+
import { SealpixelError } from './errors.js';
|
|
9
|
+
import type { Geometry } from './plan.js';
|
|
10
|
+
import type { AnyPlugin, AssetDeclaration, Document } from './plugin.js';
|
|
11
|
+
import { type Registry } from './registry.js';
|
|
12
|
+
import type { Renderer } from './renderer.js';
|
|
13
|
+
import type { ExportResult } from './renderer-core.js';
|
|
14
|
+
import type { EditLog, History, Operation, OutputOptions, SourceDescriptor } from './types.js';
|
|
15
|
+
export type LoadSource = Uint8Array | ArrayBuffer | Blob | string;
|
|
16
|
+
export interface LoadOptions {
|
|
17
|
+
/** Saved state to resume from (an `EditLog` or `{ log, index }`), validated through the registry. */
|
|
18
|
+
editLog?: unknown;
|
|
19
|
+
/** History position to resume at. Defaults to the end of the log. */
|
|
20
|
+
index?: number;
|
|
21
|
+
/** Source id. Defaults to the File name without extension, or `image`. */
|
|
22
|
+
id?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface SessionOptions {
|
|
25
|
+
plugins: readonly AnyPlugin[];
|
|
26
|
+
/** Defaults to an `InlineRenderer` built from `plugins`. Pass a `WorkerRenderer` in browsers. */
|
|
27
|
+
renderer?: Renderer;
|
|
28
|
+
limits?: {
|
|
29
|
+
maxClientMegapixels?: number;
|
|
30
|
+
maxClientBytes?: number;
|
|
31
|
+
};
|
|
32
|
+
preview?: {
|
|
33
|
+
debounceMs?: number;
|
|
34
|
+
enabled?: boolean;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Server rendering: `endpoint` accepts the `@sealpixel/server` contract. Used
|
|
38
|
+
* by `requestServerRender`, by `download({ via: 'server' })`, and by the
|
|
39
|
+
* `server` proxy strategy for images above the client limits.
|
|
40
|
+
*/
|
|
41
|
+
server?: {
|
|
42
|
+
endpoint: string;
|
|
43
|
+
fetch?: typeof fetch;
|
|
44
|
+
headers?: Record<string, string>;
|
|
45
|
+
};
|
|
46
|
+
/** How to obtain the preview for images above the client limits. Default `auto`. */
|
|
47
|
+
proxy?: {
|
|
48
|
+
maxSide?: number;
|
|
49
|
+
strategy?: 'auto' | 'wasm' | 'server';
|
|
50
|
+
};
|
|
51
|
+
/** Fonts and images referenced by the log. Defaults to the plugins' declarations with relative urls. */
|
|
52
|
+
assets?: AssetResolver;
|
|
53
|
+
/**
|
|
54
|
+
* How `download` hands bytes to the user. Defaults to an `<a download>`
|
|
55
|
+
* click in browsers; required elsewhere.
|
|
56
|
+
*/
|
|
57
|
+
saveFile?: (bytes: Uint8Array, filename: string, mimeType: string) => void | Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
export interface PreviewState {
|
|
60
|
+
image: RgbaBuffer;
|
|
61
|
+
/** Geometry of the real output, whatever the stage shows. */
|
|
62
|
+
geometry: Geometry;
|
|
63
|
+
/**
|
|
64
|
+
* Geometry of the log the preview image was rendered from. Equals
|
|
65
|
+
* `geometry` without a preview transform; with one (a tool showing the
|
|
66
|
+
* uncropped image) it describes the pixels on the stage, so the UI can map
|
|
67
|
+
* preview pixels back to the source and keep the view steady.
|
|
68
|
+
*/
|
|
69
|
+
viewGeometry: Geometry;
|
|
70
|
+
/** Version of the history the preview reflects. */
|
|
71
|
+
version: number;
|
|
72
|
+
}
|
|
73
|
+
export interface SessionState {
|
|
74
|
+
status: 'empty' | 'loading' | 'ready' | 'error';
|
|
75
|
+
source: SourceDescriptor | null;
|
|
76
|
+
/** Whether full-resolution pixels are held client-side (local export possible). */
|
|
77
|
+
resident: boolean;
|
|
78
|
+
history: History;
|
|
79
|
+
document: Document;
|
|
80
|
+
/** Increments on every history change. */
|
|
81
|
+
version: number;
|
|
82
|
+
preview: PreviewState | null;
|
|
83
|
+
previewPending: boolean;
|
|
84
|
+
error: SealpixelError | null;
|
|
85
|
+
}
|
|
86
|
+
export interface ExportOptions {
|
|
87
|
+
output: OutputOptions;
|
|
88
|
+
embedEditLog?: boolean;
|
|
89
|
+
upTo?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface DownloadOptions extends Partial<ExportOptions> {
|
|
92
|
+
filename?: string;
|
|
93
|
+
/** `auto` renders locally when the image is resident, otherwise on the server. */
|
|
94
|
+
via?: 'auto' | 'local' | 'server';
|
|
95
|
+
}
|
|
96
|
+
export interface EditorSession {
|
|
97
|
+
readonly registry: Registry;
|
|
98
|
+
load(source: LoadSource, options?: LoadOptions): Promise<SourceDescriptor>;
|
|
99
|
+
dispatch(op: Operation): void;
|
|
100
|
+
undo(): void;
|
|
101
|
+
redo(): void;
|
|
102
|
+
timeTravel(index: number): void;
|
|
103
|
+
canUndo(): boolean;
|
|
104
|
+
canRedo(): boolean;
|
|
105
|
+
getState(): SessionState;
|
|
106
|
+
getEditLog(): {
|
|
107
|
+
log: EditLog;
|
|
108
|
+
index: number;
|
|
109
|
+
};
|
|
110
|
+
getDocument(): Document;
|
|
111
|
+
subscribe(listener: (state: SessionState) => void): () => void;
|
|
112
|
+
/** Forces a preview render now and resolves when it is applied. */
|
|
113
|
+
renderPreview(): Promise<PreviewState>;
|
|
114
|
+
/** Resolves when no preview render is pending. */
|
|
115
|
+
whenIdle(): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Replaces the history with a saved state for the loaded image (controlled
|
|
118
|
+
* mode). Validates through the registry and checks the source.
|
|
119
|
+
*/
|
|
120
|
+
setEditLog(saved: unknown, index?: number): void;
|
|
121
|
+
/**
|
|
122
|
+
* Transforms the log before preview rendering only. Tools use it to show,
|
|
123
|
+
* for example, the un-cropped image while the crop gizmo is active.
|
|
124
|
+
*/
|
|
125
|
+
setPreviewTransform(transform: ((log: EditLog) => EditLog) | null): void;
|
|
126
|
+
/**
|
|
127
|
+
* Renders a proxy-sized image from the current log, transformed, and returns
|
|
128
|
+
* it without touching the stage, the state or the history. Tools use it to
|
|
129
|
+
* show what an edit the user has not made yet would look like: the filter
|
|
130
|
+
* tool renders its thumbnails from the log with the filter removed, so a
|
|
131
|
+
* chosen preset does not end up baked into the alternatives beside it.
|
|
132
|
+
*/
|
|
133
|
+
renderDetached(transform: (log: EditLog) => EditLog, options?: {
|
|
134
|
+
signal?: AbortSignal;
|
|
135
|
+
}): Promise<RgbaBuffer>;
|
|
136
|
+
/**
|
|
137
|
+
* Registers an asset the user supplied (for example an uploaded sticker):
|
|
138
|
+
* stores the bytes in the renderer and records the declaration in the log
|
|
139
|
+
* so the log stays self-describing. Returns the declaration with its hash.
|
|
140
|
+
*/
|
|
141
|
+
addAsset(bytes: Uint8Array, options?: {
|
|
142
|
+
id?: string;
|
|
143
|
+
url?: string;
|
|
144
|
+
}): Promise<AssetDeclaration>;
|
|
145
|
+
export(options: ExportOptions): Promise<ExportResult>;
|
|
146
|
+
download(options?: DownloadOptions): Promise<{
|
|
147
|
+
filename: string;
|
|
148
|
+
result: ExportResult | ServerRenderResult;
|
|
149
|
+
}>;
|
|
150
|
+
/**
|
|
151
|
+
* Renders on the server from the original bytes (inline) or a host-provided
|
|
152
|
+
* source reference. With `destination: 's3'` the server stores the object and
|
|
153
|
+
* returns its key and presigned url; otherwise the bytes come back.
|
|
154
|
+
*/
|
|
155
|
+
requestServerRender(options: ServerRenderOptions): Promise<ServerRenderResult>;
|
|
156
|
+
dispose(): void;
|
|
157
|
+
}
|
|
158
|
+
export interface ServerRenderOptions extends ExportOptions {
|
|
159
|
+
/** Defaults to the loaded bytes sent inline. Hosts that uploaded the original pass its reference. */
|
|
160
|
+
source?: {
|
|
161
|
+
kind: 's3';
|
|
162
|
+
bucket?: string;
|
|
163
|
+
key: string;
|
|
164
|
+
} | {
|
|
165
|
+
kind: 'url';
|
|
166
|
+
url: string;
|
|
167
|
+
};
|
|
168
|
+
destination?: 's3' | 'response';
|
|
169
|
+
endpoint?: string;
|
|
170
|
+
}
|
|
171
|
+
export interface ServerRenderResult {
|
|
172
|
+
/** Present for `destination: 'response'`. */
|
|
173
|
+
bytes?: Uint8Array;
|
|
174
|
+
/** Present for `destination: 's3'`. */
|
|
175
|
+
url?: string | null;
|
|
176
|
+
objectKey?: string;
|
|
177
|
+
bucket?: string;
|
|
178
|
+
hash: string;
|
|
179
|
+
width: number;
|
|
180
|
+
height: number;
|
|
181
|
+
mimeType: OutputOptions['format'];
|
|
182
|
+
cached: boolean;
|
|
183
|
+
jobKey: string;
|
|
184
|
+
}
|
|
185
|
+
export declare function createEditorSession(options: SessionOptions): EditorSession;
|
|
186
|
+
/** Default `saveFile`: an `<a download>` click, with the share sheet as a fallback on iOS Safari. */
|
|
187
|
+
export declare function browserSaveFile(bytes: Uint8Array, filename: string, mimeType: string): Promise<void>;
|
|
188
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|