vsn 0.1.124 → 0.1.126

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 (90) hide show
  1. package/demo/demo.html +4 -8
  2. package/demo/examples/cascading-function-sheets.html +28 -0
  3. package/demo/examples/component-slots.html +16 -22
  4. package/demo/examples/loop.html +21 -0
  5. package/demo/resources/xhr-cfs.html +1 -0
  6. package/demo/resources/xhr-test-component.html +4 -0
  7. package/demo/service.html +3 -3
  8. package/demo/vsn.js +2 -2
  9. package/dist/AST/ClassNode.js +6 -3
  10. package/dist/AST/ClassNode.js.map +1 -1
  11. package/dist/AST/DispatchEventNode.d.ts +3 -1
  12. package/dist/AST/DispatchEventNode.js +48 -14
  13. package/dist/AST/DispatchEventNode.js.map +1 -1
  14. package/dist/AST/ElementQueryNode.d.ts +2 -1
  15. package/dist/AST/ElementQueryNode.js +5 -5
  16. package/dist/AST/ElementQueryNode.js.map +1 -1
  17. package/dist/AST/FunctionNode.d.ts +1 -1
  18. package/dist/AST/LoopNode.d.ts +12 -0
  19. package/dist/AST/LoopNode.js +121 -0
  20. package/dist/AST/LoopNode.js.map +1 -0
  21. package/dist/AST/OnNode.d.ts +1 -1
  22. package/dist/AST/OnNode.js.map +1 -1
  23. package/dist/AST/ScopeMemberNode.js +4 -0
  24. package/dist/AST/ScopeMemberNode.js.map +1 -1
  25. package/dist/AST.d.ts +64 -62
  26. package/dist/AST.js +82 -69
  27. package/dist/AST.js.map +1 -1
  28. package/dist/Component.d.ts +2 -0
  29. package/dist/Component.js +12 -27
  30. package/dist/Component.js.map +1 -1
  31. package/dist/DOM/AbstractDOM.d.ts +48 -0
  32. package/dist/DOM/AbstractDOM.js +937 -0
  33. package/dist/DOM/AbstractDOM.js.map +1 -0
  34. package/dist/DOM/ShadowDOM.d.ts +5 -0
  35. package/dist/DOM/ShadowDOM.js +32 -0
  36. package/dist/DOM/ShadowDOM.js.map +1 -0
  37. package/dist/DOM.d.ts +3 -48
  38. package/dist/DOM.js +6 -913
  39. package/dist/DOM.js.map +1 -1
  40. package/dist/Scope/ObjectAccessor.d.ts +7 -0
  41. package/dist/Scope/ObjectAccessor.js +40 -0
  42. package/dist/Scope/ObjectAccessor.js.map +1 -0
  43. package/dist/Scope/ScopeAbstract.d.ts +9 -0
  44. package/dist/Scope/ScopeAbstract.js +28 -0
  45. package/dist/Scope/ScopeAbstract.js.map +1 -0
  46. package/dist/Scope.d.ts +3 -2
  47. package/dist/Scope.js +37 -10
  48. package/dist/Scope.js.map +1 -1
  49. package/dist/Tag.d.ts +2 -0
  50. package/dist/Tag.js +52 -9
  51. package/dist/Tag.js.map +1 -1
  52. package/dist/helpers/VisionHelper.d.ts +1 -0
  53. package/dist/helpers/VisionHelper.js +45 -0
  54. package/dist/helpers/VisionHelper.js.map +1 -1
  55. package/dist/version.d.ts +1 -1
  56. package/dist/version.js +1 -1
  57. package/dist/vsn.js +3 -9
  58. package/dist/vsn.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/AST/ClassNode.ts +6 -3
  61. package/src/AST/DispatchEventNode.ts +19 -11
  62. package/src/AST/ElementQueryNode.ts +2 -1
  63. package/src/AST/FunctionNode.ts +1 -1
  64. package/src/AST/LoopNode.ts +35 -0
  65. package/src/AST/OnNode.ts +2 -2
  66. package/src/AST/ScopeMemberNode.ts +4 -0
  67. package/src/AST.ts +19 -7
  68. package/src/Component.ts +15 -13
  69. package/src/DOM/AbstractDOM.ts +389 -0
  70. package/src/DOM/ShadowDOM.ts +15 -0
  71. package/src/DOM.ts +4 -385
  72. package/src/Scope/ObjectAccessor.ts +21 -0
  73. package/src/Scope/ScopeAbstract.ts +11 -0
  74. package/src/Scope.ts +14 -1
  75. package/src/Tag.ts +25 -0
  76. package/src/helpers/VisionHelper.ts +6 -0
  77. package/src/version.ts +1 -1
  78. package/src/vsn.ts +3 -7
  79. package/test/AST/ClassNode.spec.ts +26 -4
  80. package/test/AST.spec.ts +21 -21
  81. package/test/Controller.spec.ts +1 -1
  82. package/test/DOM.spec.ts +3 -3
  83. package/test/Tag/TagList.spec.ts +1 -1
  84. package/test/attributes/Bind.spec.ts +12 -12
  85. package/test/attributes/JSONAttribute.spec.ts +5 -5
  86. package/test/attributes/ListItem.spec.ts +6 -6
  87. package/test/attributes/ScopeAttribute.spec.ts +2 -2
  88. package/test/attributes/ServiceAttribute.spec.ts +1 -1
  89. package/test/attributes/SetAttribute.spec.ts +3 -3
  90. package/test/attributes/Styles.spec.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"VisionHelper.js","sourceRoot":"","sources":["../../src/helpers/VisionHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VisionHelper.js","sourceRoot":"","sources":["../../src/helpers/VisionHelper.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.1.124";
1
+ export declare const VERSION = "0.1.126";
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '0.1.124';
4
+ exports.VERSION = '0.1.126';
5
5
  //# sourceMappingURL=version.js.map
package/dist/vsn.js CHANGED
@@ -68,7 +68,6 @@ var Registry_1 = require("./Registry");
68
68
  var Configuration_1 = require("./Configuration");
69
69
  var VisionHelper_1 = require("./helpers/VisionHelper");
70
70
  var AST_1 = require("./AST");
71
- var Query_1 = require("./Query");
72
71
  var EventDispatcher_1 = require("./EventDispatcher");
73
72
  var DynamicScopeData_1 = require("./Scope/DynamicScopeData");
74
73
  var version_1 = require("./version");
@@ -79,6 +78,7 @@ var Vision = /** @class */ (function (_super) {
79
78
  var _this = _super.call(this) || this;
80
79
  _this.registry = Registry_1.Registry.instance;
81
80
  _this.config = Configuration_1.Configuration.instance;
81
+ document.ondragover = function (e) { return e.cancelable && e.preventDefault(); }; // Allow dragging over document
82
82
  Registry_1.Registry.instance.tags.on('register', _this.defineComponent, _this);
83
83
  if (VisionHelper_1.VisionHelper.document) {
84
84
  document.addEventListener("DOMContentLoaded", _this.setup.bind(_this));
@@ -90,13 +90,7 @@ var Vision = /** @class */ (function (_super) {
90
90
  _this.registry.functions.register('warn', console.warn);
91
91
  _this.registry.functions.register('error', console.error);
92
92
  _this.registry.functions.register('info', console.info);
93
- _this.registry.functions.register('wait', function (seconds) { return __awaiter(_this, void 0, void 0, function () {
94
- return __generator(this, function (_a) {
95
- return [2 /*return*/, new Promise(function (resolve) {
96
- setTimeout(resolve, seconds * 1000);
97
- })];
98
- });
99
- }); });
93
+ _this.registry.functions.register('wait', VisionHelper_1.VisionHelper.wait);
100
94
  _this.registry.models.register('Object', Object);
101
95
  _this.registry.controllers.register('WrappedArray', WrappedArray_1.WrappedArray);
102
96
  _this.registry.controllers.register('Data', DynamicScopeData_1.DynamicScopeData);
@@ -105,7 +99,7 @@ var Vision = /** @class */ (function (_super) {
105
99
  window['Registry'] = Registry_1.Registry;
106
100
  window['vision'] = window['vsn'] = _this;
107
101
  window['Tree'] = AST_1.Tree;
108
- window['$'] = Query_1.Query;
102
+ window['$'] = _this.exec.bind(_this);
109
103
  VisionHelper_1.VisionHelper.window.dispatchEvent(new Event('vsn'));
110
104
  }
111
105
  return _this;
package/dist/vsn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vsn.js","sourceRoot":"","sources":["../src/vsn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vsn.js","sourceRoot":"","sources":["../src/vsn.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vsn",
3
- "version": "0.1.124",
3
+ "version": "0.1.126",
4
4
  "description": "SEO Friendly Javascript/Typescript Framework",
5
5
  "keywords": [
6
6
  "framework",
@@ -70,8 +70,7 @@ export class ClassNode extends Node implements TreeNode {
70
70
  if (root) {
71
71
  if (dom.built)
72
72
  await this.findClassElements(dom);
73
- else
74
- dom.once('builtRoot', () => this.findClassElements(dom));
73
+ dom.on('built', () => this.findClassElements(dom));
75
74
  }
76
75
  } else if (meta['PrepForSelector'] === this.fullSelector) { // Only prepare top level class if we're prepping for tag
77
76
  await this.block.prepare(tag.scope, dom, tag, meta);
@@ -94,6 +93,11 @@ export class ClassNode extends Node implements TreeNode {
94
93
  }
95
94
 
96
95
  public async constructTag(tag: Tag, dom: DOM, hasConstruct: boolean | null = null) {
96
+ if (ClassNode.preppedTags[this.fullSelector].indexOf(tag) !== -1) {
97
+ return;
98
+ }
99
+ ClassNode.preppedTags[this.fullSelector].push(tag);
100
+
97
101
  if (hasConstruct === null)
98
102
  hasConstruct = this.classScope.has('construct');
99
103
 
@@ -107,7 +111,6 @@ export class ClassNode extends Node implements TreeNode {
107
111
  await fnc();
108
112
  }
109
113
  tag.dispatch(`${this.fullSelector}.construct`, tag.element.id);
110
- ClassNode.preppedTags[this.fullSelector].push(tag);
111
114
  ClassNode.addPreparedClassToElement(tag.element, this.fullSelector);
112
115
  }
113
116
 
@@ -5,12 +5,14 @@ import {Token, TokenType, Tree, TreeNode} from "../AST";
5
5
  import {Node} from "./Node";
6
6
  import {ObjectNode} from "./ObjectNode";
7
7
  import {ScopeData} from "../Scope/ScopeData";
8
+ import {ElementQueryNode} from "./ElementQueryNode";
8
9
 
9
10
  export class DispatchEventNode extends Node implements TreeNode {
10
11
  constructor(
11
12
  public readonly name: string,
12
13
  public readonly data: ObjectNode | null,
13
- public readonly bubbles: boolean = false
14
+ public readonly bubbles: boolean = false,
15
+ public readonly elementRef: ElementQueryNode | null,
14
16
  ) {
15
17
  super();
16
18
  }
@@ -23,28 +25,34 @@ export class DispatchEventNode extends Node implements TreeNode {
23
25
  }
24
26
 
25
27
  public async evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
26
- let detail = this.data ? await this.data.evaluate(scope, dom, tag) : {};
28
+ let detail = this.data ? (await this.data.evaluate(scope, dom, tag)).objectify : {};
27
29
  if (detail instanceof Scope)
28
30
  detail = detail.data.getData();
29
31
  else if (detail instanceof ScopeData)
30
32
  detail = detail.getData();
31
33
 
32
- detail['source'] = tag.element;
34
+ let targets: Tag[] = [tag];
35
+ if (this.elementRef) {
36
+ targets = await this.elementRef.evaluate(scope, dom, tag, true);
37
+ }
33
38
 
34
- tag.element.dispatchEvent(new CustomEvent(this.name, {
35
- bubbles: this.bubbles,
36
- detail: detail
37
- }));
39
+ for (const target of targets) {
40
+ detail['source'] = target.element;
41
+ target.element.dispatchEvent(new CustomEvent(this.name, {
42
+ bubbles: this.bubbles,
43
+ detail: detail
44
+ }));
45
+ }
38
46
  }
39
47
 
40
48
  public static parse(lastNode, token, tokens: Token[]) {
41
49
  const name = tokens.shift();
42
50
  let data: ObjectNode = null;
43
- if (tokens.length && tokens[0].type === TokenType.L_PAREN) {
44
- const containedTokens = Tree.getNextStatementTokens(tokens, true, true, false);
51
+ if (tokens.length && tokens[0].type === TokenType.L_BRACE) {
52
+ const containedTokens = Tree.getNextStatementTokens(tokens, false, false, true);
45
53
  data = Tree.processTokens(containedTokens).statements[0] as ObjectNode;
46
54
  }
47
-
48
- return new DispatchEventNode(name.value, data, name.full.startsWith('!!!'));
55
+ const elementRef = lastNode instanceof ElementQueryNode ? lastNode : null;
56
+ return new DispatchEventNode(name.value, data, name.full.startsWith('!!!'), elementRef);
49
57
  }
50
58
  }
@@ -1,8 +1,9 @@
1
1
  import {Scope} from "../Scope";
2
- import {DOM, EQuerySelectDirection} from "../DOM";
2
+ import {DOM} from "../DOM";
3
3
  import {Tag} from "../Tag";
4
4
  import {Token, TreeNode} from "../AST";
5
5
  import {Node} from "./Node";
6
+ import {EQuerySelectDirection} from "../DOM/AbstractDOM";
6
7
 
7
8
  export class ElementQueryNode extends Node implements TreeNode {
8
9
  protected requiresPrep: boolean = true;
@@ -57,7 +57,7 @@ export class FunctionNode extends Node implements TreeNode {
57
57
  }
58
58
  }
59
59
 
60
- public static parse<T = FunctionNode>(lastNode, token, tokens: Token[], cls: any = FunctionNode): FunctionNode {
60
+ public static parse<T = FunctionNode>(lastNode, token, tokens: Token[], cls: any = FunctionNode): T {
61
61
  tokens.shift(); // skip 'func'
62
62
  const name = tokens.shift();
63
63
  const modifiers = this.moveModifiers(tokens);
@@ -0,0 +1,35 @@
1
+ import {Token, TreeNode} from "../AST";
2
+ import {FunctionNode} from "./FunctionNode";
3
+ import {Scope} from "../Scope";
4
+ import {DOM} from "../DOM";
5
+ import {Tag} from "../Tag";
6
+
7
+ export class LoopNode extends FunctionNode implements TreeNode {
8
+ protected looping?: boolean = true;
9
+
10
+ public async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta): Promise<void> {
11
+ const classPrep = meta?.ClassNodePrepare; // Don't add event handler if we're in class prep
12
+ if (tag && !classPrep) {
13
+ const func = await this.getFunction(tag.scope || scope, dom, tag);
14
+ this.setTimeout(func);
15
+ }
16
+ await super.prepare(scope, dom, tag, meta);
17
+ }
18
+
19
+ async loop(func) {
20
+ if (this.looping) {
21
+ await func();
22
+ this.setTimeout(func);
23
+ }
24
+ }
25
+
26
+ setTimeout(func, time: number = 33) {
27
+ setTimeout(async () => {
28
+ await this.loop(func);
29
+ }, time);
30
+ }
31
+
32
+ public static parse<T = LoopNode>(lastNode, token, tokens: Token[]): T {
33
+ return super.parse<T>(lastNode, token, tokens, LoopNode);
34
+ }
35
+ }
package/src/AST/OnNode.ts CHANGED
@@ -17,7 +17,7 @@ export class OnNode extends FunctionNode implements TreeNode {
17
17
  await super.prepare(scope, dom, tag, meta);
18
18
  }
19
19
 
20
- public static parse(lastNode, token, tokens: Token[]): OnNode {
21
- return super.parse<OnNode>(lastNode, token, tokens, OnNode);
20
+ public static parse<T = OnNode>(lastNode, token, tokens: Token[]): T {
21
+ return super.parse<T>(lastNode, token, tokens, OnNode);
22
22
  }
23
23
  }
@@ -7,6 +7,8 @@ import {TreeNode} from "../AST";
7
7
  import {Node} from "./Node";
8
8
  import {ElementQueryNode} from "./ElementQueryNode";
9
9
  import {ScopeNodeAbstract} from "./ScopeNodeAbstract";
10
+ import {ObjectAccessor} from "../Scope/ObjectAccessor";
11
+ import {ScopeAbstract} from "../Scope/ScopeAbstract";
10
12
 
11
13
  export class ScopeMemberNode extends ScopeNodeAbstract implements TreeNode {
12
14
  constructor(
@@ -45,6 +47,8 @@ export class ScopeMemberNode extends ScopeNodeAbstract implements TreeNode {
45
47
  for (let parent of scopes) {
46
48
  if (parent instanceof DOMObject)
47
49
  parent = parent.scope;
50
+ else if (parent && !(parent instanceof ScopeAbstract))
51
+ parent = new ObjectAccessor(parent);
48
52
 
49
53
  if (!parent) {
50
54
  throw Error(`Cannot access "${await this.name.evaluate(scope, dom, tag)}" of undefined.`);
package/src/AST.ts CHANGED
@@ -34,6 +34,7 @@ import {DispatchEventNode} from "./AST/DispatchEventNode";
34
34
  import {WithNode} from "./AST/WithNode";
35
35
  import {AsNode} from "./AST/AsNode";
36
36
  import {NamedStackNode} from "./AST/NamedStackNode";
37
+ import {LoopNode} from "./AST/LoopNode";
37
38
 
38
39
  function lower(str: string): string {
39
40
  return str ? str.toLowerCase() : null;
@@ -65,6 +66,7 @@ export enum TokenType {
65
66
  TYPE_UINT,
66
67
  TYPE_FLOAT,
67
68
  TYPE_STRING,
69
+ TYPE_BOOL,
68
70
  RETURN,
69
71
  NOT,
70
72
  OF,
@@ -77,6 +79,7 @@ export enum TokenType {
77
79
  ELSE_IF,
78
80
  ELSE,
79
81
  FUNC,
82
+ LOOP,
80
83
  ON,
81
84
  CLASS,
82
85
  NAME,
@@ -156,24 +159,24 @@ const TOKEN_PATTERNS: TokenPattern[] = [
156
159
  },
157
160
  {
158
161
  type: TokenType.TYPE_INT,
159
- pattern: /^int+/
162
+ pattern: /^int\s/
160
163
  },
161
164
  {
162
165
  type: TokenType.TYPE_UINT,
163
- pattern: /^uint+/
166
+ pattern: /^uint\s/
164
167
  },
165
168
  {
166
169
  type: TokenType.TYPE_FLOAT,
167
- pattern: /^float+/
170
+ pattern: /^float\s/
171
+ },
172
+ {
173
+ type: TokenType.TYPE_BOOL,
174
+ pattern: /^bool\s/
168
175
  },
169
176
  {
170
177
  type: TokenType.UNIT,
171
178
  pattern: /^\d+\.?\d?(?:cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|%)/
172
179
  },
173
- {
174
- type: TokenType.TYPE_STRING,
175
- pattern: /^string+/
176
- },
177
180
  {
178
181
  type: TokenType.BOOLEAN_LITERAL,
179
182
  pattern: /^(true|false)/
@@ -230,6 +233,10 @@ const TOKEN_PATTERNS: TokenPattern[] = [
230
233
  type: TokenType.FUNC,
231
234
  pattern: /^func\s/
232
235
  },
236
+ {
237
+ type: TokenType.LOOP,
238
+ pattern: /^loop\s/
239
+ },
233
240
  {
234
241
  type: TokenType.ON,
235
242
  pattern: /^on\s/
@@ -577,6 +584,11 @@ export class Tree {
577
584
  lastBlock = node;
578
585
  blockNodes.push(node);
579
586
  node = null;
587
+ } else if (token.type === TokenType.LOOP) {
588
+ node = LoopNode.parse(node, token, tokens);
589
+ lastBlock = node;
590
+ blockNodes.push(node);
591
+ node = null;
580
592
  } else if (token.type === TokenType.ON) {
581
593
  node = OnNode.parse(node, token, tokens);
582
594
  lastBlock = node;
package/src/Component.ts CHANGED
@@ -1,16 +1,20 @@
1
1
  import {Registry} from "./Registry";
2
- import {DOM} from "./DOM";
3
2
  import {SlotTag} from "./Tag/SlotTag";
4
3
  import {SlottedTag} from "./Tag/SlottedTag";
4
+ import {ShadowDOM} from "./DOM/ShadowDOM";
5
+ import {DOM} from "./DOM";
5
6
 
6
7
  export class Component extends HTMLElement {
7
8
  protected readonly shadow: ShadowRoot;
9
+ protected readonly shadowDOM: ShadowDOM;
8
10
 
9
11
  constructor() {
10
12
  super();
11
13
  Object.setPrototypeOf(this, Component.prototype);
12
14
 
15
+ this.shadowDOM = new ShadowDOM(DOM.instance, this, false);
13
16
  this.shadow = this.attachShadow({mode: 'open'});
17
+
14
18
  const templateId = this.getAttribute('template');
15
19
  let template: HTMLTemplateElement;
16
20
 
@@ -28,34 +32,32 @@ export class Component extends HTMLElement {
28
32
  const slotPromises = [];
29
33
  const tagsToSetup = [];
30
34
  this.shadow.querySelectorAll('slot').forEach((slot) => {
31
- const slotTagPromise = DOM.instance.buildTag(slot,false, SlotTag);
35
+ const slotTagPromise = this.shadowDOM.buildTag(slot,false, SlotTag);
32
36
  const promise = new Promise<SlotTag>((resolve, reject) => {
33
37
  slot.addEventListener('slotchange', (e) => {
34
38
  slotTagPromise.then(async (slotTag) => {
35
-
36
39
  for (const child of slot.assignedNodes()) {
37
- const t = await DOM.instance.buildTag<SlottedTag>(child as HTMLElement, false, SlottedTag);
40
+ const t = await this.shadowDOM.buildTag<SlottedTag>(child as HTMLElement, false, SlottedTag);
38
41
  await t?.slotted(slotTag);
39
42
  tagsToSetup.push(t);
40
43
  }
41
44
  resolve(slotTag);
42
45
  });
43
46
  });
44
- })
47
+ });
45
48
  slotPromises.push(promise);
46
49
  });
47
50
  Promise.all(slotPromises).then(async (slotTags: SlotTag[]) => {
48
- await DOM.instance.buildFrom(this, false, true);
49
- await DOM.instance.setupTags(slotTags);
50
- await DOM.instance.setupTags(tagsToSetup);
51
+ console.log('Building after slot setup', this);
51
52
  });
52
53
  }
53
54
 
54
55
  async connectedCallback() {
55
- const tag = await DOM.instance.buildTag(this, true);
56
- tag.createScope(true);
57
- await DOM.instance.buildFrom(this.shadow);
58
- await tag.dom.resetBranch(tag);
59
- await tag.dom.setupTags([tag]);
56
+ //const tag = await this.shadowDOM.buildTag(this, true);
57
+ //tag.createScope(true);
58
+ console.log('Building from shadow', this.shadow);
59
+ await this.shadowDOM.buildFrom(this.shadow, true, true);
60
+ ///await tag.dom.resetBranch(tag);
61
+ //await tag.dom.setupTags([tag]);
60
62
  }
61
63
  }