@build-qube/papyra 0.3.0 → 0.5.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 (82) hide show
  1. package/README.md +12 -1
  2. package/dist/attachments.d.ts +6 -1
  3. package/dist/attachments.d.ts.map +1 -1
  4. package/dist/attachments.js +6 -1
  5. package/dist/attachments.js.map +1 -1
  6. package/dist/cache.d.ts +5 -0
  7. package/dist/cache.d.ts.map +1 -1
  8. package/dist/cache.js +8 -0
  9. package/dist/cache.js.map +1 -1
  10. package/dist/canvas.d.ts +2 -2
  11. package/dist/canvas.d.ts.map +1 -1
  12. package/dist/canvas.js +20 -7
  13. package/dist/canvas.js.map +1 -1
  14. package/dist/cells.d.ts +148 -0
  15. package/dist/cells.d.ts.map +1 -0
  16. package/dist/cells.js +144 -0
  17. package/dist/cells.js.map +1 -0
  18. package/dist/core.d.ts +53 -0
  19. package/dist/core.d.ts.map +1 -0
  20. package/dist/core.js +38 -0
  21. package/dist/core.js.map +1 -0
  22. package/dist/document.d.ts +28 -20
  23. package/dist/document.d.ts.map +1 -1
  24. package/dist/document.js +79 -360
  25. package/dist/document.js.map +1 -1
  26. package/dist/engine.d.ts +327 -0
  27. package/dist/engine.d.ts.map +1 -0
  28. package/dist/engine.js +485 -0
  29. package/dist/engine.js.map +1 -0
  30. package/dist/errors.d.ts +14 -1
  31. package/dist/errors.d.ts.map +1 -1
  32. package/dist/errors.js +19 -2
  33. package/dist/errors.js.map +1 -1
  34. package/dist/fingerprint.d.ts +2 -1
  35. package/dist/fingerprint.d.ts.map +1 -1
  36. package/dist/fingerprint.js +2 -1
  37. package/dist/fingerprint.js.map +1 -1
  38. package/dist/index.d.ts +10 -24
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +7 -11
  41. package/dist/index.js.map +1 -1
  42. package/dist/links.d.ts +6 -1
  43. package/dist/links.d.ts.map +1 -1
  44. package/dist/links.js +6 -1
  45. package/dist/links.js.map +1 -1
  46. package/dist/office.d.ts +85 -0
  47. package/dist/office.d.ts.map +1 -0
  48. package/dist/office.js +135 -0
  49. package/dist/office.js.map +1 -0
  50. package/dist/papyra-engine.d.ts +68 -0
  51. package/dist/papyra-engine.d.ts.map +1 -0
  52. package/dist/papyra-engine.js +173 -0
  53. package/dist/papyra-engine.js.map +1 -0
  54. package/dist/runtime.d.ts +7 -0
  55. package/dist/runtime.d.ts.map +1 -1
  56. package/dist/runtime.js +11 -0
  57. package/dist/runtime.js.map +1 -1
  58. package/dist/scheduler.d.ts +10 -2
  59. package/dist/scheduler.d.ts.map +1 -1
  60. package/dist/scheduler.js +26 -7
  61. package/dist/scheduler.js.map +1 -1
  62. package/dist/source.d.ts +1 -1
  63. package/dist/source.js +1 -1
  64. package/dist/styles.d.ts +96 -0
  65. package/dist/styles.d.ts.map +1 -0
  66. package/dist/styles.js +69 -0
  67. package/dist/styles.js.map +1 -0
  68. package/dist/text.d.ts +6 -1
  69. package/dist/text.d.ts.map +1 -1
  70. package/dist/text.js +6 -1
  71. package/dist/text.js.map +1 -1
  72. package/dist/tiff.d.ts +95 -0
  73. package/dist/tiff.d.ts.map +1 -0
  74. package/dist/tiff.js +78 -0
  75. package/dist/tiff.js.map +1 -0
  76. package/dist/types.d.ts +22 -2
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/workbook.d.ts +152 -0
  79. package/dist/workbook.d.ts.map +1 -0
  80. package/dist/workbook.js +158 -0
  81. package/dist/workbook.js.map +1 -0
  82. package/package.json +24 -3
package/dist/runtime.js CHANGED
@@ -51,4 +51,15 @@ export function init(options = {}) {
51
51
  // Already built (another copy of the library got there first). Harmless.
52
52
  }
53
53
  }
54
+ /**
55
+ * Renders in flight at once when the caller does not say: the runtime's own
56
+ * concurrency natively, and {@link MAX_WASM_CONCURRENCY} on wasm.
57
+ *
58
+ * @internal
59
+ */
60
+ export function defaultConcurrency() {
61
+ return currentRuntime() === 'wasm'
62
+ ? MAX_WASM_CONCURRENCY
63
+ : hardwareConcurrency();
64
+ }
54
65
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,OAAO,GACR,MAAM,2BAA2B,CAAC;AAUnC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAI,UAA+D;SACzE,SAAS,CAAC;IACb,IAAI,OAAO,GAAG,EAAE,mBAAmB,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC;IACD,4EAA4E;IAC5E,kBAAkB;IAClB,MAAM,IAAI,GAAI,UAA6D;SACxE,OAAO,CAAC;IACX,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClD,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,OAAO;IACrB,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,OAAO,GAAyB,EAAE;IACrD,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,IAAI,CAAC;IACnB,IAAI,cAAc,EAAE,KAAK,MAAM;QAAE,OAAO;IACxC,IAAI,CAAC;QACH,mBAAmB,CAAC,OAAO,CAAC,OAAO,IAAI,mBAAmB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,OAAO,GACR,MAAM,2BAA2B,CAAC;AAUnC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAI,UAA+D;SACzE,SAAS,CAAC;IACb,IAAI,OAAO,GAAG,EAAE,mBAAmB,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC;IACD,4EAA4E;IAC5E,kBAAkB;IAClB,MAAM,IAAI,GAAI,UAA6D;SACxE,OAAO,CAAC;IACX,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClD,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,OAAO;IACrB,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,OAAO,GAAyB,EAAE;IACrD,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,IAAI,CAAC;IACnB,IAAI,cAAc,EAAE,KAAK,MAAM;QAAE,OAAO;IACxC,IAAI,CAAC;QACH,mBAAmB,CAAC,OAAO,CAAC,OAAO,IAAI,mBAAmB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,cAAc,EAAE,KAAK,MAAM;QAChC,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,mBAAmB,EAAE,CAAC;AAC5B,CAAC"}
@@ -17,7 +17,14 @@ export interface SchedulerJob<T> {
17
17
  /** Identity for coalescing. Two live requests with the same key share one render. */
18
18
  key: string;
19
19
  priority: number;
20
- run: () => Promise<T>;
20
+ /** The work. `signal` aborts when an `abortable` job loses its last waiter. */
21
+ run: (signal?: AbortSignal) => Promise<T>;
22
+ /**
23
+ * Whether `run` stops early on its signal. Only then is a started job aborted when
24
+ * nobody waits on it any more; otherwise it runs to the end, and a new request for
25
+ * the same key joins it rather than starting a second.
26
+ */
27
+ abortable?: boolean;
21
28
  }
22
29
  /** Where a job's wall-clock time actually went. */
23
30
  export interface JobTiming {
@@ -44,7 +51,8 @@ export interface JobHandle<T> {
44
51
  readonly promise: Promise<T>;
45
52
  /**
46
53
  * Detach from this job. If nothing else is waiting on it and it has not started,
47
- * it is dropped from the queue; if it is already running it is left to finish.
54
+ * it is dropped from the queue; if it is already running it is left to finish,
55
+ * unless it was submitted `abortable`, in which case its signal aborts.
48
56
  */
49
57
  cancel(reason?: string): void;
50
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,qFAAqF;IACrF,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;CACvB;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qFAAqF;AACrF,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,mFAAmF;IACnF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAkBD;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,6BAA6B;IAC7B,SAAkB,IAAI,gBAAgB;IACtC,YAAY,MAAM,SAAc,EAE/B;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;;IAOpB,YAAY,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,EAGxD;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IASD,gEAAgE;IAChE,IAAI,YAAY,IAAI,MAAM,CAOzB;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAkC5C;CAgFF"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,qFAAqF;IACrF,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qFAAqF;AACrF,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,mFAAmF;IACnF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAqBD;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,6BAA6B;IAC7B,SAAkB,IAAI,gBAAgB;IACtC,YAAY,MAAM,SAAc,EAE/B;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;;IAapB,YAAY,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,EAGxD;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IASD,gEAAgE;IAChE,IAAI,YAAY,IAAI,MAAM,CAOzB;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAoC5C;CAwFF"}
package/dist/scheduler.js CHANGED
@@ -39,6 +39,12 @@ export class Scheduler {
39
39
  #yieldToUrgent;
40
40
  #pending = new Map();
41
41
  #running = new Map();
42
+ /**
43
+ * Started jobs that were aborted and have not settled yet. Out of `#running`, so a
44
+ * new request for the same key starts afresh instead of joining a job on its way
45
+ * out; still counted against the limit, since they still hold a slot until then.
46
+ */
47
+ #aborting = new Set();
42
48
  #seq = 0;
43
49
  constructor(limit, options = {}) {
44
50
  this.#limit = Math.max(1, limit);
@@ -48,7 +54,7 @@ export class Scheduler {
48
54
  return this.#pending.size;
49
55
  }
50
56
  get runningCount() {
51
- return this.#running.size;
57
+ return this.#running.size + this.#aborting.size;
52
58
  }
53
59
  #hasMoreUrgentRunning(priority) {
54
60
  for (const entry of this.#running.values()) {
@@ -90,6 +96,8 @@ export class Scheduler {
90
96
  finishedAt: 0,
91
97
  seq: this.#seq++,
92
98
  run: job.run,
99
+ abortable: job.abortable ?? false,
100
+ controller: null,
93
101
  waiters: 1,
94
102
  started: false,
95
103
  resolve,
@@ -122,10 +130,18 @@ export class Scheduler {
122
130
  return;
123
131
  detached = true;
124
132
  entry.waiters--;
125
- if (entry.waiters > 0 || entry.started)
133
+ if (entry.waiters > 0)
134
+ return;
135
+ if (!entry.started) {
136
+ this.#pending.delete(entry.key);
137
+ entry.reject(new AbortError(reason));
138
+ return;
139
+ }
140
+ if (!entry.controller || this.#running.get(entry.key) !== entry)
126
141
  return;
127
- this.#pending.delete(entry.key);
128
- entry.reject(new AbortError(reason));
142
+ this.#running.delete(entry.key);
143
+ this.#aborting.add(entry);
144
+ entry.controller.abort(new AbortError(reason));
129
145
  },
130
146
  };
131
147
  }
@@ -137,7 +153,7 @@ export class Scheduler {
137
153
  * binary heap need re-heapification on every change, which is a rich source of bugs.
138
154
  */
139
155
  #drain() {
140
- while (this.#running.size < this.#limit && this.#pending.size > 0) {
156
+ while (this.runningCount < this.#limit && this.#pending.size > 0) {
141
157
  let next;
142
158
  for (const entry of this.#pending.values()) {
143
159
  if (!next ||
@@ -156,10 +172,12 @@ export class Scheduler {
156
172
  this.#running.set(next.key, next);
157
173
  next.started = true;
158
174
  next.startedAt = performance.now();
175
+ if (next.abortable)
176
+ next.controller = new AbortController();
159
177
  // Stamp the finish time before settling, so `timing` is already populated by
160
178
  // the time an awaiting caller resumes — a `.finally()` would run after them.
161
179
  next
162
- .run()
180
+ .run(next.controller?.signal)
163
181
  .then((value) => {
164
182
  next.finishedAt = performance.now();
165
183
  next.resolve(value);
@@ -168,7 +186,8 @@ export class Scheduler {
168
186
  next.reject(error);
169
187
  })
170
188
  .finally(() => {
171
- this.#running.delete(next.key);
189
+ if (!this.#aborting.delete(next))
190
+ this.#running.delete(next.key);
172
191
  this.#drain();
173
192
  });
174
193
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
package/dist/source.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { PdfSource } from './types.js';
3
3
  * Normalise any accepted input to bytes.
4
4
  *
5
5
  * Accepts `File` and `Blob` so an `<input type="file">` value can be passed straight
6
- * through, which is the common case in a viewer.
6
+ * through, which is the common case in a viewer. An engine's loader starts here.
7
7
  */
8
8
  export declare function toBytes(source: PdfSource): Promise<Uint8Array>;
9
9
  //# sourceMappingURL=source.d.ts.map
package/dist/source.js CHANGED
@@ -5,7 +5,7 @@ function isBlob(value) {
5
5
  * Normalise any accepted input to bytes.
6
6
  *
7
7
  * Accepts `File` and `Blob` so an `<input type="file">` value can be passed straight
8
- * through, which is the common case in a viewer.
8
+ * through, which is the common case in a viewer. An engine's loader starts here.
9
9
  */
10
10
  export async function toBytes(source) {
11
11
  if (source instanceof Uint8Array)
@@ -0,0 +1,96 @@
1
+ import type { CellStyle as NativeCellStyle, SheetLayout as NativeSheetLayout } from '@build-qube/papyra-native';
2
+ /** How one edge of a border is drawn. Dash-dot variants arrive as `'dashed'`. */
3
+ export type BorderStyle = 'thin' | 'medium' | 'thick' | 'dashed' | 'dotted' | 'double' | 'hair';
4
+ /** One edge of a cell's border. */
5
+ export interface BorderEdge {
6
+ /** The line. */
7
+ style: BorderStyle;
8
+ /** `0xRRGGBB`. Absent means automatic, which Excel draws black. */
9
+ color?: number;
10
+ }
11
+ /** Horizontal alignment. Absent means Excel's default: text left, numbers right. */
12
+ export type HorizontalAlign = 'left' | 'center' | 'right' | 'justify' | 'centerContinuous' | 'fill' | 'distributed';
13
+ /** Vertical alignment. Absent means bottom. */
14
+ export type VerticalAlign = 'top' | 'center' | 'bottom' | 'justify' | 'distributed';
15
+ /**
16
+ * How a cell looks, apart from its number format — which is already applied to the
17
+ * text. Sheets share styles by index: see {@link CellWindow.style}.
18
+ *
19
+ * Colours are `0xRRGGBB` numbers; {@link cssColor} turns one into CSS. An absent
20
+ * colour means "automatic", which is the reader's to choose — black on white in
21
+ * Excel, but whatever the page's own text colour is in a dark theme.
22
+ */
23
+ export interface CellStyle {
24
+ /** Bold text. */
25
+ bold: boolean;
26
+ /** Italic text. */
27
+ italic: boolean;
28
+ /** Underlined text. */
29
+ underline: boolean;
30
+ /** Struck-through text. */
31
+ strike: boolean;
32
+ /** Font size relative to the workbook's default font: 2 is twice the size. */
33
+ fontScale: number;
34
+ /** Text colour. Absent means automatic. */
35
+ color?: number;
36
+ /** Background. Absent means none. */
37
+ fill?: number;
38
+ /** Top border. */
39
+ borderTop?: BorderEdge;
40
+ /** Right border. */
41
+ borderRight?: BorderEdge;
42
+ /** Bottom border. */
43
+ borderBottom?: BorderEdge;
44
+ /** Left border. */
45
+ borderLeft?: BorderEdge;
46
+ /** Horizontal alignment. */
47
+ horizontal?: HorizontalAlign;
48
+ /** Vertical alignment. */
49
+ vertical?: VerticalAlign;
50
+ /** Wrap text onto further lines within the row's height. */
51
+ wrap: boolean;
52
+ /** Indent level. Excel draws each as roughly three characters. */
53
+ indent: number;
54
+ }
55
+ /** Columns sharing a width, inclusive at both ends. */
56
+ export interface ColumnSpan {
57
+ /** First column, 0-based. */
58
+ first: number;
59
+ /** Last column, inclusive. Often 16383 — "to the end of the sheet". */
60
+ last: number;
61
+ /** Pixels at 96 DPI. 0 means hidden. */
62
+ width: number;
63
+ }
64
+ /** A row with a height of its own. */
65
+ export interface RowSize {
66
+ /** The row, 0-based. */
67
+ row: number;
68
+ /** Pixels at 96 DPI. 0 means hidden. */
69
+ height: number;
70
+ }
71
+ /**
72
+ * Column widths and row heights as the author left them, in pixels at 96 DPI —
73
+ * Excel's own geometry, so a 64px default column is 64px here.
74
+ */
75
+ export interface SheetLayout {
76
+ /** Width of a column with no span of its own. */
77
+ defaultColWidth: number;
78
+ /** Height of a row with no size of its own. */
79
+ defaultRowHeight: number;
80
+ /** Columns with their own width, in the file's order. */
81
+ columns: readonly ColumnSpan[];
82
+ /** Rows with their own height, in row order. */
83
+ rows: readonly RowSize[];
84
+ /**
85
+ * `false` when the author turned gridlines off — usually a report or a
86
+ * dashboard, drawn with borders where lines are meant to be.
87
+ */
88
+ showGridLines: boolean;
89
+ }
90
+ /** `0x1F4E79` → `'#1f4e79'`. */
91
+ export declare function cssColor(rgb: number): string;
92
+ /** @internal */
93
+ export declare function toCellStyle(s: NativeCellStyle): CellStyle;
94
+ /** @internal */
95
+ export declare function toSheetLayout(l: NativeSheetLayout): SheetLayout;
96
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,IAAI,eAAe,EAC5B,WAAW,IAAI,iBAAiB,EACjC,MAAM,2BAA2B,CAAC;AAEnC,iFAAiF;AACjF,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,MAAM,CAAC;AAEX,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACzB,gBAAgB;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oFAAoF;AACpF,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,GACT,kBAAkB,GAClB,MAAM,GACN,aAAa,CAAC;AAElB,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,aAAa,CAAC;AAElB;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,iBAAiB;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,uBAAuB;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,oBAAoB;IACpB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,qBAAqB;IACrB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,mBAAmB;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,4DAA4D;IAC5D,IAAI,EAAE,OAAO,CAAC;IACd,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sCAAsC;AACtC,MAAM,WAAW,OAAO;IACtB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,gDAAgD;IAChD,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IACzB;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,gCAAgC;AAChC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AASD,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,GAAG,SAAS,CAyBzD;AAED,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAoB/D"}
package/dist/styles.js ADDED
@@ -0,0 +1,69 @@
1
+ /** `0x1F4E79` → `'#1f4e79'`. */
2
+ export function cssColor(rgb) {
3
+ return `#${(rgb & 0xffffff).toString(16).padStart(6, '0')}`;
4
+ }
5
+ function edge(e) {
6
+ if (!e)
7
+ return undefined;
8
+ return e.color === undefined || e.color === null
9
+ ? { style: e.style }
10
+ : { style: e.style, color: e.color };
11
+ }
12
+ /** @internal */
13
+ export function toCellStyle(s) {
14
+ const out = {
15
+ bold: s.bold,
16
+ italic: s.italic,
17
+ underline: s.underline,
18
+ strike: s.strike,
19
+ fontScale: s.fontScale,
20
+ wrap: s.wrap,
21
+ indent: s.indent,
22
+ };
23
+ // Assigned only when present, so a style compares and spreads as the file meant
24
+ // it — `{ color: undefined }` and `{}` are different objects to a test.
25
+ if (s.color != null)
26
+ out.color = s.color;
27
+ if (s.fill != null)
28
+ out.fill = s.fill;
29
+ const top = edge(s.borderTop);
30
+ const right = edge(s.borderRight);
31
+ const bottom = edge(s.borderBottom);
32
+ const left = edge(s.borderLeft);
33
+ if (top)
34
+ out.borderTop = top;
35
+ if (right)
36
+ out.borderRight = right;
37
+ if (bottom)
38
+ out.borderBottom = bottom;
39
+ if (left)
40
+ out.borderLeft = left;
41
+ if (s.horizontal)
42
+ out.horizontal = s.horizontal;
43
+ if (s.vertical)
44
+ out.vertical = s.vertical;
45
+ return out;
46
+ }
47
+ /** @internal */
48
+ export function toSheetLayout(l) {
49
+ const columns = [];
50
+ for (let i = 0; i + 2 < l.cols.length; i += 3) {
51
+ columns.push({
52
+ first: l.cols[i] ?? 0,
53
+ last: l.cols[i + 1] ?? 0,
54
+ width: l.cols[i + 2] ?? 0,
55
+ });
56
+ }
57
+ const rows = [];
58
+ for (let i = 0; i + 1 < l.rows.length; i += 2) {
59
+ rows.push({ row: l.rows[i] ?? 0, height: l.rows[i + 1] ?? 0 });
60
+ }
61
+ return {
62
+ defaultColWidth: l.defaultColWidth,
63
+ defaultRowHeight: l.defaultRowHeight,
64
+ columns,
65
+ rows,
66
+ showGridLines: l.showGridLines,
67
+ };
68
+ }
69
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"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"}
package/dist/text.d.ts CHANGED
@@ -108,7 +108,12 @@ export interface Rect {
108
108
  /** Height. */
109
109
  readonly height: number;
110
110
  }
111
- /** @internal */
111
+ /**
112
+ * A page's text as the bindings report it, as a {@link PageText}.
113
+ *
114
+ * Exported for engines whose host answers in the native bindings' shapes, as
115
+ * `tauri-plugin-papyra` does, so they normalise exactly as papyra's own engine does.
116
+ */
112
117
  export declare function toPageText(page: number, native: NativePageText): PageText;
113
118
  /** Every character on the page a search can see. */
114
119
  export declare function pageString(text: PageText): string;
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,IAAI,cAAc,EAE3B,MAAM,2BAA2B,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,+EAA+E;AAC/E,MAAM,WAAW,IAAI;IACnB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,IAAI;IACnB,iBAAiB;IACjB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,cAAc;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,QAAQ,CAMzE;AAED,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEjD;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAMpD;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAyBzE;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAM3C;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAOzD;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAWzD"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,IAAI,cAAc,EAE3B,MAAM,2BAA2B,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,+EAA+E;AAC/E,MAAM,WAAW,IAAI;IACnB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,IAAI;IACnB,iBAAiB;IACjB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,cAAc;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,QAAQ,CAMzE;AAED,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEjD;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAMpD;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAyBzE;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAM3C;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAOzD;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAWzD"}
package/dist/text.js CHANGED
@@ -1,4 +1,9 @@
1
- /** @internal */
1
+ /**
2
+ * A page's text as the bindings report it, as a {@link PageText}.
3
+ *
4
+ * Exported for engines whose host answers in the native bindings' shapes, as
5
+ * `tauri-plugin-papyra` does, so they normalise exactly as papyra's own engine does.
6
+ */
2
7
  export function toPageText(page, native) {
3
8
  return {
4
9
  page,
package/dist/text.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}
package/dist/tiff.d.ts ADDED
@@ -0,0 +1,95 @@
1
+ import { type TiffImage as NativeTiffImage } from '@build-qube/papyra-native';
2
+ import type { PdfSource, RenderedPage } from './types.js';
3
+ /**
4
+ * How a TIFF page's pixels are stored.
5
+ *
6
+ * The three `ccitt-*` values are fax coding — `ccitt-g4` is what nearly every scanned
7
+ * drawing uses. `old-jpeg` is listed so a page can say what it is, but cannot be
8
+ * rendered.
9
+ */
10
+ export type TiffCompression = 'none' | 'ccitt-rle' | 'ccitt-g3' | 'ccitt-g4' | 'lzw' | 'old-jpeg' | 'jpeg' | 'deflate' | 'packbits' | 'other';
11
+ /** One page of a TIFF, as it is shown: the file's `Orientation` is already applied. */
12
+ export interface TiffPage {
13
+ /** Width in pixels, at full resolution. */
14
+ readonly width: number;
15
+ /** Height in pixels, at full resolution. */
16
+ readonly height: number;
17
+ /**
18
+ * Resolution in dots per inch, when the file states one. Fax pages are typically
19
+ * 204 by 196, so the two can differ.
20
+ */
21
+ readonly dpi: {
22
+ /** Horizontal dots per inch. */
23
+ readonly x: number;
24
+ /** Vertical dots per inch. */
25
+ readonly y: number;
26
+ } | undefined;
27
+ /** How the pixels are stored. */
28
+ readonly compression: TiffCompression;
29
+ /** Bits per sample: 1 for a bilevel scan, 8 for most others. */
30
+ readonly bitsPerSample: number;
31
+ /** Samples per pixel: 1 for grey, 3 for RGB, 4 with alpha or for CMYK. */
32
+ readonly samplesPerPixel: number;
33
+ /** TIFF `Orientation`, 1–8. 1 is upright; 6 and 8 are a quarter turn. */
34
+ readonly orientation: number;
35
+ }
36
+ /**
37
+ * Size limits for {@link TiffImage.renderPage}. The page keeps its aspect ratio and
38
+ * is never enlarged.
39
+ */
40
+ export interface TiffRenderOptions {
41
+ /** The most pixels the result may have. Defaults to {@link TIFF_MAX_PIXELS}. */
42
+ maxPixels?: number;
43
+ /** The widest the result may be, in pixels. */
44
+ maxWidth?: number;
45
+ }
46
+ /**
47
+ * The default {@link TiffRenderOptions.maxPixels}: 4096 × 4096.
48
+ *
49
+ * It is iOS Safari's canvas limit, and 64 MB of RGBA. A 300-dpi E-size sheet comes out
50
+ * at about 100 dpi under it — readable, with hairlines in grey.
51
+ */
52
+ export declare const TIFF_MAX_PIXELS: number;
53
+ /**
54
+ * Open a TIFF: single or multi-page, classic or BigTIFF.
55
+ *
56
+ * Reads fax-coded pages (CCITT Group 3 and Group 4, the usual case for a scanned
57
+ * drawing), and uncompressed, LZW, Deflate, PackBits and JPEG pages in grey, RGB or
58
+ * CMYK at 1 to 16 bits, in strips or tiles. Palette-colour and old-style JPEG pages
59
+ * are listed but fail to render.
60
+ *
61
+ * Only the directory is read here. Each page is decoded by
62
+ * {@link TiffImage.renderPage}, in Rust and off the JS thread, and straight to a
63
+ * reduced size — a page is never held at full resolution, so a 600-dpi colour scan of
64
+ * a sheet larger than the tab could allocate still opens.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const tiff = await openTiff(file);
69
+ * const page = await tiff.renderPage(0, { maxWidth: 1600 });
70
+ * paintToCanvas(page, canvas);
71
+ * ```
72
+ */
73
+ export declare function openTiff(source: PdfSource): Promise<TiffImage>;
74
+ /** An opened TIFF. Get one from {@link openTiff}. */
75
+ export declare class TiffImage {
76
+ #private;
77
+ /**
78
+ * Every page, in file order. A reduced-resolution copy of a page — a thumbnail, a
79
+ * pyramid level — is not a page and is left out.
80
+ */
81
+ readonly pages: readonly TiffPage[];
82
+ /** @internal — construct via {@link openTiff}. */
83
+ constructor(native: NativeTiffImage);
84
+ /** How many pages there are. */
85
+ get pageCount(): number;
86
+ /**
87
+ * Decode one page to RGBA, upright, at no more than `options` allows.
88
+ *
89
+ * Paint the result with `paintToCanvas`, or encode it with `encode`, exactly as a
90
+ * rendered PDF page. Each call decodes the page again; keep the result if it will
91
+ * be shown again.
92
+ */
93
+ renderPage(index: number, options?: TiffRenderOptions): Promise<RenderedPage>;
94
+ }
95
+ //# sourceMappingURL=tiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.d.ts","sourceRoot":"","sources":["../src/tiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,IAAI,eAAe,EAClC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,WAAW,GACX,UAAU,GACV,UAAU,GACV,KAAK,GACL,UAAU,GACV,MAAM,GACN,SAAS,GACT,UAAU,GACV,OAAO,CAAC;AAEZ,uFAAuF;AACvF,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,GAAG,EACR;QACE,gCAAgC;QAChC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,8BAA8B;QAC9B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;KACpB,GACD,SAAS,CAAC;IACd,iCAAiC;IACjC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,gEAAgE;IAChE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAc,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAGpE;AAED,qDAAqD;AACrD,qBAAa,SAAS;;IACpB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IAGpC,kDAAkD;IAClD,YAAY,MAAM,EAAE,eAAe,EAWlC;IAED,gCAAgC;IAChC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;;OAMG;IACH,UAAU,CACR,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAavB;CACF"}
package/dist/tiff.js ADDED
@@ -0,0 +1,78 @@
1
+ import { loadTiff, } from '@build-qube/papyra-native';
2
+ import { toBytes } from './source.js';
3
+ /**
4
+ * The default {@link TiffRenderOptions.maxPixels}: 4096 × 4096.
5
+ *
6
+ * It is iOS Safari's canvas limit, and 64 MB of RGBA. A 300-dpi E-size sheet comes out
7
+ * at about 100 dpi under it — readable, with hairlines in grey.
8
+ */
9
+ export const TIFF_MAX_PIXELS = 4096 * 4096;
10
+ /**
11
+ * Open a TIFF: single or multi-page, classic or BigTIFF.
12
+ *
13
+ * Reads fax-coded pages (CCITT Group 3 and Group 4, the usual case for a scanned
14
+ * drawing), and uncompressed, LZW, Deflate, PackBits and JPEG pages in grey, RGB or
15
+ * CMYK at 1 to 16 bits, in strips or tiles. Palette-colour and old-style JPEG pages
16
+ * are listed but fail to render.
17
+ *
18
+ * Only the directory is read here. Each page is decoded by
19
+ * {@link TiffImage.renderPage}, in Rust and off the JS thread, and straight to a
20
+ * reduced size — a page is never held at full resolution, so a 600-dpi colour scan of
21
+ * a sheet larger than the tab could allocate still opens.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const tiff = await openTiff(file);
26
+ * const page = await tiff.renderPage(0, { maxWidth: 1600 });
27
+ * paintToCanvas(page, canvas);
28
+ * ```
29
+ */
30
+ export async function openTiff(source) {
31
+ const bytes = await toBytes(source);
32
+ return new TiffImage(await loadTiff(bytes));
33
+ }
34
+ /** An opened TIFF. Get one from {@link openTiff}. */
35
+ export class TiffImage {
36
+ /**
37
+ * Every page, in file order. A reduced-resolution copy of a page — a thumbnail, a
38
+ * pyramid level — is not a page and is left out.
39
+ */
40
+ pages;
41
+ #native;
42
+ /** @internal — construct via {@link openTiff}. */
43
+ constructor(native) {
44
+ this.#native = native;
45
+ this.pages = native.pages.map((p) => ({
46
+ width: p.width,
47
+ height: p.height,
48
+ dpi: p.xDpi != null ? { x: p.xDpi, y: p.yDpi ?? p.xDpi } : undefined,
49
+ compression: p.compression,
50
+ bitsPerSample: p.bitsPerSample,
51
+ samplesPerPixel: p.samplesPerPixel,
52
+ orientation: p.orientation,
53
+ }));
54
+ }
55
+ /** How many pages there are. */
56
+ get pageCount() {
57
+ return this.pages.length;
58
+ }
59
+ /**
60
+ * Decode one page to RGBA, upright, at no more than `options` allows.
61
+ *
62
+ * Paint the result with `paintToCanvas`, or encode it with `encode`, exactly as a
63
+ * rendered PDF page. Each call decodes the page again; keep the result if it will
64
+ * be shown again.
65
+ */
66
+ renderPage(index, options = {}) {
67
+ if (!Number.isInteger(index) || index < 0 || index >= this.pages.length) {
68
+ return Promise.reject(new RangeError(`papyra: no TIFF page ${JSON.stringify(index)}`));
69
+ }
70
+ return this.#native.renderPage(index, {
71
+ maxPixels: options.maxPixels,
72
+ maxWidth: options.maxWidth === undefined
73
+ ? undefined
74
+ : Math.max(1, Math.floor(options.maxWidth)),
75
+ });
76
+ }
77
+ }
78
+ //# sourceMappingURL=tiff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiff.js","sourceRoot":"","sources":["../src/tiff.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GAET,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA6DtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAiB;IAC9C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,IAAI,SAAS,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,qDAAqD;AACrD,MAAM,OAAO,SAAS;IACpB;;;OAGG;IACM,KAAK,CAAsB;IAC3B,OAAO,CAAkB;IAElC,kDAAkD;IAClD,YAAY,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YACpE,WAAW,EAAE,CAAC,CAAC,WAA8B;YAC7C,aAAa,EAAE,CAAC,CAAC,aAAa;YAC9B,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gCAAgC;IAChC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CACR,KAAa,EACb,OAAO,GAAsB,EAAE;QAE/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACxE,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,UAAU,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAChE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;YACpC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EACN,OAAO,CAAC,QAAQ,KAAK,SAAS;gBAC5B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAChD,CAA0B,CAAC;IAC9B,CAAC;CACF"}