vasille 1.2.7 → 2.0.1

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 (131) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +153 -119
  3. package/flow-typed/vasille.js +837 -0
  4. package/lib/binding/attribute.js +32 -0
  5. package/lib/binding/binding.js +39 -0
  6. package/lib/binding/class.js +51 -0
  7. package/lib/binding/style.js +29 -0
  8. package/lib/core/core.js +178 -0
  9. package/lib/core/destroyable.js +45 -0
  10. package/lib/core/errors.js +16 -0
  11. package/lib/core/executor.js +154 -0
  12. package/lib/core/ivalue.js +56 -0
  13. package/lib/core/signal.js +50 -0
  14. package/lib/core/slot.js +47 -0
  15. package/lib/index.js +27 -22
  16. package/lib/models/array-model.js +208 -0
  17. package/lib/models/listener.js +130 -0
  18. package/lib/models/map-model.js +66 -0
  19. package/lib/models/model.js +1 -0
  20. package/lib/models/object-model.js +78 -0
  21. package/lib/models/set-model.js +62 -0
  22. package/lib/node/app.js +38 -0
  23. package/lib/node/interceptor.js +83 -0
  24. package/lib/node/node.js +1202 -0
  25. package/lib/node/watch.js +27 -0
  26. package/lib/value/expression.js +83 -0
  27. package/lib/value/mirror.js +58 -0
  28. package/lib/value/pointer.js +26 -0
  29. package/lib/value/reference.js +55 -0
  30. package/lib/views/array-view.js +23 -0
  31. package/lib/views/base-view.js +49 -0
  32. package/lib/views/map-view.js +20 -0
  33. package/lib/views/object-view.js +20 -0
  34. package/lib/views/repeat-node.js +106 -0
  35. package/lib/views/repeater.js +63 -0
  36. package/lib/views/set-view.js +23 -0
  37. package/package.json +16 -15
  38. package/types/binding/attribute.d.ts +23 -0
  39. package/types/binding/binding.d.ts +30 -0
  40. package/types/binding/class.d.ts +23 -0
  41. package/types/binding/style.d.ts +23 -0
  42. package/types/core/core.d.ts +140 -0
  43. package/types/core/destroyable.d.ts +15 -0
  44. package/types/core/errors.d.ts +4 -0
  45. package/types/core/executor.d.ts +87 -0
  46. package/types/core/ivalue.d.ts +45 -0
  47. package/types/core/signal.d.ts +35 -0
  48. package/types/core/slot.d.ts +45 -0
  49. package/types/index.d.ts +27 -21
  50. package/types/models/array-model.d.ts +103 -0
  51. package/types/models/listener.d.ts +74 -0
  52. package/types/models/map-model.d.ts +35 -0
  53. package/types/models/model.d.ts +19 -0
  54. package/types/models/object-model.d.ts +36 -0
  55. package/types/models/set-model.d.ts +34 -0
  56. package/types/node/app.d.ts +37 -0
  57. package/types/node/interceptor.d.ts +50 -0
  58. package/types/node/node.d.ts +741 -0
  59. package/types/node/watch.d.ts +23 -0
  60. package/types/value/expression.d.ts +60 -0
  61. package/types/value/mirror.d.ts +35 -0
  62. package/types/value/pointer.d.ts +19 -0
  63. package/types/value/reference.d.ts +30 -0
  64. package/types/views/array-view.d.ts +13 -0
  65. package/types/views/base-view.d.ts +43 -0
  66. package/types/views/map-view.d.ts +11 -0
  67. package/types/views/object-view.d.ts +11 -0
  68. package/types/views/repeat-node.d.ts +35 -0
  69. package/types/views/repeater.d.ts +38 -0
  70. package/types/views/set-view.d.ts +11 -0
  71. package/CHANGELOG.md +0 -23
  72. package/img/favicon.svg +0 -441
  73. package/img/getLocus.svg +0 -18
  74. package/img/logo.png +0 -0
  75. package/img/logo.svg +0 -550
  76. package/img/scores-o-log.png +0 -0
  77. package/img/scores-o.png +0 -0
  78. package/img/scores-wo-log.png +0 -0
  79. package/img/scores-wo.png +0 -0
  80. package/img/x1-x32.png +0 -0
  81. package/lib/attribute.js +0 -71
  82. package/lib/attribute.js.map +0 -1
  83. package/lib/bind.js +0 -286
  84. package/lib/bind.js.map +0 -1
  85. package/lib/class.js +0 -97
  86. package/lib/class.js.map +0 -1
  87. package/lib/executor.js +0 -167
  88. package/lib/executor.js.map +0 -1
  89. package/lib/index.js.map +0 -1
  90. package/lib/interfaces/core.js +0 -247
  91. package/lib/interfaces/core.js.map +0 -1
  92. package/lib/interfaces/destroyable.js +0 -39
  93. package/lib/interfaces/destroyable.js.map +0 -1
  94. package/lib/interfaces/errors.js +0 -49
  95. package/lib/interfaces/errors.js.map +0 -1
  96. package/lib/interfaces/ibind.js +0 -31
  97. package/lib/interfaces/ibind.js.map +0 -1
  98. package/lib/interfaces/idefinition.js +0 -64
  99. package/lib/interfaces/idefinition.js.map +0 -1
  100. package/lib/interfaces/ivalue.js +0 -60
  101. package/lib/interfaces/ivalue.js.map +0 -1
  102. package/lib/models.js +0 -579
  103. package/lib/models.js.map +0 -1
  104. package/lib/node.js +0 -2155
  105. package/lib/node.js.map +0 -1
  106. package/lib/property.js +0 -38
  107. package/lib/property.js.map +0 -1
  108. package/lib/style.js +0 -66
  109. package/lib/style.js.map +0 -1
  110. package/lib/value.js +0 -203
  111. package/lib/value.js.map +0 -1
  112. package/lib/views.js +0 -688
  113. package/lib/views.js.map +0 -1
  114. package/types/attribute.d.ts +0 -18
  115. package/types/bind.d.ts +0 -72
  116. package/types/class.d.ts +0 -19
  117. package/types/data.d.ts +0 -11
  118. package/types/event.d.ts +0 -10
  119. package/types/executor.d.ts +0 -57
  120. package/types/interfaces/core.d.ts +0 -129
  121. package/types/interfaces/destroyable.d.ts +0 -11
  122. package/types/interfaces/errors.d.ts +0 -24
  123. package/types/interfaces/ibind.d.ts +0 -19
  124. package/types/interfaces/idefinition.d.ts +0 -29
  125. package/types/interfaces/ivalue.d.ts +0 -40
  126. package/types/models.d.ts +0 -179
  127. package/types/node.d.ts +0 -906
  128. package/types/property.d.ts +0 -9
  129. package/types/style.d.ts +0 -28
  130. package/types/value.d.ts +0 -43
  131. package/types/views.d.ts +0 -135
@@ -0,0 +1,83 @@
1
+ import { Fragment } from "./node";
2
+ import { Destroyable } from "../core/destroyable";
3
+ import { Signal } from "../core/signal";
4
+ import { Slot } from "../core/slot";
5
+ /**
6
+ * Interceptor is designed to connect signals & methods of children elements
7
+ * @class Interceptor
8
+ * @extends Destroyable
9
+ */
10
+ export class Interceptor extends Destroyable {
11
+ constructor() {
12
+ super(...arguments);
13
+ /**
14
+ * Set of signals
15
+ * @type Set
16
+ */
17
+ this.signals = new Set;
18
+ /**
19
+ * Set of handlers
20
+ * @type Set
21
+ */
22
+ this.handlers = new Set;
23
+ }
24
+ /**
25
+ * Connect a signal or a handler
26
+ * @param thing {Signal | function}
27
+ */
28
+ connect(thing) {
29
+ // interceptor will connect signals and handlers together
30
+ if (thing instanceof Signal) {
31
+ this.handlers.forEach(handler => {
32
+ thing.subscribe(handler);
33
+ });
34
+ this.signals.add(thing);
35
+ }
36
+ else {
37
+ this.signals.forEach(signal => {
38
+ signal.subscribe(thing);
39
+ });
40
+ this.handlers.add(thing);
41
+ }
42
+ }
43
+ /**
44
+ * Disconnect a handler from signals
45
+ * @param handler {function}
46
+ */
47
+ disconnect(handler) {
48
+ this.signals.forEach(signal => {
49
+ signal.unsubscribe(handler);
50
+ });
51
+ }
52
+ $destroy() {
53
+ super.$destroy();
54
+ this.signals.forEach(signal => {
55
+ this.handlers.forEach(handler => {
56
+ signal.unsubscribe(handler);
57
+ });
58
+ });
59
+ }
60
+ }
61
+ /**
62
+ * Interceptor node to implement directly to vasille DOM
63
+ * @class InterceptorNode
64
+ * @extends Extension
65
+ */
66
+ export class InterceptorNode extends Fragment {
67
+ constructor() {
68
+ super(...arguments);
69
+ /**
70
+ * Internal interceptor
71
+ * @type Interceptor
72
+ */
73
+ this.interceptor = new Interceptor;
74
+ /**
75
+ * The default slot of node
76
+ * @type Slot
77
+ */
78
+ this.slot = new Slot;
79
+ }
80
+ $compose() {
81
+ this.slot.release(this, this.interceptor);
82
+ }
83
+ }