@node-projects/web-component-designer 0.2.13 → 0.2.15

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.
@@ -31,14 +31,14 @@ export function instanceOfAny(node, ...fnc) {
31
31
  export function isInline(element) {
32
32
  if (element == null)
33
33
  return false;
34
- if (instanceOfAny(element, SVGElement, HTMLHtmlElement, HTMLHeadElement, HTMLBodyElement))
34
+ if (instanceOfAny(element, SVGElement, HTMLHtmlElement, HTMLHeadElement, HTMLBodyElement, HTMLSelectElement, HTMLOptionElement))
35
35
  return false;
36
36
  return (element.ownerDocument.defaultView ?? window).getComputedStyle(element).display.startsWith('inline');
37
37
  }
38
38
  export function isInlineAfter(element) {
39
39
  if (element == null)
40
40
  return false;
41
- if (instanceOfAny(element, SVGElement, HTMLHtmlElement, HTMLHeadElement, HTMLBodyElement))
41
+ if (instanceOfAny(element, SVGElement, HTMLHtmlElement, HTMLHeadElement, HTMLBodyElement, HTMLSelectElement, HTMLOptionElement))
42
42
  return false;
43
43
  return (element.ownerDocument.defaultView ?? window).getComputedStyle(element).display.startsWith('inline');
44
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ElementHelper.js","sourceRoot":"","sources":["../../../src/elements/helper/ElementHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ElementHelper.js","sourceRoot":"","sources":["../../../src/elements/helper/ElementHelper.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,13 @@
1
+ import { IPoint } from '../../interfaces/IPoint.js';
2
+ import { IDesignerCanvas } from '../widgets/designerView/IDesignerCanvas.js';
3
+ import './PathDataPolyfill.js';
4
+ export interface SvgOverlayPathOptions {
5
+ includeMarkers?: boolean;
6
+ }
1
7
  export declare function isVisualSvgElement(element: SVGElement): boolean;
8
+ export declare function svg(strings: TemplateStringsArray, ...values: any[]): SVGSVGElement;
2
9
  export declare function svgAsString(strings: TemplateStringsArray, ...values: any[]): string;
10
+ export declare function isSupportedSvgGeometryElement(element: Element): element is SVGGraphicsElement;
11
+ export declare function toOverlayPointFromSvgUserSpace(element: Element, designerCanvas: IDesignerCanvas, point: IPoint): IPoint;
12
+ export declare function fromOverlayPointToSvgUserSpace(element: Element, designerCanvas: IDesignerCanvas, point: IPoint): IPoint;
13
+ export declare function createOverlayPathDataFromSvgGeometryElement(element: Element, designerCanvas: IDesignerCanvas, options?: SvgOverlayPathOptions): string | null;
@@ -1,3 +1,5 @@
1
+ import './PathDataPolyfill.js';
2
+ import { createPathD } from './PathDataPolyfill.js';
1
3
  export function isVisualSvgElement(element) {
2
4
  let el = element;
3
5
  while (el) {
@@ -11,7 +13,583 @@ export function isVisualSvgElement(element) {
11
13
  }
12
14
  return true;
13
15
  }
16
+ export function svg(strings, ...values) {
17
+ const svgEl = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
18
+ svgEl.innerHTML = svgAsString(strings, ...values);
19
+ return svgEl;
20
+ }
14
21
  export function svgAsString(strings, ...values) {
15
- return strings[0];
22
+ if (strings.length === 1)
23
+ return strings.raw[0];
24
+ else {
25
+ let r = '';
26
+ for (let i = 0; i < strings.length; i++) {
27
+ r += strings[i] + (values[i] ?? '');
28
+ }
29
+ return r;
30
+ }
31
+ }
32
+ export function isSupportedSvgGeometryElement(element) {
33
+ return element instanceof SVGPathElement ||
34
+ element instanceof SVGRectElement ||
35
+ element instanceof SVGLineElement ||
36
+ element instanceof SVGCircleElement ||
37
+ element instanceof SVGEllipseElement ||
38
+ element instanceof SVGPolygonElement ||
39
+ element instanceof SVGPolylineElement;
40
+ }
41
+ export function toOverlayPointFromSvgUserSpace(element, designerCanvas, point) {
42
+ const transform = _getSvgOverlayTransform(element, designerCanvas);
43
+ if (transform) {
44
+ const local = _toElementReferenceBoxPoint(element, point);
45
+ return _applyProjectiveMatrix(transform.matrix, local.x / transform.bbox.width, local.y / transform.bbox.height);
46
+ }
47
+ const fallbackLocalPoint = _toElementReferenceBoxPoint(element, point);
48
+ const tp = designerCanvas.canvas.convertPointFromNode(fallbackLocalPoint, element, { iframes: designerCanvas.iframes });
49
+ return { x: tp.x, y: tp.y };
50
+ }
51
+ export function fromOverlayPointToSvgUserSpace(element, designerCanvas, point) {
52
+ const transform = _getSvgOverlayTransform(element, designerCanvas);
53
+ if (transform) {
54
+ const normalized = _applyProjectiveMatrix(transform.inverseMatrix, point.x, point.y);
55
+ return {
56
+ x: transform.bbox.x + normalized.x * transform.bbox.width,
57
+ y: transform.bbox.y + normalized.y * transform.bbox.height,
58
+ };
59
+ }
60
+ const tp = element.convertPointFromNode({ x: point.x, y: point.y }, designerCanvas.canvas, { iframes: designerCanvas.iframes });
61
+ return _fromElementReferenceBoxPoint(element, { x: tp.x, y: tp.y });
62
+ }
63
+ export function createOverlayPathDataFromSvgGeometryElement(element, designerCanvas, options) {
64
+ const basePathData = _createOverlayPathDataWithoutMarkers(element, designerCanvas);
65
+ const includeMarkers = options?.includeMarkers !== false;
66
+ if (!includeMarkers) {
67
+ return basePathData;
68
+ }
69
+ const markerPathData = _createMarkerOverlayPathData(element, designerCanvas);
70
+ if (basePathData && markerPathData) {
71
+ return `${basePathData} ${markerPathData}`;
72
+ }
73
+ return basePathData ?? markerPathData;
74
+ }
75
+ function _createOverlayPathDataWithoutMarkers(element, designerCanvas) {
76
+ if (!isSupportedSvgGeometryElement(element)) {
77
+ return null;
78
+ }
79
+ const getPathData = element.getPathData;
80
+ if (!getPathData) {
81
+ return null;
82
+ }
83
+ const sourcePathData = getPathData.call(element, { normalize: true }) ?? [];
84
+ if (!sourcePathData.length) {
85
+ return null;
86
+ }
87
+ const transformedPathData = [];
88
+ let currentPoint = { x: 0, y: 0 };
89
+ let subPathStart = { x: 0, y: 0 };
90
+ for (const command of sourcePathData) {
91
+ const type = command.type.toUpperCase();
92
+ const isRelative = command.type !== type;
93
+ const values = command.values ?? [];
94
+ const toAbsolute = (x, y) => {
95
+ if (isRelative) {
96
+ return { x: currentPoint.x + x, y: currentPoint.y + y };
97
+ }
98
+ return { x, y };
99
+ };
100
+ const toOverlay = (x, y) => {
101
+ const absolutePoint = toAbsolute(x, y);
102
+ return toOverlayPointFromSvgUserSpace(element, designerCanvas, absolutePoint);
103
+ };
104
+ switch (type) {
105
+ case 'M': {
106
+ const overlayPoint = toOverlay(values[0], values[1]);
107
+ transformedPathData.push({ type: 'M', values: [overlayPoint.x, overlayPoint.y] });
108
+ currentPoint = toAbsolute(values[0], values[1]);
109
+ subPathStart = { ...currentPoint };
110
+ break;
111
+ }
112
+ case 'L': {
113
+ const overlayPoint = toOverlay(values[0], values[1]);
114
+ transformedPathData.push({ type: 'L', values: [overlayPoint.x, overlayPoint.y] });
115
+ currentPoint = toAbsolute(values[0], values[1]);
116
+ break;
117
+ }
118
+ case 'H': {
119
+ const target = isRelative ? { x: currentPoint.x + values[0], y: currentPoint.y } : { x: values[0], y: currentPoint.y };
120
+ const overlayPoint = toOverlayPointFromSvgUserSpace(element, designerCanvas, target);
121
+ transformedPathData.push({ type: 'L', values: [overlayPoint.x, overlayPoint.y] });
122
+ currentPoint = target;
123
+ break;
124
+ }
125
+ case 'V': {
126
+ const target = isRelative ? { x: currentPoint.x, y: currentPoint.y + values[0] } : { x: currentPoint.x, y: values[0] };
127
+ const overlayPoint = toOverlayPointFromSvgUserSpace(element, designerCanvas, target);
128
+ transformedPathData.push({ type: 'L', values: [overlayPoint.x, overlayPoint.y] });
129
+ currentPoint = target;
130
+ break;
131
+ }
132
+ case 'C': {
133
+ const cp1 = toOverlay(values[0], values[1]);
134
+ const cp2 = toOverlay(values[2], values[3]);
135
+ const end = toOverlay(values[4], values[5]);
136
+ transformedPathData.push({ type: 'C', values: [cp1.x, cp1.y, cp2.x, cp2.y, end.x, end.y] });
137
+ currentPoint = toAbsolute(values[4], values[5]);
138
+ break;
139
+ }
140
+ case 'S': {
141
+ const cp2 = toOverlay(values[0], values[1]);
142
+ const end = toOverlay(values[2], values[3]);
143
+ transformedPathData.push({ type: 'S', values: [cp2.x, cp2.y, end.x, end.y] });
144
+ currentPoint = toAbsolute(values[2], values[3]);
145
+ break;
146
+ }
147
+ case 'Q': {
148
+ const cp1 = toOverlay(values[0], values[1]);
149
+ const end = toOverlay(values[2], values[3]);
150
+ transformedPathData.push({ type: 'Q', values: [cp1.x, cp1.y, end.x, end.y] });
151
+ currentPoint = toAbsolute(values[2], values[3]);
152
+ break;
153
+ }
154
+ case 'T': {
155
+ const end = toOverlay(values[0], values[1]);
156
+ transformedPathData.push({ type: 'T', values: [end.x, end.y] });
157
+ currentPoint = toAbsolute(values[0], values[1]);
158
+ break;
159
+ }
160
+ case 'A': {
161
+ const end = toOverlay(values[5], values[6]);
162
+ transformedPathData.push({ type: 'A', values: [values[0], values[1], values[2], values[3], values[4], end.x, end.y] });
163
+ currentPoint = toAbsolute(values[5], values[6]);
164
+ break;
165
+ }
166
+ case 'Z': {
167
+ transformedPathData.push({ type: 'Z', values: [] });
168
+ currentPoint = { ...subPathStart };
169
+ break;
170
+ }
171
+ }
172
+ }
173
+ return createPathD(transformedPathData);
174
+ }
175
+ function _createMarkerOverlayPathData(element, designerCanvas) {
176
+ if (!(element instanceof SVGGraphicsElement)) {
177
+ return null;
178
+ }
179
+ const placements = _collectMarkerPlacements(element);
180
+ if (!placements.length) {
181
+ return null;
182
+ }
183
+ const ownerSvg = element.ownerSVGElement;
184
+ if (!ownerSvg) {
185
+ return null;
186
+ }
187
+ const tempGroup = document.createElementNS('http://www.w3.org/2000/svg', 'g');
188
+ tempGroup.setAttribute('visibility', 'hidden');
189
+ tempGroup.setAttribute('pointer-events', 'none');
190
+ ownerSvg.appendChild(tempGroup);
191
+ try {
192
+ const pathParts = [];
193
+ for (const placement of placements) {
194
+ const markerInstance = _createMarkerInstanceGroup(element, placement);
195
+ if (!markerInstance) {
196
+ continue;
197
+ }
198
+ tempGroup.appendChild(markerInstance);
199
+ const markerGraphics = markerInstance.querySelectorAll('path, rect, line, circle, ellipse, polygon, polyline');
200
+ for (const markerGraphic of markerGraphics) {
201
+ const pathData = _createOverlayPathDataWithoutMarkers(markerGraphic, designerCanvas);
202
+ if (pathData) {
203
+ pathParts.push(pathData);
204
+ }
205
+ }
206
+ }
207
+ return pathParts.length ? pathParts.join(' ') : null;
208
+ }
209
+ finally {
210
+ tempGroup.remove();
211
+ }
212
+ }
213
+ function _collectMarkerPlacements(element) {
214
+ const segments = _getNormalizedPathSegments(element);
215
+ if (!segments.length) {
216
+ return [];
217
+ }
218
+ const placements = [];
219
+ const startMarker = _resolveMarkerReference(element, 'marker-start');
220
+ const midMarker = _resolveMarkerReference(element, 'marker-mid');
221
+ const endMarker = _resolveMarkerReference(element, 'marker-end');
222
+ if (startMarker) {
223
+ placements.push({
224
+ marker: startMarker,
225
+ point: segments[0].start,
226
+ angle: _resolveMarkerAngle(startMarker, segments[0].startAngle, undefined, true)
227
+ });
228
+ }
229
+ if (midMarker) {
230
+ for (let i = 0; i < segments.length - 1; i++) {
231
+ if (!_pointsEqual(segments[i].end, segments[i + 1].start)) {
232
+ continue;
233
+ }
234
+ placements.push({
235
+ marker: midMarker,
236
+ point: segments[i].end,
237
+ angle: _resolveMarkerAngle(midMarker, segments[i].endAngle, segments[i + 1].startAngle, false)
238
+ });
239
+ }
240
+ if (_pointsEqual(segments[segments.length - 1].end, segments[0].start) && segments.length > 1) {
241
+ placements.push({
242
+ marker: midMarker,
243
+ point: segments[segments.length - 1].end,
244
+ angle: _resolveMarkerAngle(midMarker, segments[segments.length - 1].endAngle, segments[0].startAngle, false)
245
+ });
246
+ }
247
+ }
248
+ if (endMarker) {
249
+ const lastSegment = segments[segments.length - 1];
250
+ placements.push({
251
+ marker: endMarker,
252
+ point: lastSegment.end,
253
+ angle: _resolveMarkerAngle(endMarker, lastSegment.endAngle, undefined, false)
254
+ });
255
+ }
256
+ return placements;
257
+ }
258
+ function _getNormalizedPathSegments(element) {
259
+ const getPathData = element.getPathData;
260
+ if (!getPathData) {
261
+ return [];
262
+ }
263
+ const pathData = getPathData.call(element, { normalize: true }) ?? [];
264
+ const segments = [];
265
+ let currentPoint = { x: 0, y: 0 };
266
+ let subPathStart = { x: 0, y: 0 };
267
+ for (const command of pathData) {
268
+ switch (command.type) {
269
+ case 'M': {
270
+ currentPoint = { x: command.values[0], y: command.values[1] };
271
+ subPathStart = { ...currentPoint };
272
+ break;
273
+ }
274
+ case 'L': {
275
+ const endPoint = { x: command.values[0], y: command.values[1] };
276
+ const angle = _angleBetween(currentPoint, endPoint);
277
+ if (angle != null) {
278
+ segments.push({ start: { ...currentPoint }, end: endPoint, startAngle: angle, endAngle: angle });
279
+ }
280
+ currentPoint = endPoint;
281
+ break;
282
+ }
283
+ case 'C': {
284
+ const cp1 = { x: command.values[0], y: command.values[1] };
285
+ const cp2 = { x: command.values[2], y: command.values[3] };
286
+ const endPoint = { x: command.values[4], y: command.values[5] };
287
+ const startAngle = _getFirstUsableAngle([currentPoint, cp1, cp2, endPoint]);
288
+ const endAngle = _getLastUsableAngle([currentPoint, cp1, cp2, endPoint]);
289
+ if (startAngle != null && endAngle != null) {
290
+ segments.push({ start: { ...currentPoint }, end: endPoint, startAngle, endAngle });
291
+ }
292
+ currentPoint = endPoint;
293
+ break;
294
+ }
295
+ case 'Z': {
296
+ const angle = _angleBetween(currentPoint, subPathStart);
297
+ if (angle != null) {
298
+ segments.push({ start: { ...currentPoint }, end: { ...subPathStart }, startAngle: angle, endAngle: angle });
299
+ }
300
+ currentPoint = { ...subPathStart };
301
+ break;
302
+ }
303
+ }
304
+ }
305
+ return segments;
306
+ }
307
+ function _resolveMarkerReference(element, attributeName) {
308
+ const reference = element.getAttribute(attributeName)?.trim();
309
+ if (!reference) {
310
+ return null;
311
+ }
312
+ const urlMatch = /^url\((['"]?)(.*?)\1\)$/.exec(reference);
313
+ const url = urlMatch?.[2] ?? reference;
314
+ if (!url.startsWith('#')) {
315
+ return null;
316
+ }
317
+ const rootNode = element.getRootNode();
318
+ const marker = typeof rootNode.querySelector === 'function' ? rootNode.querySelector(url) : null;
319
+ return marker instanceof SVGMarkerElement ? marker : null;
320
+ }
321
+ function _createMarkerInstanceGroup(sourceElement, placement) {
322
+ const marker = placement.marker;
323
+ if (!marker.childNodes.length) {
324
+ return null;
325
+ }
326
+ const markerScale = _getMarkerUnitsScale(sourceElement, marker);
327
+ const outerGroup = document.createElementNS('http://www.w3.org/2000/svg', 'g');
328
+ const transformParts = [
329
+ `translate(${placement.point.x} ${placement.point.y})`,
330
+ `rotate(${placement.angle})`
331
+ ];
332
+ if (markerScale !== 1) {
333
+ transformParts.push(`scale(${markerScale})`);
334
+ }
335
+ outerGroup.setAttribute('transform', transformParts.join(' '));
336
+ const viewBoxTransform = _createViewBoxTransform(marker);
337
+ const mappedRefPoint = _mapMarkerPointToViewport(marker, viewBoxTransform, {
338
+ x: _getAnimatedLengthValue(marker.refX),
339
+ y: _getAnimatedLengthValue(marker.refY)
340
+ });
341
+ const refGroup = document.createElementNS('http://www.w3.org/2000/svg', 'g');
342
+ refGroup.setAttribute('transform', `translate(${-mappedRefPoint.x} ${-mappedRefPoint.y})`);
343
+ outerGroup.appendChild(refGroup);
344
+ const viewBoxGroup = document.createElementNS('http://www.w3.org/2000/svg', 'g');
345
+ if (viewBoxTransform) {
346
+ viewBoxGroup.setAttribute('transform', viewBoxTransform.transform);
347
+ }
348
+ refGroup.appendChild(viewBoxGroup);
349
+ for (const childNode of Array.from(marker.childNodes)) {
350
+ viewBoxGroup.appendChild(childNode.cloneNode(true));
351
+ }
352
+ return outerGroup;
353
+ }
354
+ function _getMarkerUnitsScale(sourceElement, marker) {
355
+ if (marker.getAttribute('markerUnits') === 'userSpaceOnUse') {
356
+ return 1;
357
+ }
358
+ const strokeWidth = parseFloat(getComputedStyle(sourceElement).strokeWidth);
359
+ return Number.isFinite(strokeWidth) && strokeWidth > 0 ? strokeWidth : 1;
360
+ }
361
+ function _createViewBoxTransform(marker) {
362
+ const viewBox = marker.viewBox.baseVal;
363
+ if (viewBox == null || (viewBox.width === 0 && viewBox.height === 0)) {
364
+ return null;
365
+ }
366
+ const viewportWidth = _getAnimatedLengthValue(marker.markerWidth);
367
+ const viewportHeight = _getAnimatedLengthValue(marker.markerHeight);
368
+ if (!viewportWidth || !viewportHeight || !viewBox.width || !viewBox.height) {
369
+ return null;
370
+ }
371
+ const preserveAspectRatio = marker.preserveAspectRatio.baseVal;
372
+ let scaleX = viewportWidth / viewBox.width;
373
+ let scaleY = viewportHeight / viewBox.height;
374
+ let translateX = -viewBox.x * scaleX;
375
+ let translateY = -viewBox.y * scaleY;
376
+ if (preserveAspectRatio.align !== SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE) {
377
+ const uniformScale = preserveAspectRatio.meetOrSlice === SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE
378
+ ? Math.max(scaleX, scaleY)
379
+ : Math.min(scaleX, scaleY);
380
+ scaleX = uniformScale;
381
+ scaleY = uniformScale;
382
+ const extraWidth = viewportWidth - viewBox.width * uniformScale;
383
+ const extraHeight = viewportHeight - viewBox.height * uniformScale;
384
+ const { xAlign, yAlign } = _getAlignFactors(preserveAspectRatio.align);
385
+ translateX = -viewBox.x * uniformScale + extraWidth * xAlign;
386
+ translateY = -viewBox.y * uniformScale + extraHeight * yAlign;
387
+ }
388
+ return {
389
+ transform: `matrix(${scaleX} 0 0 ${scaleY} ${translateX} ${translateY})`,
390
+ scaleX,
391
+ scaleY,
392
+ translateX,
393
+ translateY,
394
+ };
395
+ }
396
+ function _mapMarkerPointToViewport(marker, viewBoxTransform, point) {
397
+ if (!viewBoxTransform) {
398
+ return point;
399
+ }
400
+ return {
401
+ x: point.x * viewBoxTransform.scaleX + viewBoxTransform.translateX,
402
+ y: point.y * viewBoxTransform.scaleY + viewBoxTransform.translateY,
403
+ };
404
+ }
405
+ function _getAlignFactors(align) {
406
+ switch (align) {
407
+ case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN:
408
+ return { xAlign: 0.5, yAlign: 0 };
409
+ case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMIN:
410
+ return { xAlign: 1, yAlign: 0 };
411
+ case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMID:
412
+ return { xAlign: 0, yAlign: 0.5 };
413
+ case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID:
414
+ return { xAlign: 0.5, yAlign: 0.5 };
415
+ case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMID:
416
+ return { xAlign: 1, yAlign: 0.5 };
417
+ case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMAX:
418
+ return { xAlign: 0, yAlign: 1 };
419
+ case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMAX:
420
+ return { xAlign: 0.5, yAlign: 1 };
421
+ case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMAX:
422
+ return { xAlign: 1, yAlign: 1 };
423
+ default:
424
+ return { xAlign: 0, yAlign: 0 };
425
+ }
426
+ }
427
+ function _resolveMarkerAngle(marker, incomingAngle, outgoingAngle, isStartMarker) {
428
+ const orient = marker.orientType.baseVal === SVGMarkerElement.SVG_MARKER_ORIENT_AUTO ? 'auto' : marker.getAttribute('orient')?.trim() ?? '0';
429
+ if (orient === 'auto' || orient === 'auto-start-reverse') {
430
+ let angle = outgoingAngle == null ? incomingAngle : _bisectAngles(incomingAngle, outgoingAngle);
431
+ if (isStartMarker && orient === 'auto-start-reverse') {
432
+ angle += 180;
433
+ }
434
+ return angle;
435
+ }
436
+ return _parseAngle(orient);
437
+ }
438
+ function _parseAngle(value) {
439
+ if (value.endsWith('rad')) {
440
+ return parseFloat(value) * 180 / Math.PI;
441
+ }
442
+ if (value.endsWith('turn')) {
443
+ return parseFloat(value) * 360;
444
+ }
445
+ if (value.endsWith('grad')) {
446
+ return parseFloat(value) * 0.9;
447
+ }
448
+ return parseFloat(value);
449
+ }
450
+ function _bisectAngles(angleA, angleB) {
451
+ const vectorA = { x: Math.cos(angleA * Math.PI / 180), y: Math.sin(angleA * Math.PI / 180) };
452
+ const vectorB = { x: Math.cos(angleB * Math.PI / 180), y: Math.sin(angleB * Math.PI / 180) };
453
+ const sum = { x: vectorA.x + vectorB.x, y: vectorA.y + vectorB.y };
454
+ if (Math.abs(sum.x) < 1e-10 && Math.abs(sum.y) < 1e-10) {
455
+ return angleB;
456
+ }
457
+ return Math.atan2(sum.y, sum.x) * 180 / Math.PI;
458
+ }
459
+ function _getFirstUsableAngle(points) {
460
+ for (let i = 0; i < points.length - 1; i++) {
461
+ const angle = _angleBetween(points[i], points[i + 1]);
462
+ if (angle != null) {
463
+ return angle;
464
+ }
465
+ }
466
+ return null;
467
+ }
468
+ function _getLastUsableAngle(points) {
469
+ for (let i = points.length - 1; i > 0; i--) {
470
+ const angle = _angleBetween(points[i - 1], points[i]);
471
+ if (angle != null) {
472
+ return angle;
473
+ }
474
+ }
475
+ return null;
476
+ }
477
+ function _angleBetween(start, end) {
478
+ const dx = end.x - start.x;
479
+ const dy = end.y - start.y;
480
+ if (Math.abs(dx) < 1e-10 && Math.abs(dy) < 1e-10) {
481
+ return null;
482
+ }
483
+ return Math.atan2(dy, dx) * 180 / Math.PI;
484
+ }
485
+ function _pointsEqual(a, b) {
486
+ return Math.abs(a.x - b.x) < 1e-10 && Math.abs(a.y - b.y) < 1e-10;
487
+ }
488
+ function _getAnimatedLengthValue(length) {
489
+ return length?.baseVal?.value ?? 0;
490
+ }
491
+ function _toElementReferenceBoxPoint(element, point) {
492
+ const bbox = _getSvgGeometryBBoxOffset(element);
493
+ return { x: point.x - bbox.x, y: point.y - bbox.y };
494
+ }
495
+ function _fromElementReferenceBoxPoint(element, point) {
496
+ const bbox = _getSvgGeometryBBoxOffset(element);
497
+ return { x: point.x + bbox.x, y: point.y + bbox.y };
498
+ }
499
+ function _getSvgGeometryBBoxOffset(element) {
500
+ if (!(element instanceof SVGGraphicsElement) || element instanceof SVGSVGElement) {
501
+ return { x: 0, y: 0 };
502
+ }
503
+ const bbox = element.getBBox();
504
+ return { x: bbox.x, y: bbox.y };
505
+ }
506
+ function _getSvgOverlayTransform(element, designerCanvas) {
507
+ if (!(element instanceof SVGGraphicsElement) || element instanceof SVGSVGElement) {
508
+ return null;
509
+ }
510
+ const bbox = element.getBBox();
511
+ if (Math.abs(bbox.width) < 1e-10 || Math.abs(bbox.height) < 1e-10) {
512
+ return null;
513
+ }
514
+ const quad = element.getBoxQuads({ relativeTo: designerCanvas.canvas, iframes: designerCanvas.iframes })[0];
515
+ if (!quad) {
516
+ return null;
517
+ }
518
+ const matrix = _createProjectiveMatrixForQuad(quad);
519
+ if (!matrix) {
520
+ return null;
521
+ }
522
+ const inverseMatrix = _invertProjectiveMatrix(matrix);
523
+ if (!inverseMatrix) {
524
+ return null;
525
+ }
526
+ return { bbox, matrix, inverseMatrix };
527
+ }
528
+ function _createProjectiveMatrixForQuad(quad) {
529
+ const x1 = quad.p1.x;
530
+ const y1 = quad.p1.y;
531
+ const x2 = quad.p2.x;
532
+ const y2 = quad.p2.y;
533
+ const x3 = quad.p3.x;
534
+ const y3 = quad.p3.y;
535
+ const x4 = quad.p4.x;
536
+ const y4 = quad.p4.y;
537
+ const sx = x1 - x2 + x3 - x4;
538
+ const sy = y1 - y2 + y3 - y4;
539
+ const dx1 = x2 - x3;
540
+ const dy1 = y2 - y3;
541
+ const dx2 = x4 - x3;
542
+ const dy2 = y4 - y3;
543
+ let g = 0;
544
+ let h = 0;
545
+ if (Math.abs(sx) >= 1e-10 || Math.abs(sy) >= 1e-10) {
546
+ const denominator = dx1 * dy2 - dy1 * dx2;
547
+ if (Math.abs(denominator) < 1e-10) {
548
+ return null;
549
+ }
550
+ g = (sx * dy2 - sy * dx2) / denominator;
551
+ h = (dx1 * sy - dy1 * sx) / denominator;
552
+ }
553
+ return [
554
+ x2 - x1 + g * x2,
555
+ x4 - x1 + h * x4,
556
+ x1,
557
+ y2 - y1 + g * y2,
558
+ y4 - y1 + h * y4,
559
+ y1,
560
+ g,
561
+ h,
562
+ 1,
563
+ ];
564
+ }
565
+ function _applyProjectiveMatrix(matrix, x, y) {
566
+ const projectedX = matrix[0] * x + matrix[1] * y + matrix[2];
567
+ const projectedY = matrix[3] * x + matrix[4] * y + matrix[5];
568
+ const projectedW = matrix[6] * x + matrix[7] * y + matrix[8];
569
+ const safeW = Math.abs(projectedW) < 1e-10 ? (projectedW < 0 ? -1e-10 : 1e-10) : projectedW;
570
+ return {
571
+ x: projectedX / safeW,
572
+ y: projectedY / safeW,
573
+ };
574
+ }
575
+ function _invertProjectiveMatrix(matrix) {
576
+ const determinant = matrix[0] * (matrix[4] * matrix[8] - matrix[5] * matrix[7]) -
577
+ matrix[1] * (matrix[3] * matrix[8] - matrix[5] * matrix[6]) +
578
+ matrix[2] * (matrix[3] * matrix[7] - matrix[4] * matrix[6]);
579
+ if (Math.abs(determinant) < 1e-10) {
580
+ return null;
581
+ }
582
+ const inverseDeterminant = 1 / determinant;
583
+ return [
584
+ (matrix[4] * matrix[8] - matrix[5] * matrix[7]) * inverseDeterminant,
585
+ (matrix[2] * matrix[7] - matrix[1] * matrix[8]) * inverseDeterminant,
586
+ (matrix[1] * matrix[5] - matrix[2] * matrix[4]) * inverseDeterminant,
587
+ (matrix[5] * matrix[6] - matrix[3] * matrix[8]) * inverseDeterminant,
588
+ (matrix[0] * matrix[8] - matrix[2] * matrix[6]) * inverseDeterminant,
589
+ (matrix[2] * matrix[3] - matrix[0] * matrix[5]) * inverseDeterminant,
590
+ (matrix[3] * matrix[7] - matrix[4] * matrix[6]) * inverseDeterminant,
591
+ (matrix[1] * matrix[6] - matrix[0] * matrix[7]) * inverseDeterminant,
592
+ (matrix[0] * matrix[4] - matrix[1] * matrix[3]) * inverseDeterminant,
593
+ ];
16
594
  }
17
595
  //# sourceMappingURL=SvgHelper.js.map