jpf 3.0.21 → 4.0.0

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/dist/View.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ import "tocca";
2
+ import { ObservableArray, Computed } from "knockout";
3
+ import { ViewModelOptions, ViewModel } from "./ViewModel";
4
+ export interface IView {
5
+ render(): HTMLElement;
6
+ }
7
+ export interface ViewOptions<TViewModel> {
8
+ tagName: string;
9
+ viewModel?: TViewModel;
10
+ children?: Array<IView> | ObservableArray<IView> | Computed<Array<IView>>;
11
+ }
12
+ export declare abstract class View<TViewModel extends ViewModelOptions = ViewModelOptions> implements IView {
13
+ protected constructor(options: ViewOptions<TViewModel>, designTimeOptions?: ViewModelOptions);
14
+ private readonly tagName;
15
+ private readonly optionsChildren;
16
+ private children;
17
+ private buildChildren;
18
+ protected element: HTMLElement;
19
+ protected readonly viewModel: TViewModel;
20
+ protected build(): void;
21
+ protected remove(): void;
22
+ protected setChildren(...children: Array<IView>): View<TViewModel>;
23
+ protected empty(): void;
24
+ render(): HTMLElement;
25
+ }
26
+ export declare var viewDictionary: Map<any, any>;
27
+ export declare function registerView(viewModel: any, resolver: any): void;
28
+ export declare function getView(viewModel: ViewModel): View;
29
+ export declare function render(viewModel: ViewModel): HTMLElement;
package/dist/View.js ADDED
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.render = exports.getView = exports.registerView = exports.viewDictionary = exports.View = void 0;
4
+ require("tocca");
5
+ const knockout_1 = require("knockout");
6
+ const ViewModel_1 = require("./ViewModel");
7
+ class View {
8
+ constructor(options, designTimeOptions) {
9
+ this.children = new Array();
10
+ this.tagName = options.tagName;
11
+ this.viewModel = (0, ViewModel_1.extendViewModel)(options.viewModel, designTimeOptions);
12
+ this.optionsChildren = options.children;
13
+ this.children = (0, knockout_1.unwrap)(options.children);
14
+ }
15
+ buildChildren() {
16
+ if (this.element && this.children && this.children.length > 0) {
17
+ const documentFragment = document.createDocumentFragment();
18
+ this.children.forEach((childView) => {
19
+ documentFragment.appendChild(childView.render());
20
+ });
21
+ this.element.appendChild(documentFragment);
22
+ }
23
+ }
24
+ build() {
25
+ (0, ViewModel_1.applyViewModelToElement)(this.viewModel, this.element);
26
+ if (this.children) {
27
+ this.buildChildren();
28
+ }
29
+ if ((0, knockout_1.isObservable)(this.optionsChildren)) {
30
+ this.optionsChildren.subscribe((children) => {
31
+ this.setChildren(...children);
32
+ });
33
+ }
34
+ }
35
+ remove() {
36
+ if (this.element) {
37
+ if (this.element.remove) {
38
+ this.element.remove();
39
+ }
40
+ else {
41
+ if (this.element.parentElement) {
42
+ this.element.parentElement.removeChild(this.element);
43
+ }
44
+ }
45
+ this.element = null;
46
+ }
47
+ }
48
+ setChildren(...children) {
49
+ this.empty();
50
+ this.children = children;
51
+ this.buildChildren();
52
+ return this;
53
+ }
54
+ empty() {
55
+ this.children = [];
56
+ if (this.element) {
57
+ this.element.innerHTML = "";
58
+ while (this.element.firstChild) {
59
+ this.element.removeChild(this.element.firstChild);
60
+ }
61
+ }
62
+ }
63
+ render() {
64
+ if (this.element) {
65
+ this.remove();
66
+ }
67
+ if (typeof this.build === "function") {
68
+ this.element = document.createElement(this.tagName);
69
+ this.build();
70
+ return this.element;
71
+ }
72
+ throw "The build method of this UiElement has not been defined";
73
+ }
74
+ }
75
+ exports.View = View;
76
+ exports.viewDictionary = new Map();
77
+ function registerView(viewModel, resolver) {
78
+ exports.viewDictionary.set(viewModel.prototype.constructor, resolver);
79
+ }
80
+ exports.registerView = registerView;
81
+ function getView(viewModel) {
82
+ const view = exports.viewDictionary.get(viewModel.constructor);
83
+ if (view.prototype) {
84
+ return new view(viewModel);
85
+ }
86
+ if (typeof view === "function") {
87
+ return view(viewModel);
88
+ }
89
+ throw "View resolver for '" + viewModel.constructor.name + " could not be found";
90
+ }
91
+ exports.getView = getView;
92
+ function render(viewModel) {
93
+ return getView(viewModel).render();
94
+ }
95
+ exports.render = render;
96
+ //# sourceMappingURL=View.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"View.js","sourceRoot":"","sources":["../src/View.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { Subscribable, ObservableArray, Observable } from "knockout";
2
+ import { CssProperty } from "./types";
3
+ import { EventListeners } from "./event";
4
+ import { Attributes, AttributesSubscribable } from "./attributes";
5
+ import { Style, StyleSubscribable } from "./style";
6
+ export interface ViewModelOptions {
7
+ classNames?: Array<string> | Subscribable<Array<string>>;
8
+ attributes?: Attributes | AttributesSubscribable;
9
+ style?: Style | StyleSubscribable;
10
+ visible?: boolean | Subscribable<boolean>;
11
+ disabled?: boolean | Subscribable<boolean>;
12
+ innerHtml?: string | Subscribable<string>;
13
+ innerText?: string | Subscribable<string>;
14
+ addViewModelToDataObject?: boolean;
15
+ userSelectable?: boolean;
16
+ dispose?: () => void;
17
+ refresh?: () => void;
18
+ eventListeners?: EventListeners;
19
+ viewType?: string;
20
+ focus?: () => void;
21
+ }
22
+ export interface IObservableProperty<TValue, TSetter = TValue> extends Subscribable<TValue> {
23
+ (): TValue;
24
+ set: (value: TSetter) => void;
25
+ }
26
+ export interface IObservableArrayProperty<TItem, TSetter> extends ObservableArray<TItem> {
27
+ set: (items: Array<TSetter>) => void;
28
+ }
29
+ export declare class ViewModel implements ViewModelOptions {
30
+ constructor(options?: ViewModelOptions);
31
+ readonly classNames: string[] | Subscribable<Array<string>>;
32
+ readonly attributes: Attributes | AttributesSubscribable;
33
+ readonly style: Style | StyleSubscribable;
34
+ readonly visible: boolean | Subscribable<boolean>;
35
+ readonly disabled: boolean | Subscribable<boolean>;
36
+ readonly innerHtml: string | Subscribable<string>;
37
+ readonly innerText: string | Subscribable<string>;
38
+ readonly addViewModelToDataObject: boolean;
39
+ readonly userSelectable: boolean;
40
+ readonly dispose: () => void;
41
+ readonly refresh: () => void;
42
+ readonly eventListeners: EventListeners;
43
+ readonly viewType: string;
44
+ protected getStyle(...cssProperties: Array<CssProperty>): Style;
45
+ protected getStyleValue(cssProperty: CssProperty): any;
46
+ setClasses(classNames: string[], replace: boolean): void;
47
+ setAttributes(attributes: Attributes): void;
48
+ setStyle(style: Style): void;
49
+ setVisible(visible: boolean): void;
50
+ setDisabled(disabled: boolean): void;
51
+ setInnerHtml(innerHtml: string): void;
52
+ setInnerText(innerText: string): void;
53
+ removeClasses(classNames: string[]): void;
54
+ focus(): void;
55
+ handleWebSocketMessage: (message: any) => void;
56
+ protected setObservableProperty(property: any, value: any): void;
57
+ protected createObservableProperty<TValue, TSetter = TValue>(value?: TValue | Observable<TValue>, setter?: (value: TSetter) => void, notifyAlways?: boolean): IObservableProperty<TValue, TSetter>;
58
+ protected createObservableArrayProperty<TItem, TSetter = TItem>(items?: Array<TItem> | ObservableArray<TItem>, setter?: (items: Array<TSetter>) => void): IObservableArrayProperty<TItem, TSetter>;
59
+ }
60
+ export declare function extendViewModel<TResult = ViewModelOptions, TTarget = ViewModelOptions, TSource = ViewModelOptions>(target: TTarget, source: TSource): TResult;
61
+ export declare function applyViewModelToElement(viewModel: ViewModelOptions, element: HTMLElement): void;
@@ -0,0 +1,404 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyViewModelToElement = exports.extendViewModel = exports.ViewModel = void 0;
4
+ const knockout_1 = require("knockout");
5
+ const extend = require("extend");
6
+ const userAgent_1 = require("./userAgent");
7
+ const event_1 = require("./event");
8
+ const style_1 = require("./style");
9
+ class ViewModel {
10
+ constructor(options) {
11
+ this.visible = true;
12
+ this.disabled = false;
13
+ this.addViewModelToDataObject = false;
14
+ this.eventListeners = {};
15
+ options = options || {};
16
+ this.classNames = options.classNames;
17
+ this.attributes = options.attributes || {};
18
+ this.style = options.style || {};
19
+ if (options.hasOwnProperty("visible")) {
20
+ this.visible = options.visible;
21
+ }
22
+ if (options.hasOwnProperty("disabled")) {
23
+ this.disabled = options.disabled;
24
+ }
25
+ this.innerHtml = options.innerHtml;
26
+ this.innerText = options.innerText;
27
+ this.addViewModelToDataObject = options.addViewModelToDataObject;
28
+ this.userSelectable = options.userSelectable;
29
+ this.dispose = options.dispose;
30
+ this.refresh = options.refresh;
31
+ this.eventListeners = options.eventListeners;
32
+ this.viewType = options.viewType;
33
+ }
34
+ getStyle(...cssProperties) {
35
+ if (cssProperties && this.style) {
36
+ const style = {};
37
+ cssProperties.forEach((cssProperty) => {
38
+ style[cssProperty] = this.style[cssProperty];
39
+ });
40
+ return style;
41
+ }
42
+ return null;
43
+ }
44
+ getStyleValue(cssProperty) {
45
+ if (this.style) {
46
+ return (0, knockout_1.unwrap)(this.style[cssProperty]);
47
+ }
48
+ return null;
49
+ }
50
+ setClasses(classNames, replace) {
51
+ if ((0, knockout_1.isSubscribable)(this.classNames)) {
52
+ var currentClassNames = (0, knockout_1.unwrap)(this.classNames);
53
+ if (replace) {
54
+ currentClassNames = new Array();
55
+ }
56
+ if (classNames) {
57
+ classNames.forEach((className) => {
58
+ currentClassNames.push(className);
59
+ });
60
+ }
61
+ this.classNames(currentClassNames);
62
+ }
63
+ }
64
+ setAttributes(attributes) {
65
+ if (attributes) {
66
+ Object.keys(attributes).forEach((key) => {
67
+ let newValue = attributes[key];
68
+ if (newValue === null || newValue === undefined) {
69
+ newValue = null;
70
+ }
71
+ if ((0, knockout_1.isSubscribable)(this.attributes[key])) {
72
+ this.attributes[key]((0, knockout_1.unwrap)(newValue));
73
+ }
74
+ else {
75
+ this.attributes[key] = newValue;
76
+ }
77
+ });
78
+ }
79
+ }
80
+ setStyle(style) {
81
+ if (style) {
82
+ Object.keys(style).forEach((key) => {
83
+ let newValue = style[key];
84
+ if (newValue === null || newValue === undefined) {
85
+ if (userAgent_1.userAgent.browser.isInternetExplorer) {
86
+ newValue = style_1.defaultStyle[key];
87
+ }
88
+ else {
89
+ newValue = null;
90
+ }
91
+ }
92
+ if ((0, knockout_1.isSubscribable)(this.style[key])) {
93
+ this.style[key]((0, knockout_1.unwrap)(newValue));
94
+ }
95
+ else {
96
+ this.style[key] = newValue;
97
+ }
98
+ });
99
+ }
100
+ }
101
+ setVisible(visible) {
102
+ if ((0, knockout_1.isSubscribable)(this.visible)) {
103
+ this.visible(visible);
104
+ }
105
+ }
106
+ setDisabled(disabled) {
107
+ if ((0, knockout_1.isSubscribable)(this.disabled)) {
108
+ this.disabled(disabled);
109
+ }
110
+ }
111
+ setInnerHtml(innerHtml) {
112
+ if ((0, knockout_1.isSubscribable)(this.innerHtml)) {
113
+ this.innerHtml(innerHtml);
114
+ }
115
+ }
116
+ setInnerText(innerText) {
117
+ if ((0, knockout_1.isSubscribable)(this.innerText)) {
118
+ this.innerText(innerText);
119
+ }
120
+ }
121
+ removeClasses(classNames) {
122
+ if ((0, knockout_1.isSubscribable)(this.classNames)) {
123
+ const currentClassNames = (0, knockout_1.unwrap)(this.classNames);
124
+ for (let i = 0; i < currentClassNames.length; i++) {
125
+ if (classNames.includes(currentClassNames[i])) {
126
+ currentClassNames.splice(i, 1);
127
+ }
128
+ }
129
+ this.classNames(currentClassNames);
130
+ }
131
+ }
132
+ focus() {
133
+ }
134
+ setObservableProperty(property, value) {
135
+ const settableProperty = property;
136
+ if (settableProperty._set) {
137
+ settableProperty._set(value);
138
+ }
139
+ }
140
+ createObservableProperty(value, setter, notifyAlways) {
141
+ let internalProperty;
142
+ if ((0, knockout_1.isObservable)(value)) {
143
+ internalProperty = value;
144
+ }
145
+ else {
146
+ internalProperty = (0, knockout_1.observable)(value);
147
+ }
148
+ if (notifyAlways) {
149
+ internalProperty.extend({ notify: "always" });
150
+ }
151
+ const computed = (0, knockout_1.pureComputed)({ read: internalProperty }).extend({ notify: "always" });
152
+ const privateSettable = computed;
153
+ privateSettable._set = (value) => {
154
+ internalProperty(value);
155
+ };
156
+ const observableProperty = computed;
157
+ if (setter) {
158
+ observableProperty.set = setter;
159
+ }
160
+ else {
161
+ observableProperty.set = (value) => {
162
+ internalProperty(value);
163
+ };
164
+ }
165
+ return observableProperty;
166
+ }
167
+ createObservableArrayProperty(items, setter) {
168
+ let internalProperty;
169
+ if ((0, knockout_1.isObservable)(items)) {
170
+ internalProperty = items;
171
+ }
172
+ else {
173
+ internalProperty = (0, knockout_1.observableArray)(items);
174
+ }
175
+ const computed = (0, knockout_1.pureComputed)({ read: internalProperty }).extend({ notify: "always" });
176
+ const privateSettable = computed;
177
+ privateSettable._set = (value) => {
178
+ internalProperty(value);
179
+ };
180
+ const observableArrayProperty = computed;
181
+ if (setter) {
182
+ observableArrayProperty.set = setter;
183
+ }
184
+ else {
185
+ observableArrayProperty.set = (value) => {
186
+ internalProperty(value);
187
+ };
188
+ }
189
+ return observableArrayProperty;
190
+ }
191
+ }
192
+ exports.ViewModel = ViewModel;
193
+ function extendViewModel(target, source) {
194
+ return extend(true, target, source);
195
+ }
196
+ exports.extendViewModel = extendViewModel;
197
+ function applyViewModelToElement(viewModel, element) {
198
+ element.setAttribute("viewtype", viewModel.viewType || "View");
199
+ if (viewModel.classNames) {
200
+ applyClassesToElement((0, knockout_1.unwrap)(viewModel.classNames), true, element);
201
+ if ((0, knockout_1.isSubscribable)(viewModel.classNames)) {
202
+ viewModel.classNames.subscribe((classNames) => {
203
+ applyClassesToElement(classNames, true, element);
204
+ });
205
+ }
206
+ }
207
+ if (viewModel.attributes) {
208
+ Object.keys(viewModel.attributes).forEach((key) => {
209
+ var value = viewModel.attributes[key];
210
+ applyAttributeToElement(key, (0, knockout_1.unwrap)(value), element);
211
+ if ((0, knockout_1.isSubscribable)(value)) {
212
+ value.subscribe((newValue) => {
213
+ applyAttributeToElement(key, newValue, element);
214
+ });
215
+ }
216
+ });
217
+ }
218
+ if (viewModel.style) {
219
+ Object.keys(viewModel.style).forEach((key) => {
220
+ const style = viewModel.style[key];
221
+ element.style[key] = (0, knockout_1.unwrap)(style);
222
+ if ((0, knockout_1.isSubscribable)(style)) {
223
+ style.subscribe((newStyle) => {
224
+ element.style[key] = newStyle;
225
+ });
226
+ }
227
+ });
228
+ }
229
+ if (!!viewModel.innerHtml) {
230
+ element.innerHTML = (0, knockout_1.unwrap)(viewModel.innerHtml);
231
+ if ((0, knockout_1.isSubscribable)(viewModel.innerHtml)) {
232
+ viewModel.innerHtml.subscribe((innerHtml) => {
233
+ element.innerHTML = innerHtml;
234
+ });
235
+ }
236
+ }
237
+ if (!!viewModel.innerText) {
238
+ element.innerText = (0, knockout_1.unwrap)(viewModel.innerText);
239
+ if ((0, knockout_1.isSubscribable)(viewModel.innerText)) {
240
+ viewModel.innerText.subscribe((innerText) => {
241
+ element.innerText = innerText;
242
+ });
243
+ }
244
+ }
245
+ if (viewModel.userSelectable === false) {
246
+ applyEventListenerToElement("selectstart", () => { return false; }, { passive: true }, element);
247
+ element.style.userSelect = "none";
248
+ }
249
+ if (viewModel.addViewModelToDataObject) {
250
+ if (!element["data"]) {
251
+ element["data"] = {};
252
+ }
253
+ element["data"].viewModel = viewModel;
254
+ }
255
+ if (viewModel.eventListeners) {
256
+ applyEventListenersToElement(viewModel, element);
257
+ }
258
+ applyVisibilityToElement((0, knockout_1.unwrap)(viewModel.visible), element);
259
+ if ((0, knockout_1.isSubscribable)(viewModel.visible)) {
260
+ viewModel.visible.subscribe((visible) => {
261
+ applyVisibilityToElement(visible, element);
262
+ });
263
+ }
264
+ applyDisabledToElement((0, knockout_1.unwrap)(viewModel.disabled), element);
265
+ if ((0, knockout_1.isSubscribable)(viewModel.disabled)) {
266
+ viewModel.disabled.subscribe((disabled) => {
267
+ applyDisabledToElement(disabled, element);
268
+ });
269
+ }
270
+ viewModel.focus = () => {
271
+ element.focus();
272
+ };
273
+ }
274
+ exports.applyViewModelToElement = applyViewModelToElement;
275
+ function applyVisibilityToElement(visible, element) {
276
+ if (visible === false) {
277
+ element.classList.add("hidden");
278
+ }
279
+ else {
280
+ element.classList.remove("hidden");
281
+ }
282
+ }
283
+ function applyDisabledToElement(disabled, element) {
284
+ if (disabled) {
285
+ element.setAttribute("disabled", "disabled");
286
+ }
287
+ else {
288
+ element.removeAttribute("disabled");
289
+ }
290
+ }
291
+ function applyEventListenersToElement(viewModel, element) {
292
+ const clickEventListeners = new Array();
293
+ const doubleClickEventListeners = new Array();
294
+ Object.entries(viewModel.eventListeners).forEach((entry) => {
295
+ var eventName = entry[0];
296
+ var eventListener = entry[1];
297
+ if (eventName === "click") {
298
+ clickEventListeners.push(eventListener);
299
+ return;
300
+ }
301
+ if (eventName === "dblclick") {
302
+ doubleClickEventListeners.push(eventListener);
303
+ return;
304
+ }
305
+ if (eventName === "dragstart") {
306
+ element.setAttribute("draggable", "true");
307
+ }
308
+ if ((0, event_1.isGlobalEvent)(eventName)) {
309
+ applyEventListenerToElement(eventName, (event) => {
310
+ if (eventListener.options) {
311
+ const options = eventListener.options;
312
+ const keyEvent = event;
313
+ if (options.altKey && !keyEvent.altKey) {
314
+ return;
315
+ }
316
+ if (options.shiftKey && !keyEvent.shiftKey) {
317
+ return;
318
+ }
319
+ if (options.ctrlKey && !keyEvent.ctrlKey) {
320
+ return;
321
+ }
322
+ if (options.eventKey && options.eventKey !== keyEvent.key) {
323
+ return;
324
+ }
325
+ }
326
+ eventListener.listener.call(viewModel, event);
327
+ }, eventListener.options, element);
328
+ }
329
+ else if (event_1.mouseEvents[eventName] && userAgent_1.userAgent.device.supportsMouseEvents) {
330
+ applyEventListenerToElement(eventName, eventListener.listener, eventListener.options, element);
331
+ }
332
+ else if (event_1.touchEvents[eventName] && userAgent_1.userAgent.device.supportsTouchEvents) {
333
+ applyEventListenerToElement(eventName, eventListener.listener, eventListener.options, element);
334
+ }
335
+ });
336
+ clickEventListeners.forEach((clickEventListener) => {
337
+ if (userAgent_1.userAgent.device.supportsTouchEvents) {
338
+ applyEventListenerToElement("tap", clickEventListener.listener, clickEventListener.options, element);
339
+ }
340
+ if (userAgent_1.userAgent.device.supportsMouseEvents) {
341
+ applyEventListenerToElement("click", clickEventListener.listener, clickEventListener.options, element);
342
+ }
343
+ });
344
+ doubleClickEventListeners.forEach((doubleClickEventListener) => {
345
+ if (userAgent_1.userAgent.device.supportsTouchEvents) {
346
+ applyEventListenerToElement("dbltap", doubleClickEventListener.listener, doubleClickEventListener.options, element);
347
+ }
348
+ if (userAgent_1.userAgent.device.supportsMouseEvents) {
349
+ applyEventListenerToElement("dblclick", doubleClickEventListener.listener, doubleClickEventListener.options, element);
350
+ }
351
+ });
352
+ }
353
+ function applyEventListenerToElement(type, listener, options, element) {
354
+ if (!type) {
355
+ throw new Error("type is mandatory");
356
+ }
357
+ if (!listener) {
358
+ throw new Error("listener is mandatory");
359
+ }
360
+ if (!options) {
361
+ options = {};
362
+ }
363
+ if (!options.passive) {
364
+ options.passive = false;
365
+ }
366
+ if (!options.once) {
367
+ options.once = false;
368
+ }
369
+ if (element.addEventListener) {
370
+ element.addEventListener(type, (event) => {
371
+ listener(event);
372
+ }, {
373
+ passive: options.passive,
374
+ once: options.once
375
+ });
376
+ }
377
+ else if (element["attachEvent"]) {
378
+ element["attachEvent"](type, (event) => {
379
+ listener(event);
380
+ });
381
+ }
382
+ else {
383
+ throw "Your browser does not support 'addEventListener'";
384
+ }
385
+ }
386
+ function applyClassesToElement(classNames, replace, element) {
387
+ if (replace) {
388
+ element.className = "";
389
+ }
390
+ if (classNames) {
391
+ classNames.forEach((className) => {
392
+ element.classList.add(className);
393
+ });
394
+ }
395
+ }
396
+ function applyAttributeToElement(name, value, element) {
397
+ if (value === null || value === undefined) {
398
+ element.removeAttribute(name);
399
+ }
400
+ else {
401
+ element.setAttribute(name, value);
402
+ }
403
+ }
404
+ //# sourceMappingURL=ViewModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewModel.js","sourceRoot":"","sources":["../src/ViewModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { Subscribable } from "knockout";
2
+ export interface Attributes {
3
+ alt?: string;
4
+ disabled?: string;
5
+ href?: string;
6
+ target?: string;
7
+ id?: string;
8
+ src?: string;
9
+ title?: string;
10
+ class?: string;
11
+ tabindex?: number;
12
+ draggable?: string;
13
+ placeholder?: string;
14
+ for?: string;
15
+ type?: string;
16
+ value?: string;
17
+ view?: string;
18
+ checked?: string;
19
+ }
20
+ export interface AttributesSubscribable {
21
+ alt?: string | Subscribable<string>;
22
+ disabled?: string | Subscribable<string>;
23
+ href?: string | Subscribable<string>;
24
+ target?: string | Subscribable<string>;
25
+ id?: string | Subscribable<string>;
26
+ src?: string | Subscribable<string>;
27
+ title?: string | Subscribable<string>;
28
+ class?: string | Subscribable<string>;
29
+ tabindex?: number | Subscribable<number>;
30
+ draggable?: string | Subscribable<string>;
31
+ placeholder?: string | Subscribable<string>;
32
+ for?: string | Subscribable<string>;
33
+ type?: string | Subscribable<string>;
34
+ value?: string | Subscribable<string>;
35
+ view?: string | Subscribable<string>;
36
+ checked?: string | Subscribable<string>;
37
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":""}