@arbor-education/design-system.components 0.17.0 → 0.18.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/CHANGELOG.md +12 -0
- package/dist/components/table/Table.d.ts +4 -1
- package/dist/components/table/Table.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.d.ts +4 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.js +13 -2
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.js.map +1 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts +31 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js +83 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js.map +1 -1
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.test.d.ts +2 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.test.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.test.js +84 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.test.js.map +1 -0
- package/dist/index.css +20 -0
- package/dist/index.css.map +1 -1
- package/dist/utils/getTextContrast.d.ts +4 -0
- package/dist/utils/getTextContrast.d.ts.map +1 -0
- package/dist/utils/getTextContrast.js +14 -0
- package/dist/utils/getTextContrast.js.map +1 -0
- package/dist/utils/getTextContrast.test.d.ts +2 -0
- package/dist/utils/getTextContrast.test.d.ts.map +1 -0
- package/dist/utils/getTextContrast.test.js +68 -0
- package/dist/utils/getTextContrast.test.js.map +1 -0
- package/package.json +2 -1
- package/src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx +139 -0
- package/src/components/table/cellRenderers/SelectDropdownCellRenderer.test.tsx +118 -0
- package/src/components/table/cellRenderers/SelectDropdownCellRenderer.tsx +22 -2
- package/src/components/table/table.scss +27 -0
- package/src/utils/getTextContrast.test.ts +82 -0
- package/src/utils/getTextContrast.ts +14 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.18.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#184](https://github.com/arbor-education/design-system.components/pull/184) [`22b51b2`](https://github.com/arbor-education/design-system.components/commit/22b51b251a42f5b660cf669aede82ec09fdd0769) Thanks [@MarkFrancisArbor](https://github.com/MarkFrancisArbor)! - MIS-70854 SelectDropdownCellRenderer add backgroundColor
|
|
8
|
+
|
|
9
|
+
## 0.17.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#182](https://github.com/arbor-education/design-system.components/pull/182) [`de819f8`](https://github.com/arbor-education/design-system.components/commit/de819f855b62a0564036d7068416351d1e404dd4) Thanks [@AmeeMorris](https://github.com/AmeeMorris)! - Add missing `"type": "module"` declaration to package.json. The package already emits ESM syntax from the TypeScript compiler but was not declaring it, which could cause issues for consumer bundlers.
|
|
14
|
+
|
|
3
15
|
## 0.17.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
@@ -37,7 +37,10 @@ export declare const Table: {
|
|
|
37
37
|
InlineTextCellRenderer: (props: import("ag-grid-react").CustomCellRendererProps<any, any, any> & {
|
|
38
38
|
value: string;
|
|
39
39
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
40
|
-
SelectDropdownCellRenderer: (props: import("ag-grid-react").CustomCellRendererProps<any, any, any> & import("../formField/inputs/selectDropdown/SelectDropdown").SelectDropdownInputProps
|
|
40
|
+
SelectDropdownCellRenderer: (props: import("ag-grid-react").CustomCellRendererProps<any, any, any> & import("../formField/inputs/selectDropdown/SelectDropdown").SelectDropdownInputProps & {
|
|
41
|
+
backgroundColor?: string;
|
|
42
|
+
fillCell?: boolean;
|
|
43
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
41
44
|
BooleanCellRenderer: (props: import("ag-grid-react").CustomCellRendererProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
42
45
|
DefaultCellRenderer: (props: import("ag-grid-react").CustomCellRendererProps) => import("react/jsx-runtime").JSX.Element;
|
|
43
46
|
DateCellEditor: (props: import("ag-grid-react").CustomCellEditorProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAUrE,OAAO,EAAoB,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAenF,OAAO,EAAiB,KAAK,kBAAkB,EAAE,KAAK,UAAU,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1H,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAO9C,KAAK,UAAU,CAAC,KAAK,GAAG,GAAG,IAAI;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC,CAAC,EAAE,OAAO,CAAC;IACnD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG,sBAAsB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAMrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,KAAK;YAAW,UAAU
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAUrE,OAAO,EAAoB,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAenF,OAAO,EAAiB,KAAK,kBAAkB,EAAE,KAAK,UAAU,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1H,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAO9C,KAAK,UAAU,CAAC,KAAK,GAAG,GAAG,IAAI;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC,CAAC,EAAE,OAAO,CAAC;IACnD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG,sBAAsB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAMrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,KAAK;YAAW,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4JtC,CAAC;AAwBF,yBAAiB,KAAK,CAAC;IAErB,KAAY,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACnD,KAAY,aAAa,GAAG,kBAAkB,CAAC;IAC/C,KAAY,UAAU,GAAG,cAAc,CAAC;IACxC,KAAY,gBAAgB,GAAG,wBAAwB,CAAC;IACxD,KAAY,OAAO,GAAG,aAAa,CAAC;CACrC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { CustomCellRendererProps } from 'ag-grid-react';
|
|
2
2
|
import { type SelectDropdownInputProps } from '../../formField/inputs/selectDropdown/SelectDropdown';
|
|
3
|
-
type SelectDropdownCellRendererProps = CustomCellRendererProps & SelectDropdownInputProps
|
|
3
|
+
type SelectDropdownCellRendererProps = CustomCellRendererProps & SelectDropdownInputProps & {
|
|
4
|
+
backgroundColor?: string;
|
|
5
|
+
fillCell?: boolean;
|
|
6
|
+
};
|
|
4
7
|
export declare const SelectDropdownCellRenderer: (props: SelectDropdownCellRendererProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
8
|
export {};
|
|
6
9
|
//# sourceMappingURL=SelectDropdownCellRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDropdownCellRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectDropdownCellRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,2DAA2D,CAAC;AAInE,KAAK,+BAA+B,GAAG,uBAAuB,GAC1D,wBAAwB,GACxB;IACA,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AASJ,eAAO,MAAM,0BAA0B,GACrC,OAAO,+BAA+B,4CAwFvC,CAAC"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
3
4
|
import { SelectDropdown, } from '../../formField/inputs/selectDropdown/SelectDropdown';
|
|
4
5
|
import { useComponentDidMount } from '../../../utils/hooks/useComponentDidMount';
|
|
6
|
+
import { getTextContrast } from '../../../utils/getTextContrast';
|
|
5
7
|
export const SelectDropdownCellRenderer = (props) => {
|
|
6
|
-
const { value, placeholder = 'Select', node, column, api, options = [], disabled, hasError, id, 'aria-describedBy': ariaDescribedBy, 'aria-invalid': ariaInvalid, alwaysShowPlaceholder = false, } = props;
|
|
8
|
+
const { value, placeholder = 'Select', node, column, api, options = [], disabled, hasError, id, 'aria-describedBy': ariaDescribedBy, 'aria-invalid': ariaInvalid, alwaysShowPlaceholder = false, backgroundColor, fillCell = false, } = props;
|
|
9
|
+
const textContrast = backgroundColor ? getTextContrast(backgroundColor) : null;
|
|
10
|
+
const wrapperClassName = classNames('ds-table__select-dropdown', {
|
|
11
|
+
'ds-table__select-dropdown--custom-bg': backgroundColor,
|
|
12
|
+
'ds-table__select-dropdown--fill-cell': fillCell,
|
|
13
|
+
[`ds-table__select-dropdown--text-${textContrast}`]: textContrast,
|
|
14
|
+
});
|
|
15
|
+
const wrapperStyle = backgroundColor
|
|
16
|
+
? { ['--ds-select-cell-bg']: backgroundColor }
|
|
17
|
+
: undefined;
|
|
7
18
|
const rawOptions = options;
|
|
8
19
|
const normalisedOptions = rawOptions.map(option => ({
|
|
9
20
|
...option,
|
|
@@ -26,7 +37,7 @@ export const SelectDropdownCellRenderer = (props) => {
|
|
|
26
37
|
api.removeEventListener('cellKeyDown', handleCellKeyDown);
|
|
27
38
|
};
|
|
28
39
|
});
|
|
29
|
-
return (_jsx("div", { className:
|
|
40
|
+
return (_jsx("div", { className: wrapperClassName, style: wrapperStyle, children: _jsx(SelectDropdown, { disabled: disabled, hasError: hasError, id: id, "aria-describedBy": ariaDescribedBy, "aria-invalid": ariaInvalid, alwaysShowPlaceholder: alwaysShowPlaceholder, options: normalisedOptions, placeholder: placeholder, initialSelectedValues: initialSelectedValues, open: isOpen, onOpenChange: setIsOpen, multiple: false, onSelectionChange: (newValue) => {
|
|
30
41
|
if (column && newValue[0] != null) {
|
|
31
42
|
const selectedOption = rawOptions.find(option => String(option.value) === newValue[0]);
|
|
32
43
|
node.setDataValue(column, selectedOption?.value ?? newValue[0]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDropdownCellRenderer.js","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectDropdownCellRenderer.js","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,10 @@ import { SelectDropdownCellRenderer } from './SelectDropdownCellRenderer';
|
|
|
4
4
|
declare function SelectDropdownCellRendererDocsPage(): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
declare const meta: {
|
|
6
6
|
title: string;
|
|
7
|
-
component: (props: CustomCellRendererProps<any, any, any> & import("../../formField/inputs/selectDropdown/SelectDropdown").SelectDropdownInputProps
|
|
7
|
+
component: (props: CustomCellRendererProps<any, any, any> & import("../../formField/inputs/selectDropdown/SelectDropdown").SelectDropdownInputProps & {
|
|
8
|
+
backgroundColor?: string;
|
|
9
|
+
fillCell?: boolean;
|
|
10
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
8
11
|
tags: string[];
|
|
9
12
|
parameters: {
|
|
10
13
|
layout: string;
|
|
@@ -64,6 +67,30 @@ declare const meta: {
|
|
|
64
67
|
};
|
|
65
68
|
};
|
|
66
69
|
};
|
|
70
|
+
backgroundColor: {
|
|
71
|
+
control: "color";
|
|
72
|
+
description: string;
|
|
73
|
+
table: {
|
|
74
|
+
type: {
|
|
75
|
+
summary: string;
|
|
76
|
+
};
|
|
77
|
+
defaultValue: {
|
|
78
|
+
summary: string;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
fillCell: {
|
|
83
|
+
control: "boolean";
|
|
84
|
+
description: string;
|
|
85
|
+
table: {
|
|
86
|
+
type: {
|
|
87
|
+
summary: string;
|
|
88
|
+
};
|
|
89
|
+
defaultValue: {
|
|
90
|
+
summary: string;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
};
|
|
67
94
|
};
|
|
68
95
|
};
|
|
69
96
|
export default meta;
|
|
@@ -71,5 +98,8 @@ type Story = StoryObj<typeof SelectDropdownCellRenderer>;
|
|
|
71
98
|
export declare const Default: Story;
|
|
72
99
|
export declare const WithSelection: Story;
|
|
73
100
|
export declare const Disabled: Story;
|
|
101
|
+
export declare const WithBackgroundColor: Story;
|
|
102
|
+
export declare const FillCell: Story;
|
|
74
103
|
export declare const InATable: Story;
|
|
104
|
+
export declare const ColoredCellsInATable: Story;
|
|
75
105
|
//# sourceMappingURL=SelectDropdownCellRenderer.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDropdownCellRenderer.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAW5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAiG1E,iBAAS,kCAAkC,4CAmB1C;AAmBD,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"SelectDropdownCellRenderer.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAW5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAiG1E,iBAAS,kCAAkC,4CAmB1C;AAmBD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DyC,CAAC;AAEpD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAkBzD,eAAO,MAAM,OAAO,EAAE,KAgBrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KA0C3B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAiBtB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KA6BjC,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAmBtB,CAAC;AASF,eAAO,MAAM,QAAQ,EAAE,KAqEtB,CAAC;AAQF,eAAO,MAAM,oBAAoB,EAAE,KA+DlC,CAAC"}
|
|
@@ -147,6 +147,22 @@ const meta = {
|
|
|
147
147
|
description: 'AG Grid row node. The renderer calls `node.setDataValue` on option selection.',
|
|
148
148
|
table: { type: { summary: 'IRowNode' } },
|
|
149
149
|
},
|
|
150
|
+
backgroundColor: {
|
|
151
|
+
control: 'color',
|
|
152
|
+
description: 'Optional hex colour applied to the dropdown trigger background. Text colour automatically switches between dark and white based on YIQ luminance for legibility.',
|
|
153
|
+
table: {
|
|
154
|
+
type: { summary: 'string' },
|
|
155
|
+
defaultValue: { summary: 'undefined' },
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
fillCell: {
|
|
159
|
+
control: 'boolean',
|
|
160
|
+
description: 'When `true` the wrapper and trigger button stretch to 100% of the cell, and the trigger\'s rounded corners are removed. For true edge-to-edge fill, also set `cellStyle: { padding: 0 }` on the column def — AG Grid\'s default cell padding lives outside the renderer.',
|
|
161
|
+
table: {
|
|
162
|
+
type: { summary: 'boolean' },
|
|
163
|
+
defaultValue: { summary: 'false' },
|
|
164
|
+
},
|
|
165
|
+
},
|
|
150
166
|
},
|
|
151
167
|
};
|
|
152
168
|
export default meta;
|
|
@@ -201,6 +217,14 @@ export const Disabled = withDescription({
|
|
|
201
217
|
parameters: { controls: { disable: true } },
|
|
202
218
|
render: () => (_jsx(SelectDropdownCellRenderer, { ...MOCK_CELL_PROPS, api: MOCK_API, value: "active", options: STATUS_OPTIONS, placeholder: "Select status", disabled: true, node: { setDataValue: () => { } }, column: {} })),
|
|
203
219
|
}, 'Pass `disabled: true` via `cellRendererParams` to prevent the user from changing the selection for specific rows.');
|
|
220
|
+
export const WithBackgroundColor = withDescription({
|
|
221
|
+
parameters: { controls: { disable: true } },
|
|
222
|
+
render: () => (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, alignItems: 'flex-start' }, children: [_jsx(SelectDropdownCellRenderer, { ...MOCK_CELL_PROPS, api: MOCK_API, value: "active", options: STATUS_OPTIONS, placeholder: "Select status", backgroundColor: "#1F7A1F", node: { setDataValue: () => { } }, column: {} }), _jsx(SelectDropdownCellRenderer, { ...MOCK_CELL_PROPS, api: MOCK_API, value: "pending", options: STATUS_OPTIONS, placeholder: "Select status", backgroundColor: "#FFE68A", node: { setDataValue: () => { } }, column: {} })] })),
|
|
223
|
+
}, 'Pass a hex `backgroundColor` via `cellRendererParams` to tint the trigger. The text colour automatically switches between dark (`#2F2F2F`) and white (`#FFFFFF`) based on the YIQ luminance of the background so the label remains legible. Top row: dark green → white text. Bottom row: pale yellow → dark text.');
|
|
224
|
+
export const FillCell = withDescription({
|
|
225
|
+
parameters: { controls: { disable: true } },
|
|
226
|
+
render: () => (_jsx("div", { style: { width: 240, height: 40, border: '1px dashed var(--color-grey-300)' }, children: _jsx(SelectDropdownCellRenderer, { ...MOCK_CELL_PROPS, api: MOCK_API, value: "active", options: STATUS_OPTIONS, placeholder: "Select status", fillCell: true, node: { setDataValue: () => { } }, column: {} }) })),
|
|
227
|
+
}, '`fillCell: true` stretches the wrapper and trigger to 100% of the container and removes the trigger\'s rounded corners — typical when the dropdown should look like part of the cell rather than a button placed inside it. The dashed box here represents the surrounding cell.');
|
|
204
228
|
const SELECT_IN_TABLE_DATA = [
|
|
205
229
|
{ name: 'Alice Johnson', status: 'active' },
|
|
206
230
|
{ name: 'Bob Smith', status: 'inactive' },
|
|
@@ -267,4 +291,63 @@ export default SelectDropdownCellRendererExample;
|
|
|
267
291
|
},
|
|
268
292
|
], defaultColDef: { flex: 1, minWidth: 120 }, domLayout: "autoHeight" })),
|
|
269
293
|
}, '`dsSelectDropdownCellRenderer` wired up inside a full `Table`. Click a Status dropdown to select a new value — the selection is committed to the row via `node.setDataValue`. Press Enter in a focused Status cell to open the dropdown via keyboard.');
|
|
294
|
+
const STATUS_BACKGROUND_COLORS = {
|
|
295
|
+
active: '#1F7A1F',
|
|
296
|
+
inactive: '#B91C1C',
|
|
297
|
+
pending: '#FFE68A',
|
|
298
|
+
};
|
|
299
|
+
export const ColoredCellsInATable = withDescription({
|
|
300
|
+
parameters: {
|
|
301
|
+
controls: { disable: true },
|
|
302
|
+
docs: {
|
|
303
|
+
source: {
|
|
304
|
+
language: 'tsx',
|
|
305
|
+
code: `
|
|
306
|
+
import { Table } from '@arbor-education/design-system.components';
|
|
307
|
+
|
|
308
|
+
const STATUS_BACKGROUND_COLORS = {
|
|
309
|
+
active: '#1F7A1F',
|
|
310
|
+
inactive: '#B91C1C',
|
|
311
|
+
pending: '#FFE68A',
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
const columnDefs = [
|
|
315
|
+
{ field: 'name', headerName: 'Name', flex: 2 },
|
|
316
|
+
{
|
|
317
|
+
field: 'status',
|
|
318
|
+
headerName: 'Status',
|
|
319
|
+
flex: 1,
|
|
320
|
+
editable: false,
|
|
321
|
+
cellRenderer: 'dsSelectDropdownCellRenderer',
|
|
322
|
+
// Per-row params: derive the cell background from the row's current value.
|
|
323
|
+
cellRendererParams: (params) => ({
|
|
324
|
+
options: statusOptions,
|
|
325
|
+
backgroundColor: STATUS_BACKGROUND_COLORS[params.value],
|
|
326
|
+
fillCell: true,
|
|
327
|
+
}),
|
|
328
|
+
// fillCell wants a flush cell — strip AG Grid's default cell padding.
|
|
329
|
+
cellStyle: { padding: 0 },
|
|
330
|
+
},
|
|
331
|
+
];
|
|
332
|
+
`.trim(),
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
render: () => (_jsx(Table, { rowData: SELECT_IN_TABLE_DATA, columnDefs: [
|
|
337
|
+
{ field: 'name', headerName: 'Name', flex: 2 },
|
|
338
|
+
{
|
|
339
|
+
field: 'status',
|
|
340
|
+
headerName: 'Status',
|
|
341
|
+
flex: 1,
|
|
342
|
+
editable: false,
|
|
343
|
+
cellRenderer: 'dsSelectDropdownCellRenderer',
|
|
344
|
+
cellRendererParams: (params) => ({
|
|
345
|
+
options: STATUS_OPTIONS,
|
|
346
|
+
backgroundColor: params.value ? STATUS_BACKGROUND_COLORS[params.value] : undefined,
|
|
347
|
+
fillCell: true,
|
|
348
|
+
}),
|
|
349
|
+
cellStyle: { padding: 0 },
|
|
350
|
+
},
|
|
351
|
+
], defaultColDef: { flex: 1, minWidth: 120 }, domLayout: "autoHeight" })),
|
|
352
|
+
}, 'Combines `backgroundColor` and `fillCell` to drive a status-coloured column. `cellRendererParams` is a function so each row gets a colour based on its current value, and `cellStyle: { padding: 0 }` removes AG Grid\'s default cell padding so the tinted trigger spans the cell edge-to-edge. Text colour switches automatically between dark and white for legibility.');
|
|
270
353
|
//# sourceMappingURL=SelectDropdownCellRenderer.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDropdownCellRenderer.stories.js","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectDropdownCellRenderer.stories.js","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectDropdownCellRenderer.test.d.ts","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.test.tsx"],"names":[],"mappings":"AAEA,OAAO,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { describe, expect, test, vi } from 'vitest';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import '@testing-library/jest-dom/vitest';
|
|
5
|
+
import { SelectDropdownCellRenderer } from './SelectDropdownCellRenderer';
|
|
6
|
+
const MOCK_API = {
|
|
7
|
+
addEventListener: vi.fn(),
|
|
8
|
+
removeEventListener: vi.fn(),
|
|
9
|
+
};
|
|
10
|
+
const OPTIONS = [
|
|
11
|
+
{ label: 'Option 1', value: 'option1' },
|
|
12
|
+
{ label: 'Option 2', value: 'option2' },
|
|
13
|
+
];
|
|
14
|
+
const createMockProps = (overrides = {}) => ({
|
|
15
|
+
value: 'option1',
|
|
16
|
+
api: MOCK_API,
|
|
17
|
+
node: { setDataValue: vi.fn() },
|
|
18
|
+
column: 'selectField',
|
|
19
|
+
options: OPTIONS,
|
|
20
|
+
...overrides,
|
|
21
|
+
});
|
|
22
|
+
describe('SelectDropdownCellRenderer', () => {
|
|
23
|
+
test('renders the dropdown trigger button', () => {
|
|
24
|
+
render(_jsx(SelectDropdownCellRenderer, { ...createMockProps() }));
|
|
25
|
+
expect(screen.getByRole('button')).toBeInTheDocument();
|
|
26
|
+
});
|
|
27
|
+
describe('backgroundColor', () => {
|
|
28
|
+
test('does not apply the custom-bg or text-contrast modifiers when not provided', () => {
|
|
29
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps() }));
|
|
30
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
31
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--custom-bg');
|
|
32
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--text-dark');
|
|
33
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--text-light');
|
|
34
|
+
expect(wrapper.style.getPropertyValue('--ds-select-cell-bg')).toBe('');
|
|
35
|
+
});
|
|
36
|
+
test('applies the custom-bg modifier and bg CSS var when provided', () => {
|
|
37
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps({ backgroundColor: '#1F7A1F' }) }));
|
|
38
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
39
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--custom-bg');
|
|
40
|
+
expect(wrapper.style.getPropertyValue('--ds-select-cell-bg')).toBe('#1F7A1F');
|
|
41
|
+
});
|
|
42
|
+
test('emits the text-light modifier for a dark background', () => {
|
|
43
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps({ backgroundColor: '#000000' }) }));
|
|
44
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
45
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--text-light');
|
|
46
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--text-dark');
|
|
47
|
+
});
|
|
48
|
+
test('emits the text-dark modifier for a light background', () => {
|
|
49
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps({ backgroundColor: '#FFFFFF' }) }));
|
|
50
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
51
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--text-dark');
|
|
52
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--text-light');
|
|
53
|
+
});
|
|
54
|
+
test('expands 3-digit hex shorthand correctly', () => {
|
|
55
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps({ backgroundColor: '#000' }) }));
|
|
56
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
57
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--text-light');
|
|
58
|
+
});
|
|
59
|
+
test('falls back to the text-dark modifier when the hex is malformed', () => {
|
|
60
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps({ backgroundColor: 'not-a-color' }) }));
|
|
61
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
62
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--text-dark');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe('fillCell', () => {
|
|
66
|
+
test('does not apply the fill-cell modifier by default', () => {
|
|
67
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps() }));
|
|
68
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
69
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--fill-cell');
|
|
70
|
+
});
|
|
71
|
+
test('applies the fill-cell modifier when true', () => {
|
|
72
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps({ fillCell: true }) }));
|
|
73
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
74
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--fill-cell');
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
test('applies both modifiers when backgroundColor and fillCell are set together', () => {
|
|
78
|
+
const { container } = render(_jsx(SelectDropdownCellRenderer, { ...createMockProps({ backgroundColor: '#1F7A1F', fillCell: true }) }));
|
|
79
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
80
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--custom-bg');
|
|
81
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--fill-cell');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=SelectDropdownCellRenderer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectDropdownCellRenderer.test.js","sourceRoot":"","sources":["../../../../src/components/table/cellRenderers/SelectDropdownCellRenderer.test.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.css
CHANGED
|
@@ -3110,6 +3110,26 @@ h4.ds-heading, h4.ds-heading .ds-heading__inner-container, h4 .ds-editable-text_
|
|
|
3110
3110
|
.ds-table__select-dropdown-cell {
|
|
3111
3111
|
width: 100%;
|
|
3112
3112
|
}
|
|
3113
|
+
.ds-table__select-dropdown--fill-cell {
|
|
3114
|
+
display: flex;
|
|
3115
|
+
width: 100%;
|
|
3116
|
+
height: 100%;
|
|
3117
|
+
}
|
|
3118
|
+
.ds-table__select-dropdown--fill-cell .ds-button--dropdown {
|
|
3119
|
+
flex: 1;
|
|
3120
|
+
width: 100%;
|
|
3121
|
+
height: 100%;
|
|
3122
|
+
border-radius: 0;
|
|
3123
|
+
}
|
|
3124
|
+
.ds-table__select-dropdown--custom-bg .ds-button--dropdown {
|
|
3125
|
+
background: var(--ds-select-cell-bg);
|
|
3126
|
+
}
|
|
3127
|
+
.ds-table__select-dropdown--text-dark .ds-button--dropdown {
|
|
3128
|
+
color: var(--color-grey-900);
|
|
3129
|
+
}
|
|
3130
|
+
.ds-table__select-dropdown--text-light .ds-button--dropdown {
|
|
3131
|
+
color: var(--color-mono-white);
|
|
3132
|
+
}
|
|
3113
3133
|
.ds-table__container *[class^=ag-], .ds-table__container *[class*=" ag-"] {
|
|
3114
3134
|
z-index: unset;
|
|
3115
3135
|
}
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../src/index.scss","../node_modules/react-day-picker/src/style.css","../src/tokens.scss","../src/global.scss","../src/components/button/button.scss","../src/components/icon/icon.scss","../src/components/icoText/icoText.scss","../src/components/heading/heading.scss","../src/components/card/card.scss","../src/components/articleCard/articleCard.scss","../src/components/dropdown/dropdown.scss","../src/components/formField/formField.scss","../src/components/formField/fieldset/fieldset.scss","../src/components/formField/inputs/input.scss","../src/components/formField/label/label.scss","../src/components/formField/inputs/number/numberInput.scss","../src/components/formField/inputs/time/timeInput.scss","../src/components/formField/inputs/radio/radioButtonInput.scss","../src/components/formField/inputs/checkbox/checkboxInput.scss","../src/components/formField/inputs/selectDropdown/selectDropdown.scss","../src/components/formField/inputs/colourPickerDropdown/colourPickerDropdown.scss","../src/components/tag/tag.scss","../src/components/dot/dot.scss","../src/components/badge/badge.scss","../src/components/pill/pill.scss","../src/components/section/section.scss","../src/components/tabs/tabs.scss","../src/components/slideoverManager/slideoverManager.scss","../src/components/slideover/slideover.scss","../src/components/table/table.scss","../src/components/searchBar/searchBar.scss","../src/components/table/cellEditors/numberCellEditor.scss","../src/components/table/pagination/pagination.scss","../src/components/tooltip/tooltip.scss","../src/components/separator/separator.scss","../src/components/modal/modal.scss","../src/components/modal/modalManager/modalManager.scss","../src/components/table/columnFilters/columnFilters.scss","../src/components/banner/banner.scss","../src/components/editableText/editableText.scss","../src/components/progress/progress.scss","../src/components/kpiCard/kpiCard.scss","../src/components/kvpList/kvpList.scss","../src/components/toast/toast.scss","../src/components/datePicker/datePicker.scss","../src/components/datePicker/date-field-hint.scss","../src/components/dateTimePicker/dateTimePicker.scss","../src/components/avatar/avatar.scss","../src/components/singleUser/singleUser.scss","../src/components/avatarGroup/avatarGroup.scss","../src/components/userDropdown/userDropdown.scss","../src/components/table/cellRenderers/booleanCellRenderer.scss","../src/components/row/row.scss","../src/components/combobox/combobox.scss","../src/components/toggle/toggle.scss","../src/components/dataViewCard/dataViewCard.scss","../src/components/treeRow/treeRow.scss"],"names":[],"mappings":"AAuDQ;ACvDR;AACA;EACE;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;AAAA;AAAA;AAAA;AAAA,KAIG;EACH;EAEA;AAAA;AAAA;AAAA;AAAA,KAIG;EACH;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AACA;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EAEA;EACA;EACA;EAEA;EACA;;;AAGF;EACE;AACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;EAEA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAEF;EACE;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EAEA;EACA;EAEA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACA;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;ACtcF;AACA;AAAA;AAAA;AAIC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC92CF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAOF;EAAmB;;;AACnB;EAAyB;;;ACzCzB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAIF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAMJ;EACE;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAMJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;;AAIF;EACE;EACA;EACA;;;ACpPJ;EACI;;;ACDJ;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AChCF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AClDJ;EACE;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AChEF;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EAEE;;;AAIJ;EACE;EACA;;;ACrCF;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;;AC7CR;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;;AC5CZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;ACbJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAIF;EACE;;AAGF;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;AAKN;EACE;;;ACpEF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACPJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACvEN;EACE;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AC9BJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAIA;EACE;;AAKF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;;AC5FR;EACE;EACA;EACA;EACA;AAoFA;;AAlFA;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAIA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;;;AC/FJ;EACE;EACA;;AAEE;EACE;EACA;EACA;;AAGJ;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;;AClBE;EACI;;;AAKR;EACI;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;;ACnGJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;;AChCJ;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;ACnFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;;;ACnDJ;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAKF;EACE;;;ACrCR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGE;EACE;;AAKN;EACE;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;;ACpFN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AClDA;EACE;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;;AAIA;EAGE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EAEE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAKN;EACE;;;AAIJ;EACE;;;AC9FF;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;;AAEA;EACI;;AAIR;EACI;EACA;;AAKZ;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAIR;EACI;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACI;;AAEA;EACI;;AAIR;EACI;;;ACxFZ;EACE;;;AAGF;EACE;;AAEA;EACE;;;ACRJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;;AClBJ;EACI;EACA;EACA;EACA;;AAEA;EACI;;;ACRZ;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;ACXF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;;ACpEJ;EACI;EACA;;;ACFJ;EACI;EACA;EACA;EACA;EACA;EAGA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;;AC9DR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EAKE;EACA;EACA;;AANA;EACE;;AAQJ;EAKE;EACA;EACA;;AANA;EACE;;AAQJ;EAKE;EACA;EACA;;AANA;EACE;;AAQJ;EAKE;EACA;EACA;;AANA;EACE;;;AC3DN;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;;ACnDR;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;ACjCF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;;AC5DN;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACI;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;;ACzEZ;EACE;EACA;;ACDA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAQJ;EACE;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;;AAGF;EACE;EACA;EACA;;;AAQJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AD1FJ;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;ACqDF;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAKF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;;AClJN;EACE;EACA;;ADDA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAQJ;EACE;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;;AAGF;EACE;EACA;EACA;;;AAQJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC1FJ;EACE;;;ADgGA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAKF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;;AEpJN;EACE;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;ACpEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACZF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AC5BF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;AAAA;AAAA;EAGE;;AAGF;EACE;;AAKJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;AAAA;AAAA;EAGE;;AAGF;EACE;;;AAON;EACE;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;ACvXF;EACI;EACA;EACA;EACA;EACA;;;ACLJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGA;EACE;;AAIJ;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAIA;EACI;;AAGF;EACE;;AAGF;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;;AClEJ;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAIF;EACE;;AAEA;EACE;;;AAKJ;EACE;EACA;EACA;EACA;EAIA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;;;AAeJ;EACE;EACA;EACA;EACA;;AAEA;EAhBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAYE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;;;AAIF;EA9CE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA0CA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;;;AAKF;EACE;;;AAIF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;;ACrZJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;;;ACxHV;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;ACvBF;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAII;EACE;;AAGF;EACE;EACA;;;AAQV;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAKE;EACE;;AAGF;EACE;;;AAKN;EACE;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE","file":"index.css"}
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/index.scss","../node_modules/react-day-picker/src/style.css","../src/tokens.scss","../src/global.scss","../src/components/button/button.scss","../src/components/icon/icon.scss","../src/components/icoText/icoText.scss","../src/components/heading/heading.scss","../src/components/card/card.scss","../src/components/articleCard/articleCard.scss","../src/components/dropdown/dropdown.scss","../src/components/formField/formField.scss","../src/components/formField/fieldset/fieldset.scss","../src/components/formField/inputs/input.scss","../src/components/formField/label/label.scss","../src/components/formField/inputs/number/numberInput.scss","../src/components/formField/inputs/time/timeInput.scss","../src/components/formField/inputs/radio/radioButtonInput.scss","../src/components/formField/inputs/checkbox/checkboxInput.scss","../src/components/formField/inputs/selectDropdown/selectDropdown.scss","../src/components/formField/inputs/colourPickerDropdown/colourPickerDropdown.scss","../src/components/tag/tag.scss","../src/components/dot/dot.scss","../src/components/badge/badge.scss","../src/components/pill/pill.scss","../src/components/section/section.scss","../src/components/tabs/tabs.scss","../src/components/slideoverManager/slideoverManager.scss","../src/components/slideover/slideover.scss","../src/components/table/table.scss","../src/components/searchBar/searchBar.scss","../src/components/table/cellEditors/numberCellEditor.scss","../src/components/table/pagination/pagination.scss","../src/components/tooltip/tooltip.scss","../src/components/separator/separator.scss","../src/components/modal/modal.scss","../src/components/modal/modalManager/modalManager.scss","../src/components/table/columnFilters/columnFilters.scss","../src/components/banner/banner.scss","../src/components/editableText/editableText.scss","../src/components/progress/progress.scss","../src/components/kpiCard/kpiCard.scss","../src/components/kvpList/kvpList.scss","../src/components/toast/toast.scss","../src/components/datePicker/datePicker.scss","../src/components/datePicker/date-field-hint.scss","../src/components/dateTimePicker/dateTimePicker.scss","../src/components/avatar/avatar.scss","../src/components/singleUser/singleUser.scss","../src/components/avatarGroup/avatarGroup.scss","../src/components/userDropdown/userDropdown.scss","../src/components/table/cellRenderers/booleanCellRenderer.scss","../src/components/row/row.scss","../src/components/combobox/combobox.scss","../src/components/toggle/toggle.scss","../src/components/dataViewCard/dataViewCard.scss","../src/components/treeRow/treeRow.scss"],"names":[],"mappings":"AAuDQ;ACvDR;AACA;EACE;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;AAAA;AAAA;AAAA;AAAA,KAIG;EACH;EAEA;AAAA;AAAA;AAAA;AAAA,KAIG;EACH;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AACA;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EAEA;EACA;EACA;EAEA;EACA;;;AAGF;EACE;AACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;EAEA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAEF;EACE;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EAEA;EACA;EAEA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACA;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;;;AAIF;EACE;;;AAIF;EACE;;;AAIF;EACE;;;ACtcF;AACA;AAAA;AAAA;AAIC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC92CF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAOF;EAAmB;;;AACnB;EAAyB;;;ACzCzB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAIF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAMJ;EACE;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAMJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;;AAIF;EACE;EACA;EACA;;;ACpPJ;EACI;;;ACDJ;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AChCF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AClDJ;EACE;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AChEF;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EAEE;;;AAIJ;EACE;EACA;;;ACrCF;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;;AC7CR;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;;AC5CZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;ACbJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAIF;EACE;;AAGF;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;AAKN;EACE;;;ACpEF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACPJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACvEN;EACE;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AC9BJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAIA;EACE;;AAKF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;;AC5FR;EACE;EACA;EACA;EACA;AAoFA;;AAlFA;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAIA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;;;AC/FJ;EACE;EACA;;AAEE;EACE;EACA;EACA;;AAGJ;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;;AClBE;EACI;;;AAKR;EACI;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;;ACnGJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;;AChCJ;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;ACnFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;;;ACnDJ;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAKF;EACE;;;ACrCR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGE;EACE;;AAKN;EACE;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;;ACpFN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AClDA;EACE;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;;AAIA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;;AAGF;EACE;;AAGF;EACE;;AAKF;EAGE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EAEE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAKN;EACE;;;AAIJ;EACE;;;ACzHF;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;;AAEA;EACI;;AAIR;EACI;EACA;;AAKZ;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAIR;EACI;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACI;;AAEA;EACI;;AAIR;EACI;;;ACxFZ;EACE;;;AAGF;EACE;;AAEA;EACE;;;ACRJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;;AClBJ;EACI;EACA;EACA;EACA;;AAEA;EACI;;;ACRZ;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;ACXF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;;ACpEJ;EACI;EACA;;;ACFJ;EACI;EACA;EACA;EACA;EACA;EAGA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;;AC9DR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EAKE;EACA;EACA;;AANA;EACE;;AAQJ;EAKE;EACA;EACA;;AANA;EACE;;AAQJ;EAKE;EACA;EACA;;AANA;EACE;;AAQJ;EAKE;EACA;EACA;;AANA;EACE;;;AC3DN;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;;ACnDR;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;ACjCF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;;AC5DN;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACI;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;;ACzEZ;EACE;EACA;;ACDA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAQJ;EACE;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;;AAGF;EACE;EACA;EACA;;;AAQJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AD1FJ;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;ACqDF;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAKF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;;AClJN;EACE;EACA;;ADDA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAQJ;EACE;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;;AAGF;EACE;EACA;EACA;;;AAQJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC1FJ;EACE;;;ADgGA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAKF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;;AEpJN;EACE;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;ACpEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACZF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AC5BF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;AAAA;AAAA;EAGE;;AAGF;EACE;;AAKJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;AAAA;AAAA;EAGE;;AAGF;EACE;;;AAON;EACE;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;ACvXF;EACI;EACA;EACA;EACA;EACA;;;ACLJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGA;EACE;;AAIJ;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAIA;EACI;;AAGF;EACE;;AAGF;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;;AClEJ;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAIF;EACE;;AAEA;EACE;;;AAKJ;EACE;EACA;EACA;EACA;EAIA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;;;AAeJ;EACE;EACA;EACA;EACA;;AAEA;EAhBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAYE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;;;AAIF;EA9CE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA0CA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;;;AAKF;EACE;;;AAIF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;;ACrZJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;;;ACxHV;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;ACvBF;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAII;EACE;;AAGF;EACE;EACA;;;AAQV;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAKE;EACE;;AAGF;EACE;;;AAKN;EACE;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE","file":"index.css"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTextContrast.d.ts","sourceRoot":"","sources":["../../src/utils/getTextContrast.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAErC,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,YAW/C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const getTextContrast = (color) => {
|
|
2
|
+
const CONTRAST_THRESHOLD = 128;
|
|
3
|
+
let hex = color.trim().replace('#', '');
|
|
4
|
+
if (hex.length === 3)
|
|
5
|
+
hex = hex.split('').map(c => c + c).join('');
|
|
6
|
+
if (hex.length !== 6 || /[^0-9a-f]/i.test(hex))
|
|
7
|
+
return 'dark';
|
|
8
|
+
const r = parseInt(hex.slice(0, 2), 16);
|
|
9
|
+
const g = parseInt(hex.slice(2, 4), 16);
|
|
10
|
+
const b = parseInt(hex.slice(4, 6), 16);
|
|
11
|
+
const yiq = (r * 299 + g * 587 + b * 114) / 1000;
|
|
12
|
+
return yiq >= CONTRAST_THRESHOLD ? 'dark' : 'light';
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=getTextContrast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTextContrast.js","sourceRoot":"","sources":["../../src/utils/getTextContrast.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAa,EAAgB,EAAE;IAC7D,MAAM,kBAAkB,GAAG,GAAG,CAAC;IAE/B,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9D,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IACjD,OAAO,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACtD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTextContrast.test.d.ts","sourceRoot":"","sources":["../../src/utils/getTextContrast.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { getTextContrast } from './getTextContrast';
|
|
2
|
+
import { describe, expect, test } from 'vitest';
|
|
3
|
+
describe('getTextContrast', () => {
|
|
4
|
+
test('returns "light" for pure black', () => {
|
|
5
|
+
expect(getTextContrast('#000000')).toBe('light');
|
|
6
|
+
});
|
|
7
|
+
test('returns "dark" for pure white', () => {
|
|
8
|
+
expect(getTextContrast('#FFFFFF')).toBe('dark');
|
|
9
|
+
});
|
|
10
|
+
test('returns "dark" at the threshold (YIQ === 128)', () => {
|
|
11
|
+
// #808080 → YIQ exactly 128; the comparison is `>=` so it counts as light bg.
|
|
12
|
+
expect(getTextContrast('#808080')).toBe('dark');
|
|
13
|
+
});
|
|
14
|
+
test('returns "light" just below the threshold (YIQ === 127)', () => {
|
|
15
|
+
expect(getTextContrast('#7F7F7F')).toBe('light');
|
|
16
|
+
});
|
|
17
|
+
test('weights green more heavily than red or blue', () => {
|
|
18
|
+
// Pure green (#00FF00) has high YIQ (≈ 150) → dark text reads better.
|
|
19
|
+
expect(getTextContrast('#00FF00')).toBe('dark');
|
|
20
|
+
// Pure red (#FF0000) has YIQ ≈ 76 → light text reads better.
|
|
21
|
+
expect(getTextContrast('#FF0000')).toBe('light');
|
|
22
|
+
// Pure blue (#0000FF) has YIQ ≈ 29 → light text reads better.
|
|
23
|
+
expect(getTextContrast('#0000FF')).toBe('light');
|
|
24
|
+
});
|
|
25
|
+
test('handles real-world status colours', () => {
|
|
26
|
+
expect(getTextContrast('#1F7A1F')).toBe('light'); // dark green
|
|
27
|
+
expect(getTextContrast('#B91C1C')).toBe('light'); // dark red
|
|
28
|
+
expect(getTextContrast('#FFE68A')).toBe('dark'); // pale yellow
|
|
29
|
+
});
|
|
30
|
+
describe('input parsing', () => {
|
|
31
|
+
test('expands 3-digit hex shorthand', () => {
|
|
32
|
+
expect(getTextContrast('#000')).toBe('light');
|
|
33
|
+
expect(getTextContrast('#fff')).toBe('dark');
|
|
34
|
+
expect(getTextContrast('#abc')).toBe('dark'); // #aabbcc → YIQ ≈ 184
|
|
35
|
+
});
|
|
36
|
+
test('accepts hex without a leading "#"', () => {
|
|
37
|
+
expect(getTextContrast('000000')).toBe('light');
|
|
38
|
+
expect(getTextContrast('ffffff')).toBe('dark');
|
|
39
|
+
});
|
|
40
|
+
test('is case-insensitive', () => {
|
|
41
|
+
expect(getTextContrast('#abcdef')).toBe(getTextContrast('#ABCDEF'));
|
|
42
|
+
});
|
|
43
|
+
test('trims surrounding whitespace', () => {
|
|
44
|
+
expect(getTextContrast(' #000000 ')).toBe('light');
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('invalid input', () => {
|
|
48
|
+
test('falls back to "dark" for non-hex characters', () => {
|
|
49
|
+
expect(getTextContrast('#zzzzzz')).toBe('dark');
|
|
50
|
+
});
|
|
51
|
+
test('falls back to "dark" for malformed length', () => {
|
|
52
|
+
expect(getTextContrast('#12345')).toBe('dark'); // 5 chars
|
|
53
|
+
expect(getTextContrast('#1234567')).toBe('dark'); // 7 chars
|
|
54
|
+
});
|
|
55
|
+
test('falls back to "dark" for empty string', () => {
|
|
56
|
+
expect(getTextContrast('')).toBe('dark');
|
|
57
|
+
});
|
|
58
|
+
test('falls back to "dark" for CSS keyword colours', () => {
|
|
59
|
+
expect(getTextContrast('red')).toBe('dark');
|
|
60
|
+
expect(getTextContrast('rebeccapurple')).toBe('dark');
|
|
61
|
+
});
|
|
62
|
+
test('falls back to "dark" for rgb()/hsl() notation', () => {
|
|
63
|
+
expect(getTextContrast('rgb(0, 0, 0)')).toBe('dark');
|
|
64
|
+
expect(getTextContrast('hsl(0, 0%, 0%)')).toBe('dark');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=getTextContrast.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTextContrast.test.js","sourceRoot":"","sources":["../../src/utils/getTextContrast.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arbor-education/design-system.components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "The component library for the design system (the baby)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"repository": {
|
|
7
8
|
"type": "git",
|
|
8
9
|
"url": "git+ssh://git@github.com/arbor-education/design-system.components.git"
|
|
@@ -187,6 +187,22 @@ const meta = {
|
|
|
187
187
|
description: 'AG Grid row node. The renderer calls `node.setDataValue` on option selection.',
|
|
188
188
|
table: { type: { summary: 'IRowNode' } },
|
|
189
189
|
},
|
|
190
|
+
backgroundColor: {
|
|
191
|
+
control: 'color',
|
|
192
|
+
description: 'Optional hex colour applied to the dropdown trigger background. Text colour automatically switches between dark and white based on YIQ luminance for legibility.',
|
|
193
|
+
table: {
|
|
194
|
+
type: { summary: 'string' },
|
|
195
|
+
defaultValue: { summary: 'undefined' },
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
fillCell: {
|
|
199
|
+
control: 'boolean',
|
|
200
|
+
description: 'When `true` the wrapper and trigger button stretch to 100% of the cell, and the trigger\'s rounded corners are removed. For true edge-to-edge fill, also set `cellStyle: { padding: 0 }` on the column def — AG Grid\'s default cell padding lives outside the renderer.',
|
|
201
|
+
table: {
|
|
202
|
+
type: { summary: 'boolean' },
|
|
203
|
+
defaultValue: { summary: 'false' },
|
|
204
|
+
},
|
|
205
|
+
},
|
|
190
206
|
},
|
|
191
207
|
} satisfies Meta<typeof SelectDropdownCellRenderer>;
|
|
192
208
|
|
|
@@ -290,6 +306,58 @@ export const Disabled: Story = withDescription(
|
|
|
290
306
|
'Pass `disabled: true` via `cellRendererParams` to prevent the user from changing the selection for specific rows.',
|
|
291
307
|
);
|
|
292
308
|
|
|
309
|
+
export const WithBackgroundColor: Story = withDescription(
|
|
310
|
+
{
|
|
311
|
+
parameters: { controls: { disable: true } },
|
|
312
|
+
render: () => (
|
|
313
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: 12, alignItems: 'flex-start' }}>
|
|
314
|
+
<SelectDropdownCellRenderer
|
|
315
|
+
{...MOCK_CELL_PROPS}
|
|
316
|
+
api={MOCK_API}
|
|
317
|
+
value="active"
|
|
318
|
+
options={STATUS_OPTIONS}
|
|
319
|
+
placeholder="Select status"
|
|
320
|
+
backgroundColor="#1F7A1F"
|
|
321
|
+
node={{ setDataValue: () => {} } as unknown as CustomCellRendererProps['node']}
|
|
322
|
+
column={{} as CustomCellRendererProps['column']}
|
|
323
|
+
/>
|
|
324
|
+
<SelectDropdownCellRenderer
|
|
325
|
+
{...MOCK_CELL_PROPS}
|
|
326
|
+
api={MOCK_API}
|
|
327
|
+
value="pending"
|
|
328
|
+
options={STATUS_OPTIONS}
|
|
329
|
+
placeholder="Select status"
|
|
330
|
+
backgroundColor="#FFE68A"
|
|
331
|
+
node={{ setDataValue: () => {} } as unknown as CustomCellRendererProps['node']}
|
|
332
|
+
column={{} as CustomCellRendererProps['column']}
|
|
333
|
+
/>
|
|
334
|
+
</div>
|
|
335
|
+
),
|
|
336
|
+
},
|
|
337
|
+
'Pass a hex `backgroundColor` via `cellRendererParams` to tint the trigger. The text colour automatically switches between dark (`#2F2F2F`) and white (`#FFFFFF`) based on the YIQ luminance of the background so the label remains legible. Top row: dark green → white text. Bottom row: pale yellow → dark text.',
|
|
338
|
+
);
|
|
339
|
+
|
|
340
|
+
export const FillCell: Story = withDescription(
|
|
341
|
+
{
|
|
342
|
+
parameters: { controls: { disable: true } },
|
|
343
|
+
render: () => (
|
|
344
|
+
<div style={{ width: 240, height: 40, border: '1px dashed var(--color-grey-300)' }}>
|
|
345
|
+
<SelectDropdownCellRenderer
|
|
346
|
+
{...MOCK_CELL_PROPS}
|
|
347
|
+
api={MOCK_API}
|
|
348
|
+
value="active"
|
|
349
|
+
options={STATUS_OPTIONS}
|
|
350
|
+
placeholder="Select status"
|
|
351
|
+
fillCell={true}
|
|
352
|
+
node={{ setDataValue: () => {} } as unknown as CustomCellRendererProps['node']}
|
|
353
|
+
column={{} as CustomCellRendererProps['column']}
|
|
354
|
+
/>
|
|
355
|
+
</div>
|
|
356
|
+
),
|
|
357
|
+
},
|
|
358
|
+
'`fillCell: true` stretches the wrapper and trigger to 100% of the container and removes the trigger\'s rounded corners — typical when the dropdown should look like part of the cell rather than a button placed inside it. The dashed box here represents the surrounding cell.',
|
|
359
|
+
);
|
|
360
|
+
|
|
293
361
|
const SELECT_IN_TABLE_DATA = [
|
|
294
362
|
{ name: 'Alice Johnson', status: 'active' },
|
|
295
363
|
{ name: 'Bob Smith', status: 'inactive' },
|
|
@@ -367,3 +435,74 @@ export default SelectDropdownCellRendererExample;
|
|
|
367
435
|
},
|
|
368
436
|
'`dsSelectDropdownCellRenderer` wired up inside a full `Table`. Click a Status dropdown to select a new value — the selection is committed to the row via `node.setDataValue`. Press Enter in a focused Status cell to open the dropdown via keyboard.',
|
|
369
437
|
);
|
|
438
|
+
|
|
439
|
+
const STATUS_BACKGROUND_COLORS: Record<string, string> = {
|
|
440
|
+
active: '#1F7A1F',
|
|
441
|
+
inactive: '#B91C1C',
|
|
442
|
+
pending: '#FFE68A',
|
|
443
|
+
};
|
|
444
|
+
|
|
445
|
+
export const ColoredCellsInATable: Story = withDescription(
|
|
446
|
+
{
|
|
447
|
+
parameters: {
|
|
448
|
+
controls: { disable: true },
|
|
449
|
+
docs: {
|
|
450
|
+
source: {
|
|
451
|
+
language: 'tsx',
|
|
452
|
+
code: `
|
|
453
|
+
import { Table } from '@arbor-education/design-system.components';
|
|
454
|
+
|
|
455
|
+
const STATUS_BACKGROUND_COLORS = {
|
|
456
|
+
active: '#1F7A1F',
|
|
457
|
+
inactive: '#B91C1C',
|
|
458
|
+
pending: '#FFE68A',
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
const columnDefs = [
|
|
462
|
+
{ field: 'name', headerName: 'Name', flex: 2 },
|
|
463
|
+
{
|
|
464
|
+
field: 'status',
|
|
465
|
+
headerName: 'Status',
|
|
466
|
+
flex: 1,
|
|
467
|
+
editable: false,
|
|
468
|
+
cellRenderer: 'dsSelectDropdownCellRenderer',
|
|
469
|
+
// Per-row params: derive the cell background from the row's current value.
|
|
470
|
+
cellRendererParams: (params) => ({
|
|
471
|
+
options: statusOptions,
|
|
472
|
+
backgroundColor: STATUS_BACKGROUND_COLORS[params.value],
|
|
473
|
+
fillCell: true,
|
|
474
|
+
}),
|
|
475
|
+
// fillCell wants a flush cell — strip AG Grid's default cell padding.
|
|
476
|
+
cellStyle: { padding: 0 },
|
|
477
|
+
},
|
|
478
|
+
];
|
|
479
|
+
`.trim(),
|
|
480
|
+
},
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
render: () => (
|
|
484
|
+
<Table
|
|
485
|
+
rowData={SELECT_IN_TABLE_DATA}
|
|
486
|
+
columnDefs={[
|
|
487
|
+
{ field: 'name', headerName: 'Name', flex: 2 },
|
|
488
|
+
{
|
|
489
|
+
field: 'status',
|
|
490
|
+
headerName: 'Status',
|
|
491
|
+
flex: 1,
|
|
492
|
+
editable: false,
|
|
493
|
+
cellRenderer: 'dsSelectDropdownCellRenderer',
|
|
494
|
+
cellRendererParams: (params: { value?: string }) => ({
|
|
495
|
+
options: STATUS_OPTIONS,
|
|
496
|
+
backgroundColor: params.value ? STATUS_BACKGROUND_COLORS[params.value] : undefined,
|
|
497
|
+
fillCell: true,
|
|
498
|
+
}),
|
|
499
|
+
cellStyle: { padding: 0 },
|
|
500
|
+
},
|
|
501
|
+
]}
|
|
502
|
+
defaultColDef={{ flex: 1, minWidth: 120 }}
|
|
503
|
+
domLayout="autoHeight"
|
|
504
|
+
/>
|
|
505
|
+
),
|
|
506
|
+
},
|
|
507
|
+
'Combines `backgroundColor` and `fillCell` to drive a status-coloured column. `cellRendererParams` is a function so each row gets a colour based on its current value, and `cellStyle: { padding: 0 }` removes AG Grid\'s default cell padding so the tinted trigger spans the cell edge-to-edge. Text colour switches automatically between dark and white for legibility.',
|
|
508
|
+
);
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { describe, expect, test, vi } from 'vitest';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import '@testing-library/jest-dom/vitest';
|
|
4
|
+
import type { CustomCellRendererProps } from 'ag-grid-react';
|
|
5
|
+
import type { GridApi } from 'ag-grid-community';
|
|
6
|
+
import { SelectDropdownCellRenderer } from './SelectDropdownCellRenderer';
|
|
7
|
+
|
|
8
|
+
const MOCK_API = {
|
|
9
|
+
addEventListener: vi.fn(),
|
|
10
|
+
removeEventListener: vi.fn(),
|
|
11
|
+
} as unknown as GridApi;
|
|
12
|
+
|
|
13
|
+
const OPTIONS = [
|
|
14
|
+
{ label: 'Option 1', value: 'option1' },
|
|
15
|
+
{ label: 'Option 2', value: 'option2' },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const createMockProps = (
|
|
19
|
+
overrides: Partial<CustomCellRendererProps> & {
|
|
20
|
+
backgroundColor?: string;
|
|
21
|
+
fillCell?: boolean;
|
|
22
|
+
} = {},
|
|
23
|
+
) => ({
|
|
24
|
+
value: 'option1',
|
|
25
|
+
api: MOCK_API,
|
|
26
|
+
node: { setDataValue: vi.fn() },
|
|
27
|
+
column: 'selectField',
|
|
28
|
+
options: OPTIONS,
|
|
29
|
+
...overrides,
|
|
30
|
+
} as unknown as Parameters<typeof SelectDropdownCellRenderer>[0]);
|
|
31
|
+
|
|
32
|
+
describe('SelectDropdownCellRenderer', () => {
|
|
33
|
+
test('renders the dropdown trigger button', () => {
|
|
34
|
+
render(<SelectDropdownCellRenderer {...createMockProps()} />);
|
|
35
|
+
expect(screen.getByRole('button')).toBeInTheDocument();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
describe('backgroundColor', () => {
|
|
39
|
+
test('does not apply the custom-bg or text-contrast modifiers when not provided', () => {
|
|
40
|
+
const { container } = render(<SelectDropdownCellRenderer {...createMockProps()} />);
|
|
41
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown') as HTMLElement;
|
|
42
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--custom-bg');
|
|
43
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--text-dark');
|
|
44
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--text-light');
|
|
45
|
+
expect(wrapper.style.getPropertyValue('--ds-select-cell-bg')).toBe('');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test('applies the custom-bg modifier and bg CSS var when provided', () => {
|
|
49
|
+
const { container } = render(
|
|
50
|
+
<SelectDropdownCellRenderer {...createMockProps({ backgroundColor: '#1F7A1F' })} />,
|
|
51
|
+
);
|
|
52
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown') as HTMLElement;
|
|
53
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--custom-bg');
|
|
54
|
+
expect(wrapper.style.getPropertyValue('--ds-select-cell-bg')).toBe('#1F7A1F');
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('emits the text-light modifier for a dark background', () => {
|
|
58
|
+
const { container } = render(
|
|
59
|
+
<SelectDropdownCellRenderer {...createMockProps({ backgroundColor: '#000000' })} />,
|
|
60
|
+
);
|
|
61
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
62
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--text-light');
|
|
63
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--text-dark');
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test('emits the text-dark modifier for a light background', () => {
|
|
67
|
+
const { container } = render(
|
|
68
|
+
<SelectDropdownCellRenderer {...createMockProps({ backgroundColor: '#FFFFFF' })} />,
|
|
69
|
+
);
|
|
70
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
71
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--text-dark');
|
|
72
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--text-light');
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test('expands 3-digit hex shorthand correctly', () => {
|
|
76
|
+
const { container } = render(
|
|
77
|
+
<SelectDropdownCellRenderer {...createMockProps({ backgroundColor: '#000' })} />,
|
|
78
|
+
);
|
|
79
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
80
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--text-light');
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test('falls back to the text-dark modifier when the hex is malformed', () => {
|
|
84
|
+
const { container } = render(
|
|
85
|
+
<SelectDropdownCellRenderer {...createMockProps({ backgroundColor: 'not-a-color' })} />,
|
|
86
|
+
);
|
|
87
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
88
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--text-dark');
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
describe('fillCell', () => {
|
|
93
|
+
test('does not apply the fill-cell modifier by default', () => {
|
|
94
|
+
const { container } = render(<SelectDropdownCellRenderer {...createMockProps()} />);
|
|
95
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
96
|
+
expect(wrapper).not.toHaveClass('ds-table__select-dropdown--fill-cell');
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test('applies the fill-cell modifier when true', () => {
|
|
100
|
+
const { container } = render(
|
|
101
|
+
<SelectDropdownCellRenderer {...createMockProps({ fillCell: true })} />,
|
|
102
|
+
);
|
|
103
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
104
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--fill-cell');
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test('applies both modifiers when backgroundColor and fillCell are set together', () => {
|
|
109
|
+
const { container } = render(
|
|
110
|
+
<SelectDropdownCellRenderer
|
|
111
|
+
{...createMockProps({ backgroundColor: '#1F7A1F', fillCell: true })}
|
|
112
|
+
/>,
|
|
113
|
+
);
|
|
114
|
+
const wrapper = container.querySelector('.ds-table__select-dropdown');
|
|
115
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--custom-bg');
|
|
116
|
+
expect(wrapper).toHaveClass('ds-table__select-dropdown--fill-cell');
|
|
117
|
+
});
|
|
118
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
2
3
|
import type {
|
|
3
4
|
CellKeyDownEvent,
|
|
4
5
|
FullWidthCellKeyDownEvent,
|
|
@@ -9,9 +10,14 @@ import {
|
|
|
9
10
|
type SelectDropdownInputProps,
|
|
10
11
|
} from 'Components/formField/inputs/selectDropdown/SelectDropdown';
|
|
11
12
|
import { useComponentDidMount } from 'Utils/hooks/useComponentDidMount';
|
|
13
|
+
import { getTextContrast } from 'Utils/getTextContrast';
|
|
12
14
|
|
|
13
15
|
type SelectDropdownCellRendererProps = CustomCellRendererProps
|
|
14
|
-
& SelectDropdownInputProps
|
|
16
|
+
& SelectDropdownInputProps
|
|
17
|
+
& {
|
|
18
|
+
backgroundColor?: string;
|
|
19
|
+
fillCell?: boolean;
|
|
20
|
+
};
|
|
15
21
|
|
|
16
22
|
type SelectDropdownCellRendererOption = Omit<
|
|
17
23
|
SelectDropdownInputProps['options'][number],
|
|
@@ -36,8 +42,22 @@ export const SelectDropdownCellRenderer = (
|
|
|
36
42
|
'aria-describedBy': ariaDescribedBy,
|
|
37
43
|
'aria-invalid': ariaInvalid,
|
|
38
44
|
alwaysShowPlaceholder = false,
|
|
45
|
+
backgroundColor,
|
|
46
|
+
fillCell = false,
|
|
39
47
|
} = props;
|
|
40
48
|
|
|
49
|
+
const textContrast = backgroundColor ? getTextContrast(backgroundColor) : null;
|
|
50
|
+
|
|
51
|
+
const wrapperClassName = classNames('ds-table__select-dropdown', {
|
|
52
|
+
'ds-table__select-dropdown--custom-bg': backgroundColor,
|
|
53
|
+
'ds-table__select-dropdown--fill-cell': fillCell,
|
|
54
|
+
[`ds-table__select-dropdown--text-${textContrast}`]: textContrast,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const wrapperStyle = backgroundColor
|
|
58
|
+
? { ['--ds-select-cell-bg' as string]: backgroundColor }
|
|
59
|
+
: undefined;
|
|
60
|
+
|
|
41
61
|
const rawOptions: SelectDropdownCellRendererOption[] = options;
|
|
42
62
|
const normalisedOptions: SelectDropdownInputProps['options'] = rawOptions.map(option => ({
|
|
43
63
|
...option,
|
|
@@ -70,7 +90,7 @@ export const SelectDropdownCellRenderer = (
|
|
|
70
90
|
});
|
|
71
91
|
|
|
72
92
|
return (
|
|
73
|
-
<div className=
|
|
93
|
+
<div className={wrapperClassName} style={wrapperStyle}>
|
|
74
94
|
<SelectDropdown
|
|
75
95
|
disabled={disabled}
|
|
76
96
|
hasError={hasError}
|
|
@@ -14,6 +14,33 @@
|
|
|
14
14
|
width: 100%;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
&__select-dropdown {
|
|
18
|
+
&--fill-cell {
|
|
19
|
+
display: flex;
|
|
20
|
+
width: 100%;
|
|
21
|
+
height: 100%;
|
|
22
|
+
|
|
23
|
+
.ds-button--dropdown {
|
|
24
|
+
flex: 1;
|
|
25
|
+
width: 100%;
|
|
26
|
+
height: 100%;
|
|
27
|
+
border-radius: 0;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&--custom-bg .ds-button--dropdown {
|
|
32
|
+
background: var(--ds-select-cell-bg);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&--text-dark .ds-button--dropdown {
|
|
36
|
+
color: var(--color-grey-900);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&--text-light .ds-button--dropdown {
|
|
40
|
+
color: var(--color-mono-white);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
17
44
|
&__container {
|
|
18
45
|
*[class^='ag-'], *[class*=' ag-'] {
|
|
19
46
|
// AG-Grid gives these a z-index of 2 which interferes with our stacking elements
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { getTextContrast } from 'Utils/getTextContrast';
|
|
2
|
+
import { describe, expect, test } from 'vitest';
|
|
3
|
+
|
|
4
|
+
describe('getTextContrast', () => {
|
|
5
|
+
test('returns "light" for pure black', () => {
|
|
6
|
+
expect(getTextContrast('#000000')).toBe('light');
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
test('returns "dark" for pure white', () => {
|
|
10
|
+
expect(getTextContrast('#FFFFFF')).toBe('dark');
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test('returns "dark" at the threshold (YIQ === 128)', () => {
|
|
14
|
+
// #808080 → YIQ exactly 128; the comparison is `>=` so it counts as light bg.
|
|
15
|
+
expect(getTextContrast('#808080')).toBe('dark');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('returns "light" just below the threshold (YIQ === 127)', () => {
|
|
19
|
+
expect(getTextContrast('#7F7F7F')).toBe('light');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('weights green more heavily than red or blue', () => {
|
|
23
|
+
// Pure green (#00FF00) has high YIQ (≈ 150) → dark text reads better.
|
|
24
|
+
expect(getTextContrast('#00FF00')).toBe('dark');
|
|
25
|
+
// Pure red (#FF0000) has YIQ ≈ 76 → light text reads better.
|
|
26
|
+
expect(getTextContrast('#FF0000')).toBe('light');
|
|
27
|
+
// Pure blue (#0000FF) has YIQ ≈ 29 → light text reads better.
|
|
28
|
+
expect(getTextContrast('#0000FF')).toBe('light');
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test('handles real-world status colours', () => {
|
|
32
|
+
expect(getTextContrast('#1F7A1F')).toBe('light'); // dark green
|
|
33
|
+
expect(getTextContrast('#B91C1C')).toBe('light'); // dark red
|
|
34
|
+
expect(getTextContrast('#FFE68A')).toBe('dark'); // pale yellow
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe('input parsing', () => {
|
|
38
|
+
test('expands 3-digit hex shorthand', () => {
|
|
39
|
+
expect(getTextContrast('#000')).toBe('light');
|
|
40
|
+
expect(getTextContrast('#fff')).toBe('dark');
|
|
41
|
+
expect(getTextContrast('#abc')).toBe('dark'); // #aabbcc → YIQ ≈ 184
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('accepts hex without a leading "#"', () => {
|
|
45
|
+
expect(getTextContrast('000000')).toBe('light');
|
|
46
|
+
expect(getTextContrast('ffffff')).toBe('dark');
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('is case-insensitive', () => {
|
|
50
|
+
expect(getTextContrast('#abcdef')).toBe(getTextContrast('#ABCDEF'));
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('trims surrounding whitespace', () => {
|
|
54
|
+
expect(getTextContrast(' #000000 ')).toBe('light');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
describe('invalid input', () => {
|
|
59
|
+
test('falls back to "dark" for non-hex characters', () => {
|
|
60
|
+
expect(getTextContrast('#zzzzzz')).toBe('dark');
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test('falls back to "dark" for malformed length', () => {
|
|
64
|
+
expect(getTextContrast('#12345')).toBe('dark'); // 5 chars
|
|
65
|
+
expect(getTextContrast('#1234567')).toBe('dark'); // 7 chars
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test('falls back to "dark" for empty string', () => {
|
|
69
|
+
expect(getTextContrast('')).toBe('dark');
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test('falls back to "dark" for CSS keyword colours', () => {
|
|
73
|
+
expect(getTextContrast('red')).toBe('dark');
|
|
74
|
+
expect(getTextContrast('rebeccapurple')).toBe('dark');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
test('falls back to "dark" for rgb()/hsl() notation', () => {
|
|
78
|
+
expect(getTextContrast('rgb(0, 0, 0)')).toBe('dark');
|
|
79
|
+
expect(getTextContrast('hsl(0, 0%, 0%)')).toBe('dark');
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type TextContrast = 'dark' | 'light';
|
|
2
|
+
|
|
3
|
+
export const getTextContrast = (color: string): TextContrast => {
|
|
4
|
+
const CONTRAST_THRESHOLD = 128;
|
|
5
|
+
|
|
6
|
+
let hex = color.trim().replace('#', '');
|
|
7
|
+
if (hex.length === 3) hex = hex.split('').map(c => c + c).join('');
|
|
8
|
+
if (hex.length !== 6 || /[^0-9a-f]/i.test(hex)) return 'dark';
|
|
9
|
+
const r = parseInt(hex.slice(0, 2), 16);
|
|
10
|
+
const g = parseInt(hex.slice(2, 4), 16);
|
|
11
|
+
const b = parseInt(hex.slice(4, 6), 16);
|
|
12
|
+
const yiq = (r * 299 + g * 587 + b * 114) / 1000;
|
|
13
|
+
return yiq >= CONTRAST_THRESHOLD ? 'dark' : 'light';
|
|
14
|
+
};
|