@open-pioneer/printing 0.1.2 → 0.1.3
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/CHANGELOG.md +10 -0
- package/PrintingServiceImpl.d.ts +2 -2
- package/PrintingServiceImpl.js +2 -2
- package/PrintingServiceImpl.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @open-pioneer/printing
|
|
2
2
|
|
|
3
|
+
## 0.1.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 28e092a: Update dependencies
|
|
8
|
+
- Updated dependencies [28e092a]
|
|
9
|
+
- Updated dependencies [0d51d2f]
|
|
10
|
+
- Updated dependencies [76f8863]
|
|
11
|
+
- @open-pioneer/map@0.6.0
|
|
12
|
+
|
|
3
13
|
## 0.1.2
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
package/PrintingServiceImpl.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { PrintingOptions, PrintingService, PrintResult } from "./index";
|
|
2
|
-
import OlMap from "ol/Map";
|
|
3
1
|
import { ServiceOptions } from "@open-pioneer/runtime";
|
|
2
|
+
import OlMap from "ol/Map";
|
|
3
|
+
import type { PrintingOptions, PrintingService, PrintResult } from "./index";
|
|
4
4
|
export declare class PrintingServiceImpl implements PrintingService {
|
|
5
5
|
private defaultOverlayText;
|
|
6
6
|
constructor(options: ServiceOptions);
|
package/PrintingServiceImpl.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Draw from 'ol/interaction/Draw';
|
|
2
|
-
import { ScaleLine } from 'ol/control';
|
|
3
1
|
import { createManualPromise } from '@open-pioneer/core';
|
|
2
|
+
import { ScaleLine } from 'ol/control.js';
|
|
3
|
+
import Draw from 'ol/interaction/Draw.js';
|
|
4
4
|
import { createBlockUserOverlay, canvasToPng, PRINTING_HIDE_CLASS } from './utils.js';
|
|
5
5
|
|
|
6
6
|
class PrintingServiceImpl {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrintingServiceImpl.js","sources":["PrintingServiceImpl.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport type { PrintingOptions, PrintingService, PrintResult, ViewPaddingBehavior } from \"./index\";\nimport OlMap from \"ol/Map\";\nimport Draw from \"ol/interaction/Draw\";\nimport { StyleLike } from \"ol/style/Style\";\nimport { ScaleLine } from \"ol/control\";\nimport { Interaction } from \"ol/interaction\";\nimport { createManualPromise, Resource } from \"@open-pioneer/core\";\nimport { Options } from \"html2canvas\";\nimport { canvasToPng, createBlockUserOverlay, PRINTING_HIDE_CLASS } from \"./utils\";\nimport { ServiceOptions } from \"@open-pioneer/runtime\";\n\nexport class PrintingServiceImpl implements PrintingService {\n private defaultOverlayText: string;\n\n constructor(options: ServiceOptions) {\n this.defaultOverlayText = options.intl.formatMessage({\n id: \"printingMap\"\n });\n }\n\n async printMap(olMap: OlMap, options?: PrintingOptions): Promise<PrintResultImpl> {\n const job = new PrintJob(olMap, {\n blockUserInteraction: true,\n overlayText: this.defaultOverlayText,\n viewPadding: \"auto\",\n ...options\n });\n return await job.printMap();\n }\n}\n\ninterface ViewPadding {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\n// Exported just for test (mocking)\nexport class PrintJob {\n private olMap: OlMap;\n private blockUserInteraction: boolean = false;\n private overlayText: string;\n private viewPadding: ViewPaddingBehavior;\n\n private running = false;\n private drawInformation: { draw: Draw; style: StyleLike | null | undefined }[] | undefined = [];\n private scaleLine: ScaleLine | undefined = undefined;\n private overlay: Resource | undefined = undefined;\n\n constructor(olMap: OlMap, options: Required<PrintingOptions>) {\n this.olMap = olMap;\n this.blockUserInteraction = options.blockUserInteraction;\n this.overlayText = options.overlayText;\n this.viewPadding = options.viewPadding;\n }\n\n async printMap(): Promise<PrintResultImpl> {\n if (this.running) {\n throw new Error(\"Printing already running.\");\n }\n\n try {\n await this.beginExport();\n\n let canvas = await this.printToCanvas(this.olMap.getViewport());\n if (!canvas) {\n throw new Error(\"Canvas export failed\");\n }\n\n if (this.viewPadding === \"auto\") {\n canvas = this.removePadding(canvas, this.getViewPadding());\n }\n return new PrintResultImpl(canvas);\n } finally {\n // Always remove scale bar\n this.reset();\n }\n }\n\n private async beginExport() {\n this.running = true;\n\n /** hides active draw interactions while printing (set feature style to null ) */\n const interactions = this.olMap\n .getInteractions()\n .getArray()\n .filter((interaction: Interaction) => {\n return interaction.getActive() && interaction instanceof Draw;\n });\n this.drawInformation = [];\n interactions?.forEach((interaction) => {\n const draw = interaction as Draw;\n const previousStyle = draw.getOverlay().getStyle();\n draw.getOverlay().setStyle(null);\n this.drawInformation?.push({\n draw: draw,\n style: previousStyle\n });\n });\n\n if (this.blockUserInteraction) {\n const container = this.olMap?.getTargetElement();\n if (container) {\n this.overlay = createBlockUserOverlay(container, this.overlayText);\n }\n }\n await this.addScaleLine();\n }\n\n private async addScaleLine() {\n const scaleLine = (this.scaleLine = new ScaleLine({\n className: \"printing-scale-bar ol-scale-bar\",\n bar: true,\n text: true,\n minWidth: 125\n }));\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const scaleLineElement = (scaleLine as any).element as HTMLElement;\n if (!scaleLineElement) {\n throw new Error(\"Scale line does not have an element\");\n }\n\n // Position the scale bar manually.\n // The 50px should be plenty to avoid overlapping with open layers attributions on most cases.\n // Additionally, take the view padding into account (if behavior is 'auto').\n let bottom = 50;\n let left = 8;\n if (this.viewPadding === \"auto\") {\n const { bottom: paddingBottom, left: paddingLeft } = this.getViewPadding();\n bottom = Math.max(paddingBottom + 8, bottom);\n left += paddingLeft;\n }\n scaleLineElement.style.setProperty(\"--printing-scale-bar-bottom\", `${bottom}px`);\n scaleLineElement.style.setProperty(\"--printing-scale-bar-left\", `${left}px`);\n\n const renderPromise = createManualPromise<void>();\n\n // We expect the scale line to be rendered by the open layers map.\n // This is a sanity check that throws an error when that either doesn't happen\n // or if it takes an extremely large time.\n const timeout = setTimeout(() => {\n renderPromise.reject(new Error(\"Scale line did not render\"));\n }, 3000);\n\n const oldRender = this.scaleLine.render;\n this.scaleLine.render = (...args) => {\n oldRender.apply(this.scaleLine, args);\n renderPromise.resolve();\n };\n this.olMap?.addControl(this.scaleLine);\n\n try {\n // Wait until render (+ one additional frame just to be sure).\n await renderPromise.promise;\n await new Promise((resolve) => {\n requestAnimationFrame(resolve);\n });\n } finally {\n clearTimeout(timeout);\n }\n }\n\n private async printToCanvas(element: HTMLElement): Promise<HTMLCanvasElement> {\n // export options for html2canvas.\n const exportOptions: Partial<Options> = {\n useCORS: true,\n ignoreElements: function (element: Element) {\n if (element.classList && typeof element.classList === \"object\") {\n const classList = element.classList;\n return (\n classList.contains(\"map-anchors\") || classList.contains(PRINTING_HIDE_CLASS)\n );\n }\n return false;\n }\n };\n\n // Lazy load html2canvas: it is a large dependency (a few hundred KiB) that is only\n // required when actually printed. This speeds up the initial page load.\n const html2canvas = (await import(\"html2canvas\")).default;\n const canvas = await html2canvas(element, exportOptions);\n return canvas;\n }\n\n private reset() {\n if (this.scaleLine) {\n this.olMap?.removeControl(this.scaleLine);\n this.scaleLine = undefined;\n }\n if (this.overlay) {\n this.overlay.destroy();\n this.overlay = undefined;\n }\n\n this.running = false;\n\n /** show active draw interactions after printing (reset feature style to its previous style ) */\n this.drawInformation?.length &&\n this.drawInformation.forEach((drawInfo) => {\n drawInfo.draw.getOverlay().setStyle(drawInfo.style);\n });\n }\n\n private removePadding(canvas: HTMLCanvasElement, rawPadding: ViewPadding): HTMLCanvasElement {\n // The canvas returned by html2canvas is scaled by the device pixel ratio.\n // The padding needs to be adjusted (because its in css pixels).\n const dpr = window.devicePixelRatio || 1;\n const dprPadding = {\n top: rawPadding.top * dpr,\n right: rawPadding.right * dpr,\n bottom: rawPadding.bottom * dpr,\n left: rawPadding.left * dpr\n };\n\n if (\n dprPadding.left === 0 &&\n dprPadding.right === 0 &&\n dprPadding.top === 0 &&\n dprPadding.bottom === 0\n ) {\n return canvas;\n }\n\n const { width, height } = canvas;\n const newCanvas = document.createElement(\"canvas\");\n newCanvas.width = width - dprPadding.left - dprPadding.right;\n newCanvas.height = height - dprPadding.top - dprPadding.bottom;\n\n const newCtx = newCanvas.getContext(\"2d\");\n if (!newCtx) {\n throw new Error(\"Failed to get a canvas context\");\n }\n\n newCtx.drawImage(\n canvas,\n dprPadding.left,\n dprPadding.top,\n newCanvas.width,\n newCanvas.height,\n 0,\n 0,\n newCanvas.width,\n newCanvas.height\n );\n return newCanvas;\n }\n\n private getViewPadding(): ViewPadding {\n const map = this.olMap;\n // top, right, bottom, left\n const rawPadding = (map.getView().padding ?? [0, 0, 0, 0]) as [\n number,\n number,\n number,\n number\n ];\n return {\n top: rawPadding[0] ?? 0,\n right: rawPadding[1] ?? 0,\n bottom: rawPadding[2] ?? 0,\n left: rawPadding[3] ?? 0\n };\n }\n}\n\nclass PrintResultImpl implements PrintResult {\n private canvas: HTMLCanvasElement;\n\n constructor(canvas: HTMLCanvasElement) {\n this.canvas = canvas;\n }\n getCanvas(): HTMLCanvasElement {\n return this.canvas;\n }\n\n getPNGDataURL(quality?: number): string {\n return canvasToPng(this.canvas, quality);\n }\n}\n"],"names":["element"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PrintingServiceImpl.js","sources":["PrintingServiceImpl.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { createManualPromise, Resource } from \"@open-pioneer/core\";\nimport { ServiceOptions } from \"@open-pioneer/runtime\";\nimport { Options } from \"html2canvas\";\nimport { ScaleLine } from \"ol/control\";\nimport { Interaction } from \"ol/interaction\";\nimport Draw from \"ol/interaction/Draw\";\nimport OlMap from \"ol/Map\";\nimport { FlatStyleLike } from \"ol/style/flat\";\nimport { StyleLike } from \"ol/style/Style\";\nimport type { PrintingOptions, PrintingService, PrintResult, ViewPaddingBehavior } from \"./index\";\nimport { canvasToPng, createBlockUserOverlay, PRINTING_HIDE_CLASS } from \"./utils\";\n\nexport class PrintingServiceImpl implements PrintingService {\n private defaultOverlayText: string;\n\n constructor(options: ServiceOptions) {\n this.defaultOverlayText = options.intl.formatMessage({\n id: \"printingMap\"\n });\n }\n\n async printMap(olMap: OlMap, options?: PrintingOptions): Promise<PrintResultImpl> {\n const job = new PrintJob(olMap, {\n blockUserInteraction: true,\n overlayText: this.defaultOverlayText,\n viewPadding: \"auto\",\n ...options\n });\n return await job.printMap();\n }\n}\n\ninterface ViewPadding {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\ninterface DrawInfo {\n draw: Draw;\n style: StyleLike | FlatStyleLike | null | undefined;\n}\n\n// Exported just for test (mocking)\nexport class PrintJob {\n private olMap: OlMap;\n private blockUserInteraction: boolean = false;\n private overlayText: string;\n private viewPadding: ViewPaddingBehavior;\n\n private running = false;\n private drawInformation: DrawInfo[] | undefined = [];\n private scaleLine: ScaleLine | undefined = undefined;\n private overlay: Resource | undefined = undefined;\n\n constructor(olMap: OlMap, options: Required<PrintingOptions>) {\n this.olMap = olMap;\n this.blockUserInteraction = options.blockUserInteraction;\n this.overlayText = options.overlayText;\n this.viewPadding = options.viewPadding;\n }\n\n async printMap(): Promise<PrintResultImpl> {\n if (this.running) {\n throw new Error(\"Printing already running.\");\n }\n\n try {\n await this.beginExport();\n\n let canvas = await this.printToCanvas(this.olMap.getViewport());\n if (!canvas) {\n throw new Error(\"Canvas export failed\");\n }\n\n if (this.viewPadding === \"auto\") {\n canvas = this.removePadding(canvas, this.getViewPadding());\n }\n return new PrintResultImpl(canvas);\n } finally {\n // Always remove scale bar\n this.reset();\n }\n }\n\n private async beginExport() {\n this.running = true;\n\n /** hides active draw interactions while printing (set feature style to null ) */\n const interactions = this.olMap\n .getInteractions()\n .getArray()\n .filter((interaction: Interaction) => {\n return interaction.getActive() && interaction instanceof Draw;\n });\n this.drawInformation = [];\n interactions?.forEach((interaction) => {\n const draw = interaction as Draw;\n const previousStyle = draw.getOverlay().getStyle();\n draw.getOverlay().setStyle(null);\n this.drawInformation?.push({\n draw: draw,\n style: previousStyle\n });\n });\n\n if (this.blockUserInteraction) {\n const container = this.olMap?.getTargetElement();\n if (container) {\n this.overlay = createBlockUserOverlay(container, this.overlayText);\n }\n }\n await this.addScaleLine();\n }\n\n private async addScaleLine() {\n const scaleLine = (this.scaleLine = new ScaleLine({\n className: \"printing-scale-bar ol-scale-bar\",\n bar: true,\n text: true,\n minWidth: 125\n }));\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const scaleLineElement = (scaleLine as any).element as HTMLElement;\n if (!scaleLineElement) {\n throw new Error(\"Scale line does not have an element\");\n }\n\n // Position the scale bar manually.\n // The 50px should be plenty to avoid overlapping with open layers attributions on most cases.\n // Additionally, take the view padding into account (if behavior is 'auto').\n let bottom = 50;\n let left = 8;\n if (this.viewPadding === \"auto\") {\n const { bottom: paddingBottom, left: paddingLeft } = this.getViewPadding();\n bottom = Math.max(paddingBottom + 8, bottom);\n left += paddingLeft;\n }\n scaleLineElement.style.setProperty(\"--printing-scale-bar-bottom\", `${bottom}px`);\n scaleLineElement.style.setProperty(\"--printing-scale-bar-left\", `${left}px`);\n\n const renderPromise = createManualPromise<void>();\n\n // We expect the scale line to be rendered by the open layers map.\n // This is a sanity check that throws an error when that either doesn't happen\n // or if it takes an extremely large time.\n const timeout = setTimeout(() => {\n renderPromise.reject(new Error(\"Scale line did not render\"));\n }, 3000);\n\n const oldRender = this.scaleLine.render;\n this.scaleLine.render = (...args) => {\n oldRender.apply(this.scaleLine, args);\n renderPromise.resolve();\n };\n this.olMap?.addControl(this.scaleLine);\n\n try {\n // Wait until render (+ one additional frame just to be sure).\n await renderPromise.promise;\n await new Promise((resolve) => {\n requestAnimationFrame(resolve);\n });\n } finally {\n clearTimeout(timeout);\n }\n }\n\n private async printToCanvas(element: HTMLElement): Promise<HTMLCanvasElement> {\n // export options for html2canvas.\n const exportOptions: Partial<Options> = {\n useCORS: true,\n ignoreElements: function (element: Element) {\n if (element.classList && typeof element.classList === \"object\") {\n const classList = element.classList;\n return (\n classList.contains(\"map-anchors\") || classList.contains(PRINTING_HIDE_CLASS)\n );\n }\n return false;\n }\n };\n\n // Lazy load html2canvas: it is a large dependency (a few hundred KiB) that is only\n // required when actually printed. This speeds up the initial page load.\n const html2canvas = (await import(\"html2canvas\")).default;\n const canvas = await html2canvas(element, exportOptions);\n return canvas;\n }\n\n private reset() {\n if (this.scaleLine) {\n this.olMap?.removeControl(this.scaleLine);\n this.scaleLine = undefined;\n }\n if (this.overlay) {\n this.overlay.destroy();\n this.overlay = undefined;\n }\n\n this.running = false;\n\n /** show active draw interactions after printing (reset feature style to its previous style ) */\n this.drawInformation?.length &&\n this.drawInformation.forEach((drawInfo) => {\n drawInfo.draw.getOverlay().setStyle(drawInfo.style);\n });\n }\n\n private removePadding(canvas: HTMLCanvasElement, rawPadding: ViewPadding): HTMLCanvasElement {\n // The canvas returned by html2canvas is scaled by the device pixel ratio.\n // The padding needs to be adjusted (because its in css pixels).\n const dpr = window.devicePixelRatio || 1;\n const dprPadding = {\n top: rawPadding.top * dpr,\n right: rawPadding.right * dpr,\n bottom: rawPadding.bottom * dpr,\n left: rawPadding.left * dpr\n };\n\n if (\n dprPadding.left === 0 &&\n dprPadding.right === 0 &&\n dprPadding.top === 0 &&\n dprPadding.bottom === 0\n ) {\n return canvas;\n }\n\n const { width, height } = canvas;\n const newCanvas = document.createElement(\"canvas\");\n newCanvas.width = width - dprPadding.left - dprPadding.right;\n newCanvas.height = height - dprPadding.top - dprPadding.bottom;\n\n const newCtx = newCanvas.getContext(\"2d\");\n if (!newCtx) {\n throw new Error(\"Failed to get a canvas context\");\n }\n\n newCtx.drawImage(\n canvas,\n dprPadding.left,\n dprPadding.top,\n newCanvas.width,\n newCanvas.height,\n 0,\n 0,\n newCanvas.width,\n newCanvas.height\n );\n return newCanvas;\n }\n\n private getViewPadding(): ViewPadding {\n const map = this.olMap;\n // top, right, bottom, left\n const rawPadding = (map.getView().padding ?? [0, 0, 0, 0]) as [\n number,\n number,\n number,\n number\n ];\n return {\n top: rawPadding[0] ?? 0,\n right: rawPadding[1] ?? 0,\n bottom: rawPadding[2] ?? 0,\n left: rawPadding[3] ?? 0\n };\n }\n}\n\nclass PrintResultImpl implements PrintResult {\n private canvas: HTMLCanvasElement;\n\n constructor(canvas: HTMLCanvasElement) {\n this.canvas = canvas;\n }\n getCanvas(): HTMLCanvasElement {\n return this.canvas;\n }\n\n getPNGDataURL(quality?: number): string {\n return canvasToPng(this.canvas, quality);\n }\n}\n"],"names":["element"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@open-pioneer/printing",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.3",
|
|
5
5
|
"description": "This package provides a UI component to export the current map view as a printable file.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"open-pioneer-trails"
|
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@open-pioneer/chakra-integration": "^1.1.3",
|
|
18
|
-
"@open-pioneer/runtime": "^2.1.
|
|
18
|
+
"@open-pioneer/runtime": "^2.1.6",
|
|
19
|
+
"@open-pioneer/react-utils": "^1.0.0",
|
|
19
20
|
"@open-pioneer/core": "^1.2.3",
|
|
20
|
-
"@open-pioneer/notifier": "^0.3.
|
|
21
|
-
"ol": "^9.
|
|
21
|
+
"@open-pioneer/notifier": "^0.3.5",
|
|
22
|
+
"ol": "^9.2.4",
|
|
22
23
|
"react": "^18.3.1",
|
|
23
24
|
"classnames": "^2.3.2",
|
|
24
25
|
"html2canvas": "^1.4.1",
|
|
25
26
|
"jspdf": "^2.5.1",
|
|
26
|
-
"@open-pioneer/map": "^0.
|
|
27
|
-
"@open-pioneer/react-utils": "^0.2.3"
|
|
27
|
+
"@open-pioneer/map": "^0.6.0"
|
|
28
28
|
},
|
|
29
29
|
"exports": {
|
|
30
30
|
"./package.json": "./package.json",
|