@node-projects/web-component-designer 0.1.128 → 0.1.129

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.
@@ -12,7 +12,7 @@ import { Lit2PropertiesService } from './propertiesService/services/Lit2Properti
12
12
  import { ExtensionType } from '../widgets/designerView/extensions/ExtensionType.js';
13
13
  import { ElementDragTitleExtensionProvider } from '../widgets/designerView/extensions/ElementDragTitleExtensionProvider.js';
14
14
  import { TransformOriginExtensionProvider } from '../widgets/designerView/extensions/TransformOriginExtensionProvider.js';
15
- import { CanvasExtensionProvider } from '../widgets/designerView/extensions/CanvasExtensionProvider.js';
15
+ import { MarginExtensionProvider } from '../widgets/designerView/extensions/MarginExtensionProvider.js';
16
16
  import { PositionExtensionProvider } from '../widgets/designerView/extensions/PositionExtensionProvider.js';
17
17
  import { HighlightElementExtensionProvider } from '../widgets/designerView/extensions/HighlightElementExtensionProvider.js';
18
18
  import { NamedTools } from '../widgets/designerView/tools/NamedTools.js';
@@ -91,6 +91,7 @@ import { BlockToolbarExtensionProvider } from '../widgets/designerView/extension
91
91
  import { ChildContextMenu } from '../widgets/designerView/extensions/contextMenu/ChildContextMenu.js';
92
92
  import { GridChildToolbarExtensionProvider } from '../widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.js';
93
93
  import { ToolbarExtensionsDesignViewConfigButtons } from '../widgets/designerView/extensions/buttons/ToolbarExtensionsDesignViewConfigButtons.js';
94
+ import { PaddingExtensionProvider } from '../widgets/designerView/extensions/PaddingExtensionProvider.js';
94
95
  export function createDefaultServiceContainer() {
95
96
  let serviceContainer = new ServiceContainer();
96
97
  let defaultPlacementService = new DefaultPlacementService();
@@ -127,7 +128,8 @@ export function createDefaultServiceContainer() {
127
128
  serviceContainer.designerExtensions.set(ExtensionType.PrimarySelection, [
128
129
  new ConditionExtensionProvider(new ElementDragTitleExtensionProvider(), item => !(item.node instanceof SVGElement) || item.node instanceof SVGSVGElement),
129
130
  new TransformOriginExtensionProvider(true),
130
- new CanvasExtensionProvider(),
131
+ new MarginExtensionProvider(),
132
+ new PaddingExtensionProvider(),
131
133
  new PositionExtensionProvider(),
132
134
  new SvgElementExtensionProvider(),
133
135
  new ResizeExtensionProvider(true),
@@ -164,10 +164,12 @@ export class AbstractPropertiesService {
164
164
  if (!bindings) {
165
165
  const services = designItem.serviceContainer.getServices('bindingService');
166
166
  bindings = [];
167
- for (const s of services) {
168
- const bs = s.getBindings(designItem);
169
- if (bs && bs.length > 0) {
170
- bindings.push(...bs);
167
+ if (services) {
168
+ for (const s of services) {
169
+ const bs = s.getBindings(designItem);
170
+ if (bs && bs.length > 0) {
171
+ bindings.push(...bs);
172
+ }
171
173
  }
172
174
  }
173
175
  AbstractPropertiesService._bindingsCache.set(designItem, bindings);
@@ -0,0 +1,10 @@
1
+ import { IDesignItem } from '../../../item/IDesignItem.js';
2
+ import { IDesignerCanvas } from '../IDesignerCanvas.js';
3
+ import { AbstractExtension } from './AbstractExtension.js';
4
+ import { IExtensionManager } from './IExtensionManger.js';
5
+ export declare class MarginExtension extends AbstractExtension {
6
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
7
+ extend(): void;
8
+ refresh(): void;
9
+ dispose(): void;
10
+ }
@@ -0,0 +1,32 @@
1
+ import { AbstractExtension } from './AbstractExtension.js';
2
+ import { OverlayLayer } from './OverlayLayer.js';
3
+ export class MarginExtension extends AbstractExtension {
4
+ constructor(extensionManager, designerView, extendedItem) {
5
+ super(extensionManager, designerView, extendedItem);
6
+ }
7
+ extend() {
8
+ this.refresh();
9
+ }
10
+ refresh() {
11
+ const itemRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
12
+ const computedStyle = getComputedStyle(this.extendedItem.element);
13
+ if (computedStyle.margin !== '0px') {
14
+ const left = Number.parseFloat(computedStyle.marginLeft.replace('px', ''));
15
+ const top = Number.parseFloat(computedStyle.marginTop.replace('px', ''));
16
+ const right = Number.parseFloat(computedStyle.marginRight.replace('px', ''));
17
+ const bottom = Number.parseFloat(computedStyle.marginBottom.replace('px', ''));
18
+ if (!isNaN(left) && !isNaN(top) && !isNaN(right) && !isNaN(bottom)) {
19
+ if (this._valuesHaveChanges(left, top, right, bottom, itemRect.x, itemRect.y, itemRect.width, itemRect.height)) {
20
+ this._removeAllOverlays();
21
+ this._drawRect(itemRect.x - left, itemRect.y - top, left + itemRect.width + right, top, 'svg-margin', null, OverlayLayer.Background);
22
+ this._drawRect(itemRect.x - left, itemRect.y, left, itemRect.height, 'svg-margin', null, OverlayLayer.Background);
23
+ this._drawRect(itemRect.x + itemRect.width, itemRect.y, right, itemRect.height, 'svg-margin', null, OverlayLayer.Background);
24
+ this._drawRect(itemRect.x - left, itemRect.y + itemRect.height, left + itemRect.width + right, bottom, 'svg-margin', null, OverlayLayer.Background);
25
+ }
26
+ }
27
+ }
28
+ }
29
+ dispose() {
30
+ this._removeAllOverlays();
31
+ }
32
+ }
@@ -0,0 +1,10 @@
1
+ import { IDesignerExtensionProvider } from './IDesignerExtensionProvider.js';
2
+ import { IDesignItem } from '../../../item/IDesignItem.js';
3
+ import { IDesignerCanvas } from '../IDesignerCanvas.js';
4
+ import { IDesignerExtension } from './IDesignerExtension.js';
5
+ import { IExtensionManager } from './IExtensionManger.js';
6
+ export declare class MarginExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ readonly style: CSSStyleSheet;
10
+ }
@@ -0,0 +1,16 @@
1
+ import { MarginExtension } from './MarginExtension.js';
2
+ import { css } from "@node-projects/base-custom-webcomponent";
3
+ import { NodeType } from '../../../item/NodeType.js';
4
+ export class MarginExtensionProvider {
5
+ shouldExtend(extensionManager, designerView, designItem) {
6
+ if (designItem.nodeType == NodeType.Element)
7
+ return true;
8
+ return false;
9
+ }
10
+ getExtension(extensionManager, designerView, designItem) {
11
+ return new MarginExtension(extensionManager, designerView, designItem);
12
+ }
13
+ style = css `
14
+ .svg-margin { fill: #ff944766; }
15
+ `;
16
+ }
@@ -0,0 +1,10 @@
1
+ import { IDesignItem } from '../../../item/IDesignItem.js';
2
+ import { IDesignerCanvas } from '../IDesignerCanvas.js';
3
+ import { AbstractExtension } from './AbstractExtension.js';
4
+ import { IExtensionManager } from './IExtensionManger.js';
5
+ export declare class PaddingExtension extends AbstractExtension {
6
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
7
+ extend(): void;
8
+ refresh(): void;
9
+ dispose(): void;
10
+ }
@@ -0,0 +1,36 @@
1
+ import { AbstractExtension } from './AbstractExtension.js';
2
+ import { OverlayLayer } from './OverlayLayer.js';
3
+ export class PaddingExtension extends AbstractExtension {
4
+ constructor(extensionManager, designerView, extendedItem) {
5
+ super(extensionManager, designerView, extendedItem);
6
+ }
7
+ extend() {
8
+ this.refresh();
9
+ }
10
+ refresh() {
11
+ const itemRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
12
+ const computedStyle = getComputedStyle(this.extendedItem.element);
13
+ if (computedStyle.margin !== '0px') {
14
+ const left = Number.parseFloat(computedStyle.paddingLeft.replace('px', ''));
15
+ const top = Number.parseFloat(computedStyle.paddingTop.replace('px', ''));
16
+ const right = Number.parseFloat(computedStyle.paddingRight.replace('px', ''));
17
+ const bottom = Number.parseFloat(computedStyle.paddingBottom.replace('px', ''));
18
+ const bleft = Number.parseFloat(computedStyle.borderLeftWidth.replace('px', ''));
19
+ const btop = Number.parseFloat(computedStyle.borderTopWidth.replace('px', ''));
20
+ const bright = Number.parseFloat(computedStyle.borderRightWidth.replace('px', ''));
21
+ const bbottom = Number.parseFloat(computedStyle.borderBottomWidth.replace('px', ''));
22
+ if (!isNaN(left) && !isNaN(top) && !isNaN(right) && !isNaN(bottom)) {
23
+ if (this._valuesHaveChanges(left, top, right, bottom, bleft, btop, bright, bbottom, itemRect.x, itemRect.y, itemRect.width, itemRect.height)) {
24
+ this._removeAllOverlays();
25
+ this._drawRect(itemRect.x + bleft + left, itemRect.y + btop, itemRect.width - left - right - bleft - bright, top, 'svg-padding', null, OverlayLayer.Background);
26
+ this._drawRect(itemRect.x + bleft, itemRect.y + btop, left, itemRect.height - btop - bbottom, 'svg-padding', null, OverlayLayer.Background);
27
+ this._drawRect(itemRect.x + bleft + left, itemRect.y + itemRect.height - bottom - bbottom, itemRect.width - left - right - bleft - bright, bottom, 'svg-padding', null, OverlayLayer.Background);
28
+ this._drawRect(itemRect.x + itemRect.width - right - bright, itemRect.y + btop, right, itemRect.height - btop - bbottom, 'svg-padding', null, OverlayLayer.Background);
29
+ }
30
+ }
31
+ }
32
+ }
33
+ dispose() {
34
+ this._removeAllOverlays();
35
+ }
36
+ }
@@ -0,0 +1,10 @@
1
+ import { IDesignerExtensionProvider } from './IDesignerExtensionProvider.js';
2
+ import { IDesignItem } from '../../../item/IDesignItem.js';
3
+ import { IDesignerCanvas } from '../IDesignerCanvas.js';
4
+ import { IDesignerExtension } from './IDesignerExtension.js';
5
+ import { IExtensionManager } from './IExtensionManger.js';
6
+ export declare class PaddingExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ readonly style: CSSStyleSheet;
10
+ }
@@ -0,0 +1,16 @@
1
+ import { css } from "@node-projects/base-custom-webcomponent";
2
+ import { NodeType } from '../../../item/NodeType.js';
3
+ import { PaddingExtension } from './PaddingExtension.js';
4
+ export class PaddingExtensionProvider {
5
+ shouldExtend(extensionManager, designerView, designItem) {
6
+ if (designItem.nodeType == NodeType.Element)
7
+ return true;
8
+ return false;
9
+ }
10
+ getExtension(extensionManager, designerView, designItem) {
11
+ return new PaddingExtension(extensionManager, designerView, designItem);
12
+ }
13
+ style = css `
14
+ .svg-padding { fill: #32cd3266; }
15
+ `;
16
+ }
package/dist/index.d.ts CHANGED
@@ -204,8 +204,10 @@ export * from "./elements/widgets/designerView/extensions/ExtensionType.js";
204
204
  export * from "./elements/widgets/designerView/extensions/AbstractExtension.js";
205
205
  export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExtension.js";
206
206
  export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js";
207
- export * from "./elements/widgets/designerView/extensions/CanvasExtension.js";
208
- export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvider.js";
207
+ export * from "./elements/widgets/designerView/extensions/MarginExtension.js";
208
+ export * from "./elements/widgets/designerView/extensions/MarginExtensionProvider.js";
209
+ export * from "./elements/widgets/designerView/extensions/PaddingExtension.js";
210
+ export * from "./elements/widgets/designerView/extensions/PaddingExtensionProvider.js";
209
211
  export * from "./elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js";
210
212
  export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
211
213
  export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
package/dist/index.js CHANGED
@@ -145,8 +145,10 @@ export * from "./elements/widgets/designerView/extensions/ExtensionType.js";
145
145
  export * from "./elements/widgets/designerView/extensions/AbstractExtension.js";
146
146
  export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExtension.js";
147
147
  export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js";
148
- export * from "./elements/widgets/designerView/extensions/CanvasExtension.js";
149
- export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvider.js";
148
+ export * from "./elements/widgets/designerView/extensions/MarginExtension.js";
149
+ export * from "./elements/widgets/designerView/extensions/MarginExtensionProvider.js";
150
+ export * from "./elements/widgets/designerView/extensions/PaddingExtension.js";
151
+ export * from "./elements/widgets/designerView/extensions/PaddingExtensionProvider.js";
150
152
  export * from "./elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js";
151
153
  export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
152
154
  export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
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.128",
4
+ "version": "0.1.129",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "jochen.kuehner@gmx.de",