@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.
- package/debug.log +8 -0
- package/dist/elements/controls/DesignerTabControl.d.ts +5 -1
- package/dist/elements/controls/DesignerTabControl.js +86 -8
- package/dist/elements/helper/CssCombiner.d.ts +1 -2
- package/dist/elements/helper/CssPropertiesList.d.ts +0 -0
- package/dist/elements/helper/CssPropertiesList.js +1 -0
- package/dist/elements/item/Binding.d.ts +14 -0
- package/dist/elements/item/Binding.js +4 -0
- package/dist/elements/item/BindingMode.d.ts +4 -0
- package/dist/elements/item/BindingMode.js +5 -0
- package/dist/elements/item/BindingTarget.d.ts +8 -0
- package/dist/elements/item/BindingTarget.js +9 -0
- package/dist/elements/item/DesignItem.d.ts +4 -7
- package/dist/elements/item/DesignItem.js +0 -15
- package/dist/elements/item/IBinding copy.d.ts +14 -0
- package/dist/elements/item/IBinding copy.js +1 -0
- package/dist/elements/item/IBinding.d.ts +15 -0
- package/dist/elements/item/IBinding.js +1 -0
- package/dist/elements/item/IDesignItem.d.ts +4 -5
- package/dist/elements/services/DefaultServiceBootstrap.js +0 -3
- package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.d.ts +8 -0
- package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +69 -0
- package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.d.ts +9 -0
- package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.js +31 -0
- package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService.d.ts +1 -1
- package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService.js +1 -1
- package/dist/elements/services/bindingsService/IBindingService.d.ts +3 -6
- package/dist/elements/services/bindingsService/PolymerBindingsService copy.d.ts +9 -0
- package/dist/elements/services/bindingsService/PolymerBindingsService copy.js +31 -0
- package/dist/elements/services/bindingsService/SpecialTagsBindingService.d.ts +14 -0
- package/dist/elements/services/bindingsService/SpecialTagsBindingService.js +40 -0
- package/dist/elements/services/bindingsService/VueBindingsService.d.ts +0 -0
- package/dist/elements/services/bindingsService/VueBindingsService.js +7 -0
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.d.ts +2 -0
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +3 -2
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.BASE.d.ts +9 -0
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.BASE.js +100 -0
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.LOCAL.d.ts +11 -0
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.LOCAL.js +84 -0
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.REMOTE.d.ts +9 -0
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.REMOTE.js +83 -0
- package/dist/elements/services/propertiesService/services/CommonPropertiesService copy.d.ts +16 -0
- package/dist/elements/services/propertiesService/services/CommonPropertiesService copy.js +94 -0
- package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +1 -1
- package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +1 -1
- package/dist/elements/services/propertiesService/services/CssPropertiesService.js +9 -1
- package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.d.ts +1 -1
- package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.d.ts +1 -1
- package/dist/elements/widgets/designerView/designerCanvas.js +5 -1
- package/dist/elements/widgets/designerView/designerView copy.d.ts +82 -0
- package/dist/elements/widgets/designerView/designerView copy.js +671 -0
- package/dist/elements/widgets/designerView/designerView.js +1 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtension.d.ts +14 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtension.js +42 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtensionProvider.d.ts +9 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtensionProvider.js +9 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtension.d.ts +27 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtension.js +61 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtensionProvider.d.ts +9 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtensionProvider.js +9 -0
- package/dist/elements/widgets/designerView/extensions/PositionExtension.js +12 -4
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- 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
|
|
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
|
|
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.
|
|
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.
|
|
70
|
-
|
|
71
|
-
|
|
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.
|
|
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
|
|
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,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
|
|
16
|
+
attributes: Map<string, string>;
|
|
18
17
|
get hasStyles(): boolean;
|
|
19
|
-
styles: Map<string, string
|
|
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 |
|
|
53
|
+
setStyle(name: keyof CSSStyleDeclaration, value?: string | null): void;
|
|
55
54
|
removeStyle(name: keyof CSSStyleDeclaration): void;
|
|
56
|
-
setAttribute(name: string, value?: string |
|
|
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
|
|
13
|
+
readonly attributes: Map<string, string>;
|
|
15
14
|
readonly hasStyles: boolean;
|
|
16
|
-
readonly styles: Map<string, string
|
|
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 |
|
|
35
|
+
setStyle(name: keyof CSSStyleDeclaration, value?: string | null): any;
|
|
37
36
|
removeStyle(name: keyof CSSStyleDeclaration): any;
|
|
38
|
-
setAttribute(name: string, value?: string |
|
|
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';
|
package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.d.ts
ADDED
|
@@ -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 "
|
|
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 '
|
|
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 "
|
|
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
|
-
|
|
11
|
-
|
|
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
|
+
}
|