@rasterex/viewer 2.1.3 → 2.1.4
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
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Rasterex Viewer SDK
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Rasterex Viewer SDK puts technical drawings inside your own web application.
|
|
4
|
+
Open DWG, DXF, DGN, IFC, PDF and 100+ other formats, then let users mark up,
|
|
5
|
+
measure and compare revisions. The engine runs on your own infrastructure; this
|
|
6
|
+
package is the typed client that embeds it.
|
|
7
7
|
|
|
8
8
|
Customer production deployments are self-hosted. Rasterex provides a hosted
|
|
9
9
|
Canvas Sandbox for evaluation and proof-of-concept testing.
|
|
@@ -38,7 +38,7 @@ const viewer = createViewer({
|
|
|
38
38
|
Both fields are optional. Supplying only one is treated the same as omitting
|
|
39
39
|
them. Adding or changing these values does not restart an existing evaluation.
|
|
40
40
|
|
|
41
|
-
Full [
|
|
41
|
+
Full [JavaScript Document Viewer SDK Quick Start](https://docs.rasterex.com/docs/getting-started/quick-start) ·
|
|
42
42
|
[source](https://github.com/Rasterex-Software/rasterex-viewer) ·
|
|
43
43
|
[runnable examples](https://github.com/Rasterex-Software/rasterex-viewer-examples) ·
|
|
44
44
|
[issues and support](https://github.com/Rasterex-Software/rasterex-viewer/issues)
|
|
@@ -52,8 +52,8 @@ environment for evaluation and proof-of-concept testing. The SDK embeds it in
|
|
|
52
52
|
an iframe and sends Canvas broker messages to that origin.
|
|
53
53
|
|
|
54
54
|
Documents opened in Sandbox must be reachable from the hosted viewer
|
|
55
|
-
environment. The public PDF used in the examples
|
|
56
|
-
this purpose.
|
|
55
|
+
environment. The public PDF and DWG used in the examples are intentionally
|
|
56
|
+
suitable for this purpose.
|
|
57
57
|
|
|
58
58
|
### Self-Hosted Production
|
|
59
59
|
|
|
@@ -77,6 +77,15 @@ await viewer.ready();
|
|
|
77
77
|
If `targetOrigin` is omitted, the SDK derives it from `viewerUrl` with
|
|
78
78
|
`new URL(viewerUrl).origin`.
|
|
79
79
|
|
|
80
|
+
## Deployment
|
|
81
|
+
|
|
82
|
+
Rasterex Canvas production runs on Windows Server, and a Windows container
|
|
83
|
+
deployment path is available. The hosted Sandbox is for evaluation and
|
|
84
|
+
proof-of-concept testing only.
|
|
85
|
+
|
|
86
|
+
The SDK package does not bundle the Canvas application. It loads a separately
|
|
87
|
+
deployed hosted or self-hosted Canvas URL in an iframe.
|
|
88
|
+
|
|
80
89
|
## Install And Requirements
|
|
81
90
|
|
|
82
91
|
```sh
|
|
@@ -141,7 +150,7 @@ from the viewer URL when it is not provided.
|
|
|
141
150
|
|
|
142
151
|
## Open A Document
|
|
143
152
|
|
|
144
|
-
After the viewer is ready, open a document URL:
|
|
153
|
+
After the viewer is ready, open a PDF or a CAD document URL:
|
|
145
154
|
|
|
146
155
|
```ts
|
|
147
156
|
await viewer.documents.open({
|
|
@@ -150,11 +159,18 @@ await viewer.documents.open({
|
|
|
150
159
|
cacheId: "file_7f3a9c2_sample_pdf",
|
|
151
160
|
mime: "application/pdf"
|
|
152
161
|
});
|
|
162
|
+
|
|
163
|
+
await viewer.documents.open({
|
|
164
|
+
url: "https://raw.githubusercontent.com/nextgis/dwg_samples/master/arc_2000.dwg",
|
|
165
|
+
displayName: "arc_2000.dwg",
|
|
166
|
+
cacheId: "sample_arc_2000_dwg",
|
|
167
|
+
mime: "application/acad"
|
|
168
|
+
});
|
|
153
169
|
```
|
|
154
170
|
|
|
155
|
-
The file URL must be reachable by the viewer environment.
|
|
156
|
-
|
|
157
|
-
|
|
171
|
+
The file URL must be reachable by the viewer environment. These public files
|
|
172
|
+
are for Sandbox demonstration only; production URLs must be reachable by your
|
|
173
|
+
self-hosted Rasterex Canvas deployment.
|
|
158
174
|
|
|
159
175
|
`displayName` should include the file extension, such as `sample.pdf`.
|
|
160
176
|
`cacheId` should be a stable file or content ID from your application or server,
|
|
@@ -264,14 +280,51 @@ interface RasterexViewerOptions {
|
|
|
264
280
|
| `container` | DOM element or selector where the iframe is mounted. |
|
|
265
281
|
| `viewerUrl` | Viewer URL to load. Defaults to `https://sandbox.rasterex.com`. |
|
|
266
282
|
| `targetOrigin` | Trusted origin for viewer messages. Defaults to the origin of `viewerUrl`. |
|
|
267
|
-
| `connectTimeoutMs` |
|
|
268
|
-
| `readyTimeoutMs` |
|
|
283
|
+
| `connectTimeoutMs` | Advisory duration after which the SDK emits a slow iframe diagnostic; it does not reject `mount()`. |
|
|
284
|
+
| `readyTimeoutMs` | Advisory duration after which the SDK emits a slow readiness diagnostic; it does not reject `ready()`. |
|
|
269
285
|
| `commandTimeoutMs` | Timeout for commands that wait for a viewer response. |
|
|
270
286
|
| `debug` | Writes SDK diagnostics to `console.debug`. |
|
|
271
287
|
| `iframeTitle` | Accessible iframe title. |
|
|
272
288
|
| `iframeClassName` | CSS class applied to the iframe. |
|
|
273
289
|
| `iframeAttributes` | Extra iframe attributes, for example `{ allow: "fullscreen" }`. |
|
|
274
290
|
|
|
291
|
+
## Capabilities
|
|
292
|
+
|
|
293
|
+
These calls expose the main CAD, markup and review workflows:
|
|
294
|
+
|
|
295
|
+
```ts
|
|
296
|
+
const layers = await viewer.layers.getLayers();
|
|
297
|
+
|
|
298
|
+
const blocks = await viewer.blocks.getBlocks();
|
|
299
|
+
const attributes = await viewer.blocks.getAttributes({
|
|
300
|
+
index: blocks.blocks[0]?.index ?? 0
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
viewer.measurements.scale.add({
|
|
304
|
+
scale: {
|
|
305
|
+
label: "1:100",
|
|
306
|
+
value: "100",
|
|
307
|
+
metric: "metric",
|
|
308
|
+
metricUnit: "Millimeter",
|
|
309
|
+
dimPrecision: 2,
|
|
310
|
+
isSelected: true
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
viewer.compare.compare({
|
|
315
|
+
backgroundUrl: "https://files.example.com/revision-a.dwg",
|
|
316
|
+
overlayUrl: "https://files.example.com/revision-b.dwg"
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
viewer.annotations.on("created", (event) => {
|
|
320
|
+
console.log("Created annotation:", event.guid);
|
|
321
|
+
});
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
`annotations.getData()` resolves to `{ filter, requestId, items, count }`.
|
|
325
|
+
Annotation event IDs are on `event.guid`. `comparisonComplete` handlers
|
|
326
|
+
receive the `ComparisonResult` directly; it is not wrapped in `.data`.
|
|
327
|
+
|
|
275
328
|
## Common APIs
|
|
276
329
|
|
|
277
330
|
```ts
|
|
@@ -289,8 +342,8 @@ if (firstLayer?.index !== undefined) {
|
|
|
289
342
|
const blocks = await viewer.blocks.getBlocks();
|
|
290
343
|
const firstBlock = blocks.blocks[0];
|
|
291
344
|
if (firstBlock?.index !== undefined) {
|
|
292
|
-
await viewer.blocks.
|
|
293
|
-
viewer.blocks.
|
|
345
|
+
await viewer.blocks.getDetails({ index: firstBlock.index });
|
|
346
|
+
viewer.blocks.setVisibility({ index: firstBlock.index, visible: false });
|
|
294
347
|
}
|
|
295
348
|
|
|
296
349
|
viewer.compare.compare({ backgroundUrl: "old.pdf", overlayUrl: "new.pdf" });
|
|
@@ -320,6 +373,22 @@ const unsubscribe = viewer.annotations.on("created", (event) => {
|
|
|
320
373
|
unsubscribe();
|
|
321
374
|
```
|
|
322
375
|
|
|
376
|
+
### Readiness Bounds
|
|
377
|
+
|
|
378
|
+
`connectTimeoutMs` and `readyTimeoutMs` are advisory diagnostics. They do not
|
|
379
|
+
reject `mount()` or `ready()`, so `ready()` can remain pending when the Canvas
|
|
380
|
+
deployment is unreachable. Add an application-level bound when your UI needs a
|
|
381
|
+
finite wait:
|
|
382
|
+
|
|
383
|
+
```ts
|
|
384
|
+
const readiness = viewer.ready();
|
|
385
|
+
const deadline = new Promise<never>((_, reject) => {
|
|
386
|
+
window.setTimeout(() => reject(new Error("Canvas readiness timed out")), 30_000);
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
await Promise.race([readiness, deadline]);
|
|
390
|
+
```
|
|
391
|
+
|
|
323
392
|
## TypeScript
|
|
324
393
|
|
|
325
394
|
Types are included with the package:
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "2.1.
|
|
1
|
+
export declare const SDK_VERSION = "2.1.4";
|
|
2
2
|
export declare const DEFAULT_VIEWER_URL = "https://sandbox.rasterex.com";
|
|
3
3
|
export declare const DEFAULT_TARGET_ORIGIN = "https://sandbox.rasterex.com";
|
|
4
4
|
export declare const DEFAULT_IFRAME_TITLE = "Rasterex Viewer";
|
package/dist/constants.js
CHANGED
|
@@ -10,8 +10,11 @@ export interface MeasurementScale {
|
|
|
10
10
|
value: string;
|
|
11
11
|
preciseValue?: number;
|
|
12
12
|
metric: MeasurementScaleUnitSystem;
|
|
13
|
+
/** Fractional precision for linear measurements, such as 1/4", 1/8", or 1/16". */
|
|
13
14
|
metricUnit: MeasurementScaleUnit;
|
|
14
15
|
dimPrecision: number;
|
|
16
|
+
/** Decimal precision for area measurements, such as square feet. */
|
|
17
|
+
decimalPrecision?: number;
|
|
15
18
|
isSelected: boolean;
|
|
16
19
|
isGlobal?: boolean;
|
|
17
20
|
pageRanges?: MeasurementScalePageRange[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/domains/measurements/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,mCAAmC,CAAC;AAE3C,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AAC3G,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAChG,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC1C,MAAM,MAAM,yBAAyB,GAAG,MAAM,EAAE,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,0BAA0B,CAAC;IACxF,UAAU,EAAE,oBAAoB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/domains/measurements/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rasterex/viewer",
|
|
3
|
-
"version": "2.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.1.4",
|
|
4
|
+
"description": "Embed DWG, DXF, DGN, IFC and PDF viewing, markup, measurement and revision comparison in your web app. TypeScript SDK for the self-hosted Rasterex engine, with a hosted sandbox for evaluation.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rasterex Software AS",
|
|
7
7
|
"url": "https://rasterex.com"
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "https://github.com/Rasterex-Software/rasterex-viewer.git"
|
|
12
12
|
},
|
|
13
|
-
"homepage": "https://docs.rasterex.com/",
|
|
13
|
+
"homepage": "https://docs.rasterex.com/docs/getting-started/quick-start",
|
|
14
14
|
"bugs": {
|
|
15
15
|
"url": "https://github.com/Rasterex-Software/rasterex-viewer/issues"
|
|
16
16
|
},
|
|
@@ -50,47 +50,26 @@
|
|
|
50
50
|
"dev": "vite examples/vanilla"
|
|
51
51
|
},
|
|
52
52
|
"keywords": [
|
|
53
|
-
"rasterex",
|
|
54
|
-
"rasterex-viewer",
|
|
55
|
-
"rasterex-canvas",
|
|
56
|
-
"rasterex-sdk",
|
|
57
|
-
"document-viewer",
|
|
58
|
-
"technical-document-viewer",
|
|
59
|
-
"iframe-sdk",
|
|
60
|
-
"iframe-viewer",
|
|
61
|
-
"iframe-embed",
|
|
62
|
-
"embedded-viewer",
|
|
63
|
-
"self-hosted",
|
|
64
|
-
"on-premises",
|
|
65
|
-
"postmessage",
|
|
66
|
-
"cad-viewer",
|
|
67
|
-
"construction-document-viewer",
|
|
68
|
-
"construction-takeoff",
|
|
69
|
-
"cost-estimation",
|
|
70
53
|
"dwg-viewer",
|
|
71
54
|
"dxf-viewer",
|
|
72
|
-
"
|
|
73
|
-
"
|
|
55
|
+
"dgn-viewer",
|
|
56
|
+
"ifc-viewer",
|
|
74
57
|
"pdf-viewer",
|
|
75
|
-
"
|
|
76
|
-
"measurement-viewer",
|
|
77
|
-
"annotation",
|
|
78
|
-
"annotations",
|
|
79
|
-
"alignment-viewer",
|
|
80
|
-
"markup",
|
|
81
|
-
"collaboration",
|
|
58
|
+
"cad-viewer",
|
|
82
59
|
"bim-viewer",
|
|
83
|
-
"ifc-viewer",
|
|
84
|
-
"plan-review",
|
|
85
|
-
"compare-viewer",
|
|
86
|
-
"comparison-viewer",
|
|
87
|
-
"document-comparison",
|
|
88
60
|
"drawing-comparison",
|
|
89
|
-
"overlay-comparison",
|
|
90
61
|
"revision-comparison",
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
62
|
+
"markup",
|
|
63
|
+
"annotation",
|
|
64
|
+
"measurement",
|
|
65
|
+
"takeoff",
|
|
66
|
+
"self-hosted",
|
|
67
|
+
"on-premises",
|
|
68
|
+
"embedded-viewer",
|
|
69
|
+
"typescript",
|
|
70
|
+
"react",
|
|
71
|
+
"angular",
|
|
72
|
+
"vue"
|
|
94
73
|
],
|
|
95
74
|
"license": "SEE LICENSE IN LICENSE",
|
|
96
75
|
"devDependencies": {
|