@node-projects/web-component-designer 0.0.28 → 0.0.32

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 (64) hide show
  1. package/debug.log +8 -0
  2. package/dist/elements/controls/DesignerTabControl.d.ts +5 -1
  3. package/dist/elements/controls/DesignerTabControl.js +86 -8
  4. package/dist/elements/helper/CssCombiner.d.ts +1 -2
  5. package/dist/elements/helper/CssPropertiesList.d.ts +0 -0
  6. package/dist/elements/helper/CssPropertiesList.js +1 -0
  7. package/dist/elements/item/Binding.d.ts +14 -0
  8. package/dist/elements/item/Binding.js +4 -0
  9. package/dist/elements/item/BindingMode.d.ts +4 -0
  10. package/dist/elements/item/BindingMode.js +5 -0
  11. package/dist/elements/item/BindingTarget.d.ts +8 -0
  12. package/dist/elements/item/BindingTarget.js +9 -0
  13. package/dist/elements/item/DesignItem.d.ts +4 -7
  14. package/dist/elements/item/DesignItem.js +0 -15
  15. package/dist/elements/item/IBinding copy.d.ts +14 -0
  16. package/dist/elements/item/IBinding copy.js +1 -0
  17. package/dist/elements/item/IBinding.d.ts +15 -0
  18. package/dist/elements/item/IBinding.js +1 -0
  19. package/dist/elements/item/IDesignItem.d.ts +4 -5
  20. package/dist/elements/services/DefaultServiceBootstrap.js +0 -3
  21. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.d.ts +8 -0
  22. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +69 -0
  23. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.d.ts +9 -0
  24. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.js +31 -0
  25. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService.d.ts +1 -1
  26. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService.js +1 -1
  27. package/dist/elements/services/bindingsService/IBindingService.d.ts +3 -6
  28. package/dist/elements/services/bindingsService/PolymerBindingsService copy.d.ts +9 -0
  29. package/dist/elements/services/bindingsService/PolymerBindingsService copy.js +31 -0
  30. package/dist/elements/services/bindingsService/SpecialTagsBindingService.d.ts +14 -0
  31. package/dist/elements/services/bindingsService/SpecialTagsBindingService.js +40 -0
  32. package/dist/elements/services/bindingsService/VueBindingsService.d.ts +0 -0
  33. package/dist/elements/services/bindingsService/VueBindingsService.js +7 -0
  34. package/dist/elements/services/htmlParserService/NodeHtmlParserService.d.ts +2 -0
  35. package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +3 -2
  36. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.BASE.d.ts +9 -0
  37. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.BASE.js +100 -0
  38. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.LOCAL.d.ts +11 -0
  39. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.LOCAL.js +84 -0
  40. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.REMOTE.d.ts +9 -0
  41. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.REMOTE.js +83 -0
  42. package/dist/elements/services/propertiesService/services/CommonPropertiesService copy.d.ts +16 -0
  43. package/dist/elements/services/propertiesService/services/CommonPropertiesService copy.js +94 -0
  44. package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +1 -1
  45. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +1 -1
  46. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +9 -1
  47. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.d.ts +1 -1
  48. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.d.ts +1 -1
  49. package/dist/elements/widgets/designerView/designerCanvas.js +5 -1
  50. package/dist/elements/widgets/designerView/designerView copy.d.ts +82 -0
  51. package/dist/elements/widgets/designerView/designerView copy.js +671 -0
  52. package/dist/elements/widgets/designerView/designerView.js +1 -0
  53. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtension.d.ts +14 -0
  54. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtension.js +42 -0
  55. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtensionProvider.d.ts +9 -0
  56. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtensionProvider.js +9 -0
  57. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtension.d.ts +27 -0
  58. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtension.js +61 -0
  59. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtensionProvider.d.ts +9 -0
  60. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtensionProvider.js +9 -0
  61. package/dist/elements/widgets/designerView/extensions/PositionExtension.js +12 -4
  62. package/dist/index.d.ts +4 -0
  63. package/dist/index.js +2 -0
  64. package/package.json +6 -7
package/debug.log ADDED
@@ -0,0 +1,8 @@
1
+ [0823/112712.281:ERROR:registration_protocol_win.cc(103)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2)
2
+ [0907/074645.949:ERROR:registration_protocol_win.cc(103)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2)
3
+ [0910/083941.590:ERROR:registration_protocol_win.cc(103)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2)
4
+ [0919/084817.864:ERROR:registration_protocol_win.cc(103)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2)
5
+ [0928/190147.234:ERROR:registration_protocol_win.cc(103)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2)
6
+ [0930/210040.588:ERROR:registration_protocol_win.cc(103)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2)
7
+ [0107/215230.051:ERROR:registration_protocol_win.cc(102)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2)
8
+ [0108/121546.570:ERROR:registration_protocol_win.cc(102)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2)
@@ -1,4 +1,4 @@
1
- import { BaseCustomWebComponentLazyAppend, TypedEvent } from "@node-projects/base-custom-webcomponent";
1
+ import { BaseCustomWebComponentLazyAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
2
  export declare type DesignerTabControlIndexChangedEventArgs = {
3
3
  newIndex: number;
4
4
  oldIndex?: number;
@@ -9,8 +9,12 @@ export declare class DesignerTabControl extends BaseCustomWebComponentLazyAppend
9
9
  private _contentObserver;
10
10
  private _panels;
11
11
  private _headerDiv;
12
+ private _moreDiv;
13
+ private _moreContainer;
14
+ private _elementMap;
12
15
  static readonly style: CSSStyleSheet;
13
16
  constructor();
17
+ private _showHideHeaderItems;
14
18
  connectedCallback(): void;
15
19
  get selectedIndex(): number;
16
20
  set selectedIndex(value: number);
@@ -1,8 +1,9 @@
1
- import { BaseCustomWebComponentLazyAppend, css, TypedEvent } from "@node-projects/base-custom-webcomponent";
1
+ import { BaseCustomWebComponentLazyAppend, css, TypedEvent, DomHelper } from '@node-projects/base-custom-webcomponent';
2
2
  export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
3
3
  constructor() {
4
4
  super();
5
5
  this._selectedIndex = -1;
6
+ this._elementMap = new WeakMap();
6
7
  this.onSelectedTabChanged = new TypedEvent();
7
8
  this._contentObserver = new MutationObserver(() => {
8
9
  this._createItems();
@@ -13,12 +14,45 @@ export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
13
14
  this._headerDiv = document.createElement("div");
14
15
  this._headerDiv.className = 'header';
15
16
  outerDiv.appendChild(this._headerDiv);
17
+ this._moreDiv = document.createElement("div");
18
+ this._moreDiv.className = "header header-more";
19
+ this._moreDiv.innerText = "<<";
20
+ outerDiv.appendChild(this._moreDiv);
21
+ this._moreContainer = document.createElement("div");
22
+ this._moreContainer.className = "more-container";
23
+ this._moreContainer.style.visibility = "hidden";
24
+ outerDiv.appendChild(this._moreContainer);
25
+ this._moreDiv.onclick = () => {
26
+ if (this._moreContainer.children.length && this._moreContainer.style.visibility == "hidden")
27
+ this._moreContainer.style.visibility = 'visible';
28
+ else
29
+ this._moreContainer.style.visibility = "hidden";
30
+ };
16
31
  this._panels = document.createElement("div");
17
32
  this._panels.className = 'panels';
18
33
  outerDiv.appendChild(this._panels);
19
34
  let _slot = document.createElement("slot");
20
35
  _slot.name = 'panels';
21
36
  this._panels.appendChild(_slot);
37
+ const resizeObserver = new ResizeObserver(entries => {
38
+ this._showHideHeaderItems();
39
+ });
40
+ resizeObserver.observe(this._headerDiv);
41
+ }
42
+ _showHideHeaderItems() {
43
+ this._moreContainer.style.visibility = "hidden";
44
+ let w = 0;
45
+ DomHelper.removeAllChildnodes(this._moreContainer);
46
+ DomHelper.removeAllChildnodes(this._headerDiv);
47
+ for (let item of this.children) {
48
+ let htmlItem = item;
49
+ const tabHeaderDiv = this._elementMap.get(htmlItem);
50
+ this._moreContainer.appendChild(tabHeaderDiv);
51
+ if (w < this._headerDiv.clientWidth) {
52
+ this._headerDiv.appendChild(tabHeaderDiv);
53
+ w += tabHeaderDiv.clientWidth;
54
+ }
55
+ }
22
56
  }
23
57
  connectedCallback() {
24
58
  this._createItems();
@@ -35,7 +69,7 @@ export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
35
69
  set selectedIndex(value) {
36
70
  let old = this._selectedIndex;
37
71
  this._selectedIndex = value;
38
- if (this._headerDiv.children.length)
72
+ if (this.children.length)
39
73
  this._selectedIndexChanged(old);
40
74
  }
41
75
  disconnectedCallback() {
@@ -55,10 +89,13 @@ export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
55
89
  this._selectedIndex = j;
56
90
  if (this._headerDiv.children.length)
57
91
  this._selectedIndexChanged(old, true);
92
+ this._moreContainer.style.visibility = 'hidden';
58
93
  };
94
+ this._elementMap.set(htmlItem, tabHeaderDiv);
59
95
  this._headerDiv.appendChild(tabHeaderDiv);
60
96
  i++;
61
97
  }
98
+ this._showHideHeaderItems();
62
99
  this._selectedIndexChanged();
63
100
  }
64
101
  _selectedIndexChanged(oldIndex, viaClick = false) {
@@ -66,16 +103,25 @@ export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
66
103
  const element = this.children[index];
67
104
  if (index == this._selectedIndex) {
68
105
  element.slot = "panels";
69
- this._headerDiv.children[index].classList.add('selected');
70
- if (element.activated)
71
- element.activated();
106
+ const el = this.children[index];
107
+ const headerEl = this._elementMap.get(el);
108
+ if (headerEl) {
109
+ headerEl.classList.add('selected');
110
+ if (element.activated)
111
+ element.activated();
112
+ }
72
113
  }
73
114
  else {
74
115
  element.removeAttribute("slot");
75
- this._headerDiv.children[index].classList.remove('selected');
116
+ const el = this.children[index];
117
+ const headerEl = this._elementMap.get(el);
118
+ if (headerEl) {
119
+ headerEl.classList.remove('selected');
120
+ }
76
121
  }
77
122
  }
78
123
  this.onSelectedTabChanged.emit({ newIndex: this._selectedIndex, oldIndex: oldIndex, changedViaClick: viaClick });
124
+ this._moreContainer.style.visibility = 'hidden';
79
125
  }
80
126
  }
81
127
  DesignerTabControl.style = css `
@@ -86,6 +132,7 @@ DesignerTabControl.style = css `
86
132
  display: flex;
87
133
  flex-direction: column;
88
134
  height: 100%;
135
+ position: relative;
89
136
  }
90
137
  .header {
91
138
  display: inline-flex;
@@ -93,14 +140,46 @@ DesignerTabControl.style = css `
93
140
  flex-direction: row;
94
141
  cursor: pointer;
95
142
  height: 30px;
143
+ width: calc(100% - 30px);
96
144
  background-color: var(--dark-grey, #232733);
97
145
  overflow-x: auto;
98
146
  scrollbar-width: none; /* Firefox */
99
147
  }
148
+ .header-more {
149
+ right: 0;
150
+ top: 0;
151
+ width: 30px;
152
+ position: absolute;
153
+ color: white;
154
+ display: flex;
155
+ justify-content: center;
156
+ align-items: center;
157
+ font-family: cursive;
158
+ }
159
+ .header-more:hover {
160
+ background: var(--light-grey, #383f52);
161
+ }
162
+ .more-container {
163
+ z-index: 1;
164
+ user-select: none;
165
+ background-color: var(--dark-grey, #232733);
166
+ right: 0;
167
+ top: 30px;
168
+ position: absolute;
169
+ color: white;
170
+ display: flex;
171
+ flex-direction: column;
172
+ align-items: flex-start;
173
+ cursor: pointer;
174
+ }
175
+ .more-container .tab-header {
176
+ width: 100%;
177
+ }
100
178
  .header::-webkit-scrollbar {
101
179
  display: none; /* Safari and Chrome */
102
180
  }
103
181
  .tab-header {
182
+ height: 30px;
104
183
  font-family: Arial;
105
184
  display: flex;
106
185
  justify-content: center;
@@ -114,17 +193,16 @@ DesignerTabControl.style = css `
114
193
  font-weight: 500;
115
194
  line-height: 1.5;
116
195
  letter-spacing: 1px;
117
-
118
196
  }
119
197
  .tab-header:hover {
120
198
  background: var(--light-grey, #383f52);
121
199
  }
122
200
  .selected {
123
- pointer-events: none;
124
201
  background: var(--medium-grey, #2f3545);
125
202
  box-shadow: inset 0 3px 0 var(--highlight-pink, #e91e63);
126
203
  }
127
204
  .panels {
205
+ z-index: 0;
128
206
  background: var(--medium-grey, #2f3545);
129
207
  height: calc(100% - 30px);
130
208
  }
@@ -1,7 +1,6 @@
1
- import { IBinding } from "../services/bindingsService/IBinding";
2
1
  export declare class CssCombiner {
3
2
  private static _helperElement;
4
- static combine(styles: Map<string, string | IBinding>, globalStyles?: Map<string, string>): Map<string, string | IBinding>;
3
+ static combine(styles: Map<string, string>, globalStyles?: Map<string, string>): Map<string, string>;
5
4
  private static combineBorder;
6
5
  private static combineMargin;
7
6
  private static combinePadding;
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,14 @@
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
+ }
@@ -0,0 +1,4 @@
1
+ export class Binding {
2
+ }
3
+ export class ExtendedBinding extends Binding {
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare enum BindingMode {
2
+ oneWay = "oneWay",
3
+ twoWay = "twoWay"
4
+ }
@@ -0,0 +1,5 @@
1
+ export var BindingMode;
2
+ (function (BindingMode) {
3
+ BindingMode["oneWay"] = "oneWay";
4
+ BindingMode["twoWay"] = "twoWay";
5
+ })(BindingMode || (BindingMode = {}));
@@ -0,0 +1,8 @@
1
+ export declare enum BindingTarget {
2
+ property = "property",
3
+ attribute = "attribute",
4
+ class = "class",
5
+ css = "css",
6
+ event = "event",
7
+ content = "content"
8
+ }
@@ -0,0 +1,9 @@
1
+ export var BindingTarget;
2
+ (function (BindingTarget) {
3
+ BindingTarget["property"] = "property";
4
+ BindingTarget["attribute"] = "attribute";
5
+ BindingTarget["class"] = "class";
6
+ BindingTarget["css"] = "css";
7
+ BindingTarget["event"] = "event";
8
+ BindingTarget["content"] = "content"; //innertext or html... mhmmm
9
+ })(BindingTarget || (BindingTarget = {}));
@@ -5,7 +5,6 @@ import { ChangeGroup } from '../services/undoService/ChangeGroup';
5
5
  import { NodeType } from './NodeType';
6
6
  import { ExtensionType } from '../widgets/designerView/extensions/ExtensionType';
7
7
  import { IDesignerExtension } from '../widgets/designerView/extensions/IDesignerExtension';
8
- import { IBinding } from '../services/bindingsService/IBinding.js';
9
8
  export declare class DesignItem implements IDesignItem {
10
9
  node: Node;
11
10
  serviceContainer: ServiceContainer;
@@ -14,9 +13,9 @@ export declare class DesignItem implements IDesignItem {
14
13
  replaceNode(newNode: Node): void;
15
14
  get nodeType(): NodeType;
16
15
  get hasAttributes(): boolean;
17
- attributes: Map<string, string | IBinding>;
16
+ attributes: Map<string, string>;
18
17
  get hasStyles(): boolean;
19
- styles: Map<string, string | IBinding>;
18
+ styles: Map<string, string>;
20
19
  private static _designItemMap;
21
20
  get element(): Element;
22
21
  get name(): string;
@@ -51,10 +50,8 @@ export declare class DesignItem implements IDesignItem {
51
50
  getOrCreateDesignItem(node: Node): IDesignItem;
52
51
  static GetOrCreateDesignItem(node: Node, serviceContainer: ServiceContainer, instanceServiceContainer: InstanceServiceContainer): IDesignItem;
53
52
  static GetDesignItem(node: Node): IDesignItem;
54
- setStyle(name: keyof CSSStyleDeclaration, value?: string | IBinding | null): void;
53
+ setStyle(name: keyof CSSStyleDeclaration, value?: string | null): void;
55
54
  removeStyle(name: keyof CSSStyleDeclaration): void;
56
- setAttribute(name: string, value?: string | IBinding | null): void;
55
+ setAttribute(name: string, value?: string | null): void;
57
56
  removeAttribute(name: string): void;
58
- setProperty(name: string, value?: string | null): void;
59
- removeProperty(name: string, value?: string | null): void;
60
57
  }
@@ -1,7 +1,6 @@
1
1
  import { CssStyleChangeAction } from '../services/undoService/transactionItems/CssStyleChangeAction';
2
2
  import { NodeType } from './NodeType';
3
3
  import { AttributeChangeAction } from '../services/undoService/transactionItems/AttributeChangeAction';
4
- import { PropertyChangeAction } from '../services/undoService/transactionItems/PropertyChangeAction';
5
4
  import { DomHelper } from '@node-projects/base-custom-webcomponent/dist/DomHelper';
6
5
  import { CssAttributeParser } from '../helper/CssAttributeParser.js';
7
6
  const hideAtDesignTimeAttributeName = 'node-projects-hide-at-design-time';
@@ -236,19 +235,5 @@ export class DesignItem {
236
235
  const action = new AttributeChangeAction(this, name, null, this.attributes.get(name));
237
236
  this.instanceServiceContainer.undoService.execute(action);
238
237
  }
239
- setProperty(name, value) {
240
- const propService = this.serviceContainer.getLastServiceWhere('propertyService', x => x.isHandledElement(this));
241
- const property = propService.getProperty(this, name);
242
- const oldValue = propService.getValue([this], property);
243
- const action = new PropertyChangeAction(this, property, value, oldValue);
244
- this.instanceServiceContainer.undoService.execute(action);
245
- }
246
- removeProperty(name, value) {
247
- const propService = this.serviceContainer.getLastServiceWhere('propertyService', x => x.isHandledElement(this));
248
- const property = propService.getProperty(this, name);
249
- const oldValue = propService.getValue([this], property);
250
- const action = new PropertyChangeAction(this, property, undefined, oldValue);
251
- this.instanceServiceContainer.undoService.execute(action);
252
- }
253
238
  }
254
239
  DesignItem._designItemMap = new WeakMap();
@@ -0,0 +1,14 @@
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
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import { BindingMode } from "./BindingMode";
2
+ import { BindingTarget } from "./BindingTarget";
3
+ export interface IBinding {
4
+ targetName?: string;
5
+ target?: BindingTarget;
6
+ rawName?: string;
7
+ rawValue?: string;
8
+ type?: string;
9
+ expression?: string;
10
+ bindableObjectNames?: string[];
11
+ mode?: BindingMode;
12
+ invert?: boolean;
13
+ changedEvent?: string;
14
+ nullSafe?: boolean;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -4,16 +4,15 @@ import { ChangeGroup } from "../services/undoService/ChangeGroup";
4
4
  import { NodeType } from './NodeType';
5
5
  import { ExtensionType } from "../widgets/designerView/extensions/ExtensionType";
6
6
  import { IDesignerExtension } from "../widgets/designerView/extensions/IDesignerExtension";
7
- import { IBinding } from "../services/bindingsService/IBinding";
8
7
  export interface IDesignItem {
9
8
  replaceNode(newNode: Node): any;
10
9
  readonly nodeType: NodeType;
11
10
  readonly name: string;
12
11
  readonly id: string;
13
12
  readonly hasAttributes: boolean;
14
- readonly attributes: Map<string, string | IBinding>;
13
+ readonly attributes: Map<string, string>;
15
14
  readonly hasStyles: boolean;
16
- readonly styles: Map<string, string | IBinding>;
15
+ readonly styles: Map<string, string>;
17
16
  readonly hasChildren: boolean;
18
17
  children(): IterableIterator<IDesignItem>;
19
18
  readonly childCount: number;
@@ -33,9 +32,9 @@ export interface IDesignItem {
33
32
  appliedDesignerExtensions: Map<ExtensionType, IDesignerExtension[]>;
34
33
  getOrCreateDesignItem(node: Node): any;
35
34
  openGroup(title: string, affectedItems?: IDesignItem[]): ChangeGroup;
36
- setStyle(name: keyof CSSStyleDeclaration, value?: string | IBinding | null): any;
35
+ setStyle(name: keyof CSSStyleDeclaration, value?: string | null): any;
37
36
  removeStyle(name: keyof CSSStyleDeclaration): any;
38
- setAttribute(name: string, value?: string | IBinding | null): any;
37
+ setAttribute(name: string, value?: string | null): any;
39
38
  removeAttribute(name: string): any;
40
39
  hideAtDesignTime: boolean;
41
40
  hideAtRunTime: boolean;
@@ -35,7 +35,6 @@ import { TextTool } from '../widgets/designerView/tools/TextTool.js';
35
35
  import { GrayOutExtensionProvider } from '../widgets/designerView/extensions/GrayOutExtensionProvider.js';
36
36
  import { AltToEnterContainerExtensionProvider } from '../widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js';
37
37
  import { InvisibleDivExtensionProvider } from '../widgets/designerView/extensions/InvisibleDivExtensionProvider.js';
38
- //import { PolymerBindingsService } from './bindingsService/PolymerBindingsService.js';
39
38
  import { ItemsBelowContextMenu } from '../widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js';
40
39
  import { GridPlacementService } from './placementService/GridPlacementService.js';
41
40
  import { ElementAtPointService } from './elementAtPointService/ElementAtPointService';
@@ -44,7 +43,6 @@ import { SnaplinesProviderService } from './placementService/SnaplinesProviderSe
44
43
  import { PrepareElementsForDesignerService } from './instanceService/PrepareElementsForDesignerService';
45
44
  import { DragDropService } from './dragDropService/DragDropService';
46
45
  import { EditTextExtensionProvider } from '../widgets/designerView/extensions/EditText/EditTextExtensionProvider.js';
47
- import { BaseCustomeWebcomponentBindingsService } from './bindingsService/BaseCustomeWebcomponentBindingsService';
48
46
  export function createDefaultServiceContainer() {
49
47
  let serviceContainer = new ServiceContainer();
50
48
  serviceContainer.register("propertyService", new PolymerPropertiesService());
@@ -60,7 +58,6 @@ export function createDefaultServiceContainer() {
60
58
  serviceContainer.register("containerService", new FlexBoxPlacementService());
61
59
  serviceContainer.register("snaplinesProviderService", new SnaplinesProviderService());
62
60
  serviceContainer.register("htmlParserService", new DefaultHtmlParserService());
63
- serviceContainer.register("bindingService", new BaseCustomeWebcomponentBindingsService());
64
61
  serviceContainer.register("elementAtPointService", new ElementAtPointService());
65
62
  serviceContainer.register("prepareElementsForDesignerService", new PrepareElementsForDesignerService());
66
63
  serviceContainer.register("dragDropService", new DragDropService());
@@ -0,0 +1,8 @@
1
+ import { IDesignItem } from "../../item/IDesignItem";
2
+ import { IBinding } from '../../item/IBinding';
3
+ import { IBindingService } from "./IBindingService";
4
+ export declare class BaseCustomWebcomponentBindingsService implements IBindingService {
5
+ static type: string;
6
+ getBindings(designItem: IDesignItem): IBinding[];
7
+ setBinding(designItem: IDesignItem, binding: IBinding): boolean;
8
+ }
@@ -0,0 +1,69 @@
1
+ import { BindingMode } from '../../item/BindingMode';
2
+ import { BindingTarget } from "../../item/BindingTarget.js";
3
+ export class BaseCustomWebcomponentBindingsService {
4
+ getBindings(designItem) {
5
+ let bindings = null;
6
+ for (let a of designItem.attributes) {
7
+ const name = a[0];
8
+ const value = a[1];
9
+ if ((value.startsWith('[[') || value.startsWith('{{')) && (value.endsWith('}}') || value.endsWith(']]'))) {
10
+ if (!bindings)
11
+ bindings = [];
12
+ let bnd = { rawName: name, rawValue: value };
13
+ if (a[0].startsWith('css:')) {
14
+ bnd.targetName = name.substring(4);
15
+ bnd.target = BindingTarget.css;
16
+ bnd.expression = value.substring(2, value.length - 4);
17
+ }
18
+ else if (a[0].startsWith('class:')) {
19
+ bnd.targetName = name.substring(4);
20
+ bnd.target = BindingTarget.class;
21
+ bnd.expression = value.substring(2, value.length - 4);
22
+ }
23
+ else if (a[0].startsWith('$')) {
24
+ bnd.targetName = name.substring(1);
25
+ bnd.target = BindingTarget.attribute;
26
+ bnd.expression = value.substring(2, value.length - 4);
27
+ }
28
+ else if (a[0].startsWith('@')) {
29
+ bnd.targetName = name.substring(1);
30
+ bnd.target = BindingTarget.event;
31
+ bnd.expression = value.substring(2, value.length - 4);
32
+ }
33
+ else {
34
+ bnd.targetName = name;
35
+ bnd.target = BindingTarget.property;
36
+ bnd.expression = value.substring(2, value.length - 4);
37
+ }
38
+ bnd.type = BaseCustomWebcomponentBindingsService.type;
39
+ bnd.targetName = bnd.targetName;
40
+ bindings.push(bnd);
41
+ }
42
+ }
43
+ return bindings;
44
+ }
45
+ setBinding(designItem, binding) {
46
+ if (binding.type !== BaseCustomWebcomponentBindingsService.type)
47
+ return false;
48
+ let nm = '';
49
+ switch (binding.target) {
50
+ case BindingTarget.css:
51
+ nm += 'css:';
52
+ break;
53
+ case BindingTarget.class:
54
+ nm += 'class';
55
+ break;
56
+ case BindingTarget.attribute:
57
+ nm += '$';
58
+ break;
59
+ case BindingTarget.event:
60
+ nm += '@';
61
+ break;
62
+ }
63
+ nm += binding.targetName;
64
+ let value = (binding.mode == BindingMode.oneWay ? '[[' : '{{') + binding.expression + (binding.mode == BindingMode.oneWay ? ']]' : '}}');
65
+ designItem.setAttribute(nm, value);
66
+ return true;
67
+ }
68
+ }
69
+ BaseCustomWebcomponentBindingsService.type = 'base-custom-webcomponent-binding';
@@ -0,0 +1,9 @@
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
+ }
@@ -0,0 +1,31 @@
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,6 +1,6 @@
1
1
  import { IndentedTextWriter } from "../../helper/IndentedTextWriter";
2
2
  import { IDesignItem } from "../../item/IDesignItem";
3
- import { IBinding } from "./IBinding";
3
+ import { IBinding } from "../../item/IBinding";
4
4
  import { IBindingService } from "./IBindingService";
5
5
  export declare class BaseCustomeWebcomponentBindingsService implements IBindingService {
6
6
  writeBindingMode: 'direct';
@@ -1,5 +1,5 @@
1
1
  import { DomConverter } from "../../widgets/designerView/DomConverter";
2
- import { BindingMode } from './BindingMode';
2
+ import { BindingMode } from '../../item/BindingMode';
3
3
  import { BindingTarget } from './BindingTarget';
4
4
  export class BaseCustomeWebcomponentBindingsService {
5
5
  constructor() {
@@ -1,14 +1,11 @@
1
- import { IndentedTextWriter } from "../../helper/IndentedTextWriter";
2
1
  import { IDesignItem } from "../../item/IDesignItem";
3
- import { IBinding } from "./IBinding";
2
+ import { IBinding } from "../../item/IBinding";
4
3
  /**
5
4
  * Can be used to parse bindings wich are done via special HTML Attributes or special Elements
6
5
  * If your Bindings are to special, or HTML is not valid with them, maybe you need to parse the Bindings already in the
7
6
  * htmlParserService
8
7
  */
9
8
  export interface IBindingService {
10
- writeBindingMode: 'none' | 'direct' | 'afterElement';
11
- parseBindingAttribute(attributeName: string, value: string): IBinding;
12
- parseBindingCss(attributeName: string, value: string): IBinding;
13
- writeBinding(indentedTextWriter: IndentedTextWriter, designItem: IDesignItem, type: 'style' | 'attribute', keyValuePair: [key: string, value: IBinding]): boolean;
9
+ getBindings(designItem: IDesignItem): IBinding[];
10
+ setBinding(designItem: IDesignItem, binding: IBinding): boolean;
14
11
  }
@@ -0,0 +1,9 @@
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
+ }
@@ -0,0 +1,31 @@
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
+ }