@ibyar/core 0.8.6 → 1.1.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.
Files changed (144) hide show
  1. package/annotation/decorators.d.ts +20 -285
  2. package/annotation/decorators.d.ts.map +1 -0
  3. package/annotation/decorators.js +92 -84
  4. package/annotation/decorators.js.map +1 -1
  5. package/annotation/options.d.ts +276 -0
  6. package/annotation/options.d.ts.map +1 -0
  7. package/annotation/options.js +2 -0
  8. package/annotation/options.js.map +1 -0
  9. package/binding/binding.expressions.d.ts +2 -1
  10. package/binding/binding.expressions.d.ts.map +1 -0
  11. package/binding/binding.expressions.js +149 -124
  12. package/binding/binding.expressions.js.map +1 -1
  13. package/component/component.d.ts +13 -11
  14. package/component/component.d.ts.map +1 -0
  15. package/component/component.js +39 -45
  16. package/component/component.js.map +1 -1
  17. package/component/custom-element.d.ts +1 -3
  18. package/component/custom-element.d.ts.map +1 -0
  19. package/component/custom-element.js.map +1 -1
  20. package/component/events.d.ts +1 -0
  21. package/component/events.d.ts.map +1 -0
  22. package/component/events.js +4 -3
  23. package/component/events.js.map +1 -1
  24. package/component/lifecycle.d.ts +1 -0
  25. package/component/lifecycle.d.ts.map +1 -0
  26. package/component/reflect.d.ts +12 -15
  27. package/component/reflect.d.ts.map +1 -0
  28. package/component/reflect.js +28 -47
  29. package/component/reflect.js.map +1 -1
  30. package/context/stack.d.ts +1 -0
  31. package/context/stack.d.ts.map +1 -0
  32. package/context/subscription.d.ts +1 -0
  33. package/context/subscription.d.ts.map +1 -0
  34. package/directive/directive.d.ts +1 -0
  35. package/directive/directive.d.ts.map +1 -0
  36. package/directive/directive.js +8 -0
  37. package/directive/directive.js.map +1 -1
  38. package/directive/parser.d.ts +1 -0
  39. package/directive/parser.d.ts.map +1 -0
  40. package/directive/parser.js +9 -7
  41. package/directive/parser.js.map +1 -1
  42. package/directive/providers.d.ts +1 -0
  43. package/directive/providers.d.ts.map +1 -0
  44. package/directive/providers.js +2 -1
  45. package/directive/providers.js.map +1 -1
  46. package/html/deserialize.d.ts +1 -0
  47. package/html/deserialize.d.ts.map +1 -0
  48. package/html/expression.d.ts +1 -0
  49. package/html/expression.d.ts.map +1 -0
  50. package/html/expression.js +2 -2
  51. package/html/expression.js.map +1 -1
  52. package/html/types.d.ts +1 -0
  53. package/html/types.d.ts.map +1 -0
  54. package/index.d.ts +2 -2
  55. package/index.d.ts.map +1 -0
  56. package/index.js +1 -2
  57. package/index.js.map +1 -1
  58. package/linker/change-detector-ref.d.ts +1 -0
  59. package/linker/change-detector-ref.d.ts.map +1 -0
  60. package/linker/template-ref.d.ts +1 -0
  61. package/linker/template-ref.d.ts.map +1 -0
  62. package/linker/template-ref.js +5 -0
  63. package/linker/template-ref.js.map +1 -1
  64. package/linker/view-container-ref.d.ts +4 -2
  65. package/linker/view-container-ref.d.ts.map +1 -0
  66. package/linker/view-container-ref.js +9 -7
  67. package/linker/view-container-ref.js.map +1 -1
  68. package/linker/view-ref.d.ts +1 -0
  69. package/linker/view-ref.d.ts.map +1 -0
  70. package/linker/view-ref.js +5 -2
  71. package/linker/view-ref.js.map +1 -1
  72. package/node.d.ts +1 -0
  73. package/node.d.ts.map +1 -0
  74. package/package.json +8 -9
  75. package/pipe/pipe.d.ts +1 -0
  76. package/pipe/pipe.d.ts.map +1 -0
  77. package/pipe/pipe.js +2 -1
  78. package/pipe/pipe.js.map +1 -1
  79. package/providers/provider.d.ts +15 -13
  80. package/providers/provider.d.ts.map +1 -0
  81. package/providers/provider.js +13 -15
  82. package/providers/provider.js.map +1 -1
  83. package/scope/variables.d.ts +19 -0
  84. package/scope/variables.d.ts.map +1 -0
  85. package/scope/variables.js +38 -0
  86. package/scope/variables.js.map +1 -0
  87. package/utils/elements-util.d.ts +1 -0
  88. package/utils/elements-util.d.ts.map +1 -0
  89. package/utils/path.d.ts +1 -0
  90. package/utils/path.d.ts.map +1 -0
  91. package/utils/typeof.d.ts +3 -0
  92. package/utils/typeof.d.ts.map +1 -0
  93. package/utils/typeof.js.map +1 -1
  94. package/utils/utils.d.ts +1 -0
  95. package/utils/utils.d.ts.map +1 -0
  96. package/view/base-view.d.ts +1 -0
  97. package/view/base-view.d.ts.map +1 -0
  98. package/view/base-view.js +33 -29
  99. package/view/base-view.js.map +1 -1
  100. package/view/form-view.d.ts +1 -0
  101. package/view/form-view.d.ts.map +1 -0
  102. package/view/form-view.js +70 -67
  103. package/view/form-view.js.map +1 -1
  104. package/view/mutation.d.ts +1 -0
  105. package/view/mutation.d.ts.map +1 -0
  106. package/view/mutation.js +35 -35
  107. package/view/mutation.js.map +1 -1
  108. package/view/render.d.ts +2 -0
  109. package/view/render.d.ts.map +1 -0
  110. package/view/render.js +25 -13
  111. package/view/render.js.map +1 -1
  112. package/view/utils.d.ts +4 -3
  113. package/view/utils.d.ts.map +1 -0
  114. package/view/utils.js.map +1 -1
  115. package/view/view.d.ts +5 -4
  116. package/view/view.d.ts.map +1 -0
  117. package/view/view.js +34 -7
  118. package/view/view.js.map +1 -1
  119. package/zone/bootstrap.d.ts +1 -0
  120. package/zone/bootstrap.d.ts.map +1 -0
  121. package/zone/proxy.d.ts +1 -0
  122. package/zone/proxy.d.ts.map +1 -0
  123. package/zone/proxy.js +1 -0
  124. package/zone/proxy.js.map +1 -1
  125. package/zone/task.d.ts +1 -0
  126. package/zone/task.d.ts.map +1 -0
  127. package/zone/task.js +11 -3
  128. package/zone/task.js.map +1 -1
  129. package/zone/zone.d.ts +1 -0
  130. package/zone/zone.d.ts.map +1 -0
  131. package/zone/zone.js +8 -6
  132. package/zone/zone.js.map +1 -1
  133. package/providers/injector.d.ts +0 -10
  134. package/providers/injector.js +0 -27
  135. package/providers/injector.js.map +0 -1
  136. package/render/host-binding.handler.d.ts +0 -46
  137. package/render/host-binding.handler.js +0 -60
  138. package/render/host-binding.handler.js.map +0 -1
  139. package/render/host-listener.handler.d.ts +0 -50
  140. package/render/host-listener.handler.js +0 -88
  141. package/render/host-listener.handler.js.map +0 -1
  142. package/render/render-handler.d.ts +0 -11
  143. package/render/render-handler.js +0 -2
  144. package/render/render-handler.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/core/scope/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACrB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CAChC;AAED,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAE5C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,OAAO,CAAC,KAAK;gBAA3B,IAAI,EAAE,MAAM,EAAU,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAYnF;AAED,qBAAa,SAAS;IAErB,OAAO,CAAC,MAAM,CAAgC;IAE9C,QAAQ,CAAC,CAAC,SAAS,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC;IAS/C,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAIpD,QAAQ,CAAC,CAAC,SAAS,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;CAI3D;AAID,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAElE"}
@@ -0,0 +1,38 @@
1
+ import { ReactiveScope } from '@ibyar/expressions';
2
+ export class ScopeVariable {
3
+ name;
4
+ scope;
5
+ constructor(name, scope, value) {
6
+ this.name = name;
7
+ this.scope = scope;
8
+ this.scope.set(name, value);
9
+ }
10
+ get() {
11
+ return this.scope.get(this.name);
12
+ }
13
+ set(value) {
14
+ this.scope.set(this.name, value);
15
+ }
16
+ }
17
+ export class ScopeEdit {
18
+ scopes = [];
19
+ getScope() {
20
+ if (this.scopes.length == 0) {
21
+ const scope = ReactiveScope.blockScope();
22
+ this.scopes.push(scope);
23
+ return scope;
24
+ }
25
+ return this.scopes.at(-1);
26
+ }
27
+ pushScope(scope) {
28
+ this.scopes.push(scope);
29
+ }
30
+ popScope() {
31
+ return this.scopes.pop();
32
+ }
33
+ }
34
+ let scopeEditor = new ScopeEdit();
35
+ export function input(name, value) {
36
+ return new ScopeVariable(name, scopeEditor.getScope(), value);
37
+ }
38
+ //# sourceMappingURL=variables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/core/scope/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQ5D,MAAM,OAAO,aAAa;IAEJ;IAAsB;IAA3C,YAAqB,IAAY,EAAU,KAA6B,EAAE,KAAS;QAA9D,SAAI,GAAJ,IAAI,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAwB;QACvE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,KAAoB;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;CAED;AAED,MAAM,OAAO,SAAS;IAEb,MAAM,GAA6B,EAAE,CAAC;IAE9C,QAAQ;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAK,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO,KAAK,CAAC;SACb;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAqB,CAAC;IAC/C,CAAC;IAED,SAAS,CAAoB,KAAuB;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;CAED;AAED,IAAI,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;AAElC,MAAM,UAAU,KAAK,CAAI,IAAY,EAAE,KAAS;IAC/C,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { Context, ReactiveScope } from '@ibyar/expressions';\n\nexport interface ScopeVariable<T> {\n\treadonly name: string;\n\tget(): T | undefined;\n\tset(value: T | undefined): void;\n}\n\nexport class ScopeVariable<T> implements ScopeVariable<T> {\n\n\tconstructor(readonly name: string, private scope: ReactiveScope<Context>, value?: T) {\n\t\tthis.scope.set(name, value);\n\t}\n\n\tget(): T | undefined {\n\t\treturn this.scope.get(this.name);\n\t}\n\n\tset(value: T | undefined): void {\n\t\tthis.scope.set(this.name, value);\n\t}\n\n}\n\nexport class ScopeEdit {\n\n\tprivate scopes: ReactiveScope<Context>[] = [];\n\n\tgetScope<T extends Context>(): ReactiveScope<T> {\n\t\tif (this.scopes.length == 0) {\n\t\t\tconst scope = ReactiveScope.blockScope<T>();\n\t\t\tthis.scopes.push(scope);\n\t\t\treturn scope;\n\t\t}\n\t\treturn this.scopes.at(-1) as ReactiveScope<T>;\n\t}\n\n\tpushScope<T extends Context>(scope: ReactiveScope<T>) {\n\t\tthis.scopes.push(scope);\n\t}\n\n\tpopScope<T extends Context>(): ReactiveScope<T> | undefined {\n\t\treturn this.scopes.pop();\n\t}\n\n}\n\nlet scopeEditor = new ScopeEdit();\n\nexport function input<T>(name: string, value?: T): ScopeVariable<T> {\n\treturn new ScopeVariable(name, scopeEditor.getScope(), value);\n}\n"]}
@@ -2,3 +2,4 @@ export declare function hasComponentAttr(element: HTMLElement, attr: string): bo
2
2
  export declare function hasAttrCustomElement(element: HTMLElement, attr: string): boolean;
3
3
  export declare function isDataAttributes(attr: string): boolean;
4
4
  export declare function hasAttr(element: HTMLElement, attr: string): boolean;
5
+ //# sourceMappingURL=elements-util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements-util.d.ts","sourceRoot":"","sources":["../../../src/core/utils/elements-util.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAM5E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQhF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,WAE5C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKnE"}
package/utils/path.d.ts CHANGED
@@ -8,3 +8,4 @@ export type TemplateUrl = {
8
8
  export declare function fetchHtmlFromModule(fileNameResolver: TemplateUrl): Promise<string>;
9
9
  export declare function htmlFullPath(fileFullPath: string): Promise<string>;
10
10
  export declare function fetchHtml(fileNameResolver: TemplateUrl | string): Promise<string>;
11
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/core/utils/path.ts"],"names":[],"mappings":"AAQA,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQjE;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEvE,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlF;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlE;AAED,wBAAgB,SAAS,CAAC,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASjF"}
package/utils/typeof.d.ts CHANGED
@@ -3,4 +3,7 @@
3
3
  */
4
4
  export interface TypeOf<T> extends Function {
5
5
  new (...values: any): T;
6
+ [key: PropertyKey]: any;
6
7
  }
8
+ export type Class<T = any> = new (...args: any) => T;
9
+ //# sourceMappingURL=typeof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeof.d.ts","sourceRoot":"","sources":["../../../src/core/utils/typeof.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,MAAM,CAAC,CAAC,CAAE,SAAQ,QAAQ;IAC1C,KAAI,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IACvB,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,CAAC;CACxB;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"typeof.js","sourceRoot":"","sources":["../../../src/core/utils/typeof.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * send the class itself, not instance\n */\nexport interface TypeOf<T> extends Function {\n\tnew(...values: any): T;\n}\n"]}
1
+ {"version":3,"file":"typeof.js","sourceRoot":"","sources":["../../../src/core/utils/typeof.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * send the class itself, not instance\n */\nexport interface TypeOf<T> extends Function {\n\tnew(...values: any): T;\n\t[key: PropertyKey]: any;\n}\n\nexport type Class<T = any> = new (...args: any) => T;\n"]}
package/utils/utils.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare function ToCamelCase(str: string): string;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/utils.ts"],"names":[],"mappings":"AACA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,UAKtC"}
@@ -1,3 +1,4 @@
1
1
  import type { TypeOf } from '../utils/typeof.js';
2
2
  import { HTMLComponent } from '../component/custom-element.js';
3
3
  export declare function baseFactoryView<T extends object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<HTMLComponent<T>>;
4
+ //# sourceMappingURL=base-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-view.d.ts","sourceRoot":"","sources":["../../../src/core/view/base-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAOjD,OAAO,EAAgC,aAAa,EAAa,MAAM,gCAAgC,CAAC;AASxG,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CA6UhH"}
package/view/base-view.js CHANGED
@@ -7,21 +7,21 @@ import { createModelChangeDetectorRef } from '../linker/change-detector-ref.js';
7
7
  import { createProxyZone } from '../zone/proxy.js';
8
8
  export function baseFactoryView(htmlElementType) {
9
9
  return class CustomView extends htmlElementType {
10
+ _model;
11
+ _render;
12
+ _shadowRoot;
13
+ _componentRef;
14
+ _modelScope;
15
+ _viewScope;
16
+ _zone;
17
+ subscriptions = [];
18
+ onDestroyCalls = [];
19
+ needRendering = true;
10
20
  constructor(componentRef, modelClass) {
11
21
  super();
12
- this.subscriptions = [];
13
- this.onDestroyCalls = [];
14
- this.doBlockCallback = () => {
15
- if (isDoCheck(this._model)) {
16
- this._zone.run(this._model.doCheck, this._modelScope.getContextProxy());
17
- }
18
- };
19
22
  this._componentRef = componentRef;
20
23
  if (componentRef.isShadowDom) {
21
- this._shadowRoot = this.attachShadow({
22
- mode: componentRef.shadowDomMode,
23
- delegatesFocus: componentRef.shadowDomDelegatesFocus
24
- });
24
+ this._shadowRoot = this.attachShadow(componentRef.shadowRootInit);
25
25
  }
26
26
  const args = []; /* resolve dependency injection*/
27
27
  const detector = createModelChangeDetectorRef(() => this._modelScope);
@@ -67,22 +67,26 @@ export function baseFactoryView(htmlElementType) {
67
67
  Reflect.set(this._model, this._componentRef.view, this);
68
68
  }
69
69
  this._render = new ComponentRender(this, this.subscriptions);
70
+ if (this.attributes.length > 0) {
71
+ let attrs = Array.prototype.slice.call(this.attributes);
72
+ attrs.forEach(attr => this.initOuterAttribute(attr));
73
+ }
74
+ if (this._componentRef.encapsulation === 'shadow-slot') {
75
+ // render view before inserting any slot element as child
76
+ this.initView();
77
+ }
70
78
  }
71
79
  detectChanges() {
72
80
  this._modelScope.detectChanges();
73
81
  }
82
+ doBlockCallback = () => {
83
+ if (isDoCheck(this._model)) {
84
+ this._zone.run(this._model.doCheck, this._modelScope.getContextProxy());
85
+ }
86
+ };
74
87
  getComponentRef() {
75
88
  return this._componentRef;
76
89
  }
77
- setParentComponent(parent) {
78
- this._parentComponent = parent;
79
- }
80
- getParentComponent() {
81
- return this._parentComponent;
82
- }
83
- hasParentComponent() {
84
- return this._parentComponent ? true : false;
85
- }
86
90
  hasInputStartWith(viewProp) {
87
91
  let dotIndex = viewProp.indexOf('.');
88
92
  if (dotIndex > 0) {
@@ -167,6 +171,13 @@ export function baseFactoryView(htmlElementType) {
167
171
  }
168
172
  this.doBlockCallback();
169
173
  }
174
+ initView() {
175
+ // setup ui view
176
+ this._render.initView();
177
+ // init view binding
178
+ this._render.initViewBinding();
179
+ this.needRendering = false;
180
+ }
170
181
  connectedCallback() {
171
182
  if (this.subscriptions.length) {
172
183
  this.subscriptions.forEach(sub => sub.unsubscribe());
@@ -180,10 +191,6 @@ export function baseFactoryView(htmlElementType) {
180
191
  this.setAttributeHelper(input.viewAttribute, inputDefaultValue);
181
192
  }
182
193
  });
183
- if (!this.hasParentComponent() && this.attributes.length > 0) {
184
- let attrs = Array.prototype.slice.call(this.attributes);
185
- attrs.forEach(attr => this.initOuterAttribute(attr));
186
- }
187
194
  if (isOnChanges(this._model)) {
188
195
  this._zone.run(this._model.onChanges, this._modelScope.getContextProxy());
189
196
  }
@@ -200,11 +207,8 @@ export function baseFactoryView(htmlElementType) {
200
207
  this._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy());
201
208
  }
202
209
  // do once
203
- if (this.childNodes.length === 0) {
204
- // setup ui view
205
- this._render.initView();
206
- // init view binding
207
- this._render.initViewBinding();
210
+ if (this.needRendering) {
211
+ this.initView();
208
212
  }
209
213
  if (isAfterViewInit(this._model)) {
210
214
  this._zone.run(this._model.afterViewInit, this._modelScope.getContextProxy());
@@ -1 +1 @@
1
- {"version":3,"file":"base-view.js","sourceRoot":"","sources":["../../../src/core/view/base-view.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TypeOf } from '../utils/typeof.js';\nimport { ReactiveScope, ReactiveScopeControl, Context, ScopeSubscription } from '@ibyar/expressions';\nimport {\n\tisAfterContentChecked, isAfterContentInit, isAfterViewChecked,\n\tisAfterViewInit, isDoCheck, isOnChanges, isOnDestroy, isOnInit\n} from '../component/lifecycle.js';\nimport { ComponentRef } from '../component/component.js';\nimport { BaseComponent, CustomElement, HTMLComponent, ModelType } from '../component/custom-element.js';\nimport { EventEmitter } from '../component/events.js';\nimport { ComponentRender } from './render.js';\nimport { getRootZone } from '../zone/bootstrap.js';\nimport { AuroraZone, ProxyAuroraZone } from '../zone/zone.js';\nimport { createModelChangeDetectorRef } from '../linker/change-detector-ref.js';\nimport { createProxyZone } from '../zone/proxy.js';\nimport { PropertyRef } from '../component/reflect.js';\n\nexport function baseFactoryView<T extends object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<HTMLComponent<T>> {\n\treturn class CustomView extends htmlElementType implements BaseComponent<T>, CustomElement {\n\t\t_model: ModelType<T>;\n\t\t_parentComponent: HTMLComponent<object>;\n\t\t_render: ComponentRender<T>;\n\t\t_shadowRoot: ShadowRoot;\n\n\t\t_componentRef: ComponentRef<T>;\n\n\t\t_modelScope: ReactiveScopeControl<T>;\n\t\t_viewScope: ReactiveScope<{ 'this': BaseComponent<T> }>;\n\t\t_zone: AuroraZone;\n\n\t\tprivate subscriptions: ScopeSubscription<Context>[] = [];\n\t\tprivate onDestroyCalls: (() => void)[] = [];\n\n\t\tconstructor(componentRef: ComponentRef<T>, modelClass: TypeOf<T>) {\n\t\t\tsuper();\n\t\t\tthis._componentRef = componentRef;\n\t\t\tif (componentRef.isShadowDom) {\n\t\t\t\tthis._shadowRoot = this.attachShadow({\n\t\t\t\t\tmode: componentRef.shadowDomMode,\n\t\t\t\t\tdelegatesFocus: componentRef.shadowDomDelegatesFocus\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst args = []; /* resolve dependency injection*/\n\t\t\tconst detector = createModelChangeDetectorRef(() => this._modelScope);\n\t\t\targs.push(detector)\n\t\t\tthis._zone = getRootZone().fork(componentRef.zone);\n\t\t\targs.push(this._zone);\n\t\t\tconst model = new modelClass(...args);\n\t\t\tthis._model = model;\n\n\t\t\tconst modelScope = ReactiveScopeControl.for(model);\n\t\t\tconst modelProxyRef = this._zone instanceof ProxyAuroraZone\n\t\t\t\t? createProxyZone(model, this._zone)\n\t\t\t\t: model;\n\t\t\tmodelScope.getContextProxy = () => modelProxyRef;\n\t\t\tthis._modelScope = modelScope;\n\n\t\t\tthis._viewScope = ReactiveScope.for<{ 'this': BaseComponent<T> }>({ 'this': this });\n\t\t\tconst elementScope = this._viewScope.getInnerScope<ReactiveScope<BaseComponent<T>>>('this')!;\n\t\t\tcomponentRef.inputs.forEach(input => {\n\t\t\t\telementScope.subscribe(input.viewAttribute as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._modelScope.set(input.modelProperty as any, newValue);\n\t\t\t\t});\n\t\t\t\tthis._modelScope.subscribe(input.modelProperty as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telementScope.emit(input.viewAttribute as any, newValue, oldValue);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tcomponentRef.outputs.forEach(output =>\n\t\t\t\t(model[output.modelProperty as keyof T] as any as EventEmitter<any>)\n\t\t\t\t\t.subscribe((value: any) => {\n\t\t\t\t\t\tconst event = new CustomEvent(\n\t\t\t\t\t\t\toutput.viewAttribute,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdetail: value,\n\t\t\t\t\t\t\t\tcancelable: false,\n\t\t\t\t\t\t\t\tbubbles: output.options?.bubbles,\n\t\t\t\t\t\t\t\tcomposed: output.options?.bubbles,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.dispatchEvent(event);\n\t\t\t\t\t})\n\t\t\t);\n\t\t\t// if property of the model has view decorator\n\t\t\tif (this._componentRef.view) {\n\t\t\t\tReflect.set(this._model, this._componentRef.view, this);\n\t\t\t}\n\t\t\tthis._render = new ComponentRender(this, this.subscriptions);\n\t\t}\n\n\t\tdetectChanges(): void {\n\t\t\tthis._modelScope.detectChanges();\n\t\t}\n\n\t\tdoBlockCallback = (): void => {\n\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t};\n\n\t\tgetComponentRef(): ComponentRef<T> {\n\t\t\treturn this._componentRef;\n\t\t}\n\n\t\tsetParentComponent(parent: HTMLComponent<any>): void {\n\t\t\tthis._parentComponent = parent;\n\t\t}\n\n\t\tgetParentComponent(): HTMLComponent<any> {\n\t\t\treturn this._parentComponent;\n\t\t}\n\n\t\thasParentComponent(): boolean {\n\t\t\treturn this._parentComponent ? true : false;\n\t\t}\n\n\t\thasInputStartWith(viewProp: string): boolean {\n\t\t\tlet dotIndex = viewProp.indexOf('.');\n\t\t\tif (dotIndex > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, dotIndex);\n\t\t\t}\n\t\t\treturn this.hasInput(viewProp);\n\t\t}\n\n\t\tgetInputStartWith(viewProp: string): PropertyRef | undefined {\n\t\t\tlet index = viewProp.indexOf('.');\n\t\t\tif (index > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, index);\n\t\t\t}\n\t\t\tindex = viewProp.indexOf('[');\n\t\t\tif (index > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, index);\n\t\t\t}\n\t\t\treturn this.getInput(viewProp);\n\t\t}\n\n\t\thasInput(viewProp: string): boolean {\n\t\t\treturn this._componentRef.inputs.some(input => input.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetInput(viewProp: string): PropertyRef | undefined {\n\t\t\treturn this._componentRef.inputs.find(input => input.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetInputValue(viewProp: string): any {\n\t\t\tconst inputRef = this.getInput(viewProp);\n\t\t\tif (inputRef) {\n\t\t\t\treturn this._model[inputRef.modelProperty];\n\t\t\t}\n\t\t}\n\n\t\tsetInputValue(viewProp: PropertyKey, value: any): void {\n\t\t\tconst inputRef = this.getInput(viewProp as string);\n\t\t\tif (inputRef) {\n\t\t\t\tthis._modelScope.set(inputRef.modelProperty as never, value);\n\t\t\t}\n\t\t}\n\n\t\thasOutput(viewProp: string): boolean {\n\t\t\treturn this._componentRef.outputs.some(output => output.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetOutput(viewProp: string): PropertyRef | undefined {\n\t\t\treturn this._componentRef.outputs.find(output => output.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetEventEmitter<V>(viewProp: string): EventEmitter<V> | undefined {\n\t\t\tconst outputRef = this.getOutput(viewProp);\n\t\t\tif (outputRef) {\n\t\t\t\treturn this._model[outputRef.modelProperty] as EventEmitter<V>;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\thasProp(propName: string): boolean {\n\t\t\treturn Reflect.has(this._model, propName);\n\t\t}\n\n\t\tprivate setAttributeHelper(attrViewName: string, value: any): void {\n\t\t\tif (value === null || value === undefined) {\n\t\t\t\tthis.removeAttribute(attrViewName);\n\t\t\t}\n\t\t\telse if (typeof value === 'boolean') {\n\t\t\t\tif (value) {\n\t\t\t\t\tsuper.setAttribute(attrViewName, '');\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeAttribute(attrViewName);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsuper.setAttribute(attrViewName, value);\n\t\t\t}\n\t\t}\n\n\t\tsetAttribute(attrViewName: string, value: any): void {\n\t\t\tthis.setInputValue(attrViewName, value);\n\t\t\tthis.setAttributeHelper(attrViewName, value);\n\t\t}\n\n\t\tgetAttribute(attrViewName: string): string | null {\n\t\t\treturn this.getInputValue(attrViewName) ?? super.getAttribute(attrViewName);\n\t\t}\n\n\t\tattributeChangedCallback(name: string, oldValue: string, newValue: string) {\n\t\t\tif (newValue === oldValue) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isOnChanges(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onChanges, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.doBlockCallback();\n\t\t}\n\n\t\tconnectedCallback() {\n\t\t\tif (this.subscriptions.length) {\n\t\t\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\n\t\t\t}\n\t\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t\t\tconst cds = this._zone.onEmpty.subscribe(() => this._modelScope.detectChanges());\n\t\t\tthis.onDestroy(() => cds.unsubscribe());\n\t\t\tthis._componentRef.inputs.forEach(input => {\n\t\t\t\tconst inputDefaultValue = this._model[input.modelProperty];\n\t\t\t\tif (inputDefaultValue !== null && inputDefaultValue !== undefined) {\n\t\t\t\t\tthis.setAttributeHelper(input.viewAttribute, inputDefaultValue);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!this.hasParentComponent() && this.attributes.length > 0) {\n\t\t\t\tlet attrs: Attr[] = Array.prototype.slice.call(this.attributes);\n\t\t\t\tattrs.forEach(attr => this.initOuterAttribute(attr));\n\t\t\t}\n\n\t\t\tif (isOnChanges(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onChanges, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isOnInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterContentInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterContentInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterContentChecked(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy!());\n\t\t\t}\n\n\t\t\t// do once\n\t\t\tif (this.childNodes.length === 0) {\n\t\t\t\t// setup ui view\n\t\t\t\tthis._render.initView();\n\n\t\t\t\t// init view binding\n\t\t\t\tthis._render.initViewBinding();\n\t\t\t}\n\n\t\t\tif (isAfterViewInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterViewInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterViewChecked(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterViewChecked, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.doBlockCallback = () => {\n\t\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t\tif (isAfterContentChecked(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t\tif (isAfterViewChecked(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.afterViewChecked, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst event = new CustomEvent('connected', { cancelable: true, bubbles: false, composed: false });\n\t\t\tthis.dispatchEvent(event);\n\t\t}\n\n\n\t\tinitOuterAttribute(attr: Attr) {\n\t\t\t// [window, this] scop\n\t\t\tlet elementAttr = attr.name;\n\t\t\tlet modelProperty = attr.value;\n\t\t\tif (elementAttr.startsWith('[')) {\n\t\t\t\telementAttr = elementAttr.substring(1, elementAttr.length - 1);\n\t\t\t\tif (Reflect.has(window, modelProperty)) {\n\t\t\t\t\tthis.setInputValue(elementAttr, Reflect.get(window, modelProperty));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (elementAttr.startsWith('(')) {\n\t\t\t\t// (elementAttr)=\"modelProperty()\"\n\t\t\t\telementAttr = elementAttr.substring(1, elementAttr.length - 1);\n\t\t\t\t// this.handleEvent(element, elementAttr, viewProperty);\n\t\t\t\tmodelProperty = modelProperty.endsWith('()') ?\n\t\t\t\t\tmodelProperty.substring(0, modelProperty.length - 2) : modelProperty;\n\t\t\t\tlet callback: Function = Reflect.get(window, modelProperty);\n\t\t\t\tthis.addEventListener(elementAttr, event => {\n\t\t\t\t\tcallback(event);\n\t\t\t\t});\n\t\t\t} else if (elementAttr.startsWith('on')) {\n\t\t\t\tconst modelEvent = this.getEventEmitter<any>(elementAttr.substring(2));\n\t\t\t\tif (modelEvent) {\n\t\t\t\t\t// modelEvent.subscribe(listener);\n\t\t\t\t\tmodelProperty = modelProperty.endsWith('()') ?\n\t\t\t\t\t\tmodelProperty.substring(0, modelProperty.length - 2) : modelProperty;\n\t\t\t\t\tlet listener: Function = Reflect.get(window, modelProperty);\n\t\t\t\t\tmodelEvent.subscribe((data: any) => {\n\t\t\t\t\t\t(listener as Function)(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setInputValue(attr.name, attr.value);\n\t\t\t}\n\t\t}\n\t\tonDestroy(callback: () => void) {\n\t\t\tthis.onDestroyCalls.push(callback);\n\t\t}\n\t\tadoptedCallback() {\n\t\t\t// restart the process\n\t\t\tthis.innerHTML = '';\n\t\t\tthis.connectedCallback();\n\t\t}\n\t\tdisconnectedCallback() {\n\t\t\t// notify first, then call model.onDestroy func\n\t\t\tif (isOnDestroy(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onDestroy, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\n\t\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t\t\tthis.onDestroyCalls.forEach(callback => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.onDestroyCalls.splice(0, this.onDestroyCalls.length);\n\t\t\tconst event = new CustomEvent('disconnected', { cancelable: true, bubbles: false, composed: false });\n\t\t\tthis.dispatchEvent(event);\n\t\t}\n\n\t\ttriggerOutput(eventName: string, value?: any): void {\n\t\t\tconst modelEvent = this.getEventEmitter<any>(eventName);\n\t\t\tif (modelEvent) {\n\t\t\t\tmodelEvent.emit(value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n}\n"]}
1
+ {"version":3,"file":"base-view.js","sourceRoot":"","sources":["../../../src/core/view/base-view.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TypeOf } from '../utils/typeof.js';\nimport { ReactiveScope, ReactiveScopeControl, Context, ScopeSubscription } from '@ibyar/expressions';\nimport {\n\tisAfterContentChecked, isAfterContentInit, isAfterViewChecked,\n\tisAfterViewInit, isDoCheck, isOnChanges, isOnDestroy, isOnInit\n} from '../component/lifecycle.js';\nimport { ComponentRef } from '../component/component.js';\nimport { BaseComponent, CustomElement, HTMLComponent, ModelType } from '../component/custom-element.js';\nimport { EventEmitter } from '../component/events.js';\nimport { ComponentRender } from './render.js';\nimport { getRootZone } from '../zone/bootstrap.js';\nimport { AuroraZone, ProxyAuroraZone } from '../zone/zone.js';\nimport { createModelChangeDetectorRef } from '../linker/change-detector-ref.js';\nimport { createProxyZone } from '../zone/proxy.js';\nimport { PropertyRef } from '../component/reflect.js';\n\nexport function baseFactoryView<T extends object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<HTMLComponent<T>> {\n\treturn class CustomView extends htmlElementType implements BaseComponent<T>, CustomElement {\n\t\t_model: ModelType<T>;\n\t\t_render: ComponentRender<T>;\n\t\t_shadowRoot: ShadowRoot;\n\n\t\t_componentRef: ComponentRef<T>;\n\n\t\t_modelScope: ReactiveScopeControl<T>;\n\t\t_viewScope: ReactiveScope<{ 'this': BaseComponent<T> }>;\n\t\t_zone: AuroraZone;\n\n\t\tprivate subscriptions: ScopeSubscription<Context>[] = [];\n\t\tprivate onDestroyCalls: (() => void)[] = [];\n\t\tprivate needRendering = true;\n\n\t\tconstructor(componentRef: ComponentRef<T>, modelClass: TypeOf<T>) {\n\t\t\tsuper();\n\t\t\tthis._componentRef = componentRef;\n\t\t\tif (componentRef.isShadowDom) {\n\t\t\t\tthis._shadowRoot = this.attachShadow(componentRef.shadowRootInit);\n\t\t\t}\n\t\t\tconst args = []; /* resolve dependency injection*/\n\t\t\tconst detector = createModelChangeDetectorRef(() => this._modelScope);\n\t\t\targs.push(detector)\n\t\t\tthis._zone = getRootZone().fork(componentRef.zone);\n\t\t\targs.push(this._zone);\n\t\t\tconst model = new modelClass(...args);\n\t\t\tthis._model = model;\n\n\t\t\tconst modelScope = ReactiveScopeControl.for(model);\n\t\t\tconst modelProxyRef = this._zone instanceof ProxyAuroraZone\n\t\t\t\t? createProxyZone(model, this._zone)\n\t\t\t\t: model;\n\t\t\tmodelScope.getContextProxy = () => modelProxyRef;\n\t\t\tthis._modelScope = modelScope;\n\n\t\t\tthis._viewScope = ReactiveScope.for<{ 'this': BaseComponent<T> }>({ 'this': this });\n\t\t\tconst elementScope = this._viewScope.getInnerScope<ReactiveScope<BaseComponent<T>>>('this')!;\n\t\t\tcomponentRef.inputs.forEach(input => {\n\t\t\t\telementScope.subscribe(input.viewAttribute as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._modelScope.set(input.modelProperty as any, newValue);\n\t\t\t\t});\n\t\t\t\tthis._modelScope.subscribe(input.modelProperty as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telementScope.emit(input.viewAttribute as any, newValue, oldValue);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tcomponentRef.outputs.forEach(output =>\n\t\t\t\t(model[output.modelProperty as keyof T] as any as EventEmitter<any>)\n\t\t\t\t\t.subscribe((value: any) => {\n\t\t\t\t\t\tconst event = new CustomEvent(\n\t\t\t\t\t\t\toutput.viewAttribute,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdetail: value,\n\t\t\t\t\t\t\t\tcancelable: false,\n\t\t\t\t\t\t\t\tbubbles: output.options?.bubbles,\n\t\t\t\t\t\t\t\tcomposed: output.options?.bubbles,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.dispatchEvent(event);\n\t\t\t\t\t})\n\t\t\t);\n\t\t\t// if property of the model has view decorator\n\t\t\tif (this._componentRef.view) {\n\t\t\t\tReflect.set(this._model, this._componentRef.view, this);\n\t\t\t}\n\n\t\t\tthis._render = new ComponentRender(this, this.subscriptions);\n\n\t\t\tif (this.attributes.length > 0) {\n\t\t\t\tlet attrs: Attr[] = Array.prototype.slice.call(this.attributes);\n\t\t\t\tattrs.forEach(attr => this.initOuterAttribute(attr));\n\t\t\t}\n\n\t\t\tif (this._componentRef.encapsulation === 'shadow-slot') {\n\t\t\t\t// render view before inserting any slot element as child\n\t\t\t\tthis.initView();\n\t\t\t}\n\t\t}\n\n\t\tdetectChanges(): void {\n\t\t\tthis._modelScope.detectChanges();\n\t\t}\n\n\t\tdoBlockCallback = (): void => {\n\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t};\n\n\t\tgetComponentRef(): ComponentRef<T> {\n\t\t\treturn this._componentRef;\n\t\t}\n\n\t\thasInputStartWith(viewProp: string): boolean {\n\t\t\tlet dotIndex = viewProp.indexOf('.');\n\t\t\tif (dotIndex > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, dotIndex);\n\t\t\t}\n\t\t\treturn this.hasInput(viewProp);\n\t\t}\n\n\t\tgetInputStartWith(viewProp: string): PropertyRef | undefined {\n\t\t\tlet index = viewProp.indexOf('.');\n\t\t\tif (index > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, index);\n\t\t\t}\n\t\t\tindex = viewProp.indexOf('[');\n\t\t\tif (index > 0) {\n\t\t\t\tviewProp = viewProp.substring(0, index);\n\t\t\t}\n\t\t\treturn this.getInput(viewProp);\n\t\t}\n\n\t\thasInput(viewProp: string): boolean {\n\t\t\treturn this._componentRef.inputs.some(input => input.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetInput(viewProp: string): PropertyRef | undefined {\n\t\t\treturn this._componentRef.inputs.find(input => input.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetInputValue(viewProp: string): any {\n\t\t\tconst inputRef = this.getInput(viewProp);\n\t\t\tif (inputRef) {\n\t\t\t\treturn this._model[inputRef.modelProperty];\n\t\t\t}\n\t\t}\n\n\t\tsetInputValue(viewProp: PropertyKey, value: any): void {\n\t\t\tconst inputRef = this.getInput(viewProp as string);\n\t\t\tif (inputRef) {\n\t\t\t\tthis._modelScope.set(inputRef.modelProperty as never, value);\n\t\t\t}\n\t\t}\n\n\t\thasOutput(viewProp: string): boolean {\n\t\t\treturn this._componentRef.outputs.some(output => output.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetOutput(viewProp: string): PropertyRef | undefined {\n\t\t\treturn this._componentRef.outputs.find(output => output.viewAttribute === viewProp);\n\t\t}\n\n\t\tgetEventEmitter<V>(viewProp: string): EventEmitter<V> | undefined {\n\t\t\tconst outputRef = this.getOutput(viewProp);\n\t\t\tif (outputRef) {\n\t\t\t\treturn this._model[outputRef.modelProperty] as EventEmitter<V>;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\thasProp(propName: string): boolean {\n\t\t\treturn Reflect.has(this._model, propName);\n\t\t}\n\n\t\tprivate setAttributeHelper(attrViewName: string, value: any): void {\n\t\t\tif (value === null || value === undefined) {\n\t\t\t\tthis.removeAttribute(attrViewName);\n\t\t\t}\n\t\t\telse if (typeof value === 'boolean') {\n\t\t\t\tif (value) {\n\t\t\t\t\tsuper.setAttribute(attrViewName, '');\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeAttribute(attrViewName);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsuper.setAttribute(attrViewName, value);\n\t\t\t}\n\t\t}\n\n\t\tsetAttribute(attrViewName: string, value: any): void {\n\t\t\tthis.setInputValue(attrViewName, value);\n\t\t\tthis.setAttributeHelper(attrViewName, value);\n\t\t}\n\n\t\tgetAttribute(attrViewName: string): string | null {\n\t\t\treturn this.getInputValue(attrViewName) ?? super.getAttribute(attrViewName);\n\t\t}\n\n\t\tattributeChangedCallback(name: string, oldValue: string, newValue: string) {\n\t\t\tif (newValue === oldValue) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isOnChanges(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onChanges, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.doBlockCallback();\n\t\t}\n\n\t\tprivate initView() {\n\t\t\t// setup ui view\n\t\t\tthis._render.initView();\n\n\t\t\t// init view binding\n\t\t\tthis._render.initViewBinding();\n\t\t\tthis.needRendering = false;\n\t\t}\n\n\t\tconnectedCallback() {\n\t\t\tif (this.subscriptions.length) {\n\t\t\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\n\t\t\t}\n\t\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t\t\tconst cds = this._zone.onEmpty.subscribe(() => this._modelScope.detectChanges());\n\t\t\tthis.onDestroy(() => cds.unsubscribe());\n\t\t\tthis._componentRef.inputs.forEach(input => {\n\t\t\t\tconst inputDefaultValue = this._model[input.modelProperty];\n\t\t\t\tif (inputDefaultValue !== null && inputDefaultValue !== undefined) {\n\t\t\t\t\tthis.setAttributeHelper(input.viewAttribute, inputDefaultValue);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (isOnChanges(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onChanges, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isOnInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterContentInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterContentInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterContentChecked(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy!());\n\t\t\t}\n\n\t\t\t// do once\n\t\t\tif (this.needRendering) {\n\t\t\t\tthis.initView();\n\t\t\t}\n\n\t\t\tif (isAfterViewInit(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterViewInit, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tif (isAfterViewChecked(this._model)) {\n\t\t\t\tthis._zone.run(this._model.afterViewChecked, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.doBlockCallback = () => {\n\t\t\t\tif (isDoCheck(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.doCheck, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t\tif (isAfterContentChecked(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.afterContentChecked, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t\tif (isAfterViewChecked(this._model)) {\n\t\t\t\t\tthis._zone.run(this._model.afterViewChecked, this._modelScope.getContextProxy!());\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst event = new CustomEvent('connected', { cancelable: true, bubbles: false, composed: false });\n\t\t\tthis.dispatchEvent(event);\n\t\t}\n\n\n\t\tprivate initOuterAttribute(attr: Attr) {\n\t\t\t// [window, this] scop\n\t\t\tlet elementAttr = attr.name;\n\t\t\tlet modelProperty = attr.value;\n\t\t\tif (elementAttr.startsWith('[')) {\n\t\t\t\telementAttr = elementAttr.substring(1, elementAttr.length - 1);\n\t\t\t\tif (Reflect.has(window, modelProperty)) {\n\t\t\t\t\tthis.setInputValue(elementAttr, Reflect.get(window, modelProperty));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (elementAttr.startsWith('(')) {\n\t\t\t\t// (elementAttr)=\"modelProperty()\"\n\t\t\t\telementAttr = elementAttr.substring(1, elementAttr.length - 1);\n\t\t\t\t// this.handleEvent(element, elementAttr, viewProperty);\n\t\t\t\tmodelProperty = modelProperty.endsWith('()') ?\n\t\t\t\t\tmodelProperty.substring(0, modelProperty.length - 2) : modelProperty;\n\t\t\t\tlet callback: Function = Reflect.get(window, modelProperty);\n\t\t\t\tthis.addEventListener(elementAttr, event => {\n\t\t\t\t\tcallback(event);\n\t\t\t\t});\n\t\t\t} else if (elementAttr.startsWith('on')) {\n\t\t\t\tconst modelEvent = this.getEventEmitter<any>(elementAttr.substring(2));\n\t\t\t\tif (modelEvent) {\n\t\t\t\t\t// modelEvent.subscribe(listener);\n\t\t\t\t\tmodelProperty = modelProperty.endsWith('()') ?\n\t\t\t\t\t\tmodelProperty.substring(0, modelProperty.length - 2) : modelProperty;\n\t\t\t\t\tlet listener: Function = Reflect.get(window, modelProperty);\n\t\t\t\t\tmodelEvent.subscribe((data: any) => {\n\t\t\t\t\t\t(listener as Function)(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setInputValue(attr.name, attr.value);\n\t\t\t}\n\t\t}\n\t\tonDestroy(callback: () => void) {\n\t\t\tthis.onDestroyCalls.push(callback);\n\t\t}\n\t\tadoptedCallback() {\n\t\t\t// restart the process\n\t\t\tthis.innerHTML = '';\n\t\t\tthis.connectedCallback();\n\t\t}\n\t\tdisconnectedCallback() {\n\t\t\t// notify first, then call model.onDestroy func\n\t\t\tif (isOnDestroy(this._model)) {\n\t\t\t\tthis._zone.run(this._model.onDestroy, this._modelScope.getContextProxy!());\n\t\t\t}\n\t\t\tthis.subscriptions.forEach(sub => sub.unsubscribe());\n\t\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t\t\tthis.onDestroyCalls.forEach(callback => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.onDestroyCalls.splice(0, this.onDestroyCalls.length);\n\t\t\tconst event = new CustomEvent('disconnected', { cancelable: true, bubbles: false, composed: false });\n\t\t\tthis.dispatchEvent(event);\n\t\t}\n\n\t\ttriggerOutput(eventName: string, value?: any): void {\n\t\t\tconst modelEvent = this.getEventEmitter<any>(eventName);\n\t\t\tif (modelEvent) {\n\t\t\t\tmodelEvent.emit(value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n}\n"]}
@@ -13,3 +13,4 @@ export declare class NativeElementInternals implements ElementInternals {
13
13
  setFormValue(value: any | null, state?: File | string | FormData | null): void;
14
14
  }
15
15
  export declare function baseFormFactoryView<T extends Object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<FormAssociatedComponent<T, any>>;
16
+ //# sourceMappingURL=form-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-view.d.ts","sourceRoot":"","sources":["../../../src/core/view/form-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAEN,uBAAuB,EAGvB,MAAM,gCAAgC,CAAC;AAIxC,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;CAE/D;AAED,qBAAa,sBAAuB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,EAAE,CAAmB;gBACjB,KAAK,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC;IAIpD,IAAI,IAAI,sCAEP;IACD,IAAI,MAAM,iCAET;IAED,IAAI,UAAU,sBAEb;IAED,IAAI,YAAY,YAEf;IAED,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI;CAI9E;AAeD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CA+EnI"}
package/view/form-view.js CHANGED
@@ -3,6 +3,7 @@ import { baseFactoryView } from './base-view.js';
3
3
  import { ARIAMixinAttributes, isFormElement } from '@ibyar/elements';
4
4
  export const NOOP_CONTROL_CHANGE = () => { };
5
5
  export class NativeElementInternals {
6
+ el;
6
7
  constructor(input) {
7
8
  this.el = input;
8
9
  }
@@ -35,80 +36,82 @@ ARIAMixinAttributes.forEach(ariaName => {
35
36
  });
36
37
  });
37
38
  export function baseFormFactoryView(htmlElementType) {
38
- var _a;
39
39
  const baseViewClass = baseFactoryView(htmlElementType);
40
- return _a = class BaseFormView extends baseViewClass {
41
- constructor(componentRef, modelClass) {
42
- super(componentRef, modelClass);
43
- if (componentRef.extend.name && isFormElement(componentRef.extend.name)) {
44
- this._internals = new NativeElementInternals(this);
45
- }
46
- else {
47
- this._internals = this.attachInternals();
48
- }
49
- let valueControl;
50
- if (typeof componentRef.formAssociated === 'function') {
51
- if (this._model instanceof componentRef.formAssociated) {
52
- valueControl == this._model;
53
- }
54
- else {
55
- const args = [this]; /* resolve dependency injection*/
56
- ;
57
- valueControl = new componentRef.formAssociated(args);
58
- }
59
- }
60
- else if (componentRef.formAssociated === true && isValueControl(this._model)) {
61
- valueControl = this._model;
62
- }
63
- valueControl && this.registerValueControl(valueControl);
64
- const valueInput = componentRef.inputs.filter(input => input.viewAttribute === 'value').at(0);
65
- if (valueInput) {
66
- this._modelScope.subscribe(valueInput.modelProperty, (newValue, oldValue) => {
67
- if (newValue === oldValue) {
68
- return;
69
- }
70
- this.onValueControlChange(newValue);
71
- });
72
- }
73
- }
74
- get internals() {
75
- return this._internals;
76
- }
77
- get form() {
78
- return this._form;
40
+ return class BaseFormView extends baseViewClass {
41
+ /**
42
+ * Identify the element as a form-associated custom element
43
+ */
44
+ static formAssociated = true;
45
+ value;
46
+ _internals;
47
+ _form;
48
+ _valueControl;
49
+ constructor(componentRef, modelClass) {
50
+ super(componentRef, modelClass);
51
+ if (componentRef.extend.name && isFormElement(componentRef.extend.name)) {
52
+ this._internals = new NativeElementInternals(this);
79
53
  }
80
- get valueControl() {
81
- return this._valueControl;
54
+ else {
55
+ this._internals = this.attachInternals();
82
56
  }
83
- registerValueControl(valueControl) {
84
- if (this.valueControl) {
85
- this.valueControl.registerOnChange(NOOP_CONTROL_CHANGE);
57
+ let valueControl;
58
+ if (typeof componentRef.formAssociated === 'function') {
59
+ if (this._model instanceof componentRef.formAssociated) {
60
+ valueControl == this._model;
61
+ }
62
+ else {
63
+ const args = [this]; /* resolve dependency injection*/
64
+ ;
65
+ valueControl = new componentRef.formAssociated(args);
86
66
  }
87
- this._valueControl = valueControl;
88
- this._valueControl?.registerOnChange((value) => this.onValueControlChange(value));
89
- }
90
- onValueControlChange(value) {
91
- this._internals.setFormValue(value);
92
- this.value = value;
93
- this.dispatchEvent(new Event('change', { bubbles: true, cancelable: true, composed: true }));
94
- }
95
- formAssociatedCallback(form) {
96
- this._form = form;
97
67
  }
98
- formDisabledCallback(disabled) {
99
- this._valueControl?.setDisabledState?.(disabled);
68
+ else if (componentRef.formAssociated === true && isValueControl(this._model)) {
69
+ valueControl = this._model;
100
70
  }
101
- formResetCallback() {
102
- this._valueControl?.writeValue({ mode: 'reset' });
71
+ valueControl && this.registerValueControl(valueControl);
72
+ const valueInput = componentRef.inputs.filter(input => input.viewAttribute === 'value').at(0);
73
+ if (valueInput) {
74
+ this._modelScope.subscribe(valueInput.modelProperty, (newValue, oldValue) => {
75
+ if (newValue === oldValue) {
76
+ return;
77
+ }
78
+ this.onValueControlChange(newValue);
79
+ });
103
80
  }
104
- formStateRestoreCallback(value, mode) {
105
- this._valueControl?.writeValue({ value, mode });
81
+ }
82
+ get internals() {
83
+ return this._internals;
84
+ }
85
+ get form() {
86
+ return this._form;
87
+ }
88
+ get valueControl() {
89
+ return this._valueControl;
90
+ }
91
+ registerValueControl(valueControl) {
92
+ if (this.valueControl) {
93
+ this.valueControl.registerOnChange(NOOP_CONTROL_CHANGE);
106
94
  }
107
- },
108
- /**
109
- * Identify the element as a form-associated custom element
110
- */
111
- _a.formAssociated = true,
112
- _a;
95
+ this._valueControl = valueControl;
96
+ this._valueControl?.registerOnChange((value) => this.onValueControlChange(value));
97
+ }
98
+ onValueControlChange(value) {
99
+ this._internals.setFormValue(value);
100
+ this.value = value;
101
+ this.dispatchEvent(new Event('change', { bubbles: true, cancelable: true, composed: true }));
102
+ }
103
+ formAssociatedCallback(form) {
104
+ this._form = form;
105
+ }
106
+ formDisabledCallback(disabled) {
107
+ this._valueControl?.setDisabledState?.(disabled);
108
+ }
109
+ formResetCallback() {
110
+ this._valueControl?.writeValue({ mode: 'reset' });
111
+ }
112
+ formStateRestoreCallback(value, mode) {
113
+ this._valueControl?.writeValue({ value, mode });
114
+ }
115
+ };
113
116
  }
114
117
  //# sourceMappingURL=form-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-view.js","sourceRoot":"","sources":["../../../src/core/view/form-view.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TypeOf } from '../utils/typeof.js';\nimport { ComponentRef } from '../component/component.js';\nimport {\n\tFormAssociatedCustomElement, HTMLFormElement,\n\tFormAssociatedComponent,\n\tValueControl,\n\tisValueControl,\n} from '../component/custom-element.js';\nimport { baseFactoryView } from './base-view.js';\nimport { ARIAMixinAttributes, isFormElement } from '@ibyar/elements';\n\nexport const NOOP_CONTROL_CHANGE = () => { };\n\nexport interface NativeElementInternals extends ElementInternals {\n\n}\n\nexport class NativeElementInternals implements ElementInternals {\n\tprivate el: HTMLInputElement;\n\tconstructor(input: FormAssociatedComponent<any, any>) {\n\t\tthis.el = input as any as HTMLInputElement;\n\t}\n\n\tget form() {\n\t\treturn this.el.form;\n\t}\n\tget labels() {\n\t\treturn this.el.labels!;\n\t}\n\n\tget shadowRoot() {\n\t\treturn this.el.shadowRoot;\n\t}\n\n\tget willValidate() {\n\t\treturn this.el.willValidate;\n\t}\n\n\tsetFormValue(value: any | null, state?: File | string | FormData | null): void {\n\t\tthis.el.value = value;\n\t}\n\n}\n\nARIAMixinAttributes.forEach(ariaName => {\n\tObject.defineProperty(NativeElementInternals.prototype, ariaName, {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\t\tget: function name(this: { el: HTMLInputElement }) {\n\t\t\treturn this.el[ariaName];\n\t\t},\n\t\tset: function name(this: { el: HTMLInputElement }, value: any) {\n\t\t\treturn this.el[ariaName] = value;\n\t\t},\n\t});\n});\n\nexport function baseFormFactoryView<T extends Object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<FormAssociatedComponent<T, any>> {\n\tconst baseViewClass = baseFactoryView<T>(htmlElementType);\n\treturn class BaseFormView<T> extends baseViewClass implements FormAssociatedCustomElement {\n\n\t\t/**\n\t\t * Identify the element as a form-associated custom element\n\t\t */\n\t\tstatic formAssociated = true;\n\n\t\tvalue: any;\n\n\t\tprivate _internals: ElementInternals;\n\t\tprivate _form: HTMLFormElement | null;\n\t\tprivate _valueControl?: ValueControl<T>;\n\n\t\tconstructor(componentRef: ComponentRef<T>, modelClass: TypeOf<T>) {\n\t\t\tsuper(componentRef, modelClass);\n\t\t\tif (componentRef.extend.name && isFormElement(componentRef.extend.name)) {\n\t\t\t\tthis._internals = new NativeElementInternals(this);\n\t\t\t} else {\n\t\t\t\tthis._internals = this.attachInternals();\n\t\t\t}\n\t\t\tlet valueControl: ValueControl<any> | undefined;\n\t\t\tif (typeof componentRef.formAssociated === 'function') {\n\t\t\t\tif (this._model instanceof componentRef.formAssociated) {\n\t\t\t\t\tvalueControl == this._model;\n\t\t\t\t} else {\n\t\t\t\t\tconst args: any[] = [this]; /* resolve dependency injection*/;\n\t\t\t\t\tvalueControl = new componentRef.formAssociated(args);\n\t\t\t\t}\n\t\t\t} else if (componentRef.formAssociated === true && isValueControl(this._model)) {\n\t\t\t\tvalueControl = this._model;\n\t\t\t}\n\t\t\tvalueControl && this.registerValueControl(valueControl);\n\t\t\tconst valueInput = componentRef.inputs.filter(input => input.viewAttribute === 'value').at(0);\n\t\t\tif (valueInput) {\n\t\t\t\tthis._modelScope.subscribe(valueInput.modelProperty as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.onValueControlChange(newValue);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tget internals(): ElementInternals {\n\t\t\treturn this._internals;\n\t\t}\n\t\tget form(): HTMLFormElement | null {\n\t\t\treturn this._form;\n\t\t}\n\t\tget valueControl(): ValueControl<T> | undefined {\n\t\t\treturn this._valueControl;\n\t\t}\n\t\tregisterValueControl(valueControl: ValueControl): void {\n\t\t\tif (this.valueControl) {\n\t\t\t\tthis.valueControl.registerOnChange(NOOP_CONTROL_CHANGE);\n\t\t\t}\n\t\t\tthis._valueControl = valueControl;\n\t\t\tthis._valueControl?.registerOnChange((value: any) => this.onValueControlChange(value));\n\t\t}\n\t\tprivate onValueControlChange(value: any) {\n\t\t\tthis._internals.setFormValue(value);\n\t\t\tthis.value = value;\n\t\t\tthis.dispatchEvent(new Event('change', { bubbles: true, cancelable: true, composed: true }));\n\t\t}\n\n\t\tformAssociatedCallback(form: HTMLFormElement | null): void {\n\t\t\tthis._form = form;\n\t\t}\n\t\tformDisabledCallback(disabled: boolean): void {\n\t\t\tthis._valueControl?.setDisabledState?.(disabled);\n\t\t}\n\t\tformResetCallback(): void {\n\t\t\tthis._valueControl?.writeValue({ mode: 'reset' });\n\t\t}\n\t\tformStateRestoreCallback(value: any, mode: 'restore' | 'autocomplete'): void {\n\t\t\tthis._valueControl?.writeValue({ value, mode });\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"form-view.js","sourceRoot":"","sources":["../../../src/core/view/form-view.ts"],"names":[],"mappings":"AAEA,OAAO,EAIN,cAAc,GACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AAM7C,MAAM,OAAO,sBAAsB;IAC1B,EAAE,CAAmB;IAC7B,YAAY,KAAwC;QACnD,IAAI,CAAC,EAAE,GAAG,KAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,MAAO,CAAC;IACxB,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,KAAiB,EAAE,KAAuC;QACtE,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CAED;AAED,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACtC,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE;QACjE,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,SAAS,IAAI;YACjB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,GAAG,EAAE,SAAS,IAAI,CAAiC,KAAU;YAC5D,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAClC,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAmB,eAAoC;IACzF,MAAM,aAAa,GAAG,eAAe,CAAI,eAAe,CAAC,CAAC;IAC1D,OAAO,MAAM,YAAgB,SAAQ,aAAa;QAEjD;;WAEG;QACH,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;QAE7B,KAAK,CAAM;QAEH,UAAU,CAAmB;QAC7B,KAAK,CAAyB;QAC9B,aAAa,CAAmB;QAExC,YAAY,YAA6B,EAAE,UAAqB;YAC/D,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAChC,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACxE,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;aACnD;iBAAM;gBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;aACzC;YACD,IAAI,YAA2C,CAAC;YAChD,IAAI,OAAO,YAAY,CAAC,cAAc,KAAK,UAAU,EAAE;gBACtD,IAAI,IAAI,CAAC,MAAM,YAAY,YAAY,CAAC,cAAc,EAAE;oBACvD,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC;iBAC5B;qBAAM;oBACN,MAAM,IAAI,GAAU,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC;oBAAA,CAAC;oBAC9D,YAAY,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBACrD;aACD;iBAAM,IAAI,YAAY,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/E,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;aAC3B;YACD,YAAY,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9F,IAAI,UAAU,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,aAAoB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;oBAClF,IAAI,QAAQ,KAAK,QAAQ,EAAE;wBAC1B,OAAO;qBACP;oBACD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;aACH;QACF,CAAC;QACD,IAAI,SAAS;YACZ,OAAO,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;QACD,IAAI,IAAI;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QACD,IAAI,YAAY;YACf,OAAO,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;QACD,oBAAoB,CAAC,YAA0B;YAC9C,IAAI,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;aACxD;YACD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAClC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxF,CAAC;QACO,oBAAoB,CAAC,KAAU;YACtC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9F,CAAC;QAED,sBAAsB,CAAC,IAA4B;YAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,oBAAoB,CAAC,QAAiB;YACrC,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,iBAAiB;YAChB,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,wBAAwB,CAAC,KAAU,EAAE,IAAgC;YACpE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;KACD,CAAA;AACF,CAAC","sourcesContent":["import type { TypeOf } from '../utils/typeof.js';\nimport { ComponentRef } from '../component/component.js';\nimport {\n\tFormAssociatedCustomElement, HTMLFormElement,\n\tFormAssociatedComponent,\n\tValueControl,\n\tisValueControl,\n} from '../component/custom-element.js';\nimport { baseFactoryView } from './base-view.js';\nimport { ARIAMixinAttributes, isFormElement } from '@ibyar/elements';\n\nexport const NOOP_CONTROL_CHANGE = () => { };\n\nexport interface NativeElementInternals extends ElementInternals {\n\n}\n\nexport class NativeElementInternals implements ElementInternals {\n\tprivate el: HTMLInputElement;\n\tconstructor(input: FormAssociatedComponent<any, any>) {\n\t\tthis.el = input as any as HTMLInputElement;\n\t}\n\n\tget form() {\n\t\treturn this.el.form;\n\t}\n\tget labels() {\n\t\treturn this.el.labels!;\n\t}\n\n\tget shadowRoot() {\n\t\treturn this.el.shadowRoot;\n\t}\n\n\tget willValidate() {\n\t\treturn this.el.willValidate;\n\t}\n\n\tsetFormValue(value: any | null, state?: File | string | FormData | null): void {\n\t\tthis.el.value = value;\n\t}\n\n}\n\nARIAMixinAttributes.forEach(ariaName => {\n\tObject.defineProperty(NativeElementInternals.prototype, ariaName, {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\t\tget: function name(this: { el: HTMLInputElement }) {\n\t\t\treturn this.el[ariaName];\n\t\t},\n\t\tset: function name(this: { el: HTMLInputElement }, value: any) {\n\t\t\treturn this.el[ariaName] = value;\n\t\t},\n\t});\n});\n\nexport function baseFormFactoryView<T extends Object>(htmlElementType: TypeOf<HTMLElement>): TypeOf<FormAssociatedComponent<T, any>> {\n\tconst baseViewClass = baseFactoryView<T>(htmlElementType);\n\treturn class BaseFormView<T> extends baseViewClass implements FormAssociatedCustomElement {\n\n\t\t/**\n\t\t * Identify the element as a form-associated custom element\n\t\t */\n\t\tstatic formAssociated = true;\n\n\t\tvalue: any;\n\n\t\tprivate _internals: ElementInternals;\n\t\tprivate _form: HTMLFormElement | null;\n\t\tprivate _valueControl?: ValueControl<T>;\n\n\t\tconstructor(componentRef: ComponentRef<T>, modelClass: TypeOf<T>) {\n\t\t\tsuper(componentRef, modelClass);\n\t\t\tif (componentRef.extend.name && isFormElement(componentRef.extend.name)) {\n\t\t\t\tthis._internals = new NativeElementInternals(this);\n\t\t\t} else {\n\t\t\t\tthis._internals = this.attachInternals();\n\t\t\t}\n\t\t\tlet valueControl: ValueControl<any> | undefined;\n\t\t\tif (typeof componentRef.formAssociated === 'function') {\n\t\t\t\tif (this._model instanceof componentRef.formAssociated) {\n\t\t\t\t\tvalueControl == this._model;\n\t\t\t\t} else {\n\t\t\t\t\tconst args: any[] = [this]; /* resolve dependency injection*/;\n\t\t\t\t\tvalueControl = new componentRef.formAssociated(args);\n\t\t\t\t}\n\t\t\t} else if (componentRef.formAssociated === true && isValueControl(this._model)) {\n\t\t\t\tvalueControl = this._model;\n\t\t\t}\n\t\t\tvalueControl && this.registerValueControl(valueControl);\n\t\t\tconst valueInput = componentRef.inputs.filter(input => input.viewAttribute === 'value').at(0);\n\t\t\tif (valueInput) {\n\t\t\t\tthis._modelScope.subscribe(valueInput.modelProperty as any, (newValue, oldValue) => {\n\t\t\t\t\tif (newValue === oldValue) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.onValueControlChange(newValue);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tget internals(): ElementInternals {\n\t\t\treturn this._internals;\n\t\t}\n\t\tget form(): HTMLFormElement | null {\n\t\t\treturn this._form;\n\t\t}\n\t\tget valueControl(): ValueControl<T> | undefined {\n\t\t\treturn this._valueControl;\n\t\t}\n\t\tregisterValueControl(valueControl: ValueControl): void {\n\t\t\tif (this.valueControl) {\n\t\t\t\tthis.valueControl.registerOnChange(NOOP_CONTROL_CHANGE);\n\t\t\t}\n\t\t\tthis._valueControl = valueControl;\n\t\t\tthis._valueControl?.registerOnChange((value: any) => this.onValueControlChange(value));\n\t\t}\n\t\tprivate onValueControlChange(value: any) {\n\t\t\tthis._internals.setFormValue(value);\n\t\t\tthis.value = value;\n\t\t\tthis.dispatchEvent(new Event('change', { bubbles: true, cancelable: true, composed: true }));\n\t\t}\n\n\t\tformAssociatedCallback(form: HTMLFormElement | null): void {\n\t\t\tthis._form = form;\n\t\t}\n\t\tformDisabledCallback(disabled: boolean): void {\n\t\t\tthis._valueControl?.setDisabledState?.(disabled);\n\t\t}\n\t\tformResetCallback(): void {\n\t\t\tthis._valueControl?.writeValue({ mode: 'reset' });\n\t\t}\n\t\tformStateRestoreCallback(value: any, mode: 'restore' | 'autocomplete'): void {\n\t\t\tthis._valueControl?.writeValue({ value, mode });\n\t\t}\n\t}\n}\n"]}
@@ -42,3 +42,4 @@ export declare class ElementMutation {
42
42
  disconnect(): void;
43
43
  }
44
44
  export {};
45
+ //# sourceMappingURL=mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../../../src/core/view/mutation.ts"],"names":[],"mappings":"AAAA,UAAU,uBAAuB;IAChC,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CACnC;AAED,UAAU,kBAAkB;IAC3B,IAAI,IAAI,CAAC;CACT;AAGD,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,MAAM,CAA6C;IAE3D,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAa7D,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIhC,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIhC,OAAO,CAAC,QAAQ;IAYhB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,oBAAoB;IAUzF,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB;IAIrF,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB;IAIrF,OAAO,CAAC,mBAAmB;IAU3B,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,IAAI;IAUvE,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIvE,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIvE,OAAO,CAAC,qBAAqB;IAU7B,OAAO;CAGP;AAED,qBAAa,oBAAoB;IAMpB,OAAO,CAAC,UAAU;IAAsB,OAAO,CAAC,GAAG;IAA0B,OAAO,CAAC,QAAQ;IAJzG,OAAO,CAAC,IAAI,CAAyB;gBACzB,UAAU,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,kBAAkB;gBACjF,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB;IAMpG,WAAW;CAUX;AAID,qBAAa,eAAe;IAE3B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAK7B;IAEF,OAAO,CAAC,WAAW,CAAoD;IACvE,OAAO,CAAC,gBAAgB,CAqBtB;IACF,OAAO,CAAC,gBAAgB,CAAiE;IAEzF,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,oBAAoB;IAUvG,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB;IAUnG,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB;IAUnG,UAAU;CAKV"}