@serendie/ui 2.0.0 → 2.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 (118) hide show
  1. package/dist/components/CheckBox/CheckBox.js +36 -35
  2. package/dist/components/ChoiceBox/ChoiceBox.js +41 -41
  3. package/dist/components/DataTable/DataTableComponent.d.ts +3 -20
  4. package/dist/components/DataTable/DataTableComponent.js +38 -36
  5. package/dist/components/DataTable/table/HeaderCheckbox.js +29 -19
  6. package/dist/components/Search/Search.d.ts +3 -1
  7. package/dist/components/Search/Search.js +34 -33
  8. package/dist/components/Select/Select.d.ts +2 -1
  9. package/dist/components/Select/Select.js +47 -41
  10. package/dist/components/Tooltip/Tooltip.d.ts +14 -0
  11. package/dist/components/Tooltip/Tooltip.js +70 -0
  12. package/dist/components/Tooltip/index.d.ts +1 -0
  13. package/dist/components/Tooltip/index.js +4 -0
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.js +12 -10
  16. package/dist/node_modules/@ark-ui/react/dist/components/accordion/accordion-item-content.js +4 -6
  17. package/dist/node_modules/@ark-ui/react/dist/components/accordion/accordion-item-indicator.js +4 -6
  18. package/dist/node_modules/@ark-ui/react/dist/components/accordion/accordion-item-trigger.js +10 -12
  19. package/dist/node_modules/@ark-ui/react/dist/components/accordion/accordion-item.js +16 -16
  20. package/dist/node_modules/@ark-ui/react/dist/components/accordion/use-accordion.js +13 -20
  21. package/dist/node_modules/@ark-ui/react/dist/components/avatar/avatar-root.js +1 -5
  22. package/dist/node_modules/@ark-ui/react/dist/components/avatar/use-avatar.js +14 -18
  23. package/dist/node_modules/@ark-ui/react/dist/components/checkbox/checkbox-hidden-input.js +4 -6
  24. package/dist/node_modules/@ark-ui/react/dist/components/checkbox/use-checkbox.js +22 -28
  25. package/dist/node_modules/@ark-ui/react/dist/components/collapsible/collapsible-content.js +7 -9
  26. package/dist/node_modules/@ark-ui/react/dist/components/collapsible/use-collapsible.js +14 -21
  27. package/dist/node_modules/@ark-ui/react/dist/components/collection/list-collection.js +5 -0
  28. package/dist/node_modules/@ark-ui/react/dist/components/combobox/combobox-content.js +9 -8
  29. package/dist/node_modules/@ark-ui/react/dist/components/combobox/combobox-item-group.js +4 -6
  30. package/dist/node_modules/@ark-ui/react/dist/components/combobox/combobox-positioner.js +4 -6
  31. package/dist/node_modules/@ark-ui/react/dist/components/combobox/combobox-root.js +17 -18
  32. package/dist/node_modules/@ark-ui/react/dist/components/combobox/combobox-trigger.js +10 -9
  33. package/dist/node_modules/@ark-ui/react/dist/components/combobox/use-combobox-item-context.js +5 -7
  34. package/dist/node_modules/@ark-ui/react/dist/components/combobox/use-combobox.js +21 -45
  35. package/dist/node_modules/@ark-ui/react/dist/components/dialog/dialog-backdrop.js +10 -9
  36. package/dist/node_modules/@ark-ui/react/dist/components/dialog/dialog-close-trigger.js +4 -6
  37. package/dist/node_modules/@ark-ui/react/dist/components/dialog/dialog-content.js +6 -5
  38. package/dist/node_modules/@ark-ui/react/dist/components/dialog/dialog-description.js +4 -6
  39. package/dist/node_modules/@ark-ui/react/dist/components/dialog/use-dialog.js +13 -22
  40. package/dist/node_modules/@ark-ui/react/dist/components/factory.js +26 -24
  41. package/dist/node_modules/@ark-ui/react/dist/components/menu/menu-content.js +9 -8
  42. package/dist/node_modules/@ark-ui/react/dist/components/menu/menu-item-group.js +1 -3
  43. package/dist/node_modules/@ark-ui/react/dist/components/menu/menu-item.js +15 -13
  44. package/dist/node_modules/@ark-ui/react/dist/components/menu/menu-root.js +13 -14
  45. package/dist/node_modules/@ark-ui/react/dist/components/menu/use-menu-option-item-props-context.js +10 -0
  46. package/dist/node_modules/@ark-ui/react/dist/components/menu/use-menu.js +14 -21
  47. package/dist/node_modules/@ark-ui/react/dist/components/pagination/pagination-ellipsis.js +4 -6
  48. package/dist/node_modules/@ark-ui/react/dist/components/pagination/pagination-next-trigger.js +4 -6
  49. package/dist/node_modules/@ark-ui/react/dist/components/pagination/pagination-prev-trigger.js +4 -6
  50. package/dist/node_modules/@ark-ui/react/dist/components/pagination/pagination-root.js +5 -4
  51. package/dist/node_modules/@ark-ui/react/dist/components/pagination/use-pagination.js +13 -19
  52. package/dist/node_modules/@ark-ui/react/dist/components/portal/portal.js +25 -16
  53. package/dist/node_modules/@ark-ui/react/dist/components/presence/split-presence-props.js +3 -2
  54. package/dist/node_modules/@ark-ui/react/dist/components/presence/use-presence.js +18 -18
  55. package/dist/node_modules/@ark-ui/react/dist/components/radio-group/radio-group-item-control.js +4 -6
  56. package/dist/node_modules/@ark-ui/react/dist/components/radio-group/radio-group-item-text.js +4 -6
  57. package/dist/node_modules/@ark-ui/react/dist/components/radio-group/radio-group-item.js +1 -5
  58. package/dist/node_modules/@ark-ui/react/dist/components/radio-group/use-radio-group.js +14 -22
  59. package/dist/node_modules/@ark-ui/react/dist/components/select/select-content.js +9 -8
  60. package/dist/node_modules/@ark-ui/react/dist/components/select/select-root.js +11 -12
  61. package/dist/node_modules/@ark-ui/react/dist/components/select/use-select.js +20 -47
  62. package/dist/node_modules/@ark-ui/react/dist/components/switch/switch-hidden-input.js +4 -6
  63. package/dist/node_modules/@ark-ui/react/dist/components/switch/use-switch.js +20 -26
  64. package/dist/node_modules/@ark-ui/react/dist/components/tabs/tabs-root.js +9 -8
  65. package/dist/node_modules/@ark-ui/react/dist/components/tabs/use-tabs.js +14 -21
  66. package/dist/node_modules/@ark-ui/react/dist/components/toast/create-toaster.js +3 -7
  67. package/dist/node_modules/@ark-ui/react/dist/components/toast/toaster.js +28 -15
  68. package/dist/node_modules/@ark-ui/react/dist/components/tooltip/tooltip-arrow-tip.js +13 -0
  69. package/dist/node_modules/@ark-ui/react/dist/components/tooltip/tooltip-arrow.js +13 -0
  70. package/dist/node_modules/@ark-ui/react/dist/components/tooltip/tooltip-content.js +15 -0
  71. package/dist/node_modules/@ark-ui/react/dist/components/tooltip/tooltip-positioner.js +14 -0
  72. package/dist/node_modules/@ark-ui/react/dist/components/tooltip/tooltip-root.js +14 -0
  73. package/dist/node_modules/@ark-ui/react/dist/components/tooltip/tooltip-trigger.js +13 -0
  74. package/dist/node_modules/@ark-ui/react/dist/components/tooltip/use-tooltip-context.js +10 -0
  75. package/dist/node_modules/@ark-ui/react/dist/components/tooltip/use-tooltip.js +17 -0
  76. package/dist/node_modules/@ark-ui/react/dist/utils/compose-refs.js +13 -7
  77. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +92 -90
  78. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +230 -216
  79. package/dist/node_modules/@zag-js/accordion/dist/index.js +210 -227
  80. package/dist/node_modules/@zag-js/aria-hidden/dist/index.js +49 -12
  81. package/dist/node_modules/@zag-js/avatar/dist/index.js +119 -134
  82. package/dist/node_modules/@zag-js/checkbox/dist/index.js +196 -197
  83. package/dist/node_modules/@zag-js/collapsible/dist/index.js +250 -198
  84. package/dist/node_modules/@zag-js/collection/dist/index.js +172 -179
  85. package/dist/node_modules/@zag-js/combobox/dist/index.js +1176 -1082
  86. package/dist/node_modules/@zag-js/core/dist/index.js +77 -496
  87. package/dist/node_modules/@zag-js/dialog/dist/index.js +243 -270
  88. package/dist/node_modules/@zag-js/dismissable/dist/index.js +62 -60
  89. package/dist/node_modules/@zag-js/dom-query/dist/index.js +465 -253
  90. package/dist/node_modules/@zag-js/focus-trap/dist/index.js +307 -0
  91. package/dist/node_modules/@zag-js/focus-visible/dist/index.js +48 -47
  92. package/dist/node_modules/@zag-js/interact-outside/dist/index.js +112 -80
  93. package/dist/node_modules/@zag-js/menu/dist/index.js +998 -884
  94. package/dist/node_modules/@zag-js/pagination/dist/index.js +207 -213
  95. package/dist/node_modules/@zag-js/popper/dist/index.js +130 -129
  96. package/dist/node_modules/@zag-js/presence/dist/index.js +139 -122
  97. package/dist/node_modules/@zag-js/radio-group/dist/index.js +297 -302
  98. package/dist/node_modules/@zag-js/react/dist/index.js +255 -103
  99. package/dist/node_modules/@zag-js/remove-scroll/dist/index.js +18 -31
  100. package/dist/node_modules/@zag-js/select/dist/index.js +889 -885
  101. package/dist/node_modules/@zag-js/store/dist/index.js +98 -137
  102. package/dist/node_modules/@zag-js/switch/dist/index.js +199 -191
  103. package/dist/node_modules/@zag-js/tabs/dist/index.js +383 -386
  104. package/dist/node_modules/@zag-js/toast/dist/index.js +646 -633
  105. package/dist/node_modules/@zag-js/tooltip/dist/index.js +459 -0
  106. package/dist/node_modules/@zag-js/types/dist/index.js +6 -6
  107. package/dist/node_modules/@zag-js/utils/dist/index.js +112 -99
  108. package/dist/node_modules/proxy-compare/dist/index.js +4 -106
  109. package/dist/styles.css +1 -1
  110. package/package.json +5 -5
  111. package/dist/node_modules/@ark-ui/react/dist/utils/use-is-server.js +0 -10
  112. package/dist/node_modules/@zag-js/dom-event/dist/index.js +0 -130
  113. package/dist/node_modules/@zag-js/element-rect/dist/index.js +0 -32
  114. package/dist/node_modules/@zag-js/form-utils/dist/index.js +0 -51
  115. package/dist/node_modules/aria-hidden/dist/es2015/index.js +0 -52
  116. package/dist/node_modules/focus-trap/dist/focus-trap.esm.js +0 -431
  117. package/dist/node_modules/klona/full/index.js +0 -21
  118. package/dist/node_modules/tabbable/dist/index.esm.js +0 -202
@@ -1,170 +1,131 @@
1
- import { markToTrack as W, getUntracked as $ } from "../../../proxy-compare/dist/index.js";
2
- function q() {
1
+ import { markToTrack as z, getUntracked as K } from "../../../proxy-compare/dist/index.js";
2
+ function U() {
3
3
  if (typeof globalThis < "u") return globalThis;
4
4
  if (typeof self < "u") return self;
5
5
  if (typeof window < "u") return window;
6
6
  if (typeof global < "u") return global;
7
7
  }
8
- function N(e, c) {
9
- const f = q();
10
- return f ? (f[e] || (f[e] = c()), f[e]) : c();
8
+ function D(e, l) {
9
+ const i = U();
10
+ return i ? (i[e] || (i[e] = l()), i[e]) : l();
11
11
  }
12
- var A = () => process.env.NODE_ENV !== "production", v = (e) => typeof e == "object" && e !== null, O = N("__zag__proxyStateMap", () => /* @__PURE__ */ new WeakMap()), S = N("__zag__refSet", () => /* @__PURE__ */ new WeakSet()), B = (e) => typeof e == "object" && e !== null && "$$typeof" in e, k = (e) => typeof e == "object" && e !== null && "__v_isVNode" in e, J = (e) => typeof e == "object" && e !== null && "nodeType" in e && typeof e.nodeName == "string", Q = (e) => B(e) || k(e) || J(e), X = (e = Object.is, c = (t, h) => new Proxy(t, h), f = (t) => v(t) && !S.has(t) && (Array.isArray(t) || !(Symbol.iterator in t)) && !Q(t) && !(t instanceof WeakMap) && !(t instanceof WeakSet) && !(t instanceof Error) && !(t instanceof Number) && !(t instanceof Date) && !(t instanceof String) && !(t instanceof RegExp) && !(t instanceof ArrayBuffer), y = (t) => {
13
- switch (t.status) {
14
- case "fulfilled":
15
- return t.value;
16
- case "rejected":
17
- throw t.reason;
18
- default:
19
- throw t;
20
- }
21
- }, i = /* @__PURE__ */ new WeakMap(), u = (t, h, p = y) => {
22
- const d = i.get(t);
23
- if ((d == null ? void 0 : d[0]) === h)
24
- return d[1];
25
- const a = Array.isArray(t) ? [] : Object.create(Object.getPrototypeOf(t));
26
- return W(a, !0), i.set(t, [h, a]), Reflect.ownKeys(t).forEach((E) => {
27
- const w = Reflect.get(t, E);
28
- S.has(w) ? (W(w, !1), a[E] = w) : w instanceof Promise ? Object.defineProperty(a, E, {
29
- get() {
30
- return p(w);
31
- }
32
- }) : O.has(w) ? a[E] = F(w, p) : a[E] = w;
33
- }), Object.freeze(a);
34
- }, g = /* @__PURE__ */ new WeakMap(), l = [1, 1], m = (t) => {
35
- if (!v(t))
12
+ var O = D("__zag__refSet", () => /* @__PURE__ */ new WeakSet()), $ = (e) => typeof e == "object" && e !== null && "$$typeof" in e && "props" in e, q = (e) => typeof e == "object" && e !== null && "__v_isVNode" in e, B = (e) => typeof e == "object" && e !== null && "nodeType" in e && typeof e.nodeName == "string", k = (e) => $(e) || q(e) || B(e), j = (e) => e !== null && typeof e == "object", V = (e) => j(e) && !O.has(e) && (Array.isArray(e) || !(Symbol.iterator in e)) && !k(e) && !(e instanceof WeakMap) && !(e instanceof WeakSet) && !(e instanceof Error) && !(e instanceof Number) && !(e instanceof Date) && !(e instanceof String) && !(e instanceof RegExp) && !(e instanceof ArrayBuffer) && !(e instanceof Promise), S = () => process.env.NODE_ENV !== "production", g = D("__zag__proxyStateMap", () => /* @__PURE__ */ new WeakMap()), G = (e = Object.is, l = (s, p) => new Proxy(s, p), i = /* @__PURE__ */ new WeakMap(), b = (s, p) => {
13
+ const c = i.get(s);
14
+ if ((c == null ? void 0 : c[0]) === p)
15
+ return c[1];
16
+ const o = Array.isArray(s) ? [] : Object.create(Object.getPrototypeOf(s));
17
+ return z(o, !0), i.set(s, [p, o]), Reflect.ownKeys(s).forEach((w) => {
18
+ const d = Reflect.get(s, w);
19
+ O.has(d) ? (z(d, !1), o[w] = d) : g.has(d) ? o[w] = X(d) : o[w] = d;
20
+ }), Object.freeze(o);
21
+ }, a = /* @__PURE__ */ new WeakMap(), y = [1, 1], _ = (s) => {
22
+ if (!j(s))
36
23
  throw new Error("object required");
37
- const h = g.get(t);
38
- if (h)
39
- return h;
40
- let p = l[0];
41
- const d = /* @__PURE__ */ new Set(), a = (s, r = ++l[0]) => {
42
- p !== r && (p = r, d.forEach((n) => n(s, r)));
24
+ const p = a.get(s);
25
+ if (p)
26
+ return p;
27
+ let c = y[0];
28
+ const o = /* @__PURE__ */ new Set(), w = (n, t = ++y[0]) => {
29
+ c !== t && (c = t, o.forEach((r) => r(n, t)));
43
30
  };
44
- let E = l[1];
45
- const w = (s = ++l[1]) => (E !== s && !d.size && (E = s, b.forEach(([r]) => {
46
- const n = r[1](s);
47
- n > p && (p = n);
48
- })), p), z = (s) => (r, n) => {
49
- const o = [...r];
50
- o[1] = [s, ...o[1]], a(o, n);
51
- }, b = /* @__PURE__ */ new Map(), G = (s, r) => {
52
- if (A() && b.has(s))
31
+ let d = y[1];
32
+ const W = (n = ++y[1]) => (d !== n && !o.size && (d = n, u.forEach(([t]) => {
33
+ const r = t[1](n);
34
+ r > c && (c = r);
35
+ })), c), v = (n) => (t, r) => {
36
+ const f = [...t];
37
+ f[1] = [n, ...f[1]], w(f, r);
38
+ }, u = /* @__PURE__ */ new Map(), N = (n, t) => {
39
+ if (S() && u.has(n))
53
40
  throw new Error("prop listener already exists");
54
- if (d.size) {
55
- const n = r[3](z(s));
56
- b.set(s, [r, n]);
41
+ if (o.size) {
42
+ const r = t[3](v(n));
43
+ u.set(n, [t, r]);
57
44
  } else
58
- b.set(s, [r]);
59
- }, D = (s) => {
60
- var n;
61
- const r = b.get(s);
62
- r && (b.delete(s), (n = r[1]) == null || n.call(r));
63
- }, K = (s) => (d.add(s), d.size === 1 && b.forEach(([n, o], P) => {
64
- if (A() && o)
45
+ u.set(n, [t]);
46
+ }, L = (n) => {
47
+ var r;
48
+ const t = u.get(n);
49
+ t && (u.delete(n), (r = t[1]) == null || r.call(t));
50
+ }, T = (n) => (o.add(n), o.size === 1 && u.forEach(([r, f], m) => {
51
+ if (S() && f)
65
52
  throw new Error("remove already exists");
66
- const _ = n[3](z(P));
67
- b.set(P, [n, _]);
53
+ const h = r[3](v(m));
54
+ u.set(m, [r, h]);
68
55
  }), () => {
69
- d.delete(s), d.size === 0 && b.forEach(([n, o], P) => {
70
- o && (o(), b.set(P, [n]));
56
+ o.delete(n), o.size === 0 && u.forEach(([r, f], m) => {
57
+ f && (f(), u.set(m, [r]));
71
58
  });
72
- }), M = Array.isArray(t) ? [] : Object.create(Object.getPrototypeOf(t)), R = c(M, {
73
- deleteProperty(s, r) {
74
- const n = Reflect.get(s, r);
75
- D(r);
76
- const o = Reflect.deleteProperty(s, r);
77
- return o && a(["delete", [r], n]), o;
59
+ }), R = Array.isArray(s) ? [] : Object.create(Object.getPrototypeOf(s)), E = l(R, {
60
+ deleteProperty(n, t) {
61
+ const r = Reflect.get(n, t);
62
+ L(t);
63
+ const f = Reflect.deleteProperty(n, t);
64
+ return f && w(["delete", [t], r]), f;
78
65
  },
79
- set(s, r, n, o) {
80
- var V;
81
- const P = Reflect.has(s, r), _ = Reflect.get(s, r, o);
82
- if (P && (e(_, n) || g.has(n) && e(_, g.get(n))))
66
+ set(n, t, r, f) {
67
+ var A;
68
+ const m = Reflect.has(n, t), h = Reflect.get(n, t, f);
69
+ if (m && (e(h, r) || a.has(r) && e(h, a.get(r))))
83
70
  return !0;
84
- D(r), v(n) && (n = $(n) || n);
85
- let L = n;
86
- if (!((V = Object.getOwnPropertyDescriptor(s, r)) != null && V.set)) if (n instanceof Promise)
87
- n.then((j) => {
88
- Object.assign(n, { status: "fulfilled", value: j }), a(["resolve", [r], j]);
89
- }).catch((j) => {
90
- Object.assign(n, { status: "rejected", reason: j }), a(["reject", [r], j]);
91
- });
92
- else {
93
- !O.has(n) && f(n) && (L = T(n));
94
- const j = !S.has(L) && O.get(L);
95
- j && G(r, j);
71
+ L(t), j(r) && (r = K(r) || r);
72
+ let P = r;
73
+ if (!((A = Object.getOwnPropertyDescriptor(n, t)) != null && A.set)) {
74
+ !g.has(r) && V(r) && (P = Q(r));
75
+ const M = !O.has(P) && g.get(P);
76
+ M && N(t, M);
96
77
  }
97
- return Reflect.set(s, r, L, o), a(["set", [r], n, _]), !0;
78
+ return Reflect.set(n, t, P, f), w(["set", [t], r, h]), !0;
98
79
  }
99
80
  });
100
- g.set(t, R);
101
- const U = [M, w, u, K];
102
- return O.set(R, U), Reflect.ownKeys(t).forEach((s) => {
103
- const r = Object.getOwnPropertyDescriptor(t, s);
104
- r.get || r.set ? Object.defineProperty(M, s, r) : R[s] = t[s];
105
- }), R;
81
+ a.set(s, E);
82
+ const F = [R, W, b, T];
83
+ return g.set(E, F), Reflect.ownKeys(s).forEach((n) => {
84
+ const t = Object.getOwnPropertyDescriptor(s, n);
85
+ t.get || t.set ? Object.defineProperty(R, n, t) : E[n] = s[n];
86
+ }), E;
106
87
  }) => [
107
88
  // public functions
108
- m,
89
+ _,
109
90
  // shared state
91
+ g,
110
92
  O,
111
- S,
112
93
  // internal things
113
94
  e,
114
- c,
115
- f,
116
- y,
95
+ l,
96
+ V,
117
97
  i,
118
- u,
119
- g,
120
- l
121
- ], [Y] = X();
122
- function T(e = {}) {
123
- return Y(e);
98
+ b,
99
+ a,
100
+ y
101
+ ], [J] = G();
102
+ function Q(e = {}) {
103
+ return J(e);
124
104
  }
125
- function H(e, c, f) {
126
- const y = O.get(e);
127
- A() && !y && console.warn("Please use proxy object");
128
- let i;
129
- const u = [], g = y[3];
130
- let l = !1;
131
- const t = g((h) => {
132
- if (u.push(h), f) {
133
- c(u.splice(0));
134
- return;
135
- }
136
- i || (i = Promise.resolve().then(() => {
137
- i = void 0, l && c(u.splice(0));
105
+ function I(e, l, i) {
106
+ const b = g.get(e);
107
+ S() && !b && console.warn("Please use proxy object");
108
+ let a;
109
+ const y = [], _ = b[3];
110
+ let s = !1;
111
+ const c = _((o) => {
112
+ y.push(o), a || (a = Promise.resolve().then(() => {
113
+ a = void 0, s && l(y.splice(0));
138
114
  }));
139
115
  });
140
- return l = !0, () => {
141
- l = !1, t();
116
+ return s = !0, () => {
117
+ s = !1, c();
142
118
  };
143
119
  }
144
- function F(e, c) {
145
- const f = O.get(e);
146
- A() && !f && console.warn("Please use proxy object");
147
- const [y, i, u] = f;
148
- return u(y, i(), c);
149
- }
150
- function C(e) {
151
- return S.add(e), e;
152
- }
153
- function x(e, c) {
154
- Object.keys(c).forEach((i) => {
155
- if (Object.getOwnPropertyDescriptor(e, i))
156
- throw new Error("object property already defined");
157
- const u = c[i], { get: g, set: l } = typeof u == "function" ? { get: u } : u, m = {};
158
- m.get = () => g(F(y)), l && (m.set = (t) => l(y, t)), Object.defineProperty(e, i, m);
159
- });
160
- const y = T(e);
161
- return y;
120
+ function X(e) {
121
+ const l = g.get(e);
122
+ S() && !l && console.warn("Please use proxy object");
123
+ const [i, b, a] = l;
124
+ return a(i, b());
162
125
  }
163
126
  export {
164
- N as makeGlobal,
165
- T as proxy,
166
- x as proxyWithComputed,
167
- C as ref,
168
- F as snapshot,
169
- H as subscribe
127
+ D as globalRef,
128
+ Q as proxy,
129
+ X as snapshot,
130
+ I as subscribe
170
131
  };