@telia/teddy 0.0.15 → 0.0.16

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 (116) hide show
  1. package/dist/components/accordion/accordion.d.ts +2 -1
  2. package/dist/components/accordion/accordion.js +90 -24
  3. package/dist/components/accordion/index.js +2 -2
  4. package/dist/components/badge/badge.js +40 -24
  5. package/dist/components/badge/index.js +2 -2
  6. package/dist/components/box/box.js +14 -10
  7. package/dist/components/box/index.js +2 -2
  8. package/dist/components/button/button.js +60 -52
  9. package/dist/components/button/index.js +2 -2
  10. package/dist/components/card/card.d.ts +29 -3
  11. package/dist/components/card/card.js +202 -25
  12. package/dist/components/card/index.js +2 -2
  13. package/dist/components/field-error-text/field-error-text.js +21 -19
  14. package/dist/components/field-error-text/index.js +2 -2
  15. package/dist/components/flex/flex.js +15 -12
  16. package/dist/components/flex/index.js +2 -2
  17. package/dist/components/grid/grid.js +15 -12
  18. package/dist/components/grid/index.js +2 -2
  19. package/dist/components/heading/heading.js +22 -19
  20. package/dist/components/heading/index.js +2 -2
  21. package/dist/components/helper-text/helper-text.js +14 -13
  22. package/dist/components/helper-text/index.js +2 -2
  23. package/dist/components/icon/icon.js +16 -14
  24. package/dist/components/icon/index.js +4 -4
  25. package/dist/components/index.js +51 -46
  26. package/dist/components/input/index.js +3 -3
  27. package/dist/components/input/input.js +79 -66
  28. package/dist/components/label/index.js +2 -2
  29. package/dist/components/label/label.js +17 -23
  30. package/dist/components/link/index.js +2 -2
  31. package/dist/components/link/link.js +20 -19
  32. package/dist/components/modal/index.js +2 -2
  33. package/dist/components/modal/modal.js +173 -14
  34. package/dist/components/navigation-menu/index.js +2 -2
  35. package/dist/components/navigation-menu/navigation-menu.js +391 -8
  36. package/dist/components/notification/index.js +2 -2
  37. package/dist/components/notification/notification.d.ts +8 -7
  38. package/dist/components/notification/notification.js +96 -24
  39. package/dist/components/radio-group/index.js +2 -2
  40. package/dist/components/radio-group/radio-group.js +91 -8
  41. package/dist/components/spinner/index.js +2 -2
  42. package/dist/components/spinner/spinner.js +36 -29
  43. package/dist/components/text/index.js +2 -2
  44. package/dist/components/text/text.js +18 -17
  45. package/dist/components/text-field/index.js +2 -2
  46. package/dist/components/text-field/text-field.js +110 -90
  47. package/dist/components/text-spacing/index.js +2 -2
  48. package/dist/components/text-spacing/text-spacing.js +14 -12
  49. package/dist/components/toggle/index.js +2 -2
  50. package/dist/components/toggle/toggle.d.ts +1 -1
  51. package/dist/components/toggle/toggle.js +84 -23
  52. package/dist/components/visually-hidden/index.js +2 -2
  53. package/dist/components/visually-hidden/visually-hidden.js +17 -15
  54. package/dist/icons/category.js +2 -2
  55. package/dist/icons/name.js +2 -2
  56. package/dist/main.js +359 -61
  57. package/dist/style.css +3402 -0
  58. package/dist/tokens/border/variables.js +18 -10
  59. package/dist/tokens/breakpoint/variables.js +8 -5
  60. package/dist/tokens/color/variables.js +452 -227
  61. package/dist/tokens/index.d.ts +7 -7
  62. package/dist/tokens/index.js +308 -14
  63. package/dist/tokens/motion/variables.js +22 -12
  64. package/dist/tokens/shadow/variables.js +8 -5
  65. package/dist/tokens/spacing/variables.js +46 -24
  66. package/dist/tokens/typography/variables.js +48 -25
  67. package/dist/utils/action.js +10 -7
  68. package/dist/utils/composeEventHandlers.js +7 -5
  69. package/dist/utils/composeRefs.js +13 -9
  70. package/dist/utils/layout/align.js +5 -4
  71. package/dist/utils/layout/flex.js +25 -18
  72. package/dist/utils/layout/gap.js +7 -6
  73. package/dist/utils/layout/grid.js +31 -24
  74. package/dist/utils/layout/height.js +12 -11
  75. package/dist/utils/layout/index.js +76 -59
  76. package/dist/utils/layout/inset.js +10 -9
  77. package/dist/utils/layout/justify.js +6 -5
  78. package/dist/utils/layout/margin.js +10 -9
  79. package/dist/utils/layout/padding.js +10 -9
  80. package/dist/utils/layout/position.js +6 -5
  81. package/dist/utils/layout/util.js +7 -6
  82. package/dist/utils/layout/width.js +8 -7
  83. package/package.json +21 -14
  84. package/dist/assets/badge.css +0 -1
  85. package/dist/assets/button.css +0 -1
  86. package/dist/assets/field-error-text.css +0 -1
  87. package/dist/assets/flex.css +0 -1
  88. package/dist/assets/grid.css +0 -1
  89. package/dist/assets/heading.css +0 -1
  90. package/dist/assets/helper-text.css +0 -1
  91. package/dist/assets/icon.css +0 -1
  92. package/dist/assets/input.css +0 -1
  93. package/dist/assets/label.css +0 -1
  94. package/dist/assets/link.css +0 -1
  95. package/dist/assets/main.css +0 -1
  96. package/dist/assets/navigation-menu.css +0 -1
  97. package/dist/assets/radio-group.css +0 -1
  98. package/dist/assets/spinner.css +0 -1
  99. package/dist/assets/text-field.css +0 -1
  100. package/dist/assets/text-spacing.css +0 -1
  101. package/dist/assets/text.css +0 -1
  102. package/dist/assets/visually-hidden.css +0 -1
  103. package/dist/badge-Cnug5TzH.js +0 -1855
  104. package/dist/clsx-DB4S2d7J.js +0 -22
  105. package/dist/index-DM5e-Whg.js +0 -43
  106. package/dist/index-DpfSJps6.js +0 -75
  107. package/dist/index-FPIZOCcD.js +0 -305
  108. package/dist/navigation-menu-DKuyW8zE.js +0 -1036
  109. package/dist/radio-group-B--zT3OL.js +0 -440
  110. package/dist/variables-BKiPmtHY.js +0 -458
  111. package/dist/variables-BkY5b0io.js +0 -14
  112. package/dist/variables-Bq0YUbLS.js +0 -14
  113. package/dist/variables-CDK515QX.js +0 -52
  114. package/dist/variables-CMRTN8qo.js +0 -28
  115. package/dist/variables-Dmoh9YtD.js +0 -54
  116. package/dist/variables-IczXZ5CN.js +0 -24
@@ -1,440 +0,0 @@
1
- import './assets/radio-group.css';
2
- import { jsx as I } from "react/jsx-runtime";
3
- import p, { forwardRef as x, createElement as b, useRef as w, useState as T, useEffect as P, useCallback as k } from "react";
4
- import { c as S } from "./clsx-DB4S2d7J.js";
5
- import { _ as m, b as M, $ as $e } from "./index-DpfSJps6.js";
6
- import { $ as _e, a as q, b as H, c as Y, d as ve, e as y, f as ge, g as me, h as Re, i as he } from "./index-FPIZOCcD.js";
7
- import { $ as A } from "./index-DM5e-Whg.js";
8
- import { Label as Ie } from "./components/label/label.js";
9
- import { useComposedRefs as ye } from "./utils/composeRefs.js";
10
- const D = "rovingFocusGroup.onEntryFocus", xe = {
11
- bubbles: !1,
12
- cancelable: !0
13
- }, z = "RovingFocusGroup", [O, j, Ce] = _e(z), [we, W] = q(z, [
14
- Ce
15
- ]), [Fe, Ee] = we(z), Se = /* @__PURE__ */ x((e, t) => /* @__PURE__ */ b(O.Provider, {
16
- scope: e.__scopeRovingFocusGroup
17
- }, /* @__PURE__ */ b(O.Slot, {
18
- scope: e.__scopeRovingFocusGroup
19
- }, /* @__PURE__ */ b(Ge, m({}, e, {
20
- ref: t
21
- }))))), Ge = /* @__PURE__ */ x((e, t) => {
22
- const { __scopeRovingFocusGroup: o, orientation: r, loop: n = !1, dir: a, currentTabStopId: c, defaultCurrentTabStopId: i, onCurrentTabStopIdChange: s, onEntryFocus: d, ...g } = e, $ = w(null), _ = M(t, $), f = H(a), [u = null, l] = Y({
23
- prop: c,
24
- defaultProp: i,
25
- onChange: s
26
- }), [G, R] = T(!1), h = ve(d), ie = j(o), N = w(!1), [ue, B] = T(0);
27
- return P(() => {
28
- const v = $.current;
29
- if (v)
30
- return v.addEventListener(D, h), () => v.removeEventListener(D, h);
31
- }, [
32
- h
33
- ]), /* @__PURE__ */ b(Fe, {
34
- scope: o,
35
- orientation: r,
36
- dir: f,
37
- loop: n,
38
- currentTabStopId: u,
39
- onItemFocus: k(
40
- (v) => l(v),
41
- [
42
- l
43
- ]
44
- ),
45
- onItemShiftTab: k(
46
- () => R(!0),
47
- []
48
- ),
49
- onFocusableItemAdd: k(
50
- () => B(
51
- (v) => v + 1
52
- ),
53
- []
54
- ),
55
- onFocusableItemRemove: k(
56
- () => B(
57
- (v) => v - 1
58
- ),
59
- []
60
- )
61
- }, /* @__PURE__ */ b(A.div, m({
62
- tabIndex: G || ue === 0 ? -1 : 0,
63
- "data-orientation": r
64
- }, g, {
65
- ref: _,
66
- style: {
67
- outline: "none",
68
- ...e.style
69
- },
70
- onMouseDown: y(e.onMouseDown, () => {
71
- N.current = !0;
72
- }),
73
- onFocus: y(e.onFocus, (v) => {
74
- const fe = !N.current;
75
- if (v.target === v.currentTarget && fe && !G) {
76
- const V = new CustomEvent(D, xe);
77
- if (v.currentTarget.dispatchEvent(V), !V.defaultPrevented) {
78
- const L = ie().filter(
79
- (C) => C.focusable
80
- ), be = L.find(
81
- (C) => C.active
82
- ), le = L.find(
83
- (C) => C.id === u
84
- ), pe = [
85
- be,
86
- le,
87
- ...L
88
- ].filter(Boolean).map(
89
- (C) => C.ref.current
90
- );
91
- X(pe);
92
- }
93
- }
94
- N.current = !1;
95
- }),
96
- onBlur: y(
97
- e.onBlur,
98
- () => R(!1)
99
- )
100
- })));
101
- }), Ae = "RovingFocusGroupItem", ke = /* @__PURE__ */ x((e, t) => {
102
- const { __scopeRovingFocusGroup: o, focusable: r = !0, active: n = !1, tabStopId: a, ...c } = e, i = ge(), s = a || i, d = Ee(Ae, o), g = d.currentTabStopId === s, $ = j(o), { onFocusableItemAdd: _, onFocusableItemRemove: f } = d;
103
- return P(() => {
104
- if (r)
105
- return _(), () => f();
106
- }, [
107
- r,
108
- _,
109
- f
110
- ]), /* @__PURE__ */ b(O.ItemSlot, {
111
- scope: o,
112
- id: s,
113
- focusable: r,
114
- active: n
115
- }, /* @__PURE__ */ b(A.span, m({
116
- tabIndex: g ? 0 : -1,
117
- "data-orientation": d.orientation
118
- }, c, {
119
- ref: t,
120
- onMouseDown: y(e.onMouseDown, (u) => {
121
- r ? d.onItemFocus(s) : u.preventDefault();
122
- }),
123
- onFocus: y(
124
- e.onFocus,
125
- () => d.onItemFocus(s)
126
- ),
127
- onKeyDown: y(e.onKeyDown, (u) => {
128
- if (u.key === "Tab" && u.shiftKey) {
129
- d.onItemShiftTab();
130
- return;
131
- }
132
- if (u.target !== u.currentTarget)
133
- return;
134
- const l = Ne(u, d.orientation, d.dir);
135
- if (l !== void 0) {
136
- u.preventDefault();
137
- let R = $().filter(
138
- (h) => h.focusable
139
- ).map(
140
- (h) => h.ref.current
141
- );
142
- if (l === "last")
143
- R.reverse();
144
- else if (l === "prev" || l === "next") {
145
- l === "prev" && R.reverse();
146
- const h = R.indexOf(u.currentTarget);
147
- R = d.loop ? Le(R, h + 1) : R.slice(h + 1);
148
- }
149
- setTimeout(
150
- () => X(R)
151
- );
152
- }
153
- })
154
- })));
155
- }), Te = {
156
- ArrowLeft: "prev",
157
- ArrowUp: "prev",
158
- ArrowRight: "next",
159
- ArrowDown: "next",
160
- PageUp: "first",
161
- Home: "first",
162
- PageDown: "last",
163
- End: "last"
164
- };
165
- function Pe(e, t) {
166
- return t !== "rtl" ? e : e === "ArrowLeft" ? "ArrowRight" : e === "ArrowRight" ? "ArrowLeft" : e;
167
- }
168
- function Ne(e, t, o) {
169
- const r = Pe(e.key, o);
170
- if (!(t === "vertical" && [
171
- "ArrowLeft",
172
- "ArrowRight"
173
- ].includes(r)) && !(t === "horizontal" && [
174
- "ArrowUp",
175
- "ArrowDown"
176
- ].includes(r)))
177
- return Te[r];
178
- }
179
- function X(e) {
180
- const t = document.activeElement;
181
- for (const o of e)
182
- if (o === t || (o.focus(), document.activeElement !== t))
183
- return;
184
- }
185
- function Le(e, t) {
186
- return e.map(
187
- (o, r) => e[(t + r) % e.length]
188
- );
189
- }
190
- const De = Se, Oe = ke;
191
- function Me(e) {
192
- const [t, o] = T(void 0);
193
- return me(() => {
194
- if (e) {
195
- o({
196
- width: e.offsetWidth,
197
- height: e.offsetHeight
198
- });
199
- const r = new ResizeObserver((n) => {
200
- if (!Array.isArray(n) || !n.length)
201
- return;
202
- const a = n[0];
203
- let c, i;
204
- if ("borderBoxSize" in a) {
205
- const s = a.borderBoxSize, d = Array.isArray(s) ? s[0] : s;
206
- c = d.inlineSize, i = d.blockSize;
207
- } else
208
- c = e.offsetWidth, i = e.offsetHeight;
209
- o({
210
- width: c,
211
- height: i
212
- });
213
- });
214
- return r.observe(e, {
215
- box: "border-box"
216
- }), () => r.unobserve(e);
217
- } else
218
- o(void 0);
219
- }, [
220
- e
221
- ]), t;
222
- }
223
- const J = "Radio", [qe, Q] = q(J), [ze, Ke] = qe(J), Ue = /* @__PURE__ */ x((e, t) => {
224
- const { __scopeRadio: o, name: r, checked: n = !1, required: a, disabled: c, value: i = "on", onCheck: s, ...d } = e, [g, $] = T(null), _ = M(
225
- t,
226
- (l) => $(l)
227
- ), f = w(!1), u = g ? !!g.closest("form") : !0;
228
- return /* @__PURE__ */ b(ze, {
229
- scope: o,
230
- checked: n,
231
- disabled: c
232
- }, /* @__PURE__ */ b(A.button, m({
233
- type: "button",
234
- role: "radio",
235
- "aria-checked": n,
236
- "data-state": Z(n),
237
- "data-disabled": c ? "" : void 0,
238
- disabled: c,
239
- value: i
240
- }, d, {
241
- ref: _,
242
- onClick: y(e.onClick, (l) => {
243
- n || s == null || s(), u && (f.current = l.isPropagationStopped(), f.current || l.stopPropagation());
244
- })
245
- })), u && /* @__PURE__ */ b(He, {
246
- control: g,
247
- bubbles: !f.current,
248
- name: r,
249
- value: i,
250
- checked: n,
251
- required: a,
252
- disabled: c,
253
- style: {
254
- transform: "translateX(-100%)"
255
- }
256
- }));
257
- }), Be = "RadioIndicator", Ve = /* @__PURE__ */ x((e, t) => {
258
- const { __scopeRadio: o, forceMount: r, ...n } = e, a = Ke(Be, o);
259
- return /* @__PURE__ */ b(Re, {
260
- present: r || a.checked
261
- }, /* @__PURE__ */ b(A.span, m({
262
- "data-state": Z(a.checked),
263
- "data-disabled": a.disabled ? "" : void 0
264
- }, n, {
265
- ref: t
266
- })));
267
- }), He = (e) => {
268
- const { control: t, checked: o, bubbles: r = !0, ...n } = e, a = w(null), c = he(o), i = Me(t);
269
- return P(() => {
270
- const s = a.current, d = window.HTMLInputElement.prototype, $ = Object.getOwnPropertyDescriptor(d, "checked").set;
271
- if (c !== o && $) {
272
- const _ = new Event("click", {
273
- bubbles: r
274
- });
275
- $.call(s, o), s.dispatchEvent(_);
276
- }
277
- }, [
278
- c,
279
- o,
280
- r
281
- ]), /* @__PURE__ */ b("input", m({
282
- type: "radio",
283
- "aria-hidden": !0,
284
- defaultChecked: o
285
- }, n, {
286
- tabIndex: -1,
287
- ref: a,
288
- style: {
289
- ...e.style,
290
- ...i,
291
- position: "absolute",
292
- pointerEvents: "none",
293
- opacity: 0,
294
- margin: 0
295
- }
296
- }));
297
- };
298
- function Z(e) {
299
- return e ? "checked" : "unchecked";
300
- }
301
- const Ye = [
302
- "ArrowUp",
303
- "ArrowDown",
304
- "ArrowLeft",
305
- "ArrowRight"
306
- ], ee = "RadioGroup", [je, po] = q(ee, [
307
- W,
308
- Q
309
- ]), oe = W(), te = Q(), [We, Xe] = je(ee), Je = /* @__PURE__ */ x((e, t) => {
310
- const { __scopeRadioGroup: o, name: r, defaultValue: n, value: a, required: c = !1, disabled: i = !1, orientation: s, dir: d, loop: g = !0, onValueChange: $, ..._ } = e, f = oe(o), u = H(d), [l, G] = Y({
311
- prop: a,
312
- defaultProp: n,
313
- onChange: $
314
- });
315
- return /* @__PURE__ */ b(We, {
316
- scope: o,
317
- name: r,
318
- required: c,
319
- disabled: i,
320
- value: l,
321
- onValueChange: G
322
- }, /* @__PURE__ */ b(De, m({
323
- asChild: !0
324
- }, f, {
325
- orientation: s,
326
- dir: u,
327
- loop: g
328
- }), /* @__PURE__ */ b(A.div, m({
329
- role: "radiogroup",
330
- "aria-required": c,
331
- "aria-orientation": s,
332
- "data-disabled": i ? "" : void 0,
333
- dir: u
334
- }, _, {
335
- ref: t
336
- }))));
337
- }), Qe = "RadioGroupItem", Ze = /* @__PURE__ */ x((e, t) => {
338
- const { __scopeRadioGroup: o, disabled: r, ...n } = e, a = Xe(Qe, o), c = a.disabled || r, i = oe(o), s = te(o), d = w(null), g = M(t, d), $ = a.value === n.value, _ = w(!1);
339
- return P(() => {
340
- const f = (l) => {
341
- Ye.includes(l.key) && (_.current = !0);
342
- }, u = () => _.current = !1;
343
- return document.addEventListener("keydown", f), document.addEventListener("keyup", u), () => {
344
- document.removeEventListener("keydown", f), document.removeEventListener("keyup", u);
345
- };
346
- }, []), /* @__PURE__ */ b(Oe, m({
347
- asChild: !0
348
- }, i, {
349
- focusable: !c,
350
- active: $
351
- }), /* @__PURE__ */ b(Ue, m({
352
- disabled: c,
353
- required: a.required,
354
- checked: $
355
- }, s, n, {
356
- name: a.name,
357
- ref: g,
358
- onCheck: () => a.onValueChange(n.value),
359
- onKeyDown: y((f) => {
360
- f.key === "Enter" && f.preventDefault();
361
- }),
362
- onFocus: y(n.onFocus, () => {
363
- var f;
364
- _.current && ((f = d.current) === null || f === void 0 || f.click());
365
- })
366
- })));
367
- }), eo = /* @__PURE__ */ x((e, t) => {
368
- const { __scopeRadioGroup: o, ...r } = e, n = te(o);
369
- return /* @__PURE__ */ b(Ve, m({}, n, r, {
370
- ref: t
371
- }));
372
- }), oo = Je, to = Ze, ro = eo, F = {
373
- "teddy-radio-group": "_teddy-radio-group_1flae_1",
374
- "teddy-radio-group__group-label": "_teddy-radio-group__group-label_1flae_10",
375
- "teddy-radio-group__label": "_teddy-radio-group__label_1flae_13",
376
- "teddy-radio-group__group-label--required": "_teddy-radio-group__group-label--required_1flae_23",
377
- "teddy-radio-group__item": "_teddy-radio-group__item_1flae_26",
378
- "teddy-radio-group__trigger": "_teddy-radio-group__trigger_1flae_54",
379
- "teddy-radio-group__indicator": "_teddy-radio-group__indicator_1flae_111"
380
- }, E = "teddy-radio-group", re = p.createContext(void 0), ne = p.forwardRef(
381
- ({ className: e, ...t }, o) => {
382
- const r = S([F[`${E}`]], e), [n, a] = p.useState();
383
- return /* @__PURE__ */ I(re.Provider, { value: { setGroupLabelId: a, required: t.required }, children: /* @__PURE__ */ I(oo, { "aria-labelledby": n, ...t, ref: o, className: r }) });
384
- }
385
- );
386
- ne.displayName = "RadioGroup";
387
- const K = p.createContext(
388
- void 0
389
- ), ae = p.forwardRef(({ className: e, ...t }, o) => {
390
- const r = S([F[`${E}__item`]], e), n = w(null), a = `${p.useId()}-trigger`;
391
- return /* @__PURE__ */ I(K.Provider, { value: { triggerRef: n, id: a }, children: /* @__PURE__ */ I("div", { ...t, ref: o, className: r }) });
392
- });
393
- ae.displayName = "RadioGroup.Item";
394
- const ce = p.forwardRef(
395
- ({ className: e, asChild: t, as: o = "h3", children: r, ...n }, a) => {
396
- const c = p.useContext(re), i = S(
397
- [F[`${E}__group-label`]],
398
- {
399
- [F[`${E}__group-label--required`]]: c == null ? void 0 : c.required
400
- },
401
- e
402
- ), s = p.useId(), d = n.id || s;
403
- return p.useEffect(() => {
404
- c && c.setGroupLabelId(d);
405
- }, [d, c]), /* @__PURE__ */ I($e, { ...n, id: d, ref: a, className: i, children: t ? r : o ? /* @__PURE__ */ I(o, { children: r }) : null });
406
- }
407
- );
408
- ce.displayName = "RadioGroup.GroupLabel";
409
- const de = p.forwardRef(
410
- ({ className: e, children: t, ...o }, r) => {
411
- const n = S([F[`${E}__trigger`]], e), a = p.useContext(K), c = ye(r, a == null ? void 0 : a.triggerRef), i = o.id || (a == null ? void 0 : a.id);
412
- return /* @__PURE__ */ I(to, { ...o, id: i, ref: c, className: n, children: t || /* @__PURE__ */ I(U, {}) });
413
- }
414
- );
415
- de.displayName = "RadioGroup.Trigger";
416
- const U = p.forwardRef(
417
- ({ className: e, ...t }, o) => {
418
- const r = S([F[`${E}__indicator`]], e);
419
- return /* @__PURE__ */ I(ro, { ...t, ref: o, className: r });
420
- }
421
- );
422
- U.displayName = "RadioGroup.Indicator";
423
- const se = p.forwardRef(
424
- ({ className: e, ...t }, o) => {
425
- const r = S([F[`${E}__label`]], e), n = p.useContext(K), a = t.htmlFor || (n == null ? void 0 : n.id);
426
- return /* @__PURE__ */ I(Ie, { ...t, htmlFor: a, ref: o, className: r });
427
- }
428
- );
429
- se.displayName = "RadioGroup.Label";
430
- const $o = Object.assign(ne, {
431
- Item: ae,
432
- Trigger: de,
433
- Indicator: U,
434
- Label: se,
435
- GroupLabel: ce
436
- });
437
- export {
438
- Me as $,
439
- $o as R
440
- };