@node-projects/web-component-designer 0.0.50 → 0.0.54

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 (96) hide show
  1. package/dist/elements/helper/LayoutHelper.d.ts +3 -0
  2. package/dist/elements/helper/LayoutHelper.js +52 -1
  3. package/dist/elements/helper/TransformHelper.d.ts +1 -0
  4. package/dist/elements/helper/TransformHelper.js +12 -0
  5. package/dist/elements/item/IDesignItem.d.ts +2 -2
  6. package/dist/elements/services/placementService/DefaultPlacementService.js +16 -10
  7. package/dist/elements/services/placementService/FlexBoxPlacementService.js +15 -1
  8. package/package.json +1 -1
  9. package/dist/elements/controls/ImageButtonListSelector copy.d.ts +0 -17
  10. package/dist/elements/controls/ImageButtonListSelector copy.js +0 -82
  11. package/dist/elements/controls/NumericInput.d.ts +0 -0
  12. package/dist/elements/controls/NumericInput.js +0 -1
  13. package/dist/elements/controls/ThicknessEditor copy.d.ts +0 -33
  14. package/dist/elements/controls/ThicknessEditor copy.js +0 -145
  15. package/dist/elements/helper/CssPropertiesList.d.ts +0 -0
  16. package/dist/elements/helper/CssPropertiesList.js +0 -1
  17. package/dist/elements/item/Binding.d.ts +0 -14
  18. package/dist/elements/item/Binding.js +0 -4
  19. package/dist/elements/item/IBinding copy.d.ts +0 -14
  20. package/dist/elements/item/IBinding copy.js +0 -1
  21. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.d.ts +0 -9
  22. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.js +0 -31
  23. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService.d.ts +0 -11
  24. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService.js +0 -34
  25. package/dist/elements/services/bindingsService/BindingMode.d.ts +0 -4
  26. package/dist/elements/services/bindingsService/BindingMode.js +0 -5
  27. package/dist/elements/services/bindingsService/BindingTarget.d.ts +0 -6
  28. package/dist/elements/services/bindingsService/BindingTarget.js +0 -7
  29. package/dist/elements/services/bindingsService/IBinding.d.ts +0 -14
  30. package/dist/elements/services/bindingsService/IBinding.js +0 -1
  31. package/dist/elements/services/bindingsService/PolymerBindingsService copy.d.ts +0 -9
  32. package/dist/elements/services/bindingsService/PolymerBindingsService copy.js +0 -31
  33. package/dist/elements/services/bindingsService/PolymerBindingsService.d.ts +0 -0
  34. package/dist/elements/services/bindingsService/PolymerBindingsService.js +0 -38
  35. package/dist/elements/services/copyPasteService/ICopyPasteService copy.d.ts +0 -0
  36. package/dist/elements/services/copyPasteService/ICopyPasteService copy.js +0 -1
  37. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.BASE.d.ts +0 -9
  38. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.BASE.js +0 -100
  39. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.LOCAL.d.ts +0 -11
  40. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.LOCAL.js +0 -84
  41. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.REMOTE.d.ts +0 -9
  42. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.REMOTE.js +0 -83
  43. package/dist/elements/services/modelCommandService/DefaultInstanceService.d.ts +0 -8
  44. package/dist/elements/services/modelCommandService/DefaultInstanceService.js +0 -14
  45. package/dist/elements/services/modelCommandService/IInstanceService.d.ts +0 -8
  46. package/dist/elements/services/modelCommandService/IInstanceService.js +0 -1
  47. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor copy.d.ts +0 -8
  48. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor copy.js +0 -40
  49. package/dist/elements/services/propertiesService/services/CommonPropertiesService copy.d.ts +0 -16
  50. package/dist/elements/services/propertiesService/services/CommonPropertiesService copy.js +0 -94
  51. package/dist/elements/widgets/designerView/IDesignerView.d.ts +0 -30
  52. package/dist/elements/widgets/designerView/IDesignerView.js +0 -1
  53. package/dist/elements/widgets/designerView/designerView copy.d.ts +0 -82
  54. package/dist/elements/widgets/designerView/designerView copy.js +0 -671
  55. package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.d.ts +0 -22
  56. package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.js +0 -52
  57. package/dist/elements/widgets/designerView/extensions/CanvasExtension copy.d.ts +0 -10
  58. package/dist/elements/widgets/designerView/extensions/CanvasExtension copy.js +0 -29
  59. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider copy.d.ts +0 -10
  60. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider copy.js +0 -15
  61. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtension.d.ts +0 -14
  62. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtension.js +0 -42
  63. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtensionProvider.d.ts +0 -9
  64. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtensionProvider.js +0 -9
  65. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtension.d.ts +0 -27
  66. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtension.js +0 -61
  67. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtensionProvider.d.ts +0 -9
  68. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtensionProvider.js +0 -9
  69. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtension.d.ts +0 -10
  70. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtension.js +0 -29
  71. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtensionProvider copy.d.ts +0 -10
  72. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtensionProvider copy.js +0 -15
  73. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtensionProvider.d.ts +0 -10
  74. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtensionProvider.js +0 -15
  75. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractExtension.d.ts +0 -22
  76. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractExtension.js +0 -78
  77. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.d.ts +0 -13
  78. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.js +0 -27
  79. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectangleExtension.d.ts +0 -7
  80. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectangleExtension.js +0 -20
  81. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.d.ts +0 -13
  82. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.js +0 -27
  83. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension.d.ts +0 -7
  84. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension.js +0 -20
  85. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerExtension.d.ts +0 -5
  86. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerExtension.js +0 -1
  87. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerExtensionProvider.d.ts +0 -9
  88. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerExtensionProvider.js +0 -1
  89. package/dist/elements/widgets/designerView/extensions/pointerExtensions/RulerExtension.d.ts +0 -7
  90. package/dist/elements/widgets/designerView/extensions/pointerExtensions/RulerExtension.js +0 -20
  91. package/dist/elements/widgets/designerView/extensions/pointerExtensions/RulerPointerExtension.d.ts +0 -7
  92. package/dist/elements/widgets/designerView/extensions/pointerExtensions/RulerPointerExtension.js +0 -20
  93. package/dist/elements/widgets/propertyGrid/PropertyGrid copy.d.ts +0 -17
  94. package/dist/elements/widgets/propertyGrid/PropertyGrid copy.js +0 -143
  95. package/dist/interfaces/IDesignerMousePoint.d.ts +0 -11
  96. package/dist/interfaces/IDesignerMousePoint.js +0 -1
@@ -0,0 +1,3 @@
1
+ import { IPoint } from "../../interfaces/IPoint.js";
2
+ import { IDesignItem } from "../item/IDesignItem.js";
3
+ export declare function placeDesignItem(container: IDesignItem, designItem: IDesignItem, offset: IPoint, mode: 'position' | 'transform' | 'margin' | 'padding'): void;
@@ -1,4 +1,55 @@
1
- "use strict";
2
1
  //todo
3
2
  //this function should return the correct property to change a layout, for example left/right when left or right is used,
4
3
  //maybe margin on grid? or transform??
4
+ export function placeDesignItem(container, designItem, offset, mode) {
5
+ const movedElement = designItem.element;
6
+ const computedStyleMovedElement = getComputedStyle(movedElement);
7
+ if (mode === 'position') {
8
+ let positionedContainerElement = container.element;
9
+ let computedStylePositionedContainer = getComputedStyle(container.element);
10
+ while (computedStylePositionedContainer.position !== 'relative' && computedStylePositionedContainer.position !== 'absolute') {
11
+ positionedContainerElement = positionedContainerElement.parentElement;
12
+ computedStylePositionedContainer = getComputedStyle(positionedContainerElement);
13
+ }
14
+ let oldLeft = null;
15
+ let oldRight = null;
16
+ let oldTop = null;
17
+ let oldBottom = null;
18
+ let containerLeft = 0;
19
+ //@ts-ignore
20
+ let containerRight = 0;
21
+ let containerTop = 0;
22
+ //@ts-ignore
23
+ let containerBottom = 0;
24
+ let hasPositionedLayout = false;
25
+ if (computedStyleMovedElement.position === 'relative' || computedStyleMovedElement.position === 'absolute') {
26
+ oldLeft = parseFloat(movedElement.style.left);
27
+ oldLeft = Number.isNaN(oldLeft) ? null : oldLeft;
28
+ oldTop = parseFloat(movedElement.style.top);
29
+ oldTop = Number.isNaN(oldTop) ? null : oldTop;
30
+ oldRight = parseFloat(movedElement.style.right);
31
+ oldRight = Number.isNaN(oldRight) ? null : oldRight;
32
+ oldBottom = parseFloat(movedElement.style.bottom);
33
+ oldBottom = Number.isNaN(oldBottom) ? null : oldBottom;
34
+ hasPositionedLayout = true;
35
+ }
36
+ else {
37
+ if (positionedContainerElement !== container.element) {
38
+ let posContainerRect = positionedContainerElement.getBoundingClientRect();
39
+ let elementRect = designItem.element.getBoundingClientRect();
40
+ containerLeft = elementRect.left - posContainerRect.left;
41
+ containerRight = elementRect.right - posContainerRect.right;
42
+ containerTop = elementRect.top - posContainerRect.top;
43
+ containerBottom = elementRect.bottom - posContainerRect.bottom;
44
+ }
45
+ }
46
+ if (!hasPositionedLayout)
47
+ designItem.element.style.transform = designItem.styles.get('transform') ?? '';
48
+ designItem.setStyle('position', 'absolute');
49
+ designItem.setStyle('left', (offset.x + oldLeft + containerLeft) + "px");
50
+ designItem.setStyle('top', (offset.y + oldTop + containerTop) + "px");
51
+ }
52
+ }
53
+ /*function placeViaPosition(container: IDesignItem, designItem: IDesignItem, offset: IPoint, mode: 'position' | 'transform' | 'margin' | 'padding') {
54
+
55
+ }*/
@@ -0,0 +1 @@
1
+ export declare function combineTransforms(element: HTMLElement, transform1: string, transform2: string): void;
@@ -0,0 +1,12 @@
1
+ export function combineTransforms(element, transform1, transform2) {
2
+ if (transform1 == null || transform1 == '') {
3
+ element.style.transform = transform2;
4
+ return;
5
+ }
6
+ element.style.transform = transform1;
7
+ const matrix1 = new DOMMatrix(window.getComputedStyle(element).transform);
8
+ element.style.transform = transform2;
9
+ const matrix2 = new DOMMatrix(window.getComputedStyle(element).transform);
10
+ const result = matrix2.multiply(matrix1);
11
+ element.style.transform = result.toString();
12
+ }
@@ -35,8 +35,8 @@ export interface IDesignItem {
35
35
  appliedDesignerExtensions: Map<ExtensionType, IDesignerExtension[]>;
36
36
  getOrCreateDesignItem(node: Node): any;
37
37
  openGroup(title: string, affectedItems?: IDesignItem[]): ChangeGroup;
38
- setStyle(name: keyof CSSStyleDeclaration, value?: string | null): any;
39
- removeStyle(name: keyof CSSStyleDeclaration): any;
38
+ setStyle(name: string, value?: string | null): any;
39
+ removeStyle(name: string): any;
40
40
  setAttribute(name: string, value?: string | null): any;
41
41
  removeAttribute(name: string): any;
42
42
  hideAtDesignTime: boolean;
@@ -1,4 +1,6 @@
1
1
  import { DomConverter } from '../../widgets/designerView/DomConverter.js';
2
+ import { combineTransforms } from '../../helper/TransformHelper.js';
3
+ import { placeDesignItem } from '../../helper/LayoutHelper.js';
2
4
  export class DefaultPlacementService {
3
5
  serviceForContainer(container) {
4
6
  if (container.element.style.display === 'grid' || container.element.style.display === 'inline-grid' ||
@@ -78,14 +80,17 @@ export class DefaultPlacementService {
78
80
  let track = this.calculateTrack(event, placementView, startPoint, offsetInControl, newPoint, items[0]);
79
81
  //TODO: -> what is if a transform already exists -> backup existing style.?
80
82
  for (const designItem of items) {
81
- designItem.element.style.transform = 'translate(' + track.x + 'px, ' + track.y + 'px)';
83
+ const newTransform = 'translate(' + track.x + 'px, ' + track.y + 'px)';
84
+ combineTransforms(designItem.element, designItem.styles.get('transform'), newTransform);
82
85
  }
83
86
  }
84
87
  enterContainer(container, items) {
85
88
  for (let i of items) {
86
89
  if (i.lastContainerSize) {
87
- i.setStyle('width', i.lastContainerSize.width + 'px');
88
- i.setStyle('height', i.lastContainerSize.height + 'px');
90
+ if (!i.styles.has('width'))
91
+ i.setStyle('width', i.lastContainerSize.width + 'px');
92
+ if (!i.styles.has('height'))
93
+ i.setStyle('height', i.lastContainerSize.height + 'px');
89
94
  }
90
95
  }
91
96
  }
@@ -94,16 +99,17 @@ export class DefaultPlacementService {
94
99
  finishPlace(event, placementView, container, startPoint, offsetInControl, newPoint, items) {
95
100
  let track = this.calculateTrack(event, placementView, startPoint, offsetInControl, newPoint, items[0]);
96
101
  for (const designItem of items) {
97
- let movedElement = designItem.element;
98
- let oldLeft = parseFloat(movedElement.style.left);
102
+ /*let movedElement = designItem.element;
103
+ let oldLeft = parseFloat((<HTMLElement>movedElement).style.left);
99
104
  oldLeft = Number.isNaN(oldLeft) ? 0 : oldLeft;
100
- let oldTop = parseFloat(movedElement.style.top);
101
- oldTop = Number.isNaN(oldTop) ? 0 : oldTop;
105
+ let oldTop = parseFloat((<HTMLElement>movedElement).style.top);
106
+ oldTop = Number.isNaN(oldTop) ? 0 : oldTop;*/
102
107
  //let oldPosition = movedElement.style.position;
103
- designItem.element.style.transform = null;
104
- designItem.setStyle('position', 'absolute');
108
+ designItem.element.style.transform = designItem.styles.get('transform') ?? '';
109
+ placeDesignItem(container, designItem, track, 'position');
110
+ /*designItem.setStyle('position', 'absolute');
105
111
  designItem.setStyle('left', (track.x + oldLeft) + "px");
106
- designItem.setStyle('top', (track.y + oldTop) + "px");
112
+ designItem.setStyle('top', (track.y + oldTop) + "px");*/
107
113
  }
108
114
  }
109
115
  }
@@ -1,5 +1,12 @@
1
1
  export class FlexBoxPlacementService {
2
2
  enterContainer(container, items) {
3
+ for (let i of items) {
4
+ i.removeStyle("position");
5
+ i.removeStyle("left");
6
+ i.removeStyle("top");
7
+ i.removeStyle("right");
8
+ i.removeStyle("transform");
9
+ }
3
10
  }
4
11
  leaveContainer(container, items) {
5
12
  }
@@ -15,13 +22,20 @@ export class FlexBoxPlacementService {
15
22
  return true;
16
23
  }
17
24
  getElementOffset(container, designItem) {
18
- //TODO: offset could be bigger, when it was in a other cell???
19
25
  return container.element.getBoundingClientRect();
20
26
  }
21
27
  placePoint(event, placementView, container, startPoint, offsetInControl, newPoint, items) {
22
28
  return null;
23
29
  }
24
30
  place(event, placementView, container, startPoint, offsetInControl, newPoint, items) {
31
+ /*let direction = getComputedStyle(container.element).flexDirection;
32
+
33
+ const pos = (<IDesignerCanvas><unknown>placementView).getNormalizedEventCoordinates(event);
34
+ const posElement = (<IDesignerCanvas><unknown>placementView).getNormalizedElementCoordinates(items[0].element)
35
+
36
+ for (let e of container.element.children) {
37
+
38
+ }*/
25
39
  }
26
40
  finishPlace(event, placementView, container, startPoint, offsetInControl, newPoint, items) {
27
41
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A UI designer for Polymer apps",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.0.50",
4
+ "version": "0.0.54",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",
@@ -1,17 +0,0 @@
1
- import { BaseCustomWebComponentConstructorAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export declare type ImageButtonListSelectorValueChangedEventArgs = {
3
- newValue?: string;
4
- oldValue?: string;
5
- };
6
- export declare class ImageButtonListSelector extends BaseCustomWebComponentConstructorAppend {
7
- static readonly style: CSSStyleSheet;
8
- static readonly template: HTMLTemplateElement;
9
- private _value;
10
- get value(): string;
11
- set value(value: string);
12
- valueChanged: TypedEvent<ImageButtonListSelectorValueChangedEventArgs>;
13
- property: string;
14
- unsetValue: string;
15
- _updateValue(): void;
16
- ready(): void;
17
- }
@@ -1,82 +0,0 @@
1
- import { BaseCustomWebComponentConstructorAppend, css, html, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export class ImageButtonListSelector extends BaseCustomWebComponentConstructorAppend {
3
- constructor() {
4
- super(...arguments);
5
- this.valueChanged = new TypedEvent();
6
- }
7
- get value() {
8
- return this._value;
9
- }
10
- set value(value) {
11
- const oldValue = this._value;
12
- this._value = value;
13
- this._updateValue();
14
- this.valueChanged.emit({ newValue: this._value, oldValue: oldValue });
15
- }
16
- _updateValue() {
17
- if (this.value) {
18
- this._getDomElement('value').innerText = this.value;
19
- this._getDomElement('value').classList.add('value-set');
20
- }
21
- else {
22
- this._getDomElement('value').classList.remove('value-set');
23
- }
24
- const slot = this._getDomElement('slot');
25
- for (let e of slot.assignedElements()) {
26
- if (e.dataset.value == this.value)
27
- e.style.background = "cornflowerblue";
28
- else
29
- e.style.background = "";
30
- }
31
- }
32
- ready() {
33
- var _a, _b;
34
- this._parseAttributesToProperties();
35
- const slot = this._getDomElement('slot');
36
- slot.onclick = (e) => {
37
- const path = e.composedPath();
38
- for (let e of slot.assignedElements()) {
39
- if (path.indexOf(e) >= 0) {
40
- this.value = e.dataset.value;
41
- }
42
- }
43
- };
44
- this._getDomElement('property').innerText = (_a = this.property) !== null && _a !== void 0 ? _a : '';
45
- this._getDomElement('value').innerText = (_b = this.unsetValue) !== null && _b !== void 0 ? _b : '';
46
- this._updateValue();
47
- }
48
- }
49
- ImageButtonListSelector.style = css `
50
- div {
51
- font-size: 10px;
52
- color: white;
53
- }
54
- #property {
55
- color: #00aff0;
56
- }
57
- #value {
58
- color: lightgray;
59
- }
60
- #value.value-set {
61
- color: wheat;
62
- }
63
- .container {
64
- display: flex;
65
- flex-wrap: wrap;
66
- flex-direction: row;
67
- }
68
- ::slotted(button) {
69
- min-width: 24px;
70
- height: 24px;
71
- padding: 1px;
72
- background: white;
73
- border: 1px solid lightgray;
74
- }
75
- `;
76
- ImageButtonListSelector.template = html `
77
- <div>
78
- <div><span id="property"></span>: <span id="value"></span></div>
79
- <div class="container"><slot id="slot"></slot></div>
80
- </div>
81
- `;
82
- customElements.define('node-projects-image-button-list-selector', ImageButtonListSelector);
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,33 +0,0 @@
1
- import { BaseCustomWebComponentConstructorAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export declare type ThicknessEditorValueChangedEventArgs = {
3
- newValue?: string;
4
- oldValue?: string;
5
- };
6
- export declare class ThicknessEditor extends BaseCustomWebComponentConstructorAppend {
7
- static readonly style: CSSStyleSheet;
8
- static readonly template: HTMLTemplateElement;
9
- private _leftInput;
10
- private _topInput;
11
- private _rightInput;
12
- private _bottomInput;
13
- private _valueLeft;
14
- get valueLeft(): string;
15
- set valueLeft(value: string);
16
- valueLeftChanged: TypedEvent<ThicknessEditorValueChangedEventArgs>;
17
- private _valueTop;
18
- get valueTop(): string;
19
- set valueTop(value: string);
20
- valueTopChanged: TypedEvent<ThicknessEditorValueChangedEventArgs>;
21
- private _valueRight;
22
- get valueRight(): string;
23
- set valueRight(value: string);
24
- valueRightChanged: TypedEvent<ThicknessEditorValueChangedEventArgs>;
25
- private _valueBottom;
26
- get valueBottom(): string;
27
- set valueBottom(value: string);
28
- valueBottomChanged: TypedEvent<ThicknessEditorValueChangedEventArgs>;
29
- property: string;
30
- unsetValue: string;
31
- _updateValue(): void;
32
- ready(): void;
33
- }
@@ -1,145 +0,0 @@
1
- import { BaseCustomWebComponentConstructorAppend, css, html, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export class ThicknessEditor extends BaseCustomWebComponentConstructorAppend {
3
- static style = css `
4
- :host {
5
- margin: 4px;
6
- margin-left: auto;
7
- margin-right: auto;
8
- }
9
- #container {
10
- display: grid;
11
- grid-template-columns: minmax(30px, 40px) minmax(30px, 60px) minmax(30px, 40px);
12
- grid-template-rows: auto;
13
- grid-template-areas:
14
- " . top ."
15
- "left middle right"
16
- " . bottom .";
17
- column-gap: 2px;
18
- row-gap: 2px;
19
- }
20
- input {
21
- width: 20px;
22
- text-align: center;
23
- font-size: 10px;
24
- height: 20px;
25
- padding: 0;
26
- }
27
- #left {
28
- grid-area: left;
29
- justify-self: end;
30
- }
31
- #top {
32
- grid-area: top;
33
- align-self: end;
34
- justify-self: center;
35
- }
36
- #right {
37
- grid-area: right;
38
- justify-self: start;
39
- }
40
- #bottom {
41
- grid-area: bottom;
42
- align-self: start;
43
- justify-self: center;
44
- }
45
- #rect {
46
- grid-area: middle;
47
- border: 1px solid black;
48
- background: lightgray;
49
- }
50
- `;
51
- static template = html `
52
- <div id="container">
53
- <input id="left">
54
- <input id="top">
55
- <input id="right">
56
- <input id="bottom">
57
- <div id="rect"></div>
58
- </div>
59
- `;
60
- _leftInput;
61
- _topInput;
62
- _rightInput;
63
- _bottomInput;
64
- _valueLeft;
65
- get valueLeft() {
66
- return this._valueLeft;
67
- }
68
- set valueLeft(value) {
69
- const oldValue = this._valueLeft;
70
- this._valueLeft = value;
71
- if (oldValue !== value) {
72
- this._updateValue();
73
- this.valueLeftChanged.emit({ newValue: value, oldValue: oldValue });
74
- }
75
- }
76
- valueLeftChanged = new TypedEvent();
77
- _valueTop;
78
- get valueTop() {
79
- return this._valueTop;
80
- }
81
- set valueTop(value) {
82
- const oldValue = this._valueTop;
83
- this._valueTop = value;
84
- if (oldValue !== value) {
85
- this._updateValue();
86
- this.valueTopChanged.emit({ newValue: value, oldValue: oldValue });
87
- }
88
- }
89
- valueTopChanged = new TypedEvent();
90
- _valueRight;
91
- get valueRight() {
92
- return this._valueRight;
93
- }
94
- set valueRight(value) {
95
- const oldValue = this._valueRight;
96
- this._valueRight = value;
97
- if (oldValue !== value) {
98
- this._updateValue();
99
- this.valueRightChanged.emit({ newValue: value, oldValue: oldValue });
100
- }
101
- }
102
- valueRightChanged = new TypedEvent();
103
- _valueBottom;
104
- get valueBottom() {
105
- return this._valueBottom;
106
- }
107
- set valueBottom(value) {
108
- const oldValue = this._valueBottom;
109
- this._valueBottom = value;
110
- if (oldValue !== value) {
111
- this._updateValue();
112
- this.valueBottomChanged.emit({ newValue: value, oldValue: oldValue });
113
- }
114
- }
115
- valueBottomChanged = new TypedEvent();
116
- property;
117
- unsetValue;
118
- _updateValue() {
119
- this._leftInput.value = this.valueLeft;
120
- this._topInput.value = this.valueTop;
121
- this._rightInput.value = this.valueRight;
122
- this._bottomInput.value = this._valueBottom;
123
- }
124
- ready() {
125
- this._parseAttributesToProperties();
126
- this._leftInput = this._getDomElement('left');
127
- this._topInput = this._getDomElement('top');
128
- this._rightInput = this._getDomElement('right');
129
- this._bottomInput = this._getDomElement('bottom');
130
- this._leftInput.onkeyup = (e) => { if (e.key === 'Enter')
131
- this._valueLeft = this._leftInput.value; };
132
- this._topInput.onkeyup = (e) => { if (e.key === 'Enter')
133
- this._valueTop = this._topInput.value; };
134
- this._rightInput.onkeyup = (e) => { if (e.key === 'Enter')
135
- this._valueRight = this._rightInput.value; };
136
- this._bottomInput.onkeyup = (e) => { if (e.key === 'Enter')
137
- this._valueBottom = this._bottomInput.value; };
138
- this._leftInput.onblur = (e) => this._valueLeft = this._leftInput.value;
139
- this._topInput.onblur = (e) => this._valueTop = this._topInput.value;
140
- this._rightInput.onblur = (e) => this._valueRight = this._rightInput.value;
141
- this._bottomInput.onblur = (e) => this._valueBottom = this._bottomInput.value;
142
- this._updateValue();
143
- }
144
- }
145
- customElements.define('node-projects-thickness-editor', ThicknessEditor);
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,14 +0,0 @@
1
- import { BindingMode } from "./BindingMode";
2
- import { BindingTarget } from "./BindingTarget";
3
- export interface IBinding {
4
- bindableObjectNames?: string[];
5
- expression?: string;
6
- mode?: BindingMode;
7
- target?: BindingTarget;
8
- invert?: boolean;
9
- converter?: string;
10
- changedEvent?: string;
11
- nullSafe?: boolean;
12
- rawName?: string;
13
- rawValue?: string;
14
- }
@@ -1,4 +0,0 @@
1
- export class Binding {
2
- }
3
- export class ExtendedBinding extends Binding {
4
- }
@@ -1,14 +0,0 @@
1
- import { BindingMode } from "./BindingMode";
2
- import { BindingTarget } from "./BindingTarget";
3
- export interface IBinding {
4
- bindableObjectNames?: string[];
5
- expression?: string;
6
- mode?: BindingMode;
7
- target?: BindingTarget;
8
- invert?: boolean;
9
- converter?: string;
10
- changedEvent?: string;
11
- nullSafe?: boolean;
12
- rawName?: string;
13
- rawValue?: string;
14
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,9 +0,0 @@
1
- import { IndentedTextWriter } from "../../helper/IndentedTextWriter";
2
- import { IDesignItem } from "../../item/IDesignItem";
3
- import { IBinding } from "./IBinding";
4
- import { IBindingService } from "./IBindingService";
5
- export declare class PolymerBindingsService implements IBindingService {
6
- writeBindingMode: 'direct';
7
- parseBindings(designItem: IDesignItem): void;
8
- writeBinding(indentedTextWriter: IndentedTextWriter, designItem: IDesignItem, type: 'style' | 'attribute', keyValuePair: [key: string, value: IBinding]): boolean;
9
- }
@@ -1,31 +0,0 @@
1
- import { DomConverter } from "../../widgets/designerView/DomConverter";
2
- import { BindingMode } from './BindingMode';
3
- export class PolymerBindingsService {
4
- constructor() {
5
- this.writeBindingMode = 'direct';
6
- }
7
- parseBindings(designItem) {
8
- for (let a of designItem.attributes.entries()) {
9
- if (typeof a[1] == 'string' && (a[1].startsWith("[[") || a[1].startsWith("{{"))) {
10
- let bnd = {};
11
- if (a[1].startsWith("[["))
12
- bnd.mode = BindingMode.oneWay;
13
- else
14
- bnd.mode = BindingMode.twoWay;
15
- bnd.invert = a[1][3] == '!';
16
- bnd.expression = a[1];
17
- let nm = a[0];
18
- if (nm.endsWith('$')) {
19
- bnd.escapeAttribute = true;
20
- nm = nm.slice(0, -1);
21
- designItem.attributes.delete(a[0]);
22
- }
23
- designItem.attributes.set(nm, bnd);
24
- }
25
- }
26
- }
27
- writeBinding(indentedTextWriter, designItem, type, keyValuePair) {
28
- indentedTextWriter.write(keyValuePair[0] + '="' + (keyValuePair[1].mode == BindingMode.oneWay ? '[[' : '{{') + DomConverter.normalizeAttributeValue(keyValuePair[1].expression) + (keyValuePair[1].mode == BindingMode.oneWay ? ']]' : ']]') + '"');
29
- return true;
30
- }
31
- }
@@ -1,11 +0,0 @@
1
- import { IndentedTextWriter } from "../../helper/IndentedTextWriter";
2
- import { IDesignItem } from "../../item/IDesignItem";
3
- import { IBinding } from "../../item/IBinding";
4
- import { IBindingService } from "./IBindingService";
5
- export declare class BaseCustomeWebcomponentBindingsService implements IBindingService {
6
- writeBindingMode: 'direct';
7
- parseBindingAttribute(attributeName: string, value: string): IBinding;
8
- parseBindingCss(attributeName: string, value: string): IBinding;
9
- serializeBinding(): void;
10
- writeBinding(indentedTextWriter: IndentedTextWriter, designItem: IDesignItem, type: 'style' | 'attribute', keyValuePair: [key: string, value: IBinding]): boolean;
11
- }
@@ -1,34 +0,0 @@
1
- import { DomConverter } from "../../widgets/designerView/DomConverter";
2
- import { BindingMode } from '../../item/BindingMode';
3
- import { BindingTarget } from './BindingTarget';
4
- export class BaseCustomeWebcomponentBindingsService {
5
- constructor() {
6
- this.writeBindingMode = 'direct';
7
- }
8
- parseBindingAttribute(attributeName, value) {
9
- if (value.startsWith("[[") || value.startsWith("{{")) {
10
- let bnd = {};
11
- bnd.rawName = attributeName;
12
- bnd.rawValue = value;
13
- bnd.target = BindingTarget.property;
14
- if (value.startsWith("[["))
15
- bnd.mode = BindingMode.oneWay;
16
- else
17
- bnd.mode = BindingMode.twoWay;
18
- bnd.invert = value[3] == '!';
19
- bnd.nullSafe = value[3] == '?';
20
- bnd.expression = value;
21
- return bnd;
22
- }
23
- return null;
24
- }
25
- parseBindingCss(attributeName, value) {
26
- return null;
27
- }
28
- serializeBinding() {
29
- }
30
- writeBinding(indentedTextWriter, designItem, type, keyValuePair) {
31
- indentedTextWriter.write(keyValuePair[0] + '="' + (keyValuePair[1].mode == BindingMode.oneWay ? '[[' : '{{') + DomConverter.normalizeAttributeValue(keyValuePair[1].expression) + (keyValuePair[1].mode == BindingMode.oneWay ? ']]' : ']]') + '"');
32
- return true;
33
- }
34
- }
@@ -1,4 +0,0 @@
1
- export declare enum BindingMode {
2
- oneWay = "oneWay",
3
- twoWay = "twoWay"
4
- }
@@ -1,5 +0,0 @@
1
- export var BindingMode;
2
- (function (BindingMode) {
3
- BindingMode["oneWay"] = "oneWay";
4
- BindingMode["twoWay"] = "twoWay";
5
- })(BindingMode || (BindingMode = {}));
@@ -1,6 +0,0 @@
1
- export declare enum BindingTarget {
2
- property = "property",
3
- attribute = "attribute",
4
- style = "style",
5
- event = "event"
6
- }
@@ -1,7 +0,0 @@
1
- export var BindingTarget;
2
- (function (BindingTarget) {
3
- BindingTarget["property"] = "property";
4
- BindingTarget["attribute"] = "attribute";
5
- BindingTarget["style"] = "style";
6
- BindingTarget["event"] = "event";
7
- })(BindingTarget || (BindingTarget = {}));
@@ -1,14 +0,0 @@
1
- import { BindingMode } from "./BindingMode";
2
- import { BindingTarget } from "./BindingTarget";
3
- export interface IBinding {
4
- bindableObjectNames?: string[];
5
- expression?: string;
6
- mode?: BindingMode;
7
- target?: BindingTarget;
8
- invert?: boolean;
9
- converter?: string;
10
- changedEvent?: string;
11
- nullSafe?: boolean;
12
- rawName?: string;
13
- rawValue?: string;
14
- }
@@ -1 +0,0 @@
1
- export {};