@homebound/beam 2.392.0 → 2.394.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/dist/index.cjs +1526 -1377
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +216 -133
- package/dist/index.d.ts +216 -133
- package/dist/index.js +1507 -1360
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -102,6 +102,7 @@ __export(index_exports, {
|
|
|
102
102
|
FormRow: () => FormRow,
|
|
103
103
|
FullBleed: () => FullBleed,
|
|
104
104
|
GridTable: () => GridTable,
|
|
105
|
+
GridTableLayout: () => GridTableLayout,
|
|
105
106
|
HB_QUIPS_FLAVOR: () => HB_QUIPS_FLAVOR,
|
|
106
107
|
HB_QUIPS_MISSION: () => HB_QUIPS_MISSION,
|
|
107
108
|
HEADER: () => HEADER,
|
|
@@ -289,6 +290,7 @@ __export(index_exports, {
|
|
|
289
290
|
useDnDGridItem: () => useDnDGridItem,
|
|
290
291
|
useFilter: () => useFilter,
|
|
291
292
|
useGridTableApi: () => useGridTableApi,
|
|
293
|
+
useGridTableLayoutState: () => useGridTableLayoutState,
|
|
292
294
|
useGroupBy: () => useGroupBy,
|
|
293
295
|
useHover: () => useHover,
|
|
294
296
|
useModal: () => useModal,
|
|
@@ -14068,7 +14070,7 @@ var variantStyles2 = {
|
|
|
14068
14070
|
};
|
|
14069
14071
|
|
|
14070
14072
|
// src/components/BeamContext.tsx
|
|
14071
|
-
var
|
|
14073
|
+
var import_react98 = require("react");
|
|
14072
14074
|
var import_react_aria44 = require("react-aria");
|
|
14073
14075
|
|
|
14074
14076
|
// src/components/Modal/Modal.tsx
|
|
@@ -15618,7 +15620,7 @@ var import_framer_motion2 = require("framer-motion");
|
|
|
15618
15620
|
var import_react84 = require("react");
|
|
15619
15621
|
var import_jsx_runtime119 = require("@emotion/react/jsx-runtime");
|
|
15620
15622
|
var RIGHT_SIDEBAR_MIN_WIDTH = "250px";
|
|
15621
|
-
function RightSidebar({ content }) {
|
|
15623
|
+
function RightSidebar({ content, headerHeightPx: headerHeightPx2 }) {
|
|
15622
15624
|
const [selectedIcon, setSelectedIcon] = (0, import_react84.useState)(void 0);
|
|
15623
15625
|
const tid = useTestIds({}, "rightSidebar");
|
|
15624
15626
|
return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(import_jsx_runtime119.Fragment, { children: [
|
|
@@ -15640,23 +15642,25 @@ function RightSidebar({ content }) {
|
|
|
15640
15642
|
animate: { x: 0, opacity: 1 },
|
|
15641
15643
|
transition: { delay: 0.2, ease: [0.51, 0.92, 0.24, 1], duration: 0.3 },
|
|
15642
15644
|
exit: { transition: { ease: "linear", duration: 0.2 }, x: "100%" },
|
|
15643
|
-
css: Css.w100.mw(RIGHT_SIDEBAR_MIN_WIDTH).z0.$,
|
|
15644
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
|
|
15645
|
-
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { css: Css.
|
|
15646
|
-
/* @__PURE__ */ (0, import_jsx_runtime119.
|
|
15647
|
-
|
|
15648
|
-
|
|
15649
|
-
|
|
15650
|
-
|
|
15651
|
-
|
|
15652
|
-
|
|
15653
|
-
|
|
15654
|
-
|
|
15655
|
-
|
|
15656
|
-
|
|
15645
|
+
css: Css.w100.mw(RIGHT_SIDEBAR_MIN_WIDTH).z0.maxh(`calc(100vh - ${headerHeightPx2}px)`).oya.pl4.pr3.$,
|
|
15646
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(import_jsx_runtime119.Fragment, { children: [
|
|
15647
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { css: Css.sticky.top0.bgWhite.$, children: [
|
|
15648
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("div", { css: Css.absolute.leftPx(-24).top0.df.fdc.aic.$, children: [
|
|
15649
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
15650
|
+
IconButton,
|
|
15651
|
+
{
|
|
15652
|
+
bgColor: "rgba(255,255,255,1)" /* White */,
|
|
15653
|
+
circle: true,
|
|
15654
|
+
onClick: () => setSelectedIcon(void 0),
|
|
15655
|
+
icon: "x",
|
|
15656
|
+
inc: 3.5
|
|
15657
|
+
}
|
|
15658
|
+
),
|
|
15659
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { css: Css.absolute.topPx(48).h("calc(100vh - 168px)").wPx(1).bgGray300.$ })
|
|
15660
|
+
] }),
|
|
15661
|
+
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { css: Css.df.aic.jcfe.gap2.mb3.$, children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(IconButtonList, { content, selectedIcon, onIconClick: setSelectedIcon }) })
|
|
15657
15662
|
] }),
|
|
15658
|
-
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { css: Css.
|
|
15659
|
-
selectedIcon && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { ...tid.content, children: content.find((sidebar) => sidebar.icon === selectedIcon)?.render() })
|
|
15663
|
+
selectedIcon && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { ...tid.content, css: Css.pl3.$, children: content.find((sidebar) => sidebar.icon === selectedIcon)?.render() })
|
|
15660
15664
|
] })
|
|
15661
15665
|
},
|
|
15662
15666
|
"rightSidebar"
|
|
@@ -15716,7 +15720,7 @@ function FormPageLayoutComponent(props) {
|
|
|
15716
15720
|
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(PageHeader, { ...props, ...tids.pageHeader }),
|
|
15717
15721
|
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(LeftNav, { sectionsWithRefs, ...tids }),
|
|
15718
15722
|
/* @__PURE__ */ (0, import_jsx_runtime121.jsx)(FormSections, { sectionsWithRefs, formState, ...tids }),
|
|
15719
|
-
rightSideBar && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("aside", { css: Css.gr(2).gc("3 / 4").sticky.topPx(headerHeightPx).$, children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(RightSidebar, { content: rightSideBar }) })
|
|
15723
|
+
rightSideBar && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("aside", { css: Css.gr(2).gc("3 / 4").sticky.topPx(headerHeightPx).$, children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(RightSidebar, { content: rightSideBar, headerHeightPx }) })
|
|
15720
15724
|
] }) })
|
|
15721
15725
|
);
|
|
15722
15726
|
}
|
|
@@ -15938,1336 +15942,1514 @@ function FullBleed({ children, omitPadding = false }) {
|
|
|
15938
15942
|
});
|
|
15939
15943
|
}
|
|
15940
15944
|
|
|
15941
|
-
// src/components/Layout/
|
|
15945
|
+
// src/components/Layout/GridTableLayout/GridTableLayout.tsx
|
|
15946
|
+
var import_react94 = __toESM(require("react"), 1);
|
|
15947
|
+
|
|
15948
|
+
// src/components/Filters/Filters.tsx
|
|
15949
|
+
var import_react91 = require("react");
|
|
15950
|
+
|
|
15951
|
+
// src/components/Filters/BaseFilter.ts
|
|
15952
|
+
var BaseFilter = class {
|
|
15953
|
+
constructor(key, props) {
|
|
15954
|
+
this.key = key;
|
|
15955
|
+
this.props = props;
|
|
15956
|
+
}
|
|
15957
|
+
get label() {
|
|
15958
|
+
return this.props.label || defaultLabel(this.key);
|
|
15959
|
+
}
|
|
15960
|
+
get defaultValue() {
|
|
15961
|
+
return this.props.defaultValue;
|
|
15962
|
+
}
|
|
15963
|
+
testId(tid) {
|
|
15964
|
+
return tid[defaultTestId(this.label)];
|
|
15965
|
+
}
|
|
15966
|
+
};
|
|
15967
|
+
|
|
15968
|
+
// src/components/Filters/DateFilter.tsx
|
|
15942
15969
|
var import_jsx_runtime123 = require("@emotion/react/jsx-runtime");
|
|
15943
|
-
function
|
|
15944
|
-
return (
|
|
15945
|
-
// Take over the full viewport and hide any overflown content.
|
|
15946
|
-
// Using `-webkit-fill-available`, otherwise `height: 100vh` includes the app bars in mobile Safari. See https://allthingssmitty.com/2020/05/11/css-fix-for-100vh-in-mobile-webkit/
|
|
15947
|
-
// Setting the multiple "(min|max-)height" properties is necessary, as Truss will turn this into an object and there can only be one `height` property.
|
|
15948
|
-
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { css: Css.oh.vh100.mh("-webkit-fill-available").maxh("-webkit-fill-available").$, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { css: Css.h100.df.fdc.mh0.oa.$, children }) })
|
|
15949
|
-
);
|
|
15970
|
+
function dateFilter(props) {
|
|
15971
|
+
return (key) => new DateFilter(key, props);
|
|
15950
15972
|
}
|
|
15973
|
+
var anyOption = {};
|
|
15974
|
+
var DateFilter = class extends BaseFilter {
|
|
15975
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15976
|
+
const { label, operations, getOperationValue, getOperationLabel } = this.props;
|
|
15977
|
+
return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_jsx_runtime123.Fragment, { children: [
|
|
15978
|
+
vertical && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Label, { label }),
|
|
15979
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(CompoundField, { children: [
|
|
15980
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
|
|
15981
|
+
SelectField,
|
|
15982
|
+
{
|
|
15983
|
+
compact: true,
|
|
15984
|
+
sizeToContent: true,
|
|
15985
|
+
options: [
|
|
15986
|
+
// Always show the 'Any' option
|
|
15987
|
+
anyOption,
|
|
15988
|
+
...operations
|
|
15989
|
+
],
|
|
15990
|
+
getOptionValue: (o) => o === anyOption ? void 0 : getOperationValue(o),
|
|
15991
|
+
getOptionLabel: (o) => o === anyOption ? "Any" : getOperationLabel(o),
|
|
15992
|
+
value: value?.op,
|
|
15993
|
+
onSelect: (op) => (
|
|
15994
|
+
// default the selected date to today if it doesn't exist in the filter's value
|
|
15995
|
+
setValue(op ? { op, value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date() } : void 0)
|
|
15996
|
+
),
|
|
15997
|
+
label: inModal ? `${label} date filter operation` : label,
|
|
15998
|
+
labelStyle: !inModal && !vertical ? "inline" : inModal || vertical ? "hidden" : "above",
|
|
15999
|
+
nothingSelectedText: "Any",
|
|
16000
|
+
...tid[`${defaultTestId(this.label)}_dateOperation`]
|
|
16001
|
+
}
|
|
16002
|
+
),
|
|
16003
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
|
|
16004
|
+
DateField,
|
|
16005
|
+
{
|
|
16006
|
+
compact: true,
|
|
16007
|
+
labelStyle: "inline",
|
|
16008
|
+
value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date(),
|
|
16009
|
+
label: "Date",
|
|
16010
|
+
onChange: (d) => setValue({ ...value, value: d }),
|
|
16011
|
+
disabled: !value,
|
|
16012
|
+
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
16013
|
+
}
|
|
16014
|
+
)
|
|
16015
|
+
] })
|
|
16016
|
+
] });
|
|
16017
|
+
}
|
|
16018
|
+
};
|
|
15951
16019
|
|
|
15952
|
-
// src/components/
|
|
15953
|
-
var import_react89 = __toESM(require("react"), 1);
|
|
16020
|
+
// src/components/Filters/DateRangeFilter.tsx
|
|
15954
16021
|
var import_jsx_runtime124 = require("@emotion/react/jsx-runtime");
|
|
15955
|
-
|
|
15956
|
-
|
|
15957
|
-
},
|
|
15958
|
-
closePane: () => {
|
|
15959
|
-
},
|
|
15960
|
-
clearPane: () => {
|
|
15961
|
-
},
|
|
15962
|
-
isRightPaneOpen: false,
|
|
15963
|
-
rightPaneContent: null
|
|
15964
|
-
});
|
|
15965
|
-
function RightPaneProvider({ children }) {
|
|
15966
|
-
const [rightPaneContent, setRightPaneContent] = (0, import_react89.useState)(void 0);
|
|
15967
|
-
const [isRightPaneOpen, setIsRightPaneOpen] = (0, import_react89.useState)(false);
|
|
15968
|
-
const openInPane = (0, import_react89.useCallback)(
|
|
15969
|
-
(opts) => {
|
|
15970
|
-
setRightPaneContent(opts?.content);
|
|
15971
|
-
setIsRightPaneOpen(true);
|
|
15972
|
-
},
|
|
15973
|
-
[setRightPaneContent]
|
|
15974
|
-
);
|
|
15975
|
-
const closePane = (0, import_react89.useCallback)(() => setIsRightPaneOpen(false), []);
|
|
15976
|
-
const clearPane = (0, import_react89.useCallback)(() => setRightPaneContent(void 0), [setRightPaneContent]);
|
|
15977
|
-
const context = (0, import_react89.useMemo)(
|
|
15978
|
-
() => ({ openInPane, closePane, clearPane, rightPaneContent, isRightPaneOpen }),
|
|
15979
|
-
[openInPane, closePane, rightPaneContent, clearPane, isRightPaneOpen]
|
|
15980
|
-
);
|
|
15981
|
-
return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(RightPaneContext.Provider, { value: context, children });
|
|
15982
|
-
}
|
|
15983
|
-
function useRightPaneContext() {
|
|
15984
|
-
return (0, import_react89.useContext)(RightPaneContext);
|
|
16022
|
+
function dateRangeFilter(props) {
|
|
16023
|
+
return (key) => new DateRangeFilter(key, props);
|
|
15985
16024
|
}
|
|
15986
|
-
|
|
15987
|
-
|
|
15988
|
-
|
|
15989
|
-
|
|
15990
|
-
|
|
15991
|
-
|
|
15992
|
-
|
|
15993
|
-
const { isRightPaneOpen, rightPaneContent, clearPane, closePane } = useRightPaneContext();
|
|
15994
|
-
(0, import_react90.useEffect)(() => closePane, [closePane]);
|
|
15995
|
-
return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { css: Css.h100.df.oxh.$, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_jsx_runtime125.Fragment, { children: [
|
|
15996
|
-
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
15997
|
-
"div",
|
|
15998
|
-
{
|
|
15999
|
-
css: {
|
|
16000
|
-
...Css.w(`calc(100% - ${paneWidth + 24}px)`).add("transition", "width .2s linear").h100.mr3.oxa.$,
|
|
16001
|
-
...Css.if(!isRightPaneOpen).w100.mr0.$,
|
|
16002
|
-
...Css.if(!!defaultPaneContent).w(`calc(100% - ${paneWidth + 24}px)`).mr3.$
|
|
16003
|
-
},
|
|
16004
|
-
children
|
|
16005
|
-
}
|
|
16006
|
-
),
|
|
16007
|
-
/* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { css: Css.relative.if(!!defaultPaneContent).wPx(paneWidth).$, children: [
|
|
16008
|
-
defaultPaneContent && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
16009
|
-
"div",
|
|
16025
|
+
var DateRangeFilter = class extends BaseFilter {
|
|
16026
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16027
|
+
const { label, placeholderText, disabledDays, testFieldLabel, defaultValue } = this.props;
|
|
16028
|
+
return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_jsx_runtime124.Fragment, { children: [
|
|
16029
|
+
vertical && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Label, { label }),
|
|
16030
|
+
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
|
|
16031
|
+
DateRangeField,
|
|
16010
16032
|
{
|
|
16011
|
-
|
|
16012
|
-
|
|
16033
|
+
compact: true,
|
|
16034
|
+
labelStyle: "inline",
|
|
16035
|
+
isRangeFilterField: true,
|
|
16036
|
+
placeholder: placeholderText,
|
|
16037
|
+
label: testFieldLabel ?? "Date",
|
|
16038
|
+
value: value?.value ? { from: new Date(value.value.from), to: new Date(value.value.to) } : void 0,
|
|
16039
|
+
onChange: (d) => d ? setValue({ op: defaultValue?.op, value: d }) : setValue(void 0),
|
|
16040
|
+
disabledDays,
|
|
16041
|
+
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
16013
16042
|
}
|
|
16014
|
-
)
|
|
16015
|
-
|
|
16016
|
-
|
|
16017
|
-
|
|
16018
|
-
layout: "position",
|
|
16019
|
-
"data-testid": "rightPaneContent",
|
|
16020
|
-
css: Css.bgColor(paneBgColor).h100.wPx(paneWidth).$,
|
|
16021
|
-
initial: { x: paneWidth + 24, position: "absolute" },
|
|
16022
|
-
animate: { x: 0 },
|
|
16023
|
-
transition: { ease: "linear", duration: 0.2 },
|
|
16024
|
-
exit: { transition: { ease: "linear", duration: 0.2 }, x: paneWidth },
|
|
16025
|
-
onAnimationComplete: (definition) => definition.x !== 0 && clearPane(),
|
|
16026
|
-
children: rightPaneContent
|
|
16027
|
-
},
|
|
16028
|
-
"rightPane"
|
|
16029
|
-
) })
|
|
16030
|
-
] })
|
|
16031
|
-
] }) });
|
|
16032
|
-
}
|
|
16043
|
+
)
|
|
16044
|
+
] });
|
|
16045
|
+
}
|
|
16046
|
+
};
|
|
16033
16047
|
|
|
16034
|
-
// src/components/
|
|
16035
|
-
|
|
16036
|
-
|
|
16037
|
-
return
|
|
16038
|
-
openRightPane: openInPane,
|
|
16039
|
-
closeRightPane: closePane
|
|
16040
|
-
};
|
|
16048
|
+
// src/components/Filters/MultiFilter.tsx
|
|
16049
|
+
var import_jsx_runtime125 = require("@emotion/react/jsx-runtime");
|
|
16050
|
+
function multiFilter(props) {
|
|
16051
|
+
return (key) => new MultiFilter(key, props);
|
|
16041
16052
|
}
|
|
16042
|
-
|
|
16043
|
-
|
|
16044
|
-
|
|
16045
|
-
|
|
16046
|
-
|
|
16047
|
-
|
|
16048
|
-
|
|
16049
|
-
|
|
16050
|
-
|
|
16051
|
-
|
|
16052
|
-
|
|
16053
|
-
|
|
16054
|
-
|
|
16055
|
-
|
|
16056
|
-
|
|
16057
|
-
|
|
16058
|
-
|
|
16059
|
-
|
|
16053
|
+
var MultiFilter = class extends BaseFilter {
|
|
16054
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16055
|
+
if (inModal && Array.isArray(this.props.options) && this.props.options.length > 0 && this.props.options.length <= 8) {
|
|
16056
|
+
const { disabledOptions } = this.props;
|
|
16057
|
+
const disabledOptionsWithReasons = Object.fromEntries(disabledOptions?.map(disabledOptionToKeyedTuple) ?? []);
|
|
16058
|
+
const disabledKeys = Object.keys(disabledOptionsWithReasons);
|
|
16059
|
+
return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
16060
|
+
ToggleChipGroup,
|
|
16061
|
+
{
|
|
16062
|
+
label: this.label,
|
|
16063
|
+
options: this.props.options.map((o) => {
|
|
16064
|
+
const value2 = this.props.getOptionValue(o);
|
|
16065
|
+
const disabled = value2 && disabledKeys.includes(value2.toString());
|
|
16066
|
+
const disabledReason = disabled ? disabledOptionsWithReasons[value2.toString()] : void 0;
|
|
16067
|
+
return {
|
|
16068
|
+
label: this.props.getOptionLabel(o),
|
|
16069
|
+
value: value2,
|
|
16070
|
+
disabled: disabledReason ?? disabled
|
|
16071
|
+
};
|
|
16072
|
+
}),
|
|
16073
|
+
onChange: (values) => {
|
|
16074
|
+
setValue(values.length === 0 ? void 0 : values);
|
|
16075
|
+
},
|
|
16076
|
+
values: value || [],
|
|
16077
|
+
labelStyle: "hidden",
|
|
16078
|
+
...tid[defaultTestId(this.label)]
|
|
16079
|
+
}
|
|
16080
|
+
);
|
|
16081
|
+
}
|
|
16082
|
+
const { defaultValue, nothingSelectedText, ...props } = this.props;
|
|
16083
|
+
return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
16084
|
+
MultiSelectField,
|
|
16060
16085
|
{
|
|
16061
|
-
|
|
16062
|
-
|
|
16063
|
-
|
|
16064
|
-
|
|
16086
|
+
...props,
|
|
16087
|
+
compact: !vertical,
|
|
16088
|
+
label: this.label,
|
|
16089
|
+
values: value || [],
|
|
16090
|
+
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16091
|
+
sizeToContent: !inModal && !vertical,
|
|
16092
|
+
onSelect: (values) => {
|
|
16093
|
+
setValue(values.length === 0 ? void 0 : values);
|
|
16065
16094
|
},
|
|
16066
|
-
|
|
16095
|
+
nothingSelectedText: nothingSelectedText ?? "All",
|
|
16096
|
+
...this.testId(tid)
|
|
16067
16097
|
}
|
|
16068
|
-
)
|
|
16069
|
-
|
|
16070
|
-
|
|
16071
|
-
}
|
|
16098
|
+
);
|
|
16099
|
+
}
|
|
16100
|
+
};
|
|
16072
16101
|
|
|
16073
|
-
// src/components/
|
|
16074
|
-
var
|
|
16075
|
-
|
|
16076
|
-
|
|
16077
|
-
setNotice: () => {
|
|
16078
|
-
throw new Error("Missing ToastProvider");
|
|
16079
|
-
},
|
|
16080
|
-
clear: () => {
|
|
16081
|
-
},
|
|
16082
|
-
notice: void 0
|
|
16083
|
-
});
|
|
16084
|
-
function ToastProvider(props) {
|
|
16085
|
-
const [notice, setNotice] = (0, import_react92.useState)();
|
|
16086
|
-
const clear = (0, import_react92.useCallback)(() => setNotice(void 0), [setNotice]);
|
|
16087
|
-
const contextValue = (0, import_react92.useMemo)(() => ({ setNotice, notice, clear }), [notice, clear]);
|
|
16088
|
-
return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(ToastContext.Provider, { value: contextValue, children: props.children });
|
|
16102
|
+
// src/components/Filters/NumberRangeFilter.tsx
|
|
16103
|
+
var import_jsx_runtime126 = require("@emotion/react/jsx-runtime");
|
|
16104
|
+
function numberRangeFilter(props) {
|
|
16105
|
+
return (key) => new NumberRangeFilter(key, props);
|
|
16089
16106
|
}
|
|
16090
|
-
|
|
16091
|
-
|
|
16107
|
+
var NumberRangeFilter = class extends BaseFilter {
|
|
16108
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16109
|
+
const { label, numberFieldType, numberFormatOptions } = this.props;
|
|
16110
|
+
const min = value?.min ?? void 0;
|
|
16111
|
+
const max = value?.max ?? void 0;
|
|
16112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_jsx_runtime126.Fragment, { children: [
|
|
16113
|
+
vertical && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { ...tid, children: [
|
|
16114
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Label, { label }),
|
|
16115
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { css: Css.pb1.$, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
16116
|
+
NumberField,
|
|
16117
|
+
{
|
|
16118
|
+
labelStyle: "inline",
|
|
16119
|
+
clearable: true,
|
|
16120
|
+
label: "Min",
|
|
16121
|
+
value: min,
|
|
16122
|
+
type: numberFieldType,
|
|
16123
|
+
numberFormatOptions,
|
|
16124
|
+
onChange: (minVal) => {
|
|
16125
|
+
const maxValue = max ? { max } : {};
|
|
16126
|
+
setValue(minVal || max ? { min: minVal, ...maxValue } : void 0);
|
|
16127
|
+
},
|
|
16128
|
+
...tid[`${defaultTestId(label)}_min_vertical`]
|
|
16129
|
+
}
|
|
16130
|
+
) }),
|
|
16131
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
16132
|
+
NumberField,
|
|
16133
|
+
{
|
|
16134
|
+
labelStyle: "inline",
|
|
16135
|
+
clearable: true,
|
|
16136
|
+
label: "Max",
|
|
16137
|
+
value: max,
|
|
16138
|
+
type: numberFieldType,
|
|
16139
|
+
numberFormatOptions,
|
|
16140
|
+
onChange: (maxVal) => {
|
|
16141
|
+
const minValue = min ? { min } : {};
|
|
16142
|
+
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
16143
|
+
},
|
|
16144
|
+
...tid[`${defaultTestId(label)}_max_vertical`]
|
|
16145
|
+
}
|
|
16146
|
+
)
|
|
16147
|
+
] }),
|
|
16148
|
+
!vertical && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(CompoundField, { ...tid, children: [
|
|
16149
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
16150
|
+
NumberField,
|
|
16151
|
+
{
|
|
16152
|
+
compact: true,
|
|
16153
|
+
sizeToContent: !inModal,
|
|
16154
|
+
labelStyle: "inline",
|
|
16155
|
+
clearable: true,
|
|
16156
|
+
label: !inModal ? `${label} Min` : "Min",
|
|
16157
|
+
value: min,
|
|
16158
|
+
type: numberFieldType,
|
|
16159
|
+
numberFormatOptions,
|
|
16160
|
+
onChange: (minVal) => {
|
|
16161
|
+
const maxValue = max ? { max } : {};
|
|
16162
|
+
setValue(minVal || max ? { min: minVal, ...maxValue } : void 0);
|
|
16163
|
+
},
|
|
16164
|
+
...tid[`${defaultTestId(label)}_min`]
|
|
16165
|
+
}
|
|
16166
|
+
),
|
|
16167
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
16168
|
+
NumberField,
|
|
16169
|
+
{
|
|
16170
|
+
compact: true,
|
|
16171
|
+
sizeToContent: !inModal,
|
|
16172
|
+
labelStyle: "inline",
|
|
16173
|
+
clearable: true,
|
|
16174
|
+
label: !inModal ? `${label} Max` : "Max",
|
|
16175
|
+
value: max,
|
|
16176
|
+
type: numberFieldType,
|
|
16177
|
+
numberFormatOptions,
|
|
16178
|
+
onChange: (maxVal) => {
|
|
16179
|
+
const minValue = min ? { min } : {};
|
|
16180
|
+
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
16181
|
+
},
|
|
16182
|
+
...tid[`${defaultTestId(label)}_max`]
|
|
16183
|
+
}
|
|
16184
|
+
)
|
|
16185
|
+
] })
|
|
16186
|
+
] });
|
|
16187
|
+
}
|
|
16188
|
+
};
|
|
16189
|
+
|
|
16190
|
+
// src/components/Filters/SingleFilter.tsx
|
|
16191
|
+
var import_jsx_runtime127 = require("@emotion/react/jsx-runtime");
|
|
16192
|
+
function singleFilter(props) {
|
|
16193
|
+
return (key) => new SingleFilter(key, props);
|
|
16092
16194
|
}
|
|
16195
|
+
var allOption = {};
|
|
16196
|
+
var SingleFilter = class extends BaseFilter {
|
|
16197
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16198
|
+
const {
|
|
16199
|
+
label,
|
|
16200
|
+
defaultValue,
|
|
16201
|
+
options: maybeOptions,
|
|
16202
|
+
getOptionLabel,
|
|
16203
|
+
getOptionValue,
|
|
16204
|
+
nothingSelectedText,
|
|
16205
|
+
...props
|
|
16206
|
+
} = this.props;
|
|
16207
|
+
const options = Array.isArray(maybeOptions) ? [allOption, ...maybeOptions] : { ...maybeOptions, current: maybeOptions.current };
|
|
16208
|
+
return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
|
|
16209
|
+
SelectField,
|
|
16210
|
+
{
|
|
16211
|
+
...props,
|
|
16212
|
+
options,
|
|
16213
|
+
getOptionValue: (o) => o === allOption ? void 0 : getOptionValue(o),
|
|
16214
|
+
getOptionLabel: (o) => o === allOption ? nothingSelectedText ?? "All" : getOptionLabel(o),
|
|
16215
|
+
compact: !vertical,
|
|
16216
|
+
value,
|
|
16217
|
+
label: this.label,
|
|
16218
|
+
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16219
|
+
sizeToContent: !inModal && !vertical,
|
|
16220
|
+
nothingSelectedText: nothingSelectedText ?? "All",
|
|
16221
|
+
onSelect: (value2) => setValue(value2 || void 0),
|
|
16222
|
+
...this.testId(tid)
|
|
16223
|
+
}
|
|
16224
|
+
);
|
|
16225
|
+
}
|
|
16226
|
+
};
|
|
16093
16227
|
|
|
16094
|
-
// src/components/
|
|
16228
|
+
// src/components/Filters/TreeFilter.tsx
|
|
16095
16229
|
var import_jsx_runtime128 = require("@emotion/react/jsx-runtime");
|
|
16096
|
-
|
|
16097
|
-
|
|
16098
|
-
modalCanCloseChecks: new EmptyRef(),
|
|
16099
|
-
modalHeaderDiv: void 0,
|
|
16100
|
-
modalBodyDiv: void 0,
|
|
16101
|
-
modalFooterDiv: void 0,
|
|
16102
|
-
drawerContentStack: new EmptyRef(),
|
|
16103
|
-
drawerCanCloseChecks: new EmptyRef(),
|
|
16104
|
-
drawerCanCloseDetailsChecks: new EmptyRef(),
|
|
16105
|
-
sdHeaderDiv: void 0
|
|
16106
|
-
});
|
|
16107
|
-
function BeamProvider({ children, ...presentationProps }) {
|
|
16108
|
-
const [, tick] = (0, import_react93.useReducer)((prev) => prev + 1, 0);
|
|
16109
|
-
const modalRef = (0, import_react93.useRef)();
|
|
16110
|
-
const modalHeaderDiv = (0, import_react93.useMemo)(() => document.createElement("div"), []);
|
|
16111
|
-
const modalBodyDiv = (0, import_react93.useMemo)(() => {
|
|
16112
|
-
const el = document.createElement("div");
|
|
16113
|
-
el.style.height = "100%";
|
|
16114
|
-
return el;
|
|
16115
|
-
}, []);
|
|
16116
|
-
const modalCanCloseChecksRef = (0, import_react93.useRef)([]);
|
|
16117
|
-
const modalFooterDiv = (0, import_react93.useMemo)(() => document.createElement("div"), []);
|
|
16118
|
-
const drawerContentStackRef = (0, import_react93.useRef)([]);
|
|
16119
|
-
const drawerCanCloseChecks = (0, import_react93.useRef)([]);
|
|
16120
|
-
const drawerCanCloseDetailsChecks = (0, import_react93.useRef)([]);
|
|
16121
|
-
const sdHeaderDiv = (0, import_react93.useMemo)(() => document.createElement("div"), []);
|
|
16122
|
-
const context = (0, import_react93.useMemo)(() => {
|
|
16123
|
-
return {
|
|
16124
|
-
// These two keys need to trigger re-renders on change
|
|
16125
|
-
modalState: new PretendRefThatTicks(modalRef, tick),
|
|
16126
|
-
drawerContentStack: new PretendRefThatTicks(drawerContentStackRef, tick),
|
|
16127
|
-
// The rest we don't need to re-render when these are mutated, so just expose as-is
|
|
16128
|
-
modalCanCloseChecks: modalCanCloseChecksRef,
|
|
16129
|
-
modalHeaderDiv,
|
|
16130
|
-
modalBodyDiv,
|
|
16131
|
-
modalFooterDiv,
|
|
16132
|
-
drawerCanCloseChecks,
|
|
16133
|
-
drawerCanCloseDetailsChecks,
|
|
16134
|
-
sdHeaderDiv
|
|
16135
|
-
};
|
|
16136
|
-
}, [modalBodyDiv, modalFooterDiv, modalHeaderDiv, sdHeaderDiv]);
|
|
16137
|
-
return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(BeamContext.Provider, { value: { ...context }, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(PresentationProvider, { ...presentationProps, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(RightPaneProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(AutoSaveStatusProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SnackbarProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(ToastProvider, { children: [
|
|
16138
|
-
/* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_react_aria44.OverlayProvider, { children: [
|
|
16139
|
-
children,
|
|
16140
|
-
modalRef.current && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Modal, { ...modalRef.current })
|
|
16141
|
-
] }),
|
|
16142
|
-
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SuperDrawer, {})
|
|
16143
|
-
] }) }) }) }) }) });
|
|
16230
|
+
function treeFilter(props) {
|
|
16231
|
+
return (key) => new TreeFilter(key, props);
|
|
16144
16232
|
}
|
|
16145
|
-
var
|
|
16146
|
-
|
|
16147
|
-
|
|
16148
|
-
|
|
16149
|
-
|
|
16150
|
-
|
|
16151
|
-
|
|
16152
|
-
|
|
16153
|
-
|
|
16154
|
-
|
|
16155
|
-
|
|
16233
|
+
var TreeFilter = class extends BaseFilter {
|
|
16234
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16235
|
+
const { defaultValue, nothingSelectedText, filterBy = "root", ...props } = this.props;
|
|
16236
|
+
return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
16237
|
+
TreeSelectField,
|
|
16238
|
+
{
|
|
16239
|
+
...props,
|
|
16240
|
+
label: this.label,
|
|
16241
|
+
values: value,
|
|
16242
|
+
compact: !vertical,
|
|
16243
|
+
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16244
|
+
sizeToContent: !inModal && !vertical,
|
|
16245
|
+
onSelect: (options) => {
|
|
16246
|
+
const values = options[filterBy].values;
|
|
16247
|
+
setValue(values.length === 0 ? void 0 : values);
|
|
16248
|
+
},
|
|
16249
|
+
nothingSelectedText: nothingSelectedText ?? "All",
|
|
16250
|
+
...this.testId(tid)
|
|
16251
|
+
}
|
|
16252
|
+
);
|
|
16156
16253
|
}
|
|
16157
16254
|
};
|
|
16158
|
-
function useBeamContext() {
|
|
16159
|
-
return (0, import_react93.useContext)(BeamContext);
|
|
16160
|
-
}
|
|
16161
16255
|
|
|
16162
|
-
// src/components/
|
|
16163
|
-
var import_react94 = require("react");
|
|
16164
|
-
var import_react_aria45 = require("react-aria");
|
|
16165
|
-
var import_react_stately17 = require("react-stately");
|
|
16256
|
+
// src/components/Filters/BooleanFilter.tsx
|
|
16166
16257
|
var import_jsx_runtime129 = require("@emotion/react/jsx-runtime");
|
|
16167
|
-
function
|
|
16168
|
-
|
|
16169
|
-
const state = (0, import_react_stately17.useMenuTriggerState)({ isOpen: defaultOpen });
|
|
16170
|
-
const buttonRef = (0, import_react94.useRef)(null);
|
|
16171
|
-
const { menuTriggerProps, menuProps } = (0, import_react_aria45.useMenuTrigger)({ isDisabled: !!disabled }, state, buttonRef);
|
|
16172
|
-
const tid = useTestIds(
|
|
16173
|
-
props,
|
|
16174
|
-
isTextButton(trigger) ? defaultTestId(labelOr(trigger, "buttonDatePicker")) : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
|
|
16175
|
-
);
|
|
16176
|
-
return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(OverlayTrigger, { ...props, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(DatePickerOverlay, { overlayProps: menuProps, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
|
|
16177
|
-
DatePicker,
|
|
16178
|
-
{
|
|
16179
|
-
...datePickerProps,
|
|
16180
|
-
onSelect: (d) => {
|
|
16181
|
-
onSelect(d);
|
|
16182
|
-
state.close();
|
|
16183
|
-
},
|
|
16184
|
-
...tid.datePicker
|
|
16185
|
-
}
|
|
16186
|
-
) }) });
|
|
16187
|
-
}
|
|
16188
|
-
|
|
16189
|
-
// src/components/ButtonGroup.tsx
|
|
16190
|
-
var import_react95 = require("react");
|
|
16191
|
-
var import_react_aria46 = require("react-aria");
|
|
16192
|
-
var import_jsx_runtime130 = (
|
|
16193
|
-
// Disable the button if the ButtonGroup is disabled or if the current button is disabled.
|
|
16194
|
-
require("@emotion/react/jsx-runtime")
|
|
16195
|
-
);
|
|
16196
|
-
function ButtonGroup(props) {
|
|
16197
|
-
const { buttons, disabled = false, size = "sm" } = props;
|
|
16198
|
-
const tid = useTestIds(props, "buttonGroup");
|
|
16199
|
-
return (
|
|
16200
|
-
// Adding `line-height: 0` prevent inheriting line-heights that might throw off sizing within the button group.
|
|
16201
|
-
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { ...tid, css: Css.df.lh(0).add({ ...sizeStyles2[size] }).$, children: buttons.map(({ disabled: buttonDisabled, ...buttonProps }, i) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(GroupButton, { ...buttonProps, disabled: disabled || buttonDisabled, size, ...tid }, i)) })
|
|
16202
|
-
);
|
|
16258
|
+
function booleanFilter(props) {
|
|
16259
|
+
return (key) => new BooleanFilter(key, props);
|
|
16203
16260
|
}
|
|
16204
|
-
|
|
16205
|
-
|
|
16206
|
-
|
|
16207
|
-
|
|
16208
|
-
|
|
16209
|
-
const { isFocusVisible, focusProps } = (0, import_react_aria46.useFocusRing)();
|
|
16210
|
-
const { hoverProps, isHovered } = (0, import_react_aria46.useHover)(ariaProps);
|
|
16211
|
-
const tid = useTestIds(props);
|
|
16212
|
-
return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("span", { css: getButtonStyles2(), children: maybeTooltip({
|
|
16213
|
-
title: resolveTooltip(disabled, tooltip),
|
|
16214
|
-
placement: "top",
|
|
16215
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
|
|
16216
|
-
"button",
|
|
16261
|
+
var BooleanFilter = class extends BaseFilter {
|
|
16262
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16263
|
+
const { options = defaultBooleanOptions, label, defaultValue, ...props } = this.props;
|
|
16264
|
+
return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
|
|
16265
|
+
SelectField,
|
|
16217
16266
|
{
|
|
16218
|
-
|
|
16219
|
-
|
|
16220
|
-
|
|
16221
|
-
|
|
16222
|
-
|
|
16223
|
-
|
|
16224
|
-
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
|
|
16228
|
-
|
|
16267
|
+
...props,
|
|
16268
|
+
compact: !vertical,
|
|
16269
|
+
label: this.label,
|
|
16270
|
+
value: String(value),
|
|
16271
|
+
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16272
|
+
sizeToContent: !inModal && !vertical,
|
|
16273
|
+
options,
|
|
16274
|
+
getOptionValue: (o) => String(o[0]),
|
|
16275
|
+
getOptionLabel: (o) => o[1],
|
|
16276
|
+
onSelect: (value2) => {
|
|
16277
|
+
const parsedValue = value2 === "undefined" ? void 0 : value2 === "true";
|
|
16278
|
+
setValue(parsedValue);
|
|
16229
16279
|
},
|
|
16230
|
-
...tid
|
|
16231
|
-
children: [
|
|
16232
|
-
icon && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Icon, { xss: Css.if(!!text).mrPx(4).$, icon, color: disabled ? void 0 : iconColor, inc: iconInc }),
|
|
16233
|
-
text
|
|
16234
|
-
]
|
|
16280
|
+
...this.testId(tid)
|
|
16235
16281
|
}
|
|
16236
|
-
)
|
|
16237
|
-
}
|
|
16238
|
-
}
|
|
16239
|
-
var pressedStyles2 = Css.bgGray200.$;
|
|
16240
|
-
var activeStyles3 = Css.bgGray300.$;
|
|
16241
|
-
var hoverStyles3 = Css.bgGray100.$;
|
|
16242
|
-
var defaultFocusRingStyles2 = Css.relative.z2.bshFocus.$;
|
|
16243
|
-
function getButtonStyles2() {
|
|
16244
|
-
return {
|
|
16245
|
-
...Css.z1.bgWhite.bcGray300.bw1.ba.gray900.br0.oh.$,
|
|
16246
|
-
// Our first button should have a rounded left border
|
|
16247
|
-
"&:first-of-type": Css.add("borderRadius", "4px 0 0 4px").$,
|
|
16248
|
-
// Our last button should have a rounded right border
|
|
16249
|
-
"&:last-of-type": Css.add("borderRadius", "0 4px 4px 0").$,
|
|
16250
|
-
// Nudge buttons one pixel to the left so they visually share a border
|
|
16251
|
-
"&:not(:first-of-type)": Css.mlPx(-1).$
|
|
16252
|
-
};
|
|
16253
|
-
}
|
|
16254
|
-
var sizeStyles2 = {
|
|
16255
|
-
xs: Css.hPx(28).$,
|
|
16256
|
-
sm: Css.hPx(32).$,
|
|
16257
|
-
md: Css.hPx(40).$
|
|
16282
|
+
);
|
|
16283
|
+
}
|
|
16258
16284
|
};
|
|
16259
|
-
var
|
|
16260
|
-
|
|
16261
|
-
|
|
16262
|
-
|
|
16285
|
+
var defaultBooleanOptions = [
|
|
16286
|
+
[void 0, "Any"],
|
|
16287
|
+
[true, "Yes"],
|
|
16288
|
+
[false, "No"]
|
|
16289
|
+
];
|
|
16290
|
+
|
|
16291
|
+
// src/components/Filters/CheckboxFilter.tsx
|
|
16292
|
+
var import_jsx_runtime130 = require("@emotion/react/jsx-runtime");
|
|
16293
|
+
function checkboxFilter(props) {
|
|
16294
|
+
return (key) => new CheckboxFilter(key, {
|
|
16295
|
+
// If the user has set the offValue, that should be the default b/c we're only a two-state
|
|
16296
|
+
defaultValue: props.offValue,
|
|
16297
|
+
...props
|
|
16298
|
+
});
|
|
16299
|
+
}
|
|
16300
|
+
var CheckboxFilter = class extends BaseFilter {
|
|
16301
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16302
|
+
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
16303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
16304
|
+
Checkbox,
|
|
16305
|
+
{
|
|
16306
|
+
...props,
|
|
16307
|
+
selected: value === void 0 ? false : value === onValue,
|
|
16308
|
+
label: this.label,
|
|
16309
|
+
onChange: (on) => {
|
|
16310
|
+
setValue(on ? onValue : offValue);
|
|
16311
|
+
},
|
|
16312
|
+
...this.testId(tid)
|
|
16313
|
+
}
|
|
16314
|
+
);
|
|
16315
|
+
}
|
|
16316
|
+
get hideLabelInModal() {
|
|
16317
|
+
return true;
|
|
16318
|
+
}
|
|
16263
16319
|
};
|
|
16264
16320
|
|
|
16265
|
-
// src/components/
|
|
16266
|
-
var
|
|
16267
|
-
|
|
16268
|
-
|
|
16321
|
+
// src/components/Filters/FilterModal.tsx
|
|
16322
|
+
var import_react90 = require("react");
|
|
16323
|
+
|
|
16324
|
+
// src/components/Modal/OpenModal.tsx
|
|
16325
|
+
var import_react89 = require("react");
|
|
16269
16326
|
var import_jsx_runtime131 = require("@emotion/react/jsx-runtime");
|
|
16270
|
-
function
|
|
16271
|
-
const {
|
|
16272
|
-
|
|
16273
|
-
|
|
16274
|
-
|
|
16275
|
-
|
|
16276
|
-
}
|
|
16277
|
-
const state = (0, import_react_stately18.useMenuTriggerState)({ isOpen: defaultOpen });
|
|
16278
|
-
const buttonRef = (0, import_react96.useRef)(null);
|
|
16279
|
-
const { menuTriggerProps, menuProps } = (0, import_react_aria47.useMenuTrigger)({ isDisabled: !!disabled }, state, buttonRef);
|
|
16280
|
-
const tid = useTestIds(
|
|
16281
|
-
props,
|
|
16282
|
-
isTextButton(trigger) ? labelOr(trigger, "buttonMenu") : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
|
|
16283
|
-
);
|
|
16284
|
-
return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
16285
|
-
OverlayTrigger,
|
|
16286
|
-
{
|
|
16287
|
-
...props,
|
|
16288
|
-
menuTriggerProps,
|
|
16289
|
-
state,
|
|
16290
|
-
buttonRef,
|
|
16291
|
-
...tid,
|
|
16292
|
-
contrast,
|
|
16293
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
16294
|
-
Menu,
|
|
16295
|
-
{
|
|
16296
|
-
ariaMenuProps: menuProps,
|
|
16297
|
-
onClose: () => state.close(),
|
|
16298
|
-
items,
|
|
16299
|
-
persistentItems,
|
|
16300
|
-
searchable,
|
|
16301
|
-
contrast,
|
|
16302
|
-
selectedItem,
|
|
16303
|
-
onChange,
|
|
16304
|
-
...tid
|
|
16305
|
-
}
|
|
16306
|
-
)
|
|
16327
|
+
function OpenModal(props) {
|
|
16328
|
+
const { openModal } = useModal();
|
|
16329
|
+
const { size, children, keepOpen } = props;
|
|
16330
|
+
(0, import_react89.useEffect)(() => {
|
|
16331
|
+
if (!keepOpen) {
|
|
16332
|
+
openModal({ size, content: children });
|
|
16307
16333
|
}
|
|
16308
|
-
);
|
|
16309
|
-
|
|
16310
|
-
|
|
16311
|
-
|
|
16334
|
+
}, [keepOpen, openModal, size, children]);
|
|
16335
|
+
if (keepOpen) {
|
|
16336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Modal, { size, content: children });
|
|
16337
|
+
} else {
|
|
16338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { children: "dummy content" });
|
|
16339
|
+
}
|
|
16312
16340
|
}
|
|
16313
16341
|
|
|
16314
|
-
// src/components/
|
|
16315
|
-
var import_react98 = require("react");
|
|
16316
|
-
var import_react_aria48 = require("react-aria");
|
|
16317
|
-
|
|
16318
|
-
// src/components/Tag.tsx
|
|
16319
|
-
var import_utils107 = require("@react-aria/utils");
|
|
16320
|
-
var import_react97 = require("react");
|
|
16342
|
+
// src/components/Filters/FilterModal.tsx
|
|
16321
16343
|
var import_jsx_runtime132 = require("@emotion/react/jsx-runtime");
|
|
16322
|
-
function
|
|
16323
|
-
const {
|
|
16324
|
-
const
|
|
16325
|
-
const
|
|
16326
|
-
const [
|
|
16327
|
-
|
|
16328
|
-
|
|
16329
|
-
|
|
16330
|
-
|
|
16331
|
-
|
|
16332
|
-
|
|
16333
|
-
|
|
16334
|
-
|
|
16335
|
-
|
|
16336
|
-
|
|
16337
|
-
|
|
16338
|
-
|
|
16339
|
-
|
|
16340
|
-
|
|
16344
|
+
function FilterModal(props) {
|
|
16345
|
+
const { filter, filters, onApply } = props;
|
|
16346
|
+
const testId = useTestIds(props, filterTestIdPrefix);
|
|
16347
|
+
const { closeModal } = useModal();
|
|
16348
|
+
const [modalFilter, setModalFilter] = (0, import_react90.useState)(filter);
|
|
16349
|
+
return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
|
|
16350
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)(ModalHeader, { children: "More Filters" }),
|
|
16351
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)(ModalBody, { children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("div", { css: Css.df.fdc.$, children: safeEntries(filters).map(([key, f]) => /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(ModalFilterItem, { label: f.hideLabelInModal ? void 0 : f.label, children: f.render(
|
|
16352
|
+
modalFilter[key],
|
|
16353
|
+
(value) => setModalFilter(updateFilter(modalFilter, key, value)),
|
|
16354
|
+
testId,
|
|
16355
|
+
true,
|
|
16356
|
+
false
|
|
16357
|
+
) }, key)) }) }),
|
|
16358
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(ModalFooter, { xss: Css.jcsb.$, children: [
|
|
16359
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
|
|
16360
|
+
Button,
|
|
16361
|
+
{
|
|
16362
|
+
label: "Clear",
|
|
16363
|
+
variant: "tertiary",
|
|
16364
|
+
disabled: safeKeys(filters).filter((fk) => modalFilter[fk] !== void 0).length === 0,
|
|
16365
|
+
onClick: () => (
|
|
16366
|
+
// Only remove the filters keys that exist in the modal.
|
|
16367
|
+
setModalFilter(safeKeys(filters).reduce((acc, fk) => omitKey(fk, acc), modalFilter))
|
|
16368
|
+
),
|
|
16369
|
+
...testId.modalClear
|
|
16370
|
+
}
|
|
16371
|
+
),
|
|
16372
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("div", { css: Css.df.gap1.$, children: [
|
|
16373
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)(Button, { label: "Cancel", variant: "tertiary", onClick: closeModal, ...testId.modalClose }),
|
|
16374
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
|
|
16375
|
+
Button,
|
|
16376
|
+
{
|
|
16377
|
+
label: "Apply",
|
|
16378
|
+
onClick: () => {
|
|
16379
|
+
onApply(modalFilter);
|
|
16380
|
+
closeModal();
|
|
16381
|
+
},
|
|
16382
|
+
...testId.modalApply
|
|
16383
|
+
}
|
|
16384
|
+
)
|
|
16385
|
+
] })
|
|
16341
16386
|
] })
|
|
16342
|
-
});
|
|
16387
|
+
] });
|
|
16343
16388
|
}
|
|
16344
|
-
function
|
|
16345
|
-
|
|
16346
|
-
|
|
16347
|
-
|
|
16348
|
-
|
|
16349
|
-
return Css.bgYellow200.$;
|
|
16350
|
-
case "warning":
|
|
16351
|
-
return Css.bgRed200.$;
|
|
16352
|
-
case "success":
|
|
16353
|
-
return Css.bgGreen200.$;
|
|
16354
|
-
default:
|
|
16355
|
-
return Css.bgGray200.$;
|
|
16356
|
-
}
|
|
16389
|
+
function ModalFilterItem({ label, children }) {
|
|
16390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("div", { css: Css.mb4.if(!label).bt.bcGray200.$, children: [
|
|
16391
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("h2", { css: Css.baseMd.mb2.$, children: label }),
|
|
16392
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)("div", { css: Css.if(!label).pt3.$, children })
|
|
16393
|
+
] });
|
|
16357
16394
|
}
|
|
16358
16395
|
|
|
16359
|
-
// src/components/
|
|
16396
|
+
// src/components/Filters/ToggleFilter.tsx
|
|
16360
16397
|
var import_jsx_runtime133 = require("@emotion/react/jsx-runtime");
|
|
16361
|
-
function
|
|
16362
|
-
|
|
16363
|
-
|
|
16364
|
-
|
|
16365
|
-
|
|
16366
|
-
|
|
16367
|
-
|
|
16368
|
-
|
|
16369
|
-
|
|
16370
|
-
|
|
16371
|
-
|
|
16372
|
-
|
|
16373
|
-
} = props;
|
|
16374
|
-
const tid = useTestIds(props, "card");
|
|
16375
|
-
const { hoverProps, isHovered } = (0, import_react_aria48.useHover)({ isDisabled });
|
|
16376
|
-
const isList = type === "list";
|
|
16377
|
-
const imgHeight = isList ? 96 : bordered ? 224 : 256;
|
|
16378
|
-
const styles = (0, import_react98.useMemo)(
|
|
16379
|
-
() => ({
|
|
16380
|
-
...baseStyles4(type),
|
|
16381
|
-
...isList && listStyles,
|
|
16382
|
-
...bordered && borderedStyles,
|
|
16383
|
-
...isHovered && cardHoverStyles,
|
|
16384
|
-
...isDisabled && disabledStyles3
|
|
16385
|
-
}),
|
|
16386
|
-
[isDisabled, isHovered, bordered, type, isList]
|
|
16387
|
-
);
|
|
16388
|
-
return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { css: styles, ...hoverProps, ...tid, children: [
|
|
16389
|
-
/* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
|
|
16390
|
-
"div",
|
|
16398
|
+
function toggleFilter(props) {
|
|
16399
|
+
return (key) => new ToggleFilter(key, {
|
|
16400
|
+
// If the user has set the offValue, that should be the default b/c we're only a two-state
|
|
16401
|
+
defaultValue: props.offValue,
|
|
16402
|
+
...props
|
|
16403
|
+
});
|
|
16404
|
+
}
|
|
16405
|
+
var ToggleFilter = class extends BaseFilter {
|
|
16406
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16407
|
+
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
16408
|
+
return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
|
|
16409
|
+
Switch,
|
|
16391
16410
|
{
|
|
16392
|
-
|
|
16393
|
-
|
|
16394
|
-
|
|
16411
|
+
...props,
|
|
16412
|
+
selected: value === void 0 ? false : value === onValue,
|
|
16413
|
+
label: this.label,
|
|
16414
|
+
labelStyle: inModal || vertical ? "filter" : "inline",
|
|
16415
|
+
onChange: (on) => {
|
|
16416
|
+
setValue(on ? onValue : offValue);
|
|
16395
16417
|
},
|
|
16396
|
-
|
|
16397
|
-
}
|
|
16398
|
-
),
|
|
16399
|
-
isHovered && buttonMenuItems && /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { css: Css.absolute.right1.top1.if(bordered && !isList).right3.top3.$, children: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
|
|
16400
|
-
ButtonMenu,
|
|
16401
|
-
{
|
|
16402
|
-
trigger: { icon: "verticalDots", color: isList ? "rgba(100, 100, 100, 1)" /* Gray700 */ : "rgba(255,255,255,1)" /* White */ },
|
|
16403
|
-
items: buttonMenuItems
|
|
16418
|
+
...this.testId(tid)
|
|
16404
16419
|
}
|
|
16405
|
-
)
|
|
16406
|
-
|
|
16407
|
-
|
|
16408
|
-
|
|
16409
|
-
|
|
16410
|
-
|
|
16411
|
-
|
|
16412
|
-
|
|
16413
|
-
|
|
16414
|
-
|
|
16415
|
-
|
|
16416
|
-
|
|
16417
|
-
|
|
16418
|
-
|
|
16419
|
-
|
|
16420
|
-
var
|
|
16421
|
-
|
|
16422
|
-
|
|
16423
|
-
|
|
16424
|
-
// src/components/Copy.tsx
|
|
16420
|
+
);
|
|
16421
|
+
}
|
|
16422
|
+
get hideLabelInModal() {
|
|
16423
|
+
return true;
|
|
16424
|
+
}
|
|
16425
|
+
};
|
|
16426
|
+
|
|
16427
|
+
// src/components/Filters/utils.tsx
|
|
16428
|
+
function updateFilter(currentFilter, key, value) {
|
|
16429
|
+
if (value === void 0) {
|
|
16430
|
+
return omitKey(key, currentFilter);
|
|
16431
|
+
} else {
|
|
16432
|
+
return { ...currentFilter, [key]: value };
|
|
16433
|
+
}
|
|
16434
|
+
}
|
|
16435
|
+
var filterTestIdPrefix = "filter";
|
|
16436
|
+
|
|
16437
|
+
// src/components/Filters/Filters.tsx
|
|
16425
16438
|
var import_jsx_runtime134 = require("@emotion/react/jsx-runtime");
|
|
16426
|
-
function
|
|
16427
|
-
|
|
16439
|
+
function Filters(props) {
|
|
16440
|
+
const { filter, onChange, filterDefs, groupBy, vertical = false, numberOfInlineFilters = groupBy ? 3 : 4 } = props;
|
|
16441
|
+
const testId = useTestIds(props, filterTestIdPrefix);
|
|
16442
|
+
const { openModal } = useModal();
|
|
16443
|
+
const [pageFilters, modalFilters] = (0, import_react91.useMemo)(() => {
|
|
16444
|
+
const impls = safeEntries(filterDefs).map(([key, fn]) => [key, fn(key)]);
|
|
16445
|
+
if (!vertical && impls.length > numberOfInlineFilters) {
|
|
16446
|
+
return [
|
|
16447
|
+
Object.fromEntries(impls.slice(0, numberOfInlineFilters - 1)),
|
|
16448
|
+
Object.fromEntries(impls.slice(numberOfInlineFilters - 1))
|
|
16449
|
+
];
|
|
16450
|
+
}
|
|
16451
|
+
return [Object.fromEntries(impls), {}];
|
|
16452
|
+
}, [numberOfInlineFilters, vertical, filterDefs]);
|
|
16453
|
+
const numModalFilters = safeKeys(modalFilters).filter((fk) => filter[fk] !== void 0).length;
|
|
16454
|
+
const maybeGroupByField = groupBy ? /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
|
|
16455
|
+
SelectField,
|
|
16456
|
+
{
|
|
16457
|
+
label: "Group by",
|
|
16458
|
+
compact: !vertical,
|
|
16459
|
+
labelStyle: !vertical ? "inline" : "above",
|
|
16460
|
+
sizeToContent: !vertical,
|
|
16461
|
+
options: groupBy.options,
|
|
16462
|
+
getOptionValue: (o) => o.id,
|
|
16463
|
+
getOptionLabel: (o) => o.name,
|
|
16464
|
+
value: groupBy.value,
|
|
16465
|
+
onSelect: (g) => g && groupBy.setValue(g)
|
|
16466
|
+
}
|
|
16467
|
+
) }) : null;
|
|
16468
|
+
return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(
|
|
16428
16469
|
"div",
|
|
16429
16470
|
{
|
|
16430
16471
|
css: {
|
|
16431
|
-
...Css.
|
|
16432
|
-
"& > p": Css.my2.$
|
|
16472
|
+
...vertical ? Css.df.fdc.gap2.$ : Css.df.aic.gap1.$
|
|
16433
16473
|
},
|
|
16434
|
-
|
|
16474
|
+
...testId,
|
|
16475
|
+
children: [
|
|
16476
|
+
maybeGroupByField,
|
|
16477
|
+
safeEntries(pageFilters).map(([key, f]) => /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { children: f.render(filter[key], (value) => onChange(updateFilter(filter, key, value)), testId, false, vertical) }, key)),
|
|
16478
|
+
Object.keys(modalFilters).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
|
|
16479
|
+
Button,
|
|
16480
|
+
{
|
|
16481
|
+
label: "More Filters",
|
|
16482
|
+
endAdornment: numModalFilters > 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("span", { css: Css.wPx(16).hPx(16).fs0.br100.bgBlue700.white.tinySb.df.aic.jcc.$, children: numModalFilters }),
|
|
16483
|
+
variant: "secondary",
|
|
16484
|
+
onClick: () => openModal({
|
|
16485
|
+
// Spreading `props` to pass along `data-testid`
|
|
16486
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(FilterModal, { ...props, filter, onApply: onChange, filters: modalFilters })
|
|
16487
|
+
}),
|
|
16488
|
+
...testId.moreFiltersBtn
|
|
16489
|
+
}
|
|
16490
|
+
),
|
|
16491
|
+
Object.keys(filter).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(Button, { label: "Clear", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn }) })
|
|
16492
|
+
]
|
|
16435
16493
|
}
|
|
16436
16494
|
);
|
|
16437
16495
|
}
|
|
16496
|
+
var _Filters = (0, import_react91.memo)(Filters);
|
|
16438
16497
|
|
|
16439
|
-
// src/components/
|
|
16440
|
-
var
|
|
16441
|
-
|
|
16498
|
+
// src/components/Table/TableActions.tsx
|
|
16499
|
+
var import_jsx_runtime135 = require("@emotion/react/jsx-runtime");
|
|
16500
|
+
function TableActions(props) {
|
|
16501
|
+
const { xss, children, onlyLeft, onlyRight } = props;
|
|
16502
|
+
const alignmentStyles = onlyLeft ? Css.jcfs.$ : onlyRight ? Css.jcfe.$ : Css.jcsb.$;
|
|
16503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { css: { ...Css.df.aic.pb2.gap1.$, ...xss, ...alignmentStyles }, children });
|
|
16504
|
+
}
|
|
16442
16505
|
|
|
16443
|
-
// src/components/
|
|
16444
|
-
var
|
|
16445
|
-
var
|
|
16446
|
-
|
|
16447
|
-
|
|
16506
|
+
// src/components/Layout/GridTableLayout/GridTableLayout.tsx
|
|
16507
|
+
var import_use_debounce6 = require("use-debounce");
|
|
16508
|
+
var import_use_query_params3 = require("use-query-params");
|
|
16509
|
+
|
|
16510
|
+
// src/components/Layout/ScrollableContent.tsx
|
|
16511
|
+
var import_react92 = require("react");
|
|
16512
|
+
var import_react_dom4 = require("react-dom");
|
|
16513
|
+
var import_jsx_runtime136 = require("@emotion/react/jsx-runtime");
|
|
16514
|
+
function ScrollableContent(props) {
|
|
16515
|
+
const { children, virtualized = false, omitBottomPadding, bgColor } = props;
|
|
16516
|
+
const { scrollableEl, setPortalTick, pl, pr } = useScrollableParent();
|
|
16517
|
+
(0, import_react92.useEffect)(() => {
|
|
16518
|
+
setPortalTick((prev) => prev + 1);
|
|
16519
|
+
return () => setPortalTick((prev) => prev + 1);
|
|
16520
|
+
}, [setPortalTick]);
|
|
16521
|
+
if (!scrollableEl) {
|
|
16522
|
+
return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_jsx_runtime136.Fragment, { children });
|
|
16448
16523
|
}
|
|
16449
|
-
|
|
16450
|
-
|
|
16451
|
-
|
|
16524
|
+
return (0, import_react_dom4.createPortal)(
|
|
16525
|
+
/* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
|
|
16526
|
+
"div",
|
|
16527
|
+
{
|
|
16528
|
+
css: {
|
|
16529
|
+
...Css.h100.pr(pr).pl(pl).if(virtualized).pr0.$,
|
|
16530
|
+
...bgColor && Css.bgColor(bgColor).$,
|
|
16531
|
+
...!omitBottomPadding && !virtualized && scrollContainerBottomPadding
|
|
16532
|
+
},
|
|
16533
|
+
children
|
|
16534
|
+
}
|
|
16535
|
+
),
|
|
16536
|
+
scrollableEl
|
|
16537
|
+
);
|
|
16452
16538
|
}
|
|
16453
16539
|
|
|
16454
|
-
// src/components/
|
|
16455
|
-
var
|
|
16456
|
-
|
|
16457
|
-
|
|
16458
|
-
|
|
16459
|
-
|
|
16460
|
-
|
|
16461
|
-
|
|
16462
|
-
|
|
16463
|
-
|
|
16464
|
-
|
|
16465
|
-
|
|
16466
|
-
|
|
16467
|
-
|
|
16468
|
-
const
|
|
16469
|
-
|
|
16470
|
-
|
|
16471
|
-
|
|
16472
|
-
|
|
16473
|
-
|
|
16474
|
-
|
|
16475
|
-
|
|
16476
|
-
|
|
16477
|
-
|
|
16478
|
-
|
|
16479
|
-
|
|
16480
|
-
|
|
16481
|
-
|
|
16482
|
-
|
|
16483
|
-
|
|
16484
|
-
|
|
16485
|
-
|
|
16486
|
-
|
|
16487
|
-
|
|
16488
|
-
|
|
16489
|
-
|
|
16490
|
-
|
|
16491
|
-
|
|
16492
|
-
|
|
16493
|
-
|
|
16494
|
-
|
|
16495
|
-
|
|
16496
|
-
|
|
16497
|
-
|
|
16498
|
-
|
|
16499
|
-
|
|
16500
|
-
|
|
16501
|
-
|
|
16502
|
-
|
|
16540
|
+
// src/components/Layout/GridTableLayout/QueryTable.tsx
|
|
16541
|
+
var import_react93 = require("react");
|
|
16542
|
+
|
|
16543
|
+
// src/components/LoadingSkeleton.tsx
|
|
16544
|
+
var import_jsx_runtime137 = require("@emotion/react/jsx-runtime");
|
|
16545
|
+
function LoadingSkeleton({
|
|
16546
|
+
rows = 1,
|
|
16547
|
+
columns = 1,
|
|
16548
|
+
size = "md",
|
|
16549
|
+
randomizeWidths = false,
|
|
16550
|
+
contrast = false
|
|
16551
|
+
}) {
|
|
16552
|
+
const cellArray = [...Array(columns)];
|
|
16553
|
+
const rowArray = [...Array(rows)];
|
|
16554
|
+
const rowHeight = sizeToPixels2[size];
|
|
16555
|
+
const rowCells = (rowNumber) => {
|
|
16556
|
+
const flexGrowForCell = randomizeWidths ? getRandomizedFlexBasisByRowIndex(rowNumber) : 1;
|
|
16557
|
+
return cellArray.map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
|
|
16558
|
+
"div",
|
|
16559
|
+
{
|
|
16560
|
+
css: Css.br4.add("animation", "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite").add("flexGrow", flexGrowForCell).bgGray300.if(contrast).bgGray700.$
|
|
16561
|
+
},
|
|
16562
|
+
`row-${rowNumber}-cell-${i}`
|
|
16563
|
+
));
|
|
16564
|
+
};
|
|
16565
|
+
return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { "aria-label": "Loading", children: rowArray.map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { css: Css.df.gap1.mb1.hPx(rowHeight).$, children: rowCells(i) }, `row-${i}`)) });
|
|
16566
|
+
}
|
|
16567
|
+
function getRandomizedFlexBasisByRowIndex(rowIndex) {
|
|
16568
|
+
const randomizedFlexBasisValues = [0.65, 0.8, 0.75, 0.9, 0.8, 0.85, 0.8, 0.95];
|
|
16569
|
+
const valueIndex = rowIndex % randomizedFlexBasisValues.length;
|
|
16570
|
+
return randomizedFlexBasisValues[valueIndex];
|
|
16571
|
+
}
|
|
16572
|
+
var sizeToPixels2 = {
|
|
16573
|
+
sm: 16,
|
|
16574
|
+
md: 24,
|
|
16575
|
+
lg: 32
|
|
16576
|
+
};
|
|
16577
|
+
|
|
16578
|
+
// src/components/Layout/GridTableLayout/QueryTable.tsx
|
|
16579
|
+
var import_jsx_runtime138 = require("@emotion/react/jsx-runtime");
|
|
16580
|
+
function QueryTable(props) {
|
|
16581
|
+
const { emptyFallback, query, createRows, getPageInfo, columns, keepHeaderWhenLoading, ...others } = props;
|
|
16582
|
+
const data = query.loading || query.error ? void 0 : query.data;
|
|
16583
|
+
const rows = (0, import_react93.useMemo)(() => createRows(data), [createRows, data]);
|
|
16584
|
+
const hasNextPage = data && getPageInfo && getPageInfo(data).hasNextPage;
|
|
16585
|
+
const infoMessage = hasNextPage ? "Too many rows" : void 0;
|
|
16586
|
+
const fallbackMessage = query.loading ? "Loading\u2026" : query.error ? `Error: ${query.error.message}` : emptyFallback;
|
|
16587
|
+
const headers = rows.filter((row) => row.kind === "header");
|
|
16588
|
+
return query.loading ? /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { children: keepHeaderWhenLoading ? /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(GridTable, { ...{ columns, ...others }, rows: headers, fallbackMessage }) : /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(LoadingTable, { columns: columns.length }) }) : /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(GridTable, { ...{ rows, columns, fallbackMessage, infoMessage, ...others } });
|
|
16589
|
+
}
|
|
16590
|
+
function LoadingTable(props) {
|
|
16591
|
+
const { columns } = props;
|
|
16592
|
+
return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_jsx_runtime138.Fragment, { children: [
|
|
16593
|
+
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)(LoadingSkeleton, { rows: 1, columns: 1 }),
|
|
16594
|
+
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)(LoadingSkeleton, { rows: 5, columns: columns ?? 5 })
|
|
16595
|
+
] });
|
|
16596
|
+
}
|
|
16597
|
+
|
|
16598
|
+
// src/components/Layout/GridTableLayout/GridTableLayout.tsx
|
|
16599
|
+
var import_jsx_runtime139 = require("@emotion/react/jsx-runtime");
|
|
16600
|
+
function isGridTableProps(props) {
|
|
16601
|
+
return "rows" in props;
|
|
16602
|
+
}
|
|
16603
|
+
function GridTableLayoutComponent(props) {
|
|
16604
|
+
const { pageTitle, breadcrumb, tableProps, layoutState, primaryAction, secondaryAction, tertiaryAction } = props;
|
|
16605
|
+
const clientSearch = layoutState?.search === "client" ? layoutState.searchString : void 0;
|
|
16606
|
+
const showTableActions = layoutState?.filterDefs || layoutState?.search;
|
|
16607
|
+
const isVirtualized = tableProps.as === "virtual";
|
|
16608
|
+
const breakpoints = useBreakpoint();
|
|
16609
|
+
return /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(import_jsx_runtime139.Fragment, { children: [
|
|
16610
|
+
/* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
|
|
16611
|
+
Header2,
|
|
16612
|
+
{
|
|
16613
|
+
pageTitle,
|
|
16614
|
+
breadcrumb,
|
|
16615
|
+
primaryAction,
|
|
16616
|
+
secondaryAction,
|
|
16617
|
+
tertiaryAction
|
|
16503
16618
|
}
|
|
16504
|
-
|
|
16505
|
-
|
|
16506
|
-
|
|
16507
|
-
|
|
16508
|
-
|
|
16509
|
-
|
|
16510
|
-
|
|
16511
|
-
|
|
16512
|
-
|
|
16513
|
-
|
|
16514
|
-
|
|
16515
|
-
const x = clientX - transformFrom.current.x - left;
|
|
16516
|
-
const y = clientY - transformFrom.current.y - top;
|
|
16517
|
-
dragEl.current.style.transform = `translate(${x}px, ${y}px)`;
|
|
16518
|
-
const maybeTarget = "touches" in e ? document.elementFromPoint(clientX, clientY) : e.target;
|
|
16519
|
-
const target = maybeTarget instanceof HTMLElement ? maybeTarget?.closest(`[${gridItemIdKey}]`) : void 0;
|
|
16520
|
-
if (target instanceof HTMLElement && target !== cloneEl.current && target !== dragEl.current) {
|
|
16521
|
-
const targetPos = target.getBoundingClientRect();
|
|
16522
|
-
const isHalfwayPassedTarget = (clientY - targetPos.top) / (targetPos.bottom - targetPos.top) > 0.5 || (clientX - targetPos.left) / (targetPos.right - targetPos.left) > 0.5;
|
|
16523
|
-
const shouldInsert = isHalfwayPassedTarget && target.nextSibling !== cloneEl.current || !isHalfwayPassedTarget && target.previousSibling !== cloneEl.current;
|
|
16524
|
-
if (shouldInsert) {
|
|
16525
|
-
gridEl.current.insertBefore(cloneEl.current, isHalfwayPassedTarget ? target.nextSibling : target);
|
|
16619
|
+
),
|
|
16620
|
+
showTableActions && /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(TableActions, { onlyRight: !layoutState?.search, children: [
|
|
16621
|
+
layoutState?.search && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(SearchBox, { onSearch: layoutState.setSearchString }),
|
|
16622
|
+
layoutState?.filterDefs && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
|
|
16623
|
+
_Filters,
|
|
16624
|
+
{
|
|
16625
|
+
filterDefs: layoutState.filterDefs,
|
|
16626
|
+
filter: layoutState.filter,
|
|
16627
|
+
onChange: layoutState.setFilter,
|
|
16628
|
+
groupBy: layoutState.groupBy,
|
|
16629
|
+
numberOfInlineFilters: breakpoints.mdAndDown ? 2 : void 0
|
|
16526
16630
|
}
|
|
16631
|
+
)
|
|
16632
|
+
] }),
|
|
16633
|
+
/* @__PURE__ */ (0, import_jsx_runtime139.jsx)(ScrollableContent, { virtualized: isVirtualized, children: isGridTableProps(tableProps) ? /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(GridTable, { ...tableProps, filter: clientSearch, style: { allWhite: true }, stickyHeader: true }) : /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
|
|
16634
|
+
QueryTable,
|
|
16635
|
+
{
|
|
16636
|
+
...tableProps,
|
|
16637
|
+
filter: clientSearch,
|
|
16638
|
+
style: { allWhite: true },
|
|
16639
|
+
stickyHeader: true
|
|
16527
16640
|
}
|
|
16528
|
-
}
|
|
16529
|
-
}
|
|
16530
|
-
|
|
16531
|
-
|
|
16532
|
-
|
|
16533
|
-
|
|
16534
|
-
|
|
16535
|
-
|
|
16536
|
-
|
|
16537
|
-
|
|
16538
|
-
|
|
16539
|
-
|
|
16540
|
-
|
|
16541
|
-
|
|
16542
|
-
|
|
16543
|
-
|
|
16544
|
-
|
|
16545
|
-
|
|
16546
|
-
|
|
16547
|
-
|
|
16548
|
-
|
|
16549
|
-
|
|
16550
|
-
|
|
16551
|
-
|
|
16552
|
-
|
|
16553
|
-
|
|
16554
|
-
|
|
16555
|
-
|
|
16556
|
-
|
|
16557
|
-
}
|
|
16558
|
-
},
|
|
16559
|
-
|
|
16560
|
-
|
|
16561
|
-
|
|
16562
|
-
|
|
16563
|
-
|
|
16564
|
-
|
|
16565
|
-
|
|
16566
|
-
|
|
16567
|
-
|
|
16568
|
-
|
|
16569
|
-
|
|
16570
|
-
|
|
16571
|
-
|
|
16572
|
-
|
|
16573
|
-
|
|
16574
|
-
|
|
16575
|
-
|
|
16576
|
-
|
|
16577
|
-
|
|
16578
|
-
|
|
16579
|
-
|
|
16580
|
-
|
|
16581
|
-
|
|
16582
|
-
|
|
16583
|
-
|
|
16584
|
-
reorderViaKeyboard.current = true;
|
|
16585
|
-
document.addEventListener("pointerdown", cancelReorder);
|
|
16586
|
-
initReorder();
|
|
16587
|
-
return;
|
|
16588
|
-
}
|
|
16589
|
-
if (!reorderViaKeyboard.current) {
|
|
16590
|
-
return;
|
|
16591
|
-
}
|
|
16592
|
-
const isEnterKey = e.key === "Enter";
|
|
16593
|
-
const isTabKey = e.key === "Tab";
|
|
16594
|
-
if (isEnterKey || isSpaceKey || isTabKey) {
|
|
16595
|
-
if (!isTabKey) {
|
|
16596
|
-
e.preventDefault();
|
|
16597
|
-
}
|
|
16598
|
-
commitReorder();
|
|
16599
|
-
if (isEnterKey) {
|
|
16600
|
-
moveHandle.blur();
|
|
16601
|
-
}
|
|
16602
|
-
document.removeEventListener("pointerdown", cancelReorder);
|
|
16603
|
-
return;
|
|
16604
|
-
}
|
|
16605
|
-
if (e.key === "Escape") {
|
|
16606
|
-
e.preventDefault();
|
|
16607
|
-
cancelReorder();
|
|
16608
|
-
document.removeEventListener("pointerdown", cancelReorder);
|
|
16609
|
-
return;
|
|
16610
|
-
}
|
|
16611
|
-
const movingLeft = ["ArrowLeft", "ArrowUp"].includes(e.key);
|
|
16612
|
-
const movingRight = ["ArrowRight", "ArrowDown"].includes(e.key);
|
|
16613
|
-
if (movingLeft || movingRight) {
|
|
16614
|
-
e.preventDefault();
|
|
16615
|
-
const gridItems = getGridItems();
|
|
16616
|
-
const currentIndex = gridItems.map((child) => child.getAttribute(gridItemIdKey)).filter(isDefined).indexOf(dragEl.current.getAttribute(gridItemIdKey));
|
|
16617
|
-
const newIndex = movingLeft ? currentIndex - 1 : currentIndex + 2;
|
|
16618
|
-
const insertBeforeElement = gridItems[newIndex] ?? gridItems[gridItems.length - 1].nextSibling;
|
|
16619
|
-
if (movingLeft && currentIndex > 0 || movingRight && currentIndex < gridItems.length - 1) {
|
|
16620
|
-
gridEl.current.insertBefore(dragEl.current, insertBeforeElement);
|
|
16621
|
-
}
|
|
16622
|
-
moveHandle.focus();
|
|
16623
|
-
}
|
|
16624
|
-
}
|
|
16625
|
-
},
|
|
16626
|
-
[cancelReorder, commitReorder, initReorder, getGridItems]
|
|
16627
|
-
);
|
|
16628
|
-
return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DnDGridContext.Provider, { value: { dragEl, onDragHandleKeyDown }, children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
16629
|
-
"div",
|
|
16630
|
-
{
|
|
16631
|
-
ref: gridEl,
|
|
16632
|
-
css: {
|
|
16633
|
-
...Css.ctis.dg.addIn(`& .${activeGridItemClass}`, activeItemStyles ?? Css.bshModal.$).$,
|
|
16634
|
-
...gridStyles
|
|
16635
|
-
},
|
|
16636
|
-
onTouchStart: onDragStart,
|
|
16637
|
-
onMouseDown: onDragStart,
|
|
16638
|
-
onTouchEnd: onDragEnd,
|
|
16639
|
-
onMouseUp: onDragEnd,
|
|
16640
|
-
...tid,
|
|
16641
|
-
children
|
|
16641
|
+
) })
|
|
16642
|
+
] });
|
|
16643
|
+
}
|
|
16644
|
+
var GridTableLayout = import_react94.default.memo(GridTableLayoutComponent);
|
|
16645
|
+
function useGridTableLayoutState({
|
|
16646
|
+
persistedFilter,
|
|
16647
|
+
search,
|
|
16648
|
+
groupBy: maybeGroupBy
|
|
16649
|
+
}) {
|
|
16650
|
+
const filterFallback = { filterDefs: {}, storageKey: "unset-filter" };
|
|
16651
|
+
const { filter, setFilter } = usePersistedFilter(persistedFilter ?? filterFallback);
|
|
16652
|
+
const groupBy = useGroupBy(maybeGroupBy ?? { none: "none" });
|
|
16653
|
+
const [searchString, setSearchString] = (0, import_react94.useState)("");
|
|
16654
|
+
return {
|
|
16655
|
+
filter,
|
|
16656
|
+
setFilter,
|
|
16657
|
+
filterDefs: persistedFilter?.filterDefs,
|
|
16658
|
+
searchString,
|
|
16659
|
+
setSearchString,
|
|
16660
|
+
search,
|
|
16661
|
+
groupBy: maybeGroupBy ? groupBy : void 0
|
|
16662
|
+
};
|
|
16663
|
+
}
|
|
16664
|
+
function Header2(props) {
|
|
16665
|
+
const { pageTitle, breadcrumb, primaryAction, secondaryAction, tertiaryAction } = props;
|
|
16666
|
+
const tids = useTestIds(props);
|
|
16667
|
+
return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(FullBleed, { children: /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("header", { css: { ...Css.p3.mb3.mhPx(50).bgWhite.df.jcsb.aic.$ }, ...tids.header, children: [
|
|
16668
|
+
/* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { children: [
|
|
16669
|
+
breadcrumb && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(PageHeaderBreadcrumbs, { breadcrumb }),
|
|
16670
|
+
/* @__PURE__ */ (0, import_jsx_runtime139.jsx)("h1", { css: Css.xl2Sb.mt1.$, ...tids.pageTitle, children: pageTitle })
|
|
16671
|
+
] }),
|
|
16672
|
+
/* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { css: Css.df.fwr.jcfe.gap1.$, children: [
|
|
16673
|
+
tertiaryAction && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(Button, { ...tertiaryAction, variant: "tertiary" }),
|
|
16674
|
+
secondaryAction && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(Button, { ...secondaryAction, variant: "secondary" }),
|
|
16675
|
+
primaryAction && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(Button, { ...primaryAction })
|
|
16676
|
+
] })
|
|
16677
|
+
] }) });
|
|
16678
|
+
}
|
|
16679
|
+
function SearchBox({ onSearch }) {
|
|
16680
|
+
const [{ search: initialValue }, setQueryParams] = (0, import_use_query_params3.useQueryParams)({ search: import_use_query_params3.StringParam });
|
|
16681
|
+
const [value, setValue] = (0, import_react94.useState)(initialValue || "");
|
|
16682
|
+
const [debouncedSearch] = (0, import_use_debounce6.useDebounce)(value, 300);
|
|
16683
|
+
(0, import_react94.useEffect)(() => {
|
|
16684
|
+
onSearch(debouncedSearch);
|
|
16685
|
+
setQueryParams({ search: debouncedSearch || void 0 }, "replaceIn");
|
|
16686
|
+
}, [debouncedSearch, onSearch, setQueryParams]);
|
|
16687
|
+
return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { css: Css.wPx(244).$, children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
|
|
16688
|
+
TextField,
|
|
16689
|
+
{
|
|
16690
|
+
label: "Search",
|
|
16691
|
+
labelStyle: "hidden",
|
|
16692
|
+
value,
|
|
16693
|
+
onChange: (v) => setValue(v ?? ""),
|
|
16694
|
+
placeholder: "Search",
|
|
16695
|
+
clearable: true,
|
|
16696
|
+
startAdornment: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(Icon, { icon: "search", color: "rgba(100, 100, 100, 1)" /* Gray700 */ })
|
|
16642
16697
|
}
|
|
16643
16698
|
) });
|
|
16644
16699
|
}
|
|
16645
|
-
var gridItemIdKey = "dndgrid-itemid";
|
|
16646
|
-
var gridCloneKey = "dndgrid-clone";
|
|
16647
|
-
var activeGridItemClass = "dndgrid-active";
|
|
16648
16700
|
|
|
16649
|
-
// src/components/
|
|
16650
|
-
var
|
|
16651
|
-
|
|
16652
|
-
|
|
16653
|
-
|
|
16654
|
-
|
|
16655
|
-
|
|
16656
|
-
|
|
16657
|
-
const iconButtonNormal2 = Css.hPx(28).wPx(28).br8.bw2.$;
|
|
16658
|
-
const iconButtonCompact2 = Css.hPx(18).wPx(18).br4.bw1.$;
|
|
16659
|
-
return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
|
|
16660
|
-
"button",
|
|
16661
|
-
{
|
|
16662
|
-
css: {
|
|
16663
|
-
...compact ? iconButtonCompact2 : iconButtonNormal2,
|
|
16664
|
-
...Css.cursor("grab").bcTransparent.bss.bgTransparent.outline0.dif.aic.jcc.transition.if(isFocusVisible).bcBlue700.$,
|
|
16665
|
-
...isHovered && Css.bgGray200.$
|
|
16666
|
-
},
|
|
16667
|
-
...(0, import_react_aria49.mergeProps)(dragHandleProps, focusProps, hoverProps),
|
|
16668
|
-
...tid,
|
|
16669
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Icon, { icon, inc: compact ? 2 : void 0, color })
|
|
16670
|
-
}
|
|
16701
|
+
// src/components/Layout/PreventBrowserScroll.tsx
|
|
16702
|
+
var import_jsx_runtime140 = require("@emotion/react/jsx-runtime");
|
|
16703
|
+
function PreventBrowserScroll({ children }) {
|
|
16704
|
+
return (
|
|
16705
|
+
// Take over the full viewport and hide any overflown content.
|
|
16706
|
+
// Using `-webkit-fill-available`, otherwise `height: 100vh` includes the app bars in mobile Safari. See https://allthingssmitty.com/2020/05/11/css-fix-for-100vh-in-mobile-webkit/
|
|
16707
|
+
// Setting the multiple "(min|max-)height" properties is necessary, as Truss will turn this into an object and there can only be one `height` property.
|
|
16708
|
+
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)("div", { css: Css.oh.vh100.mh("-webkit-fill-available").maxh("-webkit-fill-available").$, children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)("div", { css: Css.h100.df.fdc.mh0.oa.$, children }) })
|
|
16671
16709
|
);
|
|
16672
16710
|
}
|
|
16673
16711
|
|
|
16674
|
-
// src/components/
|
|
16675
|
-
var
|
|
16676
|
-
|
|
16677
|
-
|
|
16678
|
-
|
|
16679
|
-
|
|
16680
|
-
|
|
16681
|
-
|
|
16682
|
-
|
|
16683
|
-
|
|
16684
|
-
|
|
16685
|
-
|
|
16686
|
-
|
|
16687
|
-
|
|
16688
|
-
|
|
16689
|
-
|
|
16690
|
-
|
|
16691
|
-
|
|
16692
|
-
|
|
16693
|
-
|
|
16694
|
-
}
|
|
16695
|
-
}
|
|
16696
|
-
};
|
|
16712
|
+
// src/components/Layout/RightPaneLayout/RightPaneContext.tsx
|
|
16713
|
+
var import_react95 = __toESM(require("react"), 1);
|
|
16714
|
+
var import_jsx_runtime141 = require("@emotion/react/jsx-runtime");
|
|
16715
|
+
var RightPaneContext = import_react95.default.createContext({
|
|
16716
|
+
openInPane: () => {
|
|
16717
|
+
},
|
|
16718
|
+
closePane: () => {
|
|
16719
|
+
},
|
|
16720
|
+
clearPane: () => {
|
|
16721
|
+
},
|
|
16722
|
+
isRightPaneOpen: false,
|
|
16723
|
+
rightPaneContent: null
|
|
16724
|
+
});
|
|
16725
|
+
function RightPaneProvider({ children }) {
|
|
16726
|
+
const [rightPaneContent, setRightPaneContent] = (0, import_react95.useState)(void 0);
|
|
16727
|
+
const [isRightPaneOpen, setIsRightPaneOpen] = (0, import_react95.useState)(false);
|
|
16728
|
+
const openInPane = (0, import_react95.useCallback)(
|
|
16729
|
+
(opts) => {
|
|
16730
|
+
setRightPaneContent(opts?.content);
|
|
16731
|
+
setIsRightPaneOpen(true);
|
|
16697
16732
|
},
|
|
16698
|
-
|
|
16699
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16700
|
-
[dragEl, id, itemRef]
|
|
16733
|
+
[setRightPaneContent]
|
|
16701
16734
|
);
|
|
16702
|
-
|
|
16735
|
+
const closePane = (0, import_react95.useCallback)(() => setIsRightPaneOpen(false), []);
|
|
16736
|
+
const clearPane = (0, import_react95.useCallback)(() => setRightPaneContent(void 0), [setRightPaneContent]);
|
|
16737
|
+
const context = (0, import_react95.useMemo)(
|
|
16738
|
+
() => ({ openInPane, closePane, clearPane, rightPaneContent, isRightPaneOpen }),
|
|
16739
|
+
[openInPane, closePane, rightPaneContent, clearPane, isRightPaneOpen]
|
|
16740
|
+
);
|
|
16741
|
+
return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(RightPaneContext.Provider, { value: context, children });
|
|
16703
16742
|
}
|
|
16704
|
-
|
|
16705
|
-
|
|
16706
|
-
var BaseFilter = class {
|
|
16707
|
-
constructor(key, props) {
|
|
16708
|
-
this.key = key;
|
|
16709
|
-
this.props = props;
|
|
16710
|
-
}
|
|
16711
|
-
get label() {
|
|
16712
|
-
return this.props.label || defaultLabel(this.key);
|
|
16713
|
-
}
|
|
16714
|
-
get defaultValue() {
|
|
16715
|
-
return this.props.defaultValue;
|
|
16716
|
-
}
|
|
16717
|
-
testId(tid) {
|
|
16718
|
-
return tid[defaultTestId(this.label)];
|
|
16719
|
-
}
|
|
16720
|
-
};
|
|
16721
|
-
|
|
16722
|
-
// src/components/Filters/DateFilter.tsx
|
|
16723
|
-
var import_jsx_runtime137 = require("@emotion/react/jsx-runtime");
|
|
16724
|
-
function dateFilter(props) {
|
|
16725
|
-
return (key) => new DateFilter(key, props);
|
|
16743
|
+
function useRightPaneContext() {
|
|
16744
|
+
return (0, import_react95.useContext)(RightPaneContext);
|
|
16726
16745
|
}
|
|
16727
|
-
var anyOption = {};
|
|
16728
|
-
var DateFilter = class extends BaseFilter {
|
|
16729
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16730
|
-
const { label, operations, getOperationValue, getOperationLabel } = this.props;
|
|
16731
|
-
return /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(import_jsx_runtime137.Fragment, { children: [
|
|
16732
|
-
vertical && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(Label, { label }),
|
|
16733
|
-
/* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(CompoundField, { children: [
|
|
16734
|
-
/* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
|
|
16735
|
-
SelectField,
|
|
16736
|
-
{
|
|
16737
|
-
compact: true,
|
|
16738
|
-
sizeToContent: true,
|
|
16739
|
-
options: [
|
|
16740
|
-
// Always show the 'Any' option
|
|
16741
|
-
anyOption,
|
|
16742
|
-
...operations
|
|
16743
|
-
],
|
|
16744
|
-
getOptionValue: (o) => o === anyOption ? void 0 : getOperationValue(o),
|
|
16745
|
-
getOptionLabel: (o) => o === anyOption ? "Any" : getOperationLabel(o),
|
|
16746
|
-
value: value?.op,
|
|
16747
|
-
onSelect: (op) => (
|
|
16748
|
-
// default the selected date to today if it doesn't exist in the filter's value
|
|
16749
|
-
setValue(op ? { op, value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date() } : void 0)
|
|
16750
|
-
),
|
|
16751
|
-
label: inModal ? `${label} date filter operation` : label,
|
|
16752
|
-
labelStyle: !inModal && !vertical ? "inline" : inModal || vertical ? "hidden" : "above",
|
|
16753
|
-
nothingSelectedText: "Any",
|
|
16754
|
-
...tid[`${defaultTestId(this.label)}_dateOperation`]
|
|
16755
|
-
}
|
|
16756
|
-
),
|
|
16757
|
-
/* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
|
|
16758
|
-
DateField,
|
|
16759
|
-
{
|
|
16760
|
-
compact: true,
|
|
16761
|
-
labelStyle: "inline",
|
|
16762
|
-
value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date(),
|
|
16763
|
-
label: "Date",
|
|
16764
|
-
onChange: (d) => setValue({ ...value, value: d }),
|
|
16765
|
-
disabled: !value,
|
|
16766
|
-
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
16767
|
-
}
|
|
16768
|
-
)
|
|
16769
|
-
] })
|
|
16770
|
-
] });
|
|
16771
|
-
}
|
|
16772
|
-
};
|
|
16773
16746
|
|
|
16774
|
-
// src/components/
|
|
16775
|
-
var
|
|
16776
|
-
|
|
16777
|
-
|
|
16778
|
-
|
|
16779
|
-
|
|
16780
|
-
|
|
16781
|
-
|
|
16782
|
-
|
|
16783
|
-
|
|
16784
|
-
|
|
16785
|
-
|
|
16747
|
+
// src/components/Layout/RightPaneLayout/RightPaneLayout.tsx
|
|
16748
|
+
var import_framer_motion3 = require("framer-motion");
|
|
16749
|
+
var import_react96 = require("react");
|
|
16750
|
+
var import_jsx_runtime142 = require("@emotion/react/jsx-runtime");
|
|
16751
|
+
function RightPaneLayout(props) {
|
|
16752
|
+
const { children, paneBgColor = "rgba(255,255,255,1)" /* White */, paneWidth = 450, defaultPaneContent } = props;
|
|
16753
|
+
const { isRightPaneOpen, rightPaneContent, clearPane, closePane } = useRightPaneContext();
|
|
16754
|
+
(0, import_react96.useEffect)(() => closePane, [closePane]);
|
|
16755
|
+
return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)("div", { css: Css.h100.df.oxh.$, children: /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)(import_jsx_runtime142.Fragment, { children: [
|
|
16756
|
+
/* @__PURE__ */ (0, import_jsx_runtime142.jsx)(
|
|
16757
|
+
"div",
|
|
16758
|
+
{
|
|
16759
|
+
css: {
|
|
16760
|
+
...Css.w(`calc(100% - ${paneWidth + 24}px)`).add("transition", "width .2s linear").h100.mr3.oxa.$,
|
|
16761
|
+
...Css.if(!isRightPaneOpen).w100.mr0.$,
|
|
16762
|
+
...Css.if(!!defaultPaneContent).w(`calc(100% - ${paneWidth + 24}px)`).mr3.$
|
|
16763
|
+
},
|
|
16764
|
+
children
|
|
16765
|
+
}
|
|
16766
|
+
),
|
|
16767
|
+
/* @__PURE__ */ (0, import_jsx_runtime142.jsxs)("div", { css: Css.relative.if(!!defaultPaneContent).wPx(paneWidth).$, children: [
|
|
16768
|
+
defaultPaneContent && /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(
|
|
16769
|
+
"div",
|
|
16786
16770
|
{
|
|
16787
|
-
|
|
16788
|
-
|
|
16789
|
-
isRangeFilterField: true,
|
|
16790
|
-
placeholder: placeholderText,
|
|
16791
|
-
label: testFieldLabel ?? "Date",
|
|
16792
|
-
value: value?.value ? { from: new Date(value.value.from), to: new Date(value.value.to) } : void 0,
|
|
16793
|
-
onChange: (d) => d ? setValue({ op: defaultValue?.op, value: d }) : setValue(void 0),
|
|
16794
|
-
disabledDays,
|
|
16795
|
-
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
16771
|
+
css: Css.h100.wPx(paneWidth).left(0).absolute.add("transition", "all .3s ease-in-out").if(isRightPaneOpen).add("opacity", 0).left(100).$,
|
|
16772
|
+
children: defaultPaneContent
|
|
16796
16773
|
}
|
|
16797
|
-
)
|
|
16798
|
-
|
|
16799
|
-
|
|
16800
|
-
};
|
|
16801
|
-
|
|
16802
|
-
// src/components/Filters/MultiFilter.tsx
|
|
16803
|
-
var import_jsx_runtime139 = require("@emotion/react/jsx-runtime");
|
|
16804
|
-
function multiFilter(props) {
|
|
16805
|
-
return (key) => new MultiFilter(key, props);
|
|
16806
|
-
}
|
|
16807
|
-
var MultiFilter = class extends BaseFilter {
|
|
16808
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16809
|
-
if (inModal && Array.isArray(this.props.options) && this.props.options.length > 0 && this.props.options.length <= 8) {
|
|
16810
|
-
const { disabledOptions } = this.props;
|
|
16811
|
-
const disabledOptionsWithReasons = Object.fromEntries(disabledOptions?.map(disabledOptionToKeyedTuple) ?? []);
|
|
16812
|
-
const disabledKeys = Object.keys(disabledOptionsWithReasons);
|
|
16813
|
-
return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
|
|
16814
|
-
ToggleChipGroup,
|
|
16774
|
+
),
|
|
16775
|
+
/* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_framer_motion3.AnimatePresence, { children: isRightPaneOpen && /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(
|
|
16776
|
+
import_framer_motion3.motion.div,
|
|
16815
16777
|
{
|
|
16816
|
-
|
|
16817
|
-
|
|
16818
|
-
|
|
16819
|
-
|
|
16820
|
-
|
|
16821
|
-
|
|
16822
|
-
|
|
16823
|
-
|
|
16824
|
-
|
|
16825
|
-
};
|
|
16826
|
-
}),
|
|
16827
|
-
onChange: (values) => {
|
|
16828
|
-
setValue(values.length === 0 ? void 0 : values);
|
|
16829
|
-
},
|
|
16830
|
-
values: value || [],
|
|
16831
|
-
labelStyle: "hidden",
|
|
16832
|
-
...tid[defaultTestId(this.label)]
|
|
16833
|
-
}
|
|
16834
|
-
);
|
|
16835
|
-
}
|
|
16836
|
-
const { defaultValue, nothingSelectedText, ...props } = this.props;
|
|
16837
|
-
return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
|
|
16838
|
-
MultiSelectField,
|
|
16839
|
-
{
|
|
16840
|
-
...props,
|
|
16841
|
-
compact: !vertical,
|
|
16842
|
-
label: this.label,
|
|
16843
|
-
values: value || [],
|
|
16844
|
-
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16845
|
-
sizeToContent: !inModal && !vertical,
|
|
16846
|
-
onSelect: (values) => {
|
|
16847
|
-
setValue(values.length === 0 ? void 0 : values);
|
|
16778
|
+
layout: "position",
|
|
16779
|
+
"data-testid": "rightPaneContent",
|
|
16780
|
+
css: Css.bgColor(paneBgColor).h100.wPx(paneWidth).$,
|
|
16781
|
+
initial: { x: paneWidth + 24, position: "absolute" },
|
|
16782
|
+
animate: { x: 0 },
|
|
16783
|
+
transition: { ease: "linear", duration: 0.2 },
|
|
16784
|
+
exit: { transition: { ease: "linear", duration: 0.2 }, x: paneWidth },
|
|
16785
|
+
onAnimationComplete: (definition) => definition.x !== 0 && clearPane(),
|
|
16786
|
+
children: rightPaneContent
|
|
16848
16787
|
},
|
|
16849
|
-
|
|
16850
|
-
|
|
16851
|
-
|
|
16852
|
-
|
|
16853
|
-
|
|
16854
|
-
};
|
|
16788
|
+
"rightPane"
|
|
16789
|
+
) })
|
|
16790
|
+
] })
|
|
16791
|
+
] }) });
|
|
16792
|
+
}
|
|
16855
16793
|
|
|
16856
|
-
// src/components/
|
|
16857
|
-
|
|
16858
|
-
|
|
16859
|
-
return
|
|
16794
|
+
// src/components/Layout/RightPaneLayout/useRightPane.tsx
|
|
16795
|
+
function useRightPane() {
|
|
16796
|
+
const { openInPane, closePane } = useRightPaneContext();
|
|
16797
|
+
return {
|
|
16798
|
+
openRightPane: openInPane,
|
|
16799
|
+
closeRightPane: closePane
|
|
16800
|
+
};
|
|
16860
16801
|
}
|
|
16861
|
-
var NumberRangeFilter = class extends BaseFilter {
|
|
16862
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16863
|
-
const { label, numberFieldType, numberFormatOptions } = this.props;
|
|
16864
|
-
const min = value?.min ?? void 0;
|
|
16865
|
-
const max = value?.max ?? void 0;
|
|
16866
|
-
return /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_jsx_runtime140.Fragment, { children: [
|
|
16867
|
-
vertical && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)("div", { ...tid, children: [
|
|
16868
|
-
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)(Label, { label }),
|
|
16869
|
-
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)("div", { css: Css.pb1.$, children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
|
|
16870
|
-
NumberField,
|
|
16871
|
-
{
|
|
16872
|
-
labelStyle: "inline",
|
|
16873
|
-
clearable: true,
|
|
16874
|
-
label: "Min",
|
|
16875
|
-
value: min,
|
|
16876
|
-
type: numberFieldType,
|
|
16877
|
-
numberFormatOptions,
|
|
16878
|
-
onChange: (minVal) => {
|
|
16879
|
-
const maxValue = max ? { max } : {};
|
|
16880
|
-
setValue(minVal || max ? { min: minVal, ...maxValue } : void 0);
|
|
16881
|
-
},
|
|
16882
|
-
...tid[`${defaultTestId(label)}_min_vertical`]
|
|
16883
|
-
}
|
|
16884
|
-
) }),
|
|
16885
|
-
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
|
|
16886
|
-
NumberField,
|
|
16887
|
-
{
|
|
16888
|
-
labelStyle: "inline",
|
|
16889
|
-
clearable: true,
|
|
16890
|
-
label: "Max",
|
|
16891
|
-
value: max,
|
|
16892
|
-
type: numberFieldType,
|
|
16893
|
-
numberFormatOptions,
|
|
16894
|
-
onChange: (maxVal) => {
|
|
16895
|
-
const minValue = min ? { min } : {};
|
|
16896
|
-
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
16897
|
-
},
|
|
16898
|
-
...tid[`${defaultTestId(label)}_max_vertical`]
|
|
16899
|
-
}
|
|
16900
|
-
)
|
|
16901
|
-
] }),
|
|
16902
|
-
!vertical && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(CompoundField, { ...tid, children: [
|
|
16903
|
-
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
|
|
16904
|
-
NumberField,
|
|
16905
|
-
{
|
|
16906
|
-
compact: true,
|
|
16907
|
-
sizeToContent: !inModal,
|
|
16908
|
-
labelStyle: "inline",
|
|
16909
|
-
clearable: true,
|
|
16910
|
-
label: !inModal ? `${label} Min` : "Min",
|
|
16911
|
-
value: min,
|
|
16912
|
-
type: numberFieldType,
|
|
16913
|
-
numberFormatOptions,
|
|
16914
|
-
onChange: (minVal) => {
|
|
16915
|
-
const maxValue = max ? { max } : {};
|
|
16916
|
-
setValue(minVal || max ? { min: minVal, ...maxValue } : void 0);
|
|
16917
|
-
},
|
|
16918
|
-
...tid[`${defaultTestId(label)}_min`]
|
|
16919
|
-
}
|
|
16920
|
-
),
|
|
16921
|
-
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
|
|
16922
|
-
NumberField,
|
|
16923
|
-
{
|
|
16924
|
-
compact: true,
|
|
16925
|
-
sizeToContent: !inModal,
|
|
16926
|
-
labelStyle: "inline",
|
|
16927
|
-
clearable: true,
|
|
16928
|
-
label: !inModal ? `${label} Max` : "Max",
|
|
16929
|
-
value: max,
|
|
16930
|
-
type: numberFieldType,
|
|
16931
|
-
numberFormatOptions,
|
|
16932
|
-
onChange: (maxVal) => {
|
|
16933
|
-
const minValue = min ? { min } : {};
|
|
16934
|
-
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
16935
|
-
},
|
|
16936
|
-
...tid[`${defaultTestId(label)}_max`]
|
|
16937
|
-
}
|
|
16938
|
-
)
|
|
16939
|
-
] })
|
|
16940
|
-
] });
|
|
16941
|
-
}
|
|
16942
|
-
};
|
|
16943
16802
|
|
|
16944
|
-
// src/components/
|
|
16945
|
-
var
|
|
16946
|
-
|
|
16947
|
-
|
|
16803
|
+
// src/components/Toast/ToastContext.tsx
|
|
16804
|
+
var import_react97 = require("react");
|
|
16805
|
+
var import_jsx_runtime143 = require("@emotion/react/jsx-runtime");
|
|
16806
|
+
var ToastContext = (0, import_react97.createContext)({
|
|
16807
|
+
setNotice: () => {
|
|
16808
|
+
throw new Error("Missing ToastProvider");
|
|
16809
|
+
},
|
|
16810
|
+
clear: () => {
|
|
16811
|
+
},
|
|
16812
|
+
notice: void 0
|
|
16813
|
+
});
|
|
16814
|
+
function ToastProvider(props) {
|
|
16815
|
+
const [notice, setNotice] = (0, import_react97.useState)();
|
|
16816
|
+
const clear = (0, import_react97.useCallback)(() => setNotice(void 0), [setNotice]);
|
|
16817
|
+
const contextValue = (0, import_react97.useMemo)(() => ({ setNotice, notice, clear }), [notice, clear]);
|
|
16818
|
+
return /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(ToastContext.Provider, { value: contextValue, children: props.children });
|
|
16948
16819
|
}
|
|
16949
|
-
|
|
16950
|
-
|
|
16951
|
-
|
|
16952
|
-
|
|
16953
|
-
|
|
16954
|
-
|
|
16955
|
-
|
|
16956
|
-
|
|
16957
|
-
|
|
16958
|
-
|
|
16959
|
-
|
|
16960
|
-
|
|
16961
|
-
|
|
16962
|
-
|
|
16963
|
-
|
|
16964
|
-
|
|
16965
|
-
|
|
16966
|
-
|
|
16967
|
-
|
|
16968
|
-
|
|
16969
|
-
|
|
16970
|
-
|
|
16971
|
-
|
|
16972
|
-
|
|
16973
|
-
|
|
16974
|
-
|
|
16975
|
-
|
|
16976
|
-
|
|
16977
|
-
|
|
16978
|
-
|
|
16820
|
+
function useToastContext() {
|
|
16821
|
+
return (0, import_react97.useContext)(ToastContext);
|
|
16822
|
+
}
|
|
16823
|
+
|
|
16824
|
+
// src/components/BeamContext.tsx
|
|
16825
|
+
var import_jsx_runtime144 = require("@emotion/react/jsx-runtime");
|
|
16826
|
+
var BeamContext = (0, import_react98.createContext)({
|
|
16827
|
+
modalState: new EmptyRef(),
|
|
16828
|
+
modalCanCloseChecks: new EmptyRef(),
|
|
16829
|
+
modalHeaderDiv: void 0,
|
|
16830
|
+
modalBodyDiv: void 0,
|
|
16831
|
+
modalFooterDiv: void 0,
|
|
16832
|
+
drawerContentStack: new EmptyRef(),
|
|
16833
|
+
drawerCanCloseChecks: new EmptyRef(),
|
|
16834
|
+
drawerCanCloseDetailsChecks: new EmptyRef(),
|
|
16835
|
+
sdHeaderDiv: void 0
|
|
16836
|
+
});
|
|
16837
|
+
function BeamProvider({ children, ...presentationProps }) {
|
|
16838
|
+
const [, tick] = (0, import_react98.useReducer)((prev) => prev + 1, 0);
|
|
16839
|
+
const modalRef = (0, import_react98.useRef)();
|
|
16840
|
+
const modalHeaderDiv = (0, import_react98.useMemo)(() => document.createElement("div"), []);
|
|
16841
|
+
const modalBodyDiv = (0, import_react98.useMemo)(() => {
|
|
16842
|
+
const el = document.createElement("div");
|
|
16843
|
+
el.style.height = "100%";
|
|
16844
|
+
return el;
|
|
16845
|
+
}, []);
|
|
16846
|
+
const modalCanCloseChecksRef = (0, import_react98.useRef)([]);
|
|
16847
|
+
const modalFooterDiv = (0, import_react98.useMemo)(() => document.createElement("div"), []);
|
|
16848
|
+
const drawerContentStackRef = (0, import_react98.useRef)([]);
|
|
16849
|
+
const drawerCanCloseChecks = (0, import_react98.useRef)([]);
|
|
16850
|
+
const drawerCanCloseDetailsChecks = (0, import_react98.useRef)([]);
|
|
16851
|
+
const sdHeaderDiv = (0, import_react98.useMemo)(() => document.createElement("div"), []);
|
|
16852
|
+
const context = (0, import_react98.useMemo)(() => {
|
|
16853
|
+
return {
|
|
16854
|
+
// These two keys need to trigger re-renders on change
|
|
16855
|
+
modalState: new PretendRefThatTicks(modalRef, tick),
|
|
16856
|
+
drawerContentStack: new PretendRefThatTicks(drawerContentStackRef, tick),
|
|
16857
|
+
// The rest we don't need to re-render when these are mutated, so just expose as-is
|
|
16858
|
+
modalCanCloseChecks: modalCanCloseChecksRef,
|
|
16859
|
+
modalHeaderDiv,
|
|
16860
|
+
modalBodyDiv,
|
|
16861
|
+
modalFooterDiv,
|
|
16862
|
+
drawerCanCloseChecks,
|
|
16863
|
+
drawerCanCloseDetailsChecks,
|
|
16864
|
+
sdHeaderDiv
|
|
16865
|
+
};
|
|
16866
|
+
}, [modalBodyDiv, modalFooterDiv, modalHeaderDiv, sdHeaderDiv]);
|
|
16867
|
+
return /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(BeamContext.Provider, { value: { ...context }, children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(PresentationProvider, { ...presentationProps, children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(RightPaneProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(AutoSaveStatusProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(SnackbarProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(ToastProvider, { children: [
|
|
16868
|
+
/* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(import_react_aria44.OverlayProvider, { children: [
|
|
16869
|
+
children,
|
|
16870
|
+
modalRef.current && /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Modal, { ...modalRef.current })
|
|
16871
|
+
] }),
|
|
16872
|
+
/* @__PURE__ */ (0, import_jsx_runtime144.jsx)(SuperDrawer, {})
|
|
16873
|
+
] }) }) }) }) }) });
|
|
16874
|
+
}
|
|
16875
|
+
var PretendRefThatTicks = class {
|
|
16876
|
+
constructor(ref, tick) {
|
|
16877
|
+
this.ref = ref;
|
|
16878
|
+
this.tick = tick;
|
|
16879
|
+
}
|
|
16880
|
+
get current() {
|
|
16881
|
+
return this.ref.current;
|
|
16882
|
+
}
|
|
16883
|
+
set current(value) {
|
|
16884
|
+
this.ref.current = value;
|
|
16885
|
+
this.tick();
|
|
16979
16886
|
}
|
|
16980
16887
|
};
|
|
16888
|
+
function useBeamContext() {
|
|
16889
|
+
return (0, import_react98.useContext)(BeamContext);
|
|
16890
|
+
}
|
|
16981
16891
|
|
|
16982
|
-
// src/components/
|
|
16983
|
-
var
|
|
16984
|
-
|
|
16985
|
-
|
|
16892
|
+
// src/components/ButtonDatePicker.tsx
|
|
16893
|
+
var import_react99 = require("react");
|
|
16894
|
+
var import_react_aria45 = require("react-aria");
|
|
16895
|
+
var import_react_stately17 = require("react-stately");
|
|
16896
|
+
var import_jsx_runtime145 = require("@emotion/react/jsx-runtime");
|
|
16897
|
+
function ButtonDatePicker(props) {
|
|
16898
|
+
const { defaultOpen, disabled, trigger, onSelect, ...datePickerProps } = props;
|
|
16899
|
+
const state = (0, import_react_stately17.useMenuTriggerState)({ isOpen: defaultOpen });
|
|
16900
|
+
const buttonRef = (0, import_react99.useRef)(null);
|
|
16901
|
+
const { menuTriggerProps, menuProps } = (0, import_react_aria45.useMenuTrigger)({ isDisabled: !!disabled }, state, buttonRef);
|
|
16902
|
+
const tid = useTestIds(
|
|
16903
|
+
props,
|
|
16904
|
+
isTextButton(trigger) ? defaultTestId(labelOr(trigger, "buttonDatePicker")) : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
|
|
16905
|
+
);
|
|
16906
|
+
return /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(OverlayTrigger, { ...props, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(DatePickerOverlay, { overlayProps: menuProps, children: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(
|
|
16907
|
+
DatePicker,
|
|
16908
|
+
{
|
|
16909
|
+
...datePickerProps,
|
|
16910
|
+
onSelect: (d) => {
|
|
16911
|
+
onSelect(d);
|
|
16912
|
+
state.close();
|
|
16913
|
+
},
|
|
16914
|
+
...tid.datePicker
|
|
16915
|
+
}
|
|
16916
|
+
) }) });
|
|
16986
16917
|
}
|
|
16987
|
-
|
|
16988
|
-
|
|
16989
|
-
|
|
16990
|
-
|
|
16991
|
-
|
|
16918
|
+
|
|
16919
|
+
// src/components/ButtonGroup.tsx
|
|
16920
|
+
var import_react100 = require("react");
|
|
16921
|
+
var import_react_aria46 = require("react-aria");
|
|
16922
|
+
var import_jsx_runtime146 = (
|
|
16923
|
+
// Disable the button if the ButtonGroup is disabled or if the current button is disabled.
|
|
16924
|
+
require("@emotion/react/jsx-runtime")
|
|
16925
|
+
);
|
|
16926
|
+
function ButtonGroup(props) {
|
|
16927
|
+
const { buttons, disabled = false, size = "sm" } = props;
|
|
16928
|
+
const tid = useTestIds(props, "buttonGroup");
|
|
16929
|
+
return (
|
|
16930
|
+
// Adding `line-height: 0` prevent inheriting line-heights that might throw off sizing within the button group.
|
|
16931
|
+
/* @__PURE__ */ (0, import_jsx_runtime146.jsx)("div", { ...tid, css: Css.df.lh(0).add({ ...sizeStyles2[size] }).$, children: buttons.map(({ disabled: buttonDisabled, ...buttonProps }, i) => /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(GroupButton, { ...buttonProps, disabled: disabled || buttonDisabled, size, ...tid }, i)) })
|
|
16932
|
+
);
|
|
16933
|
+
}
|
|
16934
|
+
function GroupButton(props) {
|
|
16935
|
+
const { icon, iconInc, iconColor, text, active, onClick: onPress, disabled, size, tooltip, ...otherProps } = props;
|
|
16936
|
+
const ariaProps = { onPress, isDisabled: !!disabled, ...otherProps };
|
|
16937
|
+
const ref = (0, import_react100.useRef)(null);
|
|
16938
|
+
const { buttonProps, isPressed } = (0, import_react_aria46.useButton)(ariaProps, ref);
|
|
16939
|
+
const { isFocusVisible, focusProps } = (0, import_react_aria46.useFocusRing)();
|
|
16940
|
+
const { hoverProps, isHovered } = (0, import_react_aria46.useHover)(ariaProps);
|
|
16941
|
+
const tid = useTestIds(props);
|
|
16942
|
+
return /* @__PURE__ */ (0, import_jsx_runtime146.jsx)("span", { css: getButtonStyles2(), children: maybeTooltip({
|
|
16943
|
+
title: resolveTooltip(disabled, tooltip),
|
|
16944
|
+
placement: "top",
|
|
16945
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(
|
|
16946
|
+
"button",
|
|
16992
16947
|
{
|
|
16993
|
-
|
|
16994
|
-
|
|
16995
|
-
|
|
16996
|
-
|
|
16997
|
-
|
|
16998
|
-
|
|
16999
|
-
|
|
17000
|
-
|
|
17001
|
-
|
|
16948
|
+
ref,
|
|
16949
|
+
...buttonProps,
|
|
16950
|
+
...focusProps,
|
|
16951
|
+
...hoverProps,
|
|
16952
|
+
css: {
|
|
16953
|
+
...Css.buttonBase.px2.br0.h100.$,
|
|
16954
|
+
"&:disabled": Css.gray400.cursorNotAllowed.bcGray300.$,
|
|
16955
|
+
...isFocusVisible ? defaultFocusRingStyles2 : {},
|
|
16956
|
+
...active ? activeStyles3 : {},
|
|
16957
|
+
...isPressed ? pressedStyles2 : isHovered ? hoverStyles3 : {},
|
|
16958
|
+
...icon ? iconStyles2[size] : {}
|
|
17002
16959
|
},
|
|
17003
|
-
|
|
17004
|
-
|
|
16960
|
+
...tid[defaultTestId(typeof text === "string" && text || icon || "button")],
|
|
16961
|
+
children: [
|
|
16962
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(Icon, { xss: Css.if(!!text).mrPx(4).$, icon, color: disabled ? void 0 : iconColor, inc: iconInc }),
|
|
16963
|
+
text
|
|
16964
|
+
]
|
|
17005
16965
|
}
|
|
17006
|
-
)
|
|
17007
|
-
}
|
|
16966
|
+
)
|
|
16967
|
+
}) });
|
|
16968
|
+
}
|
|
16969
|
+
var pressedStyles2 = Css.bgGray200.$;
|
|
16970
|
+
var activeStyles3 = Css.bgGray300.$;
|
|
16971
|
+
var hoverStyles3 = Css.bgGray100.$;
|
|
16972
|
+
var defaultFocusRingStyles2 = Css.relative.z2.bshFocus.$;
|
|
16973
|
+
function getButtonStyles2() {
|
|
16974
|
+
return {
|
|
16975
|
+
...Css.z1.bgWhite.bcGray300.bw1.ba.gray900.br0.oh.$,
|
|
16976
|
+
// Our first button should have a rounded left border
|
|
16977
|
+
"&:first-of-type": Css.add("borderRadius", "4px 0 0 4px").$,
|
|
16978
|
+
// Our last button should have a rounded right border
|
|
16979
|
+
"&:last-of-type": Css.add("borderRadius", "0 4px 4px 0").$,
|
|
16980
|
+
// Nudge buttons one pixel to the left so they visually share a border
|
|
16981
|
+
"&:not(:first-of-type)": Css.mlPx(-1).$
|
|
16982
|
+
};
|
|
16983
|
+
}
|
|
16984
|
+
var sizeStyles2 = {
|
|
16985
|
+
xs: Css.hPx(28).$,
|
|
16986
|
+
sm: Css.hPx(32).$,
|
|
16987
|
+
md: Css.hPx(40).$
|
|
16988
|
+
};
|
|
16989
|
+
var iconStyles2 = {
|
|
16990
|
+
xs: Css.pxPx(2).$,
|
|
16991
|
+
sm: Css.pxPx(4).$,
|
|
16992
|
+
md: Css.px1.$
|
|
17008
16993
|
};
|
|
17009
16994
|
|
|
17010
|
-
// src/components/
|
|
17011
|
-
var
|
|
17012
|
-
|
|
17013
|
-
|
|
16995
|
+
// src/components/ButtonMenu.tsx
|
|
16996
|
+
var import_react101 = require("react");
|
|
16997
|
+
var import_react_aria47 = require("react-aria");
|
|
16998
|
+
var import_react_stately18 = require("react-stately");
|
|
16999
|
+
var import_jsx_runtime147 = require("@emotion/react/jsx-runtime");
|
|
17000
|
+
function ButtonMenu(props) {
|
|
17001
|
+
const { defaultOpen, disabled, items, persistentItems, trigger, searchable, contrast = false } = props;
|
|
17002
|
+
let selectedItem, onChange;
|
|
17003
|
+
if (isSelectionButtonMenuProps(props)) {
|
|
17004
|
+
selectedItem = props.selectedItem;
|
|
17005
|
+
onChange = props.onChange;
|
|
17006
|
+
}
|
|
17007
|
+
const state = (0, import_react_stately18.useMenuTriggerState)({ isOpen: defaultOpen });
|
|
17008
|
+
const buttonRef = (0, import_react101.useRef)(null);
|
|
17009
|
+
const { menuTriggerProps, menuProps } = (0, import_react_aria47.useMenuTrigger)({ isDisabled: !!disabled }, state, buttonRef);
|
|
17010
|
+
const tid = useTestIds(
|
|
17011
|
+
props,
|
|
17012
|
+
isTextButton(trigger) ? labelOr(trigger, "buttonMenu") : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
|
|
17013
|
+
);
|
|
17014
|
+
return /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(
|
|
17015
|
+
OverlayTrigger,
|
|
17016
|
+
{
|
|
17017
|
+
...props,
|
|
17018
|
+
menuTriggerProps,
|
|
17019
|
+
state,
|
|
17020
|
+
buttonRef,
|
|
17021
|
+
...tid,
|
|
17022
|
+
contrast,
|
|
17023
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(
|
|
17024
|
+
Menu,
|
|
17025
|
+
{
|
|
17026
|
+
ariaMenuProps: menuProps,
|
|
17027
|
+
onClose: () => state.close(),
|
|
17028
|
+
items,
|
|
17029
|
+
persistentItems,
|
|
17030
|
+
searchable,
|
|
17031
|
+
contrast,
|
|
17032
|
+
selectedItem,
|
|
17033
|
+
onChange,
|
|
17034
|
+
...tid
|
|
17035
|
+
}
|
|
17036
|
+
)
|
|
17037
|
+
}
|
|
17038
|
+
);
|
|
17014
17039
|
}
|
|
17015
|
-
|
|
17016
|
-
|
|
17017
|
-
|
|
17018
|
-
|
|
17019
|
-
|
|
17020
|
-
|
|
17021
|
-
|
|
17022
|
-
|
|
17023
|
-
|
|
17024
|
-
|
|
17025
|
-
|
|
17026
|
-
|
|
17027
|
-
|
|
17028
|
-
|
|
17029
|
-
|
|
17030
|
-
|
|
17031
|
-
|
|
17032
|
-
|
|
17040
|
+
function isSelectionButtonMenuProps(props) {
|
|
17041
|
+
return typeof props === "object" && "selectedItem" in props && "onChange" in props;
|
|
17042
|
+
}
|
|
17043
|
+
|
|
17044
|
+
// src/components/Card.tsx
|
|
17045
|
+
var import_react103 = require("react");
|
|
17046
|
+
var import_react_aria48 = require("react-aria");
|
|
17047
|
+
|
|
17048
|
+
// src/components/Tag.tsx
|
|
17049
|
+
var import_utils111 = require("@react-aria/utils");
|
|
17050
|
+
var import_react102 = require("react");
|
|
17051
|
+
var import_jsx_runtime148 = require("@emotion/react/jsx-runtime");
|
|
17052
|
+
function Tag(props) {
|
|
17053
|
+
const { text, type, xss, preventTooltip = false, ...otherProps } = props;
|
|
17054
|
+
const typeStyles2 = getStyles(type);
|
|
17055
|
+
const tid = useTestIds(otherProps);
|
|
17056
|
+
const [showTooltip, setShowTooltip] = (0, import_react102.useState)(false);
|
|
17057
|
+
const ref = (0, import_react102.useRef)(null);
|
|
17058
|
+
(0, import_utils111.useResizeObserver)({
|
|
17059
|
+
ref,
|
|
17060
|
+
onResize: () => {
|
|
17061
|
+
if (ref.current) {
|
|
17062
|
+
setShowTooltip(ref.current.offsetHeight < ref.current.scrollHeight);
|
|
17063
|
+
}
|
|
17064
|
+
}
|
|
17065
|
+
});
|
|
17066
|
+
return maybeTooltip({
|
|
17067
|
+
title: !preventTooltip && showTooltip ? text : void 0,
|
|
17068
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime148.jsxs)("span", { ...tid, css: { ...Css.dif.tinySb.ttu.aic.gapPx(4).pxPx(6).pyPx(2).gray900.br4.$, ...typeStyles2, ...xss }, children: [
|
|
17069
|
+
otherProps.icon && /* @__PURE__ */ (0, import_jsx_runtime148.jsx)("span", { css: Css.fs0.$, children: /* @__PURE__ */ (0, import_jsx_runtime148.jsx)(Icon, { icon: otherProps.icon, inc: 1.5 }) }),
|
|
17070
|
+
/* @__PURE__ */ (0, import_jsx_runtime148.jsx)("span", { ref, css: Css.lineClamp1.wbba.$, children: text })
|
|
17071
|
+
] })
|
|
17072
|
+
});
|
|
17073
|
+
}
|
|
17074
|
+
function getStyles(type) {
|
|
17075
|
+
switch (type) {
|
|
17076
|
+
case "info":
|
|
17077
|
+
return Css.bgBlue100.$;
|
|
17078
|
+
case "caution":
|
|
17079
|
+
return Css.bgYellow200.$;
|
|
17080
|
+
case "warning":
|
|
17081
|
+
return Css.bgRed200.$;
|
|
17082
|
+
case "success":
|
|
17083
|
+
return Css.bgGreen200.$;
|
|
17084
|
+
default:
|
|
17085
|
+
return Css.bgGray200.$;
|
|
17086
|
+
}
|
|
17087
|
+
}
|
|
17088
|
+
|
|
17089
|
+
// src/components/Card.tsx
|
|
17090
|
+
var import_jsx_runtime149 = require("@emotion/react/jsx-runtime");
|
|
17091
|
+
function Card(props) {
|
|
17092
|
+
const {
|
|
17093
|
+
title,
|
|
17094
|
+
subtitle,
|
|
17095
|
+
detailContent,
|
|
17096
|
+
imgSrc,
|
|
17097
|
+
imageFit = "contain",
|
|
17098
|
+
type = "card",
|
|
17099
|
+
bordered = false,
|
|
17100
|
+
disabled: isDisabled = false,
|
|
17101
|
+
buttonMenuItems,
|
|
17102
|
+
tag
|
|
17103
|
+
} = props;
|
|
17104
|
+
const tid = useTestIds(props, "card");
|
|
17105
|
+
const { hoverProps, isHovered } = (0, import_react_aria48.useHover)({ isDisabled });
|
|
17106
|
+
const isList = type === "list";
|
|
17107
|
+
const imgHeight = isList ? 96 : bordered ? 224 : 256;
|
|
17108
|
+
const styles = (0, import_react103.useMemo)(
|
|
17109
|
+
() => ({
|
|
17110
|
+
...baseStyles4(type),
|
|
17111
|
+
...isList && listStyles,
|
|
17112
|
+
...bordered && borderedStyles,
|
|
17113
|
+
...isHovered && cardHoverStyles,
|
|
17114
|
+
...isDisabled && disabledStyles3
|
|
17115
|
+
}),
|
|
17116
|
+
[isDisabled, isHovered, bordered, type, isList]
|
|
17117
|
+
);
|
|
17118
|
+
return /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)("div", { css: styles, ...hoverProps, ...tid, children: [
|
|
17119
|
+
/* @__PURE__ */ (0, import_jsx_runtime149.jsx)(
|
|
17120
|
+
"div",
|
|
17121
|
+
{
|
|
17122
|
+
css: {
|
|
17123
|
+
...Css.hPx(imgHeight).ba.br8.bcGray300.oh.df.asc.jsc.relative.add("filter", "brightness(1)").$,
|
|
17124
|
+
...isHovered && !isList && imageHoverStyles
|
|
17033
17125
|
},
|
|
17034
|
-
|
|
17126
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("img", { css: Css.w100.h100.objectFit(imageFit).$, src: imgSrc, alt: title, ...tid.img })
|
|
17035
17127
|
}
|
|
17036
|
-
)
|
|
17037
|
-
|
|
17038
|
-
|
|
17039
|
-
var defaultBooleanOptions = [
|
|
17040
|
-
[void 0, "Any"],
|
|
17041
|
-
[true, "Yes"],
|
|
17042
|
-
[false, "No"]
|
|
17043
|
-
];
|
|
17044
|
-
|
|
17045
|
-
// src/components/Filters/CheckboxFilter.tsx
|
|
17046
|
-
var import_jsx_runtime144 = require("@emotion/react/jsx-runtime");
|
|
17047
|
-
function checkboxFilter(props) {
|
|
17048
|
-
return (key) => new CheckboxFilter(key, {
|
|
17049
|
-
// If the user has set the offValue, that should be the default b/c we're only a two-state
|
|
17050
|
-
defaultValue: props.offValue,
|
|
17051
|
-
...props
|
|
17052
|
-
});
|
|
17053
|
-
}
|
|
17054
|
-
var CheckboxFilter = class extends BaseFilter {
|
|
17055
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
17056
|
-
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
17057
|
-
return /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
|
|
17058
|
-
Checkbox,
|
|
17128
|
+
),
|
|
17129
|
+
isHovered && buttonMenuItems && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("div", { css: Css.absolute.right1.top1.if(bordered && !isList).right3.top3.$, children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(
|
|
17130
|
+
ButtonMenu,
|
|
17059
17131
|
{
|
|
17060
|
-
|
|
17061
|
-
|
|
17062
|
-
label: this.label,
|
|
17063
|
-
onChange: (on) => {
|
|
17064
|
-
setValue(on ? onValue : offValue);
|
|
17065
|
-
},
|
|
17066
|
-
...this.testId(tid)
|
|
17132
|
+
trigger: { icon: "verticalDots", color: isList ? "rgba(100, 100, 100, 1)" /* Gray700 */ : "rgba(255,255,255,1)" /* White */ },
|
|
17133
|
+
items: buttonMenuItems
|
|
17067
17134
|
}
|
|
17068
|
-
)
|
|
17069
|
-
|
|
17070
|
-
|
|
17071
|
-
|
|
17072
|
-
|
|
17073
|
-
}
|
|
17074
|
-
|
|
17075
|
-
|
|
17076
|
-
|
|
17135
|
+
) }),
|
|
17136
|
+
tag && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("div", { css: Css.absolute.left1.topPx(4).$, children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(Tag, { type: tag?.type, text: tag?.text, ...tid.tag }) }),
|
|
17137
|
+
/* @__PURE__ */ (0, import_jsx_runtime149.jsxs)("div", { css: Css.df.fdc.aifs.gap1.$, children: [
|
|
17138
|
+
/* @__PURE__ */ (0, import_jsx_runtime149.jsxs)("div", { children: [
|
|
17139
|
+
/* @__PURE__ */ (0, import_jsx_runtime149.jsx)("div", { css: Css.xsMd.gray700.$, ...tid.subtitle, children: subtitle }),
|
|
17140
|
+
/* @__PURE__ */ (0, import_jsx_runtime149.jsx)("div", { css: Css.smMd.gray900.if(isHovered).blue700.$, ...tid.title, children: title })
|
|
17141
|
+
] }),
|
|
17142
|
+
/* @__PURE__ */ (0, import_jsx_runtime149.jsx)("div", { ...tid.details, children: detailContent })
|
|
17143
|
+
] })
|
|
17144
|
+
] });
|
|
17145
|
+
}
|
|
17146
|
+
var width = { card: 256, list: 520 };
|
|
17147
|
+
var baseStyles4 = (type) => Css.wPx(width[type]).bgWhite.df.fdc.gap1.relative.$;
|
|
17148
|
+
var listStyles = Css.df.fdr.gap2.$;
|
|
17149
|
+
var borderedStyles = Css.ba.br8.bcGray300.p2.$;
|
|
17150
|
+
var disabledStyles3 = Css.add("opacity", 0.5).add("transition", "opacity 0.3s ease").$;
|
|
17151
|
+
var cardHoverStyles = Css.bcGray400.cursorPointer.$;
|
|
17152
|
+
var imageHoverStyles = Css.bgWhite.add("filter", "brightness(0.3)").add("transition", "filter 0.3s ease").$;
|
|
17077
17153
|
|
|
17078
|
-
// src/components/
|
|
17079
|
-
var
|
|
17080
|
-
|
|
17081
|
-
|
|
17082
|
-
|
|
17083
|
-
|
|
17084
|
-
|
|
17085
|
-
|
|
17086
|
-
|
|
17154
|
+
// src/components/Copy.tsx
|
|
17155
|
+
var import_jsx_runtime150 = require("@emotion/react/jsx-runtime");
|
|
17156
|
+
function Copy(props) {
|
|
17157
|
+
return /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(
|
|
17158
|
+
"div",
|
|
17159
|
+
{
|
|
17160
|
+
css: {
|
|
17161
|
+
...Css.sm.gray700.mt2.mb3.wPx(480).$,
|
|
17162
|
+
"& > p": Css.my2.$
|
|
17163
|
+
},
|
|
17164
|
+
children: props.children
|
|
17087
17165
|
}
|
|
17088
|
-
|
|
17089
|
-
|
|
17090
|
-
|
|
17091
|
-
|
|
17092
|
-
|
|
17166
|
+
);
|
|
17167
|
+
}
|
|
17168
|
+
|
|
17169
|
+
// src/components/DnDGrid/DnDGrid.tsx
|
|
17170
|
+
var import_fast_deep_equal2 = __toESM(require("fast-deep-equal"), 1);
|
|
17171
|
+
var import_react105 = require("react");
|
|
17172
|
+
|
|
17173
|
+
// src/components/DnDGrid/DnDGridContext.tsx
|
|
17174
|
+
var import_react104 = require("react");
|
|
17175
|
+
var DnDGridContext = (0, import_react104.createContext)({
|
|
17176
|
+
dragEl: { current: void 0 },
|
|
17177
|
+
onDragHandleKeyDown: () => {
|
|
17093
17178
|
}
|
|
17179
|
+
});
|
|
17180
|
+
function useDnDGridContext() {
|
|
17181
|
+
return (0, import_react104.useContext)(DnDGridContext);
|
|
17094
17182
|
}
|
|
17095
17183
|
|
|
17096
|
-
// src/components/
|
|
17097
|
-
var
|
|
17098
|
-
function
|
|
17099
|
-
const {
|
|
17100
|
-
const
|
|
17101
|
-
const
|
|
17102
|
-
const
|
|
17103
|
-
|
|
17104
|
-
|
|
17105
|
-
|
|
17106
|
-
|
|
17107
|
-
|
|
17108
|
-
|
|
17109
|
-
|
|
17110
|
-
|
|
17111
|
-
)
|
|
17112
|
-
|
|
17113
|
-
|
|
17114
|
-
|
|
17115
|
-
|
|
17116
|
-
|
|
17117
|
-
|
|
17118
|
-
|
|
17119
|
-
|
|
17120
|
-
|
|
17121
|
-
|
|
17122
|
-
|
|
17123
|
-
|
|
17184
|
+
// src/components/DnDGrid/DnDGrid.tsx
|
|
17185
|
+
var import_jsx_runtime151 = require("@emotion/react/jsx-runtime");
|
|
17186
|
+
function DnDGrid(props) {
|
|
17187
|
+
const { children, gridStyles, onReorder, activeItemStyles } = props;
|
|
17188
|
+
const gridEl = (0, import_react105.useRef)(null);
|
|
17189
|
+
const dragEl = (0, import_react105.useRef)();
|
|
17190
|
+
const cloneEl = (0, import_react105.useRef)();
|
|
17191
|
+
const initialOrder = (0, import_react105.useRef)();
|
|
17192
|
+
const reorderViaKeyboard = (0, import_react105.useRef)(false);
|
|
17193
|
+
const transformFrom = (0, import_react105.useRef)({ x: 0, y: 0 });
|
|
17194
|
+
const tid = useTestIds(props, "dndGrid");
|
|
17195
|
+
const getGridItems = (0, import_react105.useCallback)(() => {
|
|
17196
|
+
return gridEl.current ? Array.from(gridEl.current.querySelectorAll(`[${gridItemIdKey}]`)) : [];
|
|
17197
|
+
}, []);
|
|
17198
|
+
const getGridItemIdOrder = (0, import_react105.useCallback)(() => {
|
|
17199
|
+
return getGridItems().map((child) => child.getAttribute(gridItemIdKey)).filter(isDefined);
|
|
17200
|
+
}, [getGridItems]);
|
|
17201
|
+
const initReorder = (0, import_react105.useCallback)(() => {
|
|
17202
|
+
if (gridEl.current && dragEl.current) {
|
|
17203
|
+
initialOrder.current = getGridItemIdOrder();
|
|
17204
|
+
dragEl.current.classList.add(activeGridItemClass);
|
|
17205
|
+
}
|
|
17206
|
+
}, [getGridItemIdOrder]);
|
|
17207
|
+
const commitReorder = (0, import_react105.useCallback)(() => {
|
|
17208
|
+
if (gridEl.current && dragEl.current) {
|
|
17209
|
+
const currentOrder = getGridItemIdOrder();
|
|
17210
|
+
if (!(0, import_fast_deep_equal2.default)(currentOrder, initialOrder.current)) onReorder(currentOrder);
|
|
17211
|
+
dragEl.current.classList.remove(activeGridItemClass);
|
|
17212
|
+
dragEl.current = void 0;
|
|
17213
|
+
reorderViaKeyboard.current = false;
|
|
17214
|
+
initialOrder.current = currentOrder;
|
|
17215
|
+
}
|
|
17216
|
+
}, [onReorder, getGridItemIdOrder]);
|
|
17217
|
+
const cancelReorder = (0, import_react105.useCallback)(() => {
|
|
17218
|
+
if (gridEl.current && dragEl.current && initialOrder.current) {
|
|
17219
|
+
const currentOrder = getGridItemIdOrder();
|
|
17220
|
+
if (!(0, import_fast_deep_equal2.default)(currentOrder, initialOrder.current)) {
|
|
17221
|
+
const initialIndex = initialOrder.current.indexOf(dragEl.current.getAttribute(gridItemIdKey) ?? "");
|
|
17222
|
+
if (initialIndex === initialOrder.current.length - 1) {
|
|
17223
|
+
const gridItems = getGridItems();
|
|
17224
|
+
const lastGridItem = gridItems[gridItems.length - 1];
|
|
17225
|
+
gridEl.current.insertBefore(dragEl.current, lastGridItem.nextSibling);
|
|
17226
|
+
} else {
|
|
17227
|
+
const nextSiblingIndex = initialOrder.current[initialIndex + 1];
|
|
17228
|
+
const nextSibling = gridEl.current.querySelector(`[${gridItemIdKey}="${nextSiblingIndex}"]`);
|
|
17229
|
+
if (nextSibling) {
|
|
17230
|
+
gridEl.current.insertBefore(dragEl.current, nextSibling);
|
|
17231
|
+
}
|
|
17232
|
+
}
|
|
17233
|
+
}
|
|
17234
|
+
dragEl.current.classList.remove(activeGridItemClass);
|
|
17235
|
+
dragEl.current = void 0;
|
|
17236
|
+
reorderViaKeyboard.current = false;
|
|
17237
|
+
}
|
|
17238
|
+
}, [getGridItemIdOrder, getGridItems]);
|
|
17239
|
+
const onMove = (0, import_react105.useCallback)((e) => {
|
|
17240
|
+
if (!reorderViaKeyboard.current && dragEl.current && cloneEl.current && gridEl.current) {
|
|
17241
|
+
const clientX = "clientX" in e ? e.clientX : e.touches[0].clientX;
|
|
17242
|
+
const clientY = "clientY" in e ? e.clientY : e.touches[0].clientY;
|
|
17243
|
+
const left = dragEl.current.style.left ? parseInt(dragEl.current.style.left) : 0;
|
|
17244
|
+
const top = dragEl.current.style.top ? parseInt(dragEl.current.style.top) : 0;
|
|
17245
|
+
const x = clientX - transformFrom.current.x - left;
|
|
17246
|
+
const y = clientY - transformFrom.current.y - top;
|
|
17247
|
+
dragEl.current.style.transform = `translate(${x}px, ${y}px)`;
|
|
17248
|
+
const maybeTarget = "touches" in e ? document.elementFromPoint(clientX, clientY) : e.target;
|
|
17249
|
+
const target = maybeTarget instanceof HTMLElement ? maybeTarget?.closest(`[${gridItemIdKey}]`) : void 0;
|
|
17250
|
+
if (target instanceof HTMLElement && target !== cloneEl.current && target !== dragEl.current) {
|
|
17251
|
+
const targetPos = target.getBoundingClientRect();
|
|
17252
|
+
const isHalfwayPassedTarget = (clientY - targetPos.top) / (targetPos.bottom - targetPos.top) > 0.5 || (clientX - targetPos.left) / (targetPos.right - targetPos.left) > 0.5;
|
|
17253
|
+
const shouldInsert = isHalfwayPassedTarget && target.nextSibling !== cloneEl.current || !isHalfwayPassedTarget && target.previousSibling !== cloneEl.current;
|
|
17254
|
+
if (shouldInsert) {
|
|
17255
|
+
gridEl.current.insertBefore(cloneEl.current, isHalfwayPassedTarget ? target.nextSibling : target);
|
|
17256
|
+
}
|
|
17257
|
+
}
|
|
17258
|
+
}
|
|
17259
|
+
}, []);
|
|
17260
|
+
const onDragStart = (0, import_react105.useCallback)(
|
|
17261
|
+
(e) => {
|
|
17262
|
+
if (!reorderViaKeyboard.current && dragEl.current && gridEl.current) {
|
|
17263
|
+
initReorder();
|
|
17264
|
+
const gridRect = gridEl.current.getBoundingClientRect();
|
|
17265
|
+
const rect = dragEl.current.getBoundingClientRect();
|
|
17266
|
+
const clientX = "clientX" in e ? e.clientX : e.touches[0].clientX;
|
|
17267
|
+
const clientY = "clientY" in e ? e.clientY : e.touches[0].clientY;
|
|
17268
|
+
const top = rect.top - gridRect.top;
|
|
17269
|
+
const left = rect.left - gridRect.left;
|
|
17270
|
+
transformFrom.current = { x: clientX - left, y: clientY - top };
|
|
17271
|
+
cloneEl.current = dragEl.current.cloneNode();
|
|
17272
|
+
cloneEl.current?.setAttribute(
|
|
17273
|
+
"style",
|
|
17274
|
+
`border-width: 2px; border-color: ${"rgba(201, 201, 201, 1)" /* Gray400 */}; border-style: dashed; width:${rect.width}px; height:${rect.height}px;`
|
|
17275
|
+
);
|
|
17276
|
+
cloneEl.current?.setAttribute(gridCloneKey, "true");
|
|
17277
|
+
cloneEl.current.removeAttribute("id");
|
|
17278
|
+
cloneEl.current?.classList.remove(activeGridItemClass);
|
|
17279
|
+
gridEl.current.insertBefore(cloneEl.current, dragEl.current.nextSibling);
|
|
17280
|
+
dragEl.current.setAttribute(
|
|
17281
|
+
"style",
|
|
17282
|
+
`pointer-events: none; position:fixed; z-index: 9999; top:${top}px; left:${left}px; width:${rect.width}px; height:${rect.height}px;`
|
|
17283
|
+
);
|
|
17284
|
+
gridEl.current.style.cursor = "grabbing";
|
|
17285
|
+
gridEl.current.addEventListener("mousemove", onMove);
|
|
17286
|
+
gridEl.current.addEventListener("touchmove", onMove);
|
|
17287
|
+
}
|
|
17288
|
+
},
|
|
17289
|
+
[initReorder, onMove]
|
|
17290
|
+
);
|
|
17291
|
+
const onDragEnd = (0, import_react105.useCallback)(
|
|
17292
|
+
(e) => {
|
|
17293
|
+
if (!reorderViaKeyboard.current && dragEl.current && cloneEl.current && gridEl.current) {
|
|
17294
|
+
e.preventDefault();
|
|
17295
|
+
cloneEl.current.replaceWith(dragEl.current);
|
|
17296
|
+
gridEl.current.querySelectorAll(`[${gridCloneKey}]`).forEach((el) => el.remove());
|
|
17297
|
+
dragEl.current.removeAttribute("style");
|
|
17298
|
+
gridEl.current.style.cursor = "auto";
|
|
17299
|
+
cloneEl.current = void 0;
|
|
17300
|
+
commitReorder();
|
|
17301
|
+
gridEl.current.removeEventListener("mousemove", onMove);
|
|
17302
|
+
gridEl.current.removeEventListener("touchmove", onMove);
|
|
17303
|
+
}
|
|
17304
|
+
},
|
|
17305
|
+
[commitReorder, onMove]
|
|
17306
|
+
);
|
|
17307
|
+
const onDragHandleKeyDown = (0, import_react105.useCallback)(
|
|
17308
|
+
(e) => {
|
|
17309
|
+
const moveHandle = e.target;
|
|
17310
|
+
if (dragEl.current instanceof HTMLElement && moveHandle instanceof HTMLElement && gridEl.current) {
|
|
17311
|
+
const isSpaceKey = e.key === " ";
|
|
17312
|
+
if (isSpaceKey && !reorderViaKeyboard.current) {
|
|
17313
|
+
e.preventDefault();
|
|
17314
|
+
reorderViaKeyboard.current = true;
|
|
17315
|
+
document.addEventListener("pointerdown", cancelReorder);
|
|
17316
|
+
initReorder();
|
|
17317
|
+
return;
|
|
17318
|
+
}
|
|
17319
|
+
if (!reorderViaKeyboard.current) {
|
|
17320
|
+
return;
|
|
17321
|
+
}
|
|
17322
|
+
const isEnterKey = e.key === "Enter";
|
|
17323
|
+
const isTabKey = e.key === "Tab";
|
|
17324
|
+
if (isEnterKey || isSpaceKey || isTabKey) {
|
|
17325
|
+
if (!isTabKey) {
|
|
17326
|
+
e.preventDefault();
|
|
17327
|
+
}
|
|
17328
|
+
commitReorder();
|
|
17329
|
+
if (isEnterKey) {
|
|
17330
|
+
moveHandle.blur();
|
|
17331
|
+
}
|
|
17332
|
+
document.removeEventListener("pointerdown", cancelReorder);
|
|
17333
|
+
return;
|
|
17124
17334
|
}
|
|
17125
|
-
|
|
17126
|
-
|
|
17127
|
-
|
|
17128
|
-
|
|
17129
|
-
|
|
17130
|
-
|
|
17131
|
-
|
|
17132
|
-
|
|
17133
|
-
|
|
17134
|
-
|
|
17135
|
-
|
|
17136
|
-
|
|
17335
|
+
if (e.key === "Escape") {
|
|
17336
|
+
e.preventDefault();
|
|
17337
|
+
cancelReorder();
|
|
17338
|
+
document.removeEventListener("pointerdown", cancelReorder);
|
|
17339
|
+
return;
|
|
17340
|
+
}
|
|
17341
|
+
const movingLeft = ["ArrowLeft", "ArrowUp"].includes(e.key);
|
|
17342
|
+
const movingRight = ["ArrowRight", "ArrowDown"].includes(e.key);
|
|
17343
|
+
if (movingLeft || movingRight) {
|
|
17344
|
+
e.preventDefault();
|
|
17345
|
+
const gridItems = getGridItems();
|
|
17346
|
+
const currentIndex = gridItems.map((child) => child.getAttribute(gridItemIdKey)).filter(isDefined).indexOf(dragEl.current.getAttribute(gridItemIdKey));
|
|
17347
|
+
const newIndex = movingLeft ? currentIndex - 1 : currentIndex + 2;
|
|
17348
|
+
const insertBeforeElement = gridItems[newIndex] ?? gridItems[gridItems.length - 1].nextSibling;
|
|
17349
|
+
if (movingLeft && currentIndex > 0 || movingRight && currentIndex < gridItems.length - 1) {
|
|
17350
|
+
gridEl.current.insertBefore(dragEl.current, insertBeforeElement);
|
|
17137
17351
|
}
|
|
17138
|
-
|
|
17139
|
-
|
|
17140
|
-
|
|
17141
|
-
|
|
17142
|
-
|
|
17143
|
-
|
|
17144
|
-
return /* @__PURE__ */ (0,
|
|
17145
|
-
|
|
17146
|
-
/* @__PURE__ */ (0, import_jsx_runtime146.jsx)("div", { css: Css.if(!label).pt3.$, children })
|
|
17147
|
-
] });
|
|
17148
|
-
}
|
|
17149
|
-
|
|
17150
|
-
// src/components/Filters/Filters.tsx
|
|
17151
|
-
var import_react104 = require("react");
|
|
17152
|
-
var import_jsx_runtime147 = require("@emotion/react/jsx-runtime");
|
|
17153
|
-
function Filters(props) {
|
|
17154
|
-
const { filter, onChange, filterDefs, groupBy, vertical = false, numberOfInlineFilters = groupBy ? 3 : 4 } = props;
|
|
17155
|
-
const testId = useTestIds(props, filterTestIdPrefix);
|
|
17156
|
-
const { openModal } = useModal();
|
|
17157
|
-
const [pageFilters, modalFilters] = (0, import_react104.useMemo)(() => {
|
|
17158
|
-
const impls = safeEntries(filterDefs).map(([key, fn]) => [key, fn(key)]);
|
|
17159
|
-
if (!vertical && impls.length > numberOfInlineFilters) {
|
|
17160
|
-
return [
|
|
17161
|
-
Object.fromEntries(impls.slice(0, numberOfInlineFilters - 1)),
|
|
17162
|
-
Object.fromEntries(impls.slice(numberOfInlineFilters - 1))
|
|
17163
|
-
];
|
|
17164
|
-
}
|
|
17165
|
-
return [Object.fromEntries(impls), {}];
|
|
17166
|
-
}, [numberOfInlineFilters, vertical, filterDefs]);
|
|
17167
|
-
const numModalFilters = safeKeys(modalFilters).filter((fk) => filter[fk] !== void 0).length;
|
|
17168
|
-
const maybeGroupByField = groupBy ? /* @__PURE__ */ (0, import_jsx_runtime147.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(
|
|
17169
|
-
SelectField,
|
|
17352
|
+
moveHandle.focus();
|
|
17353
|
+
}
|
|
17354
|
+
}
|
|
17355
|
+
},
|
|
17356
|
+
[cancelReorder, commitReorder, initReorder, getGridItems]
|
|
17357
|
+
);
|
|
17358
|
+
return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(DnDGridContext.Provider, { value: { dragEl, onDragHandleKeyDown }, children: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
|
|
17359
|
+
"div",
|
|
17170
17360
|
{
|
|
17171
|
-
|
|
17172
|
-
|
|
17173
|
-
|
|
17174
|
-
|
|
17175
|
-
|
|
17176
|
-
|
|
17177
|
-
|
|
17178
|
-
|
|
17179
|
-
|
|
17361
|
+
ref: gridEl,
|
|
17362
|
+
css: {
|
|
17363
|
+
...Css.ctis.dg.addIn(`& .${activeGridItemClass}`, activeItemStyles ?? Css.bshModal.$).$,
|
|
17364
|
+
...gridStyles
|
|
17365
|
+
},
|
|
17366
|
+
onTouchStart: onDragStart,
|
|
17367
|
+
onMouseDown: onDragStart,
|
|
17368
|
+
onTouchEnd: onDragEnd,
|
|
17369
|
+
onMouseUp: onDragEnd,
|
|
17370
|
+
...tid,
|
|
17371
|
+
children
|
|
17180
17372
|
}
|
|
17181
|
-
) })
|
|
17182
|
-
|
|
17183
|
-
|
|
17373
|
+
) });
|
|
17374
|
+
}
|
|
17375
|
+
var gridItemIdKey = "dndgrid-itemid";
|
|
17376
|
+
var gridCloneKey = "dndgrid-clone";
|
|
17377
|
+
var activeGridItemClass = "dndgrid-active";
|
|
17378
|
+
|
|
17379
|
+
// src/components/DnDGrid/DnDGridItemHandle.tsx
|
|
17380
|
+
var import_react_aria49 = require("react-aria");
|
|
17381
|
+
var import_jsx_runtime152 = require("@emotion/react/jsx-runtime");
|
|
17382
|
+
function DnDGridItemHandle(props) {
|
|
17383
|
+
const { dragHandleProps, icon = "move", compact = false, color } = props;
|
|
17384
|
+
const { focusProps, isFocusVisible } = (0, import_react_aria49.useFocusRing)();
|
|
17385
|
+
const { hoverProps, isHovered } = (0, import_react_aria49.useHover)({});
|
|
17386
|
+
const tid = useTestIds(props, "dragHandle");
|
|
17387
|
+
const iconButtonNormal2 = Css.hPx(28).wPx(28).br8.bw2.$;
|
|
17388
|
+
const iconButtonCompact2 = Css.hPx(18).wPx(18).br4.bw1.$;
|
|
17389
|
+
return /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(
|
|
17390
|
+
"button",
|
|
17184
17391
|
{
|
|
17185
17392
|
css: {
|
|
17186
|
-
...
|
|
17393
|
+
...compact ? iconButtonCompact2 : iconButtonNormal2,
|
|
17394
|
+
...Css.cursor("grab").bcTransparent.bss.bgTransparent.outline0.dif.aic.jcc.transition.if(isFocusVisible).bcBlue700.$,
|
|
17395
|
+
...isHovered && Css.bgGray200.$
|
|
17187
17396
|
},
|
|
17188
|
-
...
|
|
17189
|
-
|
|
17190
|
-
|
|
17191
|
-
safeEntries(pageFilters).map(([key, f]) => /* @__PURE__ */ (0, import_jsx_runtime147.jsx)("div", { children: f.render(filter[key], (value) => onChange(updateFilter(filter, key, value)), testId, false, vertical) }, key)),
|
|
17192
|
-
Object.keys(modalFilters).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(
|
|
17193
|
-
Button,
|
|
17194
|
-
{
|
|
17195
|
-
label: "More Filters",
|
|
17196
|
-
endAdornment: numModalFilters > 0 && /* @__PURE__ */ (0, import_jsx_runtime147.jsx)("span", { css: Css.wPx(16).hPx(16).fs0.br100.bgBlue700.white.tinySb.df.aic.jcc.$, children: numModalFilters }),
|
|
17197
|
-
variant: "secondary",
|
|
17198
|
-
onClick: () => openModal({
|
|
17199
|
-
// Spreading `props` to pass along `data-testid`
|
|
17200
|
-
content: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(FilterModal, { ...props, filter, onApply: onChange, filters: modalFilters })
|
|
17201
|
-
}),
|
|
17202
|
-
...testId.moreFiltersBtn
|
|
17203
|
-
}
|
|
17204
|
-
),
|
|
17205
|
-
Object.keys(filter).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime147.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(Button, { label: "Clear", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn }) })
|
|
17206
|
-
]
|
|
17397
|
+
...(0, import_react_aria49.mergeProps)(dragHandleProps, focusProps, hoverProps),
|
|
17398
|
+
...tid,
|
|
17399
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(Icon, { icon, inc: compact ? 2 : void 0, color })
|
|
17207
17400
|
}
|
|
17208
17401
|
);
|
|
17209
17402
|
}
|
|
17210
|
-
var _Filters = (0, import_react104.memo)(Filters);
|
|
17211
17403
|
|
|
17212
|
-
// src/components/
|
|
17213
|
-
var
|
|
17214
|
-
function
|
|
17215
|
-
|
|
17216
|
-
|
|
17217
|
-
|
|
17218
|
-
|
|
17219
|
-
|
|
17220
|
-
|
|
17221
|
-
|
|
17222
|
-
|
|
17223
|
-
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
17224
|
-
return /* @__PURE__ */ (0, import_jsx_runtime148.jsx)(
|
|
17225
|
-
Switch,
|
|
17226
|
-
{
|
|
17227
|
-
...props,
|
|
17228
|
-
selected: value === void 0 ? false : value === onValue,
|
|
17229
|
-
label: this.label,
|
|
17230
|
-
labelStyle: inModal || vertical ? "filter" : "inline",
|
|
17231
|
-
onChange: (on) => {
|
|
17232
|
-
setValue(on ? onValue : offValue);
|
|
17233
|
-
},
|
|
17234
|
-
...this.testId(tid)
|
|
17404
|
+
// src/components/DnDGrid/useDnDGridItem.tsx
|
|
17405
|
+
var import_react106 = require("react");
|
|
17406
|
+
function useDnDGridItem(props) {
|
|
17407
|
+
const { id, itemRef } = props;
|
|
17408
|
+
const { dragEl, onDragHandleKeyDown } = useDnDGridContext();
|
|
17409
|
+
const { dragItemProps, dragHandleProps } = (0, import_react106.useMemo)(
|
|
17410
|
+
() => {
|
|
17411
|
+
function initDraggable() {
|
|
17412
|
+
if (itemRef.current) {
|
|
17413
|
+
dragEl.current = itemRef.current;
|
|
17414
|
+
}
|
|
17235
17415
|
}
|
|
17236
|
-
|
|
17237
|
-
|
|
17238
|
-
|
|
17239
|
-
|
|
17240
|
-
|
|
17241
|
-
|
|
17242
|
-
|
|
17243
|
-
|
|
17244
|
-
|
|
17245
|
-
|
|
17246
|
-
|
|
17247
|
-
|
|
17248
|
-
|
|
17249
|
-
|
|
17416
|
+
return {
|
|
17417
|
+
dragItemProps: { [gridItemIdKey]: id },
|
|
17418
|
+
dragHandleProps: {
|
|
17419
|
+
onMouseDown: initDraggable,
|
|
17420
|
+
onTouchStart: initDraggable,
|
|
17421
|
+
onKeyDown: (e) => {
|
|
17422
|
+
initDraggable();
|
|
17423
|
+
onDragHandleKeyDown(e);
|
|
17424
|
+
}
|
|
17425
|
+
}
|
|
17426
|
+
};
|
|
17427
|
+
},
|
|
17428
|
+
// TODO: validate this eslint-disable. It was automatically ignored as part of https://app.shortcut.com/homebound-team/story/40033/enable-react-hooks-exhaustive-deps-for-react-projects
|
|
17429
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17430
|
+
[dragEl, id, itemRef]
|
|
17431
|
+
);
|
|
17432
|
+
return { dragHandleProps, dragItemProps };
|
|
17250
17433
|
}
|
|
17251
|
-
var filterTestIdPrefix = "filter";
|
|
17252
17434
|
|
|
17253
17435
|
// src/components/Grid/ResponsiveGrid.tsx
|
|
17254
|
-
var
|
|
17436
|
+
var import_jsx_runtime153 = require("@emotion/react/jsx-runtime");
|
|
17255
17437
|
function ResponsiveGrid(props) {
|
|
17256
17438
|
const { children, ...hookProps } = props;
|
|
17257
17439
|
const { gridStyles } = useResponsiveGrid(hookProps);
|
|
17258
|
-
return /* @__PURE__ */ (0,
|
|
17440
|
+
return /* @__PURE__ */ (0, import_jsx_runtime153.jsx)("div", { css: { ...gridStyles }, children });
|
|
17259
17441
|
}
|
|
17260
17442
|
|
|
17261
17443
|
// src/components/Grid/ResponsiveGridItem.tsx
|
|
17262
|
-
var
|
|
17444
|
+
var import_jsx_runtime154 = require("@emotion/react/jsx-runtime");
|
|
17263
17445
|
function ResponsiveGridItem(props) {
|
|
17264
17446
|
const { colSpan, children } = props;
|
|
17265
17447
|
const { gridItemProps } = useResponsiveGridItem({ colSpan });
|
|
17266
|
-
return /* @__PURE__ */ (0,
|
|
17448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime154.jsx)("div", { ...gridItemProps, children });
|
|
17267
17449
|
}
|
|
17268
17450
|
|
|
17269
17451
|
// src/components/Grid/useResponsiveGrid.ts
|
|
17270
|
-
var
|
|
17452
|
+
var import_react107 = require("react");
|
|
17271
17453
|
|
|
17272
17454
|
// src/components/Grid/utils.ts
|
|
17273
17455
|
var gridItemDataAttribute = "data-grid-item-span";
|
|
@@ -17275,7 +17457,7 @@ var gridItemDataAttribute = "data-grid-item-span";
|
|
|
17275
17457
|
// src/components/Grid/useResponsiveGrid.ts
|
|
17276
17458
|
function useResponsiveGrid(props) {
|
|
17277
17459
|
const { minColumnWidth, gap, columns } = props;
|
|
17278
|
-
const gridStyles = (0,
|
|
17460
|
+
const gridStyles = (0, import_react107.useMemo)(() => {
|
|
17279
17461
|
const gapCount = columns - 1;
|
|
17280
17462
|
const totalGapWidth = gap * gapCount;
|
|
17281
17463
|
const maxColumnWidth = `calc((100% - ${totalGapWidth}px) / ${columns})`;
|
|
@@ -17316,24 +17498,24 @@ function useResponsiveGridItem({ colSpan = 1 }) {
|
|
|
17316
17498
|
}
|
|
17317
17499
|
|
|
17318
17500
|
// src/components/HbLoadingSpinner.tsx
|
|
17319
|
-
var
|
|
17501
|
+
var import_react108 = __toESM(require("react"), 1);
|
|
17320
17502
|
|
|
17321
17503
|
// src/components/HbLoadingSpinner.base64.ts
|
|
17322
17504
|
var HbLoadingSpinner_base64_default = "data:image/gif,GIF89a%80%00%80%00%E7%00%00%00%00%00%0D%0D%0D%16%16%16%1C%1C%1C%22%22%22%26%26%26%2A%2A%2A...222555888%3B%3B%3B%3D%3D%3D%40%40%40BBBEEEGGGIIIKKKMMMOOOQQQSSSUUUVVVXXXZZZ%5C%5C%5C%5D%5D%5D___%60%60%60bbbccceeefffhhhiiijjjlllmmmnnnpppqqqrrrsssuuuvvvwwwxxxyyyzzz%7C%7C%7C%7D%7D%7D~~~%7F%7F%7F%80%80%80%81%81%81%82%82%82%83%83%83%84%84%84%85%85%85%86%86%86%87%87%87%88%88%88%89%89%89%8A%8A%8A%8B%8B%8B%8C%8C%8C%8D%8D%8D%8E%8E%8E%8F%8F%8F%90%90%90%91%91%91%92%92%92%93%93%93%94%94%94%95%95%95%96%96%96%97%97%97%98%98%98%99%99%99%9A%9A%9A%9B%9B%9B%9C%9C%9C%9D%9D%9D%9E%9E%9E%9F%9F%9F%A0%A0%A0%A1%A1%A1%A2%A2%A2%A3%A3%A3%A4%A4%A4%A5%A5%A5%A6%A6%A6%A7%A7%A7%A8%A8%A8%A9%A9%A9%AA%AA%AA%AB%AB%AB%AC%AC%AC%AD%AD%AD%AE%AE%AE%AF%AF%AF%B0%B0%B0%B1%B1%B1%B2%B2%B2%B3%B3%B3%B4%B4%B4%B5%B5%B5%B6%B6%B6%B7%B7%B7%B8%B8%B8%B9%B9%B9%BA%BA%BA%BB%BB%BB%BC%BC%BC%BD%BD%BD%BE%BE%BE%BF%BF%BF%C0%C0%C0%C1%C1%C1%C2%C2%C2%C3%C3%C3%C4%C4%C4%C5%C5%C5%C6%C6%C6%C7%C7%C7%C8%C8%C8%C9%C9%C9%CA%CA%CA%CB%CB%CB%CC%CC%CC%CD%CD%CD%CE%CE%CE%CF%CF%CF%D0%D0%D0%D1%D1%D1%D2%D2%D2%D3%D3%D3%D4%D4%D4%D5%D5%D5%D6%D6%D6%D7%D7%D7%D8%D8%D8%D9%D9%D9%DA%DA%DA%DB%DB%DB%DC%DC%DC%DD%DD%DD%DE%DE%DE%DF%DF%DF%E0%E0%E0%E1%E1%E1%E2%E2%E2%E3%E3%E3%E4%E4%E4%E5%E5%E5%E6%E6%E6%E7%E7%E7%E8%E8%E8%E9%E9%E9%EA%EA%EA%EB%EB%EB%EC%EC%EC%ED%ED%ED%EE%EE%EE%EF%EF%EF%F0%F0%F0%F1%F1%F1%F2%F2%F2%F3%F3%F3%F4%F4%F4%F5%F5%F5%F6%F6%F6%F7%F7%F7%F8%F8%F8%F9%F9%F9%FA%FA%FA%FB%FB%FB%FC%FC%FC%FD%FD%FD%FE%FE%FE%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%21%FF%0BNETSCAPE2.0%03%01%00%00%00%21%FE%11Created%20with%20GIMP%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%DD%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%EC7%80%80%C7%02%02%EC%0D%40%99%F2%E4%CA%92%2F%5B%E6%5B%99%B1%E7%CF%A0C%8B%1EM%BA%B4%E9%D3%A8S%AB%5E%CD%BA%B5%EB%D7%B0c%CB%9EM%BB%B6%ED%DB%B8s%EB%DE%CD%BB%B7%EF%DF%C0%83%D7%0E%08%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FC%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF7%03%88%1E-Z%80%E9%01%04%0A%188p%00A%82%05%0D%1EH%A8%C0%964i%D3%02P%ABn%FD%9A%01%5C%DB%A3O%EB%5EM%17x%00%DC%A8%EF%1A%3F%0E%BA%B9%F3%E7%D0%A3K%9FN%BD%BA%F5%EB%D8%B3k%DF%CE%BD%3B%CA%80%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF%20%03%88%160%80%40%81%03%09%16%40%B0%D0%A1%04%8C%1EK%B0%90%89%B3%87%D0%A2H%966y%0A5%AAT%29S%A7P%A5J%A5J%D5%AA%E3%C8Y%B1Z%15U%F4h%D2%04%0C%20X%F0%80B%06%11%2Cp%14%A1%22%06%0E%9FB%8D%2A%B7m%02E%EAT%AAU%AD%5C%BD%82%05%2B%96%AC%F7%B2f%C9%9FO%D5y%00%E8%A8%19%3C%60%5D%C2%05%8F%25Y%981%87%1F%88DrI%27%A2%94%82%8A%2A%E9%AD%D7%1E%7C%F1%CD7KU%F6A%27%9D%02%0EH%80%C1%07%29%D0%10%84%13%5D%ACq%C7%20%8CL%A2%09y%A7%A8%C2J%2B%EB%C5%E2%DE%7B%12NhU%85%A5I%B7%80%03%13l%20%C2%0A7%18AE%18o%ECQ%88%23%96p%12%8A%82%E8%B5%F8b%84%F2%7D%E5%9C%00%D0%15p%A1~%11P%60%01%06%1Al%D0A%07%1E%7C%00%C2%97%21%84%29f%08%A0%95i%E6%99h%A6%A9%E6%9Al%B6%E9%E6%9Bp%C6%29%E7%9Ctf%15%10%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF%14%03%88%160%80%80%01%04%0D%26p%40%81C%89%965w%02%25z4%C9R%A6M%9D%3C%7D%FA%04%2AT%28Q%A3F%91%22U%AAxqS%A6N%9DB%C5%1CU%AA%E7%AA%A2%ABZE%FD%E8%E8%D2%06%124%A8%00%82%05%8F%27a%E4%D6%FCI%14%E9%12%A7O%A1%88%27_%0E%9D%3A%2BV%AD%E2%BB%9A%FF%EA%15%AC%FB%B0b%E9%8F%25%AB%BF%7F%A4%A2%05%20%80i%0A%3C%60%01%08-%F8%10%05%19t%00%B2%C8%24%99t%02%CA%28%A5%24%E7%5C%2A%D3%AD%F2%5E%7C%F2%D5g%1F~%FB%F1%E7%DF%7F%00%8A%86%5D%81%07%BA%F0%83%14%0C%06%C2%08%25%9Ax%22%0A%29%16b%E8%1E%7C%1C%D2W%1F%88%FB%8D%D8%DF%2C%B2%285%DA%80%D99%60A%08.%001E%19u%0C%D2H%25%9BLX%0A%7B%D3m%98%A3%2B%3B%F2%28%A2%8F%B3%00%F9T%80%A4%99%96%00%03%0FHP%C1%05%19l%C0A%07%1Dx%E0%C1%07p%C6%F9%01%08t%D6i%27%08%21%E4%A9%E7%9E%21%80%E6%E7%9F%80%06%2A%E8%A0%84%16j%E8%A1%88%26%AA%E8%A2%8C6%9AU%40%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF%0E%03%88%1EP%E0%00%83%0A%20%60%0C%C1%82%A6%CE%9FC%8C%1EE%9AD%A9%92%25K%970e%CA%A4I%D3%A6M%9C8u%F2D%FC%D3%27P%A0B%29%17%25j%94sR%A4JI%9F%5E%CA%94%F5S%D8%7F%8A%0E0%80%80%01%05%116%EF%A4%E0%21%A5L%1DA%8B%22U%CA%04%7C%B8%F1%E4%A1%98%3F%9F~%1D%3B%2AT%A9R%A9%DA%BF%AA%3F%AB%FF%AD%04%18%A0%2B%04%BE%F2%8A%2BA%05%20%00i%08%9C%16%02%0CFl%E1%06%1F%88%3C%B2%1Ep%9E%1C%97%9C%7C%A3%40%27%5D%7D%F7%DD%A7%1F%7F%FE%01%28%60%2B%04%BAb%E0%2B%B0%BC%92%A0%82%DE%29%00%81%06%27%E8%10E%19v%0C%D2%C8%24%98l%D2%89%86%F1%3D%17%DD%87%D8%9D%22b~%24%AE%F2%1F%2B%27%A6X%E0%8A-%0A%25%9A%00%04%98FAjFh%E1%86%1F%89Dr%89%8F%C7q%E8au%A6%D8w%E4~%AA%94%C8%E4%89%28%3E%C9%22%2Cp%C2b%D4%94%0C.%E0%80%04%15%5C%90%81%06%1Bp%E0g%07%80%06%DA%81%07%84%16Z%E8%07%88%26%AA%28%A2%204%EA%E8%A3%8E%82%26%E9%A4%94Vj%E9%A5%98f%AA%E9%A6%9Cv%EA%E9%A7%A0%86%9AU%40%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF%08%03%88%1EP%00%C1%03%0C%26t%40%19%23%87%8F%A0C%8A%185r%F4%A86%A4H%B8%25%E9%9E4%89%92%EFJ%C0%2BY%1An%E9%92qL%982e%D2%C4%5C%D3%A6%E7%9C6q%9A%DE%A9%BA%A7%EB%D8u%8E.%DD%E0B%89%1CQ%CC%F2%D4%09%94%C8%91%24J%C2%8D_J%BE%9C9t%EA%D5%3Ba%FFD%FF%13%28P%A1%F2%87%12%C5%7F%94%FFQ%A4%04X%CA%80%03%9Ab%E0%29%A6h%17%C0%00%04%1C%C0%40%05%22%D4%B0D%18s%FC%91%C8%23%93Tb%9Cr%ED9%27%1D%7C%D8yR%DF%7D%F8%E9%C7_%7F%FE%05%28%20%81%06%1Ex%CA%8B%A7%28%28%00%01%06%28%20%C1%070%18%D1%05%1C~%20%82aq%ED%3D%F7a%7C%F2%898%E2%7D%26%A2%F8%9F%8A%04%B2%E8%E2%8B%A8D%89%CAN%DB%25%00%C1%06%2A%00%81%05%1B%7C%F8H%89%25%CB%7D%C8I%7C%F3%D9%87d%89%FB%9D%B8%E4%8AN%3E%09%A5%94R%FA%24%9A%00%A4%21%B0%C0%03%12TpA%06%19h%A0%C1%06%80%06%1A%28%07%84%16j%28%A1%1D%24%AA%E8%A2%8Bz%E0%E8%A3%90F%EA%01h%94Vj%E9%A5%98f%AA%E9%A6%9Cv%EA%E9%A7%A0%86%2A%EA%A8Y%05%04%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF%03%03%04%18P%E0%40%83%0B%25r%3C%11%03gO%A0B%87%10%25%9A%AD%A86%ED%DA%B8%15%CDN%A4%BB7%EE%DD%BAy%E7%BE%1D%5C%B8%EF%E0%BF%13%D1%0C%20%80t%82%07%1AR%F8%B0%92%06%8F%A0D%8D%1EE%92%C4%BD%BB%F7%EF%E0%C3%A7%8B%1FO%DE%FB%F2%D1%05%9EkX%01%C4%CA%9A%3C%83%149%8A4i%12%A5%FB%F8%F3%EB%DF%CF%1F%BF%FD%FE%00%F27%C9y%A4%21%F0%C0%06%ECa%B1%C6%1E%850%02%89%7D%95D%18%A1%25%14JXI%85%17Z%22%21%86%16%5E8%A1%86%19n%D8%21%85%20~%18%E1y%02%10%A0%9E%0A%40d%D1%06%1F%874%22%09%25%17%5Eb%E3%8D8%E6%A8%E3%8E%3C%F6%E8%E3%8D8%89%D6%1C%01%06%400%81%05%17%60%90A%06%1A4%E9%E4%93PF%29%E5%94TV%F9%24hXf%A9%E5%96%5Cv%E9%E5%97%60%86%29%E6%98d%96i%E6%99Y%05%04%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CD%01%02%08%20%60%40A%84%0E%2C~P13%87O%A0B%87b%CB%8Em%A8P%21B%84%06%09%DA%1D%A8%F7%9F%DF%7F%FC%F4%E9%C3%87%CF%9E%3Dz%F2%E0%C1s%E7%8E%9D%E7u%EA%D0%A13G%8E%9C8p%E0%BCq%D3%A6%3B%9B5%E0%D3%FE%88Gs%C6%8C%992%2CC%8B%1Ep%80%81%85%115%96%80%81%C3%A7%90%A2F%8F%20Az%C4%FF%91%23G%8D%04%C8%08%23%8B%2C%A2%88%22%89%24%82%C8%82%87%D4f%5Bn%BC%05%02%08%20%C1%F9a%21q%C7%21%97%87r%CDE7%1Du%D6e%97%DD%1B%DD%B5%14%DA%00%05%24%E0%00%06%27%EC%20%85%19u%00%82%08~%91Hbc%248%EE%E7%DF%7F%0062%20%81%08%2A%88%88l%0E%E2F%C8n%82%F4Fa%85%C3%19%A7%21%87%CEy%08%A2u%D8%C1a%A2%00%03%94%26%01%07%2C%04%91%C5%1Az%10%B2%C8%23%92L2%09%25fNrc%8E%FD%FD%17%A0%8F%05%1A%98%A0%82%B4%15%09%21oK%06G%9C%93%7Bl%98Gs%D0IG%5Du%E9%89F%40%7B%15%880%83%12_%C4%F1%07%22%8EHB%09%25%95T%3A%29%9Aj%AE%19%89%8En%0A8%A0%9C%092H%DB%83%10%2A%B9%E4%85%C5e%98%1Cs%80z%08ShNX%12P%C0%01%09%28%B0%00%03%0C4%D0%40%06%BC%F6%EA%2B%06%C0%06%8B%C1%05%C4%16k%EC%05%16%24%ABl%B2%154%EBl%B3%14D%2Bm%B4%13Tkm%B5%12d%AB%EDg%DCv%EB%ED%B7%E0%86%2B%EE%B8%E4%96k%EE%B9%E8%A6%AB%EE%BAj%05%04%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%C9%01%02%08%20%60%40%01%84%0C%25j%24%D1%92%A6N%1FA%87%10%25%9A%8D%08%D1%A1C%85%0A%0D%12%14%28%D0%9F%3F~%F8%F0%D9%93%07%CF%1D%3Bu%E8%CC%91%03%E7%8D%9B6m%D6%A8I%83%C6L%192c%C2%84%F9%E2e%8B%96%2CX%AC%FET%A1%22%25%0A%94%27M%98%2CY%92%C4H%91%21A%80%FC%F8%D1c%87%8E%1C7j%94%14%3D%A0%00%02%07%16%8C0%83%11Z%A8q%87%20%894%F2H%24%92H%12I%24%90%3C%E2H%23%8C0%B2%08m%B8%11B%08o%80%00%D7%C7py%E4q%5Crr0%F7%06t%D2Qg%1D%19bl%E7%05%17%DEeq%85%15TLQ%1E%14N%A8%97%04%12%EE%11%21%84%7C%3E%F00Rh%A2%11p%C0%02%12p%B0%82%0FR%94A%C7%1F%884%12%C9%24TR%E9%60%24%12Nh%E1%85%B6e%B8%5B%20%1D%06%07%A2q%C9-%17Gsm%B0%91%E2%19%2B%8A%01%06w%5Ch%F1%DD%8C5Jq%5Ez%EC%F1H%C4%10%3F%FE%20Rh%02%08%D0_%02%A7%95p%C3%12%5E%C0%D1%C7%21RRR%C9%A3%95Pb%25%84YR%B8%88%22%89%D8fH%21%84%7C%19%A6pz%14wG%99r%9C%F9%9C%9A%D3%B1%89%5D%18%60x%F1%E2w%B4%E1%D1xc%8EK%28%91%C4%11F%EC%19%C4%90%82%1A%C9%40%05%20%C0%40%04%16j%E4A%08%23%91Pb%C9%25%CC%5EbI%A4%92%3A%18%A1%23Z%5E%9A%E9%21%9Bn%D8%1Bp%C1%ED%11%EA%88%CA%99x%EA%1A%2A%5E%97%5D%AB%5D%C4%18%5E%156F%F1%04%AD%EC%E1J%C4I%80%0E%40%40%01%07%24%A0%C0%02%0C0%D0%C0%BF%00%03%DC%2F%06%04%13%7C%C1%C1%07%5B%A0%B0%05%154%5C%01%05%10S0%C1%C4%13K%60q%04%18G%00%C1%C6%1B%3F%E0%F1%03%0E%84%EC%40%C0%FD%96%BC%C0%C9%27%2B%A0%B2%02%09%7C%E6%F2%CB0%C7%2C%F3%CC4%D7l%F3%CD8%E7%AC%F3%CE%3C%F7%ACV%40%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%C3%01%02%0C%20%60%00A%83%09%1AH%C8%10%22%25L%9B%3B%7F%0A%25b%E4%E8%91mG%8E%1A1R%94%08%D1%A1B%84%06%05%02%F4%C7%0F%9F%3Dy%EE%D8%A13%27%CE%9B6m%D6%A49c%86%8C%980%5E%BAh%C1r%A5%CA%94%28P%9A%FE0Y%92%C4%08%91%20%40%7C%F0%D0%81%C3%06%0D%191%5E%B8%60%A1%02%C5%89%12%25F%8C%00%01%C2C%87%0D%1Ah%90%C1%05%16T%80Qh%02%90%A6%80%03%14t%90%C2%0DH%60qF%1D%7F%20%E2%88%24%95Xr%C9%86%97XR%09%25%93H%12%C9%23%B91%B2Ho%86%00%27%08q%7D%EC%A1Gru%D0%21%87s%D1MW%9D%18%60x%C1%C5vVP%21E%14O4%B1%04%12F%14%21Dz%EB%B5%F7%5E%7C-%AC%A0B%0A%27%98%40%C2%08%21%F4%E7%1F%07%01bPQh%01%080%9A%01%098PA%07%28%DC%90%84%16h%D4%11H%22%8FPrI%26%9A%C4%99I%26%1D~%18%E2%88%25%9E%E8%5B%21%83%08%12%C8%1F-%EA%81%C7%1D1%CA%01%C7s%D2%A1qc%8E%3Bb%D1%E3%8FN%8CW%1E%11G%AA%C7%9E%7B3%C47%DF%93QN%29%02%08%1F%5C%B9A%06%5B%22HZ%98%15x%90%02%0Eg%AAq%87%20%EB%8BDR%09%26%9Al%C2%C9%26%9B%C8%B9%A1%87w%92%A8%9B%9E%BF%11%B2%22%A0%7C%08J%A8%8C%87F%A7%86%A2%D61%CA%A3%8FPD%3A%A4y%95%26%89i%0C04%C9%A9%94T%82%EA%1F%80%14%21%F8%E5%82%A9%AA%80%83%12%5B%AC%91%07%21%8CHr%89%26%9Ct%22o%27%9C%DC%AAI%26%98%D4y%27%24y%F6%16%EC%B0%C6%BDx%AC%A1%88%DA%D8%AC%8E%CF%FE%18%E4%90G%18%89%E4%A54d%FA%82%B6Pr%FBi%A8%1Dp%90%11%97%5E%12P%40i%09%28%B0%00%03%0D%94%EC%C0%C9%27%97%AC%F2%CA%0C%B4%EC%F2%02%16%C4%5C%60%05%15P%60%F3%048K%A0s%04%3CC%E0%F3%03%40%A7%5C%F2%CB%0B%14%AD%C0%D1%09%24%9D%00%02L%1F%E0%B4%D3%06Dm%40%01TWM%C0%D5%04%7C%A6%F5%D6%5Cw%ED%F5%D7%60%87-%F6%D8d%97m%F6%D9h%A7%ADV%40%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9s%C4%00%01%F6%82%0E%20%20%B4%5E%D2%A4%09%188%80%80%01%84%0A%1AD%A8%A0%01%84%09%961m%EE%FC1%B4%E8%D1%24K%972i%D2%B4i%93%A6L%99.Y%B2T%89%D2%24I%90%1E9b%B4%28%11%A2C%85%06%05%FA%E3%87%CF%9E%3Cw%EA%FE%CC%89%F3%A6%CD%9A4f%C8%8C%09%E3%85K%96%2BU%A4%40q%C2D%C9%11%22B~%F4%D8%91%C3%06%8D%180%B8%C0%82%0A%28%98%40%C2%08%21%7C%E0A%07%1Ch%90%01%06%16T%40%C1%04%12D%00%C1%03%0F4%D0%C0%02%0B%28%E0a%02%08%20%20P%00%03%0CP%C0%01%09%B8F%81%06%21%AC%60%C3%10Pla%86%1C%7B%10%B2%88%24%97h%D2%09%28%A2%8C2%0A%29%3E%8E%22%8A%28%A0%80%F2I%27%9Cpr%1C%26%974%27I%24%D2Q%97%08v%84l%D7%9D%1Ex%D8A%87%1Cp%98%97%C6%19e%88%01%86%17%5BdaE%7CP4%B1D%12F%0C%01%84%0F%3C%E4p%03%0D3%048%60%81%07%86%00%C2%82%0DfpA%84%13Vx%A1%03%1A2%D0%E1%87%00%90%A8%1A%02%0B%3C%40A%06%20%A4%20%C3%0FKdA%06%1Cz%0C%B2H%24%96l%F2I%28%A2%90R%CA%A8%A3%92%02%A4%28%A1%18%E9%09%92%C6%25g%89s%FE%D09%D2%08%23%D6%19B%88%20%DBy%07%9Ex%E4y%99%5E%18_t%A1%05%16VL%21%05%7D%F6%E1%A7%9F%0E8%D80C%0C%2F%B4%B0B%0Ax%22%A8%60%07%1B%3C%F8g%A0%12%400h%03%86r%E8a%A2%27%26%D0%40%04%17x%60B%0C%3D%24aE%18m%E0%11H%22%9Cn%E2I%A8%A3%9Ar%8A%29%FC%9AR%AA%90%A9~%B2%AA%92%99%60%C2%1C%25OJ%D7Hu%88%14r%2B%20Wf%B9%25%1Cn%B0%A1%06%98c%8C%B9%85%16%F0%C9%E7%C4%9Am%02%D1%03%0F%CC%D6%20%83%9D%2A%A4pB%09%23%88%00%C2%07%0C%3A%08%A1%84%14Z%08%01%A1%E0%8A%AB%00%00%02%A4%F8%DA%06%23%B4%90%83%11S%7C%A1F%1D%7F%20%F2H%25%9E%E2%7B%CA%29%A8D%8D%CA%D3%FC%96r%2A%AAF%B2%BA%E4%AB%CFE%B7%B0%22%D7e%B7%5D%1F%DF%857%B1%AFd%00%DBE%99%C5J%F1D%13%C9%06%A1%DF%0E%CD%D2p%B2%B4%04%9AP%82w%08%09.%B8%81%06%18l%3BA%CD%DF%86%DB%E1%88%A4%090%00%01%04%14%B0Z%02%0A%2C%C0%00%03%0D8%E0%00%86%98g%AE9%86%96wn%B9%86%A0%83%3B%F9%E8%1C%96%EE%E1%E0%83KPa%046c%FE%B9%E8%86%7F%98%00%88%21%1E%60%FB%01%06%E4%5E%C0%EE%BB3%CEx%89%C0%03%2F%C0%F0%C4%97%06%9Ag%C8%27%AF%FC%F2%CC7%EF%FC%F3%D0G%2F%FD%F4%D4Wo%FD%F5%7B%05%04%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1c%AD%01%FAF%0E%40yo%00%01%98%23%E7%0D0%A03%01%02z%03%140p%E0%80%01%BD%02%12%28%60%E0%80%81%5E%02%0F%24P%B80A%EF%81%0C%1CB%94%F0%A0w%01%8A%163t%B8%D0%1B%C1%07%91%25R%84%E8%D5p%C5%0B%994V%F4%8ExC%27%8F%1F4z%5B%0CB%B4%E8Q%1D%BD6%26%FEY%CA%B4%E9%8F%5E%1F%9EB%89%22eH%AF%10S%A7R%A9Z%A4%D7%08%2BV%ADZ5%D2%9B%C4%D5%AB%FF%8E%E8%A5D%2C%04%C6%F2%88%80%B2%24%28%CB%2B%AA%A8%92%CA%83%A8%A0r%CA%84%A6%94ba%29%A4%8C2%8A%28%A1%80%02%8A%27%9Et%C2%89%26%99%60r%89%25%95L%22I%24%8F8%C2%C8%22%89%1Cb%08%21%82%FC%E1%07%1Fz%DCa%07%1Dr%C0%D1%C6%1Ai%98A%86%18_p%A1%05%16UH%F1%04%13K%20a%C4%10%40%F4%A0%03%0E5%CC%10%83%0B%2C%A4%80B%09%24%8C%10%C2%07%1Dp%A0A%06%17TP%01%05%13D%00%C1%03%0E%B4%C6%C0%02%0A%24%90%00%02%08%94V%9A%01%05%E4%F9%D9g%00%2C%A1%E0%9F%05%C2%02%CB%7F%AE%E4%97%1F%2B%AB4%98J%84%A7T%98%21%87%A0%7C%22%E2%26%99%9CH%C9%24%91%40%E2%22%8C%87%14%22H%207%EA%81%87%1Ds%C4%F1%06%1Bj%9C%21d%18%5E%1C%99%24%14%FEM4Y%84%10%3F%F0%A0%C3%0D4%C8%00C%0B%2B%A4p%82%09%24%7C%E9A%07%1Bh%80%81%05%15L%20%81%9A%0F%B0%D9%C0%9B%0AD%3Bg%9D%A6%E5Y%C0%9E%A0-1%CB%2C%7F%CA%12%A8%A0%AF%B8Rh%2B%F7%AD%92%28%84%8Db%B8a%87%9Fx%C2%C9%26%24%A2%A8%22%8B%8DpZ%08%21%81%FC%C1%C7%1E%A3%F2%E8%23%90%AB%B6%8A%85%15SD%E1%C4%12I%3C%19%E5%94U%C6%F0%02%0B%2A%FCJ%82%08%20%80%B9A%06%18%94%89%A6%9Ak%3A%F0%2C%B4q%D2Y%27%9Ez%EE%D9%E7%B6%DC%2A%F8%ED%A0%E1%8E%5B%AE%83%8B%A6%FB%28%BB%21%8EX%A9%25%94%AC%F8H%23%8C%28%82%C8%8C%F9%F6%B1G%1Ew%D4%D1%A3%1B%00%93%C1%2A%17YXA%85%92%08%1BAD%10%3E%EC%80%83%0D3%C8%F0B%0B%2A%A0%00%AC%08_%86i%EC%05%C8%A6%19A%04%CE2%00%B2%02t%DAi%ED%B5%7Cj%8B2%A0%04%82%DB%B2%A1%88%2A%2Aa%A0%85%18%8A%02i%CD%94Z%8Ai%8B%2F%C6%E8%29%207%12%5D%07%1D%A6%A2z%C6%90_t%A1%C5%15%AF2%A1%C4%11%B3%D6%9A%83%0D4%C4%00%83%0B%BD%9EP%82%97%1F%0C%7B1%D9%C9.%DBq%03%CF.%00%27%DBmW%5B2h%05%9C%CD1%04%B8%E7%AE%FB%EE%CD%F6%EE%3B%9Bm%06%EF1%EB%AC%ABm%BC%EB%AEG%AB%BC%9Cr%E6%DEl%9B%C4%AB%9D%BC%B4%D3Rk%9A%01%D8%BF%8Dmg%DC%0F%80%D9%F7%99Q%26%FE%F8%E4k%F6%D8%F9%E8%A7%AF%FE%FA%EC%B7%EF%FE%FB%F0%C7%2F%FF%FC%F4%D7o%FF%FD%F8%DF%14%10%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%85%06%000xo%80%C3%87%F5%06%18%C0X%40a%BC%02%0AH.%40%40%EF%80%04%98%13%18%D0%5B%00%82g%08%0C%F4%22%D0%B0%A1%F4%04%BD%0DV%B0%60%B1%E2%83%5E%0AB%86%C8%86%A1%D7%03%97%DB%5C%8A%E8EAg%8E%EF%2Czg%1C%1A~%28%8D%5E%1E%95%2AY%B2tG%AF%10P%D0A%01%D2k%E4%94%F5S%86%F4%26a%C5%9D%95%22%BDK%5E%FE%B9%1A%DF%08%3C%2CX%AF%5E9%D2%CB%24%96%7BX%EB%F32%91%25%CB%FD%23%F6%F4%EB%DF%97%9F%3F%D6~%BC%F3%D5%E7%1F~%F4%0D%C8_%81%FF%DD%15%A0~%04%DAG%20%83%07B%08%60%7F%09%DA%B5%04%85%E0a%98%D7%85%08f%D8%E1%86%05%C6%E2J%2A%A9%A0%82%8Au%A6%94%A2b%29%A4%8C%22J%28%A1%80%F2%89%27%9Dp%B2I%26%98%5CbI%25%94H%12%C9%23%8D0%A2%08%22%87%14BH%20%7F%F8%B1G%1Ev%D4%21%07%1Cm%AC%91%86%19d%88%01F%17Z%60Q%85%14O0%B1D%12E%08%F1C%0F%3A%D8%40C%0C0%B8%B0B%0A%26%900B%08%1Ft%C0%81%06%19%5C%60A%05%14H%10%81g%0E4%C0%C0%02%0B%28%A0%40%02%08%1C%60%E8%01%06%18%20%19%01%8C%12%C0%D8%A3%02D%0A%00%87%EE%BD%87%9Ex%ADd%CA%CA%2A%AB%A8R%E2%89%29%B6%F8%E2%8C5%DE%A8c%8F%3F%069%A4%21G%FE%D1%C7%1E%FEx%D8AG%1Co%B0%A1%C6%19f%8Cq%A5%16WP%21%05%14M%28q%04%11A%F4%B0%03%0E6%CC%10%83%9A%29%9CP%C2%08%22%80%E0%01%07%1Bh%80%C1%9D%13%E8%19%C1%03%0E%FC%09%A8%A0%98%15%8A%E8d%8D%3A%FA%E8%00%91%0A0i%7F%96%A6%E7J%A6%ADl%DA%E9%A7%A7%84%EAb%8C4r%A2I%26%A7%FA%08%24%23%89%20b%24%92%AF%C6J%87%1Co%B4%A1%06%1Ae%E8%8Ae%AF%5C2%21%2C%11%40%90%89C%0D%CA2%7B%82%09oJ%DB%C1%06%19%60pA%05%D9J%00%01%B7%0Cx%0B.%02%E2%2A%BAh%B9%E7%A6%BBn%88%B1%9C%E7.%BC%DC%CDkb%BD%2C%DEK%AA%BE%FCZ%82%EA%BFC%0E%EC%2A%AC%B2%3E%A90%C3b%7C%C1%85%16V%F8%DA%E5%C4%15%EBp%F1%0Ci%AE%E9%2C%B4%1E%83%7C-%C9z%9E%DC%A7%9F%81%0E%CA%B2%A1.S%D6h%CC2s%28%E0y%97%8E%A7%29%A7%9E%96%C8%B3%A8%A1%7C%F2I%87%A9A%0F%DD%C8%22%01%1B%5Dp%1D%07C%B9%C6%19e4%8De%D4%11%0B%3BD%C5%C7%26%9Bu%0A%28%3C%1BB%D7%21%8F%9C%ED%9E%DC%F6%A92%A1-%93%BB6%DB%EAv%F6%D9%E9%A8%7B%F6%C0%EA%AC%B3%EE%C0%EB%B07%20%FB%EC%29%A7%0C%E8%ED%82%82%9B%19%CBg%1B%2A%BB%ED%DF%0E%1A%AE%B8%88%26%3A%99%DA%A3C%9An%BA%885%EF%BC%F3%81E%2F%FD%F4%D4Wo%FD%F5%D8g%AF%FD%F6%DCw%EF%FD%F7%E0%87%2F%FE%F8%E4%8B%14%10%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%9F%06%0007nB%01%02%02%E8%B5k0%C0%00%02%80%07%E0%D5%5B7n%80%03%0A%10%208%60%A0%00%81%01%03%0A%C7%3DPA%C2%03%07%0C%16%24%40%60%40r%DC%05%23%3Ch%B8P%B9A%01%BE%04%25%D8%80%A1%A2%04%08%07%9E%F9jx%82%04%88%0E%13%A8%0D%8E0%03%26%8B%14%1C%B9%0B%B6%D8S%07N%9A%25%C1%09%D6%60%84h%90%1F%2F%C9%07%F2%D0tI%92%237%D1%05%0A%19%15%AA%D3%26%3D%D9%01%FE%14Iu%AA%D4%28A%E1%91%B4b%B5%2A%15%A2%F0J%5E%B9j%D5j%11%7CX%B0%E47%0A%BF%24V%2C%FC%8E%F0%27%8B%2C%FF%05%98%DD%12%03%FA%F7HxL%24%18%CB%82%07%3A%08at%08%12%F8%A0%80%16N%98%5C%83%192h%21%2C%1A%06%D7%A0%7F%17f7%A2%82%1E%92%18bnL%F8%07%20%83.%C2b%60t-%FE%27%23%8C.%CE%98%5C%7F6%EA%28b%8C%3E%B2%08%24%7FC%1Eh%E3%2B%FB%1D%88_~IR%B8%24%92%FC%3D%D9%E4%8E%F8%BD%02%A5%92%F9%5D%E9d%96S%06%B7D%96%AEt%99%5B%7CV%BA%C2%08%7CV%CAwfvd%BA%12%26%9A%F2%99%19%5E%12e%B6%B2J%29x%922%8A%28%A2%84%02%CA%27%9Ex%D2%09%27%9Bh%82%C9%25%96TB%89%24%91%3C%D2%08%23%8A%24r%88%21%84%04%F2%87%1F%7C%E8%81%87%1Dt%C8%01G%1Bk%A4a%06%19b%80%E1%85%16XT%21%C5%13L%2C%91%84%11%FEC%FC%D0%83%0E7%D4%20C%0C%2F%B0%A0%C2%09%25%8C%20B%08%1Ft%C0%81%06%19%90V%01%05%12D%00%C1e%0Dd%A6%80%02%9B%29%B6%18c%05T%EB%18%60%8FA%06%19%5E%DC%E2%05%40%9B%F4%AD%C7%9E%2A%A9%A0%82%CA%29%A6%E4%D9%E7%9F%82%16%9A%C9%25%95L%C2%A8%A3%8C%24%82H%21%84%08r%E9%1Ey%DC%D1%29%1Cn%84%3Aj%18_p%91%85%15SH%01E%13J%1CA%04%10%B3%E2P%C3%0C%B8%EA%8A%82%09%24%88%00B%B0%C3bp%81%05%15L%90%EC%B2%0E4%BB%C0%02%D0J%CBXc%D6b%9B%AD%B6%DDr%FBm%9C%E1%B22n%B9%A7%A0%5B%8A%9E%EB%02%EA%9D%A1%89%CA%0B%89%A3%8BH%8A%AF%A5%7D%F0%CB%A9%A7%A0%A2a%C6%18ax%B1%05%16%08G%C1%EA%ABC%40%AC%83%C42%C0%E0%C2%0A%29%F0%3AB%08%1Bw%B0%81%06%18X%60%01%05%22%2B%CB%AC%C9%29%2Bv%00%B5%D5b%AB%ED%DD%82%C5%0C%00%FE%9D%F3%D1g%F3%2A%AB%90%7B%AE%CE%3C%FB%F9%C9%A0%85b%12t%24%908%C2H%D1%87%14%22H%20%98jZG%A7o%80zF%19%A5v%A1%C5%15%AA.%BC%04%12E%08%F1%03%0F%B4%D2%D0%F5%D7a%F7J%F6%07%1Cl%90A%DA%21%27%ABl%C9%26%A3%1C%F7%DC%2C%D7m%F7%DD1%7B%CBw%CD%E3%0A%AE%F3%CE%3D%0BJ%E8%BB%96%2C%DA%A8%E3%8A%20rH%BE%80%60%DAo%1Ds%C4%E1%06%1B%A2%92A%B0%E7VP%B1%2A%13J%90%1E%84%0F%3B%E4p%83%EA%2F%B4%B0%C2%C5%19%03%EB%81%D9%C5%AE%DD%F6%B2%0F4%D0%C0%C9%28G%3B-%CB.%7B%D9%B6%82%27%00%00%14%00%02%08L%E0%03%16%C8%40%06%3A%E0%81%10%C4%9D%FE%F4%C7%80%0Af%86%7F%BA%7BV%026%E8%3F%B9%CDme%06%60%99%067%E8A%DE%85%D0Z%D7%0A%0C%DE%F2%D6-%C2%B8%F0%850%0C%8F%0CgH%C3%1A%DA%F0%868%CC%A1%0Ew%C8%C3%1E%FA%F0%87%0D%40%0C%A2%10%87H%C4%22%1Aq%25%01%01%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%ACY%89%01%02%9C%AD%18%40%40Z%B5%00%E0%AE%5D%18%A0%80%01%02%04%06%08p%9Bv%AE%C2%00%0B%228Pp%E0%EE%00%BDr%FD%16%0CP%21%C5%08%0E%15%200Hp%20%AFb%84%1D%964%09RC%05%88%0C%13%1E%28%18p%D9%A0%860x%DA%88%B1%B2%A4G%8C%13%1E%1A%24.%0D%21%8D%25H%88%FC%D0Q%F3EJ%11%12%05J%13%2C%E0%25%14%29P%9A%285%2A%C4G%0E%94%08%C2%07%06x%02%AA%D5%AAT%A5Du%C2%24i%8F%8C%E8%03k%FEX%82%05%EBU%2BV%AAN%91%CAD%854%F8%0E%85d%C9%8AE%FE%95%ABV%A8%E64%00%0F%E0A%1EX%F2%C9G_y%84t%C0%9F%40J%CC2K%80%F3%C5rI%0E%07%0E%94%C4%82%0C%8A%22%C5l%FC%25%C1%20%2Bi%1C%10aAJ0%08%C9%87%06%85%18%E0%88%24%12%B4%84%88%29%AA%18%60%2C%8F%B48%D0%8A%02%C6%28%23%00%26%CEg%A3%8C%26%C6%02%E3%8D%00%AC%E8%23%2C%8E%00%29%24%7DE%DE%B8%84%8F%F4%ED%D8%E2%92C%3A%99%22%94%E4%25%29%23%95D%1A9d%96J%0E%08K%23F%D6%F7%0A%98J%8AI%E6%95f%86%F9%8A%7Dg%3E%B9%A6%2B%AE0b%E4%9Bq%CE%09g%2Br%2Ay%27%9EF%DE%D7%0A%9Fz%FE%D9%CA%22%7D%0AJ%E8%8DJ%08%CA%CA%A1%3C%FE%C9%CA%A2%40%26z%1E%2B%8AD%EA%E8%2A%95%DE%88%C4%A3%AC%AC%92%08%90%9Bv%EA%29%A8%8F%AE%A2%CA%A7%9A%AEb%AA%2A%88%80%AA%AA%2A%FE%A9%B4%9A%AA%2A%B0%CA%2A%23%12%A6%A6%12%2B%90G%D0%9A%0A%2A%87%00i%84%AE%A8%00%2B%EC%AF%A8%9Cb%C8%B1%C5%2A%0Bd%11%BF%9EbJ%21%CF6k%0A%29%9Dp%B2%C9%26%9Adr%89%25%95P2%89%24%91%3C%E2H%23%8B%24%82%C8%21%86%10%22%08%20%7F%F4%B1G%1Ew%D8A%87%1Cp%B4%C1%86%1Ah%981F%18_p%A1%05%16VL%11%85%13L%2C%91%84%11C%00%E1%C3%0E9%DCP%83%0C1%BC%C0%82%0A%28%98P%C2%08%22%80%F0A%07%1Ch%90%01%06%17TP%C1%04%12D%00%C1%03%0E8%D0%C0%02%0A%24%90%00%02%07%14V%00%5Ez%F1%F5%16DE%24kJ%29%A5%902%8A%28%A1%80%F2%89%27%D9n%92%09%26%E0RB.%24%8E0%92.%22%ED%0A%F2%87%1F%7C%CCk%2F%BEn%EC%7BF%19%FFz%C1E%16VP%21%05%14O0%91%C4%11D8%0C%F1%0D4%C8%00%83%0B%17g%BCq%08%20x%00%B2%FE%C8%24W%40%01%CA%2A%B3%DC%00%030%2B%10%B3%CD7%E7%95%B3%CE%0F%15q%8A%B4%40%93Bt%D1%9F%24%DD%ED%B7%95%8C%5B.%BA%EA%1ER%88%20%81%F8%21%2F%BDu%CC%01%C7%1Bm%AC%91%86%19d%00%DC%85%16WTa0%C2J%1CQ%84%10%3F%F0%A0%03%0E5%C4%FDB%0B%2B%A4pB%09%24t%AC7%07%1Bh%40%B2%05%7F%A7%1C%B8%CB%2F%1B~%B8%01%D4%27%9E%D7%5E%D8c%88%90%E3%3F%07%3D4%E5Hk%AB%09%D3%E1%92k.%23%8A%24%E29%21%81%5C%CD%87%1Exl%0DG%D7i%A0%016%18%5DlA%B6%D9O4%A10%C3n%8BX%DC%E6%C6%82%14d%8C%04%23%08%C1%07%3C%80%BC%E4a%C0%02~s%DE%CAZ68%98%CD%8Cf53%40%016%A88%EC%F1%A5%21D%80%9C%D0D%21%0A%A3UN%7C%DE%0A%D7%24%CAu%AE%A9%19%E2s%A1%CB%1A%E9%E6%10%07%D4%A9%8Eu%00%13X%ECf%C7%04%25%20%A1%08%84A%C8%DD%EEj0%83%8A%01Ox%1B%EB%D8%02%917%B2%0B0%0Fp%13t%19%E1%2Cx%C1%0Cn%F0f%87Y%DC%CE%16B%80%07%B0%ACe%60%A4%60%03%C68F%06%98%D1%8C%0BHc%1A%A5g8%99%B9%11%01p%84c%CD%E6H%BD%3A%5E%91%83x%21%C0%1C%0BS%BD%3B%E6%11gY%CC%A2%07%B3%F7%96B%1A%B2%2F%40J%A4%22%17%C9%C8F%3A%F2%91%90%8C%A4%24%27I%C9JZ%F2%92%98%CC%A4%267%C9%C9N%C6%24%20%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%2B%C4%00%5E%3F%0A%18%1B%A0l%D8%8C%04%0E%14%180%40%80%D9%B3%15%0FP%90%C0%00%C1Z%B2p%27%2AX%21%A3%84%86%08u%0B%10%18%006%EF%C3%03A%C6P%19%22%83D%06%BA%07%06%18~8%60%C9%A0%40t%C8P%11%12%83%84%06%07%92%277%1C%22%89S%25F%81%E6%90%91%12D%C5%02%D1%0DO%28JeJ%94iF%7F%E4x9%21%00%F6%C2%0C%7DZ%B5Z%95%AA%94mJ%89%AC%28%F0%AD0%01%1AU%AF%5C%B5b%B5%0AU%29Py40O%28%C0J%29X%AF%A2%FE%0Bg%A5%2AR%8D%ED%09%81h%82%05%3E%BC%F4V%A0%B2%F4Fo%B0%04%22%F6%EC%DD%BBJ%15%E75%FD%82%12%E8%F1J%2C%F8%85%F7J%2B%81%5C%F0_A%06%90%A1J%2C%10%E6%17%DD%23%2B%2CHP%00Q%88B%20~%EDu%E2%84%85%04%D5%60%09%84%1B%B6w%8A%18%04%80%28P%07%84%90%18%21%7B%AD%E0%E1%80%8A%008%80%C7%2B%B2%90X%60%21%1E%D0%28P%12%B2%E4%A8%23%2C%97%E0%E0%E3%40H%08I%A2%28Q%14v%24%00H%E8%B8%0A%1A%07%3CIP%12%2F%3AbeAQn%A8%E5%96%03%25%C1%E1%97%60%02%20f~%8D%94%F9%A3%84i%AA%29%A6%81m%96%89%84~q%82%99Dt%D21%A2%A6%99%AE%BC%A7%A7%9B%7D%0A%F7%A7%9C%EF%B5%B2%C8%9EH%087%DD%A1n%8E%C7%0A%A3e%26%E1%A8%22%88%B2b%E9%2A%89T%BA%CA%A6%99%AA%89%04u%AB%A8%D2%A9%9C%A1%AA%A2%0A%22%88%86%9AJ%2A%A8z%AA%CA%AA%FE%A8%B4%2A%27%AC%A8%1C%B2%E7%11%A9%A0%82%CA%29%86%DC%AA%EB%29%A6%F4%AA%E6%11%BB%9AbJ%21%7B%1A%01%AC%29%A5%20%AB%A6%11%C6%96B%0A%21%7B%16%C1%2C%29%A4%0CR%AD%B4%A4%8C%22%C8%B6%DD%8A%F2%AD%9AD%84%1BJ%20%7B%0E1%CA%28%A1%9C%BB%A7%10%A2%88%12%0A%28%80%EC%19D%BB%A0%7C%F2%87%BD%F9~%E2%89%1F%7B%02%91%AF%27%9D%00%AC%26%10%FEz%C2%09%1F%01%7BB%F0%26%0C%AB%F9C%27%9Dp%B2%C9%1E%7B%F6%C0%89%C5%9A%E8%91%F1%26%9Bh%82I%1E%1Fk%92%C9%25x%EC%C9%83%C9%97Xr%C7%9E%3B%9ClI%25%920%B2H%22%88%1CbH%21%84%08%12%C8%1F~%F0%B1%87%1Ex%D8Q%C7%1Cr%C0%E1F%1Bk%A8%91%86%19d%8C%11%06%18%5El%A1%05%16VP%21%05%14N0%B1D%12G%14%21D%10%3F%F0%A0%03%0E7%D40C%0C0%BC%D0%C2%0A%29%9C%60B%09%24%8C%10%02%08%1Et%C0%81%FE%06%19%60%60A%05%15L%00A%03%0A%24p%80%01%83%B55%D2%0E-WB%C9%24%92%40%F2H%236%E3%7C%08%CF%3E%03%DD%C7%1Ey%DCQ%07%1DI%C3%D1%06%1BN%9F%11u%18%5ET%9D%C5%15UL%21%C5%13M%2C%A1%04%12E%0C%11%84%0Ff%A3M%C3%DA%2F%B8%C0%02%DC%28%CCM%82%08%20%7C%90%F7%06%7C%FB%1Dx%04%0F4%B0%80%E1%82%B5%E5%E4G%3A%CC%FCx%24%91%3C%E2%88%CD%8A%E4%8C%F9%CFAs%EE9%E8q%BC1%BA%D3f%94%21%F5%17%5Dh%B1z%EB%AF%7B%3D%BB%11%B6%E3%AEC%0Ei%F3%EE%BB%0A%29%04_%C2%08%22%08%C1%07%F4%B6%B7%BE%5D%A0%02%14%98%80%04%20%E0%00%06%28%00%01%06%88%9E%5BB%A2%03%C7ANr%8Eh%C4%CD%BC%D73%F0%09%ADs%9F%93C%1CDG%3A4%40m%7D%ED%C3%9A%15%A6%10%85%27x%0DlF%18%9B%FD%F0%A76%B6%ED%2Fns%03%A0%00%F3%C6%01%E4a%E0%02%B5%7FK%E0%02%1F%C0%80%E7A0q%13%FCH%0E%28%21%89HH%AE%11%1A%B4%DC%F7%80%264%3D%8CO%84%24%5C%C3%D3N%E7%85%14Z%A1u-%8C%1D%D8jw%3B%B3%D1pm0%B8%A1%DC%FEG%3C%E3%E9%0Dy%7D%0B%E2%04%26%10%01%066%80%01%09%40%C0%E1%06%E3%96%B7p%84%00%0C%08d%20%17%40%C8B%2A%E0%90%88L%80%22%15%89%80F%3A%F2%00%90%8C%A4%01%26I%C9%08%16%E0%92%98%24%80%267%998%B6%0C%C0%92%98%14%0C%27%3B%E9I%B6%8C%E5%94%7D%2C%CB%F4%F6%C4%CAV%BA%F2%95%B0%8C%A5%2CgI%CBZ%DA%F2%96%B8%CC%A5.w%C9%CB%5E%FA%F2%97%C0%E4I%40%00%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%95g%80%00UO%0E%18%20%00kV%91%01%10%280%40%80%EB%D5%AF%1F%1Dt%B8%E0%20A%01%B3%5E%D1j%BC%10%E4%07%8B%0E%12%16%1C%20%20%40%80%5C%8D%14%BA%C8%F9%B2%C4%06%09%0C%0F%DC%FA%FD%7B%D1A%99I%8A%F6%A4%B1%12%C4%C5%07%0A%08%E22%9EX%00%0B%A7P%9A%20%0D%A2%13%86%09%0E%0F%066W%0C%D0%A4%93%AAS%A3%3AUR%C4gM%93%0A%AA%2B%C6%90%D4%8A%D5%2AT%A5%40G%F2%E3c%40%EE%89%1B%02%B5Z%EE%3B%95%A9Q%9B%C8%2C8.qA%1BU%CB%7B77%D5g%03%F5%88%04%B6%FE%90%CA%CE%7C%95%2AH3%BEGD%D2%C9%15y%ED%9A%8E%A8%87x%82%91%2B%F7%E4Y%91%2A%93z~C%0C%7C%B4%82_v%AC%A4%A2%C7%04%FE5%94%C0%19%A8%BC%C7%CA%83%88%84%90%20C%02X1%CA%80%CC%B1BI%0E%132%F4C%26%18j%07J%16%8Bu%88%10%09%86%DC%97%1F%2B%A7%C01%9D%89%08Ip%87%80%2B%AE%F2%C7%050%22d%80%18%A7%84%F8%20%23%2B%E4xP%00N%7C%F2%9Ev%9B0%21%E4A3L%A2%22%81%FA%81A%C0%92%05q%A0%1C%86%0F%A6R%87%03T%12%E4%80%1D%AB%F8%B8%8A%20%1DtY%D0%11%3Ejh%83%99%06%19q%A4%27Nh%C6%A6%40Edh%0A%19%FD%CDY%90%9B%0F%B2%B2%88%9E%08%15%D1%E7%2A%8A%00z%90%11%AB%24%BAJ%22%86%B6i%9E%2A%AA0%DA%28AE%3C%9A%0A%22%93R%AAJ%2A%A9%A0%82i%A6tr%8A%8A%A7%A0%D29%2A%2A%A7%18R%2A%00E%A0z%8A%29%FE%AA%96J%C4%AB%A6%94R%C8%AAD%D4ZJ%29%84%AC%3A%C4%AE%A4%902%08%AE%A5%902%CA%28%82%F8j%AC%28%A2%24%5B%AA%10%A3%88%12J%28%81%AC%2A%84%B4%A1%80%02%C8%AAAd%0B%CA%27%7Fp%FB%C9%B8%9E%F8%21%AE%27%9Et%D2%C7%AA%40%A4%DB%09%27%7C%B0%FB%EE%26%9B%EC%B1%EA%0F%9Cl%A2%89%26z%AC%EA%83%BE%99%60%92%C7%AA%3D%04%7C%89%25w%10%7C%B0%25%95%D8%B1%2A%0F%0CSBI%1D%AB%EEP%09%25%93HB%C7%AA%3AL%92q%24s%AC%9A%83%24%91%40%F2%88%1C%AB%E2%10%C9%23%8F8%02%C7%AA7%B4%DC%08%23n%ACjC%233%2F%D2%C6%AA50%B2%88%22%89%AC%B1%2A%0D%40%23r%88%1A%AB%CE%60%F4%21%85%A4%B1%AA%0CL%13B%88%19%AB%C6P%08%21%82%08R%C6%AA0%0C%22H%20%80%90%B1%EA%0B%60%FF%E1%87%18%AB%BA%60%B6%1F%7C%80%B1j%0Bl%EF%A1%87%17%AB%B2%B0%C7%1Ey%E0%D1%C5%FE%AA%2A%E4%91%C7%1Dv%CC%D1F%1Bl%AC%91%06%1Af%94A%06%19c%84%01%86%17%5El%A1E%16X%5Ca%05%15RD%01%85%13M0%B1%84%12H%1CQ%C4%10A%00%F1%83%0F%3C%EC%90%03%0E6%D4%40%C3%0C1%C0%00%83%0B-%B0%B0%82%0A%28%A0p%82%09%24%8C0%82%08%20%7C%E0%01%07%1A%60P%81%04%0F%2C%80%C0%5E%5D%C9y%92%0A%80%D7A%C7%1Cr%C4%01%C7%1Bm%ACa8%E2f0%EE%B8%17%5Dp%219%16VT%81%B9%14P%3C%D1%C4%12K%24%81D%11D%90%0E%04%EA%3B%E8%80%C3%0D6%BC.%03%0C%2F%D0n%7B%0A%29%D0%9D%09J%F0%BB%10%80%C0%03%1D%D8%80%06.%40%81%084%40yo%B9%CAYR%92%02%E9Q%CFzopC%F6%D4%90%863t%8F%0Cbx%5C%F8%B4%A0%85%CA%5DN%0A%E8S%9F%E7%92p%04%23%10A%08B%A8%0B%0Fx%60%3F%FC%D5%60%062%88%DD%0Bjw%BB%00%EE%AE%04%F1%BD%03%9E%F0%3A%C0%81%0Dd%80%81%11p%80%F2%C82%80%09%A6%04%05t%A8%DE%F5%06%B7%06%0E%22nqb%08%C3%17%C0GB%13Va%0A%29%EC%DC%E7%90%60%84%D1%09%C1t%A8%D3%C1%EAn%E0%3A%1C%F2%CF%05%B6S%81%0F%07%18D%03%0E%B1%88%19%C0%00%12%1F%C0%00%04%18%E0-%5DY%C9%09%E4p%3D%0Dj%EFp%89%03%E1%F7%BA%20%B9%2CX%EE%8B%99%7B%82%13%3C%07%3A%D1%0D%21%86%F3%EBA%FDX%D7%3A%1C%C6%A0%7F-X%C1%0A%E6%08%C4%DF%89%20%04C%24%A2%02%8Fh%01%0A%20%8F%01%098%00%20%9DW%12%01%20%E0%96%B8%5C%DE%01v%C9%CB%03%18%E0%97%C0%FCe%01%86I%CCb%12%E0%98%C8L%E6V%96%C9Lf%F6%A5%2F%C9Tf3%B9%D2%17%09%D2rU%D8%CC%A66%B7%C9%CDnz%F3%9B%E0%0C%A78%C7I%CEr%9A%F3%9C%E8L%A7%3A%D7%C9%CE%A1%04%04%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5Dj1%80S%A6%2F%05%14%280%20%00T%96%02%1CDP%40%D5%EAU%94%02%3C%B8%F8%40%81%C1%01%02%02%9E~%25Y%E2%0A%14%1C%24.8%40%405%EDZ%91%27%E4%F8Yc%C5G%0A%0D%10%12%14%10p7%24%869%9A%22%09%82%B3%85%88%0B%0F%12%0Ex-%DCq%81%1AR%A4%3AQ2D%07%8C%92%19%18%08P%F6X%E0%0B%A9U%A8Hy%AA%94%28O%99%1E%0CF%7B%FC%A1%A9%15%2B%D4%A5%40%5Db%04%C7%84%EC%8E1%22%B5%B2%7D%3BU%A9P%93%A2%88%FE%ADqC%A0%E1%C3o%ABB5%AAMl%E6%19%21%C4Q%05%9D%D5%EDU%A9%02%FEu%C0%9E%B1%80%96Q%D1%BD%7F%8FT%83%3C%C6%00M%3A%A9%9F%BFJ%13%12%F7%18a%40R%BF%AA%7F%FFQd%18%80%9FE%1A%FC%E1%DF%81%A8%D1%E1%C0%80%15-%B0%06%2A%07%AA%22a%2A%82x%C0%20E%04d%11%8A%7F%12N%08%C9%0C%17RTD%26%1DN%98J%2A%98%18%11%E2D%26%20R%E2%89%27%862%86%80%2BBtA%1E%A8%A8%92%8A%89%A8%98r%87%045B%94%00%19%A4%C0%08%23%2A%A8%14%F2A%90%0F%09%20%C5%27G%22%89d%2470%F9%10%0F%93H%29%E5%29%A7pb%05aV24B%20Hri%E6%29%A2%B0%A1%40%98%0CE0%87%29eri%8A%29%A5%ECQ%01%9B%0B%15%E0E%28g%CE9%E7%21%28%E0%A9P%00Jd%22%A7%9FtR%92%84%A0%0A%C1%D0%08%A2t%96RJ%27Z%0C%C0%28B%1A%EC%E1%A7%A4%9C%8A%02G%03%97%1E%D4%00%1C%A4pZ%0Af%A4%8C%B2%C7%06%A1%22%14%84%A9%FE%98%8D2%0A%232%B4%9A%10%10%A8%A6%3A%0A%25HLf%ABA%3F%C8%2Ak%27%5E%D0%F8%2BB%3F%88%12J%28%A2%08r%ECB%3F%84%02%CA%B4%80%3C%AB%D0%0F%D3~%F2%C9%1F%D6%26%E4%83%B6%9Ex%E2G%B7%08%F9%10n%27%9D%8CK%AEA%3Dp%E2%EE%26%7C%ACk%10%0F%9B%D4%AB%C9%1E%F2%16%C4%83%26%9Ad%92%89%1E%F9%12%B4C%26%98%5Cr%09%1E%01%0F%A4%C3%25%96XR%C9%1D%09%0B%A4C%25%95PBI%1D%11%03%90%03%25%93L%22%09%1D%19%E3%20%89%24%91D2G%C67D%02%C9%23%8F%C8%91%B1%0D%8F8%E2H%23pd%5CC%23%8D0%B2%88%1B%19%D3%B0%C8%22%8A%24%D2F%CF%89%24%82%08%22kd%3C%C3%21L%1B%92F%C62%14R%08%21%84%A0%91q%0C%83%0C%22%88%20fd%0CC%20%81%00%F2%07%19%19%BF%F0%C7%1F~%F8%21F%C6.%F8%C1%07%1F%7B%80%91q%0B%7B%E8%A1G%1E%5Ed%BCB%FE%1Ex%DCq%07%17%19%AB%60G%1D%84k%91q%0At%D01%87%1CXd%8C%82%1Cr%C4%01%87%15%19%9F%00%C7%1Bo%B8QE%C6%25%B4%D1%06%1BlH%911%09k%AC%A1F%1AQd%3CB%1Ai%9Ca%86%13%19%8B%60F%19d%90%B1D%C6%21%901%86%18a%2C%1A1%08a%80%F1%85%17Gd%FC%81%17%5Et%C1E%11%19%7B%C0%C5%16Zh%21D%C6%1Cd%81%C5%15W%FC%40%BD%15VTAE%0F%19k0%85%14%E4%EF%90q%06Q%40%F1%C4%139d%8C%81%13M4%C1%C4%12F%14Q%C4%10C%08%11D%10%3F%F4%EFC%0F%3C%E0%C1%0Ev%A0%83%1C%E4%00%077%B0A%0Dh%C0%C0%19%C8%20%06%10%84%C1%0B%5E%E0%02%17%B4%80%05%2CX%81%0AT%90%02%14x%F0%04%26%08a%09H0%82%12%8A%20%04%1F%E8%00%070P%81%084%00%01%06%40%8BZb%82%81%25%D8P%09I%40%C2%11%EAW%04%22%E4O%7F%FE%40%F8%C1%FF%00%28%40%02%1E%F0%06%09%B4A%03g%E0%40%09R%D0%82%17%5C%81%069%D8A%14%9C%E0%8A%22%24%E1%09A%E0%01%0Eh%C0%02%13p%80%02b%98%16_%BD%E4%02I%C8%E1%0E%7B%F8%C3%20%00%21%88%3F%00%E0%00uP%40%1C%20P%81%0Bd%A2%0C%1E%18%03%09B%11%83R%A4%A2%15%B1h%82%12%8C%90%84%238a%08%40%90B%0Ed%C0%02%12%10%E3Y%CA8%13%0B%F0%D0%87%40%F4%DF%FF%04X%40%03%DE%11%8F5p%60%04%9DH%C1%28n0%05%A8%FC%60%21%0F%89%C8D%86%60%91%1F%F0%80%07T%B8%81GFR%01t%29%A3%19%5BR%816%BEq%88%014b%0E%90%98%C0%1A%2C%90%06%7B%7C%A0%13%2B%D8%82%28j0%95W%04%A1%21%5B%29%02E%C22%96%B3%E4%00%076%A0%01%16Fr%010%AC%CA%0C_%12%00%02%98%F3%9C%E8L%27%01%06%C0%CEv%BA%F3%9D%F0%7C%A7%00%E6I%CFz%DA%93%9E%E8%27t%E7%3C%9D%B2%CB%8C%F9%F3%9F%00%0D%A8%40%07J%D0%82%1A%F4%A0%08M%A8B%17%CA%D0%86%3A%F4%A1%10%8D%A8D%A1%12%10%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%3F%05%28%29%94%85%01R%99A%24u%8A%24h%8D%0B%01O%5B%9EH%94%8A%D4TAo%B2%E8%80%905e%06%3E%ACX%A1%1A%C5%89%EA%1B-AVP%18P%96%24%038%AB%5C%B5Z%B5v%13%A4%40o%E3j%80P%A0.H%02%5EJ%B9Z%BC%B7o%A2%3Fn%B2%C4%DD%00%21A%81%00%869%FE%D0%B4Xo%2BV%AANy%22%B3%C0%82%15%C9%2B%28%5B%1E%809%F3%C5%17%90Z%B5%F2%2C%5B%AD%1D%0A%04%3D%E8P%A1%BA%C0%00%01%AD%5DK%D4%C0G%B6q%E3%AB%06%7D8H%00C%EF%DF%C1%85%3B%5C%B0%26%D5%F1%E3%8CV%2C%2C%C0%605p%E9%0E%0B%FE%7C%21%95%B6%7CyH2%1E%12%F0%1D%20%3Ax%84%3E0%ADZ%C5j%3E%7DV%9B%98%B8o%18%E0%FB%7B%8408b%DF%80%AB%8CB%86%01%16%ED%F7%9F%06~%A8%E2%E0%83%0E%A2B%87%03%FFu%F4%C0%1B%A6%A4%A2%E1%86%1A%06%E2A%85%1C%11p%05%28%1A%A2%82%0A%87%8F%D0%00%E2F%01%2C%91%89%89%26%9E%02%E3%25F%AC%B8%91%0B%8C%9C%A2%E3%8E%3A%82%22%06%826b%94%C1%1E%A5%98b%E4%91%A6%90%22%07%85A%5E%A4%80%19%A2%94%22%E5%94R%FA%C1A%93%17%0D%40%C5%26%A4t%E9e%97%8C%C4%80%E5E%40H2%CA%99h%8EB%CA%24B%8Ci%D1%08%81%88%22%E7%9Crn%E2%05%90nJT%81%1C%A0%84%E2%E7%9F%A1%7C%22G%04yN%84%40%17%9B%80%A2%E8%A2%8A%FA%D1A%A1%12%09%B0%04%25%9FTji%A5%89%CC%00%A9D5%24%D2%C9%A7%9E%84%1A%AA%24P%60%B5%E9C%1F%D8%C1%C9%AA%AC%AE%8A%09%19%FE%09%9C%FA%D0%03hd%B2%C9%AD%B8n%A2%89%1C%13%C8%1A%DE%14%94h%22l%26%C4%0A%CB%07%09%BE%F2%07%C4%22%97%5C%82%89%B3%CF%5E%82%08%10%C96%94%82%1F%96d%ABm%B6%8EDAW%B5%0AY%C0%06%25%95%94K%C9%B9%94LB%1A%B8%0A-%00F%24%93%C4%2B%EF%24%92%B4q%01%BB%0B%D5%10%C9%BE%91H%C2%2F%1F%2A%E0%CB%10%0D%8F%14l%B0%20%3C%28%28pA34%E2%C8%C3%89%3CQ%D8%C2%0C%C9%C0%C8%C5%8C%C0A%B1C1%28%E2%B1%22ml%DCP%0C%88%94%8C%08%1B%223%04%83%21%85%18b%88%1A%29%2F%F4%02%214%13%82F%CC%0A%B9%20%C8%CE%82%98%81sB-%00%22%F4%1Fd%FC%8C%10%0B~%24%ED%C7%18F%1F%B4%02%1F%7BD%1DF%D3%06%A9%90%C7%D5yxAuA%29%D8%E1%F5%1D%5DlM%10%0At%94M%87%16b%0Ft%82%1Cl%CB%81E%DA%02%99%00%C7%DCpX%017%00%25%B4%A1w%FE%1BU%DCM%C2%1A%80%AF%21%C5%DD%23%A4ax%1AQ%DC-%82%19e%98a%86%13w%870%C6%18b%88%B1%C4%DD%20%80%A1%F9%17I%DC%FD%81%17%5Et%D1%C5%11w%7B%B0%85%16%A8%13qw%07X%5C%81%05%16m%C2%BD%81%15UTa%C5%0Fwk%20%C5%EER%F4pw%06P%04%0F%85%0Ewc%D0D%13L4%81C%F1K%28%A1%C4%125%DC%7D%C1%11%D4%1F%A1%29%DC%16%10%A1%3D%11b%C2MA%10%E0%07%F1%C2%DD%13%FC%E0%C3%F9-%DC-%01%0F%3B%B4%AF%1D%DC%12%E4%80C%0E9%A4pw%046%E4o%C3%09wC0%C3%FF30%C1%DD%1E%10%83%02%C6%60%04ws%80%0B%5C%F0%02%17%84%E0n%0D%60%81%04Y%00%02%08%AA%E0%82%29%F8%10%DC%18%80%82%0E%9E%E0Q%1B%2C%81%09LP%82%0D%DCm%01%24%18%81%0AE%C0B%16%86%E0%85%2F%14A%0C%5B%28%C3%19%CE%D0%854%8C%21%0CuH%C3%1A%86%00%04%F5%1F%E8%00%070P%81%084%20%01%07%20%00p%14%16%13%05%C8%B0%87-%84%A1%0BC%20%82%11D%91%8AP%CC%21%14m%B8%C5%17%02%D1%03%1C%C8%80%05%24pD%03%10%805L%84%89%02%40%C0%C6%1F%FE%90%8D%40%04%E2%07%E0%E8E8%CE%11%8Ex%CC%23%08%DE%18G6%DE%B1%8F%1F%08%E4%07%3C%D0%81%0D%10%D1%88%080%E3%12s%92%80Az%C0%91%81%F4%80%24%1F9IAF%B2%92%8E%AC%24%26%059IIv%A0%93%93%EC%80%289%B0%01%0D%5C%60%02%10%60%00%02%7C%B3H%9C%24%60%94B%14%A5%2Cg%09KZ%8A%92%90%1C%C8%E5%2C9%60KX%E6%92%97%B5%24%25%295%20F%09%3C%60%01%ABD%A3N%FA%23%80f%3A%F3%99%D0%8C%A64%A7I%CDj%3E%F37KL%E3%DD%B6%C9%CDnz%F3%9B%E0%0C%A78%C7I%CEr%9A%F3%9C%E8L%A7%3A%D7%C9%CEv%BA%F3%9D%C2%09%08%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%3F%05X%19%E5%07%03R%99E8%C1%9A%CA%AAM%82%A7-O0z%C5%F5%D5TX%A4%AC%04%C0%8A2%03%9FV%AE%5Cu%5D%FBJ%D2%0A%B2%24%19%BCI%856%AD%5D%B5k%5B%E1y%00%F7%23%01.%A3Z%09%1E%9C%D6%14%AB%BBi%5B%8D%922%B6%AFF%1F%97XIf5%B8U%2A9%0FF8r%85v%F0%AAT%89H8%BE%E8%A2%D1%AAU%93%27%AB%DAc%81%A0%13R%83Y%A9%3A5JS%18%04%A3%25f%C8%93J%95%AA%D3%C0U%11%02q%F0%81%1D%D4%9FK%85%CA%E4%A8%0E%8B%DC%0E%17%A4%29%95%AA%BA%EF%EB%8CT%2Cl1i6%29O%95%14%FE%E99%F3%E3%2At%84%04%B6%7CB%C5%BE%BA%7BG1%1C%0E%E8%02J%14%27I%85%E8%84YBCB%E3%F3%03%ED%40%89%29%A7%14%C8%DE%29%A8%60%B2%C4%7F%0EQ%60G%26%8F%04%F2%86%16E%C0%F0%01%04%03%00%08%40%0B%89%94%E2%A1%29%04%16%F8%89%18%06T%E4%C2%1E%7C%A4A%85%0F%2Ah%00A%02%04%40%87A%1E%A3%90B%8A%87%1F%92%22%87%03%18%0D%B0C%18O%E0P%C2%05%0E%20P%C0%00%0C%3E%E5%40%1A%9F%8C%E2d%8D6%92%E2G%07%1C5%40%C3%0C%22T%C0%C0%01%04%08%10%40%92E%11%20%C5%25%A1%84%22%CA%99%A28%B9%88%0C%209%90%81%04%0B%180%80%97O%05%40%04%24%9F%7C%02%CA%9Ee%86%12%89%10%23%05%90%40%02G%D2y%94%0A%83x%A2%A8%27y%E6%89I%17%25%96%14%C0%9C_%1Ae%81%1C%9Bp%A2i%27%9Cz%B2%C9%1A%0D%A8T%29Q%09ta%89%26%9Al%A2j%A6%9C%D8%A1%81%86%FE%1D%0D%B0%84%23%97%60%92%C9%AD%99%A0%3AH%0B%B0v%84%03%21%95Tb%C9%B0%97%D4%8A%08%0F%BDr%D4%C1%1C%92L2%09%25%D0%0A%FB%88%15%05%24%AB%91%04d%3C%12%C9%B6%92t%3B%89%24g%F0e-F%07%3C%81%88%23%8E%3C%A2.%24%90D%22%C7%AB%E3%5E%14%40%0F%81%2C%C2%08%23%8D%E4%8B%EE%1Eo%C5%7B%91%0Au%20%82H%22%8A%2Cb0%23%82%10%01%A6%BF%10a0F%21%86%18r%C8%21%02%27R%88%15%B81L%D1%02T%04%22%C8%20%84%10R%08%C4%86%84%01%81%C6%14%0D%00D%1E%7F%00%12%88%C7%82%7C%9C%06%95%28K%14%C0%0Bp%F0%D1%87%1F%3C%FF%D1%B2%1Cl%D6%2CQ%07c%E4%91%87%1E%7B%A0%C8%07%1Fv%FC%20%80%D0%11%3D%20E%1Du%D8q%C7%1Dx%18%8D%C7%13%19C%ED%D0%01F%C0%21%C7%1Ct%D0A%B5%1DuX%11%81%D7%11%91%F0%06%1Cp%C71%F6%1Ca%7C%C0%B6D%22%B0%D1%86%FE%1Bo%BC%5DF%BFwG%24B%1Ak%AC%C1F%1A8d%18%B8D%21%9C%81F%1AjH%B18E%20%94a%86%19g%401%F9D%1F%8CA%C6%E7Ml.%91%07%60%84%11%86%18K%88%1EQ%07%5E%B4%FEE%12%AAC%C4%C1%16%5Cp%D1%85%11%B1%3F%B4%01%16Yh%A1%05%11%B9%3B%B4A%15VXq%05%A0%C13%94%81%14SPQ%C5%0F%C93%84%01%14QH%21E%0F%D1%2F%84A%13N%3C%01%C5%0E%D9%2Bt%C1%12%E47%91C%F8%09Y%80%04%12I%2Ca%03%FA%08UP%84%11F%1CA%03%FC%07Q%20%C4%10C%10%114%FE%04%A1%C0%0F%80%10%84%20%C0%00%80%05%99%00%0Fz%E0%03%1F%F0%0A%81%03%91%80%0Et%B0%03%1E%3C%07%82%02%89%C0%0Dp%90%03%1Dh%07%83%00%80%00%0Dj%60%83%1B%A0%00%84%00x%80%0Cf0B%13%A0%F0%010%80A%0Cd%20%1A%10%3A%A0%05.p%01%0CF%80%C2%06%AC%80%05%FE%2ChA%08z%98%02%15%A8%60%05%C4%01%21%03N%80%02%14%A4%C0%03%28%5C%00%09L%60%82%13p%20%8A%23%20A%09J%B0%01%14%2A%40%04%22%18%C1%082%E0E%10%84%E0%8Cd%04a%02%3C%F0%816%5E%00%85%09%E8%40%07%3C%E0%81%D6%80%10%01%1B%E0%80%1E%2B%80B%04h%E0%8F%1B%98%00%0A%0F%80%01%0Cd%20%03%82%04%E1%01%2Cp%81%0B%60%40%02%83%AC%40%05%18%B96%10%1A%80%02%98%AC%80%B80h%80%09L%80%02%13%E0%11%08%0B%10%01%09x2T%A3%84%40%04V%89J%0C%16%E0%01%0F%80%00%04%18%80%C2%028%00%96%B8%C4%A5%2Ce%B9%CAR%9A%D2%93%99%94%A4%24-%40LF%16%B2%90%87%CC%00%207%90G%3Dr%40%8E%1C%D8%40%06.P%81%084%20%01%07%28%D4%C2pB%00%07x%D3%9B%B9%DC%A5%2A%7B%29%81r~2%98%C3ld%23%91y%C8e6S%8E%F0%EC%80%1E5p%01%0A%CC%12%01%06%B1%E8%D2%A8zB%00%064%E0%9F%0D%F8f.c%B9Kr%9A%F3%93%C0%1Cf1%D7%89%CC%3Fj%80%99%10%8D%E6%064%80%81%0AH%C0%01%0A%C8%26%A5%B6y%93%01%2C%80%01%FE%04%E87Gz%CB%82%1A%B4%9C%BF%3Cg%26%17zLej%C0%A5%7F%3C%A4%05%260%CB%04%E4%13I%1C%ED%E8GA%CA%D3%90%8A%14%9C%B0%14g%2FW%89RO%26T%A1%EA%3C%A6R%2F%60%01%0AD%C0%01%0B0%D2F%83%F2%A5%AAZ%F5%AAX%CD%AAV%B7%EA%A5%00%08%A0%ABXE%A1X%C7J%D6%B2%9A%F5%AChM%ABZ%D7%CA%D6%B6%BA%F5%ADp%8D%AB%5C%E7J%D7%BA%DA%95m%01%01%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%3F%05T%01%C5%E7%02R%99C2%B5%9A%9A%8A%0D%82%A7-M%20Z%C5%8A%D5%D4%A9%A1%AA%04%C0%8A%12C%9ET%AB%D2v%F5%FA%15%D2%0A%B2%24%17%AC%29%95J%95%DD%B4%5C%BB~eu%E7%01%DC%8F%03%B0%7CB%85%2A%95%E1%BB%A4R%AD%FD%DA%AA%94%D8%BF%1BuH2u%EA%14%E1%C2%AAJ%BDq%20%82%D1Z%B6S%25%A9%80%7Cq%C5%A1R%A8MQ%B6l%0AO%05%82LD%E5%05%CD%B7%01i%89%17%E4%88%1AE%8A%14%EAR%A6J%01%FAp%D0A%1DU%8B%BF%8A%AAr%DB%A1%021%9DB%89%DA%CD%DB%F7%A1%14%0B%5BH%9A%CD%F8%91%89%E6%09%09%FET%B1%F4%09%14%28%E9%D4%11%BDp8%C0%0B%A9%BC%8CU%B5%B9%0A%9E%60%8DE%9D%3Ay%F2T%FE%BC%A4%23cAd%81%1Fj%81%D6J%27D%D4%07%00%0A%7Fh%B2%09%27%9C%E8%C7%DF%25%5D%18PQ%0E%99%7C%B6%D6%2A%86pp%5B%05m%5C%92I%26%9A8%08%A1%26j%D8v%11%01_%98%82%D7%2A%AA%A4r%0A%28a%14%00%17%03%5EDR%89%25%97%88H%A2%26ul%C0%D1%07%88%D8%15%E3%29%A5%84%B2%09%21%2C%3C5%C0%11%89H2%C9%24%94X%C2%E3%25%81%B4%00R%11%9C%C8X%8A%28%9DT%B2%88%1FS%2CPT%009%00%F2%C8%23%90D%22%25%25%95%14%B2%C3H%0B%BCA%CA%28%9Fd%02%09%21u%90%C1%84%06%01%02%25%82%1C%8C0%D2%88%23l%BA%C9%C8%146%96%04%82%20%9AL%92%08%1Fk%60Q%84%0C%1C4%DA%93%04a%1C%92%88%22%8B%18%8Ah%23%60%98%89R%00E%10%12%88%1Ca4%91%03%0A%FE%1AD%60%E1N%070%11H%21%86%1C%82%C8%A7%8B%2C%92%86%05-%29%C0%C4%19V%08%F1%02%08%144%80%40%01%81%D6%24%C0%0Ew%04%22%C8%20%84%14r%88%AEt%7C%07%D3%04%3A%D8%60%82%06%10%28%60%00%01%034%2B%93%0Am%F8%E1%C7%1F%80H%5B%ED%1D2%D0%14%C0%04%1BL%C0%C0%01%E4%0A%60%EEK%16p%91%87%1E%7B%F0%D1%C7%BA%81%EC%81%04%017%09%A0%40%02%05%0C%A0%EF%BE%2C5%C0%C4%1Cu%DC%81%C7%BF%01%F3a%05%03%3B%090%80%C3%10%ABT%40%0Ek%C4%21%07%1Du%D8aq%1E%5EP%00T%C8%A7%AE%40F%1Bn%C0%01%87%1C%27%F7%19%82%82%1Eup%05%1Ai%A8%B1%06%CD6%A71%03%CC%3CO%F4%00%11c%90a%C6%19i%A4%B1%06%1Bi%041k%D2%19%1Dp%03%17_%84%21%06%19e%98%01t%12%A6b%8D%91%00%27T%A1%C5%16%5Dx%D1%F5%D7O%B8lvF%1C%2CQ%85%15Xd%A1%05%FE%17%5ExA%C5%08sg%14A%0FPH1%05%15V%5C%81%85%16V%A8%20%40%E0%17%21%F0%C2%12L4%F1D%14%86SA%C5%0C%9AB%3E%11%01%26%10%81D%12KP%EE%04%14Q%D8P%B6%E7%14M%10%C4%10E%18q%04%12J0%E1%C3%04%ACc%24%C1%0F%40%BC%1E%BB%0F%19%E4.8%0F%3E%F0%FE%C3%07%8F%0B%8FQ%04%3A%EC%D0%83%0FZ%2A%9F%11%048%E4%D0%7C%93%D2c%04A%0D6T%3FZ%F6%17%3D0%03%0D5%DC%80%1D%F8%169%10%83%0C%E3%9F%80~%FA.%C0%10%C3%0C%DA%BE%3FQ%03-%B8%F0%02%0C%24%D8OQ%03%2B%60A%FE%00%E7%3F%890%00%05%2A%08%20%08%0Ah%C0%13%A0%20%05%2AX%20%03%21%B2%00%12%98%C0%81%1E%98%20D%140%82%12%5C%D0C%1At%8E%08F%40%82%12%08%29%84%0DQ%40%08F8%02%0D%A0%B0%21%09%F8%00%08V%18%BC%17.%24%01%1E%F8%80%0C1%60%C3%85%20%80%03%FE%1D%F0%80%07%80%D5%C3%84%20%60%03%1B%00%22%11%8Bx%10%04d%40%03H%94%1B%13%0Dr%00%0C%3CQ%03%B8%9B%22%15%2F%60%C5%0CdQ%8B%041%80%05.%C0%C5%08%80%B1%20%06%A0%40%05%2C%60%013%9Eq%20%06%98%00%05%D4%08%817%C2Q%02%12%90%A3_%EC%08%80%02D%00%8F%13p%00%1F%FB%08%81%08%18REv%24%C0%03%20PH%8E%F1%91%00%0Ex%C0%22%1D%99%C8%068%20%92%AB%3B%23%01%1A%60I%07d%12%8C%04%60%00%03%2C%A9%80A%0E%60%01%0B%18e%02L%89%CAT%AE%92%8F%03P%80%02RI%1F%3B%0E%20%01%09%40e-%DFxKY.%60%97g%BC%25.%15p%80A%0A%00%01%B8L%401%F9xLd%26%E0jo%14%C0%01%0E%80%00%04%40%F3%8C%D2%9C%A65%8Di%00m%22%60%9A%DEL%E60%5B%99%CAQF2%92%8C%8C%40%21%F3%28%C7%0A%B8s%8Dc%24%A3%05%2A0%01%084%40%99%E3%C3%12%80%BE%8A%22%00%03t%13%9C%D4%AC%A63e9Kr%8A%B2%93%E8d%24%04%F0%98G5%BA3%9E%F2%A4g%04%3Ci%CD%7C%05%00i%1D%2B%40%01%FC%F9%CF%80%3A3%99%045%28%27-%29%C9E%1A%F2%8F%13H%E9%1A%DFY%01%0A%D4%D3%01%0Cx%A6E%2F%CAO%8D%DA%D4%9F%00%15%E8%40%7D%D9%CAQr%F2%92%095%24%20%E7%D8R%97J%00%020Uf%C3%1Ev%94%00%D8T%A3%1C%ED%A8GA%8A%CA%82%A2%D2%A7%24%5Dd%21%85%9A%D2%09H%40%9D0U%805AFS%05%5D%F4%AChM%ABZ%D7%CAV%8C%0E%F2%ADp%8D%AB%5C%E7J%D7%BA%DA%F5%AEx%CD%AB%5E%F7%CA%D7%BE%FA%F5%AF%80%0D%AC%60%07%AB%BC%80%00%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%3F%05D%D1t%C7%02R%99%3E%26%99%3Auj%14%1A%04O%5B%8E%08D%AA%94%A9%A9%A7Pq%92%12%20%2BJ%0BqB%89%1A%D5%D5%EBTT%A8%18%A50KR%01%99M%A0%D4%AEm%FB5%2C%AASt%1C%D0%FD8%20%0A%25O%9F%40%E5%5D%3B%AA%D3%28%AFT%E1%A6%02Ev%F0F%1A%876q%EA%84Xq%A8Ni%1A%800%04%D9o%2AU%8E%E6Z%B6Xb%0F%A6L%9A4s%FE%E4%29%0E%05%82H8%81E%95%EA4%AA%3A%0DVK%A4%60%86R%25K%AFcs%E2t%87%C3A%07qJ%99%3E%AD%0A%D4%14%E1%0E%11Xi%24i%92%F1K%C9%FB%FE%94X%B8%C2Q%E4%DE%AAT%ADj4%1E%3B%C2%01I%0C9z%14%A9%3B%25K%97%FC%A8p8%60K%28%D3%E9%AD%82%CA%1AX%B9G%D0%0Ax%2C%C2H%23%F3%D57%89%21%3E%94%05Q%05%7B%98%C2%1Bz%AB%AC%D2%09%11%06%02%00%02%1B%86%20%92%88%82%0CB%A2%88%14%05TtC%25%17%06%98a%22%1D%08%17%C1%16%81%0CR%C8%21%22%2A%C2%C8%22%5E%2C%80%11%01%5D%8C%82%5E%80%AC%9C%B2%86%01t%25%B0%84%1E~%00%22%08%217%22%82%C8%19%17p%E4%81%21C%AA%B7%0A%2B%9C%04%F1%D4%006%C0%A1%C7%1E%7D%FC%11%C8%93%85%C0%D1%9EGDl%82%E1%96%AC%B4%92%C8%06F%A9%60F%1Dw%E0%A1%07%1F~%98IG%0C%23-%00%C7%29%E9%A9%C7J%9C%A6%7C1%80P%19d%01%87%1Ct%E0%99%C7%1E%7C%DCQ%04%01%26%89%B0%88%8B%87%1Ez%C9%0C%3F5%80%C4%1Al%B8%F1%E8%1Ct%D8q%87%13%09%A4%14%80%14%FE%A0h%09%27%2B%AB%FC%11%C1N%05%D4%40%C6%19i%90j%AA%1CrTq%2BK%0E%D0qZ%86%19%AA%92%8A%27P%E0%24%C0%09Y%84A%86%19%BC%AE%D1%86%1B%5C%C4%08S%0B%91%14%9A%CA_%A5%88%12%C8%075m%D0%04%17%5E%80%21-%B5ix%B1fL%04x%21%24%2A%A6%90%12%0A%27%960%D2%04%A609%D0%83%15Xh%81%EE%17%D2~A%C3%A26Y%B0G%29%A3%80%C2I%25%8E%10%92%07%18t%B6%84%00%0CPHA%05%C0Yl%E1%85%17%3E%B4%AAS%0D%8DlRI%23%83%DC%A1%06%17L%A4%90bJ%03%88pD%13Od%BC%F1%15Z%0C%21XO%04%3C%91H%CAih%B1%04%0F-%7C%A0%00J%18%F4%60D%12K0%E1D%14%1A%1B%E1TP%14p%11%F4%12%3B%B4%10%C2%05%10%24%20%00I%10%C8%00%84%10D%1C%C1%B4%D3H%84%20%E1P%1C%08%A1%03%0B%20p%BD%C0%01%05%7C%0D%12%02%26%E8%C0%83%FE%0Fc%97%9D%04%12%29%F0k%94%00%16%7C%60%C1%03%0A%D0%3D%80%00koD%40%074%DC%80%83%DE%7C%0B%21%04%0B%07%D0E%00%03s%17%B0x%E3%19%05%40%01%0B1%CC%40%83%0D%93%F3%D0%83%0B%0C%087%40%01%040%DEQ%03%25%B0%D0%C2%0B1%C8p%3A%0E1%DCf%A0%00%B2k%84%00%07%27%A0%A0%82%ED%B8%CB%00%C3%05%A0w%F8%A3%05%22%8CPB%F1%C7%BB%E0%02%07%08%3B%AF%91%00%11x%00B%08%D2%9BP%7C%0A%1C%20%A9%3DG%08t%E0%C1%07%20DO%82%09%1F%88%7C%3E%FA%1C%A8%FFA%08%22x%D0%FA%FC%1E%1D%B0A%FD%1E%E8%C0%03%9A%C7%BF%8C%1C%40%03%1B%D8%40%07%A6V%C0%FEe%00%81%1C%A8%40%03%3Fr%80%0B%60%E0%81%13%98%A0G%0C%60%01%0Bf%20%83%1A%E4%88%01%2A%D0%C1%0F%86P%84%14%A8%80%05%25p%C2%8D%14%80%02%29%B4%C0%B0Z%88%11%03L%60%02%29%84%00%0D3R%00%09H%00%87%FE%0F%D8%21F%0A%00%01%1FN%60gB%AC%08%11%23%E0C%24%26q%22%04x%00%04%22%10%81%E0%3C%91%22%04p%80%14%23%B0%BF%2BJ%24%8BZ%84%40%17%BD%08%11%024%C0%01Z%1C%23%19%1D%B2%B93%3E%C0Gk%84%C8%00%16pF%07%1C-%8E%0F%99%23%03%1A%D0%00%F9%E1%91%21zd%00%03%FC%F8G%85%E8q%01%0B%20d%21%DF%83HD%2Ar%91%06%19%80%02%1AY%20H%26d%00%09%98%E4%02%2Ai%C9%83%60R%01%A0%CC%5C%27%DF%83%80%04dR%94%A3%8C%24%02J%99%00T%A6%92%20%03X%E5%2A%CD%F7J%82%08%40%96%08%A0e-%05%22%80%03%F82%97%BB%B4%A5%01~%A9%CB%5D%0A%C0%00%C3%3C%401kyLd%D2-%98%03%11%40%01%0A%80%CC%97AS%9A%D4%7C%264%01%80Md%0A.%98%01%20%00%01%A8%F9%CD%5D%86s%9C%B0%DB%26%00%CE9%CEr%D6%92%9D%E2T%27%3C%B3%07Nq%8A%93%9E%E6%BF%24%C0%00%EE%29%CF%01%EC%D3%9E%E8%9C%A63%7DI%D0%03%AC%D2%94%A0D%E4%1E%D1%A8%C5%07%A0%B1%01%9CS%40%02%10%407%7D2.%00%185K%00%FC%09Pq%C2n%9A%D94%E8AM%99IM%EE%B1%8E%0DEcD%27j%00%CF%5D%94%80G%D9%A8%3F%FF%09P%90%86%D4%A0%24E%E8%24%05%29H%3E%F2q%A5%14m%E9%E70%0AS%A3%C8%94%A3%1D%0D%285%939%D2%92%26T%A1%9C%5B%80Dg%09%BB%A1%165%A63EjRm%9AL%91%96T%A7%9A%9C%AA2%ABj%D5%ABj%90%A8hM%ABY%D5%C9%D6%B6%BA%F5%ADp%8D%AB%5C%E7J%D7%BA%DA%F5%AEx%CD%AB%5E%F7%CA%D7%BE%FA%F5%AF%80%5Dd%40%00%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%3F%05%20i%D4%86%02R%996%0Aa%CA%B4%E9%12%98%03O%5Bz%98S%C9%D2%A5L%9A6q%92%B4%24%40V%94%12%C8%3C%92D%A9%2B%A6%B0%9C%3Ay%22d%E2%2CI%04U%129%82%14i%12%25%AF%60%C5z%FA%E4%A9M%03%BB%1F%05%08%09%B4%88%91%A3G%91%D8Vzd%09%AE%DCO%A0.51%8BXc%8A9%87%10%25Z%D4ho%24G%5E%18p%E0c%193%A8P%87%EAv%B6%D8%C1L%A0A%85B7v%D4%88L%04%82A%24%C5%1D%FCZT%A87%0CfK%7C%20%85%CF%1F%40%82%08%15%12%BD%28%0D%86%83%0C%D2l%BA%5C%7CT%A6%27%CA%1D%FE%1A%10B%27%0F%9F%3E%7Fn%E7n%F3a%E1%89B%C4C%89%1AE%8A%14%A2%11%E1%13%0A%A8%B1%86%8E%1D%3Cz%F0%E1%07tm%88%E0%90%00U%60%82%99%7C%F4%952%0A%1A%08%E4W%D0%07%5E%BC%11%C7%1Cu%DC%91%C7%1E~%C8%21%03g%0FM%40%C7%27%0C6h%0A%26BH%08%80%05R%A4%B1F%1Bp%C8AG%1Dx%D01%04%01%15%CD%E0%08%83%A4%94R%8A%29%A7%14%C2%81r%0B%04A%86%19h%A8%C1%86%85r%C8%B1D%02%18%11%80%05%27%F3%F5%08%E4%29%A4%A4a%80%5D%06%CC%B0%05%18b%94q%86%8Bm%BC%21%C5o%1Bq%10H%83%3F%9E%82%0A%2A%99%FC%F0%94%00%23D%91%05%17%5E%84AF%19If1%E4G%40Xb%E5%29n%A6%92%CA%21%1A%18%B5%01%12TX%81%85%16%5D%7C%A1%A7%16%24%8C%A4%C0%1A%A3%B4Yh%2A%A4x1%80P%0F%E8%D0%04%14RTq%85%16xj%11%C3%A7%25%81pH%9B%FE%A8%18%AA%CA%2A%96%CC%F0%13%02%2B%1C%A1%04%13ND1%85%A3Z%DC%B0%25J%01%3C%D1%09%A1%B1%AA2%AB%2A%7F%A0%99%D3%00%1F%F80%84%11I%2C%C1%C4%13RP%B1Cr%2C9%20G%29o%A6%A2%EC%2A%AB%88B%05N%01XP%03%0F%3F%08A%84%AEK8%01%C4%041%B1%F0H%AC%E2%CE%CA%0A%2B%8F%C86%D3%03%2C%DC%90%C3%0E%3D%001m%12%40%5C7%D3%00%5D%8C%22%2B%B9%AC%B4%A2%0A%1BX%C1t%80%080%CCP%03%0E%3A%B0%1B%C4%0F%21%08p%93%05%7C%88%0Bq%2B%28%7B%92bK%04d%A0B%0B%2F%C4%40%83%0D%03%F3%60B%01%3B%E5p%89%BE%11%A3%EC%CA%22%89%A6%14%40%04%24%A0%A0%02%0B.%C0%20C%0D7%A4%10aO%04xa%CA%2A%FB%A2%8C%F2%29b%B0Z%12%03%1F%90P%C2%09%29%AC%D0%82%0B1%A8%E0%80P%1F%20Bu%CF%3E_%22%C3%5D%18%80%00%82%08%24%98%604%0B%29%D0%5BT%FE%11%9E%EC%CBv%2B%AB%E8q%D8G%04D%C0%81%07%1F%80%10%C2%08_%9Fp%81%C8G%25%A0F%2AT%93%BBJ%2A%A8l%E2DG%028%90%81%06%1Bt%80x%08tc%80%E3Y%230%A2%8A%A1%A7%982%0A%28%9D%F0%F1%27F%09P%60%01%06%19l%C0%81%E8%20%600%2Cb%01H%D1I%29%A4%84%D2I%26%948B%88%12%A7Sd%00%04%13T%60%C1%05%B8%87%9E%81%02%12%3A%C0F%27%9A%24%8FH%20x%BC%91E%D0%11%0D%C0%40%04%12L%40%81%F4%17d%80%01%B7%2A%02P%C2%1E%89%08%A2G%1Cgp%21%C5%11%274%CF%90%00%09p%C0%03%20%20%81%F4%D9%CE%02%0E%00Q%FC%00%20%00%1F%B8%21%0D_%A8B%12x0%83%14%7C%00~%09%09%C0%01%1A%D0%00%01B%20%02%E8%A3%80%03%B4%B6%40%82%2C%60%07K%00%82%0DV0%02%0E%5C%E0%01%0C1%1F%03%3A%E8%C1%088%C0%7F%254%88%03LP%02%0F%60%40%02%FE%23%8C%E1%02fHC%07%FC.%87%19d%C0%04%1E%C0%80%23%26d%00Cd%80%14%9D%88D%85%08%C0%00TD%C8%00%14%B0%80%21B%A9%8A%1F%D9%22%17%17%F0E0vD%8C%5D%2C%A3%1972%80%04%24%C0%8Bk%3Cc%02%B8%C8%80%A7%C5Q%23m%7C%E3%02%ECxG%8C%00p%8E%7B%EC%A3F%FE%C8E%3E%0A%B2%22%02%40%00%02%14%A0%80%8A%1D%D2%22%89D%80%1B%1D%F9H%8ADR%92%94%AC%A4D.%89%80%2Cj%F2%40%078%80%22%3D%F9%C9%FF%85R%94%A4%2C%A5%15%0D%10%CAN%AAr%93XD%E5%2B%23%22%80%02%B0%F2%008%9B%E5Cj%19%CB%5C%EA%B2%21W%BC%A5%2F%7F%B9%90%00%D8%12%8B%C3%24f%06%8Fi%00%1C%2A%F3%20%C6%2C%80-%9D%F9%CC%82%04%80%00%D2%2C%005%AB9%90kfs%9B%DC%04%C05%B1%A9%CDp%22d%9C%D2%04%277%C7%89MuV%93%9D%E54%A7A%E0%E9%CEg%B2%93%00%24%C1%94%A7%40%EE%99O%7D%F2S%9F%D6%1C%00%01%06%DAOy%06%60%00%02%C5%27%40%09r%D0%84%16%D4%9C%0D%15%E8C%C3%19Q%85.t%9F%08%CD%E8E1%9AQ%C8%5D4%A2%03%F0%E8B%03%20%80%8EnT%9C%25E%A8H%01J%D2%8C%BAt%A0%03%CD%A64%B1h%80c%CA%14%9F%2A%15%40%00v%AA%C0%05%924%A5%2F%85%299e%AAM%98%22%14%9F%02H%2AO%C5%C9%D4%1C%FE4%A9.M%A8P%C9i%D4%A4ZU%A7%3B%ED%E3S%A3%9AQ%82J%15%A9%21U%AAY%B2%AA%D5%ABv%94%ABQ%D5%A9Z%B1z%D2%B6%BA%F5%ADp%8D%AB%5C%E7J%D7%BA%DA%F5%AEx%CD%AB%5E%F7%CA%D7%BE%FA%F5%AF%80%0D%AC%60%B9%19%10%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%3F%03%DC%B8%A3%05%02R%99%28%DA%FC%11D%28%10%14%03O%5BZ%E0%B2%87%8F%9F%40%82%0A%1D%F2%E3%23%40V%94%0D%98%D0%B9%93%C7%2BXB%86%10%29%92%F3%E1%2CI%03%3F%DA%C8%A9%C3v%8F%1F%40T%E3%2Ab%C4%E8%CB%02%BB%1F%05%BC%20%D3%06%8E%9C%B5y%F6%F4%C9%F3g%90%D8D%8B%1A%3DB%24%C4%2Cb%8D%1C%AE%A0Q%D3%E6%CDc%3Bx%EC0I%60%01%8DXD%99%1DA%8A%A4%27%C4%E7%8B%13%96%88%21s%26%CD%1A7%8E%E7%40i%40%90%86%1F%D8%8C%1C%3D%8A4i%12%19%05%B7%25%2A%C0%B1%C5K%182f%7C%97%9E%22%E1%A0%82%2C%88%18%FEi%8E%24%89R%A5FG%A2%3B%24%B0b%0A%96%EAa%C6%98%19%5D%E5%C2B%10u%1A%C9%964%A9%D2%A5L~%80%A0%5EB%01%84%B0%C4%14U%5C%A1E%17%60%88Q%C6%14%198%24%40%12%88%2C7%09%25%96%60%A2%09%26%60%1C0%60A%13%F8%C0%C4%13R%24%A8%05%17%5EXA%82D%10%A0%C1%1C%86%FFm%C2%C9%23%3C%7C%08%40%032%1C%A1%C4%12NDA%85%15YX%E1%C2%00%15%B1%10%88y%FFi%22%A3%27%7Dh%10%DD%01%26%001D%11I%2C%D1%04%14RPA%03V%17%11%F0%04%24%19%2A%C9I%27%9Fp2%06%97Y%0D%D0%01%0E%3C%FC%20D%11HX%09%05%0E%0Cp%94%81%1D%97%88%D9%89%27%A0%84%22%89%0EO%05%40%C1%0B6%E4%C0%83%0FA%10%A1%23%0F%13%80%A4%03%23%9Bl%B2%E7%27%A0%882J%20%11%16%F5%00%0A0%CC%60%03%0E%3B%F8%20%E5%0E%F6%89%94%00%19%99p%E2%09%A5%A1X%EA%89%16%FED%06%85%C0%07%2B%B8%D0%E9%A7%3A%F4%B0%C3%07%02%98%E4%C1%1F%7B%F6i%29%29%A5D%12%C3O%04%5CpB%0A%B5%C2%20C%0D7%E0%20%02%01%29%05%A0D%25%AC%8EBl%29%A5%F0%11%C1N%01%40%10%02%09%26%A0%B0B%0B%2F%C40%03%09%1E%B2%D4%C0%1A%9F%B4%3A%0A%B7%A6%9C%E2%89%1491%C0A%08%22%90%8B%82%0A%2C%B8%60B%9D0%A5%A0%C8%B0%A5%D4%7B%0A%2A%8C%94P%13%02%17p%F0%01%BF%23%94p%82%0A%258%40%D3%00YtB%AC%C2%A8%A4b%8A%1Ah%BAD%40%04%19l%D0%81%07%20%88P1%09%13xVS%05x%24%7C%CA%C2%A9%A8%A2%0A%27A%B8%24%40%03%17%5C%80%81%06%1C%B0%CC%AF%05%B1%E6d%03%25%F5%86%9C%F3%2A%AC%24%E2d%B5%08H%40A%05Bk%A0%F2%07%16%14%E0%13%01%5C%88%E2%B4%2A%AB%40%5DJ%18I%DF%E5%40%04V%5B%20t%06%1AX%D0.P%1E%1426%D4%AC%B4r%89%FE%0C%24%0D%B0%C0%03%10%B0%7D%B5%D0%16%40W%14%11%9C%E8%8Cw%2B%8C%F3A%5Cb%070%D0%80%03%10%40%20%C1%04%15T%C0%80%CCE%25%90%06%2Ae%B3%92w%2B%AE%90bEG%01%18%B0%C0%02%92%3B%008%DB%0D%F4z%D6%08%8C%2CN%BA%2B%AFD%E2pF%04%28%B0%BA%E4%93%BB%DE%40%DAg%050%85%28%A3%BB%82%FB%2B%AC%B81%F7D%03%1C%A0%80%EF%AC%B7%DE%80%D7%03%3EPG%DE%CA%BF%F2%0A%2C%B0%80%22%C4D%02%18%80%00%02%09L%EF%3B%03%0C%94%FC%E1%0B%95%90%EE%FD%F7%B0%C4%82H%05%0F%05%40%C0%01%E7%A3%9F%BE%EF%07%E0%9C%8D%00%40%800%A0by%E0%8BE%2CTA%06%E2%1Dd%00%050%80%01%F8w%BE%F4%05p%80%08%C9%40%21%BC%07%BE%FA%C5%02%14%CF%3BH%00%0A%40%C2%09R%F0%00%B2%C3%60Bz%D0%09%FA%D5%0F%08%0C%19a%09%0Fp%00%038P%85%079%40%1BX%01%3E%404D%86%FE%12%B4%21%0E%21%22%82F%84%E2q%0B%91%21%09%A95%C4%88P%C0%21J%2C%00%13%9B%E8%11%FD%95p%8AT%E4%88%FE%08%10A%ECeQ%8B%04%E0%A2%01%B0%F8%C5%8Cl1%82d%2C%E3E%CE%28E5n%84%8Dit%23E%B6%C8%C58%CAQ%22tl%E3%1D%D7%18%C6%3A%EE%91%8Fa%D4%E3%1F%E7%D8GA%0E%12%8F%85%B4%E3%21c%D8G%02%DCp%91%8Cl%24%24%11%D9%C7GN%92%40%8D%B4%E4%25E%98%C9M%E6o%00%95%F4%24%14A%19FM%8Ar%20%01%20%A5%23O%19%C3%01%90%D2%94%ACL%E5%2BY%99DW%82%12%96%A7%94%A5-i%A9%10%5D%BA%92%97%04%B2%E5%2F%81%29Ba%E2R%94%BE%3C%A6%27%7D%99Bb%12D%96%02%18%403%9D%29%90%00%08%E0%9A%D2%A4fA%ACyM%01%08%90%9A%DC%BC%E67%9D%19Noj%F3%99%DD4%E79%AB%E9%CD%00%B8s%9D%A8t%E78%C1YMx%DA%F3%9E%F8%27%CC%A7%3E%F7%C9%CF~%FA%F3%9F%00%0D%A8%40%07J%D0%82%1A%F4%A0%08M%A8B%17%CA%D0%86%3A%F4%A1%10%8D%A8D5%12%10%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%3F%03%8C%A8%D2C%01R%99%19%96p%F1%12%06%CC%0D%02O%5B%3A%E0a%25%CB%16%AAd%CC%80Y%915%25%02%18Q%A6t%FD%1A%86%CC%994k%B0X%28K%92%80%89%24N%D2%AE%05%FBv%8D%9B7I%10%D0%FD%18%60%C3%8F%24K%F2%AA%CD%C2%25%0B%98%B0p%DB%C0%91%D3FF%80%C1%1B%21%CC%10R%04Ib%BDVf%18x%D0%C4%0C%5C7p%E6%D4%B9C%26%03%E6%8B%0BV%F0%F8%C1%D9s%5E%295%12%10%2C%11f%8Dd9%AB%F3%EC%91%22%F8u%C4%02%1Fn%E8%98-%C4%08b%267%18%1C%3C%20%E4wp%3E~%EE%E00%EEP%00%86%174%94%FE%CF%1ER%24%C9%0D%07%0B1x%01~%27%0Fv%40%82%D6h%E0%9E0%80%84%14%2Fb%84%D7%D1%83v%0D%08%0E%05p%C3%1Bw%E8%81%5D%20%82%14B%88%14%06%D0W%90%02%22%AC%D0%C2%0B2%D4%A0%5C%0F6%CC%15%11%03T%B8%F7G%20%83%14rH%22~%C8%E0%20%00%07l%60%02%0A%2B%B8%00C%858%D8%C0%81%00%15%89%D0%C6%87%21%8E%B8H%23oh%88%19%01%15%8CP%C2%09%29HH%E1%0C%1F%60u%D1%00%40%F0%91%23%22%3B%3A%C2%C8%15%05%D0%25%00%04%1F%880%02%09%26%14%D9%02%0C%21%1C%C0%11%05f%88%88%88%22%8C8%02%89%24%84%CC%90%95%02%1Ax%00B%08B%9E%80%82%0A%23%2C%00%D2%0B%7B%40%D9%88%9A%92LR%89%1D%3E%0E%85%40%05%1Al%D0%C1%07tr%29B%03%23%21%60E%22%7F%AEII%25%97L%22%05%8DA%11%10%C1%05%19%24%BA%28%08%23%84%20%C1e%25e%20%07%A0%97%5E%92%89%26%FE%87%B0%F0%93%00%0BP%60%01%A8%1Ap%D0%81%07%1FL%C0%E9I%01%00%81H%A0%98%BE%BA%C9%26t%3C%B0S%00%08%400%81%AD%B8%EAZ%81%92%2B-%10%86%24%95Xb%2C%27%9ET%C2DN%A3E%20%C1%B3%15%E0j%81%980%91%F0%87%AB%9Al%D2%89%27%9F%80R%88%085%11%B0%C0%03%10D%10%C1%B3%B7VP%9CL%03H1I%BB%EF%C6%1B%CA%27d4%08%93%00%094%E0%80%03%10%E4%FB%2C%05%0B%A0Z%D3%04pl%C2m%BC%A2%8CBJ%25%3D%B8%14%C0%01%0B0%C0%80%03%F8%8A%3B%01%03%BF%E2%24%03%23%F0%82%D21%29%A5%94B%08%06%2B%11%90%C0%02%25%9F%9Cr%03%03%F8D%80%15%9A%80%12%8A%C75%9B%12%8A%17A%9B4%00%02%09%28%C0%B3%C9%0D%3C%C0%00%B5%3Fm%F0G%28%A2%D0%5C%8A%29%A7%A02%09%0C%24%09%60%40%02h%2B%205%03%0D0%A00Q%3FT%E25%D8%A8%A4%82J%1E%90%12F%C0%FE%01%07%40%1D5%CF%0B%1C%60qQ%08%90%21%CA%D7a%A7%A2%8A%2A%A0P%E1%D1%00%06%18%C07%02P%AB-8%5D%21%1CB%B7%E2%AA%AC%C2%8A%23%24h%24%40%01%05D.9%E5%09%1C%D0rY%01%40%E1I%DD%8B%7B%CEJ%2Al%A0KQ%00%03%10%40%BA%E4%7DS%DE4w%0F%C8%81J%E7%B2%B7%D2%8A%27%40L%84%3B%01%CC%93%5E%3A%DF%BF%9F%D8%82%24%AB%14%DF%8A%2B%AE%1CR%01D%020%EF%BD%F3%06%60%7D%A2%40%04%7CQ%0A%2B%AC%18%EF%CA%2B%AF%A42F%F4%08%090%40%EE%DF%93N%C0%E0%E3%13%84%C1%20%E9%AB%FF%0A%2C%9F%B0%1DBp7%3F%EF%E9%EE~%F9%5B%08%0F6%E1%BFW%FC%80%21%04%A4%1F%01%06%B0%BA%04%22%E4%00kX%C5%FA%00%D1%10%02z%AF%82%16TH%08%1A%11%8A%BC-%24%82%13%0C%A1D%B6%D7%C1%F9%E5%0E~%2A%DC%08%0Aa%18%C3%8C%CC%B0%86%1E%B9%21%0E9%A2%C3%1Dj%A4%87%A7%3E%C4%08%10%83h%91%21%12%F1v.%9C%DF%11%85%98D%10.%11%22%11T%E2%13%2B%12E%1AN1%40I%B4%E2%15%21%98%C5-%2A%AF%8B%5E%8CH%00%04%20%3F%0A%86Q%8Cd%9C%9F%13%CF8%402%CAo%8Dl4%C8%18%DD%88%BF8%D6%C7%8D%02%A8%A3%1D%DBHF%3D%EEQ%8E%01%18%A3%1F%FFH%90%CB%04r%90%84%2CH%20%13%C9%C8F%3A%F2%91%90%8C%A4%24%27I%C9JZ%F2%92%98%CC%A4%267%C9%C9Nz%F2%93%A0%0C%A5%28GI%CAR%9A%F2%94%A8L%A5%2AW%C9%CAV%BA%F2%95%B0%8C%A5%2CgI%CBZ%DA%B2%86%01%01%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%40%27%BC%10a%00%A9%CC%06%29f%D8%C8%81%E3%83%00%A7-%0F%80x%11%83%C6%0D%1D%3C%7C%E8%C8%805%25%81%0C%2A%5C%C0%90Q%E3%2B%8F%1FB%8A%DCpP%96%A4%80%09%25R%B0P%3B%A3%06%0E%1D%3D%80%0C1%A2dI%8B%02u%3F%06p%10%C2%04%0A%15-%B8J%AD%01%18%08%91%23J%98%3CY%02%221G%04%1BF%940%91bE%E4%182%3A%10H%E0%22%C8%E5%25M%A0H%A9B%24%82%E7%8B%06.%84%08%21%FA%F1%0A%17%2F%3C%20%1Eh%01H%92%25N%A2L%B1%82E%0B%8E%A6%B7%23%0E%88%E0%01D%08%11%24L%9C%80%FC%E1%C0A%02%2A%90%FEK%A1%C2%7C%8B%97%2C%27%A2%3B%0C%D0%20%03%87%EA%22D%9FH%01%02%C1%C2%07%3E%C6%5B%C9%C2%E5K%182QH%A0%9EB%0AX%90%C1%06%EF%81%80%5D%09%1E%24%B0%1E%09Q4%D7%C5%17b%94q%C6%19%3B%100%60A%05HpA%06%1A%20%08%DF%07%0DH%84%80%0E%E6%811%86%19h%A8%C1%06%19%25l%08%00%01%0EP%60%C1%87%1Ap%D0%C1%07%1E%40%10%40E%18H%F1%9F%19i%AC%D1%06%1Cr%60a%DBm%02%2C%20%C1%04%15X%80%C1%81%1Cp%20%C1U%17%09%D0%02%18D%B2%E1%06%92u%D0Q%84%86e%05%90%C0%03%11L%40A%05%17%60%10%E2%04dj%E4%80%13F%BE%11%C7%1Cu%E0%A1%C7%1B%28%60e%80%03%10D%F0%A4%8D%1FR%E0%DDG%23%8C%81%24%1Dv%E4%B1G%1F%7F%90%21%60Q%04%2C%E0%C0%03%81%0EZ%C1%04%F6%89d%C0%10p0%9A%07%1F~%00%22%C8%1FD%60%09%94%00%094%D0%C0%A5%FE%99R%40%81%02%3F%964A%17w%E8Aj%20%83%14rH%1D%24%FC%14%80%01%0B0%F0%EA%03%98%A6%C9%40%AD%27%05%20%C3%1C%90%F2%EAk%22%8A%98Q%E2N%05%28%B0%40%B1%C7%06%CA%C0%00-%25%10%85%1F%82%102%ED%22%8D%18%12DN%04%20%A0-%B7%C72%10%A7K%1D%B4A%88%21%88%24%82%EE%23%91%E0%E1AM%02%1C%80%40%02%0Ahk%AC%03%0D%0C%27%93%00D%04%82%88%22%8C8%C2%EF%24%91h%A1%B0K%01%14%80%C0%C6%04%1B%CC%C0%A16A%20%06%BA%8E%40%22%C9%24%95X%A2%88%0D%18%13%20%F0%C0%04o%BB%C0%01%CC%E2%A4B%1F%FCJBI%25%97d%A2%89%1E%16%AC%24%80%01%06%1C%20p%021%23%A0%EAN%030%C1%C8%24%94X%D2%F3%26%9CXb%C5%D2%23eL%B4%D1G%2B%80%00%B8Aa%40G%CA%98hBu%27%9F%2C%C2%02I%01%0CP%C0%DBE%BF%8C%C0%BCB%E1%A0%88%CFT%7B%F2%09%FE%28%A0%C8%C1%00Hm%13%40%C0%DB%05p%3D%B7S%07tqI%DE%7B%87%22J%26Ox%24%80%E0%82%C3m4%015%23%E5%C1%1F%9D%E8%0D%8A%E3%A3%94%82%88%08%1A%05%40y%E5p%17%909V%01%28Q%C9%E7%A2%8CBJ%29%A6%8C%82%06t%14%B5%3D%C0%E9%84%13%80%B5g%0E%B0%01J%EC%B3%9Br%0A%2A%98%F40Q%00%02%0C%E0%3C%EF%05%FC%AE%9E%0A%8C%CCN%FB%F1%A8%A4%22%08%05%10%E9%EE%FC%F3%82%83-%23A%03h%F1%C9%F5%D9%AB%A2J%29%60%88%9F%10%F3%DF%C7O%C0%00%AB%8F%2F%D0%05~%18%9F%7D%2A%AA%AC%B2%09%EE%08a%5E%F3%E2%E7%BC%FA%D9%8F%209%B0D%FAV%B1%0A%E5-D%80%03%2C%E0%01%1Br%804%98%A2%7F%7Ch%88%00%BFg%C0%09%22%04%04%89%E8%C4%B5%1E%28%80%12%96%D0%83%12%E1%9E%06M%28%80%0E%A2%F0%22%10l%E1%0B%15%C3B%17%CE0w5%BC%A1G%02%C0C%19%EA%90%23i%3Cd%9E%0D%7F%28%91%20%0E%91%88E%3C%22%12%23%A2%C4%25%3A%F1%89P%8C%A2%14%A7H%C5%2AZ%F1%8AX%CC%A2%16%B7%C8%C5.z%F1%8B%60%0C%A3%18%C7H%C62%9A%F1%8ChL%A3%1A%D7%C8%C66%BA%F1%8Dp%8C%A3%1C%E7H%C7%3A%DA%F1%8Ex%CC%A3%1E%F7%C8%C7%3E%FA%F1%8F%80%0C%A4%20%07I%C8B%1A%F2%90%88L%E4%15%03%02%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3%40%3Bdy%02%01%A9%CC%05%2F%9A%8C%B9CH%CB%01%A7-%07H0%81C%EA%1DD%95%28E%09%80%15e%00%03%102p%F5%0A%16%D4%A9G%2C%CA%96%14%60%40A%DA%B5S%DB%9Ej%E5jOS%B9%1F%03%0C%20P%F7nW%2Fu%F4%B6%82%25K%95%16%B2%807%06%100%B8%B0Z%1B%2A%0EPhS%C9%EDbY%B4jaj%11%19c%80%D3%94%09%DB%CDp%A1%00A%1F%97%F62%0E%5D%8BV%1F%07%A5%2B%9E%9E%5CY%C1%82%01%07%1B%C8Y5%BBV-%5B%B6%1C%E7%9E%B8%3B5%01%01%0B%5D%5C%02m%1C9%F2K%29%96Cl.%002%C3%01dZ%FEU%B7nk%16%9D%04%DA%1B%EE%F6%FE%10%C3%A1%E3%E4%91%9BZ%92~%21%FB%89%3FD%C5%B7%1E%09D%FD%90%05%9C%01%CB~%B6%C82%C7U%FF%7D%24%82%24%04%DAR%8A%11%09%82%C4%04%2A%0DF%D2A%84%1E1%A0%07-%04%BEb%06p%18rd%82%25%0D%82%82C%88%1C%05%A0%05%2B%04%D6%82%C8%04%28n%04%81%1F%F0%C5%B7%8A%161n%24C%27%0Db%97cF%04%08H%A0%2Cr%20%F8%A3E%19%20%D2%A0%29G%1C%89%11%10%A3T%C8%81%93%16%05%18K%87g%80H%E5D%0B6%F8%89%0D%5BV4a%8B%82%E0%16%A6D%0A%CC1%0B%817%9E9%D1%09%24%12h%C9%09nF%A4%22%8B%FB%19hd%9D%0DE%40%23%81%A5%14%C1%27D3%F0H%20%23%16%0C%EAP%90%03%EE%F7J%96%8A6%B4%01%23%04%92%B2g%A4%0A%05%11%25yC%60%FA%10%02r%C8%82%5C%21%9EFD%02%25%A8%98Y%2AD%89%AE%EA%EA%ABN%B0%C6%2A%EB%AC%B4%D6j%EB%AD%B8%E6%AA%EB%AE%BC%F6%EA%EB%AF%C0%06%2B%EC%B0%C4%16k%EC%B1%C8%26%AB%EC%B2%CC6%EB%EC%B3%D0F%2B%ED%B4%D4Vk%ED%B5%D8f%AB%ED%B6%DCv%EB%ED%B7%E0%86%2B%EE%B8%E4%96k%EE%B9%E8%A6%AB%EE%BA%D9%06%04%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9D%CA2%00%D5%95%01%AC%5E%3D%99%B5%EB%D6%92%5D%05%0C%200%E0k%C8%B0b%09%18%40%40%C0%EC%C7%ACi%0B%20%60%20AB%01%B7%1D%03%0C%18P%E0%80%82%07%17B%B0%00%21%00%2F%C7%01%06%124%98%C0%01%C5%0D%25RB%18%DE%28%40%01%04%0C%22b%08%A9r%06%0F%9A%0A%933%06X%D0A%85%0E%26_%E2%04r4%E9J%D9%D0%17%0B%98%28rE%8D%1ED%94%3C%95%AAD%036F%0F%5B%E8%08z%A4I%14%AAV%AF%08M%F0m%F1%00%94D%96%3E%99Z%E5%2A%D6%ACTZ%98%5B%1CQhT%AAV%B0d%FE%CD%A2U%EBR%0A%ED%14%07t%29%F5J%3C%F9Z%B6d%C99%80~%E2%85A%B2%DE%C3%B7e%CB%D4%91%FA%13%F9%20J-%FB%F1%C7_%24%1C%00%18Q%01f%C4b%E0%83%AF%9C%F1%9A%82%0E%89%20%C9%83%0F~b%03%85%101%81%0A%86%FC%D5%22%88%03%1C%3A%A4%C0%1C%B3%80h%CB%2A%D9%95%D8%D0%09%96%A8h%8B%25%27%B8%C8P%00Z%B0%A2%A2%2Cs%D0g%A3B%11%F8Q%E0%83%A5%14%F1%E3B3t%22%23%23%16%1C%99%10%01g%C0%A2b%84%13%3AY%D0%06%8C%A8H%8A%8FV%1E%14%C4%28%18%0E%D1%A5B%08%C8%21%0B%7F%85%8C%C9%10%09%94%A0B%A2%9A%0C5%09%E7%9Ct%D6i%E7%9Dx%E6%A9%E7%9E%7C%F6%E9%E7%9F%80%06%2A%E8%A0%84%16j%E8%A1%88%26%AA%E8%A2%8C6%EA%E8%A3%90F%2A%E9%A4%94Vj%E9%A5%98f%AA%E9%A6%9Cv%EA%E9%A7%A0%86%2A%EA%A8%A4%96j%EA%A9%A8%A6%AA%EA%AA%AC%B6%EA%EA%AB%03%0E%05%04%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%FE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%ACY%AD%01%02%9C%B5%98%B6%AD%DA%B5%0F%DD%A6%15%40%17n%DC%B9%02%06%0C%20P%60%80%DD%86%01%F2%EA%E5%7B%00A%02%BF%7F%15%06%D8%5B%C0%00%02%05%0D%20Pp%20%20%B1%C2%01%07%120x0%01C%07%12%28%28XN%28%40%81%04%0B%1CD%A8%90%C1%E3%88%8F%07%A3%11%2A%E8p%02F%0E%22O%B2%90YC%84%40l%83%03%3E%00Yb%25%CC%9A%3A~%0C%FD%91%F1%DB%60%84%26i%E4%EC%21%C4H%12%26O%7B%264%27%28%80G%9FD%91%2C%84q%0AU%0A%15%A90%88%B7%03%90%00g%13%28R%A7T%B1r%F5%E9%80z%826%28%A5%9A%0F%2BV%90%FB%05%1D%C0%06%2B%B1%C82%08%80%07%8D%10I%29%0E%20%88%90%05%0EF%28%E1%84%14Vh%E1%85%18f%A8%E1%86%1Cv%E8%E1%87%20%86%28%E2%88%24%96h%E2%89%28%A6%A8%E2%8A%2C%B6%E8%E2%8B0%C6%28%E3%8C4%D6h%E3%8D8%E6%A8%E3%8E%3C%F6%E8%E3%8F%40%06%29%E4%90D%16i%E4%91H%26%A9%E4%92%40%05%04%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%CE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF%A0C%8B%1EM%BA%B4%E9%D3%A8S%AB%5E%CD%BA%B5%EB%D7%B0c%CB%9EM%DBk%40%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%CE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF%A0C%8B%1EM%BA%B4%E9%D3%A8S%AB%5E%CD%BA%B5%EB%D7%B0c%CB%9EM%DBk%40%00%21%F9%04%01%04%00%FF%00%2C%00%00%00%00%80%00%80%00%00%08%CE%00%01%08%1CH%B0%A0%C1%83%08%13%2A%5C%C8%B0%A1%C3%87%10%23J%9CH%B1%A2%C5%8B%183j%DC%C8%B1%A3%C7%8F%20C%8A%1CI%B2%A4%C9%93%28S%AA%5C%C9%B2%A5%CB%970c%CA%9CI%B3%A6%CD%9B8s%EA%DC%C9%B3%A7%CF%9F%40%83%0A%1DJ%B4%A8%D1%A3H%93%2A%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%8A%1DK%B6%AC%D9%B3h%D3%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3%EA%DD%CB%B7%AF%DF%BF%80%03%0B%1EL%B8%B0%E1%C3%88%13%2B%5E%CC%B8%B1%E3%C7%90%23K%9EL%B9%B2%E5%CB%983k%DE%CC%B9%B3%E7%CF%A0C%8B%1EM%BA%B4%E9%D3%A8S%AB%5E%CD%BA%B5%EB%D7%B0c%CB%9EM%DBk%40%00%3B";
|
|
17323
17505
|
|
|
17324
17506
|
// src/components/HbLoadingSpinner.tsx
|
|
17325
|
-
var
|
|
17507
|
+
var import_jsx_runtime155 = require("@emotion/react/jsx-runtime");
|
|
17326
17508
|
function HbLoadingSpinner({ noQuips, extraQuips = [], extraQuipsOnly, iconOnly }) {
|
|
17327
|
-
const ctx = (0,
|
|
17509
|
+
const ctx = (0, import_react108.useContext)(HbLoadingSpinnerContext);
|
|
17328
17510
|
const tid = useTestIds({}, "hbSpinner");
|
|
17329
|
-
const quip = (0,
|
|
17511
|
+
const quip = (0, import_react108.useMemo)(() => {
|
|
17330
17512
|
const allQuips = extraQuipsOnly && extraQuips.length !== 0 ? extraQuips : [...ctx.quips, ...extraQuips];
|
|
17331
17513
|
const forceQuips = extraQuips.length !== 0 || noQuips === false;
|
|
17332
17514
|
if (ctx.noQuips && !forceQuips || noQuips || allQuips.length === 0) return "Loading...";
|
|
17333
17515
|
return allQuips[Math.floor(Math.random() * allQuips.length)];
|
|
17334
17516
|
}, [ctx.noQuips, ctx.quips, extraQuips, extraQuipsOnly, noQuips]);
|
|
17335
|
-
return /* @__PURE__ */ (0,
|
|
17336
|
-
/* @__PURE__ */ (0,
|
|
17517
|
+
return /* @__PURE__ */ (0, import_jsx_runtime155.jsxs)("div", { css: Css.df.fdc.jcc.aic.$, ...tid, children: [
|
|
17518
|
+
/* @__PURE__ */ (0, import_jsx_runtime155.jsx)(
|
|
17337
17519
|
"img",
|
|
17338
17520
|
{
|
|
17339
17521
|
src: HbLoadingSpinner_base64_default,
|
|
@@ -17346,7 +17528,7 @@ function HbLoadingSpinner({ noQuips, extraQuips = [], extraQuipsOnly, iconOnly }
|
|
|
17346
17528
|
...tid.gif
|
|
17347
17529
|
}
|
|
17348
17530
|
),
|
|
17349
|
-
!iconOnly && /* @__PURE__ */ (0,
|
|
17531
|
+
!iconOnly && /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(
|
|
17350
17532
|
"div",
|
|
17351
17533
|
{
|
|
17352
17534
|
"data-chromatic": "ignore",
|
|
@@ -17366,78 +17548,43 @@ var HB_QUIPS_MISSION = [
|
|
|
17366
17548
|
"In Service of Our Customers"
|
|
17367
17549
|
].map(dotDotDot);
|
|
17368
17550
|
var HB_QUIPS_FLAVOR = ["HOM is HOW", "Scaling Massively", "#LoveIt"].map(dotDotDot);
|
|
17369
|
-
var HbLoadingSpinnerContext =
|
|
17551
|
+
var HbLoadingSpinnerContext = import_react108.default.createContext({
|
|
17370
17552
|
quips: ["Loading..."],
|
|
17371
17553
|
noQuips: false
|
|
17372
17554
|
});
|
|
17373
17555
|
function HbSpinnerProvider({ quips = [], children }) {
|
|
17374
|
-
const state = (0,
|
|
17375
|
-
return /* @__PURE__ */ (0,
|
|
17376
|
-
}
|
|
17377
|
-
|
|
17378
|
-
// src/components/LoadingSkeleton.tsx
|
|
17379
|
-
var import_jsx_runtime152 = require("@emotion/react/jsx-runtime");
|
|
17380
|
-
function LoadingSkeleton({
|
|
17381
|
-
rows = 1,
|
|
17382
|
-
columns = 1,
|
|
17383
|
-
size = "md",
|
|
17384
|
-
randomizeWidths = false,
|
|
17385
|
-
contrast = false
|
|
17386
|
-
}) {
|
|
17387
|
-
const cellArray = [...Array(columns)];
|
|
17388
|
-
const rowArray = [...Array(rows)];
|
|
17389
|
-
const rowHeight = sizeToPixels2[size];
|
|
17390
|
-
const rowCells = (rowNumber) => {
|
|
17391
|
-
const flexGrowForCell = randomizeWidths ? getRandomizedFlexBasisByRowIndex(rowNumber) : 1;
|
|
17392
|
-
return cellArray.map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(
|
|
17393
|
-
"div",
|
|
17394
|
-
{
|
|
17395
|
-
css: Css.br4.add("animation", "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite").add("flexGrow", flexGrowForCell).bgGray300.if(contrast).bgGray700.$
|
|
17396
|
-
},
|
|
17397
|
-
`row-${rowNumber}-cell-${i}`
|
|
17398
|
-
));
|
|
17399
|
-
};
|
|
17400
|
-
return /* @__PURE__ */ (0, import_jsx_runtime152.jsx)("div", { "aria-label": "Loading", children: rowArray.map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime152.jsx)("div", { css: Css.df.gap1.mb1.hPx(rowHeight).$, children: rowCells(i) }, `row-${i}`)) });
|
|
17401
|
-
}
|
|
17402
|
-
function getRandomizedFlexBasisByRowIndex(rowIndex) {
|
|
17403
|
-
const randomizedFlexBasisValues = [0.65, 0.8, 0.75, 0.9, 0.8, 0.85, 0.8, 0.95];
|
|
17404
|
-
const valueIndex = rowIndex % randomizedFlexBasisValues.length;
|
|
17405
|
-
return randomizedFlexBasisValues[valueIndex];
|
|
17556
|
+
const state = (0, import_react108.useMemo)(() => ({ quips, noQuips: quips.length === 0 }), [quips]);
|
|
17557
|
+
return /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(HbLoadingSpinnerContext.Provider, { value: state, children });
|
|
17406
17558
|
}
|
|
17407
|
-
var sizeToPixels2 = {
|
|
17408
|
-
sm: 16,
|
|
17409
|
-
md: 24,
|
|
17410
|
-
lg: 32
|
|
17411
|
-
};
|
|
17412
17559
|
|
|
17413
17560
|
// src/components/MaxLines.tsx
|
|
17414
|
-
var
|
|
17415
|
-
var
|
|
17416
|
-
var
|
|
17561
|
+
var import_utils118 = require("@react-aria/utils");
|
|
17562
|
+
var import_react109 = require("react");
|
|
17563
|
+
var import_jsx_runtime156 = require("@emotion/react/jsx-runtime");
|
|
17417
17564
|
function MaxLines({ maxLines, children }) {
|
|
17418
|
-
const elRef = (0,
|
|
17419
|
-
const [hasMore, setHasMore] = (0,
|
|
17420
|
-
const [expanded, setExpanded] = (0,
|
|
17421
|
-
(0,
|
|
17565
|
+
const elRef = (0, import_react109.useRef)(null);
|
|
17566
|
+
const [hasMore, setHasMore] = (0, import_react109.useState)(false);
|
|
17567
|
+
const [expanded, setExpanded] = (0, import_react109.useState)(false);
|
|
17568
|
+
(0, import_utils118.useLayoutEffect)(() => {
|
|
17422
17569
|
if (!elRef.current) return;
|
|
17423
17570
|
setHasMore(elRef.current.scrollHeight > elRef.current.clientHeight);
|
|
17424
17571
|
}, []);
|
|
17425
|
-
(0,
|
|
17572
|
+
(0, import_react109.useEffect)(() => {
|
|
17426
17573
|
setExpanded(false);
|
|
17427
17574
|
}, [children]);
|
|
17428
|
-
const onResize = (0,
|
|
17575
|
+
const onResize = (0, import_react109.useCallback)(() => {
|
|
17429
17576
|
if (!elRef.current) return;
|
|
17430
17577
|
!expanded && setHasMore(elRef.current.scrollHeight > elRef.current.clientHeight);
|
|
17431
17578
|
}, [expanded]);
|
|
17432
|
-
(0,
|
|
17433
|
-
return /* @__PURE__ */ (0,
|
|
17434
|
-
/* @__PURE__ */ (0,
|
|
17435
|
-
hasMore && /* @__PURE__ */ (0,
|
|
17579
|
+
(0, import_utils118.useResizeObserver)({ ref: elRef, onResize });
|
|
17580
|
+
return /* @__PURE__ */ (0, import_jsx_runtime156.jsxs)("div", { children: [
|
|
17581
|
+
/* @__PURE__ */ (0, import_jsx_runtime156.jsx)("div", { ref: elRef, css: Css.if(!expanded).lineClamp(maxLines).$, children }),
|
|
17582
|
+
hasMore && /* @__PURE__ */ (0, import_jsx_runtime156.jsx)("button", { css: Css.db.smMd.$, onClick: () => setExpanded((prev) => !prev), children: expanded ? "Show Less" : "Show More" })
|
|
17436
17583
|
] });
|
|
17437
17584
|
}
|
|
17438
17585
|
|
|
17439
17586
|
// src/components/Pagination.tsx
|
|
17440
|
-
var
|
|
17587
|
+
var import_jsx_runtime157 = require("@emotion/react/jsx-runtime");
|
|
17441
17588
|
var defaultPage = { offset: 0, limit: 100 };
|
|
17442
17589
|
function Pagination(props) {
|
|
17443
17590
|
const { totalCount, pageSizes = [100, 500, 1e3] } = props;
|
|
@@ -17457,9 +17604,9 @@ function Pagination(props) {
|
|
|
17457
17604
|
}
|
|
17458
17605
|
}
|
|
17459
17606
|
const tid = useTestIds(props, "pagination");
|
|
17460
|
-
return /* @__PURE__ */ (0,
|
|
17461
|
-
/* @__PURE__ */ (0,
|
|
17462
|
-
/* @__PURE__ */ (0,
|
|
17607
|
+
return /* @__PURE__ */ (0, import_jsx_runtime157.jsxs)("div", { css: Css.df.bcGray200.bt.xs.gray500.px2.pt2.$, ...tid, children: [
|
|
17608
|
+
/* @__PURE__ */ (0, import_jsx_runtime157.jsx)("div", { css: Css.df.mya.mr2.$, ...tid.pageSizeLabel, children: "Page size:" }),
|
|
17609
|
+
/* @__PURE__ */ (0, import_jsx_runtime157.jsx)("div", { css: Css.wPx(78).$, children: /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
|
|
17463
17610
|
SelectField,
|
|
17464
17611
|
{
|
|
17465
17612
|
compact: true,
|
|
@@ -17471,15 +17618,15 @@ function Pagination(props) {
|
|
|
17471
17618
|
...tid.pageSize
|
|
17472
17619
|
}
|
|
17473
17620
|
) }),
|
|
17474
|
-
/* @__PURE__ */ (0,
|
|
17475
|
-
/* @__PURE__ */ (0,
|
|
17621
|
+
/* @__PURE__ */ (0, import_jsx_runtime157.jsxs)("div", { css: Css.mla.mya.df.$, children: [
|
|
17622
|
+
/* @__PURE__ */ (0, import_jsx_runtime157.jsxs)("div", { css: Css.df.mya.mr2.$, ...tid.pageInfoLabel, children: [
|
|
17476
17623
|
first,
|
|
17477
17624
|
" ",
|
|
17478
17625
|
showLast ? `- ${last}` : "",
|
|
17479
17626
|
" of ",
|
|
17480
17627
|
totalCount
|
|
17481
17628
|
] }),
|
|
17482
|
-
/* @__PURE__ */ (0,
|
|
17629
|
+
/* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
|
|
17483
17630
|
IconButton,
|
|
17484
17631
|
{
|
|
17485
17632
|
icon: "chevronLeft",
|
|
@@ -17489,7 +17636,7 @@ function Pagination(props) {
|
|
|
17489
17636
|
...tid.previousIcon
|
|
17490
17637
|
}
|
|
17491
17638
|
),
|
|
17492
|
-
/* @__PURE__ */ (0,
|
|
17639
|
+
/* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
|
|
17493
17640
|
IconButton,
|
|
17494
17641
|
{
|
|
17495
17642
|
icon: "chevronRight",
|
|
@@ -17517,9 +17664,9 @@ function toPageNumberSize(page) {
|
|
|
17517
17664
|
}
|
|
17518
17665
|
|
|
17519
17666
|
// src/components/ScrollShadows.tsx
|
|
17520
|
-
var
|
|
17521
|
-
var
|
|
17522
|
-
var
|
|
17667
|
+
var import_utils120 = require("@react-aria/utils");
|
|
17668
|
+
var import_react110 = require("react");
|
|
17669
|
+
var import_jsx_runtime158 = require("@emotion/react/jsx-runtime");
|
|
17523
17670
|
function ScrollShadows(props) {
|
|
17524
17671
|
const { children, xss, horizontal = false, bgColor = "rgba(255,255,255,1)" /* White */ } = props;
|
|
17525
17672
|
const { height = "auto", width: width2 = "auto" } = xss ?? {};
|
|
@@ -17527,10 +17674,10 @@ function ScrollShadows(props) {
|
|
|
17527
17674
|
if (!bgColor.includes("rgba")) {
|
|
17528
17675
|
throw new Error("ScrollShadows: bgColor prop must be in the format 'rgba(255, 255, 255, 1)'");
|
|
17529
17676
|
}
|
|
17530
|
-
const [showStartShadow, setShowStartShadow] = (0,
|
|
17531
|
-
const [showEndShadow, setShowEndShadow] = (0,
|
|
17532
|
-
const scrollRef = (0,
|
|
17533
|
-
const [startShadowStyles, endShadowStyles] = (0,
|
|
17677
|
+
const [showStartShadow, setShowStartShadow] = (0, import_react110.useState)(false);
|
|
17678
|
+
const [showEndShadow, setShowEndShadow] = (0, import_react110.useState)(false);
|
|
17679
|
+
const scrollRef = (0, import_react110.useRef)(null);
|
|
17680
|
+
const [startShadowStyles, endShadowStyles] = (0, import_react110.useMemo)(() => {
|
|
17534
17681
|
const transparentBgColor = bgColor.replace(/,1\)$/, ",0)");
|
|
17535
17682
|
const commonStyles = Css.absolute.z3.add({ pointerEvents: "none" }).$;
|
|
17536
17683
|
const startShadowStyles2 = !horizontal ? Css.top0.left0.right0.hPx(40).$ : Css.left0.top0.bottom0.wPx(25).$;
|
|
@@ -17542,7 +17689,7 @@ function ScrollShadows(props) {
|
|
|
17542
17689
|
{ ...commonStyles, ...endShadowStyles2, ...Css.add("background", endGradient).$ }
|
|
17543
17690
|
];
|
|
17544
17691
|
}, [horizontal, bgColor]);
|
|
17545
|
-
const updateScrollProps = (0,
|
|
17692
|
+
const updateScrollProps = (0, import_react110.useCallback)(
|
|
17546
17693
|
(el) => {
|
|
17547
17694
|
const { scrollTop, scrollHeight, clientHeight, scrollWidth, scrollLeft, clientWidth } = el;
|
|
17548
17695
|
const start = horizontal ? scrollLeft : scrollTop;
|
|
@@ -17553,17 +17700,17 @@ function ScrollShadows(props) {
|
|
|
17553
17700
|
},
|
|
17554
17701
|
[horizontal]
|
|
17555
17702
|
);
|
|
17556
|
-
const onResize = (0,
|
|
17557
|
-
(0,
|
|
17558
|
-
return /* @__PURE__ */ (0,
|
|
17703
|
+
const onResize = (0, import_react110.useCallback)(() => scrollRef.current && updateScrollProps(scrollRef.current), [updateScrollProps]);
|
|
17704
|
+
(0, import_utils120.useResizeObserver)({ ref: scrollRef, onResize });
|
|
17705
|
+
return /* @__PURE__ */ (0, import_jsx_runtime158.jsxs)(
|
|
17559
17706
|
"div",
|
|
17560
17707
|
{
|
|
17561
17708
|
css: Css.relative.oh.h(height).w(width2).df.fd(!horizontal ? "column" : "row").$,
|
|
17562
17709
|
...tid,
|
|
17563
17710
|
children: [
|
|
17564
|
-
/* @__PURE__ */ (0,
|
|
17565
|
-
/* @__PURE__ */ (0,
|
|
17566
|
-
/* @__PURE__ */ (0,
|
|
17711
|
+
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)("div", { css: { ...startShadowStyles, opacity: showStartShadow ? 1 : 0 }, "data-chromatic": "ignore" }),
|
|
17712
|
+
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)("div", { css: { ...endShadowStyles, opacity: showEndShadow ? 1 : 0 }, "data-chromatic": "ignore" }),
|
|
17713
|
+
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)(
|
|
17567
17714
|
"div",
|
|
17568
17715
|
{
|
|
17569
17716
|
css: {
|
|
@@ -17581,10 +17728,10 @@ function ScrollShadows(props) {
|
|
|
17581
17728
|
}
|
|
17582
17729
|
|
|
17583
17730
|
// src/components/Snackbar/useSnackbar.tsx
|
|
17584
|
-
var
|
|
17731
|
+
var import_react111 = require("react");
|
|
17585
17732
|
function useSnackbar() {
|
|
17586
17733
|
const { setNotices, setOffset } = useSnackbarContext();
|
|
17587
|
-
const onClose = (0,
|
|
17734
|
+
const onClose = (0, import_react111.useCallback)(
|
|
17588
17735
|
(noticeId) => {
|
|
17589
17736
|
setNotices((prev) => {
|
|
17590
17737
|
let returnValue = prev;
|
|
@@ -17601,7 +17748,7 @@ function useSnackbar() {
|
|
|
17601
17748
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17602
17749
|
[]
|
|
17603
17750
|
);
|
|
17604
|
-
const triggerNotice = (0,
|
|
17751
|
+
const triggerNotice = (0, import_react111.useCallback)(
|
|
17605
17752
|
(props) => {
|
|
17606
17753
|
const noticeId = props.id ?? `beamSnackbar:${snackbarId++}`;
|
|
17607
17754
|
let maybeTimeout;
|
|
@@ -17630,8 +17777,8 @@ function useSnackbar() {
|
|
|
17630
17777
|
},
|
|
17631
17778
|
[onClose, setNotices]
|
|
17632
17779
|
);
|
|
17633
|
-
const closeNotice = (0,
|
|
17634
|
-
const useSnackbarOffset = ({ bottom }) => (0,
|
|
17780
|
+
const closeNotice = (0, import_react111.useCallback)((id) => onClose(id), [onClose]);
|
|
17781
|
+
const useSnackbarOffset = ({ bottom }) => (0, import_react111.useEffect)(() => {
|
|
17635
17782
|
setOffset({ bottom });
|
|
17636
17783
|
return () => setOffset({});
|
|
17637
17784
|
}, [bottom]);
|
|
@@ -17640,9 +17787,9 @@ function useSnackbar() {
|
|
|
17640
17787
|
var snackbarId = 1;
|
|
17641
17788
|
|
|
17642
17789
|
// src/components/Stepper.tsx
|
|
17643
|
-
var
|
|
17790
|
+
var import_react112 = require("react");
|
|
17644
17791
|
var import_react_aria50 = require("react-aria");
|
|
17645
|
-
var
|
|
17792
|
+
var import_jsx_runtime159 = require("@emotion/react/jsx-runtime");
|
|
17646
17793
|
function Stepper(props) {
|
|
17647
17794
|
const { steps, currentStep, onChange } = props;
|
|
17648
17795
|
if (steps.length === 0) {
|
|
@@ -17653,25 +17800,25 @@ function Stepper(props) {
|
|
|
17653
17800
|
const maxStepWidth = 200;
|
|
17654
17801
|
const minStepWidth = 100;
|
|
17655
17802
|
const gap = 8;
|
|
17656
|
-
return /* @__PURE__ */ (0,
|
|
17657
|
-
/* @__PURE__ */ (0,
|
|
17803
|
+
return /* @__PURE__ */ (0, import_jsx_runtime159.jsxs)("nav", { "aria-label": "steps", css: Css.df.fdc.w100.$, ...tid, children: [
|
|
17804
|
+
/* @__PURE__ */ (0, import_jsx_runtime159.jsx)("ol", { css: Css.listReset.df.gapPx(gap).$, children: steps.map((step) => {
|
|
17658
17805
|
const isCurrent = currentStep === step.value;
|
|
17659
|
-
return /* @__PURE__ */ (0,
|
|
17806
|
+
return /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(
|
|
17660
17807
|
"li",
|
|
17661
17808
|
{
|
|
17662
17809
|
css: Css.df.fg1.fdc.maxwPx(maxStepWidth).mwPx(minStepWidth).$,
|
|
17663
17810
|
"aria-current": isCurrent,
|
|
17664
17811
|
...tid.step,
|
|
17665
|
-
children: /* @__PURE__ */ (0,
|
|
17812
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(StepButton, { ...step, onClick: () => onChange(step.value), isCurrent, ...tid.stepButton })
|
|
17666
17813
|
},
|
|
17667
17814
|
step.label
|
|
17668
17815
|
);
|
|
17669
17816
|
}) }),
|
|
17670
|
-
/* @__PURE__ */ (0,
|
|
17817
|
+
/* @__PURE__ */ (0, import_jsx_runtime159.jsx)(
|
|
17671
17818
|
"div",
|
|
17672
17819
|
{
|
|
17673
17820
|
css: Css.mt1.bgGray300.hPx(4).maxwPx(steps.length * maxStepWidth + (steps.length - 1) * gap).mwPx(steps.length * minStepWidth + (steps.length - 1) * gap).w100.$,
|
|
17674
|
-
children: /* @__PURE__ */ (0,
|
|
17821
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(
|
|
17675
17822
|
"div",
|
|
17676
17823
|
{
|
|
17677
17824
|
css: Css.bgBlue600.add("transition", "width 200ms").h100.w(`${(lastCompletedStep + 1) / steps.length * 100}%`).$
|
|
@@ -17684,13 +17831,13 @@ function Stepper(props) {
|
|
|
17684
17831
|
function StepButton(props) {
|
|
17685
17832
|
const { label, disabled, state, isCurrent, onClick } = props;
|
|
17686
17833
|
const ariaProps = { onPress: onClick, isDisabled: disabled };
|
|
17687
|
-
const ref = (0,
|
|
17834
|
+
const ref = (0, import_react112.useRef)(null);
|
|
17688
17835
|
const { buttonProps, isPressed } = (0, import_react_aria50.useButton)(ariaProps, ref);
|
|
17689
17836
|
const { isFocusVisible, focusProps } = (0, import_react_aria50.useFocusRing)();
|
|
17690
17837
|
const { hoverProps, isHovered } = (0, import_react_aria50.useHover)(ariaProps);
|
|
17691
17838
|
const focusRingStyles2 = state === "error" ? Css.bshDanger.$ : Css.bshFocus.$;
|
|
17692
17839
|
const tid = useTestIds(props, "stepButton");
|
|
17693
|
-
return /* @__PURE__ */ (0,
|
|
17840
|
+
return /* @__PURE__ */ (0, import_jsx_runtime159.jsxs)(
|
|
17694
17841
|
"button",
|
|
17695
17842
|
{
|
|
17696
17843
|
ref,
|
|
@@ -17708,7 +17855,7 @@ function StepButton(props) {
|
|
|
17708
17855
|
},
|
|
17709
17856
|
...tid[defaultTestId(label)],
|
|
17710
17857
|
children: [
|
|
17711
|
-
/* @__PURE__ */ (0,
|
|
17858
|
+
/* @__PURE__ */ (0, import_jsx_runtime159.jsx)("span", { css: Css.fs0.mrPx(4).$, children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(StepIcon, { state, isHovered, isPressed, isCurrent }) }),
|
|
17712
17859
|
label
|
|
17713
17860
|
]
|
|
17714
17861
|
}
|
|
@@ -17716,12 +17863,12 @@ function StepButton(props) {
|
|
|
17716
17863
|
}
|
|
17717
17864
|
function StepIcon({ state, isHovered = false, isPressed = false, isCurrent = false }) {
|
|
17718
17865
|
if (state === "error") {
|
|
17719
|
-
return /* @__PURE__ */ (0,
|
|
17866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(Icon, { icon: "errorCircle" });
|
|
17720
17867
|
}
|
|
17721
17868
|
if (state === "complete") {
|
|
17722
|
-
return /* @__PURE__ */ (0,
|
|
17869
|
+
return /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(Icon, { icon: "check" });
|
|
17723
17870
|
}
|
|
17724
|
-
return /* @__PURE__ */ (0,
|
|
17871
|
+
return /* @__PURE__ */ (0, import_jsx_runtime159.jsx)("div", { css: Css.wPx(24).hPx(24).df.aic.jcc.$, children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(
|
|
17725
17872
|
"div",
|
|
17726
17873
|
{
|
|
17727
17874
|
css: Css.wPx(10).hPx(10).ba.bw2.br100.add("color", "currentColor").if(isHovered || isPressed || isCurrent).add("backgroundColor", "currentColor").$
|
|
@@ -17731,7 +17878,7 @@ function StepIcon({ state, isHovered = false, isPressed = false, isCurrent = fal
|
|
|
17731
17878
|
|
|
17732
17879
|
// src/components/SuperDrawer/components/SuperDrawerHeader.tsx
|
|
17733
17880
|
var import_react_dom5 = require("react-dom");
|
|
17734
|
-
var
|
|
17881
|
+
var import_jsx_runtime160 = require("@emotion/react/jsx-runtime");
|
|
17735
17882
|
function SuperDrawerHeader(props) {
|
|
17736
17883
|
const { hideControls } = props;
|
|
17737
17884
|
const { sdHeaderDiv, drawerContentStack: contentStack } = useBeamContext();
|
|
@@ -17741,15 +17888,15 @@ function SuperDrawerHeader(props) {
|
|
|
17741
17888
|
const isDetail = currentContent !== firstContent;
|
|
17742
17889
|
const tid = useTestIds({}, "superDrawerHeader");
|
|
17743
17890
|
return (0, import_react_dom5.createPortal)(
|
|
17744
|
-
/* @__PURE__ */ (0,
|
|
17745
|
-
isStructuredProps(props) ? /* @__PURE__ */ (0,
|
|
17746
|
-
/* @__PURE__ */ (0,
|
|
17747
|
-
typeof props.title === "string" ? /* @__PURE__ */ (0,
|
|
17891
|
+
/* @__PURE__ */ (0, import_jsx_runtime160.jsxs)("div", { css: Css.df.aic.jcsb.gap3.$, ...tid, children: [
|
|
17892
|
+
isStructuredProps(props) ? /* @__PURE__ */ (0, import_jsx_runtime160.jsxs)("div", { css: Css.df.jcsb.aic.gap2.fg1.$, children: [
|
|
17893
|
+
/* @__PURE__ */ (0, import_jsx_runtime160.jsxs)("div", { css: Css.fg1.df.aic.gap2.$, children: [
|
|
17894
|
+
typeof props.title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("h1", { children: props.title }) : props.title,
|
|
17748
17895
|
props.left
|
|
17749
17896
|
] }),
|
|
17750
|
-
props.right && /* @__PURE__ */ (0,
|
|
17751
|
-
] }) : /* @__PURE__ */ (0,
|
|
17752
|
-
!hideControls && /* @__PURE__ */ (0,
|
|
17897
|
+
props.right && /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("div", { css: Css.fs0.$, children: props.right })
|
|
17898
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("div", { css: Css.fg1.$, children: props.children }),
|
|
17899
|
+
!hideControls && /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("div", { css: Css.fs0.if(isDetail).vh.$, children: /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(
|
|
17753
17900
|
ButtonGroup,
|
|
17754
17901
|
{
|
|
17755
17902
|
buttons: [
|
|
@@ -17768,18 +17915,18 @@ function isStructuredProps(props) {
|
|
|
17768
17915
|
}
|
|
17769
17916
|
|
|
17770
17917
|
// src/components/SuperDrawer/ConfirmCloseModal.tsx
|
|
17771
|
-
var
|
|
17918
|
+
var import_jsx_runtime161 = require("@emotion/react/jsx-runtime");
|
|
17772
17919
|
function ConfirmCloseModal(props) {
|
|
17773
17920
|
const { onClose, discardText = "Discard Changes", continueText = "Continue Editing" } = props;
|
|
17774
17921
|
const { modalState } = useBeamContext();
|
|
17775
17922
|
function closeModal() {
|
|
17776
17923
|
modalState.current = void 0;
|
|
17777
17924
|
}
|
|
17778
|
-
return /* @__PURE__ */ (0,
|
|
17779
|
-
/* @__PURE__ */ (0,
|
|
17780
|
-
/* @__PURE__ */ (0,
|
|
17781
|
-
/* @__PURE__ */ (0,
|
|
17782
|
-
/* @__PURE__ */ (0,
|
|
17925
|
+
return /* @__PURE__ */ (0, import_jsx_runtime161.jsxs)(import_jsx_runtime161.Fragment, { children: [
|
|
17926
|
+
/* @__PURE__ */ (0, import_jsx_runtime161.jsx)(ModalHeader, { children: "Are you sure you want to cancel?" }),
|
|
17927
|
+
/* @__PURE__ */ (0, import_jsx_runtime161.jsx)(ModalBody, { children: /* @__PURE__ */ (0, import_jsx_runtime161.jsx)("p", { children: "Any changes you've made so far will be lost." }) }),
|
|
17928
|
+
/* @__PURE__ */ (0, import_jsx_runtime161.jsxs)(ModalFooter, { children: [
|
|
17929
|
+
/* @__PURE__ */ (0, import_jsx_runtime161.jsx)(
|
|
17783
17930
|
Button,
|
|
17784
17931
|
{
|
|
17785
17932
|
variant: "tertiary",
|
|
@@ -17790,7 +17937,7 @@ function ConfirmCloseModal(props) {
|
|
|
17790
17937
|
}
|
|
17791
17938
|
}
|
|
17792
17939
|
),
|
|
17793
|
-
/* @__PURE__ */ (0,
|
|
17940
|
+
/* @__PURE__ */ (0, import_jsx_runtime161.jsx)(Button, { label: continueText, onClick: closeModal })
|
|
17794
17941
|
] })
|
|
17795
17942
|
] });
|
|
17796
17943
|
}
|
|
@@ -17799,8 +17946,8 @@ function ConfirmCloseModal(props) {
|
|
|
17799
17946
|
var import_framer_motion4 = require("framer-motion");
|
|
17800
17947
|
|
|
17801
17948
|
// src/components/SuperDrawer/useSuperDrawer.tsx
|
|
17802
|
-
var
|
|
17803
|
-
var
|
|
17949
|
+
var import_react113 = require("react");
|
|
17950
|
+
var import_jsx_runtime162 = require("@emotion/react/jsx-runtime");
|
|
17804
17951
|
function useSuperDrawer() {
|
|
17805
17952
|
const {
|
|
17806
17953
|
drawerContentStack: contentStack,
|
|
@@ -17812,7 +17959,7 @@ function useSuperDrawer() {
|
|
|
17812
17959
|
function canCloseDrawerDetails(i, doChange) {
|
|
17813
17960
|
for (const canCloseDrawerDetail of canCloseDetailsChecks.current[i] ?? []) {
|
|
17814
17961
|
if (!canClose(canCloseDrawerDetail)) {
|
|
17815
|
-
openModal({ content: /* @__PURE__ */ (0,
|
|
17962
|
+
openModal({ content: /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawerDetail }) });
|
|
17816
17963
|
return false;
|
|
17817
17964
|
}
|
|
17818
17965
|
}
|
|
@@ -17832,14 +17979,14 @@ function useSuperDrawer() {
|
|
|
17832
17979
|
for (const canCloseDrawer of canCloseChecks.current) {
|
|
17833
17980
|
if (!canClose(canCloseDrawer)) {
|
|
17834
17981
|
openModal({
|
|
17835
|
-
content: /* @__PURE__ */ (0,
|
|
17982
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawer })
|
|
17836
17983
|
});
|
|
17837
17984
|
return;
|
|
17838
17985
|
}
|
|
17839
17986
|
}
|
|
17840
17987
|
doChange();
|
|
17841
17988
|
}
|
|
17842
|
-
const closeActions = (0,
|
|
17989
|
+
const closeActions = (0, import_react113.useMemo)(
|
|
17843
17990
|
() => {
|
|
17844
17991
|
return {
|
|
17845
17992
|
/** Attempts to close the drawer. If any checks fail, a confirmation modal will appear */
|
|
@@ -17874,7 +18021,7 @@ function useSuperDrawer() {
|
|
|
17874
18021
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17875
18022
|
[canCloseChecks, canCloseDetailsChecks, contentStack, modalState, openModal]
|
|
17876
18023
|
);
|
|
17877
|
-
const actions = (0,
|
|
18024
|
+
const actions = (0, import_react113.useMemo)(
|
|
17878
18025
|
() => {
|
|
17879
18026
|
return {
|
|
17880
18027
|
// TODO: Maybe we should rename to openDrawer as a breaking change (to match openDrawerDetail)
|
|
@@ -17927,7 +18074,7 @@ function canClose(canCloseCheck) {
|
|
|
17927
18074
|
}
|
|
17928
18075
|
|
|
17929
18076
|
// src/components/SuperDrawer/SuperDrawerContent.tsx
|
|
17930
|
-
var
|
|
18077
|
+
var import_jsx_runtime163 = require("@emotion/react/jsx-runtime");
|
|
17931
18078
|
var SuperDrawerContent = ({ children, actions }) => {
|
|
17932
18079
|
const { closeDrawerDetail } = useSuperDrawer();
|
|
17933
18080
|
const { drawerContentStack: contentStack } = useBeamContext();
|
|
@@ -17936,17 +18083,17 @@ var SuperDrawerContent = ({ children, actions }) => {
|
|
|
17936
18083
|
const { width: width2 = 1040 /* Normal */ } = firstContent ?? {};
|
|
17937
18084
|
function wrapWithMotionAndMaybeBack(children2) {
|
|
17938
18085
|
if (kind === "open") {
|
|
17939
|
-
return /* @__PURE__ */ (0,
|
|
18086
|
+
return /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(import_framer_motion4.motion.div, { css: Css.p3.fg1.oa.$, children: children2 }, "content");
|
|
17940
18087
|
} else if (kind === "detail") {
|
|
17941
|
-
return /* @__PURE__ */ (0,
|
|
18088
|
+
return /* @__PURE__ */ (0, import_jsx_runtime163.jsxs)(
|
|
17942
18089
|
import_framer_motion4.motion.div,
|
|
17943
18090
|
{
|
|
17944
18091
|
css: Css.px3.pt2.pb3.fg1.$,
|
|
17945
18092
|
animate: { overflow: "auto" },
|
|
17946
18093
|
transition: { overflow: { delay: 0.3 } },
|
|
17947
18094
|
children: [
|
|
17948
|
-
/* @__PURE__ */ (0,
|
|
17949
|
-
/* @__PURE__ */ (0,
|
|
18095
|
+
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)(Button, { label: "Back", icon: "chevronLeft", variant: "tertiary", onClick: closeDrawerDetail }),
|
|
18096
|
+
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)(
|
|
17950
18097
|
import_framer_motion4.motion.div,
|
|
17951
18098
|
{
|
|
17952
18099
|
initial: { x: width2, opacity: 0 },
|
|
@@ -17962,27 +18109,27 @@ var SuperDrawerContent = ({ children, actions }) => {
|
|
|
17962
18109
|
"content"
|
|
17963
18110
|
);
|
|
17964
18111
|
} else {
|
|
17965
|
-
return /* @__PURE__ */ (0,
|
|
18112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(import_framer_motion4.motion.div, { css: Css.p3.fg1.$, style: { overflow: "auto" } }, "content");
|
|
17966
18113
|
}
|
|
17967
18114
|
}
|
|
17968
|
-
return /* @__PURE__ */ (0,
|
|
18115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime163.jsxs)(import_jsx_runtime163.Fragment, { children: [
|
|
17969
18116
|
wrapWithMotionAndMaybeBack(children),
|
|
17970
|
-
actions && /* @__PURE__ */ (0,
|
|
18117
|
+
actions && /* @__PURE__ */ (0, import_jsx_runtime163.jsx)("footer", { css: Css.bt.bcGray200.p3.df.aic.jcfe.$, children: /* @__PURE__ */ (0, import_jsx_runtime163.jsx)("div", { css: Css.df.gap1.$, children: actions.map((buttonProps, i) => /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(Button, { ...buttonProps }, i)) }) })
|
|
17971
18118
|
] });
|
|
17972
18119
|
};
|
|
17973
18120
|
|
|
17974
18121
|
// src/components/Tabs.tsx
|
|
17975
18122
|
var import_change_case7 = require("change-case");
|
|
17976
|
-
var
|
|
18123
|
+
var import_react114 = require("react");
|
|
17977
18124
|
var import_react_aria51 = require("react-aria");
|
|
17978
18125
|
var import_react_router2 = require("react-router");
|
|
17979
18126
|
var import_react_router_dom5 = require("react-router-dom");
|
|
17980
|
-
var
|
|
18127
|
+
var import_jsx_runtime164 = require("@emotion/react/jsx-runtime");
|
|
17981
18128
|
function TabsWithContent(props) {
|
|
17982
18129
|
const styles = hideTabs(props) ? {} : Css.pt3.$;
|
|
17983
|
-
return /* @__PURE__ */ (0,
|
|
17984
|
-
/* @__PURE__ */ (0,
|
|
17985
|
-
/* @__PURE__ */ (0,
|
|
18130
|
+
return /* @__PURE__ */ (0, import_jsx_runtime164.jsxs)(import_jsx_runtime164.Fragment, { children: [
|
|
18131
|
+
/* @__PURE__ */ (0, import_jsx_runtime164.jsx)(Tabs, { ...props }),
|
|
18132
|
+
/* @__PURE__ */ (0, import_jsx_runtime164.jsx)(TabContent, { ...props, contentXss: { ...styles, ...props.contentXss } })
|
|
17986
18133
|
] });
|
|
17987
18134
|
}
|
|
17988
18135
|
function TabContent(props) {
|
|
@@ -17997,7 +18144,7 @@ function TabContent(props) {
|
|
|
17997
18144
|
return (
|
|
17998
18145
|
// Using FullBleed to allow the tab's bgColor to extend to the edges of the <ScrollableContent /> element.
|
|
17999
18146
|
// Omit the padding from `FullBleed` if the caller passes in the `paddingLeft/Right` styles.
|
|
18000
|
-
/* @__PURE__ */ (0,
|
|
18147
|
+
/* @__PURE__ */ (0, import_jsx_runtime164.jsx)(FullBleed, { omitPadding: "paddingLeft" in contentXss || "paddingRight" in contentXss, children: /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(
|
|
18001
18148
|
"div",
|
|
18002
18149
|
{
|
|
18003
18150
|
"aria-labelledby": `${uniqueValue}-tab`,
|
|
@@ -18006,7 +18153,7 @@ function TabContent(props) {
|
|
|
18006
18153
|
tabIndex: 0,
|
|
18007
18154
|
...tid.panel,
|
|
18008
18155
|
css: contentXss,
|
|
18009
|
-
children: isRouteTab(selectedTab) ? /* @__PURE__ */ (0,
|
|
18156
|
+
children: isRouteTab(selectedTab) ? /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(import_react_router2.Route, { path: selectedTab.path, render: selectedTab.render }) : selectedTab.render()
|
|
18010
18157
|
}
|
|
18011
18158
|
) })
|
|
18012
18159
|
);
|
|
@@ -18019,9 +18166,9 @@ function Tabs(props) {
|
|
|
18019
18166
|
) : props.selected;
|
|
18020
18167
|
const { isFocusVisible, focusProps } = (0, import_react_aria51.useFocusRing)();
|
|
18021
18168
|
const tid = useTestIds(others, "tabs");
|
|
18022
|
-
const [active, setActive] = (0,
|
|
18023
|
-
const ref = (0,
|
|
18024
|
-
(0,
|
|
18169
|
+
const [active, setActive] = (0, import_react114.useState)(selected);
|
|
18170
|
+
const ref = (0, import_react114.useRef)(null);
|
|
18171
|
+
(0, import_react114.useEffect)(() => setActive(selected), [selected]);
|
|
18025
18172
|
function onKeyUp(e) {
|
|
18026
18173
|
if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
|
|
18027
18174
|
const nextTabValue = getNextTabValue(active, e.key, tabs);
|
|
@@ -18037,10 +18184,10 @@ function Tabs(props) {
|
|
|
18037
18184
|
setActive(selected);
|
|
18038
18185
|
}
|
|
18039
18186
|
}
|
|
18040
|
-
return /* @__PURE__ */ (0,
|
|
18041
|
-
!hideTabs(props) && /* @__PURE__ */ (0,
|
|
18187
|
+
return /* @__PURE__ */ (0, import_jsx_runtime164.jsxs)("div", { css: { ...Css.df.aic.oa.wsnw.gap1.$, ...includeBottomBorder ? { ...Css.bb.bcGray200.$ } : {} }, children: [
|
|
18188
|
+
!hideTabs(props) && /* @__PURE__ */ (0, import_jsx_runtime164.jsx)("div", { ref, css: Css.dif.gap1.asfe.$, "aria-label": ariaLabel, role: "tablist", ...tid, children: tabs.map((tab) => {
|
|
18042
18189
|
const uniqueValue = uniqueTabValue(tab);
|
|
18043
|
-
return /* @__PURE__ */ (0,
|
|
18190
|
+
return /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(
|
|
18044
18191
|
TabImpl,
|
|
18045
18192
|
{
|
|
18046
18193
|
active: active === uniqueValue,
|
|
@@ -18055,7 +18202,7 @@ function Tabs(props) {
|
|
|
18055
18202
|
uniqueValue
|
|
18056
18203
|
);
|
|
18057
18204
|
}) }),
|
|
18058
|
-
right && /* @__PURE__ */ (0,
|
|
18205
|
+
right && /* @__PURE__ */ (0, import_jsx_runtime164.jsx)("div", { css: Css.mla.df.aic.gap1.pb1.$, children: right })
|
|
18059
18206
|
] });
|
|
18060
18207
|
}
|
|
18061
18208
|
function TabImpl(props) {
|
|
@@ -18063,7 +18210,7 @@ function TabImpl(props) {
|
|
|
18063
18210
|
const { disabled = false, name: label, icon, endAdornment } = tab;
|
|
18064
18211
|
const isDisabled = !!disabled;
|
|
18065
18212
|
const { hoverProps, isHovered } = (0, import_react_aria51.useHover)({ isDisabled });
|
|
18066
|
-
const { baseStyles: baseStyles5, activeStyles: activeStyles4, focusRingStyles: focusRingStyles2, hoverStyles: hoverStyles4, disabledStyles: disabledStyles4, activeHoverStyles } = (0,
|
|
18213
|
+
const { baseStyles: baseStyles5, activeStyles: activeStyles4, focusRingStyles: focusRingStyles2, hoverStyles: hoverStyles4, disabledStyles: disabledStyles4, activeHoverStyles } = (0, import_react114.useMemo)(
|
|
18067
18214
|
() => getTabStyles(),
|
|
18068
18215
|
[]
|
|
18069
18216
|
);
|
|
@@ -18090,15 +18237,15 @@ function TabImpl(props) {
|
|
|
18090
18237
|
onBlur,
|
|
18091
18238
|
...isRouteTab(tab) ? {} : { onClick: () => onClick(tab.value) }
|
|
18092
18239
|
});
|
|
18093
|
-
const tabLabel = /* @__PURE__ */ (0,
|
|
18240
|
+
const tabLabel = /* @__PURE__ */ (0, import_jsx_runtime164.jsxs)(import_jsx_runtime164.Fragment, { children: [
|
|
18094
18241
|
label,
|
|
18095
|
-
(icon || endAdornment) && /* @__PURE__ */ (0,
|
|
18242
|
+
(icon || endAdornment) && /* @__PURE__ */ (0, import_jsx_runtime164.jsx)("span", { css: Css.ml1.$, children: icon ? /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(Icon, { icon }) : endAdornment })
|
|
18096
18243
|
] });
|
|
18097
18244
|
return isDisabled ? maybeTooltip({
|
|
18098
18245
|
title: resolveTooltip(disabled),
|
|
18099
18246
|
placement: "top",
|
|
18100
|
-
children: /* @__PURE__ */ (0,
|
|
18101
|
-
}) : isRouteTab(tab) ? /* @__PURE__ */ (0,
|
|
18247
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime164.jsx)("div", { ...tabProps, children: tabLabel })
|
|
18248
|
+
}) : isRouteTab(tab) ? /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(import_react_router_dom5.Link, { ...{ ...tabProps, ...interactiveProps }, className: "navLink", to: tab.href, children: tabLabel }) : /* @__PURE__ */ (0, import_jsx_runtime164.jsx)("button", { ...{ ...tabProps, ...interactiveProps }, children: tabLabel });
|
|
18102
18249
|
}
|
|
18103
18250
|
function getTabStyles() {
|
|
18104
18251
|
const borderBottomWidthPx = 4;
|
|
@@ -18135,18 +18282,18 @@ function hideTabs(props) {
|
|
|
18135
18282
|
}
|
|
18136
18283
|
|
|
18137
18284
|
// src/components/Toast/Toast.tsx
|
|
18138
|
-
var
|
|
18285
|
+
var import_jsx_runtime165 = require("@emotion/react/jsx-runtime");
|
|
18139
18286
|
function Toast() {
|
|
18140
18287
|
const { setNotice, notice } = useToastContext();
|
|
18141
18288
|
const tid = useTestIds({}, "toast");
|
|
18142
|
-
return /* @__PURE__ */ (0,
|
|
18289
|
+
return /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(import_jsx_runtime165.Fragment, { children: notice && /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(Banner, { ...notice, ...tid, onClose: () => setNotice(void 0) }) });
|
|
18143
18290
|
}
|
|
18144
18291
|
|
|
18145
18292
|
// src/components/Toast/useToast.tsx
|
|
18146
|
-
var
|
|
18293
|
+
var import_react115 = require("react");
|
|
18147
18294
|
function useToast() {
|
|
18148
18295
|
const { setNotice, clear } = useToastContext();
|
|
18149
|
-
const showToast = (0,
|
|
18296
|
+
const showToast = (0, import_react115.useCallback)((props) => setNotice(props), [setNotice]);
|
|
18150
18297
|
return { showToast, clear };
|
|
18151
18298
|
}
|
|
18152
18299
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -18223,6 +18370,7 @@ function useToast() {
|
|
|
18223
18370
|
FormRow,
|
|
18224
18371
|
FullBleed,
|
|
18225
18372
|
GridTable,
|
|
18373
|
+
GridTableLayout,
|
|
18226
18374
|
HB_QUIPS_FLAVOR,
|
|
18227
18375
|
HB_QUIPS_MISSION,
|
|
18228
18376
|
HEADER,
|
|
@@ -18410,6 +18558,7 @@ function useToast() {
|
|
|
18410
18558
|
useDnDGridItem,
|
|
18411
18559
|
useFilter,
|
|
18412
18560
|
useGridTableApi,
|
|
18561
|
+
useGridTableLayoutState,
|
|
18413
18562
|
useGroupBy,
|
|
18414
18563
|
useHover,
|
|
18415
18564
|
useModal,
|