@vertexvis/viewer 0.24.5-canary.4 → 0.24.5-canary.6
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/dist/cjs/{utils-2897cd29.js → utils-ff17f8d4.js} +32 -10
- package/dist/cjs/utils-ff17f8d4.js.map +1 -0
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +65 -28
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +8 -1
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +8 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js +11 -3
- package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/utils.js +29 -9
- package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.css +16 -5
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.js +33 -14
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.css +11 -2
- package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.js +24 -8
- package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.css +11 -2
- package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.js +23 -9
- package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.js.map +1 -1
- package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js +11 -3
- package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js.map +1 -1
- package/dist/components/interactions.js +30 -10
- package/dist/components/interactions.js.map +1 -1
- package/dist/components/vertex-viewer-markup-tool.js +7 -0
- package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
- package/dist/components/vertex-viewer-markup.js +7 -0
- package/dist/components/vertex-viewer-markup.js.map +1 -1
- package/dist/components/viewer-markup-arrow.js +29 -13
- package/dist/components/viewer-markup-arrow.js.map +1 -1
- package/dist/components/viewer-markup-circle-components.js +1 -1
- package/dist/components/viewer-markup-circle.js +21 -8
- package/dist/components/viewer-markup-circle.js.map +1 -1
- package/dist/components/viewer-markup-freeform.js +19 -9
- package/dist/components/viewer-markup-freeform.js.map +1 -1
- package/dist/esm/{utils-12a2b043.js → utils-c692b164.js} +31 -11
- package/dist/esm/utils-c692b164.js.map +1 -0
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +65 -28
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-tool.entry.js +8 -1
- package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js +8 -1
- package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
- package/dist/types/components/viewer-markup/viewer-markup.d.ts +1 -1
- package/dist/types/components/viewer-markup-arrow/utils.d.ts +16 -2
- package/dist/types/components/viewer-markup-arrow/viewer-markup-arrow.d.ts +2 -1
- package/dist/types/components/viewer-markup-circle/viewer-markup-circle.d.ts +2 -1
- package/dist/types/components/viewer-markup-freeform/viewer-markup-freeform.d.ts +2 -1
- package/dist/types/components/viewer-markup-tool/viewer-markup-tool.d.ts +1 -1
- package/dist/types/components.d.ts +5 -5
- package/dist/viewer/p-aa251268.js +5 -0
- package/dist/viewer/p-aa251268.js.map +1 -0
- package/dist/viewer/p-b947f42b.entry.js +5 -0
- package/dist/viewer/p-b947f42b.entry.js.map +1 -0
- package/dist/viewer/p-bafc99a3.entry.js +5 -0
- package/dist/viewer/p-bafc99a3.entry.js.map +1 -0
- package/dist/viewer/p-c8952a2c.entry.js +5 -0
- package/dist/viewer/p-c8952a2c.entry.js.map +1 -0
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +7 -7
- package/dist/cjs/utils-2897cd29.js.map +0 -1
- package/dist/esm/utils-12a2b043.js.map +0 -1
- package/dist/viewer/p-6362cc30.entry.js +0 -5
- package/dist/viewer/p-6362cc30.entry.js.map +0 -1
- package/dist/viewer/p-9d89cf71.entry.js +0 -5
- package/dist/viewer/p-9d89cf71.entry.js.map +0 -1
- package/dist/viewer/p-f26b873b.entry.js +0 -5
- package/dist/viewer/p-f26b873b.entry.js.map +0 -1
- package/dist/viewer/p-fe24fa5a.js +0 -5
- package/dist/viewer/p-fe24fa5a.js.map +0 -1
|
@@ -142,18 +142,35 @@ function createLineAnchorStylePoints(start, end, triangleArrowAngle = 65, lineAr
|
|
|
142
142
|
radius: radius,
|
|
143
143
|
};
|
|
144
144
|
}
|
|
145
|
-
function arrowheadPointsToPolygonPoints(points) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
points.arrowTriangle.leftPoint,
|
|
151
|
-
]
|
|
145
|
+
function arrowheadPointsToPolygonPoints(points, scale = 1) {
|
|
146
|
+
const scaledRight = scalePointProportional(points.tip, points.arrowTriangle.rightPoint, scale);
|
|
147
|
+
const scaledLeft = scalePointProportional(points.tip, points.arrowTriangle.leftPoint, scale);
|
|
148
|
+
const scaledBase = scalePointProportional(points.tip, points.base, scale);
|
|
149
|
+
return [points.tip, scaledRight, scaledBase, scaledLeft]
|
|
152
150
|
.map((pt) => `${pt.x},${pt.y}`)
|
|
153
151
|
.join(' ');
|
|
154
152
|
}
|
|
155
|
-
function arrowheadPointsToPathPoints(points) {
|
|
156
|
-
|
|
153
|
+
function arrowheadPointsToPathPoints(points, scale = 1) {
|
|
154
|
+
const scaledRight = scalePointProportional(points.tip, points.arrowLine.rightPoint, scale);
|
|
155
|
+
const scaledLeft = scalePointProportional(points.tip, points.arrowLine.leftPoint, scale);
|
|
156
|
+
return `M${scaledRight.x} ${scaledRight.y} L${points.tip.x} ${points.tip.y} L${scaledLeft.x} ${scaledLeft.y} L${points.tip.x} ${points.tip.y} Z`;
|
|
157
|
+
}
|
|
158
|
+
function arrowheadPointsToHashPoints(points, scale = 1) {
|
|
159
|
+
const scaledRight = scalePointProportional(points.tip, points.hash.rightPoint, scale);
|
|
160
|
+
const scaledLeft = scalePointProportional(points.tip, points.hash.leftPoint, scale);
|
|
161
|
+
return {
|
|
162
|
+
x1: scaledRight.x,
|
|
163
|
+
y1: scaledRight.y,
|
|
164
|
+
x2: scaledLeft.x,
|
|
165
|
+
y2: scaledLeft.y,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function arrowheadPointsToCirclePoints(points, scale = 1) {
|
|
169
|
+
return {
|
|
170
|
+
cx: points.tip.x,
|
|
171
|
+
cy: points.tip.y,
|
|
172
|
+
r: points.radius * scale,
|
|
173
|
+
};
|
|
157
174
|
}
|
|
158
175
|
function isVertexViewerArrowMarkup(el) {
|
|
159
176
|
return (el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-ARROW');
|
|
@@ -161,6 +178,9 @@ function isVertexViewerArrowMarkup(el) {
|
|
|
161
178
|
function parsePoint(value) {
|
|
162
179
|
return typeof value === 'string' ? fromJson(value) : value;
|
|
163
180
|
}
|
|
181
|
+
function scalePointProportional(basePoint, scaledPoint, scale) {
|
|
182
|
+
return add(basePoint, scaleProportional(subtract(scaledPoint, basePoint), scale));
|
|
183
|
+
}
|
|
164
184
|
|
|
165
185
|
function isVertexViewerCircleMarkup(el) {
|
|
166
186
|
return (el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-CIRCLE');
|
|
@@ -178,6 +198,8 @@ function isVertexViewerFreeformMarkup(el) {
|
|
|
178
198
|
return (el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-FREEFORM');
|
|
179
199
|
}
|
|
180
200
|
|
|
201
|
+
exports.arrowheadPointsToCirclePoints = arrowheadPointsToCirclePoints;
|
|
202
|
+
exports.arrowheadPointsToHashPoints = arrowheadPointsToHashPoints;
|
|
181
203
|
exports.arrowheadPointsToPathPoints = arrowheadPointsToPathPoints;
|
|
182
204
|
exports.arrowheadPointsToPolygonPoints = arrowheadPointsToPolygonPoints;
|
|
183
205
|
exports.createLineAnchorStylePoints = createLineAnchorStylePoints;
|
|
@@ -188,4 +210,4 @@ exports.parseBounds = parseBounds;
|
|
|
188
210
|
exports.parsePoint = parsePoint;
|
|
189
211
|
exports.parsePoints = parsePoints;
|
|
190
212
|
|
|
191
|
-
//# sourceMappingURL=utils-
|
|
213
|
+
//# sourceMappingURL=utils-ff17f8d4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"utils-ff17f8d4.js","mappings":"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","names":["Point.orthogonalVector","Point.normalDirectionVector","Point.subtract","Point.add","Point.scaleProportional","distance","Point.distance","Angle","Point.fromJson","Rectangle","Point"],"sources":["../geometry/src/point.ts","./src/components/viewer-markup-arrow/utils.ts","./src/components/viewer-markup-circle/utils.ts","./src/components/viewer-markup-freeform/utils.ts"],"sourcesContent":["import * as Angle from './angle';\nimport { lerp as lerpNumber } from './math';\n\n/**\n * A `Point` represents a cartesian coordinate with a horizontal and vertical\n * position or length.\n */\nexport interface Point {\n x: number;\n y: number;\n}\n\n/**\n * Returns a new `Point` with the given horizontal and vertical position.\n */\nexport function create(x = 0, y = 0): Point {\n return { x, y };\n}\n\n/**\n * Converts a polar coordinate (length and angle) into a Cartesian coordinate.\n */\nexport function polar(length: number, radians: Angle.Angle): Point {\n const x = Math.cos(radians) * length;\n const y = Math.sin(radians) * length;\n return create(x, y);\n}\n\n/**\n * Returns the distance between two points.\n */\nexport function distance(a: Point, b: Point): number {\n const delta = subtract(a, b);\n return Math.sqrt(delta.x * delta.x + delta.y * delta.y);\n}\n\n/**\n * Returns a new `Point` where `b` is subtracted from `a`.\n */\nexport function subtract(a: Point, b: Point): Point {\n return { x: a.x - b.x, y: a.y - b.y };\n}\n\n/**\n * Returns a new `Point` where `b` is added to `a`.\n */\nexport function add(a: Point, b: Point): Point {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\n/**\n * Returns `true` if the `x` and `y` positions of `a` and `b` are equal.\n */\nexport function isEqual(a: Point, b: Point): boolean {\n return a.x === b.x && a.y === b.y;\n}\n\n/**\n * Performs a linear interpolation between `a` and `b` and returns the result.\n * The value of `t` is clamped between `[0, 1]`.\n *\n * @param a The start value.\n * @param b The end value.\n * @param t A value between 0 and 1.\n * @returns A point between `a` and `b`.\n */\nexport function lerp(a: Point, b: Point, t: number): Point {\n return {\n x: lerpNumber(a.x, b.x, t),\n y: lerpNumber(a.y, b.y, t),\n };\n}\n\n/**\n * Returns a new `Point` where `x` and `y` are inverted.\n */\nexport function negate(pt: Point): Point {\n return create(-pt.x, -pt.y);\n}\n\n/**\n * Returns a new `Point` where `x` and `y` are multiplied by the given scale\n * factors.\n */\nexport function scale(pt: Point, scaleX: number, scaleY: number): Point {\n return {\n x: pt.x * scaleX,\n y: pt.y * scaleY,\n };\n}\n\n/**\n * Returns a new `Point` where `x` and `y` are multiplied by the given scale\n * factor.\n */\nexport function scaleProportional(pt: Point, scale: number): Point {\n return {\n x: pt.x * scale,\n y: pt.y * scale,\n };\n}\n\n/**\n * Returns the magnitude of a point.\n */\nexport function magnitude(pt: Point): number {\n return Math.sqrt(pt.x * pt.x + pt.y * pt.y);\n}\n\n/**\n * Transforms a vector into the corresponding normal (unit) vector.\n */\nexport function normalizeVector(pt: Point): Point {\n const magnitudeOfPoint = magnitude(pt);\n if (magnitudeOfPoint === 0) {\n return create(0, 0);\n } else {\n return scaleProportional(pt, 1 / magnitudeOfPoint);\n }\n}\n\n/**\n * Returns a new normal (unit) vector pointing between the two given points.\n */\nexport function normalDirectionVector(ptA: Point, ptB: Point): Point {\n return normalizeVector(subtract(ptB, ptA));\n}\n\n/**\n * Returns a vector orthogonal to the vector between the two given points.\n */\nexport function orthogonalVector(ptA: Point, ptB: Point): Point {\n const unitVectorBetweenPoints = normalDirectionVector(ptA, ptB);\n\n // Handle vectors that are parallel to the x or y axis\n if (unitVectorBetweenPoints.x === 0 || unitVectorBetweenPoints.y === 0) {\n return create(-1 * unitVectorBetweenPoints.y, unitVectorBetweenPoints.x);\n }\n\n if (\n Math.abs(unitVectorBetweenPoints.x) > Math.abs(unitVectorBetweenPoints.y)\n ) {\n const vectorXValue = 1 - Math.pow(unitVectorBetweenPoints.x, 2);\n const vectorYValue =\n -1 * unitVectorBetweenPoints.x * unitVectorBetweenPoints.y;\n return normalizeVector(create(vectorXValue, vectorYValue));\n } else {\n const vectorXValue =\n -1 * unitVectorBetweenPoints.x * unitVectorBetweenPoints.y;\n const vectorYValue = 1 - Math.pow(unitVectorBetweenPoints.y, 2);\n return normalizeVector(create(vectorXValue, vectorYValue));\n }\n}\n\n/**\n * Parses a JSON string representation of a Point and returns an object.\n *\n * @param json A JSON string, either in the form `[x,y]` or `{\"x\": 0, \"y\": 0}`\n * @returns A parsed Point.\n */\nexport function fromJson(json: string): Point {\n const obj = JSON.parse(json);\n if (Array.isArray(obj)) {\n const [x, y] = obj;\n return create(x, y);\n } else {\n const { x, y } = obj;\n return create(x, y);\n }\n}\n","import { Angle } from '@vertexvis/geometry';\n\nimport * as Point from '../../../../geometry/src/point';\n\nexport type LineAnchorStyle =\n | 'arrow-triangle'\n | 'arrow-line'\n | 'dot'\n | 'hash'\n | 'none';\n\nexport interface LineAnchorStylePoints {\n tip: Point.Point;\n base: Point.Point;\n arrowTriangle: ArrowheadPoints;\n arrowLine: ArrowheadPoints;\n hash: ArrowheadPoints;\n radius: number;\n}\n\nexport interface ArrowheadPoints {\n leftPoint: Point.Point;\n rightPoint: Point.Point;\n}\n\nexport interface LinePoints {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nexport interface CirclePoints {\n cx: number;\n cy: number;\n r: number;\n}\n\nexport function createArrowheadPoints(\n start: Point.Point,\n end: Point.Point,\n arrowSideLength: number,\n arrowHeadTheta: number\n): ArrowheadPoints {\n const arrowOrthogonalVector = Point.orthogonalVector(start, end);\n const normalizedDirection = Point.normalDirectionVector(start, end);\n\n const arrowLeft = Point.subtract(\n end,\n Point.add(\n Point.scaleProportional(\n normalizedDirection,\n arrowSideLength * Math.cos(arrowHeadTheta)\n ),\n Point.scaleProportional(\n arrowOrthogonalVector,\n arrowSideLength * Math.sin(arrowHeadTheta)\n )\n )\n );\n const arrowRight = Point.subtract(\n end,\n Point.subtract(\n Point.scaleProportional(\n normalizedDirection,\n arrowSideLength * Math.cos(arrowHeadTheta)\n ),\n Point.scaleProportional(\n arrowOrthogonalVector,\n arrowSideLength * Math.sin(arrowHeadTheta)\n )\n )\n );\n\n return {\n leftPoint: arrowLeft,\n rightPoint: arrowRight,\n };\n}\n\nexport function createLineAnchorStylePoints(\n start: Point.Point,\n end: Point.Point,\n triangleArrowAngle = 65,\n lineArrowAngle = 85\n): LineAnchorStylePoints {\n // Adjust the size of the end style to the distance between the start and end points\n const distance = Point.distance(start, end);\n const arrowHeadHeight = Math.max(4, Math.min(16, distance * 0.25));\n const hashHeight = Math.max(4, Math.min(12, distance * 0.16));\n const radius = Math.min(5, distance * 0.1);\n\n // Triangle arrow position\n const triangleArrowRelativeHeight = arrowHeadHeight / distance;\n const triangleArrowBasePosition = Point.add(\n Point.scaleProportional(end, 1 - triangleArrowRelativeHeight),\n Point.scaleProportional(start, triangleArrowRelativeHeight)\n );\n const triangleArrowTheta = Angle.toRadians(triangleArrowAngle / 2);\n const triangleArrowSideLength =\n arrowHeadHeight / Math.cos(triangleArrowTheta);\n const triangleArrow = createArrowheadPoints(\n start,\n end,\n triangleArrowSideLength,\n triangleArrowTheta\n );\n\n // Line arrow position\n const lineArrowTheta = Angle.toRadians(lineArrowAngle / 2);\n const lineArrowSideLength = arrowHeadHeight / Math.cos(lineArrowTheta);\n const lineArrow = createArrowheadPoints(\n start,\n end,\n lineArrowSideLength,\n lineArrowTheta\n );\n\n // Hash position\n // Setting the arrowHeadAngle to 90 degrees results in a\n // straight hash mark perpendicular to the direction of the line\n const hashLineTheta = Angle.toRadians(90);\n const hashLine = createArrowheadPoints(start, end, hashHeight, hashLineTheta);\n\n return {\n tip: end,\n base: triangleArrowBasePosition,\n arrowTriangle: triangleArrow,\n arrowLine: lineArrow,\n hash: hashLine,\n radius: radius,\n };\n}\n\nexport function arrowheadPointsToPolygonPoints(\n points: LineAnchorStylePoints,\n scale = 1\n): string {\n const scaledRight = scalePointProportional(\n points.tip,\n points.arrowTriangle.rightPoint,\n scale\n );\n const scaledLeft = scalePointProportional(\n points.tip,\n points.arrowTriangle.leftPoint,\n scale\n );\n const scaledBase = scalePointProportional(points.tip, points.base, scale);\n\n return [points.tip, scaledRight, scaledBase, scaledLeft]\n .map((pt) => `${pt.x},${pt.y}`)\n .join(' ');\n}\n\nexport function arrowheadPointsToPathPoints(\n points: LineAnchorStylePoints,\n scale = 1\n): string {\n const scaledRight = scalePointProportional(\n points.tip,\n points.arrowLine.rightPoint,\n scale\n );\n const scaledLeft = scalePointProportional(\n points.tip,\n points.arrowLine.leftPoint,\n scale\n );\n\n return `M${scaledRight.x} ${scaledRight.y} L${points.tip.x} ${points.tip.y} L${scaledLeft.x} ${scaledLeft.y} L${points.tip.x} ${points.tip.y} Z`;\n}\n\nexport function arrowheadPointsToHashPoints(\n points: LineAnchorStylePoints,\n scale = 1\n): LinePoints {\n const scaledRight = scalePointProportional(\n points.tip,\n points.hash.rightPoint,\n scale\n );\n const scaledLeft = scalePointProportional(\n points.tip,\n points.hash.leftPoint,\n scale\n );\n\n return {\n x1: scaledRight.x,\n y1: scaledRight.y,\n x2: scaledLeft.x,\n y2: scaledLeft.y,\n };\n}\n\nexport function arrowheadPointsToCirclePoints(\n points: LineAnchorStylePoints,\n scale = 1\n): CirclePoints {\n return {\n cx: points.tip.x,\n cy: points.tip.y,\n r: points.radius * scale,\n };\n}\n\nexport function isVertexViewerArrowMarkup(\n el: unknown\n): el is HTMLVertexViewerMarkupArrowElement {\n return (\n el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-ARROW'\n );\n}\n\nexport function parsePoint(\n value: string | Point.Point | undefined\n): Point.Point | undefined {\n return typeof value === 'string' ? Point.fromJson(value) : value;\n}\n\nexport function scalePointProportional(\n basePoint: Point.Point,\n scaledPoint: Point.Point,\n scale: number\n): Point.Point {\n return Point.add(\n basePoint,\n Point.scaleProportional(Point.subtract(scaledPoint, basePoint), scale)\n );\n}\n","import { Rectangle } from '@vertexvis/geometry';\n\nexport function isVertexViewerCircleMarkup(\n el: unknown\n): el is HTMLVertexViewerMarkupCircleElement {\n return (\n el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-CIRCLE'\n );\n}\n\nexport function parseBounds(\n value: string | Rectangle.Rectangle | undefined\n): Rectangle.Rectangle | undefined {\n return typeof value === 'string' ? Rectangle.fromJson(value) : value;\n}\n","import { Point } from '@vertexvis/geometry';\n\nexport function parsePoints(\n value: string | Point.Point[] | undefined\n): Point.Point[] | undefined {\n return typeof value === 'string'\n ? JSON.parse(value).map((values: number[]) =>\n Point.fromJson(JSON.stringify(values))\n )\n : value;\n}\n\nexport function isVertexViewerFreeformMarkup(\n el: unknown\n): el is HTMLVertexViewerMarkupFreeformElement {\n return (\n el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-FREEFORM'\n );\n}\n"],"version":3}
|
|
@@ -7,9 +7,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
7
7
|
|
|
8
8
|
const index = require('./index-0abd8b0b.js');
|
|
9
9
|
const dom$1 = require('./dom-85958197.js');
|
|
10
|
+
const stencil = require('./stencil-40ef9119.js');
|
|
10
11
|
const dom = require('./dom-fd009abb.js');
|
|
11
12
|
const bundle_esm = require('./bundle.esm-6a7f35c7.js');
|
|
12
|
-
const utils = require('./utils-
|
|
13
|
+
const utils = require('./utils-ff17f8d4.js');
|
|
13
14
|
const index$1 = require('./index-bdd914aa.js');
|
|
14
15
|
require('./_commonjsHelpers-03d93eda.js');
|
|
15
16
|
|
|
@@ -306,7 +307,7 @@ const BoundingBox1d = ({ start, end, offset, onStartAnchorPointerDown, onCenterA
|
|
|
306
307
|
index.h("div", { class: index$1.classnames('bounds-default-anchor', 'bounds-center-anchor') }))));
|
|
307
308
|
};
|
|
308
309
|
|
|
309
|
-
const viewerMarkupArrowCss = ":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-arrow-line-stroke-color:var(--red-800);--viewer-markup-arrow-line-stroke-width:
|
|
310
|
+
const viewerMarkupArrowCss = ":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-arrow-line-stroke-color:var(--red-800);--viewer-markup-arrow-line-stroke-width:4px;--viewer-markup-arrow-head-stroke-color:var(--red-800);--viewer-markup-arrow-head-stroke-width:4px;--viewer-markup-arrow-head-fill-color:var(--red-800);--viewer-markup-arrow-head-fill-opacity:1;--viewer-markup-arrow-bounds-cap-border-color:var(--blue-400);--viewer-markup-arrow-bounds-cap-border-width:1px;--viewer-markup-arrow-bounds-cap-background-color:white;--viewer-markup-arrow-bounds-center-anchor-border-color:white;--viewer-markup-arrow-bounds-center-anchor-border-width:1px;--viewer-markup-arrow-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-arrow-bounds-outline-width:1px;--viewer-markup-arrow-bounds-outline-color:var(--blue-400);--viewer-markup-arrow-bounds-anchor-width:9px;--viewer-markup-arrow-bounds-anchor-height:9px;--viewer-markup-arrow-scale:1}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.line{pointer-events:auto;stroke:var(--viewer-markup-arrow-line-stroke-color);stroke-width:calc(var(--viewer-markup-arrow-line-stroke-width) * var(--viewer-markup-arrow-scale));cursor:default}.head{pointer-events:auto;stroke:var(--viewer-markup-arrow-head-stroke-color);stroke-width:calc(var(--viewer-markup-arrow-head-stroke-width) * var(--viewer-markup-arrow-scale));fill:var(--viewer-markup-arrow-head-fill-color);fill-opacity:var(--viewer-markup-arrow-head-fill-opacity);cursor:default}.bounds-line{pointer-events:auto;stroke:var(--viewer-markup-arrow-bounds-outline-color);stroke-width:var(--viewer-markup-arrow-bounds-outline-width)}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-arrow-bounds-anchor-width);height:var(--viewer-markup-arrow-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-arrow-bounds-center-anchor-border-width);border-color:var(--viewer-markup-arrow-bounds-center-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-arrow-bounds-center-anchor-background-color)}.bounds-cap-anchor{border-width:var(--viewer-markup-arrow-bounds-cap-border-width);border-color:var(--viewer-markup-arrow-bounds-cap-border-color);border-style:solid;background-color:var(--viewer-markup-arrow-bounds-cap-background-color)}";
|
|
310
311
|
|
|
311
312
|
const ViewerMarkupArrow = class {
|
|
312
313
|
constructor(hostRef) {
|
|
@@ -326,6 +327,13 @@ const ViewerMarkupArrow = class {
|
|
|
326
327
|
* - `none`: Markup will not be centered (default).
|
|
327
328
|
*/
|
|
328
329
|
this.centeringBehavior = 'none';
|
|
330
|
+
/**
|
|
331
|
+
* The scale to render this markup at. This value is used to scale the element's bounds
|
|
332
|
+
* along with any `offset` to determine the final computed coordinates.
|
|
333
|
+
*
|
|
334
|
+
* When provided, all computed coordinates will be scaled by this amount.
|
|
335
|
+
*/
|
|
336
|
+
this.scale = 1;
|
|
329
337
|
/**
|
|
330
338
|
* The style of the starting anchor. This defaults to none.
|
|
331
339
|
*/
|
|
@@ -404,6 +412,12 @@ const ViewerMarkupArrow = class {
|
|
|
404
412
|
window.removeEventListener('pointerdown', this.handleWindowPointerDown);
|
|
405
413
|
}
|
|
406
414
|
}
|
|
415
|
+
handleScaleChange() {
|
|
416
|
+
stencil.writeDOM(() => {
|
|
417
|
+
var _a, _b;
|
|
418
|
+
this.hostEl.style.setProperty('--viewer-markup-arrow-scale', (_b = (_a = this.scale) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '1');
|
|
419
|
+
});
|
|
420
|
+
}
|
|
407
421
|
updateViewport() {
|
|
408
422
|
const rect = dom.getMarkupBoundingClientRect(this.hostEl);
|
|
409
423
|
this.elementBounds = rect;
|
|
@@ -414,30 +428,31 @@ const ViewerMarkupArrow = class {
|
|
|
414
428
|
}
|
|
415
429
|
renderLineAnchorStyle(anchorStyle, arrowheadPoints) {
|
|
416
430
|
if (anchorStyle === 'arrow-triangle') {
|
|
417
|
-
return (index.h("polygon", { id: "line-anchor-arrow-triangle", class: "head", points: utils.arrowheadPointsToPolygonPoints(arrowheadPoints) }));
|
|
431
|
+
return (index.h("polygon", { id: "line-anchor-arrow-triangle", class: "head", points: utils.arrowheadPointsToPolygonPoints(arrowheadPoints, this.scale) }));
|
|
418
432
|
}
|
|
419
433
|
else if (anchorStyle === 'arrow-line') {
|
|
420
|
-
return (index.h("path", { id: "line-anchor-arrow-line", class: "head", d: utils.arrowheadPointsToPathPoints(arrowheadPoints) }));
|
|
434
|
+
return (index.h("path", { id: "line-anchor-arrow-line", class: "head", d: utils.arrowheadPointsToPathPoints(arrowheadPoints, this.scale) }));
|
|
421
435
|
}
|
|
422
436
|
else if (anchorStyle === 'hash') {
|
|
423
|
-
|
|
437
|
+
const hashPoints = utils.arrowheadPointsToHashPoints(arrowheadPoints, this.scale);
|
|
438
|
+
return index.h("line", { id: "line-anchor-hash", class: "head", ...hashPoints });
|
|
424
439
|
}
|
|
425
440
|
else if (anchorStyle === 'dot') {
|
|
426
|
-
|
|
441
|
+
const circlePoints = utils.arrowheadPointsToCirclePoints(arrowheadPoints, this.scale);
|
|
442
|
+
return index.h("circle", { id: "line-anchor-circle", class: "head", ...circlePoints });
|
|
427
443
|
}
|
|
428
444
|
else {
|
|
429
445
|
return index.h("div", null);
|
|
430
446
|
}
|
|
431
447
|
}
|
|
432
448
|
render() {
|
|
433
|
-
var _a, _b, _c, _d
|
|
449
|
+
var _a, _b, _c, _d;
|
|
434
450
|
if (this.start != null && this.end != null && this.elementBounds != null) {
|
|
435
451
|
const elementBounds = this.elementBounds;
|
|
436
|
-
const
|
|
437
|
-
const
|
|
438
|
-
const
|
|
439
|
-
const
|
|
440
|
-
const screenEnd = translatePointToScreen(this.end, elementBounds, this.originatingViewport, this.centeringBehavior, effectiveScale);
|
|
452
|
+
const offsetX = ((_b = (_a = this.offset) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0) / dom$1.getWindowDevicePixelRatio();
|
|
453
|
+
const offsetY = ((_d = (_c = this.offset) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0) / dom$1.getWindowDevicePixelRatio();
|
|
454
|
+
const screenStart = translatePointToScreen(this.start, elementBounds, this.originatingViewport, this.centeringBehavior, this.scale);
|
|
455
|
+
const screenEnd = translatePointToScreen(this.end, elementBounds, this.originatingViewport, this.centeringBehavior, this.scale);
|
|
441
456
|
if (isValidPointData(screenStart, screenEnd)) {
|
|
442
457
|
const arrowheadStartPoints = utils.createLineAnchorStylePoints(screenEnd, screenStart);
|
|
443
458
|
const arrowheadEndPoints = utils.createLineAnchorStylePoints(screenStart, screenEnd);
|
|
@@ -456,7 +471,8 @@ const ViewerMarkupArrow = class {
|
|
|
456
471
|
"viewer": ["handleViewerChanged"],
|
|
457
472
|
"start": ["handleStartJsonChange"],
|
|
458
473
|
"end": ["handleEndJsonChange"],
|
|
459
|
-
"mode": ["handleModeChange"]
|
|
474
|
+
"mode": ["handleModeChange"],
|
|
475
|
+
"scale": ["handleScaleChange"]
|
|
460
476
|
}; }
|
|
461
477
|
};
|
|
462
478
|
ViewerMarkupArrow.style = viewerMarkupArrowCss;
|
|
@@ -559,7 +575,7 @@ const BoundingBox2d = ({ bounds, offset, onTopLeftAnchorPointerDown, onLeftAncho
|
|
|
559
575
|
index.h("div", { class: index$1.classnames('bounds-default-anchor', 'bounds-center-anchor') }))));
|
|
560
576
|
};
|
|
561
577
|
|
|
562
|
-
const viewerMarkupCircleCss = ":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-circle-ellipse-stroke-color:var(--red-700);--viewer-markup-circle-ellipse-stroke-width:
|
|
578
|
+
const viewerMarkupCircleCss = ":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-circle-ellipse-stroke-color:var(--red-700);--viewer-markup-circle-ellipse-stroke-width:4px;--viewer-markup-circle-ellipse-fill-color:none;--viewer-markup-circle-ellipse-fill-opacity:0;--viewer-markup-circle-bounds-outline-border-color:var(--blue-400);--viewer-markup-circle-bounds-outline-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-circle-bounds-edge-anchor-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-background-color:white;--viewer-markup-circle-bounds-center-anchor-border-color:white;--viewer-markup-circle-bounds-center-anchor-border-width:1px;--viewer-markup-circle-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-circle-bounds-anchor-width:9px;--viewer-markup-circle-bounds-anchor-height:9px;--viewer-markup-circle-scale:1}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.ellipse{pointer-events:auto;stroke:var(--viewer-markup-circle-ellipse-stroke-color);stroke-width:calc(var(--viewer-markup-circle-ellipse-stroke-width) * var(--viewer-markup-circle-scale));fill:var(--viewer-markup-circle-ellipse-fill-color);fill-opacity:var(--viewer-markup-circle-ellipse-fill-opacity);cursor:default}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-circle-bounds-outline-border-width);border-color:var(--viewer-markup-circle-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-circle-bounds-anchor-width);height:var(--viewer-markup-circle-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-circle-bounds-center-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-center-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-circle-bounds-center-anchor-background-color)}.bounds-edge-anchor{border-width:var(--viewer-markup-circle-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-edge-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-circle-bounds-edge-anchor-background-color)}";
|
|
563
579
|
|
|
564
580
|
const ViewerMarkupCircle = class {
|
|
565
581
|
constructor(hostRef) {
|
|
@@ -587,6 +603,13 @@ const ViewerMarkupCircle = class {
|
|
|
587
603
|
* - `none`: Markup will not be centered (default).
|
|
588
604
|
*/
|
|
589
605
|
this.centeringBehavior = 'none';
|
|
606
|
+
/**
|
|
607
|
+
* The scale to render this markup at. This value is used to scale the element's bounds
|
|
608
|
+
* along with any `offset` to determine the final computed coordinates.
|
|
609
|
+
*
|
|
610
|
+
* When provided, all computed coordinates will be scaled by this amount.
|
|
611
|
+
*/
|
|
612
|
+
this.scale = 1;
|
|
590
613
|
this.interactionHandler = new CircleMarkupInteractionHandler(this.hostEl, this.interactionBegin, this.interactionEnd);
|
|
591
614
|
this.handleWindowPointerDown = (event) => {
|
|
592
615
|
if (isValidStartEvent(event)) {
|
|
@@ -646,6 +669,11 @@ const ViewerMarkupCircle = class {
|
|
|
646
669
|
window.removeEventListener('pointerdown', this.handleWindowPointerDown);
|
|
647
670
|
}
|
|
648
671
|
}
|
|
672
|
+
handleScaleChange() {
|
|
673
|
+
stencil.writeDOM(() => {
|
|
674
|
+
this.hostEl.style.setProperty('--viewer-markup-circle-scale', this.scale.toString());
|
|
675
|
+
});
|
|
676
|
+
}
|
|
649
677
|
updateViewport() {
|
|
650
678
|
const rect = dom.getMarkupBoundingClientRect(this.hostEl);
|
|
651
679
|
this.elementBounds = rect;
|
|
@@ -655,13 +683,12 @@ const ViewerMarkupCircle = class {
|
|
|
655
683
|
this.bounds = (_a = this.bounds) !== null && _a !== void 0 ? _a : utils.parseBounds(this.boundsJson);
|
|
656
684
|
}
|
|
657
685
|
render() {
|
|
658
|
-
var _a, _b, _c, _d
|
|
686
|
+
var _a, _b, _c, _d;
|
|
659
687
|
if (this.bounds != null && this.elementBounds != null) {
|
|
660
|
-
const
|
|
661
|
-
const relativeBounds = translateRectToScreen(this.bounds, this.elementBounds, this.originatingViewport, this.centeringBehavior, effectiveScale);
|
|
688
|
+
const relativeBounds = translateRectToScreen(this.bounds, this.elementBounds, this.originatingViewport, this.centeringBehavior, this.scale);
|
|
662
689
|
const center = bundle_esm.rectangle.center(relativeBounds);
|
|
663
|
-
const offsetX = ((
|
|
664
|
-
const offsetY = ((
|
|
690
|
+
const offsetX = ((_b = (_a = this.offset) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0) / dom$1.getWindowDevicePixelRatio();
|
|
691
|
+
const offsetY = ((_d = (_c = this.offset) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0) / dom$1.getWindowDevicePixelRatio();
|
|
665
692
|
return (index.h(index.Host, null, index.h("svg", { class: "svg", onTouchStart: this.handleTouchStart }, index.h("defs", null, index.h(SvgShadow, { id: "circle-shadow" })), index.h("g", { transform: `translate(${offsetX} ${offsetY})`, filter: "url(#circle-shadow)" }, index.h("ellipse", { class: "ellipse", cx: center.x, cy: center.y, rx: relativeBounds.width / 2, ry: relativeBounds.height / 2, stroke: '#000ff0', "stroke-width": 4, fill: 'none' }))), this.mode === 'edit' && (index.h(BoundingBox2d, { bounds: relativeBounds, offset: { x: offsetX, y: offsetY }, onTopLeftAnchorPointerDown: (e) => this.interactionHandler.editAnchor('top-left', e), onTopRightAnchorPointerDown: (e) => this.interactionHandler.editAnchor('top-right', e), onTopAnchorPointerDown: (e) => this.interactionHandler.editAnchor('top', e), onBottomLeftAnchorPointerDown: (e) => this.interactionHandler.editAnchor('bottom-left', e), onBottomRightAnchorPointerDown: (e) => this.interactionHandler.editAnchor('bottom-right', e), onBottomAnchorPointerDown: (e) => this.interactionHandler.editAnchor('bottom', e), onLeftAnchorPointerDown: (e) => this.interactionHandler.editAnchor('left', e), onRightAnchorPointerDown: (e) => this.interactionHandler.editAnchor('right', e), onCenterAnchorPointerDown: (e) => this.interactionHandler.editAnchor('center', e) })), this.mode === 'create' && (index.h("div", { class: "create-overlay", onTouchStart: this.handleTouchStart }))));
|
|
666
693
|
}
|
|
667
694
|
else {
|
|
@@ -672,7 +699,8 @@ const ViewerMarkupCircle = class {
|
|
|
672
699
|
static get watchers() { return {
|
|
673
700
|
"viewer": ["handleViewerChanged"],
|
|
674
701
|
"bounds": ["handleBoundsJsonChange"],
|
|
675
|
-
"mode": ["handleModeChange"]
|
|
702
|
+
"mode": ["handleModeChange"],
|
|
703
|
+
"scale": ["handleScaleChange"]
|
|
676
704
|
}; }
|
|
677
705
|
};
|
|
678
706
|
ViewerMarkupCircle.style = viewerMarkupCircleCss;
|
|
@@ -777,7 +805,7 @@ class FreeformMarkupInteractionHandler extends MarkupInteractionHandler {
|
|
|
777
805
|
}
|
|
778
806
|
}
|
|
779
807
|
|
|
780
|
-
const viewerMarkupFreeformCss = ":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-freeform-stroke-color:var(--red-800);--viewer-markup-freeform-stroke-width:
|
|
808
|
+
const viewerMarkupFreeformCss = ":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-freeform-stroke-color:var(--red-800);--viewer-markup-freeform-stroke-width:4px;--viewer-markup-freeform-line-join:round;--viewer-markup-freeform-line-cap:round;--viewer-markup-freeform-bounds-outline-border-color:var(--blue-400);--viewer-markup-freeform-bounds-outline-border-width:1px;--viewer-markup-freeform-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-freeform-bounds-edge-anchor-border-width:1px;--viewer-markup-freeform-bounds-edge-anchor-background-color:white;--viewer-markup-freeform-bounds-center-anchor-border-color:white;--viewer-markup-freeform-bounds-center-anchor-border-width:1px;--viewer-markup-freeform-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-freeform-bounds-anchor-width:9px;--viewer-markup-freeform-bounds-anchor-height:9px;--viewer-markup-freeform-scale:1}.svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.path{pointer-events:auto;cursor:default;stroke:var(--viewer-markup-freeform-stroke-color);stroke-width:calc(var(--viewer-markup-freeform-stroke-width) * var(--viewer-markup-freeform-scale));stroke-linejoin:var(--viewer-markup-freeform-line-join);stroke-linecap:var(--viewer-markup-freeform-line-cap)}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-freeform-bounds-outline-border-width);border-color:var(--viewer-markup-freeform-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-freeform-bounds-anchor-width);height:var(--viewer-markup-freeform-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-freeform-bounds-center-anchor-border-width);border-color:var(--viewer-markup-freeform-bounds-center-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-freeform-bounds-center-anchor-background-color)}.bounds-edge-anchor{border-width:var(--viewer-markup-freeform-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-freeform-bounds-edge-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-freeform-bounds-edge-anchor-background-color)}";
|
|
781
809
|
|
|
782
810
|
const ViewerMarkupFreeform = class {
|
|
783
811
|
constructor(hostRef) {
|
|
@@ -805,6 +833,13 @@ const ViewerMarkupFreeform = class {
|
|
|
805
833
|
* - `none`: Markup will not be centered (default).
|
|
806
834
|
*/
|
|
807
835
|
this.centeringBehavior = 'none';
|
|
836
|
+
/**
|
|
837
|
+
* The scale to render this markup at. This value is used to scale the element's bounds
|
|
838
|
+
* along with any `offset` to determine the final computed coordinates.
|
|
839
|
+
*
|
|
840
|
+
* When provided, all computed coordinates will be scaled by this amount.
|
|
841
|
+
*/
|
|
842
|
+
this.scale = 1;
|
|
808
843
|
this.screenPoints = [];
|
|
809
844
|
this.interactionHandler = new FreeformMarkupInteractionHandler(this.hostEl, this.interactionBegin, this.interactionEnd);
|
|
810
845
|
this.handleWindowPointerDown = (event) => {
|
|
@@ -859,6 +894,11 @@ const ViewerMarkupFreeform = class {
|
|
|
859
894
|
recomputePointsFromProps() {
|
|
860
895
|
this.updatePointsFromProps();
|
|
861
896
|
}
|
|
897
|
+
handleScaleChange() {
|
|
898
|
+
stencil.writeDOM(() => {
|
|
899
|
+
this.hostEl.style.setProperty('--viewer-markup-freeform-scale', this.scale.toString());
|
|
900
|
+
});
|
|
901
|
+
}
|
|
862
902
|
handleModeChange() {
|
|
863
903
|
if (this.mode !== 'create') {
|
|
864
904
|
window.removeEventListener('pointerdown', this.handleWindowPointerDown);
|
|
@@ -877,11 +917,11 @@ const ViewerMarkupFreeform = class {
|
|
|
877
917
|
this.bounds = (_c = this.bounds) !== null && _c !== void 0 ? _c : utils.parseBounds(this.boundsJson);
|
|
878
918
|
}
|
|
879
919
|
render() {
|
|
880
|
-
var _a, _b, _c, _d
|
|
920
|
+
var _a, _b, _c, _d;
|
|
881
921
|
if (this.screenPoints.length > 0 && this.elementBounds != null) {
|
|
882
922
|
const offsetX = ((_b = (_a = this.offset) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0) / dom$1.getWindowDevicePixelRatio();
|
|
883
923
|
const offsetY = ((_d = (_c = this.offset) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0) / dom$1.getWindowDevicePixelRatio();
|
|
884
|
-
return (index.h(index.Host, null, index.h("svg", { class: "svg", onTouchStart: this.handleTouchStart }, index.h("defs", null, index.h(SvgShadow, { id: "freeform-markup-shadow" })), index.h("g", { transform: `translate(${offsetX} ${offsetY})`, filter: "url(#freeform-markup-shadow)" }, index.h("path", { class: "path", d: this.screenPoints.reduce((d, pt) => `${d}L${pt.x},${pt.y}`, `M${this.screenPoints[0].x},${this.screenPoints[0].y}`), fill: "none" }))), this.mode === 'edit' && this.bounds != null && (index.h(BoundingBox2d, { bounds: translateRectToScreen(this.bounds, this.elementBounds, this.originatingViewport, this.centeringBehavior,
|
|
924
|
+
return (index.h(index.Host, null, index.h("svg", { class: "svg", onTouchStart: this.handleTouchStart }, index.h("defs", null, index.h(SvgShadow, { id: "freeform-markup-shadow" })), index.h("g", { transform: `translate(${offsetX} ${offsetY})`, filter: "url(#freeform-markup-shadow)" }, index.h("path", { class: "path", d: this.screenPoints.reduce((d, pt) => `${d}L${pt.x},${pt.y}`, `M${this.screenPoints[0].x},${this.screenPoints[0].y}`), fill: "none" }))), this.mode === 'edit' && this.bounds != null && (index.h(BoundingBox2d, { bounds: translateRectToScreen(this.bounds, this.elementBounds, this.originatingViewport, this.centeringBehavior, this.scale), offset: { x: offsetX, y: offsetY }, onTopLeftAnchorPointerDown: (e) => this.interactionHandler.editAnchor('top-left', e), onTopRightAnchorPointerDown: (e) => this.interactionHandler.editAnchor('top-right', e), onTopAnchorPointerDown: (e) => this.interactionHandler.editAnchor('top', e), onBottomLeftAnchorPointerDown: (e) => this.interactionHandler.editAnchor('bottom-left', e), onBottomRightAnchorPointerDown: (e) => this.interactionHandler.editAnchor('bottom-right', e), onBottomAnchorPointerDown: (e) => this.interactionHandler.editAnchor('bottom', e), onLeftAnchorPointerDown: (e) => this.interactionHandler.editAnchor('left', e), onRightAnchorPointerDown: (e) => this.interactionHandler.editAnchor('right', e), onCenterAnchorPointerDown: (e) => this.interactionHandler.editAnchor('center', e) })), this.mode === 'create' && (index.h("div", { class: "create-overlay", onTouchStart: this.handleTouchStart }))));
|
|
885
925
|
}
|
|
886
926
|
else {
|
|
887
927
|
return (index.h(index.Host, null, index.h("div", { class: "create-overlay", onTouchStart: this.handleTouchStart })));
|
|
@@ -891,10 +931,7 @@ const ViewerMarkupFreeform = class {
|
|
|
891
931
|
var _a;
|
|
892
932
|
const elementBounds = this.elementBounds;
|
|
893
933
|
if (elementBounds != null) {
|
|
894
|
-
return (_a = this.points) === null || _a === void 0 ? void 0 : _a.map((pt) =>
|
|
895
|
-
var _a;
|
|
896
|
-
return translatePointToScreen(pt, elementBounds, this.originatingViewport, this.centeringBehavior, (_a = this.scale) !== null && _a !== void 0 ? _a : 1);
|
|
897
|
-
});
|
|
934
|
+
return (_a = this.points) === null || _a === void 0 ? void 0 : _a.map((pt) => translatePointToScreen(pt, elementBounds, this.originatingViewport, this.centeringBehavior, this.scale));
|
|
898
935
|
}
|
|
899
936
|
}
|
|
900
937
|
get hostEl() { return index.getElement(this); }
|
|
@@ -902,7 +939,7 @@ const ViewerMarkupFreeform = class {
|
|
|
902
939
|
"viewer": ["handleViewerChanged"],
|
|
903
940
|
"originatingViewport": ["recomputePointsFromProps"],
|
|
904
941
|
"offset": ["recomputePointsFromProps"],
|
|
905
|
-
"scale": ["recomputePointsFromProps"],
|
|
942
|
+
"scale": ["recomputePointsFromProps", "handleScaleChange"],
|
|
906
943
|
"bounds": ["recomputePointsFromProps"],
|
|
907
944
|
"points": ["recomputePointsFromProps"],
|
|
908
945
|
"mode": ["handleModeChange"]
|