@viewfly/platform-browser 0.0.1-alpha.1 → 0.0.1-alpha.11

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.
@@ -35,8 +35,7 @@ export declare class DomRenderer extends NativeRenderer<HTMLElement, Text> {
35
35
  remove(node: HTMLElement | Text): void;
36
36
  setProperty(node: HTMLElement, key: string, value: any): void;
37
37
  removeProperty(node: HTMLElement, key: string): void;
38
- addClass(target: HTMLElement, name: string): void;
39
- removeClass(target: HTMLElement, name: string): void;
38
+ setClass(target: HTMLElement, className: string): void;
40
39
  setStyle(target: HTMLElement, key: string, value: any): void;
41
40
  removeStyle(target: HTMLElement, key: string): void;
42
41
  listen<T = any>(node: HTMLElement, type: string, callback: (ev: T) => any): void;
@@ -0,0 +1,2 @@
1
+ import { RootNode, Viewfly } from '@viewfly/core';
2
+ export declare function fork(host: HTMLElement, root: RootNode): Viewfly;
@@ -1,4 +1,4 @@
1
- import { NativeRenderer, Viewfly } from '@viewfly/core';
1
+ import { NativeRenderer, Viewfly, makeError, provide, onDestroy } from '@viewfly/core';
2
2
  import { Injectable } from '@tanbo/di';
3
3
 
4
4
  /******************************************************************************
@@ -145,15 +145,9 @@ let DomRenderer = class DomRenderer extends NativeRenderer {
145
145
  parent.appendChild(newChild);
146
146
  }
147
147
  prependChild(parent, newChild) {
148
- if (newChild === parent.childNodes[0]) {
149
- return;
150
- }
151
148
  parent.prepend(newChild);
152
149
  }
153
150
  insertAfter(newNode, ref) {
154
- if (ref.nextSibling === newNode) {
155
- return;
156
- }
157
151
  if (ref.nextSibling) {
158
152
  this.insertBefore(newNode, ref.nextSibling);
159
153
  }
@@ -176,7 +170,7 @@ let DomRenderer = class DomRenderer extends NativeRenderer {
176
170
  if (booleanTagNames && booleanTagNames.includes(key)) {
177
171
  node[key] = Boolean(value);
178
172
  }
179
- if (valueTagNames && valueTagNames.includes(key)) {
173
+ else if (valueTagNames && valueTagNames.includes(key)) {
180
174
  if (node[key] === value) {
181
175
  return;
182
176
  }
@@ -186,6 +180,7 @@ let DomRenderer = class DomRenderer extends NativeRenderer {
186
180
  removeProperty(node, key) {
187
181
  if (this.possibleXlinkNames[key]) {
188
182
  this.removeXlinkAttribute(node, this.possibleXlinkNames[key]);
183
+ return;
189
184
  }
190
185
  node.removeAttribute(key);
191
186
  const tag = node.tagName.toLowerCase();
@@ -194,15 +189,12 @@ let DomRenderer = class DomRenderer extends NativeRenderer {
194
189
  if (booleanTagNames && booleanTagNames.includes(key)) {
195
190
  node[key] = false;
196
191
  }
197
- if (valueTagNames && valueTagNames.includes(key)) {
192
+ else if (valueTagNames && valueTagNames.includes(key)) {
198
193
  node[key] = '';
199
194
  }
200
195
  }
201
- addClass(target, name) {
202
- target.classList.add(name);
203
- }
204
- removeClass(target, name) {
205
- target.classList.remove(name);
196
+ setClass(target, className) {
197
+ target.className = className || '';
206
198
  }
207
199
  setStyle(target, key, value) {
208
200
  target.style[key] = value !== null && value !== void 0 ? value : '';
@@ -217,20 +209,15 @@ let DomRenderer = class DomRenderer extends NativeRenderer {
217
209
  node.removeEventListener(type, callback);
218
210
  }
219
211
  syncTextContent(target, content) {
220
- if (target.textContent !== content) {
221
- target.textContent = content;
222
- }
212
+ target.textContent = content;
223
213
  }
224
214
  setXlinkAttribute(target, key, value) {
225
215
  target.setAttributeNS(this.xlinkNameSpace, key, value);
226
216
  }
227
217
  removeXlinkAttribute(target, key) {
228
- target.removeAttributeNS(this.xlinkNameSpace, key);
218
+ target.removeAttributeNS(this.xlinkNameSpace, key.split(':')[1]);
229
219
  }
230
220
  insertBefore(newNode, ref) {
231
- if (ref.previousSibling === newNode) {
232
- return;
233
- }
234
221
  ref.parentNode.insertBefore(newNode, ref);
235
222
  }
236
223
  };
@@ -267,8 +254,34 @@ function createApp(host, root, autoUpdate = true) {
267
254
  }
268
255
  ]
269
256
  });
270
- app.start();
257
+ app.run();
258
+ return app;
259
+ }
260
+
261
+ const forkErrorFn = makeError('fork');
262
+ function fork(host, root) {
263
+ let parentComponent;
264
+ try {
265
+ parentComponent = provide([]);
266
+ }
267
+ catch (_a) {
268
+ throw forkErrorFn('The fork function can only be called synchronously within a component.');
269
+ }
270
+ const app = new Viewfly({
271
+ host,
272
+ root,
273
+ context: parentComponent,
274
+ providers: [
275
+ {
276
+ provide: NativeRenderer,
277
+ useClass: DomRenderer
278
+ }
279
+ ]
280
+ });
281
+ onDestroy(() => {
282
+ app.destroy();
283
+ });
271
284
  return app;
272
285
  }
273
286
 
274
- export { DomRenderer, createApp };
287
+ export { DomRenderer, createApp, fork };
package/bundles/index.js CHANGED
@@ -147,15 +147,9 @@ exports.DomRenderer = class DomRenderer extends core.NativeRenderer {
147
147
  parent.appendChild(newChild);
148
148
  }
149
149
  prependChild(parent, newChild) {
150
- if (newChild === parent.childNodes[0]) {
151
- return;
152
- }
153
150
  parent.prepend(newChild);
154
151
  }
155
152
  insertAfter(newNode, ref) {
156
- if (ref.nextSibling === newNode) {
157
- return;
158
- }
159
153
  if (ref.nextSibling) {
160
154
  this.insertBefore(newNode, ref.nextSibling);
161
155
  }
@@ -178,7 +172,7 @@ exports.DomRenderer = class DomRenderer extends core.NativeRenderer {
178
172
  if (booleanTagNames && booleanTagNames.includes(key)) {
179
173
  node[key] = Boolean(value);
180
174
  }
181
- if (valueTagNames && valueTagNames.includes(key)) {
175
+ else if (valueTagNames && valueTagNames.includes(key)) {
182
176
  if (node[key] === value) {
183
177
  return;
184
178
  }
@@ -188,6 +182,7 @@ exports.DomRenderer = class DomRenderer extends core.NativeRenderer {
188
182
  removeProperty(node, key) {
189
183
  if (this.possibleXlinkNames[key]) {
190
184
  this.removeXlinkAttribute(node, this.possibleXlinkNames[key]);
185
+ return;
191
186
  }
192
187
  node.removeAttribute(key);
193
188
  const tag = node.tagName.toLowerCase();
@@ -196,15 +191,12 @@ exports.DomRenderer = class DomRenderer extends core.NativeRenderer {
196
191
  if (booleanTagNames && booleanTagNames.includes(key)) {
197
192
  node[key] = false;
198
193
  }
199
- if (valueTagNames && valueTagNames.includes(key)) {
194
+ else if (valueTagNames && valueTagNames.includes(key)) {
200
195
  node[key] = '';
201
196
  }
202
197
  }
203
- addClass(target, name) {
204
- target.classList.add(name);
205
- }
206
- removeClass(target, name) {
207
- target.classList.remove(name);
198
+ setClass(target, className) {
199
+ target.className = className || '';
208
200
  }
209
201
  setStyle(target, key, value) {
210
202
  target.style[key] = value !== null && value !== void 0 ? value : '';
@@ -219,20 +211,15 @@ exports.DomRenderer = class DomRenderer extends core.NativeRenderer {
219
211
  node.removeEventListener(type, callback);
220
212
  }
221
213
  syncTextContent(target, content) {
222
- if (target.textContent !== content) {
223
- target.textContent = content;
224
- }
214
+ target.textContent = content;
225
215
  }
226
216
  setXlinkAttribute(target, key, value) {
227
217
  target.setAttributeNS(this.xlinkNameSpace, key, value);
228
218
  }
229
219
  removeXlinkAttribute(target, key) {
230
- target.removeAttributeNS(this.xlinkNameSpace, key);
220
+ target.removeAttributeNS(this.xlinkNameSpace, key.split(':')[1]);
231
221
  }
232
222
  insertBefore(newNode, ref) {
233
- if (ref.previousSibling === newNode) {
234
- return;
235
- }
236
223
  ref.parentNode.insertBefore(newNode, ref);
237
224
  }
238
225
  };
@@ -269,8 +256,35 @@ function createApp(host, root, autoUpdate = true) {
269
256
  }
270
257
  ]
271
258
  });
272
- app.start();
259
+ app.run();
260
+ return app;
261
+ }
262
+
263
+ const forkErrorFn = core.makeError('fork');
264
+ function fork(host, root) {
265
+ let parentComponent;
266
+ try {
267
+ parentComponent = core.provide([]);
268
+ }
269
+ catch (_a) {
270
+ throw forkErrorFn('The fork function can only be called synchronously within a component.');
271
+ }
272
+ const app = new core.Viewfly({
273
+ host,
274
+ root,
275
+ context: parentComponent,
276
+ providers: [
277
+ {
278
+ provide: core.NativeRenderer,
279
+ useClass: exports.DomRenderer
280
+ }
281
+ ]
282
+ });
283
+ core.onDestroy(() => {
284
+ app.destroy();
285
+ });
273
286
  return app;
274
287
  }
275
288
 
276
289
  exports.createApp = createApp;
290
+ exports.fork = fork;
@@ -1,2 +1,3 @@
1
1
  export * from './create-app';
2
+ export * from './fork';
2
3
  export * from './dom-renderer';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viewfly/platform-browser",
3
- "version": "0.0.1-alpha.1",
3
+ "version": "0.0.1-alpha.11",
4
4
  "description": "Viewfly is a simple and easy-to-use JavaScript framework with an intuitive development experience.",
5
5
  "main": "./bundles/index.js",
6
6
  "module": "./bundles/index.esm.js",
@@ -16,7 +16,7 @@
16
16
  "keywords": [],
17
17
  "dependencies": {
18
18
  "@tanbo/di": "^1.1.4",
19
- "@viewfly/core": "^0.0.1-alpha.1",
19
+ "@viewfly/core": "^0.0.1-alpha.11",
20
20
  "reflect-metadata": "^0.1.13"
21
21
  },
22
22
  "devDependencies": {
@@ -37,5 +37,5 @@
37
37
  "bugs": {
38
38
  "url": "https://github.com/viewfly/viewfly.git/issues"
39
39
  },
40
- "gitHead": "abca65615d81e3a6617d5fe588cdf38142a3523a"
40
+ "gitHead": "38e6182b1ae82b0f9626742507ca7a4583d182f9"
41
41
  }