@node-projects/web-component-designer 0.1.131 → 0.1.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.d.ts +1 -1
  2. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js +1 -1
  3. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.d.ts +1 -1
  4. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js +1 -1
  5. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.d.ts +1 -1
  6. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.js +1 -1
  7. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.d.ts +1 -1
  8. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js +1 -1
  9. package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.d.ts +1 -1
  10. package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js +1 -1
  11. package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.d.ts +1 -1
  12. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.d.ts +1 -1
  13. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.js +1 -1
  14. package/dist/elements/widgets/designerView/extensions/MultipleSelectionRectExtensionProvider.d.ts +1 -1
  15. package/dist/elements/widgets/designerView/extensions/MultipleSelectionRectExtensionProvider.js +1 -1
  16. package/dist/elements/widgets/designerView/extensions/PaddingExtensionProvider.d.ts +1 -1
  17. package/dist/elements/widgets/designerView/extensions/PaddingExtensionProvider.js +1 -1
  18. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.d.ts +1 -1
  19. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.js +1 -1
  20. package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.d.ts +1 -1
  21. package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.js +1 -1
  22. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.d.ts +1 -1
  23. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +1 -1
  24. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.d.ts +1 -1
  25. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +1 -1
  26. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.d.ts +1 -1
  27. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js +1 -1
  28. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.d.ts +1 -1
  29. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +1 -1
  30. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.d.ts +2 -2
  31. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +2 -2
  32. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.d.ts +1 -1
  33. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.js +1 -1
  34. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtension.d.ts +1 -3
  35. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtension.js +16 -128
  36. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.d.ts +1 -1
  37. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.js +2 -2
  38. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.d.ts +1 -0
  39. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js +25 -0
  40. package/dist/elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.d.ts +1 -0
  41. package/dist/elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js +3 -1
  42. package/dist/elements/widgets/designerView/overlayLayerView.js +56 -6
  43. package/dist/polyfill/globals.d.ts +1 -0
  44. package/package.json +1 -1
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class AltToEnterContainerExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -7,7 +7,7 @@ export class AltToEnterContainerExtensionProvider {
7
7
  getExtension(extensionManager, designerView, designItem) {
8
8
  return new AltToEnterContainerExtension(extensionManager, designerView, designItem);
9
9
  }
10
- style = css `
10
+ static style = css `
11
11
  .svg-text-enter-container { stroke: none; fill: black; stroke-width: 1; font-weight:800; font-family: monospace; }
12
12
  `;
13
13
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from '../IExtensionManger.js';
6
6
  export declare class EditTextExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -11,7 +11,7 @@ export class EditTextExtensionProvider {
11
11
  getExtension(extensionManager, designerView, designItem) {
12
12
  return new EditTextExtension(extensionManager, designerView, designItem);
13
13
  }
14
- style = css `
14
+ static style = css `
15
15
  .svg-edit-text-clickoutside { stroke: transparent; fill: lightgray; opacity: 0.7 }
16
16
  `;
17
17
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class ElementDragTitleExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -7,7 +7,7 @@ export class ElementDragTitleExtensionProvider {
7
7
  getExtension(extensionManager, designerView, designItem) {
8
8
  return new ElementDragTitleExtension(extensionManager, designerView, designItem);
9
9
  }
10
- style = css `
10
+ static style = css `
11
11
  .svg-text-primary { stroke: none; color: white; font-family: monospace; }
12
12
  `;
13
13
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class GrayOutDragOverContainerExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -7,7 +7,7 @@ export class GrayOutDragOverContainerExtensionProvider {
7
7
  getExtension(extensionManager, designerView, designItem) {
8
8
  return new GrayOutDragOverContainerExtension(extensionManager, designerView, designItem);
9
9
  }
10
- style = css `
10
+ static style = css `
11
11
  .svg-rect-enter-container { stroke: none; fill: #aa00ff2e; }
12
12
  `;
13
13
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class HighlightElementExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -7,7 +7,7 @@ export class HighlightElementExtensionProvider {
7
7
  getExtension(extensionManager, designerView, designItem) {
8
8
  return new HighlightElementExtension(extensionManager, designerView, designItem);
9
9
  }
10
- style = css `
10
+ static style = css `
11
11
  .svg-hover { stroke: #90caf9; fill: none; }
12
12
  `;
13
13
  }
@@ -6,5 +6,5 @@ export interface IDesignerExtensionProvider {
6
6
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
7
7
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
8
8
  style?: CSSStyleSheet | CSSStyleSheet[];
9
- svgDefs?: string;
9
+ svgDefs?: string | string[];
10
10
  }
@@ -9,5 +9,5 @@ export declare class InvisibleElementExtensionProvider implements IDesignerExten
9
9
  constructor(elementFilter?: (designItem: IDesignItem) => boolean);
10
10
  shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
11
11
  getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
12
- readonly style: CSSStyleSheet;
12
+ static readonly style: CSSStyleSheet;
13
13
  }
@@ -18,7 +18,7 @@ export class InvisibleElementExtensionProvider {
18
18
  getExtension(extensionManager, designerCanvas, designItem) {
19
19
  return new InvisibleElementExtension(extensionManager, designerCanvas, designItem);
20
20
  }
21
- style = css `
21
+ static style = css `
22
22
  .svg-invisible-div { stroke: lightgray; fill: transparent; stroke-width: 1;
23
23
  `;
24
24
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class MultipleSelectionRectExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -7,7 +7,7 @@ export class MultipleSelectionRectExtensionProvider {
7
7
  getExtension(extensionManager, designerView, designItem) {
8
8
  return new MultipleSelectionRectExtension(extensionManager, designerView, designItem);
9
9
  }
10
- style = css `
10
+ static style = css `
11
11
  .svg-multiple-rect-selection { stroke: #909090; stroke-dasharray: 3; fill: transparent; stroke-width: 2; /*pointer-events: all;*/ }
12
12
  `;
13
13
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class PaddingExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -10,7 +10,7 @@ export class PaddingExtensionProvider {
10
10
  getExtension(extensionManager, designerView, designItem) {
11
11
  return new PaddingExtension(extensionManager, designerView, designItem);
12
12
  }
13
- style = css `
13
+ static style = css `
14
14
  .svg-padding { fill: #32cd3266; }
15
15
  `;
16
16
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class PlacementExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -7,7 +7,7 @@ export class PlacementExtensionProvider {
7
7
  getExtension(extensionManager, designerView, designItem) {
8
8
  return new PlacementExtension(extensionManager, designerView, designItem);
9
9
  }
10
- style = css `
10
+ static style = css `
11
11
  .svg-hover { stroke: #90caf9; fill: none; }
12
12
  `;
13
13
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class PositionExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -12,7 +12,7 @@ export class PositionExtensionProvider {
12
12
  getExtension(extensionManager, designerView, designItem) {
13
13
  return new PositionExtension(extensionManager, designerView, designItem);
14
14
  }
15
- style = css `
15
+ static style = css `
16
16
  .svg-position-text { text-anchor: middle; alignment-baseline: central; }
17
17
  `;
18
18
  }
@@ -8,5 +8,5 @@ export declare class ResizeExtensionProvider implements IDesignerExtensionProvid
8
8
  constructor(resizeAllSelected?: boolean);
9
9
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
10
10
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
11
- readonly style: CSSStyleSheet;
11
+ static readonly style: CSSStyleSheet;
12
12
  }
@@ -14,7 +14,7 @@ export class ResizeExtensionProvider {
14
14
  getExtension(extensionManager, designerView, designItem) {
15
15
  return new ResizeExtension(extensionManager, designerView, designItem, this.resizeAllSelected);
16
16
  }
17
- style = css `
17
+ static style = css `
18
18
  .svg-primary-resizer { stroke: #3899ec; fill: white; pointer-events: all }
19
19
  `;
20
20
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class RotateExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -10,7 +10,7 @@ export class RotateExtensionProvider {
10
10
  getExtension(extensionManager, designerView, designItem) {
11
11
  return new RotateExtension(extensionManager, designerView, designItem);
12
12
  }
13
- style = css `
13
+ static style = css `
14
14
  .svg-primary-rotate { stroke: #3899ec; fill: #3899ec; pointer-events: all }
15
15
  .svg-rotate-text { text-anchor: middle; alignment-baseline: central; }
16
16
  `;
@@ -6,5 +6,5 @@ import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class SelectionDefaultExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -8,7 +8,7 @@ export class SelectionDefaultExtensionProvider {
8
8
  getExtension(extensionManager, designerView, designItem) {
9
9
  return new SelectionDefaultExtension(extensionManager, designerView, designItem);
10
10
  }
11
- style = css `
11
+ static style = css `
12
12
  .svg-selection { stroke: #3899ec; fill: transparent; stroke-width: 2; /*pointer-events: all;*/ }
13
13
  `;
14
14
  }
@@ -8,5 +8,5 @@ export declare class TransformOriginExtensionProvider implements IDesignerExtens
8
8
  constructor(showOnlyWhenSet?: boolean);
9
9
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
10
10
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
11
- readonly style: CSSStyleSheet;
11
+ static readonly style: CSSStyleSheet;
12
12
  }
@@ -26,7 +26,7 @@ export class TransformOriginExtensionProvider {
26
26
  getExtension(extensionManager, designerView, designItem) {
27
27
  return new TransformOriginExtension(extensionManager, designerView, designItem);
28
28
  }
29
- style = css `
29
+ static style = css `
30
30
  .svg-transform-origin { stroke: #3899ec; fill: black; pointer-events: all }
31
31
  `;
32
32
  }
@@ -10,6 +10,6 @@ export declare class DisplayGridExtensionProvider implements IDesignerExtensionP
10
10
  constructor(gridColor?: string, gridFillColor?: string);
11
11
  shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
12
12
  getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
13
- readonly style: CSSStyleSheet;
14
- readonly svgDefs = "\n <pattern id=\"pattern-stripe\" \n width=\"4\" height=\"4\" \n patternUnits=\"userSpaceOnUse\"\n patternTransform=\"rotate(45)\">\n <rect width=\"1\" height=\"4\" transform=\"translate(0,0)\" fill=\"white\"></rect>\n </pattern>\n <mask id=\"mask-stripe\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"url(#pattern-stripe)\" />\n </mask>";
13
+ static readonly style: CSSStyleSheet;
14
+ static readonly svgDefs = "\n <pattern id=\"pattern-stripe\" \n width=\"4\" height=\"4\" \n patternUnits=\"userSpaceOnUse\"\n patternTransform=\"rotate(45)\">\n <rect width=\"1\" height=\"4\" transform=\"translate(0,0)\" fill=\"white\"></rect>\n </pattern>\n <mask id=\"mask-stripe\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"url(#pattern-stripe)\" />\n </mask>";
15
15
  }
@@ -17,7 +17,7 @@ export class DisplayGridExtensionProvider {
17
17
  getExtension(extensionManager, designerCanvas, designItem) {
18
18
  return new DisplayGridExtension(extensionManager, designerCanvas, designItem, this.gridColor, this.gridFillColor);
19
19
  }
20
- style = css `
20
+ static style = css `
21
21
  .svg-grid { stroke: var(--svg-grid-stroke-color); stroke-dasharray: 5; fill: var(--svg-grid-fill-color); }
22
22
  .svg-grid-current-cell { stroke: var(--svg-grid-stroke-color); stroke-dasharray: 5; fill: #e3ff4722; }
23
23
  .svg-grid-area { font-size: 8px; }
@@ -25,7 +25,7 @@ export class DisplayGridExtensionProvider {
25
25
  .svg-grid-header { fill: var(--svg-grid-fill-color); stroke: var(--svg-grid-stroke-color); }
26
26
  .svg-grid-plus-sign { stroke: black; }
27
27
  `;
28
- svgDefs = `
28
+ static svgDefs = `
29
29
  <pattern id="pattern-stripe"
30
30
  width="4" height="4"
31
31
  patternUnits="userSpaceOnUse"
@@ -6,5 +6,5 @@ import { IExtensionManager } from '../IExtensionManger.js';
6
6
  export declare class EditGridColumnRowSizesExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -11,7 +11,7 @@ export class EditGridColumnRowSizesExtensionProvider {
11
11
  getExtension(extensionManager, designerCanvas, designItem) {
12
12
  return new EditGridColumnRowSizesExtension(extensionManager, designerCanvas, designItem);
13
13
  }
14
- style = css `
14
+ static style = css `
15
15
  .svg-grid-resizer-v { fill: transparent; cursor: ew-resize; pointer-events: all; }
16
16
  .svg-grid-resizer-v:hover { fill: #ff7f5052; }
17
17
  .svg-grid-resizer-h { fill: transparent; cursor: ns-resize; pointer-events: all; }
@@ -3,10 +3,8 @@ import { IDesignerCanvas } from "../../IDesignerCanvas.js";
3
3
  import { AbstractExtension } from "../AbstractExtension.js";
4
4
  import { IExtensionManager } from "../IExtensionManger.js";
5
5
  export declare class GridChildResizeExtension extends AbstractExtension {
6
- private _initialSizes;
7
6
  private _actionModeStarted;
8
7
  private _initialPoint;
9
- private _offsetPoint;
10
8
  private _circle1;
11
9
  private _circle2;
12
10
  private _circle3;
@@ -17,11 +15,11 @@ export declare class GridChildResizeExtension extends AbstractExtension {
17
15
  private _circle8;
18
16
  private _initialComputedTransformOrigins;
19
17
  private _initialTransformOrigins;
18
+ private _styleBackup;
20
19
  constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, extendedItem: IDesignItem);
21
20
  extend(cache: Record<string | symbol, any>, event?: Event): void;
22
21
  refresh(cache: Record<string | symbol, any>, event?: Event): void;
23
22
  _drawResizerOverlay(x: number, y: number, cursor: string, oldCircle?: SVGCircleElement): SVGCircleElement;
24
23
  _pointerActionTypeResize(circle: SVGCircleElement, event: PointerEvent, actionMode: string): void;
25
- private prepareResize;
26
24
  dispose(): void;
27
25
  }
@@ -1,15 +1,10 @@
1
1
  import { EventNames } from "../../../../../enums/EventNames.js";
2
- import { getContentBoxContentOffsets } from "../../../../helper/ElementHelper.js";
3
2
  import { calculateGridInformation } from "../../../../helper/GridHelper.js";
4
- import { roundValue } from "../../../../helper/LayoutHelper.js";
5
- import { getDesignerCanvasNormalizedTransformedCornerDOMPoints, getElementCombinedTransform, transformPointByInverseMatrix, normalizeToAbsolutePosition } from "../../../../helper/TransformHelper.js";
3
+ import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "../../../../helper/TransformHelper.js";
6
4
  import { AbstractExtension } from "../AbstractExtension.js";
7
- // also when elment aligned to bottom, will it later also be?
8
5
  export class GridChildResizeExtension extends AbstractExtension {
9
- _initialSizes;
10
6
  _actionModeStarted;
11
7
  _initialPoint;
12
- _offsetPoint;
13
8
  _circle1;
14
9
  _circle2;
15
10
  _circle3;
@@ -20,6 +15,7 @@ export class GridChildResizeExtension extends AbstractExtension {
20
15
  _circle8;
21
16
  _initialComputedTransformOrigins;
22
17
  _initialTransformOrigins;
18
+ _styleBackup;
23
19
  constructor(extensionManager, designerCanvas, extendedItem) {
24
20
  super(extensionManager, designerCanvas, extendedItem);
25
21
  }
@@ -61,47 +57,19 @@ export class GridChildResizeExtension extends AbstractExtension {
61
57
  const currentPoint = this.designerCanvas.getNormalizedEventCoordinates(event);
62
58
  switch (event.type) {
63
59
  case EventNames.PointerDown:
64
- const cx = parseFloat(circle.getAttribute('cx'));
65
- const cy = parseFloat(circle.getAttribute('cy'));
66
- this._offsetPoint = { x: cx - currentPoint.x, y: cy - currentPoint.y };
60
+ this._styleBackup = this.extendedItem.element.getAttribute('style');
67
61
  event.target.setPointerCapture(event.pointerId);
68
62
  this._initialPoint = currentPoint;
69
- this._initialSizes = [];
70
63
  this._actionModeStarted = actionMode;
71
64
  this._initialComputedTransformOrigins = [];
72
65
  this._initialTransformOrigins = [];
73
- //#region Calc elements' dimension
74
- const transformBackup = this.extendedItem.element.style.transform;
75
- this.extendedItem.element.style.transform = '';
76
- let rect = this.extendedItem.element.getBoundingClientRect();
77
- this.extendedItem.element.style.transform = transformBackup;
78
- //#endregion Calc element's dimension
79
- let contentBoxOffset = { x: 0, y: 0 };
80
- if (getComputedStyle(this.extendedItem.element).boxSizing == 'content-box') {
81
- contentBoxOffset = getContentBoxContentOffsets(this.extendedItem.element);
82
- }
83
- this._initialSizes.push({ width: (rect.width - contentBoxOffset.x * this.designerCanvas.scaleFactor) / this.designerCanvas.scaleFactor, height: (rect.height - contentBoxOffset.y * this.designerCanvas.scaleFactor) / this.designerCanvas.scaleFactor });
84
66
  const toArr = getComputedStyle(this.extendedItem.element).transformOrigin.split(' ').map(x => parseFloat(x.replace('px', '')));
85
67
  const transformOrigin = new DOMPoint(toArr[0], toArr[1]);
86
68
  this._initialComputedTransformOrigins.push(transformOrigin);
87
69
  this._initialTransformOrigins.push(this.extendedItem.element.style.transformOrigin);
88
- this.prepareResize(this.extendedItem, this._actionModeStarted);
89
70
  break;
90
71
  case EventNames.PointerMove:
91
72
  if (this._initialPoint) {
92
- const containerStyle = getComputedStyle(this.extendedItem.parent.element);
93
- const containerService = this.designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.extendedItem.parent, containerStyle));
94
- const diff = containerService.placePoint(event, this.designerCanvas, this.extendedItem.parent, this._initialPoint, { x: 0, y: 0 }, currentPoint, this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);
95
- let trackX = Math.round(diff.x - this._initialPoint.x - this._offsetPoint.x);
96
- let trackY = Math.round(diff.y - this._initialPoint.y - this._offsetPoint.y);
97
- let matrix = getElementCombinedTransform(this.extendedItem.element);
98
- let transformedTrack = transformPointByInverseMatrix(new DOMPoint(trackX, trackY, 0, 0), matrix);
99
- let deltaX = transformedTrack.x;
100
- let deltaY = transformedTrack.y;
101
- if (event.shiftKey) {
102
- deltaX = deltaX < deltaY ? deltaX : deltaY;
103
- deltaY = deltaX;
104
- }
105
73
  let posX = 0;
106
74
  let posY = 0;
107
75
  let cellX = 0;
@@ -164,105 +132,25 @@ export class GridChildResizeExtension extends AbstractExtension {
164
132
  break;
165
133
  case EventNames.PointerUp:
166
134
  event.target.releasePointerCapture(event.pointerId);
135
+ const cs = getComputedStyle(this.extendedItem.element);
136
+ const gridColumnStart = cs.gridColumnStart;
137
+ const gridColumnEnd = cs.gridColumnEnd;
138
+ const gridRowStart = cs.gridRowStart;
139
+ const gridRowEnd = cs.gridRowEnd;
140
+ if (this._styleBackup)
141
+ this.extendedItem.element.setAttribute('style', this._styleBackup);
142
+ else
143
+ this.extendedItem.element.removeAttribute('style');
167
144
  let cg = this.extendedItem.openGroup("Resize &lt;" + this.extendedItem.name + "&gt;");
168
- this.extendedItem.setStyle('width', this.extendedItem.element.style.width);
169
- this.extendedItem.setStyle('height', this.extendedItem.element.style.height);
170
- this.extendedItem.setStyle('left', roundValue(this.extendedItem, parseFloat(normalizeToAbsolutePosition(this.extendedItem.element, 'left'))) + 'px');
171
- this.extendedItem.setStyle('top', roundValue(this.extendedItem, parseFloat(normalizeToAbsolutePosition(this.extendedItem.element, 'top'))) + 'px');
172
- let p3Abs = new DOMPoint(this.extendedItem.element.offsetLeft + parseFloat(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[0].replace('px', '')), this.extendedItem.element.offsetTop + parseFloat(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[1].replace('px', '')));
173
- this.extendedItem.element.style.transformOrigin = this._initialTransformOrigins[0];
174
- let p1Abs = new DOMPoint(this.extendedItem.element.offsetLeft + parseFloat(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[0].replace('px', '')), this.extendedItem.element.offsetTop + parseFloat(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[1].replace('px', '')));
175
- let p1 = new DOMPoint(p1Abs.x - p3Abs.x, -(p1Abs.y - p3Abs.y));
176
- let matrix = new DOMMatrix(getComputedStyle(this.extendedItem.element).transform);
177
- let deltaX = 0;
178
- let deltaY = 0;
179
- let p1transformed = transformPointByInverseMatrix(p1, matrix);
180
- let p2Abs = new DOMPoint(p3Abs.x + p1transformed.x, p3Abs.y - p1transformed.y);
181
- let p1p2 = new DOMPoint(p2Abs.x - p1Abs.x, -(p2Abs.y - p1Abs.y));
182
- let p1p2transformed = p1p2.matrixTransform(matrix);
183
- let p4Abs = new DOMPoint(p1Abs.x + p1p2transformed.x, p1Abs.y - p1p2transformed.y);
184
- deltaX = p4Abs.x - p1Abs.x;
185
- deltaY = p4Abs.y - p1Abs.y;
186
- this.extendedItem.element.style.transform = matrix.translate(deltaX, deltaY).toString();
187
- if (matrix.isIdentity) {
188
- this.extendedItem.element.style.transform = '';
189
- }
190
- this.extendedItem.setStyle('transform', this.extendedItem.element.style.transform);
145
+ this.extendedItem.setStyle("gridColumnStart", gridColumnStart);
146
+ this.extendedItem.setStyle("gridColumnEnd", gridColumnEnd);
147
+ this.extendedItem.setStyle("gridRowStart", gridRowStart);
148
+ this.extendedItem.setStyle("gridRowEnd", gridRowEnd);
191
149
  cg.commit();
192
- this._initialSizes = null;
193
150
  this._initialPoint = null;
194
151
  break;
195
152
  }
196
153
  }
197
- prepareResize(designItem, mode) {
198
- let i = 0;
199
- let top = null;
200
- let bottom = null;
201
- let left = null;
202
- let right = null;
203
- switch (this._actionModeStarted) {
204
- case 'e-resize':
205
- left = getComputedStyle(designItem.element).left;
206
- designItem.element.style.removeProperty('right');
207
- designItem.element.style.left = left;
208
- designItem.element.style.transformOrigin = this._initialComputedTransformOrigins[i].x + 'px ' + this._initialComputedTransformOrigins[i].y + 'px';
209
- break;
210
- case 'se-resize':
211
- top = getComputedStyle(designItem.element).top;
212
- designItem.element.style.removeProperty('bottom');
213
- designItem.element.style.top = top;
214
- left = getComputedStyle(designItem.element).left;
215
- designItem.element.style.removeProperty('right');
216
- designItem.element.style.left = left;
217
- designItem.element.style.transformOrigin = this._initialComputedTransformOrigins[i].x + 'px ' + this._initialComputedTransformOrigins[i].y + 'px';
218
- break;
219
- case 's-resize':
220
- top = getComputedStyle(designItem.element).top;
221
- designItem.element.style.removeProperty('bottom');
222
- designItem.element.style.top = top;
223
- designItem.element.style.transformOrigin = this._initialComputedTransformOrigins[i].x + 'px ' + this._initialComputedTransformOrigins[i].y + 'px';
224
- break;
225
- case 'sw-resize':
226
- top = getComputedStyle(designItem.element).top;
227
- designItem.element.style.removeProperty('bottom');
228
- designItem.element.style.top = top;
229
- right = getComputedStyle(designItem.element).right;
230
- designItem.element.style.removeProperty('left');
231
- designItem.element.style.right = right;
232
- designItem.element.style.transformOrigin = 'calc(100% - ' + this._initialComputedTransformOrigins[i].x + 'px) ' + this._initialComputedTransformOrigins[i].y + 'px';
233
- break;
234
- case 'w-resize':
235
- right = getComputedStyle(designItem.element).right;
236
- designItem.element.style.removeProperty('left');
237
- designItem.element.style.right = right;
238
- designItem.element.style.transformOrigin = 'calc(100% - ' + this._initialComputedTransformOrigins[i].x + 'px) ' + this._initialComputedTransformOrigins[i].y + 'px';
239
- break;
240
- case 'nw-resize':
241
- bottom = getComputedStyle(designItem.element).bottom;
242
- designItem.element.style.removeProperty('top');
243
- designItem.element.style.bottom = bottom;
244
- right = getComputedStyle(designItem.element).right;
245
- designItem.element.style.removeProperty('left');
246
- designItem.element.style.right = right;
247
- designItem.element.style.transformOrigin = 'calc(100% - ' + this._initialComputedTransformOrigins[i].x + 'px) ' + 'calc(100% - ' + this._initialComputedTransformOrigins[i].y + 'px)';
248
- break;
249
- case 'n-resize':
250
- bottom = getComputedStyle(designItem.element).bottom;
251
- designItem.element.style.removeProperty('top');
252
- designItem.element.style.bottom = bottom;
253
- designItem.element.style.transformOrigin = 'calc(100% - ' + this._initialComputedTransformOrigins[i].x + 'px) ' + 'calc(100% - ' + this._initialComputedTransformOrigins[i].y + 'px)';
254
- break;
255
- case 'ne-resize':
256
- bottom = getComputedStyle(designItem.element).bottom;
257
- designItem.element.style.removeProperty('top');
258
- designItem.element.style.bottom = bottom;
259
- left = getComputedStyle(designItem.element).left;
260
- designItem.element.style.removeProperty('right');
261
- designItem.element.style.left = left;
262
- designItem.element.style.transformOrigin = this._initialComputedTransformOrigins[i].x + 'px ' + 'calc(100% - ' + this._initialComputedTransformOrigins[i].y + 'px)';
263
- break;
264
- }
265
- }
266
154
  dispose() {
267
155
  this._removeAllOverlays();
268
156
  }
@@ -6,5 +6,5 @@ import { IExtensionManager } from "../IExtensionManger.js";
6
6
  export declare class GridChildResizeExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
- readonly style: CSSStyleSheet;
9
+ static readonly style: CSSStyleSheet;
10
10
  }
@@ -3,14 +3,14 @@ import { NodeType } from "../../../../item/NodeType.js";
3
3
  import { GridChildResizeExtension } from "./GridChildResizeExtension.js";
4
4
  export class GridChildResizeExtensionProvider {
5
5
  shouldExtend(extensionManager, designerView, designItem) {
6
- if (designItem.nodeType === NodeType.Element && getComputedStyle(designItem.parent.element).display === 'grid')
6
+ if (designItem.nodeType === NodeType.Element && designItem.parent?.nodeType === NodeType.Element && getComputedStyle(designItem.parent.element).display === 'grid')
7
7
  return true;
8
8
  return false;
9
9
  }
10
10
  getExtension(extensionManager, designerView, designItem) {
11
11
  return new GridChildResizeExtension(extensionManager, designerView, designItem);
12
12
  }
13
- style = css `
13
+ static style = css `
14
14
  .svg-grid-resizer { stroke: #3899ec; fill: white; pointer-events: all }
15
15
  `;
16
16
  }
@@ -7,6 +7,7 @@ export declare class ApplyFirstMachingExtensionProvider implements IDesignerExte
7
7
  private extensions;
8
8
  private extIndex;
9
9
  style: CSSStyleSheet[];
10
+ svgDefs: string[];
10
11
  constructor(...extensions: IDesignerExtensionProvider[]);
11
12
  shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
12
13
  getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
@@ -2,6 +2,7 @@ export class ApplyFirstMachingExtensionProvider {
2
2
  extensions;
3
3
  extIndex;
4
4
  style;
5
+ svgDefs;
5
6
  constructor(...extensions) {
6
7
  this.extensions = extensions;
7
8
  for (let e of extensions) {
@@ -13,6 +14,30 @@ export class ApplyFirstMachingExtensionProvider {
13
14
  else
14
15
  this.style.push(e.style);
15
16
  }
17
+ if (e.constructor.style) {
18
+ if (!this.style)
19
+ this.style = [];
20
+ if (Array.isArray(e.constructor.style))
21
+ this.style.push(...e.constructor.style);
22
+ else
23
+ this.style.push(e.constructor.style);
24
+ }
25
+ if (e.svgDefs) {
26
+ if (!this.svgDefs)
27
+ this.svgDefs = [];
28
+ if (Array.isArray(e.svgDefs))
29
+ this.svgDefs.push(...e.svgDefs);
30
+ else
31
+ this.svgDefs.push(e.svgDefs);
32
+ }
33
+ if (e.constructor.svgDefs) {
34
+ if (!this.svgDefs)
35
+ this.svgDefs = [];
36
+ if (Array.isArray(e.constructor.svgDefs))
37
+ this.svgDefs.push(...e.svgDefs);
38
+ else
39
+ this.svgDefs.push(e.constructor.svgDefs);
40
+ }
16
41
  }
17
42
  }
18
43
  shouldExtend(extensionManager, designerCanvas, designItem) {
@@ -8,6 +8,7 @@ export declare class ConditionExtensionProvider implements IDesignerExtensionPro
8
8
  extensionProvider: IDesignerExtensionProvider;
9
9
  condition: (designItem: IDesignItem) => boolean;
10
10
  style: CSSStyleSheet;
11
+ svgDefs: string;
11
12
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
12
13
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
13
14
  }
@@ -2,11 +2,13 @@ export class ConditionExtensionProvider {
2
2
  constructor(extensionProvider, condition) {
3
3
  this.extensionProvider = extensionProvider;
4
4
  this.condition = condition;
5
- this.style = extensionProvider.style;
5
+ this.style = extensionProvider.style ?? extensionProvider.constructor.style;
6
+ this.svgDefs = extensionProvider.svgDefs ?? extensionProvider.constructor.svgDefs;
6
7
  }
7
8
  extensionProvider;
8
9
  condition;
9
10
  style;
11
+ svgDefs;
10
12
  shouldExtend(extensionManager, designerView, designItem) {
11
13
  if (!this.condition(designItem))
12
14
  return false;
@@ -63,17 +63,47 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
63
63
  const alreadyApplied = new Set();
64
64
  for (const extList of this._serviceContainer.designerExtensions) {
65
65
  for (const ext of extList[1]) {
66
+ if (ext.constructor.style) {
67
+ if (Array.isArray(ext.constructor.style)) {
68
+ for (const s of ext.constructor.style) {
69
+ if (!alreadyApplied.has(s)) {
70
+ alreadyApplied.add(s);
71
+ styles.push(s);
72
+ }
73
+ }
74
+ }
75
+ else if (!alreadyApplied.has(ext.constructor.style)) {
76
+ alreadyApplied.add(ext.constructor.style);
77
+ styles.push(ext.constructor.style);
78
+ }
79
+ }
66
80
  if (ext.style) {
67
- if (!alreadyApplied.has(ext.style)) {
81
+ if (Array.isArray(ext.style)) {
82
+ for (const s of ext.style) {
83
+ if (!alreadyApplied.has(s)) {
84
+ alreadyApplied.add(s);
85
+ styles.push(s);
86
+ }
87
+ }
88
+ }
89
+ else if (!alreadyApplied.has(ext.style)) {
68
90
  alreadyApplied.add(ext.style);
69
- if (Array.isArray(ext.style))
70
- styles.push(...ext.style);
71
- else
72
- styles.push(ext.style);
91
+ styles.push(ext.style);
73
92
  }
74
93
  }
75
94
  if (ext.svgDefs) {
76
- if (!alreadyApplied.has(ext.svgDefs)) {
95
+ if (Array.isArray(ext.svgDefs)) {
96
+ for (const s of ext.svgDefs) {
97
+ if (!alreadyApplied.has(s)) {
98
+ alreadyApplied.add(s);
99
+ const a = document.createElementNS("http://www.w3.org/2000/svg", "defs");
100
+ a.innerHTML = s;
101
+ for (let n of [...a.children])
102
+ this._defs.appendChild(n);
103
+ }
104
+ }
105
+ }
106
+ else if (!alreadyApplied.has(ext.svgDefs)) {
77
107
  alreadyApplied.add(ext.svgDefs);
78
108
  const a = document.createElementNS("http://www.w3.org/2000/svg", "defs");
79
109
  a.innerHTML = ext.svgDefs;
@@ -81,6 +111,26 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
81
111
  this._defs.appendChild(n);
82
112
  }
83
113
  }
114
+ if (ext.constructor.svgDefs) {
115
+ if (Array.isArray(ext.constructor.svgDefs)) {
116
+ for (const s of ext.constructor.svgDefs) {
117
+ if (!alreadyApplied.has(s)) {
118
+ alreadyApplied.add(s);
119
+ const a = document.createElementNS("http://www.w3.org/2000/svg", "defs");
120
+ a.innerHTML = s;
121
+ for (let n of [...a.children])
122
+ this._defs.appendChild(n);
123
+ }
124
+ }
125
+ }
126
+ else if (!alreadyApplied.has(ext.constructor.svgDefs)) {
127
+ alreadyApplied.add(ext.constructor.svgDefs);
128
+ const a = document.createElementNS("http://www.w3.org/2000/svg", "defs");
129
+ a.innerHTML = ext.constructor.svgDefs;
130
+ for (let n of [...a.children])
131
+ this._defs.appendChild(n);
132
+ }
133
+ }
84
134
  }
85
135
  }
86
136
  for (const ext of this._serviceContainer.designerPointerExtensions) {
@@ -7,5 +7,6 @@ declare global {
7
7
  }
8
8
  interface Function {
9
9
  style: CSSStyleSheet;
10
+ svgDefs: string;
10
11
  }
11
12
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A WYSIWYG designer webcomponent for html components",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.1.131",
4
+ "version": "0.1.132",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "jochen.kuehner@gmx.de",