@ebay/ui-core-react 4.1.0 → 4.2.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.
- package/ebay-menu/menu.d.ts +3 -17
- package/ebay-menu/menu.d.ts.map +1 -1
- package/ebay-menu/types.d.ts +18 -0
- package/ebay-menu/types.d.ts.map +1 -1
- package/ebay-menu-button/menu-button.d.ts +3 -3
- package/ebay-menu-button/menu-button.d.ts.map +1 -1
- package/ebay-split-button/README.md +52 -0
- package/ebay-split-button/index.d.ts +3 -0
- package/ebay-split-button/index.d.ts.map +1 -0
- package/ebay-split-button/index.js +15 -0
- package/ebay-split-button/split-button.d.ts +5 -0
- package/ebay-split-button/split-button.d.ts.map +1 -0
- package/ebay-split-button/split-button.js +41 -0
- package/ebay-split-button/types.d.ts +14 -0
- package/ebay-split-button/types.d.ts.map +1 -0
- package/ebay-split-button/types.js +2 -0
- package/package.json +1 -1
package/ebay-menu/menu.d.ts
CHANGED
|
@@ -1,19 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
declare
|
|
4
|
-
declare type ContainerSpanProps = Omit<ComponentProps<'span'>, 'onKeyDown' | 'onChange'>;
|
|
5
|
-
declare type Callback = (i: number, checked: boolean) => void;
|
|
6
|
-
declare type Props = ContainerDivProps & ContainerSpanProps & {
|
|
7
|
-
autofocus?: boolean;
|
|
8
|
-
baseEl?: 'div' | 'span';
|
|
9
|
-
checked?: number;
|
|
10
|
-
className?: string;
|
|
11
|
-
priority?: EbayMenuPriority;
|
|
12
|
-
type?: EbayMenuType;
|
|
13
|
-
onKeyDown?: Callback;
|
|
14
|
-
onSelect?: Callback;
|
|
15
|
-
onChange?: Callback;
|
|
16
|
-
};
|
|
17
|
-
declare const EbayMenu: FC<Props>;
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MenuProps } from './index';
|
|
3
|
+
declare const EbayMenu: FC<MenuProps>;
|
|
18
4
|
export default EbayMenu;
|
|
19
5
|
//# sourceMappingURL=menu.d.ts.map
|
package/ebay-menu/menu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/ebay-menu/menu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAEV,
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/ebay-menu/menu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAEV,EAAE,EACL,MAAM,OAAO,CAAA;AAOd,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAKnC,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,SAAS,CAqG3B,CAAA;AAED,eAAe,QAAQ,CAAA"}
|
package/ebay-menu/types.d.ts
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
1
2
|
export declare type EbayMenuType = 'radio' | 'checkbox';
|
|
2
3
|
export declare type EbayMenuPriority = 'primary' | 'secondary' | 'none';
|
|
4
|
+
declare type ContainerDivProps = Omit<ComponentProps<'div'>, 'onKeyDown' | 'onChange' | 'onSelect'>;
|
|
5
|
+
declare type ContainerSpanProps = Omit<ComponentProps<'span'>, 'onKeyDown' | 'onChange' | 'onSelect'>;
|
|
6
|
+
export declare type SelectCallback = (i: number, checked: boolean) => void;
|
|
7
|
+
export declare type ChangeCallback = (i: number, checked: boolean) => void;
|
|
8
|
+
export declare type KeyDownCallback = (i: number, checked: boolean) => void;
|
|
9
|
+
export declare type MenuProps = ContainerDivProps & ContainerSpanProps & {
|
|
10
|
+
autofocus?: boolean;
|
|
11
|
+
baseEl?: 'div' | 'span';
|
|
12
|
+
checked?: number;
|
|
13
|
+
className?: string;
|
|
14
|
+
priority?: EbayMenuPriority;
|
|
15
|
+
type?: EbayMenuType;
|
|
16
|
+
onKeyDown?: KeyDownCallback;
|
|
17
|
+
onSelect?: SelectCallback;
|
|
18
|
+
onChange?: ChangeCallback;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
3
21
|
//# sourceMappingURL=types.d.ts.map
|
package/ebay-menu/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ebay-menu/types.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY,GAAG,OAAO,GAAG,UAAU,CAAA;AAC/C,oBAAY,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ebay-menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,oBAAY,YAAY,GAAG,OAAO,GAAG,UAAU,CAAA;AAC/C,oBAAY,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAA;AAE/D,aAAK,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,CAAA;AAC3F,aAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,CAAA;AAE7F,oBAAY,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAClE,oBAAY,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAClE,oBAAY,eAAe,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAEnE,oBAAY,SAAS,GAAG,iBAAiB,GAAG,kBAAkB,GAAG;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentProps, FC } from 'react';
|
|
2
|
-
import { EbayMenuType } from '../ebay-menu';
|
|
2
|
+
import { ChangeCallback, EbayMenuType, SelectCallback } from '../ebay-menu';
|
|
3
3
|
import { EbayButtonProps } from '../ebay-button';
|
|
4
4
|
import { EbayMenuButtonVariant } from './index';
|
|
5
5
|
export declare type EbayMenuButtonProps = {
|
|
@@ -12,8 +12,8 @@ export declare type EbayMenuButtonProps = {
|
|
|
12
12
|
variant?: EbayMenuButtonVariant;
|
|
13
13
|
onCollapse?: () => void;
|
|
14
14
|
onExpand?: () => void;
|
|
15
|
-
onChange?:
|
|
16
|
-
onSelect?:
|
|
15
|
+
onChange?: ChangeCallback;
|
|
16
|
+
onSelect?: SelectCallback;
|
|
17
17
|
expanded?: boolean;
|
|
18
18
|
noToggleIcon?: boolean;
|
|
19
19
|
checked?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-button.d.ts","sourceRoot":"","sources":["../../src/ebay-menu-button/menu-button.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAgB,cAAc,EAAE,EAAE,EAA+B,MAAM,OAAO,CAAA;AAM5F,OAAO,EAAY,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"menu-button.d.ts","sourceRoot":"","sources":["../../src/ebay-menu-button/menu-button.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAgB,cAAc,EAAE,EAAE,EAA+B,MAAM,OAAO,CAAA;AAM5F,OAAO,EAAE,cAAc,EAAY,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACrF,OAAO,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAG5D,OAAO,EAAoE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEjH,oBAAY,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAA;AAED,aAAK,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;AACzC,aAAK,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,GAChE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,GACnD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GACrC,mBAAmB,CAAA;AAEvB,QAAA,MAAM,cAAc,EAAE,EAAE,CAAC,KAAK,CA4H7B,CAAA;AAaD,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# EbaySplitButton
|
|
2
|
+
|
|
3
|
+
## Demo
|
|
4
|
+
[Storybook](https://opensource.ebay.com/ebayui-core-react/main/?path=/story/ebay-split-button--default)
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
### Import JS
|
|
9
|
+
```jsx harmony
|
|
10
|
+
import { EbaySplitButton } from '@ebay/ui-core-react/ebay-split-button'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Import following styles from SKIN
|
|
14
|
+
```jsx harmony
|
|
15
|
+
import "@ebay/skin/split-button"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Or import styles using SCSS/CSS
|
|
19
|
+
```jsx harmony
|
|
20
|
+
import '@ebay/skin/split-button.css'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Icon button
|
|
24
|
+
```jsx harmony
|
|
25
|
+
<EbaySplitButton a11yMenuText="Show save options">
|
|
26
|
+
Save document
|
|
27
|
+
<Item>Save as...</Item>
|
|
28
|
+
<Item>Export</Item>
|
|
29
|
+
</EbaySplitButton>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Props
|
|
33
|
+
Name | Type | Stateful | Required | Description | Data
|
|
34
|
+
--- |---------| -- | --- | --- | ---
|
|
35
|
+
`a11yMenuText` | String | No | Yes | aria label for menu button part
|
|
36
|
+
`href` | String | No | No | url for link behaviour (switches to anchor tag)
|
|
37
|
+
`size` | String | No | No | button size: `regular` (default) or `large`
|
|
38
|
+
`priority` | String | No | No | `primary`, `secondary` (default), `tertiary`, `none`
|
|
39
|
+
`bodyState` | String | No | No | `loading` adds progress spinner, when user interacts with button, `reset` should be called to reset `aria-live` state, default is `none`
|
|
40
|
+
`a11yButtonLoadingText` | String | No | No | `aria-label` for button when `bodyState` is `loading`
|
|
41
|
+
`type` | String | No | No | menu items type: `radio` or `checkbox`
|
|
42
|
+
`transparent` | Boolean | No | No | for transparent background
|
|
43
|
+
`disabled` | Boolean | Yes | No
|
|
44
|
+
`partiallyDisabled` | Boolean | No | No | sets `aria-disabled` but not `disabled` prop
|
|
45
|
+
`onClick` | Function | - | No | click or action key pressed (`Space` or `Enter`)
|
|
46
|
+
`onEscape` | Function | - | No | `Esc`-key pressed
|
|
47
|
+
`onFocus` | Function | - | No | triggered on focus
|
|
48
|
+
`onBlur` | Function | - | No | triggered on blur
|
|
49
|
+
`onExpand` | Function | - | No | Called when content is expanded
|
|
50
|
+
`onCollapse` | Function | - | No | Called when content is collapsed
|
|
51
|
+
`onChange` | Function | - | No | Arguments: (index: number, checked: boolean) for type `radio`/`checkbox`
|
|
52
|
+
`onSelect` | Function | - | No | Arguments: (index: number, checked: boolean), not for use with type `radio`/`checkbox`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ebay-split-button/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC3D,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
var split_button_1 = require("./split-button");
|
|
14
|
+
Object.defineProperty(exports, "EbaySplitButton", { enumerable: true, get: function () { return split_button_1.default; } });
|
|
15
|
+
__exportStar(require("./types"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-button.d.ts","sourceRoot":"","sources":["../../src/ebay-split-button/split-button.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAIjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,QAAA,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CA6C9B,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
var react_1 = __importDefault(require("react"));
|
|
29
|
+
var component_utils_1 = require("../common/component-utils");
|
|
30
|
+
var ebay_button_1 = require("../ebay-button");
|
|
31
|
+
var ebay_menu_button_1 = require("../ebay-menu-button");
|
|
32
|
+
var EbaySplitButton = function (_a) {
|
|
33
|
+
var a11yMenuText = _a.a11yMenuText, children = _a.children, type = _a.type, bodyState = _a.bodyState, a11yButtonLoadingText = _a.a11yButtonLoadingText, onCollapse = _a.onCollapse, onExpand = _a.onExpand, _b = _a.onSelect, onSelect = _b === void 0 ? function () { } : _b, _c = _a.onChange, onChange = _c === void 0 ? function () { } : _c, ref = _a.ref, rest = __rest(_a, ["a11yMenuText", "children", "type", "bodyState", "a11yButtonLoadingText", "onCollapse", "onExpand", "onSelect", "onChange", "ref"]);
|
|
34
|
+
var menuItemComponents = [ebay_menu_button_1.EbayMenuButtonItem, ebay_menu_button_1.EbayMenuButtonSeparator];
|
|
35
|
+
var buttonLabel = component_utils_1.filterBy(children, function (el) { return !menuItemComponents.includes(el.type); });
|
|
36
|
+
var menuItems = component_utils_1.filterByType(children, menuItemComponents);
|
|
37
|
+
return (react_1.default.createElement("span", { className: "split-button" },
|
|
38
|
+
react_1.default.createElement(ebay_button_1.EbayButton, __assign({ "aria-label": bodyState === 'loading' ? a11yButtonLoadingText : undefined }, rest, { split: "start", bodyState: bodyState === 'expand' ? undefined : bodyState }), buttonLabel),
|
|
39
|
+
react_1.default.createElement(ebay_menu_button_1.EbayMenuButton, { priority: rest.priority, disabled: rest.disabled, transparent: rest.transparent, size: rest.size, type: type, split: "end", reverse: true, a11yText: a11yMenuText, onCollapse: onCollapse, onExpand: onExpand, onChange: onChange, onSelect: onSelect }, menuItems)));
|
|
40
|
+
};
|
|
41
|
+
exports.default = EbaySplitButton;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
import { EbayButtonProps } from '../ebay-button';
|
|
3
|
+
import { MenuProps } from '../ebay-menu';
|
|
4
|
+
import { EbayMenuButtonProps } from '../ebay-menu-button';
|
|
5
|
+
export declare type EbaySplitButtonProps = {
|
|
6
|
+
a11yMenuText?: string;
|
|
7
|
+
a11yButtonLoadingText?: string;
|
|
8
|
+
onCollapse?: () => void;
|
|
9
|
+
onExpand?: () => void;
|
|
10
|
+
};
|
|
11
|
+
declare type MenuEvents = 'onSelect' | 'onChange';
|
|
12
|
+
export declare type Props = EbaySplitButtonProps & Omit<EbayButtonProps, 'ref'> & Omit<ComponentProps<'button'>, 'type' | MenuEvents> & Omit<ComponentProps<'a'>, MenuEvents> & Omit<MenuProps, 'priority'> & EbayMenuButtonProps;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ebay-split-button/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEzD,oBAAY,oBAAoB,GAAG;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAA;AAED,aAAK,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;AAEzC,oBAAY,KAAK,GACb,oBAAoB,GACpB,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,GAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,GACnD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GACrC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAC3B,mBAAmB,CAAC"}
|