@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.js
CHANGED
|
@@ -13707,7 +13707,7 @@ var variantStyles2 = {
|
|
|
13707
13707
|
};
|
|
13708
13708
|
|
|
13709
13709
|
// src/components/BeamContext.tsx
|
|
13710
|
-
import { createContext as createContext6, useContext as useContext15, useMemo as
|
|
13710
|
+
import { createContext as createContext6, useContext as useContext15, useMemo as useMemo35, useReducer, useRef as useRef43 } from "react";
|
|
13711
13711
|
import { OverlayProvider } from "react-aria";
|
|
13712
13712
|
|
|
13713
13713
|
// src/components/Modal/Modal.tsx
|
|
@@ -15257,7 +15257,7 @@ import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-m
|
|
|
15257
15257
|
import { useState as useState31 } from "react";
|
|
15258
15258
|
import { Fragment as Fragment21, jsx as jsx119, jsxs as jsxs57 } from "@emotion/react/jsx-runtime";
|
|
15259
15259
|
var RIGHT_SIDEBAR_MIN_WIDTH = "250px";
|
|
15260
|
-
function RightSidebar({ content }) {
|
|
15260
|
+
function RightSidebar({ content, headerHeightPx: headerHeightPx2 }) {
|
|
15261
15261
|
const [selectedIcon, setSelectedIcon] = useState31(void 0);
|
|
15262
15262
|
const tid = useTestIds({}, "rightSidebar");
|
|
15263
15263
|
return /* @__PURE__ */ jsxs57(Fragment21, { children: [
|
|
@@ -15279,23 +15279,25 @@ function RightSidebar({ content }) {
|
|
|
15279
15279
|
animate: { x: 0, opacity: 1 },
|
|
15280
15280
|
transition: { delay: 0.2, ease: [0.51, 0.92, 0.24, 1], duration: 0.3 },
|
|
15281
15281
|
exit: { transition: { ease: "linear", duration: 0.2 }, x: "100%" },
|
|
15282
|
-
css: Css.w100.mw(RIGHT_SIDEBAR_MIN_WIDTH).z0.$,
|
|
15283
|
-
children: /* @__PURE__ */ jsxs57(
|
|
15284
|
-
/* @__PURE__ */ jsxs57("div", { css: Css.
|
|
15285
|
-
/* @__PURE__ */
|
|
15286
|
-
|
|
15287
|
-
|
|
15288
|
-
|
|
15289
|
-
|
|
15290
|
-
|
|
15291
|
-
|
|
15292
|
-
|
|
15293
|
-
|
|
15294
|
-
|
|
15295
|
-
|
|
15282
|
+
css: Css.w100.mw(RIGHT_SIDEBAR_MIN_WIDTH).z0.maxh(`calc(100vh - ${headerHeightPx2}px)`).oya.pl4.pr3.$,
|
|
15283
|
+
children: /* @__PURE__ */ jsxs57(Fragment21, { children: [
|
|
15284
|
+
/* @__PURE__ */ jsxs57("div", { css: Css.sticky.top0.bgWhite.$, children: [
|
|
15285
|
+
/* @__PURE__ */ jsxs57("div", { css: Css.absolute.leftPx(-24).top0.df.fdc.aic.$, children: [
|
|
15286
|
+
/* @__PURE__ */ jsx119(
|
|
15287
|
+
IconButton,
|
|
15288
|
+
{
|
|
15289
|
+
bgColor: "rgba(255,255,255,1)" /* White */,
|
|
15290
|
+
circle: true,
|
|
15291
|
+
onClick: () => setSelectedIcon(void 0),
|
|
15292
|
+
icon: "x",
|
|
15293
|
+
inc: 3.5
|
|
15294
|
+
}
|
|
15295
|
+
),
|
|
15296
|
+
/* @__PURE__ */ jsx119("div", { css: Css.absolute.topPx(48).h("calc(100vh - 168px)").wPx(1).bgGray300.$ })
|
|
15297
|
+
] }),
|
|
15298
|
+
/* @__PURE__ */ jsx119("div", { css: Css.df.aic.jcfe.gap2.mb3.$, children: /* @__PURE__ */ jsx119(IconButtonList, { content, selectedIcon, onIconClick: setSelectedIcon }) })
|
|
15296
15299
|
] }),
|
|
15297
|
-
/* @__PURE__ */ jsx119("div", { css: Css.
|
|
15298
|
-
selectedIcon && /* @__PURE__ */ jsx119("div", { ...tid.content, children: content.find((sidebar) => sidebar.icon === selectedIcon)?.render() })
|
|
15300
|
+
selectedIcon && /* @__PURE__ */ jsx119("div", { ...tid.content, css: Css.pl3.$, children: content.find((sidebar) => sidebar.icon === selectedIcon)?.render() })
|
|
15299
15301
|
] })
|
|
15300
15302
|
},
|
|
15301
15303
|
"rightSidebar"
|
|
@@ -15355,7 +15357,7 @@ function FormPageLayoutComponent(props) {
|
|
|
15355
15357
|
/* @__PURE__ */ jsx121(PageHeader, { ...props, ...tids.pageHeader }),
|
|
15356
15358
|
/* @__PURE__ */ jsx121(LeftNav, { sectionsWithRefs, ...tids }),
|
|
15357
15359
|
/* @__PURE__ */ jsx121(FormSections, { sectionsWithRefs, formState, ...tids }),
|
|
15358
|
-
rightSideBar && /* @__PURE__ */ jsx121("aside", { css: Css.gr(2).gc("3 / 4").sticky.topPx(headerHeightPx).$, children: /* @__PURE__ */ jsx121(RightSidebar, { content: rightSideBar }) })
|
|
15360
|
+
rightSideBar && /* @__PURE__ */ jsx121("aside", { css: Css.gr(2).gc("3 / 4").sticky.topPx(headerHeightPx).$, children: /* @__PURE__ */ jsx121(RightSidebar, { content: rightSideBar, headerHeightPx }) })
|
|
15359
15361
|
] }) })
|
|
15360
15362
|
);
|
|
15361
15363
|
}
|
|
@@ -15584,1336 +15586,1514 @@ function FullBleed({ children, omitPadding = false }) {
|
|
|
15584
15586
|
});
|
|
15585
15587
|
}
|
|
15586
15588
|
|
|
15587
|
-
// src/components/Layout/
|
|
15588
|
-
import {
|
|
15589
|
-
function PreventBrowserScroll({ children }) {
|
|
15590
|
-
return (
|
|
15591
|
-
// Take over the full viewport and hide any overflown content.
|
|
15592
|
-
// 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/
|
|
15593
|
-
// 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.
|
|
15594
|
-
/* @__PURE__ */ jsx123("div", { css: Css.oh.vh100.mh("-webkit-fill-available").maxh("-webkit-fill-available").$, children: /* @__PURE__ */ jsx123("div", { css: Css.h100.df.fdc.mh0.oa.$, children }) })
|
|
15595
|
-
);
|
|
15596
|
-
}
|
|
15589
|
+
// src/components/Layout/GridTableLayout/GridTableLayout.tsx
|
|
15590
|
+
import React14, { useEffect as useEffect25, useState as useState35 } from "react";
|
|
15597
15591
|
|
|
15598
|
-
// src/components/
|
|
15599
|
-
import
|
|
15600
|
-
|
|
15601
|
-
|
|
15602
|
-
|
|
15603
|
-
|
|
15604
|
-
|
|
15605
|
-
|
|
15606
|
-
|
|
15607
|
-
|
|
15608
|
-
|
|
15609
|
-
|
|
15610
|
-
|
|
15611
|
-
|
|
15612
|
-
|
|
15613
|
-
|
|
15614
|
-
|
|
15615
|
-
|
|
15616
|
-
|
|
15617
|
-
|
|
15618
|
-
|
|
15619
|
-
|
|
15620
|
-
|
|
15621
|
-
|
|
15622
|
-
const clearPane = useCallback18(() => setRightPaneContent(void 0), [setRightPaneContent]);
|
|
15623
|
-
const context = useMemo31(
|
|
15624
|
-
() => ({ openInPane, closePane, clearPane, rightPaneContent, isRightPaneOpen }),
|
|
15625
|
-
[openInPane, closePane, rightPaneContent, clearPane, isRightPaneOpen]
|
|
15626
|
-
);
|
|
15627
|
-
return /* @__PURE__ */ jsx124(RightPaneContext.Provider, { value: context, children });
|
|
15628
|
-
}
|
|
15629
|
-
function useRightPaneContext() {
|
|
15630
|
-
return useContext13(RightPaneContext);
|
|
15592
|
+
// src/components/Filters/Filters.tsx
|
|
15593
|
+
import { memo, useMemo as useMemo31 } from "react";
|
|
15594
|
+
|
|
15595
|
+
// src/components/Filters/BaseFilter.ts
|
|
15596
|
+
var BaseFilter = class {
|
|
15597
|
+
constructor(key, props) {
|
|
15598
|
+
this.key = key;
|
|
15599
|
+
this.props = props;
|
|
15600
|
+
}
|
|
15601
|
+
get label() {
|
|
15602
|
+
return this.props.label || defaultLabel(this.key);
|
|
15603
|
+
}
|
|
15604
|
+
get defaultValue() {
|
|
15605
|
+
return this.props.defaultValue;
|
|
15606
|
+
}
|
|
15607
|
+
testId(tid) {
|
|
15608
|
+
return tid[defaultTestId(this.label)];
|
|
15609
|
+
}
|
|
15610
|
+
};
|
|
15611
|
+
|
|
15612
|
+
// src/components/Filters/DateFilter.tsx
|
|
15613
|
+
import { Fragment as Fragment23, jsx as jsx123, jsxs as jsxs61 } from "@emotion/react/jsx-runtime";
|
|
15614
|
+
function dateFilter(props) {
|
|
15615
|
+
return (key) => new DateFilter(key, props);
|
|
15631
15616
|
}
|
|
15617
|
+
var anyOption = {};
|
|
15618
|
+
var DateFilter = class extends BaseFilter {
|
|
15619
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15620
|
+
const { label, operations, getOperationValue, getOperationLabel } = this.props;
|
|
15621
|
+
return /* @__PURE__ */ jsxs61(Fragment23, { children: [
|
|
15622
|
+
vertical && /* @__PURE__ */ jsx123(Label, { label }),
|
|
15623
|
+
/* @__PURE__ */ jsxs61(CompoundField, { children: [
|
|
15624
|
+
/* @__PURE__ */ jsx123(
|
|
15625
|
+
SelectField,
|
|
15626
|
+
{
|
|
15627
|
+
compact: true,
|
|
15628
|
+
sizeToContent: true,
|
|
15629
|
+
options: [
|
|
15630
|
+
// Always show the 'Any' option
|
|
15631
|
+
anyOption,
|
|
15632
|
+
...operations
|
|
15633
|
+
],
|
|
15634
|
+
getOptionValue: (o) => o === anyOption ? void 0 : getOperationValue(o),
|
|
15635
|
+
getOptionLabel: (o) => o === anyOption ? "Any" : getOperationLabel(o),
|
|
15636
|
+
value: value?.op,
|
|
15637
|
+
onSelect: (op) => (
|
|
15638
|
+
// default the selected date to today if it doesn't exist in the filter's value
|
|
15639
|
+
setValue(op ? { op, value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date() } : void 0)
|
|
15640
|
+
),
|
|
15641
|
+
label: inModal ? `${label} date filter operation` : label,
|
|
15642
|
+
labelStyle: !inModal && !vertical ? "inline" : inModal || vertical ? "hidden" : "above",
|
|
15643
|
+
nothingSelectedText: "Any",
|
|
15644
|
+
...tid[`${defaultTestId(this.label)}_dateOperation`]
|
|
15645
|
+
}
|
|
15646
|
+
),
|
|
15647
|
+
/* @__PURE__ */ jsx123(
|
|
15648
|
+
DateField,
|
|
15649
|
+
{
|
|
15650
|
+
compact: true,
|
|
15651
|
+
labelStyle: "inline",
|
|
15652
|
+
value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date(),
|
|
15653
|
+
label: "Date",
|
|
15654
|
+
onChange: (d) => setValue({ ...value, value: d }),
|
|
15655
|
+
disabled: !value,
|
|
15656
|
+
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
15657
|
+
}
|
|
15658
|
+
)
|
|
15659
|
+
] })
|
|
15660
|
+
] });
|
|
15661
|
+
}
|
|
15662
|
+
};
|
|
15632
15663
|
|
|
15633
|
-
// src/components/
|
|
15634
|
-
import {
|
|
15635
|
-
|
|
15636
|
-
|
|
15637
|
-
|
|
15638
|
-
|
|
15639
|
-
|
|
15640
|
-
|
|
15641
|
-
|
|
15642
|
-
|
|
15643
|
-
|
|
15644
|
-
|
|
15645
|
-
css: {
|
|
15646
|
-
...Css.w(`calc(100% - ${paneWidth + 24}px)`).add("transition", "width .2s linear").h100.mr3.oxa.$,
|
|
15647
|
-
...Css.if(!isRightPaneOpen).w100.mr0.$,
|
|
15648
|
-
...Css.if(!!defaultPaneContent).w(`calc(100% - ${paneWidth + 24}px)`).mr3.$
|
|
15649
|
-
},
|
|
15650
|
-
children
|
|
15651
|
-
}
|
|
15652
|
-
),
|
|
15653
|
-
/* @__PURE__ */ jsxs61("div", { css: Css.relative.if(!!defaultPaneContent).wPx(paneWidth).$, children: [
|
|
15654
|
-
defaultPaneContent && /* @__PURE__ */ jsx125(
|
|
15655
|
-
"div",
|
|
15664
|
+
// src/components/Filters/DateRangeFilter.tsx
|
|
15665
|
+
import { Fragment as Fragment24, jsx as jsx124, jsxs as jsxs62 } from "@emotion/react/jsx-runtime";
|
|
15666
|
+
function dateRangeFilter(props) {
|
|
15667
|
+
return (key) => new DateRangeFilter(key, props);
|
|
15668
|
+
}
|
|
15669
|
+
var DateRangeFilter = class extends BaseFilter {
|
|
15670
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15671
|
+
const { label, placeholderText, disabledDays, testFieldLabel, defaultValue } = this.props;
|
|
15672
|
+
return /* @__PURE__ */ jsxs62(Fragment24, { children: [
|
|
15673
|
+
vertical && /* @__PURE__ */ jsx124(Label, { label }),
|
|
15674
|
+
/* @__PURE__ */ jsx124(
|
|
15675
|
+
DateRangeField,
|
|
15656
15676
|
{
|
|
15657
|
-
|
|
15658
|
-
|
|
15677
|
+
compact: true,
|
|
15678
|
+
labelStyle: "inline",
|
|
15679
|
+
isRangeFilterField: true,
|
|
15680
|
+
placeholder: placeholderText,
|
|
15681
|
+
label: testFieldLabel ?? "Date",
|
|
15682
|
+
value: value?.value ? { from: new Date(value.value.from), to: new Date(value.value.to) } : void 0,
|
|
15683
|
+
onChange: (d) => d ? setValue({ op: defaultValue?.op, value: d }) : setValue(void 0),
|
|
15684
|
+
disabledDays,
|
|
15685
|
+
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
15659
15686
|
}
|
|
15660
|
-
)
|
|
15661
|
-
|
|
15662
|
-
|
|
15663
|
-
|
|
15664
|
-
layout: "position",
|
|
15665
|
-
"data-testid": "rightPaneContent",
|
|
15666
|
-
css: Css.bgColor(paneBgColor).h100.wPx(paneWidth).$,
|
|
15667
|
-
initial: { x: paneWidth + 24, position: "absolute" },
|
|
15668
|
-
animate: { x: 0 },
|
|
15669
|
-
transition: { ease: "linear", duration: 0.2 },
|
|
15670
|
-
exit: { transition: { ease: "linear", duration: 0.2 }, x: paneWidth },
|
|
15671
|
-
onAnimationComplete: (definition) => definition.x !== 0 && clearPane(),
|
|
15672
|
-
children: rightPaneContent
|
|
15673
|
-
},
|
|
15674
|
-
"rightPane"
|
|
15675
|
-
) })
|
|
15676
|
-
] })
|
|
15677
|
-
] }) });
|
|
15678
|
-
}
|
|
15687
|
+
)
|
|
15688
|
+
] });
|
|
15689
|
+
}
|
|
15690
|
+
};
|
|
15679
15691
|
|
|
15680
|
-
// src/components/
|
|
15681
|
-
|
|
15682
|
-
|
|
15683
|
-
return
|
|
15684
|
-
openRightPane: openInPane,
|
|
15685
|
-
closeRightPane: closePane
|
|
15686
|
-
};
|
|
15692
|
+
// src/components/Filters/MultiFilter.tsx
|
|
15693
|
+
import { jsx as jsx125 } from "@emotion/react/jsx-runtime";
|
|
15694
|
+
function multiFilter(props) {
|
|
15695
|
+
return (key) => new MultiFilter(key, props);
|
|
15687
15696
|
}
|
|
15688
|
-
|
|
15689
|
-
|
|
15690
|
-
|
|
15691
|
-
|
|
15692
|
-
|
|
15693
|
-
|
|
15694
|
-
|
|
15695
|
-
|
|
15696
|
-
|
|
15697
|
-
|
|
15698
|
-
|
|
15699
|
-
|
|
15700
|
-
|
|
15701
|
-
|
|
15702
|
-
|
|
15703
|
-
|
|
15704
|
-
|
|
15705
|
-
|
|
15697
|
+
var MultiFilter = class extends BaseFilter {
|
|
15698
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15699
|
+
if (inModal && Array.isArray(this.props.options) && this.props.options.length > 0 && this.props.options.length <= 8) {
|
|
15700
|
+
const { disabledOptions } = this.props;
|
|
15701
|
+
const disabledOptionsWithReasons = Object.fromEntries(disabledOptions?.map(disabledOptionToKeyedTuple) ?? []);
|
|
15702
|
+
const disabledKeys = Object.keys(disabledOptionsWithReasons);
|
|
15703
|
+
return /* @__PURE__ */ jsx125(
|
|
15704
|
+
ToggleChipGroup,
|
|
15705
|
+
{
|
|
15706
|
+
label: this.label,
|
|
15707
|
+
options: this.props.options.map((o) => {
|
|
15708
|
+
const value2 = this.props.getOptionValue(o);
|
|
15709
|
+
const disabled = value2 && disabledKeys.includes(value2.toString());
|
|
15710
|
+
const disabledReason = disabled ? disabledOptionsWithReasons[value2.toString()] : void 0;
|
|
15711
|
+
return {
|
|
15712
|
+
label: this.props.getOptionLabel(o),
|
|
15713
|
+
value: value2,
|
|
15714
|
+
disabled: disabledReason ?? disabled
|
|
15715
|
+
};
|
|
15716
|
+
}),
|
|
15717
|
+
onChange: (values) => {
|
|
15718
|
+
setValue(values.length === 0 ? void 0 : values);
|
|
15719
|
+
},
|
|
15720
|
+
values: value || [],
|
|
15721
|
+
labelStyle: "hidden",
|
|
15722
|
+
...tid[defaultTestId(this.label)]
|
|
15723
|
+
}
|
|
15724
|
+
);
|
|
15725
|
+
}
|
|
15726
|
+
const { defaultValue, nothingSelectedText, ...props } = this.props;
|
|
15727
|
+
return /* @__PURE__ */ jsx125(
|
|
15728
|
+
MultiSelectField,
|
|
15706
15729
|
{
|
|
15707
|
-
|
|
15708
|
-
|
|
15709
|
-
|
|
15710
|
-
|
|
15730
|
+
...props,
|
|
15731
|
+
compact: !vertical,
|
|
15732
|
+
label: this.label,
|
|
15733
|
+
values: value || [],
|
|
15734
|
+
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
15735
|
+
sizeToContent: !inModal && !vertical,
|
|
15736
|
+
onSelect: (values) => {
|
|
15737
|
+
setValue(values.length === 0 ? void 0 : values);
|
|
15711
15738
|
},
|
|
15712
|
-
|
|
15739
|
+
nothingSelectedText: nothingSelectedText ?? "All",
|
|
15740
|
+
...this.testId(tid)
|
|
15713
15741
|
}
|
|
15714
|
-
)
|
|
15715
|
-
|
|
15716
|
-
|
|
15717
|
-
}
|
|
15742
|
+
);
|
|
15743
|
+
}
|
|
15744
|
+
};
|
|
15718
15745
|
|
|
15719
|
-
// src/components/
|
|
15720
|
-
import {
|
|
15721
|
-
|
|
15722
|
-
|
|
15723
|
-
setNotice: () => {
|
|
15724
|
-
throw new Error("Missing ToastProvider");
|
|
15725
|
-
},
|
|
15726
|
-
clear: () => {
|
|
15727
|
-
},
|
|
15728
|
-
notice: void 0
|
|
15729
|
-
});
|
|
15730
|
-
function ToastProvider(props) {
|
|
15731
|
-
const [notice, setNotice] = useState35();
|
|
15732
|
-
const clear = useCallback19(() => setNotice(void 0), [setNotice]);
|
|
15733
|
-
const contextValue = useMemo32(() => ({ setNotice, notice, clear }), [notice, clear]);
|
|
15734
|
-
return /* @__PURE__ */ jsx127(ToastContext.Provider, { value: contextValue, children: props.children });
|
|
15746
|
+
// src/components/Filters/NumberRangeFilter.tsx
|
|
15747
|
+
import { Fragment as Fragment25, jsx as jsx126, jsxs as jsxs63 } from "@emotion/react/jsx-runtime";
|
|
15748
|
+
function numberRangeFilter(props) {
|
|
15749
|
+
return (key) => new NumberRangeFilter(key, props);
|
|
15735
15750
|
}
|
|
15736
|
-
|
|
15737
|
-
|
|
15738
|
-
}
|
|
15739
|
-
|
|
15740
|
-
|
|
15741
|
-
|
|
15742
|
-
|
|
15743
|
-
|
|
15744
|
-
|
|
15745
|
-
|
|
15746
|
-
|
|
15747
|
-
|
|
15748
|
-
|
|
15749
|
-
|
|
15750
|
-
|
|
15751
|
-
|
|
15752
|
-
|
|
15753
|
-
|
|
15754
|
-
|
|
15755
|
-
|
|
15756
|
-
|
|
15757
|
-
|
|
15758
|
-
|
|
15759
|
-
|
|
15760
|
-
|
|
15761
|
-
|
|
15762
|
-
|
|
15763
|
-
|
|
15764
|
-
|
|
15765
|
-
|
|
15766
|
-
|
|
15767
|
-
|
|
15768
|
-
|
|
15769
|
-
|
|
15770
|
-
|
|
15771
|
-
|
|
15772
|
-
|
|
15773
|
-
|
|
15774
|
-
|
|
15775
|
-
|
|
15776
|
-
|
|
15777
|
-
|
|
15778
|
-
|
|
15779
|
-
|
|
15780
|
-
|
|
15781
|
-
|
|
15782
|
-
|
|
15783
|
-
|
|
15784
|
-
|
|
15785
|
-
|
|
15786
|
-
|
|
15787
|
-
|
|
15788
|
-
|
|
15789
|
-
|
|
15790
|
-
}
|
|
15791
|
-
|
|
15792
|
-
|
|
15793
|
-
|
|
15794
|
-
|
|
15795
|
-
|
|
15796
|
-
|
|
15797
|
-
|
|
15798
|
-
|
|
15799
|
-
|
|
15800
|
-
|
|
15801
|
-
|
|
15751
|
+
var NumberRangeFilter = class extends BaseFilter {
|
|
15752
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15753
|
+
const { label, numberFieldType, numberFormatOptions } = this.props;
|
|
15754
|
+
const min = value?.min ?? void 0;
|
|
15755
|
+
const max = value?.max ?? void 0;
|
|
15756
|
+
return /* @__PURE__ */ jsxs63(Fragment25, { children: [
|
|
15757
|
+
vertical && /* @__PURE__ */ jsxs63("div", { ...tid, children: [
|
|
15758
|
+
/* @__PURE__ */ jsx126(Label, { label }),
|
|
15759
|
+
/* @__PURE__ */ jsx126("div", { css: Css.pb1.$, children: /* @__PURE__ */ jsx126(
|
|
15760
|
+
NumberField,
|
|
15761
|
+
{
|
|
15762
|
+
labelStyle: "inline",
|
|
15763
|
+
clearable: true,
|
|
15764
|
+
label: "Min",
|
|
15765
|
+
value: min,
|
|
15766
|
+
type: numberFieldType,
|
|
15767
|
+
numberFormatOptions,
|
|
15768
|
+
onChange: (minVal) => {
|
|
15769
|
+
const maxValue = max ? { max } : {};
|
|
15770
|
+
setValue(minVal || max ? { min: minVal, ...maxValue } : void 0);
|
|
15771
|
+
},
|
|
15772
|
+
...tid[`${defaultTestId(label)}_min_vertical`]
|
|
15773
|
+
}
|
|
15774
|
+
) }),
|
|
15775
|
+
/* @__PURE__ */ jsx126(
|
|
15776
|
+
NumberField,
|
|
15777
|
+
{
|
|
15778
|
+
labelStyle: "inline",
|
|
15779
|
+
clearable: true,
|
|
15780
|
+
label: "Max",
|
|
15781
|
+
value: max,
|
|
15782
|
+
type: numberFieldType,
|
|
15783
|
+
numberFormatOptions,
|
|
15784
|
+
onChange: (maxVal) => {
|
|
15785
|
+
const minValue = min ? { min } : {};
|
|
15786
|
+
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
15787
|
+
},
|
|
15788
|
+
...tid[`${defaultTestId(label)}_max_vertical`]
|
|
15789
|
+
}
|
|
15790
|
+
)
|
|
15791
|
+
] }),
|
|
15792
|
+
!vertical && /* @__PURE__ */ jsxs63(CompoundField, { ...tid, children: [
|
|
15793
|
+
/* @__PURE__ */ jsx126(
|
|
15794
|
+
NumberField,
|
|
15795
|
+
{
|
|
15796
|
+
compact: true,
|
|
15797
|
+
sizeToContent: !inModal,
|
|
15798
|
+
labelStyle: "inline",
|
|
15799
|
+
clearable: true,
|
|
15800
|
+
label: !inModal ? `${label} Min` : "Min",
|
|
15801
|
+
value: min,
|
|
15802
|
+
type: numberFieldType,
|
|
15803
|
+
numberFormatOptions,
|
|
15804
|
+
onChange: (minVal) => {
|
|
15805
|
+
const maxValue = max ? { max } : {};
|
|
15806
|
+
setValue(minVal || max ? { min: minVal, ...maxValue } : void 0);
|
|
15807
|
+
},
|
|
15808
|
+
...tid[`${defaultTestId(label)}_min`]
|
|
15809
|
+
}
|
|
15810
|
+
),
|
|
15811
|
+
/* @__PURE__ */ jsx126(
|
|
15812
|
+
NumberField,
|
|
15813
|
+
{
|
|
15814
|
+
compact: true,
|
|
15815
|
+
sizeToContent: !inModal,
|
|
15816
|
+
labelStyle: "inline",
|
|
15817
|
+
clearable: true,
|
|
15818
|
+
label: !inModal ? `${label} Max` : "Max",
|
|
15819
|
+
value: max,
|
|
15820
|
+
type: numberFieldType,
|
|
15821
|
+
numberFormatOptions,
|
|
15822
|
+
onChange: (maxVal) => {
|
|
15823
|
+
const minValue = min ? { min } : {};
|
|
15824
|
+
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
15825
|
+
},
|
|
15826
|
+
...tid[`${defaultTestId(label)}_max`]
|
|
15827
|
+
}
|
|
15828
|
+
)
|
|
15829
|
+
] })
|
|
15830
|
+
] });
|
|
15802
15831
|
}
|
|
15803
15832
|
};
|
|
15804
|
-
function useBeamContext() {
|
|
15805
|
-
return useContext15(BeamContext);
|
|
15806
|
-
}
|
|
15807
15833
|
|
|
15808
|
-
// src/components/
|
|
15809
|
-
import {
|
|
15810
|
-
|
|
15811
|
-
|
|
15812
|
-
import { jsx as jsx129 } from "@emotion/react/jsx-runtime";
|
|
15813
|
-
function ButtonDatePicker(props) {
|
|
15814
|
-
const { defaultOpen, disabled, trigger, onSelect, ...datePickerProps } = props;
|
|
15815
|
-
const state = useMenuTriggerState3({ isOpen: defaultOpen });
|
|
15816
|
-
const buttonRef = useRef44(null);
|
|
15817
|
-
const { menuTriggerProps, menuProps } = useMenuTrigger3({ isDisabled: !!disabled }, state, buttonRef);
|
|
15818
|
-
const tid = useTestIds(
|
|
15819
|
-
props,
|
|
15820
|
-
isTextButton(trigger) ? defaultTestId(labelOr(trigger, "buttonDatePicker")) : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
|
|
15821
|
-
);
|
|
15822
|
-
return /* @__PURE__ */ jsx129(OverlayTrigger, { ...props, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ jsx129(DatePickerOverlay, { overlayProps: menuProps, children: /* @__PURE__ */ jsx129(
|
|
15823
|
-
DatePicker,
|
|
15824
|
-
{
|
|
15825
|
-
...datePickerProps,
|
|
15826
|
-
onSelect: (d) => {
|
|
15827
|
-
onSelect(d);
|
|
15828
|
-
state.close();
|
|
15829
|
-
},
|
|
15830
|
-
...tid.datePicker
|
|
15831
|
-
}
|
|
15832
|
-
) }) });
|
|
15834
|
+
// src/components/Filters/SingleFilter.tsx
|
|
15835
|
+
import { jsx as jsx127 } from "@emotion/react/jsx-runtime";
|
|
15836
|
+
function singleFilter(props) {
|
|
15837
|
+
return (key) => new SingleFilter(key, props);
|
|
15833
15838
|
}
|
|
15839
|
+
var allOption = {};
|
|
15840
|
+
var SingleFilter = class extends BaseFilter {
|
|
15841
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15842
|
+
const {
|
|
15843
|
+
label,
|
|
15844
|
+
defaultValue,
|
|
15845
|
+
options: maybeOptions,
|
|
15846
|
+
getOptionLabel,
|
|
15847
|
+
getOptionValue,
|
|
15848
|
+
nothingSelectedText,
|
|
15849
|
+
...props
|
|
15850
|
+
} = this.props;
|
|
15851
|
+
const options = Array.isArray(maybeOptions) ? [allOption, ...maybeOptions] : { ...maybeOptions, current: maybeOptions.current };
|
|
15852
|
+
return /* @__PURE__ */ jsx127(
|
|
15853
|
+
SelectField,
|
|
15854
|
+
{
|
|
15855
|
+
...props,
|
|
15856
|
+
options,
|
|
15857
|
+
getOptionValue: (o) => o === allOption ? void 0 : getOptionValue(o),
|
|
15858
|
+
getOptionLabel: (o) => o === allOption ? nothingSelectedText ?? "All" : getOptionLabel(o),
|
|
15859
|
+
compact: !vertical,
|
|
15860
|
+
value,
|
|
15861
|
+
label: this.label,
|
|
15862
|
+
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
15863
|
+
sizeToContent: !inModal && !vertical,
|
|
15864
|
+
nothingSelectedText: nothingSelectedText ?? "All",
|
|
15865
|
+
onSelect: (value2) => setValue(value2 || void 0),
|
|
15866
|
+
...this.testId(tid)
|
|
15867
|
+
}
|
|
15868
|
+
);
|
|
15869
|
+
}
|
|
15870
|
+
};
|
|
15834
15871
|
|
|
15835
|
-
// src/components/
|
|
15836
|
-
import {
|
|
15837
|
-
|
|
15838
|
-
|
|
15839
|
-
function ButtonGroup(props) {
|
|
15840
|
-
const { buttons, disabled = false, size = "sm" } = props;
|
|
15841
|
-
const tid = useTestIds(props, "buttonGroup");
|
|
15842
|
-
return (
|
|
15843
|
-
// Adding `line-height: 0` prevent inheriting line-heights that might throw off sizing within the button group.
|
|
15844
|
-
/* @__PURE__ */ jsx130("div", { ...tid, css: Css.df.lh(0).add({ ...sizeStyles2[size] }).$, children: buttons.map(({ disabled: buttonDisabled, ...buttonProps }, i) => (
|
|
15845
|
-
// Disable the button if the ButtonGroup is disabled or if the current button is disabled.
|
|
15846
|
-
/* @__PURE__ */ jsx130(GroupButton, { ...buttonProps, disabled: disabled || buttonDisabled, size, ...tid }, i)
|
|
15847
|
-
)) })
|
|
15848
|
-
);
|
|
15872
|
+
// src/components/Filters/TreeFilter.tsx
|
|
15873
|
+
import { jsx as jsx128 } from "@emotion/react/jsx-runtime";
|
|
15874
|
+
function treeFilter(props) {
|
|
15875
|
+
return (key) => new TreeFilter(key, props);
|
|
15849
15876
|
}
|
|
15850
|
-
|
|
15851
|
-
|
|
15852
|
-
|
|
15853
|
-
|
|
15854
|
-
|
|
15855
|
-
const { isFocusVisible, focusProps } = useFocusRing12();
|
|
15856
|
-
const { hoverProps, isHovered } = useHover15(ariaProps);
|
|
15857
|
-
const tid = useTestIds(props);
|
|
15858
|
-
return /* @__PURE__ */ jsx130("span", { css: getButtonStyles2(), children: maybeTooltip({
|
|
15859
|
-
title: resolveTooltip(disabled, tooltip),
|
|
15860
|
-
placement: "top",
|
|
15861
|
-
children: /* @__PURE__ */ jsxs63(
|
|
15862
|
-
"button",
|
|
15877
|
+
var TreeFilter = class extends BaseFilter {
|
|
15878
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15879
|
+
const { defaultValue, nothingSelectedText, filterBy = "root", ...props } = this.props;
|
|
15880
|
+
return /* @__PURE__ */ jsx128(
|
|
15881
|
+
TreeSelectField,
|
|
15863
15882
|
{
|
|
15864
|
-
|
|
15865
|
-
|
|
15866
|
-
|
|
15867
|
-
|
|
15868
|
-
|
|
15869
|
-
|
|
15870
|
-
|
|
15871
|
-
|
|
15872
|
-
|
|
15873
|
-
...isPressed ? pressedStyles2 : isHovered ? hoverStyles3 : {},
|
|
15874
|
-
...icon ? iconStyles2[size] : {}
|
|
15883
|
+
...props,
|
|
15884
|
+
label: this.label,
|
|
15885
|
+
values: value,
|
|
15886
|
+
compact: !vertical,
|
|
15887
|
+
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
15888
|
+
sizeToContent: !inModal && !vertical,
|
|
15889
|
+
onSelect: (options) => {
|
|
15890
|
+
const values = options[filterBy].values;
|
|
15891
|
+
setValue(values.length === 0 ? void 0 : values);
|
|
15875
15892
|
},
|
|
15876
|
-
|
|
15877
|
-
|
|
15878
|
-
icon && /* @__PURE__ */ jsx130(Icon, { xss: Css.if(!!text).mrPx(4).$, icon, color: disabled ? void 0 : iconColor, inc: iconInc }),
|
|
15879
|
-
text
|
|
15880
|
-
]
|
|
15893
|
+
nothingSelectedText: nothingSelectedText ?? "All",
|
|
15894
|
+
...this.testId(tid)
|
|
15881
15895
|
}
|
|
15882
|
-
)
|
|
15883
|
-
}
|
|
15896
|
+
);
|
|
15897
|
+
}
|
|
15898
|
+
};
|
|
15899
|
+
|
|
15900
|
+
// src/components/Filters/BooleanFilter.tsx
|
|
15901
|
+
import { jsx as jsx129 } from "@emotion/react/jsx-runtime";
|
|
15902
|
+
function booleanFilter(props) {
|
|
15903
|
+
return (key) => new BooleanFilter(key, props);
|
|
15884
15904
|
}
|
|
15885
|
-
var
|
|
15886
|
-
|
|
15887
|
-
|
|
15888
|
-
|
|
15889
|
-
|
|
15890
|
-
|
|
15891
|
-
|
|
15892
|
-
|
|
15893
|
-
|
|
15894
|
-
|
|
15895
|
-
|
|
15896
|
-
|
|
15897
|
-
|
|
15898
|
-
|
|
15899
|
-
|
|
15900
|
-
|
|
15901
|
-
|
|
15902
|
-
|
|
15903
|
-
|
|
15905
|
+
var BooleanFilter = class extends BaseFilter {
|
|
15906
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15907
|
+
const { options = defaultBooleanOptions, label, defaultValue, ...props } = this.props;
|
|
15908
|
+
return /* @__PURE__ */ jsx129(
|
|
15909
|
+
SelectField,
|
|
15910
|
+
{
|
|
15911
|
+
...props,
|
|
15912
|
+
compact: !vertical,
|
|
15913
|
+
label: this.label,
|
|
15914
|
+
value: String(value),
|
|
15915
|
+
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
15916
|
+
sizeToContent: !inModal && !vertical,
|
|
15917
|
+
options,
|
|
15918
|
+
getOptionValue: (o) => String(o[0]),
|
|
15919
|
+
getOptionLabel: (o) => o[1],
|
|
15920
|
+
onSelect: (value2) => {
|
|
15921
|
+
const parsedValue = value2 === "undefined" ? void 0 : value2 === "true";
|
|
15922
|
+
setValue(parsedValue);
|
|
15923
|
+
},
|
|
15924
|
+
...this.testId(tid)
|
|
15925
|
+
}
|
|
15926
|
+
);
|
|
15927
|
+
}
|
|
15904
15928
|
};
|
|
15905
|
-
var
|
|
15906
|
-
|
|
15907
|
-
|
|
15908
|
-
|
|
15929
|
+
var defaultBooleanOptions = [
|
|
15930
|
+
[void 0, "Any"],
|
|
15931
|
+
[true, "Yes"],
|
|
15932
|
+
[false, "No"]
|
|
15933
|
+
];
|
|
15934
|
+
|
|
15935
|
+
// src/components/Filters/CheckboxFilter.tsx
|
|
15936
|
+
import { jsx as jsx130 } from "@emotion/react/jsx-runtime";
|
|
15937
|
+
function checkboxFilter(props) {
|
|
15938
|
+
return (key) => new CheckboxFilter(key, {
|
|
15939
|
+
// If the user has set the offValue, that should be the default b/c we're only a two-state
|
|
15940
|
+
defaultValue: props.offValue,
|
|
15941
|
+
...props
|
|
15942
|
+
});
|
|
15943
|
+
}
|
|
15944
|
+
var CheckboxFilter = class extends BaseFilter {
|
|
15945
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
15946
|
+
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
15947
|
+
return /* @__PURE__ */ jsx130(
|
|
15948
|
+
Checkbox,
|
|
15949
|
+
{
|
|
15950
|
+
...props,
|
|
15951
|
+
selected: value === void 0 ? false : value === onValue,
|
|
15952
|
+
label: this.label,
|
|
15953
|
+
onChange: (on) => {
|
|
15954
|
+
setValue(on ? onValue : offValue);
|
|
15955
|
+
},
|
|
15956
|
+
...this.testId(tid)
|
|
15957
|
+
}
|
|
15958
|
+
);
|
|
15959
|
+
}
|
|
15960
|
+
get hideLabelInModal() {
|
|
15961
|
+
return true;
|
|
15962
|
+
}
|
|
15909
15963
|
};
|
|
15910
15964
|
|
|
15911
|
-
// src/components/
|
|
15912
|
-
import {
|
|
15913
|
-
|
|
15914
|
-
|
|
15965
|
+
// src/components/Filters/FilterModal.tsx
|
|
15966
|
+
import { useState as useState34 } from "react";
|
|
15967
|
+
|
|
15968
|
+
// src/components/Modal/OpenModal.tsx
|
|
15969
|
+
import { useEffect as useEffect23 } from "react";
|
|
15915
15970
|
import { jsx as jsx131 } from "@emotion/react/jsx-runtime";
|
|
15916
|
-
function
|
|
15917
|
-
const {
|
|
15918
|
-
|
|
15919
|
-
|
|
15920
|
-
|
|
15921
|
-
|
|
15971
|
+
function OpenModal(props) {
|
|
15972
|
+
const { openModal } = useModal();
|
|
15973
|
+
const { size, children, keepOpen } = props;
|
|
15974
|
+
useEffect23(() => {
|
|
15975
|
+
if (!keepOpen) {
|
|
15976
|
+
openModal({ size, content: children });
|
|
15977
|
+
}
|
|
15978
|
+
}, [keepOpen, openModal, size, children]);
|
|
15979
|
+
if (keepOpen) {
|
|
15980
|
+
return /* @__PURE__ */ jsx131(Modal, { size, content: children });
|
|
15981
|
+
} else {
|
|
15982
|
+
return /* @__PURE__ */ jsx131("div", { children: "dummy content" });
|
|
15922
15983
|
}
|
|
15923
|
-
|
|
15924
|
-
|
|
15925
|
-
|
|
15926
|
-
|
|
15927
|
-
|
|
15928
|
-
|
|
15929
|
-
);
|
|
15930
|
-
|
|
15931
|
-
|
|
15932
|
-
|
|
15933
|
-
|
|
15934
|
-
|
|
15935
|
-
|
|
15936
|
-
|
|
15937
|
-
|
|
15938
|
-
|
|
15939
|
-
|
|
15940
|
-
|
|
15984
|
+
}
|
|
15985
|
+
|
|
15986
|
+
// src/components/Filters/FilterModal.tsx
|
|
15987
|
+
import { Fragment as Fragment26, jsx as jsx132, jsxs as jsxs64 } from "@emotion/react/jsx-runtime";
|
|
15988
|
+
function FilterModal(props) {
|
|
15989
|
+
const { filter, filters, onApply } = props;
|
|
15990
|
+
const testId = useTestIds(props, filterTestIdPrefix);
|
|
15991
|
+
const { closeModal } = useModal();
|
|
15992
|
+
const [modalFilter, setModalFilter] = useState34(filter);
|
|
15993
|
+
return /* @__PURE__ */ jsxs64(Fragment26, { children: [
|
|
15994
|
+
/* @__PURE__ */ jsx132(ModalHeader, { children: "More Filters" }),
|
|
15995
|
+
/* @__PURE__ */ jsx132(ModalBody, { children: /* @__PURE__ */ jsx132("div", { css: Css.df.fdc.$, children: safeEntries(filters).map(([key, f]) => /* @__PURE__ */ jsx132(ModalFilterItem, { label: f.hideLabelInModal ? void 0 : f.label, children: f.render(
|
|
15996
|
+
modalFilter[key],
|
|
15997
|
+
(value) => setModalFilter(updateFilter(modalFilter, key, value)),
|
|
15998
|
+
testId,
|
|
15999
|
+
true,
|
|
16000
|
+
false
|
|
16001
|
+
) }, key)) }) }),
|
|
16002
|
+
/* @__PURE__ */ jsxs64(ModalFooter, { xss: Css.jcsb.$, children: [
|
|
16003
|
+
/* @__PURE__ */ jsx132(
|
|
16004
|
+
Button,
|
|
15941
16005
|
{
|
|
15942
|
-
|
|
15943
|
-
|
|
15944
|
-
|
|
15945
|
-
|
|
15946
|
-
|
|
15947
|
-
|
|
15948
|
-
|
|
15949
|
-
|
|
15950
|
-
...tid
|
|
16006
|
+
label: "Clear",
|
|
16007
|
+
variant: "tertiary",
|
|
16008
|
+
disabled: safeKeys(filters).filter((fk) => modalFilter[fk] !== void 0).length === 0,
|
|
16009
|
+
onClick: () => (
|
|
16010
|
+
// Only remove the filters keys that exist in the modal.
|
|
16011
|
+
setModalFilter(safeKeys(filters).reduce((acc, fk) => omitKey(fk, acc), modalFilter))
|
|
16012
|
+
),
|
|
16013
|
+
...testId.modalClear
|
|
15951
16014
|
}
|
|
15952
|
-
)
|
|
15953
|
-
|
|
15954
|
-
|
|
16015
|
+
),
|
|
16016
|
+
/* @__PURE__ */ jsxs64("div", { css: Css.df.gap1.$, children: [
|
|
16017
|
+
/* @__PURE__ */ jsx132(Button, { label: "Cancel", variant: "tertiary", onClick: closeModal, ...testId.modalClose }),
|
|
16018
|
+
/* @__PURE__ */ jsx132(
|
|
16019
|
+
Button,
|
|
16020
|
+
{
|
|
16021
|
+
label: "Apply",
|
|
16022
|
+
onClick: () => {
|
|
16023
|
+
onApply(modalFilter);
|
|
16024
|
+
closeModal();
|
|
16025
|
+
},
|
|
16026
|
+
...testId.modalApply
|
|
16027
|
+
}
|
|
16028
|
+
)
|
|
16029
|
+
] })
|
|
16030
|
+
] })
|
|
16031
|
+
] });
|
|
15955
16032
|
}
|
|
15956
|
-
function
|
|
15957
|
-
return
|
|
16033
|
+
function ModalFilterItem({ label, children }) {
|
|
16034
|
+
return /* @__PURE__ */ jsxs64("div", { css: Css.mb4.if(!label).bt.bcGray200.$, children: [
|
|
16035
|
+
label && /* @__PURE__ */ jsx132("h2", { css: Css.baseMd.mb2.$, children: label }),
|
|
16036
|
+
/* @__PURE__ */ jsx132("div", { css: Css.if(!label).pt3.$, children })
|
|
16037
|
+
] });
|
|
15958
16038
|
}
|
|
15959
16039
|
|
|
15960
|
-
// src/components/
|
|
15961
|
-
import {
|
|
15962
|
-
|
|
15963
|
-
|
|
15964
|
-
//
|
|
15965
|
-
|
|
15966
|
-
|
|
15967
|
-
import { jsx as jsx132, jsxs as jsxs64 } from "@emotion/react/jsx-runtime";
|
|
15968
|
-
function Tag(props) {
|
|
15969
|
-
const { text, type, xss, preventTooltip = false, ...otherProps } = props;
|
|
15970
|
-
const typeStyles2 = getStyles(type);
|
|
15971
|
-
const tid = useTestIds(otherProps);
|
|
15972
|
-
const [showTooltip, setShowTooltip] = useState36(false);
|
|
15973
|
-
const ref = useRef47(null);
|
|
15974
|
-
useResizeObserver4({
|
|
15975
|
-
ref,
|
|
15976
|
-
onResize: () => {
|
|
15977
|
-
if (ref.current) {
|
|
15978
|
-
setShowTooltip(ref.current.offsetHeight < ref.current.scrollHeight);
|
|
15979
|
-
}
|
|
15980
|
-
}
|
|
15981
|
-
});
|
|
15982
|
-
return maybeTooltip({
|
|
15983
|
-
title: !preventTooltip && showTooltip ? text : void 0,
|
|
15984
|
-
children: /* @__PURE__ */ jsxs64("span", { ...tid, css: { ...Css.dif.tinySb.ttu.aic.gapPx(4).pxPx(6).pyPx(2).gray900.br4.$, ...typeStyles2, ...xss }, children: [
|
|
15985
|
-
otherProps.icon && /* @__PURE__ */ jsx132("span", { css: Css.fs0.$, children: /* @__PURE__ */ jsx132(Icon, { icon: otherProps.icon, inc: 1.5 }) }),
|
|
15986
|
-
/* @__PURE__ */ jsx132("span", { ref, css: Css.lineClamp1.wbba.$, children: text })
|
|
15987
|
-
] })
|
|
16040
|
+
// src/components/Filters/ToggleFilter.tsx
|
|
16041
|
+
import { jsx as jsx133 } from "@emotion/react/jsx-runtime";
|
|
16042
|
+
function toggleFilter(props) {
|
|
16043
|
+
return (key) => new ToggleFilter(key, {
|
|
16044
|
+
// If the user has set the offValue, that should be the default b/c we're only a two-state
|
|
16045
|
+
defaultValue: props.offValue,
|
|
16046
|
+
...props
|
|
15988
16047
|
});
|
|
15989
16048
|
}
|
|
15990
|
-
|
|
15991
|
-
|
|
15992
|
-
|
|
15993
|
-
|
|
15994
|
-
|
|
15995
|
-
return Css.bgYellow200.$;
|
|
15996
|
-
case "warning":
|
|
15997
|
-
return Css.bgRed200.$;
|
|
15998
|
-
case "success":
|
|
15999
|
-
return Css.bgGreen200.$;
|
|
16000
|
-
default:
|
|
16001
|
-
return Css.bgGray200.$;
|
|
16002
|
-
}
|
|
16003
|
-
}
|
|
16004
|
-
|
|
16005
|
-
// src/components/Card.tsx
|
|
16006
|
-
import { jsx as jsx133, jsxs as jsxs65 } from "@emotion/react/jsx-runtime";
|
|
16007
|
-
function Card(props) {
|
|
16008
|
-
const {
|
|
16009
|
-
title,
|
|
16010
|
-
subtitle,
|
|
16011
|
-
detailContent,
|
|
16012
|
-
imgSrc,
|
|
16013
|
-
imageFit = "contain",
|
|
16014
|
-
type = "card",
|
|
16015
|
-
bordered = false,
|
|
16016
|
-
disabled: isDisabled = false,
|
|
16017
|
-
buttonMenuItems,
|
|
16018
|
-
tag
|
|
16019
|
-
} = props;
|
|
16020
|
-
const tid = useTestIds(props, "card");
|
|
16021
|
-
const { hoverProps, isHovered } = useHover16({ isDisabled });
|
|
16022
|
-
const isList = type === "list";
|
|
16023
|
-
const imgHeight = isList ? 96 : bordered ? 224 : 256;
|
|
16024
|
-
const styles = useMemo34(
|
|
16025
|
-
() => ({
|
|
16026
|
-
...baseStyles4(type),
|
|
16027
|
-
...isList && listStyles,
|
|
16028
|
-
...bordered && borderedStyles,
|
|
16029
|
-
...isHovered && cardHoverStyles,
|
|
16030
|
-
...isDisabled && disabledStyles3
|
|
16031
|
-
}),
|
|
16032
|
-
[isDisabled, isHovered, bordered, type, isList]
|
|
16033
|
-
);
|
|
16034
|
-
return /* @__PURE__ */ jsxs65("div", { css: styles, ...hoverProps, ...tid, children: [
|
|
16035
|
-
/* @__PURE__ */ jsx133(
|
|
16036
|
-
"div",
|
|
16049
|
+
var ToggleFilter = class extends BaseFilter {
|
|
16050
|
+
render(value, setValue, tid, inModal, vertical) {
|
|
16051
|
+
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
16052
|
+
return /* @__PURE__ */ jsx133(
|
|
16053
|
+
Switch,
|
|
16037
16054
|
{
|
|
16038
|
-
|
|
16039
|
-
|
|
16040
|
-
|
|
16055
|
+
...props,
|
|
16056
|
+
selected: value === void 0 ? false : value === onValue,
|
|
16057
|
+
label: this.label,
|
|
16058
|
+
labelStyle: inModal || vertical ? "filter" : "inline",
|
|
16059
|
+
onChange: (on) => {
|
|
16060
|
+
setValue(on ? onValue : offValue);
|
|
16041
16061
|
},
|
|
16042
|
-
|
|
16043
|
-
}
|
|
16044
|
-
),
|
|
16045
|
-
isHovered && buttonMenuItems && /* @__PURE__ */ jsx133("div", { css: Css.absolute.right1.top1.if(bordered && !isList).right3.top3.$, children: /* @__PURE__ */ jsx133(
|
|
16046
|
-
ButtonMenu,
|
|
16047
|
-
{
|
|
16048
|
-
trigger: { icon: "verticalDots", color: isList ? "rgba(100, 100, 100, 1)" /* Gray700 */ : "rgba(255,255,255,1)" /* White */ },
|
|
16049
|
-
items: buttonMenuItems
|
|
16062
|
+
...this.testId(tid)
|
|
16050
16063
|
}
|
|
16051
|
-
)
|
|
16052
|
-
|
|
16053
|
-
|
|
16054
|
-
|
|
16055
|
-
|
|
16056
|
-
|
|
16057
|
-
|
|
16058
|
-
|
|
16059
|
-
|
|
16060
|
-
|
|
16064
|
+
);
|
|
16065
|
+
}
|
|
16066
|
+
get hideLabelInModal() {
|
|
16067
|
+
return true;
|
|
16068
|
+
}
|
|
16069
|
+
};
|
|
16070
|
+
|
|
16071
|
+
// src/components/Filters/utils.tsx
|
|
16072
|
+
function updateFilter(currentFilter, key, value) {
|
|
16073
|
+
if (value === void 0) {
|
|
16074
|
+
return omitKey(key, currentFilter);
|
|
16075
|
+
} else {
|
|
16076
|
+
return { ...currentFilter, [key]: value };
|
|
16077
|
+
}
|
|
16061
16078
|
}
|
|
16062
|
-
var
|
|
16063
|
-
var baseStyles4 = (type) => Css.wPx(width[type]).bgWhite.df.fdc.gap1.relative.$;
|
|
16064
|
-
var listStyles = Css.df.fdr.gap2.$;
|
|
16065
|
-
var borderedStyles = Css.ba.br8.bcGray300.p2.$;
|
|
16066
|
-
var disabledStyles3 = Css.add("opacity", 0.5).add("transition", "opacity 0.3s ease").$;
|
|
16067
|
-
var cardHoverStyles = Css.bcGray400.cursorPointer.$;
|
|
16068
|
-
var imageHoverStyles = Css.bgWhite.add("filter", "brightness(0.3)").add("transition", "filter 0.3s ease").$;
|
|
16079
|
+
var filterTestIdPrefix = "filter";
|
|
16069
16080
|
|
|
16070
|
-
// src/components/
|
|
16071
|
-
import { jsx as jsx134 } from "@emotion/react/jsx-runtime";
|
|
16072
|
-
function
|
|
16073
|
-
|
|
16081
|
+
// src/components/Filters/Filters.tsx
|
|
16082
|
+
import { jsx as jsx134, jsxs as jsxs65 } from "@emotion/react/jsx-runtime";
|
|
16083
|
+
function Filters(props) {
|
|
16084
|
+
const { filter, onChange, filterDefs, groupBy, vertical = false, numberOfInlineFilters = groupBy ? 3 : 4 } = props;
|
|
16085
|
+
const testId = useTestIds(props, filterTestIdPrefix);
|
|
16086
|
+
const { openModal } = useModal();
|
|
16087
|
+
const [pageFilters, modalFilters] = useMemo31(() => {
|
|
16088
|
+
const impls = safeEntries(filterDefs).map(([key, fn]) => [key, fn(key)]);
|
|
16089
|
+
if (!vertical && impls.length > numberOfInlineFilters) {
|
|
16090
|
+
return [
|
|
16091
|
+
Object.fromEntries(impls.slice(0, numberOfInlineFilters - 1)),
|
|
16092
|
+
Object.fromEntries(impls.slice(numberOfInlineFilters - 1))
|
|
16093
|
+
];
|
|
16094
|
+
}
|
|
16095
|
+
return [Object.fromEntries(impls), {}];
|
|
16096
|
+
}, [numberOfInlineFilters, vertical, filterDefs]);
|
|
16097
|
+
const numModalFilters = safeKeys(modalFilters).filter((fk) => filter[fk] !== void 0).length;
|
|
16098
|
+
const maybeGroupByField = groupBy ? /* @__PURE__ */ jsx134("div", { children: /* @__PURE__ */ jsx134(
|
|
16099
|
+
SelectField,
|
|
16100
|
+
{
|
|
16101
|
+
label: "Group by",
|
|
16102
|
+
compact: !vertical,
|
|
16103
|
+
labelStyle: !vertical ? "inline" : "above",
|
|
16104
|
+
sizeToContent: !vertical,
|
|
16105
|
+
options: groupBy.options,
|
|
16106
|
+
getOptionValue: (o) => o.id,
|
|
16107
|
+
getOptionLabel: (o) => o.name,
|
|
16108
|
+
value: groupBy.value,
|
|
16109
|
+
onSelect: (g) => g && groupBy.setValue(g)
|
|
16110
|
+
}
|
|
16111
|
+
) }) : null;
|
|
16112
|
+
return /* @__PURE__ */ jsxs65(
|
|
16074
16113
|
"div",
|
|
16075
16114
|
{
|
|
16076
16115
|
css: {
|
|
16077
|
-
...Css.
|
|
16078
|
-
"& > p": Css.my2.$
|
|
16116
|
+
...vertical ? Css.df.fdc.gap2.$ : Css.df.aic.gap1.$
|
|
16079
16117
|
},
|
|
16080
|
-
|
|
16118
|
+
...testId,
|
|
16119
|
+
children: [
|
|
16120
|
+
maybeGroupByField,
|
|
16121
|
+
safeEntries(pageFilters).map(([key, f]) => /* @__PURE__ */ jsx134("div", { children: f.render(filter[key], (value) => onChange(updateFilter(filter, key, value)), testId, false, vertical) }, key)),
|
|
16122
|
+
Object.keys(modalFilters).length > 0 && /* @__PURE__ */ jsx134(
|
|
16123
|
+
Button,
|
|
16124
|
+
{
|
|
16125
|
+
label: "More Filters",
|
|
16126
|
+
endAdornment: numModalFilters > 0 && /* @__PURE__ */ jsx134("span", { css: Css.wPx(16).hPx(16).fs0.br100.bgBlue700.white.tinySb.df.aic.jcc.$, children: numModalFilters }),
|
|
16127
|
+
variant: "secondary",
|
|
16128
|
+
onClick: () => openModal({
|
|
16129
|
+
// Spreading `props` to pass along `data-testid`
|
|
16130
|
+
content: /* @__PURE__ */ jsx134(FilterModal, { ...props, filter, onApply: onChange, filters: modalFilters })
|
|
16131
|
+
}),
|
|
16132
|
+
...testId.moreFiltersBtn
|
|
16133
|
+
}
|
|
16134
|
+
),
|
|
16135
|
+
Object.keys(filter).length > 0 && /* @__PURE__ */ jsx134("div", { children: /* @__PURE__ */ jsx134(Button, { label: "Clear", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn }) })
|
|
16136
|
+
]
|
|
16081
16137
|
}
|
|
16082
16138
|
);
|
|
16083
16139
|
}
|
|
16140
|
+
var _Filters = memo(Filters);
|
|
16084
16141
|
|
|
16085
|
-
// src/components/
|
|
16086
|
-
import
|
|
16087
|
-
|
|
16142
|
+
// src/components/Table/TableActions.tsx
|
|
16143
|
+
import { jsx as jsx135 } from "@emotion/react/jsx-runtime";
|
|
16144
|
+
function TableActions(props) {
|
|
16145
|
+
const { xss, children, onlyLeft, onlyRight } = props;
|
|
16146
|
+
const alignmentStyles = onlyLeft ? Css.jcfs.$ : onlyRight ? Css.jcfe.$ : Css.jcsb.$;
|
|
16147
|
+
return /* @__PURE__ */ jsx135("div", { css: { ...Css.df.aic.pb2.gap1.$, ...xss, ...alignmentStyles }, children });
|
|
16148
|
+
}
|
|
16088
16149
|
|
|
16089
|
-
// src/components/
|
|
16090
|
-
import {
|
|
16091
|
-
|
|
16092
|
-
|
|
16093
|
-
|
|
16150
|
+
// src/components/Layout/GridTableLayout/GridTableLayout.tsx
|
|
16151
|
+
import { useDebounce as useDebounce2 } from "use-debounce";
|
|
16152
|
+
import { StringParam as StringParam2, useQueryParams as useQueryParams3 } from "use-query-params";
|
|
16153
|
+
|
|
16154
|
+
// src/components/Layout/ScrollableContent.tsx
|
|
16155
|
+
import { useEffect as useEffect24 } from "react";
|
|
16156
|
+
import { createPortal as createPortal4 } from "react-dom";
|
|
16157
|
+
import { Fragment as Fragment27, jsx as jsx136 } from "@emotion/react/jsx-runtime";
|
|
16158
|
+
function ScrollableContent(props) {
|
|
16159
|
+
const { children, virtualized = false, omitBottomPadding, bgColor } = props;
|
|
16160
|
+
const { scrollableEl, setPortalTick, pl, pr } = useScrollableParent();
|
|
16161
|
+
useEffect24(() => {
|
|
16162
|
+
setPortalTick((prev) => prev + 1);
|
|
16163
|
+
return () => setPortalTick((prev) => prev + 1);
|
|
16164
|
+
}, [setPortalTick]);
|
|
16165
|
+
if (!scrollableEl) {
|
|
16166
|
+
return /* @__PURE__ */ jsx136(Fragment27, { children });
|
|
16094
16167
|
}
|
|
16095
|
-
|
|
16096
|
-
|
|
16097
|
-
|
|
16168
|
+
return createPortal4(
|
|
16169
|
+
/* @__PURE__ */ jsx136(
|
|
16170
|
+
"div",
|
|
16171
|
+
{
|
|
16172
|
+
css: {
|
|
16173
|
+
...Css.h100.pr(pr).pl(pl).if(virtualized).pr0.$,
|
|
16174
|
+
...bgColor && Css.bgColor(bgColor).$,
|
|
16175
|
+
...!omitBottomPadding && !virtualized && scrollContainerBottomPadding
|
|
16176
|
+
},
|
|
16177
|
+
children
|
|
16178
|
+
}
|
|
16179
|
+
),
|
|
16180
|
+
scrollableEl
|
|
16181
|
+
);
|
|
16098
16182
|
}
|
|
16099
16183
|
|
|
16100
|
-
// src/components/
|
|
16101
|
-
import {
|
|
16102
|
-
|
|
16103
|
-
|
|
16104
|
-
|
|
16105
|
-
|
|
16106
|
-
|
|
16107
|
-
|
|
16108
|
-
|
|
16109
|
-
|
|
16110
|
-
|
|
16111
|
-
|
|
16112
|
-
|
|
16113
|
-
|
|
16114
|
-
const
|
|
16115
|
-
|
|
16116
|
-
|
|
16117
|
-
|
|
16118
|
-
|
|
16119
|
-
|
|
16120
|
-
|
|
16121
|
-
|
|
16122
|
-
|
|
16123
|
-
|
|
16124
|
-
|
|
16125
|
-
|
|
16126
|
-
|
|
16127
|
-
|
|
16128
|
-
|
|
16129
|
-
|
|
16130
|
-
|
|
16131
|
-
|
|
16132
|
-
|
|
16133
|
-
|
|
16134
|
-
|
|
16135
|
-
|
|
16136
|
-
|
|
16137
|
-
|
|
16138
|
-
|
|
16139
|
-
|
|
16140
|
-
|
|
16141
|
-
|
|
16142
|
-
|
|
16143
|
-
|
|
16144
|
-
|
|
16145
|
-
|
|
16146
|
-
|
|
16147
|
-
|
|
16148
|
-
|
|
16184
|
+
// src/components/Layout/GridTableLayout/QueryTable.tsx
|
|
16185
|
+
import { useMemo as useMemo32 } from "react";
|
|
16186
|
+
|
|
16187
|
+
// src/components/LoadingSkeleton.tsx
|
|
16188
|
+
import { jsx as jsx137 } from "@emotion/react/jsx-runtime";
|
|
16189
|
+
function LoadingSkeleton({
|
|
16190
|
+
rows = 1,
|
|
16191
|
+
columns = 1,
|
|
16192
|
+
size = "md",
|
|
16193
|
+
randomizeWidths = false,
|
|
16194
|
+
contrast = false
|
|
16195
|
+
}) {
|
|
16196
|
+
const cellArray = [...Array(columns)];
|
|
16197
|
+
const rowArray = [...Array(rows)];
|
|
16198
|
+
const rowHeight = sizeToPixels2[size];
|
|
16199
|
+
const rowCells = (rowNumber) => {
|
|
16200
|
+
const flexGrowForCell = randomizeWidths ? getRandomizedFlexBasisByRowIndex(rowNumber) : 1;
|
|
16201
|
+
return cellArray.map((_, i) => /* @__PURE__ */ jsx137(
|
|
16202
|
+
"div",
|
|
16203
|
+
{
|
|
16204
|
+
css: Css.br4.add("animation", "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite").add("flexGrow", flexGrowForCell).bgGray300.if(contrast).bgGray700.$
|
|
16205
|
+
},
|
|
16206
|
+
`row-${rowNumber}-cell-${i}`
|
|
16207
|
+
));
|
|
16208
|
+
};
|
|
16209
|
+
return /* @__PURE__ */ jsx137("div", { "aria-label": "Loading", children: rowArray.map((_, i) => /* @__PURE__ */ jsx137("div", { css: Css.df.gap1.mb1.hPx(rowHeight).$, children: rowCells(i) }, `row-${i}`)) });
|
|
16210
|
+
}
|
|
16211
|
+
function getRandomizedFlexBasisByRowIndex(rowIndex) {
|
|
16212
|
+
const randomizedFlexBasisValues = [0.65, 0.8, 0.75, 0.9, 0.8, 0.85, 0.8, 0.95];
|
|
16213
|
+
const valueIndex = rowIndex % randomizedFlexBasisValues.length;
|
|
16214
|
+
return randomizedFlexBasisValues[valueIndex];
|
|
16215
|
+
}
|
|
16216
|
+
var sizeToPixels2 = {
|
|
16217
|
+
sm: 16,
|
|
16218
|
+
md: 24,
|
|
16219
|
+
lg: 32
|
|
16220
|
+
};
|
|
16221
|
+
|
|
16222
|
+
// src/components/Layout/GridTableLayout/QueryTable.tsx
|
|
16223
|
+
import { Fragment as Fragment28, jsx as jsx138, jsxs as jsxs66 } from "@emotion/react/jsx-runtime";
|
|
16224
|
+
function QueryTable(props) {
|
|
16225
|
+
const { emptyFallback, query, createRows, getPageInfo, columns, keepHeaderWhenLoading, ...others } = props;
|
|
16226
|
+
const data = query.loading || query.error ? void 0 : query.data;
|
|
16227
|
+
const rows = useMemo32(() => createRows(data), [createRows, data]);
|
|
16228
|
+
const hasNextPage = data && getPageInfo && getPageInfo(data).hasNextPage;
|
|
16229
|
+
const infoMessage = hasNextPage ? "Too many rows" : void 0;
|
|
16230
|
+
const fallbackMessage = query.loading ? "Loading\u2026" : query.error ? `Error: ${query.error.message}` : emptyFallback;
|
|
16231
|
+
const headers = rows.filter((row) => row.kind === "header");
|
|
16232
|
+
return query.loading ? /* @__PURE__ */ jsx138("div", { children: keepHeaderWhenLoading ? /* @__PURE__ */ jsx138(GridTable, { ...{ columns, ...others }, rows: headers, fallbackMessage }) : /* @__PURE__ */ jsx138(LoadingTable, { columns: columns.length }) }) : /* @__PURE__ */ jsx138(GridTable, { ...{ rows, columns, fallbackMessage, infoMessage, ...others } });
|
|
16233
|
+
}
|
|
16234
|
+
function LoadingTable(props) {
|
|
16235
|
+
const { columns } = props;
|
|
16236
|
+
return /* @__PURE__ */ jsxs66(Fragment28, { children: [
|
|
16237
|
+
/* @__PURE__ */ jsx138(LoadingSkeleton, { rows: 1, columns: 1 }),
|
|
16238
|
+
/* @__PURE__ */ jsx138(LoadingSkeleton, { rows: 5, columns: columns ?? 5 })
|
|
16239
|
+
] });
|
|
16240
|
+
}
|
|
16241
|
+
|
|
16242
|
+
// src/components/Layout/GridTableLayout/GridTableLayout.tsx
|
|
16243
|
+
import { Fragment as Fragment29, jsx as jsx139, jsxs as jsxs67 } from "@emotion/react/jsx-runtime";
|
|
16244
|
+
function isGridTableProps(props) {
|
|
16245
|
+
return "rows" in props;
|
|
16246
|
+
}
|
|
16247
|
+
function GridTableLayoutComponent(props) {
|
|
16248
|
+
const { pageTitle, breadcrumb, tableProps, layoutState, primaryAction, secondaryAction, tertiaryAction } = props;
|
|
16249
|
+
const clientSearch = layoutState?.search === "client" ? layoutState.searchString : void 0;
|
|
16250
|
+
const showTableActions = layoutState?.filterDefs || layoutState?.search;
|
|
16251
|
+
const isVirtualized = tableProps.as === "virtual";
|
|
16252
|
+
const breakpoints = useBreakpoint();
|
|
16253
|
+
return /* @__PURE__ */ jsxs67(Fragment29, { children: [
|
|
16254
|
+
/* @__PURE__ */ jsx139(
|
|
16255
|
+
Header2,
|
|
16256
|
+
{
|
|
16257
|
+
pageTitle,
|
|
16258
|
+
breadcrumb,
|
|
16259
|
+
primaryAction,
|
|
16260
|
+
secondaryAction,
|
|
16261
|
+
tertiaryAction
|
|
16149
16262
|
}
|
|
16150
|
-
|
|
16151
|
-
|
|
16152
|
-
|
|
16153
|
-
|
|
16154
|
-
|
|
16155
|
-
|
|
16156
|
-
|
|
16157
|
-
|
|
16158
|
-
|
|
16159
|
-
|
|
16160
|
-
|
|
16161
|
-
const x = clientX - transformFrom.current.x - left;
|
|
16162
|
-
const y = clientY - transformFrom.current.y - top;
|
|
16163
|
-
dragEl.current.style.transform = `translate(${x}px, ${y}px)`;
|
|
16164
|
-
const maybeTarget = "touches" in e ? document.elementFromPoint(clientX, clientY) : e.target;
|
|
16165
|
-
const target = maybeTarget instanceof HTMLElement ? maybeTarget?.closest(`[${gridItemIdKey}]`) : void 0;
|
|
16166
|
-
if (target instanceof HTMLElement && target !== cloneEl.current && target !== dragEl.current) {
|
|
16167
|
-
const targetPos = target.getBoundingClientRect();
|
|
16168
|
-
const isHalfwayPassedTarget = (clientY - targetPos.top) / (targetPos.bottom - targetPos.top) > 0.5 || (clientX - targetPos.left) / (targetPos.right - targetPos.left) > 0.5;
|
|
16169
|
-
const shouldInsert = isHalfwayPassedTarget && target.nextSibling !== cloneEl.current || !isHalfwayPassedTarget && target.previousSibling !== cloneEl.current;
|
|
16170
|
-
if (shouldInsert) {
|
|
16171
|
-
gridEl.current.insertBefore(cloneEl.current, isHalfwayPassedTarget ? target.nextSibling : target);
|
|
16263
|
+
),
|
|
16264
|
+
showTableActions && /* @__PURE__ */ jsxs67(TableActions, { onlyRight: !layoutState?.search, children: [
|
|
16265
|
+
layoutState?.search && /* @__PURE__ */ jsx139(SearchBox, { onSearch: layoutState.setSearchString }),
|
|
16266
|
+
layoutState?.filterDefs && /* @__PURE__ */ jsx139(
|
|
16267
|
+
_Filters,
|
|
16268
|
+
{
|
|
16269
|
+
filterDefs: layoutState.filterDefs,
|
|
16270
|
+
filter: layoutState.filter,
|
|
16271
|
+
onChange: layoutState.setFilter,
|
|
16272
|
+
groupBy: layoutState.groupBy,
|
|
16273
|
+
numberOfInlineFilters: breakpoints.mdAndDown ? 2 : void 0
|
|
16172
16274
|
}
|
|
16275
|
+
)
|
|
16276
|
+
] }),
|
|
16277
|
+
/* @__PURE__ */ jsx139(ScrollableContent, { virtualized: isVirtualized, children: isGridTableProps(tableProps) ? /* @__PURE__ */ jsx139(GridTable, { ...tableProps, filter: clientSearch, style: { allWhite: true }, stickyHeader: true }) : /* @__PURE__ */ jsx139(
|
|
16278
|
+
QueryTable,
|
|
16279
|
+
{
|
|
16280
|
+
...tableProps,
|
|
16281
|
+
filter: clientSearch,
|
|
16282
|
+
style: { allWhite: true },
|
|
16283
|
+
stickyHeader: true
|
|
16173
16284
|
}
|
|
16285
|
+
) })
|
|
16286
|
+
] });
|
|
16287
|
+
}
|
|
16288
|
+
var GridTableLayout = React14.memo(GridTableLayoutComponent);
|
|
16289
|
+
function useGridTableLayoutState({
|
|
16290
|
+
persistedFilter,
|
|
16291
|
+
search,
|
|
16292
|
+
groupBy: maybeGroupBy
|
|
16293
|
+
}) {
|
|
16294
|
+
const filterFallback = { filterDefs: {}, storageKey: "unset-filter" };
|
|
16295
|
+
const { filter, setFilter } = usePersistedFilter(persistedFilter ?? filterFallback);
|
|
16296
|
+
const groupBy = useGroupBy(maybeGroupBy ?? { none: "none" });
|
|
16297
|
+
const [searchString, setSearchString] = useState35("");
|
|
16298
|
+
return {
|
|
16299
|
+
filter,
|
|
16300
|
+
setFilter,
|
|
16301
|
+
filterDefs: persistedFilter?.filterDefs,
|
|
16302
|
+
searchString,
|
|
16303
|
+
setSearchString,
|
|
16304
|
+
search,
|
|
16305
|
+
groupBy: maybeGroupBy ? groupBy : void 0
|
|
16306
|
+
};
|
|
16307
|
+
}
|
|
16308
|
+
function Header2(props) {
|
|
16309
|
+
const { pageTitle, breadcrumb, primaryAction, secondaryAction, tertiaryAction } = props;
|
|
16310
|
+
const tids = useTestIds(props);
|
|
16311
|
+
return /* @__PURE__ */ jsx139(FullBleed, { children: /* @__PURE__ */ jsxs67("header", { css: { ...Css.p3.mb3.mhPx(50).bgWhite.df.jcsb.aic.$ }, ...tids.header, children: [
|
|
16312
|
+
/* @__PURE__ */ jsxs67("div", { children: [
|
|
16313
|
+
breadcrumb && /* @__PURE__ */ jsx139(PageHeaderBreadcrumbs, { breadcrumb }),
|
|
16314
|
+
/* @__PURE__ */ jsx139("h1", { css: Css.xl2Sb.mt1.$, ...tids.pageTitle, children: pageTitle })
|
|
16315
|
+
] }),
|
|
16316
|
+
/* @__PURE__ */ jsxs67("div", { css: Css.df.fwr.jcfe.gap1.$, children: [
|
|
16317
|
+
tertiaryAction && /* @__PURE__ */ jsx139(Button, { ...tertiaryAction, variant: "tertiary" }),
|
|
16318
|
+
secondaryAction && /* @__PURE__ */ jsx139(Button, { ...secondaryAction, variant: "secondary" }),
|
|
16319
|
+
primaryAction && /* @__PURE__ */ jsx139(Button, { ...primaryAction })
|
|
16320
|
+
] })
|
|
16321
|
+
] }) });
|
|
16322
|
+
}
|
|
16323
|
+
function SearchBox({ onSearch }) {
|
|
16324
|
+
const [{ search: initialValue }, setQueryParams] = useQueryParams3({ search: StringParam2 });
|
|
16325
|
+
const [value, setValue] = useState35(initialValue || "");
|
|
16326
|
+
const [debouncedSearch] = useDebounce2(value, 300);
|
|
16327
|
+
useEffect25(() => {
|
|
16328
|
+
onSearch(debouncedSearch);
|
|
16329
|
+
setQueryParams({ search: debouncedSearch || void 0 }, "replaceIn");
|
|
16330
|
+
}, [debouncedSearch, onSearch, setQueryParams]);
|
|
16331
|
+
return /* @__PURE__ */ jsx139("div", { css: Css.wPx(244).$, children: /* @__PURE__ */ jsx139(
|
|
16332
|
+
TextField,
|
|
16333
|
+
{
|
|
16334
|
+
label: "Search",
|
|
16335
|
+
labelStyle: "hidden",
|
|
16336
|
+
value,
|
|
16337
|
+
onChange: (v) => setValue(v ?? ""),
|
|
16338
|
+
placeholder: "Search",
|
|
16339
|
+
clearable: true,
|
|
16340
|
+
startAdornment: /* @__PURE__ */ jsx139(Icon, { icon: "search", color: "rgba(100, 100, 100, 1)" /* Gray700 */ })
|
|
16174
16341
|
}
|
|
16175
|
-
}
|
|
16176
|
-
|
|
16177
|
-
|
|
16178
|
-
|
|
16179
|
-
|
|
16180
|
-
|
|
16181
|
-
|
|
16182
|
-
|
|
16183
|
-
|
|
16184
|
-
|
|
16185
|
-
|
|
16186
|
-
transformFrom.current = { x: clientX - left, y: clientY - top };
|
|
16187
|
-
cloneEl.current = dragEl.current.cloneNode();
|
|
16188
|
-
cloneEl.current?.setAttribute(
|
|
16189
|
-
"style",
|
|
16190
|
-
`border-width: 2px; border-color: ${"rgba(201, 201, 201, 1)" /* Gray400 */}; border-style: dashed; width:${rect.width}px; height:${rect.height}px;`
|
|
16191
|
-
);
|
|
16192
|
-
cloneEl.current?.setAttribute(gridCloneKey, "true");
|
|
16193
|
-
cloneEl.current.removeAttribute("id");
|
|
16194
|
-
cloneEl.current?.classList.remove(activeGridItemClass);
|
|
16195
|
-
gridEl.current.insertBefore(cloneEl.current, dragEl.current.nextSibling);
|
|
16196
|
-
dragEl.current.setAttribute(
|
|
16197
|
-
"style",
|
|
16198
|
-
`pointer-events: none; position:fixed; z-index: 9999; top:${top}px; left:${left}px; width:${rect.width}px; height:${rect.height}px;`
|
|
16199
|
-
);
|
|
16200
|
-
gridEl.current.style.cursor = "grabbing";
|
|
16201
|
-
gridEl.current.addEventListener("mousemove", onMove);
|
|
16202
|
-
gridEl.current.addEventListener("touchmove", onMove);
|
|
16203
|
-
}
|
|
16204
|
-
},
|
|
16205
|
-
[initReorder, onMove]
|
|
16342
|
+
) });
|
|
16343
|
+
}
|
|
16344
|
+
|
|
16345
|
+
// src/components/Layout/PreventBrowserScroll.tsx
|
|
16346
|
+
import { jsx as jsx140 } from "@emotion/react/jsx-runtime";
|
|
16347
|
+
function PreventBrowserScroll({ children }) {
|
|
16348
|
+
return (
|
|
16349
|
+
// Take over the full viewport and hide any overflown content.
|
|
16350
|
+
// 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/
|
|
16351
|
+
// 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.
|
|
16352
|
+
/* @__PURE__ */ jsx140("div", { css: Css.oh.vh100.mh("-webkit-fill-available").maxh("-webkit-fill-available").$, children: /* @__PURE__ */ jsx140("div", { css: Css.h100.df.fdc.mh0.oa.$, children }) })
|
|
16206
16353
|
);
|
|
16207
|
-
|
|
16208
|
-
|
|
16209
|
-
|
|
16210
|
-
|
|
16211
|
-
|
|
16212
|
-
|
|
16213
|
-
|
|
16214
|
-
|
|
16215
|
-
|
|
16216
|
-
|
|
16217
|
-
|
|
16218
|
-
|
|
16219
|
-
|
|
16354
|
+
}
|
|
16355
|
+
|
|
16356
|
+
// src/components/Layout/RightPaneLayout/RightPaneContext.tsx
|
|
16357
|
+
import React15, { useCallback as useCallback18, useContext as useContext13, useMemo as useMemo33, useState as useState36 } from "react";
|
|
16358
|
+
import { jsx as jsx141 } from "@emotion/react/jsx-runtime";
|
|
16359
|
+
var RightPaneContext = React15.createContext({
|
|
16360
|
+
openInPane: () => {
|
|
16361
|
+
},
|
|
16362
|
+
closePane: () => {
|
|
16363
|
+
},
|
|
16364
|
+
clearPane: () => {
|
|
16365
|
+
},
|
|
16366
|
+
isRightPaneOpen: false,
|
|
16367
|
+
rightPaneContent: null
|
|
16368
|
+
});
|
|
16369
|
+
function RightPaneProvider({ children }) {
|
|
16370
|
+
const [rightPaneContent, setRightPaneContent] = useState36(void 0);
|
|
16371
|
+
const [isRightPaneOpen, setIsRightPaneOpen] = useState36(false);
|
|
16372
|
+
const openInPane = useCallback18(
|
|
16373
|
+
(opts) => {
|
|
16374
|
+
setRightPaneContent(opts?.content);
|
|
16375
|
+
setIsRightPaneOpen(true);
|
|
16220
16376
|
},
|
|
16221
|
-
[
|
|
16377
|
+
[setRightPaneContent]
|
|
16222
16378
|
);
|
|
16223
|
-
const
|
|
16224
|
-
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
|
|
16228
|
-
if (isSpaceKey && !reorderViaKeyboard.current) {
|
|
16229
|
-
e.preventDefault();
|
|
16230
|
-
reorderViaKeyboard.current = true;
|
|
16231
|
-
document.addEventListener("pointerdown", cancelReorder);
|
|
16232
|
-
initReorder();
|
|
16233
|
-
return;
|
|
16234
|
-
}
|
|
16235
|
-
if (!reorderViaKeyboard.current) {
|
|
16236
|
-
return;
|
|
16237
|
-
}
|
|
16238
|
-
const isEnterKey = e.key === "Enter";
|
|
16239
|
-
const isTabKey = e.key === "Tab";
|
|
16240
|
-
if (isEnterKey || isSpaceKey || isTabKey) {
|
|
16241
|
-
if (!isTabKey) {
|
|
16242
|
-
e.preventDefault();
|
|
16243
|
-
}
|
|
16244
|
-
commitReorder();
|
|
16245
|
-
if (isEnterKey) {
|
|
16246
|
-
moveHandle.blur();
|
|
16247
|
-
}
|
|
16248
|
-
document.removeEventListener("pointerdown", cancelReorder);
|
|
16249
|
-
return;
|
|
16250
|
-
}
|
|
16251
|
-
if (e.key === "Escape") {
|
|
16252
|
-
e.preventDefault();
|
|
16253
|
-
cancelReorder();
|
|
16254
|
-
document.removeEventListener("pointerdown", cancelReorder);
|
|
16255
|
-
return;
|
|
16256
|
-
}
|
|
16257
|
-
const movingLeft = ["ArrowLeft", "ArrowUp"].includes(e.key);
|
|
16258
|
-
const movingRight = ["ArrowRight", "ArrowDown"].includes(e.key);
|
|
16259
|
-
if (movingLeft || movingRight) {
|
|
16260
|
-
e.preventDefault();
|
|
16261
|
-
const gridItems = getGridItems();
|
|
16262
|
-
const currentIndex = gridItems.map((child) => child.getAttribute(gridItemIdKey)).filter(isDefined).indexOf(dragEl.current.getAttribute(gridItemIdKey));
|
|
16263
|
-
const newIndex = movingLeft ? currentIndex - 1 : currentIndex + 2;
|
|
16264
|
-
const insertBeforeElement = gridItems[newIndex] ?? gridItems[gridItems.length - 1].nextSibling;
|
|
16265
|
-
if (movingLeft && currentIndex > 0 || movingRight && currentIndex < gridItems.length - 1) {
|
|
16266
|
-
gridEl.current.insertBefore(dragEl.current, insertBeforeElement);
|
|
16267
|
-
}
|
|
16268
|
-
moveHandle.focus();
|
|
16269
|
-
}
|
|
16270
|
-
}
|
|
16271
|
-
},
|
|
16272
|
-
[cancelReorder, commitReorder, initReorder, getGridItems]
|
|
16379
|
+
const closePane = useCallback18(() => setIsRightPaneOpen(false), []);
|
|
16380
|
+
const clearPane = useCallback18(() => setRightPaneContent(void 0), [setRightPaneContent]);
|
|
16381
|
+
const context = useMemo33(
|
|
16382
|
+
() => ({ openInPane, closePane, clearPane, rightPaneContent, isRightPaneOpen }),
|
|
16383
|
+
[openInPane, closePane, rightPaneContent, clearPane, isRightPaneOpen]
|
|
16273
16384
|
);
|
|
16274
|
-
return /* @__PURE__ */
|
|
16275
|
-
"div",
|
|
16276
|
-
{
|
|
16277
|
-
ref: gridEl,
|
|
16278
|
-
css: {
|
|
16279
|
-
...Css.ctis.dg.addIn(`& .${activeGridItemClass}`, activeItemStyles ?? Css.bshModal.$).$,
|
|
16280
|
-
...gridStyles
|
|
16281
|
-
},
|
|
16282
|
-
onTouchStart: onDragStart,
|
|
16283
|
-
onMouseDown: onDragStart,
|
|
16284
|
-
onTouchEnd: onDragEnd,
|
|
16285
|
-
onMouseUp: onDragEnd,
|
|
16286
|
-
...tid,
|
|
16287
|
-
children
|
|
16288
|
-
}
|
|
16289
|
-
) });
|
|
16385
|
+
return /* @__PURE__ */ jsx141(RightPaneContext.Provider, { value: context, children });
|
|
16290
16386
|
}
|
|
16291
|
-
|
|
16292
|
-
|
|
16293
|
-
var activeGridItemClass = "dndgrid-active";
|
|
16294
|
-
|
|
16295
|
-
// src/components/DnDGrid/DnDGridItemHandle.tsx
|
|
16296
|
-
import { mergeProps as mergeProps12, useFocusRing as useFocusRing13, useHover as useHover17 } from "react-aria";
|
|
16297
|
-
import { jsx as jsx136 } from "@emotion/react/jsx-runtime";
|
|
16298
|
-
function DnDGridItemHandle(props) {
|
|
16299
|
-
const { dragHandleProps, icon = "move", compact = false, color } = props;
|
|
16300
|
-
const { focusProps, isFocusVisible } = useFocusRing13();
|
|
16301
|
-
const { hoverProps, isHovered } = useHover17({});
|
|
16302
|
-
const tid = useTestIds(props, "dragHandle");
|
|
16303
|
-
const iconButtonNormal2 = Css.hPx(28).wPx(28).br8.bw2.$;
|
|
16304
|
-
const iconButtonCompact2 = Css.hPx(18).wPx(18).br4.bw1.$;
|
|
16305
|
-
return /* @__PURE__ */ jsx136(
|
|
16306
|
-
"button",
|
|
16307
|
-
{
|
|
16308
|
-
css: {
|
|
16309
|
-
...compact ? iconButtonCompact2 : iconButtonNormal2,
|
|
16310
|
-
...Css.cursor("grab").bcTransparent.bss.bgTransparent.outline0.dif.aic.jcc.transition.if(isFocusVisible).bcBlue700.$,
|
|
16311
|
-
...isHovered && Css.bgGray200.$
|
|
16312
|
-
},
|
|
16313
|
-
...mergeProps12(dragHandleProps, focusProps, hoverProps),
|
|
16314
|
-
...tid,
|
|
16315
|
-
children: /* @__PURE__ */ jsx136(Icon, { icon, inc: compact ? 2 : void 0, color })
|
|
16316
|
-
}
|
|
16317
|
-
);
|
|
16387
|
+
function useRightPaneContext() {
|
|
16388
|
+
return useContext13(RightPaneContext);
|
|
16318
16389
|
}
|
|
16319
16390
|
|
|
16320
|
-
// src/components/
|
|
16321
|
-
import {
|
|
16322
|
-
|
|
16323
|
-
|
|
16324
|
-
|
|
16325
|
-
const {
|
|
16326
|
-
|
|
16327
|
-
|
|
16328
|
-
|
|
16329
|
-
|
|
16330
|
-
|
|
16391
|
+
// src/components/Layout/RightPaneLayout/RightPaneLayout.tsx
|
|
16392
|
+
import { AnimatePresence as AnimatePresence3, motion as motion3 } from "framer-motion";
|
|
16393
|
+
import { useEffect as useEffect26 } from "react";
|
|
16394
|
+
import { Fragment as Fragment30, jsx as jsx142, jsxs as jsxs68 } from "@emotion/react/jsx-runtime";
|
|
16395
|
+
function RightPaneLayout(props) {
|
|
16396
|
+
const { children, paneBgColor = "rgba(255,255,255,1)" /* White */, paneWidth = 450, defaultPaneContent } = props;
|
|
16397
|
+
const { isRightPaneOpen, rightPaneContent, clearPane, closePane } = useRightPaneContext();
|
|
16398
|
+
useEffect26(() => closePane, [closePane]);
|
|
16399
|
+
return /* @__PURE__ */ jsx142("div", { css: Css.h100.df.oxh.$, children: /* @__PURE__ */ jsxs68(Fragment30, { children: [
|
|
16400
|
+
/* @__PURE__ */ jsx142(
|
|
16401
|
+
"div",
|
|
16402
|
+
{
|
|
16403
|
+
css: {
|
|
16404
|
+
...Css.w(`calc(100% - ${paneWidth + 24}px)`).add("transition", "width .2s linear").h100.mr3.oxa.$,
|
|
16405
|
+
...Css.if(!isRightPaneOpen).w100.mr0.$,
|
|
16406
|
+
...Css.if(!!defaultPaneContent).w(`calc(100% - ${paneWidth + 24}px)`).mr3.$
|
|
16407
|
+
},
|
|
16408
|
+
children
|
|
16331
16409
|
}
|
|
16332
|
-
|
|
16333
|
-
|
|
16334
|
-
|
|
16335
|
-
|
|
16336
|
-
|
|
16337
|
-
|
|
16338
|
-
|
|
16339
|
-
onDragHandleKeyDown(e);
|
|
16340
|
-
}
|
|
16410
|
+
),
|
|
16411
|
+
/* @__PURE__ */ jsxs68("div", { css: Css.relative.if(!!defaultPaneContent).wPx(paneWidth).$, children: [
|
|
16412
|
+
defaultPaneContent && /* @__PURE__ */ jsx142(
|
|
16413
|
+
"div",
|
|
16414
|
+
{
|
|
16415
|
+
css: Css.h100.wPx(paneWidth).left(0).absolute.add("transition", "all .3s ease-in-out").if(isRightPaneOpen).add("opacity", 0).left(100).$,
|
|
16416
|
+
children: defaultPaneContent
|
|
16341
16417
|
}
|
|
16342
|
-
|
|
16343
|
-
|
|
16344
|
-
|
|
16345
|
-
|
|
16346
|
-
|
|
16347
|
-
|
|
16348
|
-
|
|
16418
|
+
),
|
|
16419
|
+
/* @__PURE__ */ jsx142(AnimatePresence3, { children: isRightPaneOpen && /* @__PURE__ */ jsx142(
|
|
16420
|
+
motion3.div,
|
|
16421
|
+
{
|
|
16422
|
+
layout: "position",
|
|
16423
|
+
"data-testid": "rightPaneContent",
|
|
16424
|
+
css: Css.bgColor(paneBgColor).h100.wPx(paneWidth).$,
|
|
16425
|
+
initial: { x: paneWidth + 24, position: "absolute" },
|
|
16426
|
+
animate: { x: 0 },
|
|
16427
|
+
transition: { ease: "linear", duration: 0.2 },
|
|
16428
|
+
exit: { transition: { ease: "linear", duration: 0.2 }, x: paneWidth },
|
|
16429
|
+
onAnimationComplete: (definition) => definition.x !== 0 && clearPane(),
|
|
16430
|
+
children: rightPaneContent
|
|
16431
|
+
},
|
|
16432
|
+
"rightPane"
|
|
16433
|
+
) })
|
|
16434
|
+
] })
|
|
16435
|
+
] }) });
|
|
16349
16436
|
}
|
|
16350
16437
|
|
|
16351
|
-
// src/components/
|
|
16352
|
-
|
|
16353
|
-
|
|
16354
|
-
|
|
16355
|
-
|
|
16356
|
-
|
|
16357
|
-
|
|
16358
|
-
|
|
16359
|
-
}
|
|
16360
|
-
get defaultValue() {
|
|
16361
|
-
return this.props.defaultValue;
|
|
16362
|
-
}
|
|
16363
|
-
testId(tid) {
|
|
16364
|
-
return tid[defaultTestId(this.label)];
|
|
16365
|
-
}
|
|
16366
|
-
};
|
|
16438
|
+
// src/components/Layout/RightPaneLayout/useRightPane.tsx
|
|
16439
|
+
function useRightPane() {
|
|
16440
|
+
const { openInPane, closePane } = useRightPaneContext();
|
|
16441
|
+
return {
|
|
16442
|
+
openRightPane: openInPane,
|
|
16443
|
+
closeRightPane: closePane
|
|
16444
|
+
};
|
|
16445
|
+
}
|
|
16367
16446
|
|
|
16368
|
-
// src/components/
|
|
16369
|
-
import {
|
|
16370
|
-
|
|
16371
|
-
|
|
16447
|
+
// src/components/Toast/ToastContext.tsx
|
|
16448
|
+
import { createContext as createContext5, useCallback as useCallback19, useContext as useContext14, useMemo as useMemo34, useState as useState37 } from "react";
|
|
16449
|
+
import { jsx as jsx143 } from "@emotion/react/jsx-runtime";
|
|
16450
|
+
var ToastContext = createContext5({
|
|
16451
|
+
setNotice: () => {
|
|
16452
|
+
throw new Error("Missing ToastProvider");
|
|
16453
|
+
},
|
|
16454
|
+
clear: () => {
|
|
16455
|
+
},
|
|
16456
|
+
notice: void 0
|
|
16457
|
+
});
|
|
16458
|
+
function ToastProvider(props) {
|
|
16459
|
+
const [notice, setNotice] = useState37();
|
|
16460
|
+
const clear = useCallback19(() => setNotice(void 0), [setNotice]);
|
|
16461
|
+
const contextValue = useMemo34(() => ({ setNotice, notice, clear }), [notice, clear]);
|
|
16462
|
+
return /* @__PURE__ */ jsx143(ToastContext.Provider, { value: contextValue, children: props.children });
|
|
16463
|
+
}
|
|
16464
|
+
function useToastContext() {
|
|
16465
|
+
return useContext14(ToastContext);
|
|
16372
16466
|
}
|
|
16373
|
-
var anyOption = {};
|
|
16374
|
-
var DateFilter = class extends BaseFilter {
|
|
16375
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16376
|
-
const { label, operations, getOperationValue, getOperationLabel } = this.props;
|
|
16377
|
-
return /* @__PURE__ */ jsxs66(Fragment25, { children: [
|
|
16378
|
-
vertical && /* @__PURE__ */ jsx137(Label, { label }),
|
|
16379
|
-
/* @__PURE__ */ jsxs66(CompoundField, { children: [
|
|
16380
|
-
/* @__PURE__ */ jsx137(
|
|
16381
|
-
SelectField,
|
|
16382
|
-
{
|
|
16383
|
-
compact: true,
|
|
16384
|
-
sizeToContent: true,
|
|
16385
|
-
options: [
|
|
16386
|
-
// Always show the 'Any' option
|
|
16387
|
-
anyOption,
|
|
16388
|
-
...operations
|
|
16389
|
-
],
|
|
16390
|
-
getOptionValue: (o) => o === anyOption ? void 0 : getOperationValue(o),
|
|
16391
|
-
getOptionLabel: (o) => o === anyOption ? "Any" : getOperationLabel(o),
|
|
16392
|
-
value: value?.op,
|
|
16393
|
-
onSelect: (op) => (
|
|
16394
|
-
// default the selected date to today if it doesn't exist in the filter's value
|
|
16395
|
-
setValue(op ? { op, value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date() } : void 0)
|
|
16396
|
-
),
|
|
16397
|
-
label: inModal ? `${label} date filter operation` : label,
|
|
16398
|
-
labelStyle: !inModal && !vertical ? "inline" : inModal || vertical ? "hidden" : "above",
|
|
16399
|
-
nothingSelectedText: "Any",
|
|
16400
|
-
...tid[`${defaultTestId(this.label)}_dateOperation`]
|
|
16401
|
-
}
|
|
16402
|
-
),
|
|
16403
|
-
/* @__PURE__ */ jsx137(
|
|
16404
|
-
DateField,
|
|
16405
|
-
{
|
|
16406
|
-
compact: true,
|
|
16407
|
-
labelStyle: "inline",
|
|
16408
|
-
value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date(),
|
|
16409
|
-
label: "Date",
|
|
16410
|
-
onChange: (d) => setValue({ ...value, value: d }),
|
|
16411
|
-
disabled: !value,
|
|
16412
|
-
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
16413
|
-
}
|
|
16414
|
-
)
|
|
16415
|
-
] })
|
|
16416
|
-
] });
|
|
16417
|
-
}
|
|
16418
|
-
};
|
|
16419
16467
|
|
|
16420
|
-
// src/components/
|
|
16421
|
-
import {
|
|
16422
|
-
|
|
16423
|
-
|
|
16468
|
+
// src/components/BeamContext.tsx
|
|
16469
|
+
import { jsx as jsx144, jsxs as jsxs69 } from "@emotion/react/jsx-runtime";
|
|
16470
|
+
var BeamContext = createContext6({
|
|
16471
|
+
modalState: new EmptyRef(),
|
|
16472
|
+
modalCanCloseChecks: new EmptyRef(),
|
|
16473
|
+
modalHeaderDiv: void 0,
|
|
16474
|
+
modalBodyDiv: void 0,
|
|
16475
|
+
modalFooterDiv: void 0,
|
|
16476
|
+
drawerContentStack: new EmptyRef(),
|
|
16477
|
+
drawerCanCloseChecks: new EmptyRef(),
|
|
16478
|
+
drawerCanCloseDetailsChecks: new EmptyRef(),
|
|
16479
|
+
sdHeaderDiv: void 0
|
|
16480
|
+
});
|
|
16481
|
+
function BeamProvider({ children, ...presentationProps }) {
|
|
16482
|
+
const [, tick] = useReducer((prev) => prev + 1, 0);
|
|
16483
|
+
const modalRef = useRef43();
|
|
16484
|
+
const modalHeaderDiv = useMemo35(() => document.createElement("div"), []);
|
|
16485
|
+
const modalBodyDiv = useMemo35(() => {
|
|
16486
|
+
const el = document.createElement("div");
|
|
16487
|
+
el.style.height = "100%";
|
|
16488
|
+
return el;
|
|
16489
|
+
}, []);
|
|
16490
|
+
const modalCanCloseChecksRef = useRef43([]);
|
|
16491
|
+
const modalFooterDiv = useMemo35(() => document.createElement("div"), []);
|
|
16492
|
+
const drawerContentStackRef = useRef43([]);
|
|
16493
|
+
const drawerCanCloseChecks = useRef43([]);
|
|
16494
|
+
const drawerCanCloseDetailsChecks = useRef43([]);
|
|
16495
|
+
const sdHeaderDiv = useMemo35(() => document.createElement("div"), []);
|
|
16496
|
+
const context = useMemo35(() => {
|
|
16497
|
+
return {
|
|
16498
|
+
// These two keys need to trigger re-renders on change
|
|
16499
|
+
modalState: new PretendRefThatTicks(modalRef, tick),
|
|
16500
|
+
drawerContentStack: new PretendRefThatTicks(drawerContentStackRef, tick),
|
|
16501
|
+
// The rest we don't need to re-render when these are mutated, so just expose as-is
|
|
16502
|
+
modalCanCloseChecks: modalCanCloseChecksRef,
|
|
16503
|
+
modalHeaderDiv,
|
|
16504
|
+
modalBodyDiv,
|
|
16505
|
+
modalFooterDiv,
|
|
16506
|
+
drawerCanCloseChecks,
|
|
16507
|
+
drawerCanCloseDetailsChecks,
|
|
16508
|
+
sdHeaderDiv
|
|
16509
|
+
};
|
|
16510
|
+
}, [modalBodyDiv, modalFooterDiv, modalHeaderDiv, sdHeaderDiv]);
|
|
16511
|
+
return /* @__PURE__ */ jsx144(BeamContext.Provider, { value: { ...context }, children: /* @__PURE__ */ jsx144(PresentationProvider, { ...presentationProps, children: /* @__PURE__ */ jsx144(RightPaneProvider, { children: /* @__PURE__ */ jsx144(AutoSaveStatusProvider, { children: /* @__PURE__ */ jsx144(SnackbarProvider, { children: /* @__PURE__ */ jsxs69(ToastProvider, { children: [
|
|
16512
|
+
/* @__PURE__ */ jsxs69(OverlayProvider, { children: [
|
|
16513
|
+
children,
|
|
16514
|
+
modalRef.current && /* @__PURE__ */ jsx144(Modal, { ...modalRef.current })
|
|
16515
|
+
] }),
|
|
16516
|
+
/* @__PURE__ */ jsx144(SuperDrawer, {})
|
|
16517
|
+
] }) }) }) }) }) });
|
|
16424
16518
|
}
|
|
16425
|
-
var
|
|
16426
|
-
|
|
16427
|
-
|
|
16428
|
-
|
|
16429
|
-
|
|
16430
|
-
|
|
16431
|
-
|
|
16432
|
-
|
|
16433
|
-
|
|
16434
|
-
|
|
16435
|
-
|
|
16436
|
-
placeholder: placeholderText,
|
|
16437
|
-
label: testFieldLabel ?? "Date",
|
|
16438
|
-
value: value?.value ? { from: new Date(value.value.from), to: new Date(value.value.to) } : void 0,
|
|
16439
|
-
onChange: (d) => d ? setValue({ op: defaultValue?.op, value: d }) : setValue(void 0),
|
|
16440
|
-
disabledDays,
|
|
16441
|
-
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
16442
|
-
}
|
|
16443
|
-
)
|
|
16444
|
-
] });
|
|
16519
|
+
var PretendRefThatTicks = class {
|
|
16520
|
+
constructor(ref, tick) {
|
|
16521
|
+
this.ref = ref;
|
|
16522
|
+
this.tick = tick;
|
|
16523
|
+
}
|
|
16524
|
+
get current() {
|
|
16525
|
+
return this.ref.current;
|
|
16526
|
+
}
|
|
16527
|
+
set current(value) {
|
|
16528
|
+
this.ref.current = value;
|
|
16529
|
+
this.tick();
|
|
16445
16530
|
}
|
|
16446
16531
|
};
|
|
16447
|
-
|
|
16448
|
-
|
|
16449
|
-
import { jsx as jsx139 } from "@emotion/react/jsx-runtime";
|
|
16450
|
-
function multiFilter(props) {
|
|
16451
|
-
return (key) => new MultiFilter(key, props);
|
|
16532
|
+
function useBeamContext() {
|
|
16533
|
+
return useContext15(BeamContext);
|
|
16452
16534
|
}
|
|
16453
|
-
|
|
16454
|
-
|
|
16455
|
-
|
|
16456
|
-
|
|
16457
|
-
|
|
16458
|
-
|
|
16459
|
-
|
|
16460
|
-
|
|
16461
|
-
|
|
16462
|
-
|
|
16463
|
-
|
|
16464
|
-
|
|
16465
|
-
|
|
16466
|
-
|
|
16467
|
-
|
|
16468
|
-
|
|
16469
|
-
|
|
16470
|
-
|
|
16471
|
-
|
|
16472
|
-
|
|
16473
|
-
|
|
16474
|
-
|
|
16475
|
-
|
|
16476
|
-
|
|
16477
|
-
labelStyle: "hidden",
|
|
16478
|
-
...tid[defaultTestId(this.label)]
|
|
16479
|
-
}
|
|
16480
|
-
);
|
|
16535
|
+
|
|
16536
|
+
// src/components/ButtonDatePicker.tsx
|
|
16537
|
+
import { useRef as useRef44 } from "react";
|
|
16538
|
+
import { useMenuTrigger as useMenuTrigger3 } from "react-aria";
|
|
16539
|
+
import { useMenuTriggerState as useMenuTriggerState3 } from "react-stately";
|
|
16540
|
+
import { jsx as jsx145 } from "@emotion/react/jsx-runtime";
|
|
16541
|
+
function ButtonDatePicker(props) {
|
|
16542
|
+
const { defaultOpen, disabled, trigger, onSelect, ...datePickerProps } = props;
|
|
16543
|
+
const state = useMenuTriggerState3({ isOpen: defaultOpen });
|
|
16544
|
+
const buttonRef = useRef44(null);
|
|
16545
|
+
const { menuTriggerProps, menuProps } = useMenuTrigger3({ isDisabled: !!disabled }, state, buttonRef);
|
|
16546
|
+
const tid = useTestIds(
|
|
16547
|
+
props,
|
|
16548
|
+
isTextButton(trigger) ? defaultTestId(labelOr(trigger, "buttonDatePicker")) : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
|
|
16549
|
+
);
|
|
16550
|
+
return /* @__PURE__ */ jsx145(OverlayTrigger, { ...props, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ jsx145(DatePickerOverlay, { overlayProps: menuProps, children: /* @__PURE__ */ jsx145(
|
|
16551
|
+
DatePicker,
|
|
16552
|
+
{
|
|
16553
|
+
...datePickerProps,
|
|
16554
|
+
onSelect: (d) => {
|
|
16555
|
+
onSelect(d);
|
|
16556
|
+
state.close();
|
|
16557
|
+
},
|
|
16558
|
+
...tid.datePicker
|
|
16481
16559
|
}
|
|
16482
|
-
|
|
16483
|
-
|
|
16484
|
-
|
|
16560
|
+
) }) });
|
|
16561
|
+
}
|
|
16562
|
+
|
|
16563
|
+
// src/components/ButtonGroup.tsx
|
|
16564
|
+
import { useRef as useRef45 } from "react";
|
|
16565
|
+
import { useButton as useButton10, useFocusRing as useFocusRing12, useHover as useHover15 } from "react-aria";
|
|
16566
|
+
import { jsx as jsx146, jsxs as jsxs70 } from "@emotion/react/jsx-runtime";
|
|
16567
|
+
function ButtonGroup(props) {
|
|
16568
|
+
const { buttons, disabled = false, size = "sm" } = props;
|
|
16569
|
+
const tid = useTestIds(props, "buttonGroup");
|
|
16570
|
+
return (
|
|
16571
|
+
// Adding `line-height: 0` prevent inheriting line-heights that might throw off sizing within the button group.
|
|
16572
|
+
/* @__PURE__ */ jsx146("div", { ...tid, css: Css.df.lh(0).add({ ...sizeStyles2[size] }).$, children: buttons.map(({ disabled: buttonDisabled, ...buttonProps }, i) => (
|
|
16573
|
+
// Disable the button if the ButtonGroup is disabled or if the current button is disabled.
|
|
16574
|
+
/* @__PURE__ */ jsx146(GroupButton, { ...buttonProps, disabled: disabled || buttonDisabled, size, ...tid }, i)
|
|
16575
|
+
)) })
|
|
16576
|
+
);
|
|
16577
|
+
}
|
|
16578
|
+
function GroupButton(props) {
|
|
16579
|
+
const { icon, iconInc, iconColor, text, active, onClick: onPress, disabled, size, tooltip, ...otherProps } = props;
|
|
16580
|
+
const ariaProps = { onPress, isDisabled: !!disabled, ...otherProps };
|
|
16581
|
+
const ref = useRef45(null);
|
|
16582
|
+
const { buttonProps, isPressed } = useButton10(ariaProps, ref);
|
|
16583
|
+
const { isFocusVisible, focusProps } = useFocusRing12();
|
|
16584
|
+
const { hoverProps, isHovered } = useHover15(ariaProps);
|
|
16585
|
+
const tid = useTestIds(props);
|
|
16586
|
+
return /* @__PURE__ */ jsx146("span", { css: getButtonStyles2(), children: maybeTooltip({
|
|
16587
|
+
title: resolveTooltip(disabled, tooltip),
|
|
16588
|
+
placement: "top",
|
|
16589
|
+
children: /* @__PURE__ */ jsxs70(
|
|
16590
|
+
"button",
|
|
16485
16591
|
{
|
|
16486
|
-
|
|
16487
|
-
|
|
16488
|
-
|
|
16489
|
-
|
|
16490
|
-
|
|
16491
|
-
|
|
16492
|
-
|
|
16493
|
-
|
|
16592
|
+
ref,
|
|
16593
|
+
...buttonProps,
|
|
16594
|
+
...focusProps,
|
|
16595
|
+
...hoverProps,
|
|
16596
|
+
css: {
|
|
16597
|
+
...Css.buttonBase.px2.br0.h100.$,
|
|
16598
|
+
"&:disabled": Css.gray400.cursorNotAllowed.bcGray300.$,
|
|
16599
|
+
...isFocusVisible ? defaultFocusRingStyles2 : {},
|
|
16600
|
+
...active ? activeStyles3 : {},
|
|
16601
|
+
...isPressed ? pressedStyles2 : isHovered ? hoverStyles3 : {},
|
|
16602
|
+
...icon ? iconStyles2[size] : {}
|
|
16494
16603
|
},
|
|
16495
|
-
|
|
16496
|
-
|
|
16604
|
+
...tid[defaultTestId(typeof text === "string" && text || icon || "button")],
|
|
16605
|
+
children: [
|
|
16606
|
+
icon && /* @__PURE__ */ jsx146(Icon, { xss: Css.if(!!text).mrPx(4).$, icon, color: disabled ? void 0 : iconColor, inc: iconInc }),
|
|
16607
|
+
text
|
|
16608
|
+
]
|
|
16497
16609
|
}
|
|
16498
|
-
)
|
|
16499
|
-
}
|
|
16500
|
-
};
|
|
16501
|
-
|
|
16502
|
-
// src/components/Filters/NumberRangeFilter.tsx
|
|
16503
|
-
import { Fragment as Fragment27, jsx as jsx140, jsxs as jsxs68 } from "@emotion/react/jsx-runtime";
|
|
16504
|
-
function numberRangeFilter(props) {
|
|
16505
|
-
return (key) => new NumberRangeFilter(key, props);
|
|
16610
|
+
)
|
|
16611
|
+
}) });
|
|
16506
16612
|
}
|
|
16507
|
-
var
|
|
16508
|
-
|
|
16509
|
-
|
|
16510
|
-
|
|
16511
|
-
|
|
16512
|
-
|
|
16513
|
-
|
|
16514
|
-
|
|
16515
|
-
|
|
16516
|
-
|
|
16517
|
-
|
|
16518
|
-
|
|
16519
|
-
|
|
16520
|
-
|
|
16521
|
-
|
|
16522
|
-
|
|
16523
|
-
|
|
16524
|
-
|
|
16525
|
-
|
|
16526
|
-
|
|
16527
|
-
|
|
16528
|
-
|
|
16529
|
-
|
|
16530
|
-
|
|
16531
|
-
/* @__PURE__ */ jsx140(
|
|
16532
|
-
NumberField,
|
|
16533
|
-
{
|
|
16534
|
-
labelStyle: "inline",
|
|
16535
|
-
clearable: true,
|
|
16536
|
-
label: "Max",
|
|
16537
|
-
value: max,
|
|
16538
|
-
type: numberFieldType,
|
|
16539
|
-
numberFormatOptions,
|
|
16540
|
-
onChange: (maxVal) => {
|
|
16541
|
-
const minValue = min ? { min } : {};
|
|
16542
|
-
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
16543
|
-
},
|
|
16544
|
-
...tid[`${defaultTestId(label)}_max_vertical`]
|
|
16545
|
-
}
|
|
16546
|
-
)
|
|
16547
|
-
] }),
|
|
16548
|
-
!vertical && /* @__PURE__ */ jsxs68(CompoundField, { ...tid, children: [
|
|
16549
|
-
/* @__PURE__ */ jsx140(
|
|
16550
|
-
NumberField,
|
|
16551
|
-
{
|
|
16552
|
-
compact: true,
|
|
16553
|
-
sizeToContent: !inModal,
|
|
16554
|
-
labelStyle: "inline",
|
|
16555
|
-
clearable: true,
|
|
16556
|
-
label: !inModal ? `${label} Min` : "Min",
|
|
16557
|
-
value: min,
|
|
16558
|
-
type: numberFieldType,
|
|
16559
|
-
numberFormatOptions,
|
|
16560
|
-
onChange: (minVal) => {
|
|
16561
|
-
const maxValue = max ? { max } : {};
|
|
16562
|
-
setValue(minVal || max ? { min: minVal, ...maxValue } : void 0);
|
|
16563
|
-
},
|
|
16564
|
-
...tid[`${defaultTestId(label)}_min`]
|
|
16565
|
-
}
|
|
16566
|
-
),
|
|
16567
|
-
/* @__PURE__ */ jsx140(
|
|
16568
|
-
NumberField,
|
|
16569
|
-
{
|
|
16570
|
-
compact: true,
|
|
16571
|
-
sizeToContent: !inModal,
|
|
16572
|
-
labelStyle: "inline",
|
|
16573
|
-
clearable: true,
|
|
16574
|
-
label: !inModal ? `${label} Max` : "Max",
|
|
16575
|
-
value: max,
|
|
16576
|
-
type: numberFieldType,
|
|
16577
|
-
numberFormatOptions,
|
|
16578
|
-
onChange: (maxVal) => {
|
|
16579
|
-
const minValue = min ? { min } : {};
|
|
16580
|
-
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
16581
|
-
},
|
|
16582
|
-
...tid[`${defaultTestId(label)}_max`]
|
|
16583
|
-
}
|
|
16584
|
-
)
|
|
16585
|
-
] })
|
|
16586
|
-
] });
|
|
16587
|
-
}
|
|
16613
|
+
var pressedStyles2 = Css.bgGray200.$;
|
|
16614
|
+
var activeStyles3 = Css.bgGray300.$;
|
|
16615
|
+
var hoverStyles3 = Css.bgGray100.$;
|
|
16616
|
+
var defaultFocusRingStyles2 = Css.relative.z2.bshFocus.$;
|
|
16617
|
+
function getButtonStyles2() {
|
|
16618
|
+
return {
|
|
16619
|
+
...Css.z1.bgWhite.bcGray300.bw1.ba.gray900.br0.oh.$,
|
|
16620
|
+
// Our first button should have a rounded left border
|
|
16621
|
+
"&:first-of-type": Css.add("borderRadius", "4px 0 0 4px").$,
|
|
16622
|
+
// Our last button should have a rounded right border
|
|
16623
|
+
"&:last-of-type": Css.add("borderRadius", "0 4px 4px 0").$,
|
|
16624
|
+
// Nudge buttons one pixel to the left so they visually share a border
|
|
16625
|
+
"&:not(:first-of-type)": Css.mlPx(-1).$
|
|
16626
|
+
};
|
|
16627
|
+
}
|
|
16628
|
+
var sizeStyles2 = {
|
|
16629
|
+
xs: Css.hPx(28).$,
|
|
16630
|
+
sm: Css.hPx(32).$,
|
|
16631
|
+
md: Css.hPx(40).$
|
|
16632
|
+
};
|
|
16633
|
+
var iconStyles2 = {
|
|
16634
|
+
xs: Css.pxPx(2).$,
|
|
16635
|
+
sm: Css.pxPx(4).$,
|
|
16636
|
+
md: Css.px1.$
|
|
16588
16637
|
};
|
|
16589
16638
|
|
|
16590
|
-
// src/components/
|
|
16591
|
-
import {
|
|
16592
|
-
|
|
16593
|
-
|
|
16639
|
+
// src/components/ButtonMenu.tsx
|
|
16640
|
+
import { useRef as useRef46 } from "react";
|
|
16641
|
+
import { useMenuTrigger as useMenuTrigger4 } from "react-aria";
|
|
16642
|
+
import { useMenuTriggerState as useMenuTriggerState4 } from "react-stately";
|
|
16643
|
+
import { jsx as jsx147 } from "@emotion/react/jsx-runtime";
|
|
16644
|
+
function ButtonMenu(props) {
|
|
16645
|
+
const { defaultOpen, disabled, items, persistentItems, trigger, searchable, contrast = false } = props;
|
|
16646
|
+
let selectedItem, onChange;
|
|
16647
|
+
if (isSelectionButtonMenuProps(props)) {
|
|
16648
|
+
selectedItem = props.selectedItem;
|
|
16649
|
+
onChange = props.onChange;
|
|
16650
|
+
}
|
|
16651
|
+
const state = useMenuTriggerState4({ isOpen: defaultOpen });
|
|
16652
|
+
const buttonRef = useRef46(null);
|
|
16653
|
+
const { menuTriggerProps, menuProps } = useMenuTrigger4({ isDisabled: !!disabled }, state, buttonRef);
|
|
16654
|
+
const tid = useTestIds(
|
|
16655
|
+
props,
|
|
16656
|
+
isTextButton(trigger) ? labelOr(trigger, "buttonMenu") : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
|
|
16657
|
+
);
|
|
16658
|
+
return /* @__PURE__ */ jsx147(
|
|
16659
|
+
OverlayTrigger,
|
|
16660
|
+
{
|
|
16661
|
+
...props,
|
|
16662
|
+
menuTriggerProps,
|
|
16663
|
+
state,
|
|
16664
|
+
buttonRef,
|
|
16665
|
+
...tid,
|
|
16666
|
+
contrast,
|
|
16667
|
+
children: /* @__PURE__ */ jsx147(
|
|
16668
|
+
Menu,
|
|
16669
|
+
{
|
|
16670
|
+
ariaMenuProps: menuProps,
|
|
16671
|
+
onClose: () => state.close(),
|
|
16672
|
+
items,
|
|
16673
|
+
persistentItems,
|
|
16674
|
+
searchable,
|
|
16675
|
+
contrast,
|
|
16676
|
+
selectedItem,
|
|
16677
|
+
onChange,
|
|
16678
|
+
...tid
|
|
16679
|
+
}
|
|
16680
|
+
)
|
|
16681
|
+
}
|
|
16682
|
+
);
|
|
16594
16683
|
}
|
|
16595
|
-
|
|
16596
|
-
|
|
16597
|
-
|
|
16598
|
-
|
|
16599
|
-
|
|
16600
|
-
|
|
16601
|
-
|
|
16602
|
-
|
|
16603
|
-
|
|
16604
|
-
|
|
16605
|
-
|
|
16606
|
-
|
|
16607
|
-
|
|
16608
|
-
|
|
16609
|
-
|
|
16610
|
-
|
|
16611
|
-
|
|
16612
|
-
|
|
16613
|
-
|
|
16614
|
-
|
|
16615
|
-
|
|
16616
|
-
|
|
16617
|
-
|
|
16618
|
-
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16619
|
-
sizeToContent: !inModal && !vertical,
|
|
16620
|
-
nothingSelectedText: nothingSelectedText ?? "All",
|
|
16621
|
-
onSelect: (value2) => setValue(value2 || void 0),
|
|
16622
|
-
...this.testId(tid)
|
|
16684
|
+
function isSelectionButtonMenuProps(props) {
|
|
16685
|
+
return typeof props === "object" && "selectedItem" in props && "onChange" in props;
|
|
16686
|
+
}
|
|
16687
|
+
|
|
16688
|
+
// src/components/Card.tsx
|
|
16689
|
+
import { useMemo as useMemo36 } from "react";
|
|
16690
|
+
import { useHover as useHover16 } from "react-aria";
|
|
16691
|
+
|
|
16692
|
+
// src/components/Tag.tsx
|
|
16693
|
+
import { useResizeObserver as useResizeObserver4 } from "@react-aria/utils";
|
|
16694
|
+
import { useRef as useRef47, useState as useState38 } from "react";
|
|
16695
|
+
import { jsx as jsx148, jsxs as jsxs71 } from "@emotion/react/jsx-runtime";
|
|
16696
|
+
function Tag(props) {
|
|
16697
|
+
const { text, type, xss, preventTooltip = false, ...otherProps } = props;
|
|
16698
|
+
const typeStyles2 = getStyles(type);
|
|
16699
|
+
const tid = useTestIds(otherProps);
|
|
16700
|
+
const [showTooltip, setShowTooltip] = useState38(false);
|
|
16701
|
+
const ref = useRef47(null);
|
|
16702
|
+
useResizeObserver4({
|
|
16703
|
+
ref,
|
|
16704
|
+
onResize: () => {
|
|
16705
|
+
if (ref.current) {
|
|
16706
|
+
setShowTooltip(ref.current.offsetHeight < ref.current.scrollHeight);
|
|
16623
16707
|
}
|
|
16624
|
-
|
|
16708
|
+
}
|
|
16709
|
+
});
|
|
16710
|
+
return maybeTooltip({
|
|
16711
|
+
title: !preventTooltip && showTooltip ? text : void 0,
|
|
16712
|
+
children: /* @__PURE__ */ jsxs71("span", { ...tid, css: { ...Css.dif.tinySb.ttu.aic.gapPx(4).pxPx(6).pyPx(2).gray900.br4.$, ...typeStyles2, ...xss }, children: [
|
|
16713
|
+
otherProps.icon && /* @__PURE__ */ jsx148("span", { css: Css.fs0.$, children: /* @__PURE__ */ jsx148(Icon, { icon: otherProps.icon, inc: 1.5 }) }),
|
|
16714
|
+
/* @__PURE__ */ jsx148("span", { ref, css: Css.lineClamp1.wbba.$, children: text })
|
|
16715
|
+
] })
|
|
16716
|
+
});
|
|
16717
|
+
}
|
|
16718
|
+
function getStyles(type) {
|
|
16719
|
+
switch (type) {
|
|
16720
|
+
case "info":
|
|
16721
|
+
return Css.bgBlue100.$;
|
|
16722
|
+
case "caution":
|
|
16723
|
+
return Css.bgYellow200.$;
|
|
16724
|
+
case "warning":
|
|
16725
|
+
return Css.bgRed200.$;
|
|
16726
|
+
case "success":
|
|
16727
|
+
return Css.bgGreen200.$;
|
|
16728
|
+
default:
|
|
16729
|
+
return Css.bgGray200.$;
|
|
16625
16730
|
}
|
|
16626
|
-
};
|
|
16627
|
-
|
|
16628
|
-
// src/components/Filters/TreeFilter.tsx
|
|
16629
|
-
import { jsx as jsx142 } from "@emotion/react/jsx-runtime";
|
|
16630
|
-
function treeFilter(props) {
|
|
16631
|
-
return (key) => new TreeFilter(key, props);
|
|
16632
16731
|
}
|
|
16633
|
-
|
|
16634
|
-
|
|
16635
|
-
|
|
16636
|
-
|
|
16637
|
-
|
|
16638
|
-
|
|
16639
|
-
|
|
16640
|
-
|
|
16641
|
-
|
|
16642
|
-
|
|
16643
|
-
|
|
16644
|
-
|
|
16645
|
-
|
|
16646
|
-
|
|
16647
|
-
|
|
16732
|
+
|
|
16733
|
+
// src/components/Card.tsx
|
|
16734
|
+
import { jsx as jsx149, jsxs as jsxs72 } from "@emotion/react/jsx-runtime";
|
|
16735
|
+
function Card(props) {
|
|
16736
|
+
const {
|
|
16737
|
+
title,
|
|
16738
|
+
subtitle,
|
|
16739
|
+
detailContent,
|
|
16740
|
+
imgSrc,
|
|
16741
|
+
imageFit = "contain",
|
|
16742
|
+
type = "card",
|
|
16743
|
+
bordered = false,
|
|
16744
|
+
disabled: isDisabled = false,
|
|
16745
|
+
buttonMenuItems,
|
|
16746
|
+
tag
|
|
16747
|
+
} = props;
|
|
16748
|
+
const tid = useTestIds(props, "card");
|
|
16749
|
+
const { hoverProps, isHovered } = useHover16({ isDisabled });
|
|
16750
|
+
const isList = type === "list";
|
|
16751
|
+
const imgHeight = isList ? 96 : bordered ? 224 : 256;
|
|
16752
|
+
const styles = useMemo36(
|
|
16753
|
+
() => ({
|
|
16754
|
+
...baseStyles4(type),
|
|
16755
|
+
...isList && listStyles,
|
|
16756
|
+
...bordered && borderedStyles,
|
|
16757
|
+
...isHovered && cardHoverStyles,
|
|
16758
|
+
...isDisabled && disabledStyles3
|
|
16759
|
+
}),
|
|
16760
|
+
[isDisabled, isHovered, bordered, type, isList]
|
|
16761
|
+
);
|
|
16762
|
+
return /* @__PURE__ */ jsxs72("div", { css: styles, ...hoverProps, ...tid, children: [
|
|
16763
|
+
/* @__PURE__ */ jsx149(
|
|
16764
|
+
"div",
|
|
16765
|
+
{
|
|
16766
|
+
css: {
|
|
16767
|
+
...Css.hPx(imgHeight).ba.br8.bcGray300.oh.df.asc.jsc.relative.add("filter", "brightness(1)").$,
|
|
16768
|
+
...isHovered && !isList && imageHoverStyles
|
|
16648
16769
|
},
|
|
16649
|
-
|
|
16650
|
-
...this.testId(tid)
|
|
16770
|
+
children: /* @__PURE__ */ jsx149("img", { css: Css.w100.h100.objectFit(imageFit).$, src: imgSrc, alt: title, ...tid.img })
|
|
16651
16771
|
}
|
|
16652
|
-
)
|
|
16653
|
-
|
|
16654
|
-
|
|
16655
|
-
|
|
16656
|
-
// src/components/Filters/BooleanFilter.tsx
|
|
16657
|
-
import { jsx as jsx143 } from "@emotion/react/jsx-runtime";
|
|
16658
|
-
function booleanFilter(props) {
|
|
16659
|
-
return (key) => new BooleanFilter(key, props);
|
|
16660
|
-
}
|
|
16661
|
-
var BooleanFilter = class extends BaseFilter {
|
|
16662
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16663
|
-
const { options = defaultBooleanOptions, label, defaultValue, ...props } = this.props;
|
|
16664
|
-
return /* @__PURE__ */ jsx143(
|
|
16665
|
-
SelectField,
|
|
16772
|
+
),
|
|
16773
|
+
isHovered && buttonMenuItems && /* @__PURE__ */ jsx149("div", { css: Css.absolute.right1.top1.if(bordered && !isList).right3.top3.$, children: /* @__PURE__ */ jsx149(
|
|
16774
|
+
ButtonMenu,
|
|
16666
16775
|
{
|
|
16667
|
-
|
|
16668
|
-
|
|
16669
|
-
label: this.label,
|
|
16670
|
-
value: String(value),
|
|
16671
|
-
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16672
|
-
sizeToContent: !inModal && !vertical,
|
|
16673
|
-
options,
|
|
16674
|
-
getOptionValue: (o) => String(o[0]),
|
|
16675
|
-
getOptionLabel: (o) => o[1],
|
|
16676
|
-
onSelect: (value2) => {
|
|
16677
|
-
const parsedValue = value2 === "undefined" ? void 0 : value2 === "true";
|
|
16678
|
-
setValue(parsedValue);
|
|
16679
|
-
},
|
|
16680
|
-
...this.testId(tid)
|
|
16776
|
+
trigger: { icon: "verticalDots", color: isList ? "rgba(100, 100, 100, 1)" /* Gray700 */ : "rgba(255,255,255,1)" /* White */ },
|
|
16777
|
+
items: buttonMenuItems
|
|
16681
16778
|
}
|
|
16682
|
-
)
|
|
16683
|
-
|
|
16684
|
-
|
|
16685
|
-
|
|
16686
|
-
|
|
16687
|
-
|
|
16688
|
-
|
|
16689
|
-
|
|
16779
|
+
) }),
|
|
16780
|
+
tag && /* @__PURE__ */ jsx149("div", { css: Css.absolute.left1.topPx(4).$, children: /* @__PURE__ */ jsx149(Tag, { type: tag?.type, text: tag?.text, ...tid.tag }) }),
|
|
16781
|
+
/* @__PURE__ */ jsxs72("div", { css: Css.df.fdc.aifs.gap1.$, children: [
|
|
16782
|
+
/* @__PURE__ */ jsxs72("div", { children: [
|
|
16783
|
+
/* @__PURE__ */ jsx149("div", { css: Css.xsMd.gray700.$, ...tid.subtitle, children: subtitle }),
|
|
16784
|
+
/* @__PURE__ */ jsx149("div", { css: Css.smMd.gray900.if(isHovered).blue700.$, ...tid.title, children: title })
|
|
16785
|
+
] }),
|
|
16786
|
+
/* @__PURE__ */ jsx149("div", { ...tid.details, children: detailContent })
|
|
16787
|
+
] })
|
|
16788
|
+
] });
|
|
16789
|
+
}
|
|
16790
|
+
var width = { card: 256, list: 520 };
|
|
16791
|
+
var baseStyles4 = (type) => Css.wPx(width[type]).bgWhite.df.fdc.gap1.relative.$;
|
|
16792
|
+
var listStyles = Css.df.fdr.gap2.$;
|
|
16793
|
+
var borderedStyles = Css.ba.br8.bcGray300.p2.$;
|
|
16794
|
+
var disabledStyles3 = Css.add("opacity", 0.5).add("transition", "opacity 0.3s ease").$;
|
|
16795
|
+
var cardHoverStyles = Css.bcGray400.cursorPointer.$;
|
|
16796
|
+
var imageHoverStyles = Css.bgWhite.add("filter", "brightness(0.3)").add("transition", "filter 0.3s ease").$;
|
|
16690
16797
|
|
|
16691
|
-
// src/components/
|
|
16692
|
-
import { jsx as
|
|
16693
|
-
function
|
|
16694
|
-
return
|
|
16695
|
-
|
|
16696
|
-
|
|
16697
|
-
|
|
16698
|
-
|
|
16798
|
+
// src/components/Copy.tsx
|
|
16799
|
+
import { jsx as jsx150 } from "@emotion/react/jsx-runtime";
|
|
16800
|
+
function Copy(props) {
|
|
16801
|
+
return /* @__PURE__ */ jsx150(
|
|
16802
|
+
"div",
|
|
16803
|
+
{
|
|
16804
|
+
css: {
|
|
16805
|
+
...Css.sm.gray700.mt2.mb3.wPx(480).$,
|
|
16806
|
+
"& > p": Css.my2.$
|
|
16807
|
+
},
|
|
16808
|
+
children: props.children
|
|
16809
|
+
}
|
|
16810
|
+
);
|
|
16699
16811
|
}
|
|
16700
|
-
var CheckboxFilter = class extends BaseFilter {
|
|
16701
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16702
|
-
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
16703
|
-
return /* @__PURE__ */ jsx144(
|
|
16704
|
-
Checkbox,
|
|
16705
|
-
{
|
|
16706
|
-
...props,
|
|
16707
|
-
selected: value === void 0 ? false : value === onValue,
|
|
16708
|
-
label: this.label,
|
|
16709
|
-
onChange: (on) => {
|
|
16710
|
-
setValue(on ? onValue : offValue);
|
|
16711
|
-
},
|
|
16712
|
-
...this.testId(tid)
|
|
16713
|
-
}
|
|
16714
|
-
);
|
|
16715
|
-
}
|
|
16716
|
-
get hideLabelInModal() {
|
|
16717
|
-
return true;
|
|
16718
|
-
}
|
|
16719
|
-
};
|
|
16720
16812
|
|
|
16721
|
-
// src/components/
|
|
16722
|
-
import
|
|
16813
|
+
// src/components/DnDGrid/DnDGrid.tsx
|
|
16814
|
+
import equal2 from "fast-deep-equal";
|
|
16815
|
+
import { useCallback as useCallback20, useRef as useRef48 } from "react";
|
|
16723
16816
|
|
|
16724
|
-
// src/components/
|
|
16725
|
-
import {
|
|
16726
|
-
|
|
16727
|
-
|
|
16728
|
-
|
|
16729
|
-
const { size, children, keepOpen } = props;
|
|
16730
|
-
useEffect25(() => {
|
|
16731
|
-
if (!keepOpen) {
|
|
16732
|
-
openModal({ size, content: children });
|
|
16733
|
-
}
|
|
16734
|
-
}, [keepOpen, openModal, size, children]);
|
|
16735
|
-
if (keepOpen) {
|
|
16736
|
-
return /* @__PURE__ */ jsx145(Modal, { size, content: children });
|
|
16737
|
-
} else {
|
|
16738
|
-
return /* @__PURE__ */ jsx145("div", { children: "dummy content" });
|
|
16817
|
+
// src/components/DnDGrid/DnDGridContext.tsx
|
|
16818
|
+
import { createContext as createContext7, useContext as useContext16 } from "react";
|
|
16819
|
+
var DnDGridContext = createContext7({
|
|
16820
|
+
dragEl: { current: void 0 },
|
|
16821
|
+
onDragHandleKeyDown: () => {
|
|
16739
16822
|
}
|
|
16823
|
+
});
|
|
16824
|
+
function useDnDGridContext() {
|
|
16825
|
+
return useContext16(DnDGridContext);
|
|
16740
16826
|
}
|
|
16741
16827
|
|
|
16742
|
-
// src/components/
|
|
16743
|
-
import {
|
|
16744
|
-
function
|
|
16745
|
-
const {
|
|
16746
|
-
const
|
|
16747
|
-
const
|
|
16748
|
-
const
|
|
16749
|
-
|
|
16750
|
-
|
|
16751
|
-
|
|
16752
|
-
|
|
16753
|
-
|
|
16754
|
-
|
|
16755
|
-
|
|
16756
|
-
|
|
16757
|
-
)
|
|
16758
|
-
|
|
16759
|
-
|
|
16760
|
-
|
|
16761
|
-
|
|
16762
|
-
|
|
16763
|
-
|
|
16764
|
-
|
|
16765
|
-
|
|
16766
|
-
|
|
16767
|
-
|
|
16768
|
-
|
|
16769
|
-
|
|
16828
|
+
// src/components/DnDGrid/DnDGrid.tsx
|
|
16829
|
+
import { jsx as jsx151 } from "@emotion/react/jsx-runtime";
|
|
16830
|
+
function DnDGrid(props) {
|
|
16831
|
+
const { children, gridStyles, onReorder, activeItemStyles } = props;
|
|
16832
|
+
const gridEl = useRef48(null);
|
|
16833
|
+
const dragEl = useRef48();
|
|
16834
|
+
const cloneEl = useRef48();
|
|
16835
|
+
const initialOrder = useRef48();
|
|
16836
|
+
const reorderViaKeyboard = useRef48(false);
|
|
16837
|
+
const transformFrom = useRef48({ x: 0, y: 0 });
|
|
16838
|
+
const tid = useTestIds(props, "dndGrid");
|
|
16839
|
+
const getGridItems = useCallback20(() => {
|
|
16840
|
+
return gridEl.current ? Array.from(gridEl.current.querySelectorAll(`[${gridItemIdKey}]`)) : [];
|
|
16841
|
+
}, []);
|
|
16842
|
+
const getGridItemIdOrder = useCallback20(() => {
|
|
16843
|
+
return getGridItems().map((child) => child.getAttribute(gridItemIdKey)).filter(isDefined);
|
|
16844
|
+
}, [getGridItems]);
|
|
16845
|
+
const initReorder = useCallback20(() => {
|
|
16846
|
+
if (gridEl.current && dragEl.current) {
|
|
16847
|
+
initialOrder.current = getGridItemIdOrder();
|
|
16848
|
+
dragEl.current.classList.add(activeGridItemClass);
|
|
16849
|
+
}
|
|
16850
|
+
}, [getGridItemIdOrder]);
|
|
16851
|
+
const commitReorder = useCallback20(() => {
|
|
16852
|
+
if (gridEl.current && dragEl.current) {
|
|
16853
|
+
const currentOrder = getGridItemIdOrder();
|
|
16854
|
+
if (!equal2(currentOrder, initialOrder.current)) onReorder(currentOrder);
|
|
16855
|
+
dragEl.current.classList.remove(activeGridItemClass);
|
|
16856
|
+
dragEl.current = void 0;
|
|
16857
|
+
reorderViaKeyboard.current = false;
|
|
16858
|
+
initialOrder.current = currentOrder;
|
|
16859
|
+
}
|
|
16860
|
+
}, [onReorder, getGridItemIdOrder]);
|
|
16861
|
+
const cancelReorder = useCallback20(() => {
|
|
16862
|
+
if (gridEl.current && dragEl.current && initialOrder.current) {
|
|
16863
|
+
const currentOrder = getGridItemIdOrder();
|
|
16864
|
+
if (!equal2(currentOrder, initialOrder.current)) {
|
|
16865
|
+
const initialIndex = initialOrder.current.indexOf(dragEl.current.getAttribute(gridItemIdKey) ?? "");
|
|
16866
|
+
if (initialIndex === initialOrder.current.length - 1) {
|
|
16867
|
+
const gridItems = getGridItems();
|
|
16868
|
+
const lastGridItem = gridItems[gridItems.length - 1];
|
|
16869
|
+
gridEl.current.insertBefore(dragEl.current, lastGridItem.nextSibling);
|
|
16870
|
+
} else {
|
|
16871
|
+
const nextSiblingIndex = initialOrder.current[initialIndex + 1];
|
|
16872
|
+
const nextSibling = gridEl.current.querySelector(`[${gridItemIdKey}="${nextSiblingIndex}"]`);
|
|
16873
|
+
if (nextSibling) {
|
|
16874
|
+
gridEl.current.insertBefore(dragEl.current, nextSibling);
|
|
16875
|
+
}
|
|
16876
|
+
}
|
|
16877
|
+
}
|
|
16878
|
+
dragEl.current.classList.remove(activeGridItemClass);
|
|
16879
|
+
dragEl.current = void 0;
|
|
16880
|
+
reorderViaKeyboard.current = false;
|
|
16881
|
+
}
|
|
16882
|
+
}, [getGridItemIdOrder, getGridItems]);
|
|
16883
|
+
const onMove = useCallback20((e) => {
|
|
16884
|
+
if (!reorderViaKeyboard.current && dragEl.current && cloneEl.current && gridEl.current) {
|
|
16885
|
+
const clientX = "clientX" in e ? e.clientX : e.touches[0].clientX;
|
|
16886
|
+
const clientY = "clientY" in e ? e.clientY : e.touches[0].clientY;
|
|
16887
|
+
const left = dragEl.current.style.left ? parseInt(dragEl.current.style.left) : 0;
|
|
16888
|
+
const top = dragEl.current.style.top ? parseInt(dragEl.current.style.top) : 0;
|
|
16889
|
+
const x = clientX - transformFrom.current.x - left;
|
|
16890
|
+
const y = clientY - transformFrom.current.y - top;
|
|
16891
|
+
dragEl.current.style.transform = `translate(${x}px, ${y}px)`;
|
|
16892
|
+
const maybeTarget = "touches" in e ? document.elementFromPoint(clientX, clientY) : e.target;
|
|
16893
|
+
const target = maybeTarget instanceof HTMLElement ? maybeTarget?.closest(`[${gridItemIdKey}]`) : void 0;
|
|
16894
|
+
if (target instanceof HTMLElement && target !== cloneEl.current && target !== dragEl.current) {
|
|
16895
|
+
const targetPos = target.getBoundingClientRect();
|
|
16896
|
+
const isHalfwayPassedTarget = (clientY - targetPos.top) / (targetPos.bottom - targetPos.top) > 0.5 || (clientX - targetPos.left) / (targetPos.right - targetPos.left) > 0.5;
|
|
16897
|
+
const shouldInsert = isHalfwayPassedTarget && target.nextSibling !== cloneEl.current || !isHalfwayPassedTarget && target.previousSibling !== cloneEl.current;
|
|
16898
|
+
if (shouldInsert) {
|
|
16899
|
+
gridEl.current.insertBefore(cloneEl.current, isHalfwayPassedTarget ? target.nextSibling : target);
|
|
16900
|
+
}
|
|
16901
|
+
}
|
|
16902
|
+
}
|
|
16903
|
+
}, []);
|
|
16904
|
+
const onDragStart = useCallback20(
|
|
16905
|
+
(e) => {
|
|
16906
|
+
if (!reorderViaKeyboard.current && dragEl.current && gridEl.current) {
|
|
16907
|
+
initReorder();
|
|
16908
|
+
const gridRect = gridEl.current.getBoundingClientRect();
|
|
16909
|
+
const rect = dragEl.current.getBoundingClientRect();
|
|
16910
|
+
const clientX = "clientX" in e ? e.clientX : e.touches[0].clientX;
|
|
16911
|
+
const clientY = "clientY" in e ? e.clientY : e.touches[0].clientY;
|
|
16912
|
+
const top = rect.top - gridRect.top;
|
|
16913
|
+
const left = rect.left - gridRect.left;
|
|
16914
|
+
transformFrom.current = { x: clientX - left, y: clientY - top };
|
|
16915
|
+
cloneEl.current = dragEl.current.cloneNode();
|
|
16916
|
+
cloneEl.current?.setAttribute(
|
|
16917
|
+
"style",
|
|
16918
|
+
`border-width: 2px; border-color: ${"rgba(201, 201, 201, 1)" /* Gray400 */}; border-style: dashed; width:${rect.width}px; height:${rect.height}px;`
|
|
16919
|
+
);
|
|
16920
|
+
cloneEl.current?.setAttribute(gridCloneKey, "true");
|
|
16921
|
+
cloneEl.current.removeAttribute("id");
|
|
16922
|
+
cloneEl.current?.classList.remove(activeGridItemClass);
|
|
16923
|
+
gridEl.current.insertBefore(cloneEl.current, dragEl.current.nextSibling);
|
|
16924
|
+
dragEl.current.setAttribute(
|
|
16925
|
+
"style",
|
|
16926
|
+
`pointer-events: none; position:fixed; z-index: 9999; top:${top}px; left:${left}px; width:${rect.width}px; height:${rect.height}px;`
|
|
16927
|
+
);
|
|
16928
|
+
gridEl.current.style.cursor = "grabbing";
|
|
16929
|
+
gridEl.current.addEventListener("mousemove", onMove);
|
|
16930
|
+
gridEl.current.addEventListener("touchmove", onMove);
|
|
16931
|
+
}
|
|
16932
|
+
},
|
|
16933
|
+
[initReorder, onMove]
|
|
16934
|
+
);
|
|
16935
|
+
const onDragEnd = useCallback20(
|
|
16936
|
+
(e) => {
|
|
16937
|
+
if (!reorderViaKeyboard.current && dragEl.current && cloneEl.current && gridEl.current) {
|
|
16938
|
+
e.preventDefault();
|
|
16939
|
+
cloneEl.current.replaceWith(dragEl.current);
|
|
16940
|
+
gridEl.current.querySelectorAll(`[${gridCloneKey}]`).forEach((el) => el.remove());
|
|
16941
|
+
dragEl.current.removeAttribute("style");
|
|
16942
|
+
gridEl.current.style.cursor = "auto";
|
|
16943
|
+
cloneEl.current = void 0;
|
|
16944
|
+
commitReorder();
|
|
16945
|
+
gridEl.current.removeEventListener("mousemove", onMove);
|
|
16946
|
+
gridEl.current.removeEventListener("touchmove", onMove);
|
|
16947
|
+
}
|
|
16948
|
+
},
|
|
16949
|
+
[commitReorder, onMove]
|
|
16950
|
+
);
|
|
16951
|
+
const onDragHandleKeyDown = useCallback20(
|
|
16952
|
+
(e) => {
|
|
16953
|
+
const moveHandle = e.target;
|
|
16954
|
+
if (dragEl.current instanceof HTMLElement && moveHandle instanceof HTMLElement && gridEl.current) {
|
|
16955
|
+
const isSpaceKey = e.key === " ";
|
|
16956
|
+
if (isSpaceKey && !reorderViaKeyboard.current) {
|
|
16957
|
+
e.preventDefault();
|
|
16958
|
+
reorderViaKeyboard.current = true;
|
|
16959
|
+
document.addEventListener("pointerdown", cancelReorder);
|
|
16960
|
+
initReorder();
|
|
16961
|
+
return;
|
|
16770
16962
|
}
|
|
16771
|
-
|
|
16772
|
-
|
|
16773
|
-
|
|
16774
|
-
|
|
16775
|
-
|
|
16776
|
-
|
|
16777
|
-
|
|
16778
|
-
|
|
16779
|
-
onApply(modalFilter);
|
|
16780
|
-
closeModal();
|
|
16781
|
-
},
|
|
16782
|
-
...testId.modalApply
|
|
16963
|
+
if (!reorderViaKeyboard.current) {
|
|
16964
|
+
return;
|
|
16965
|
+
}
|
|
16966
|
+
const isEnterKey = e.key === "Enter";
|
|
16967
|
+
const isTabKey = e.key === "Tab";
|
|
16968
|
+
if (isEnterKey || isSpaceKey || isTabKey) {
|
|
16969
|
+
if (!isTabKey) {
|
|
16970
|
+
e.preventDefault();
|
|
16783
16971
|
}
|
|
16784
|
-
|
|
16785
|
-
|
|
16786
|
-
|
|
16787
|
-
|
|
16788
|
-
|
|
16789
|
-
|
|
16790
|
-
|
|
16791
|
-
|
|
16792
|
-
|
|
16793
|
-
|
|
16794
|
-
|
|
16795
|
-
|
|
16796
|
-
|
|
16797
|
-
|
|
16798
|
-
|
|
16799
|
-
|
|
16800
|
-
|
|
16801
|
-
|
|
16802
|
-
|
|
16803
|
-
|
|
16804
|
-
|
|
16805
|
-
|
|
16806
|
-
|
|
16807
|
-
|
|
16808
|
-
|
|
16809
|
-
|
|
16810
|
-
|
|
16811
|
-
|
|
16812
|
-
|
|
16813
|
-
|
|
16814
|
-
|
|
16815
|
-
|
|
16972
|
+
commitReorder();
|
|
16973
|
+
if (isEnterKey) {
|
|
16974
|
+
moveHandle.blur();
|
|
16975
|
+
}
|
|
16976
|
+
document.removeEventListener("pointerdown", cancelReorder);
|
|
16977
|
+
return;
|
|
16978
|
+
}
|
|
16979
|
+
if (e.key === "Escape") {
|
|
16980
|
+
e.preventDefault();
|
|
16981
|
+
cancelReorder();
|
|
16982
|
+
document.removeEventListener("pointerdown", cancelReorder);
|
|
16983
|
+
return;
|
|
16984
|
+
}
|
|
16985
|
+
const movingLeft = ["ArrowLeft", "ArrowUp"].includes(e.key);
|
|
16986
|
+
const movingRight = ["ArrowRight", "ArrowDown"].includes(e.key);
|
|
16987
|
+
if (movingLeft || movingRight) {
|
|
16988
|
+
e.preventDefault();
|
|
16989
|
+
const gridItems = getGridItems();
|
|
16990
|
+
const currentIndex = gridItems.map((child) => child.getAttribute(gridItemIdKey)).filter(isDefined).indexOf(dragEl.current.getAttribute(gridItemIdKey));
|
|
16991
|
+
const newIndex = movingLeft ? currentIndex - 1 : currentIndex + 2;
|
|
16992
|
+
const insertBeforeElement = gridItems[newIndex] ?? gridItems[gridItems.length - 1].nextSibling;
|
|
16993
|
+
if (movingLeft && currentIndex > 0 || movingRight && currentIndex < gridItems.length - 1) {
|
|
16994
|
+
gridEl.current.insertBefore(dragEl.current, insertBeforeElement);
|
|
16995
|
+
}
|
|
16996
|
+
moveHandle.focus();
|
|
16997
|
+
}
|
|
16998
|
+
}
|
|
16999
|
+
},
|
|
17000
|
+
[cancelReorder, commitReorder, initReorder, getGridItems]
|
|
17001
|
+
);
|
|
17002
|
+
return /* @__PURE__ */ jsx151(DnDGridContext.Provider, { value: { dragEl, onDragHandleKeyDown }, children: /* @__PURE__ */ jsx151(
|
|
17003
|
+
"div",
|
|
16816
17004
|
{
|
|
16817
|
-
|
|
16818
|
-
|
|
16819
|
-
|
|
16820
|
-
|
|
16821
|
-
|
|
16822
|
-
|
|
16823
|
-
|
|
16824
|
-
|
|
16825
|
-
|
|
17005
|
+
ref: gridEl,
|
|
17006
|
+
css: {
|
|
17007
|
+
...Css.ctis.dg.addIn(`& .${activeGridItemClass}`, activeItemStyles ?? Css.bshModal.$).$,
|
|
17008
|
+
...gridStyles
|
|
17009
|
+
},
|
|
17010
|
+
onTouchStart: onDragStart,
|
|
17011
|
+
onMouseDown: onDragStart,
|
|
17012
|
+
onTouchEnd: onDragEnd,
|
|
17013
|
+
onMouseUp: onDragEnd,
|
|
17014
|
+
...tid,
|
|
17015
|
+
children
|
|
16826
17016
|
}
|
|
16827
|
-
) })
|
|
16828
|
-
|
|
16829
|
-
|
|
17017
|
+
) });
|
|
17018
|
+
}
|
|
17019
|
+
var gridItemIdKey = "dndgrid-itemid";
|
|
17020
|
+
var gridCloneKey = "dndgrid-clone";
|
|
17021
|
+
var activeGridItemClass = "dndgrid-active";
|
|
17022
|
+
|
|
17023
|
+
// src/components/DnDGrid/DnDGridItemHandle.tsx
|
|
17024
|
+
import { mergeProps as mergeProps12, useFocusRing as useFocusRing13, useHover as useHover17 } from "react-aria";
|
|
17025
|
+
import { jsx as jsx152 } from "@emotion/react/jsx-runtime";
|
|
17026
|
+
function DnDGridItemHandle(props) {
|
|
17027
|
+
const { dragHandleProps, icon = "move", compact = false, color } = props;
|
|
17028
|
+
const { focusProps, isFocusVisible } = useFocusRing13();
|
|
17029
|
+
const { hoverProps, isHovered } = useHover17({});
|
|
17030
|
+
const tid = useTestIds(props, "dragHandle");
|
|
17031
|
+
const iconButtonNormal2 = Css.hPx(28).wPx(28).br8.bw2.$;
|
|
17032
|
+
const iconButtonCompact2 = Css.hPx(18).wPx(18).br4.bw1.$;
|
|
17033
|
+
return /* @__PURE__ */ jsx152(
|
|
17034
|
+
"button",
|
|
16830
17035
|
{
|
|
16831
17036
|
css: {
|
|
16832
|
-
...
|
|
17037
|
+
...compact ? iconButtonCompact2 : iconButtonNormal2,
|
|
17038
|
+
...Css.cursor("grab").bcTransparent.bss.bgTransparent.outline0.dif.aic.jcc.transition.if(isFocusVisible).bcBlue700.$,
|
|
17039
|
+
...isHovered && Css.bgGray200.$
|
|
16833
17040
|
},
|
|
16834
|
-
...
|
|
16835
|
-
|
|
16836
|
-
|
|
16837
|
-
safeEntries(pageFilters).map(([key, f]) => /* @__PURE__ */ jsx147("div", { children: f.render(filter[key], (value) => onChange(updateFilter(filter, key, value)), testId, false, vertical) }, key)),
|
|
16838
|
-
Object.keys(modalFilters).length > 0 && /* @__PURE__ */ jsx147(
|
|
16839
|
-
Button,
|
|
16840
|
-
{
|
|
16841
|
-
label: "More Filters",
|
|
16842
|
-
endAdornment: numModalFilters > 0 && /* @__PURE__ */ jsx147("span", { css: Css.wPx(16).hPx(16).fs0.br100.bgBlue700.white.tinySb.df.aic.jcc.$, children: numModalFilters }),
|
|
16843
|
-
variant: "secondary",
|
|
16844
|
-
onClick: () => openModal({
|
|
16845
|
-
// Spreading `props` to pass along `data-testid`
|
|
16846
|
-
content: /* @__PURE__ */ jsx147(FilterModal, { ...props, filter, onApply: onChange, filters: modalFilters })
|
|
16847
|
-
}),
|
|
16848
|
-
...testId.moreFiltersBtn
|
|
16849
|
-
}
|
|
16850
|
-
),
|
|
16851
|
-
Object.keys(filter).length > 0 && /* @__PURE__ */ jsx147("div", { children: /* @__PURE__ */ jsx147(Button, { label: "Clear", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn }) })
|
|
16852
|
-
]
|
|
17041
|
+
...mergeProps12(dragHandleProps, focusProps, hoverProps),
|
|
17042
|
+
...tid,
|
|
17043
|
+
children: /* @__PURE__ */ jsx152(Icon, { icon, inc: compact ? 2 : void 0, color })
|
|
16853
17044
|
}
|
|
16854
17045
|
);
|
|
16855
17046
|
}
|
|
16856
|
-
var _Filters = memo(Filters);
|
|
16857
17047
|
|
|
16858
|
-
// src/components/
|
|
16859
|
-
import {
|
|
16860
|
-
function
|
|
16861
|
-
|
|
16862
|
-
|
|
16863
|
-
|
|
16864
|
-
|
|
16865
|
-
|
|
16866
|
-
|
|
16867
|
-
|
|
16868
|
-
|
|
16869
|
-
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
16870
|
-
return /* @__PURE__ */ jsx148(
|
|
16871
|
-
Switch,
|
|
16872
|
-
{
|
|
16873
|
-
...props,
|
|
16874
|
-
selected: value === void 0 ? false : value === onValue,
|
|
16875
|
-
label: this.label,
|
|
16876
|
-
labelStyle: inModal || vertical ? "filter" : "inline",
|
|
16877
|
-
onChange: (on) => {
|
|
16878
|
-
setValue(on ? onValue : offValue);
|
|
16879
|
-
},
|
|
16880
|
-
...this.testId(tid)
|
|
17048
|
+
// src/components/DnDGrid/useDnDGridItem.tsx
|
|
17049
|
+
import { useMemo as useMemo37 } from "react";
|
|
17050
|
+
function useDnDGridItem(props) {
|
|
17051
|
+
const { id, itemRef } = props;
|
|
17052
|
+
const { dragEl, onDragHandleKeyDown } = useDnDGridContext();
|
|
17053
|
+
const { dragItemProps, dragHandleProps } = useMemo37(
|
|
17054
|
+
() => {
|
|
17055
|
+
function initDraggable() {
|
|
17056
|
+
if (itemRef.current) {
|
|
17057
|
+
dragEl.current = itemRef.current;
|
|
17058
|
+
}
|
|
16881
17059
|
}
|
|
16882
|
-
|
|
16883
|
-
|
|
16884
|
-
|
|
16885
|
-
|
|
16886
|
-
|
|
16887
|
-
|
|
16888
|
-
|
|
16889
|
-
|
|
16890
|
-
|
|
16891
|
-
|
|
16892
|
-
|
|
16893
|
-
|
|
16894
|
-
|
|
16895
|
-
|
|
17060
|
+
return {
|
|
17061
|
+
dragItemProps: { [gridItemIdKey]: id },
|
|
17062
|
+
dragHandleProps: {
|
|
17063
|
+
onMouseDown: initDraggable,
|
|
17064
|
+
onTouchStart: initDraggable,
|
|
17065
|
+
onKeyDown: (e) => {
|
|
17066
|
+
initDraggable();
|
|
17067
|
+
onDragHandleKeyDown(e);
|
|
17068
|
+
}
|
|
17069
|
+
}
|
|
17070
|
+
};
|
|
17071
|
+
},
|
|
17072
|
+
// 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
|
|
17073
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17074
|
+
[dragEl, id, itemRef]
|
|
17075
|
+
);
|
|
17076
|
+
return { dragHandleProps, dragItemProps };
|
|
16896
17077
|
}
|
|
16897
|
-
var filterTestIdPrefix = "filter";
|
|
16898
17078
|
|
|
16899
17079
|
// src/components/Grid/ResponsiveGrid.tsx
|
|
16900
|
-
import { jsx as
|
|
17080
|
+
import { jsx as jsx153 } from "@emotion/react/jsx-runtime";
|
|
16901
17081
|
function ResponsiveGrid(props) {
|
|
16902
17082
|
const { children, ...hookProps } = props;
|
|
16903
17083
|
const { gridStyles } = useResponsiveGrid(hookProps);
|
|
16904
|
-
return /* @__PURE__ */
|
|
17084
|
+
return /* @__PURE__ */ jsx153("div", { css: { ...gridStyles }, children });
|
|
16905
17085
|
}
|
|
16906
17086
|
|
|
16907
17087
|
// src/components/Grid/ResponsiveGridItem.tsx
|
|
16908
|
-
import { jsx as
|
|
17088
|
+
import { jsx as jsx154 } from "@emotion/react/jsx-runtime";
|
|
16909
17089
|
function ResponsiveGridItem(props) {
|
|
16910
17090
|
const { colSpan, children } = props;
|
|
16911
17091
|
const { gridItemProps } = useResponsiveGridItem({ colSpan });
|
|
16912
|
-
return /* @__PURE__ */
|
|
17092
|
+
return /* @__PURE__ */ jsx154("div", { ...gridItemProps, children });
|
|
16913
17093
|
}
|
|
16914
17094
|
|
|
16915
17095
|
// src/components/Grid/useResponsiveGrid.ts
|
|
16916
|
-
import { useMemo as
|
|
17096
|
+
import { useMemo as useMemo38 } from "react";
|
|
16917
17097
|
|
|
16918
17098
|
// src/components/Grid/utils.ts
|
|
16919
17099
|
var gridItemDataAttribute = "data-grid-item-span";
|
|
@@ -16921,7 +17101,7 @@ var gridItemDataAttribute = "data-grid-item-span";
|
|
|
16921
17101
|
// src/components/Grid/useResponsiveGrid.ts
|
|
16922
17102
|
function useResponsiveGrid(props) {
|
|
16923
17103
|
const { minColumnWidth, gap, columns } = props;
|
|
16924
|
-
const gridStyles =
|
|
17104
|
+
const gridStyles = useMemo38(() => {
|
|
16925
17105
|
const gapCount = columns - 1;
|
|
16926
17106
|
const totalGapWidth = gap * gapCount;
|
|
16927
17107
|
const maxColumnWidth = `calc((100% - ${totalGapWidth}px) / ${columns})`;
|
|
@@ -16962,24 +17142,24 @@ function useResponsiveGridItem({ colSpan = 1 }) {
|
|
|
16962
17142
|
}
|
|
16963
17143
|
|
|
16964
17144
|
// src/components/HbLoadingSpinner.tsx
|
|
16965
|
-
import
|
|
17145
|
+
import React20, { useContext as useContext17, useMemo as useMemo39 } from "react";
|
|
16966
17146
|
|
|
16967
17147
|
// src/components/HbLoadingSpinner.base64.ts
|
|
16968
17148
|
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";
|
|
16969
17149
|
|
|
16970
17150
|
// src/components/HbLoadingSpinner.tsx
|
|
16971
|
-
import { jsx as
|
|
17151
|
+
import { jsx as jsx155, jsxs as jsxs73 } from "@emotion/react/jsx-runtime";
|
|
16972
17152
|
function HbLoadingSpinner({ noQuips, extraQuips = [], extraQuipsOnly, iconOnly }) {
|
|
16973
17153
|
const ctx = useContext17(HbLoadingSpinnerContext);
|
|
16974
17154
|
const tid = useTestIds({}, "hbSpinner");
|
|
16975
|
-
const quip =
|
|
17155
|
+
const quip = useMemo39(() => {
|
|
16976
17156
|
const allQuips = extraQuipsOnly && extraQuips.length !== 0 ? extraQuips : [...ctx.quips, ...extraQuips];
|
|
16977
17157
|
const forceQuips = extraQuips.length !== 0 || noQuips === false;
|
|
16978
17158
|
if (ctx.noQuips && !forceQuips || noQuips || allQuips.length === 0) return "Loading...";
|
|
16979
17159
|
return allQuips[Math.floor(Math.random() * allQuips.length)];
|
|
16980
17160
|
}, [ctx.noQuips, ctx.quips, extraQuips, extraQuipsOnly, noQuips]);
|
|
16981
|
-
return /* @__PURE__ */
|
|
16982
|
-
/* @__PURE__ */
|
|
17161
|
+
return /* @__PURE__ */ jsxs73("div", { css: Css.df.fdc.jcc.aic.$, ...tid, children: [
|
|
17162
|
+
/* @__PURE__ */ jsx155(
|
|
16983
17163
|
"img",
|
|
16984
17164
|
{
|
|
16985
17165
|
src: HbLoadingSpinner_base64_default,
|
|
@@ -16992,7 +17172,7 @@ function HbLoadingSpinner({ noQuips, extraQuips = [], extraQuipsOnly, iconOnly }
|
|
|
16992
17172
|
...tid.gif
|
|
16993
17173
|
}
|
|
16994
17174
|
),
|
|
16995
|
-
!iconOnly && /* @__PURE__ */
|
|
17175
|
+
!iconOnly && /* @__PURE__ */ jsx155(
|
|
16996
17176
|
"div",
|
|
16997
17177
|
{
|
|
16998
17178
|
"data-chromatic": "ignore",
|
|
@@ -17012,63 +17192,28 @@ var HB_QUIPS_MISSION = [
|
|
|
17012
17192
|
"In Service of Our Customers"
|
|
17013
17193
|
].map(dotDotDot);
|
|
17014
17194
|
var HB_QUIPS_FLAVOR = ["HOM is HOW", "Scaling Massively", "#LoveIt"].map(dotDotDot);
|
|
17015
|
-
var HbLoadingSpinnerContext =
|
|
17195
|
+
var HbLoadingSpinnerContext = React20.createContext({
|
|
17016
17196
|
quips: ["Loading..."],
|
|
17017
17197
|
noQuips: false
|
|
17018
17198
|
});
|
|
17019
17199
|
function HbSpinnerProvider({ quips = [], children }) {
|
|
17020
|
-
const state =
|
|
17021
|
-
return /* @__PURE__ */
|
|
17022
|
-
}
|
|
17023
|
-
|
|
17024
|
-
// src/components/LoadingSkeleton.tsx
|
|
17025
|
-
import { jsx as jsx152 } from "@emotion/react/jsx-runtime";
|
|
17026
|
-
function LoadingSkeleton({
|
|
17027
|
-
rows = 1,
|
|
17028
|
-
columns = 1,
|
|
17029
|
-
size = "md",
|
|
17030
|
-
randomizeWidths = false,
|
|
17031
|
-
contrast = false
|
|
17032
|
-
}) {
|
|
17033
|
-
const cellArray = [...Array(columns)];
|
|
17034
|
-
const rowArray = [...Array(rows)];
|
|
17035
|
-
const rowHeight = sizeToPixels2[size];
|
|
17036
|
-
const rowCells = (rowNumber) => {
|
|
17037
|
-
const flexGrowForCell = randomizeWidths ? getRandomizedFlexBasisByRowIndex(rowNumber) : 1;
|
|
17038
|
-
return cellArray.map((_, i) => /* @__PURE__ */ jsx152(
|
|
17039
|
-
"div",
|
|
17040
|
-
{
|
|
17041
|
-
css: Css.br4.add("animation", "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite").add("flexGrow", flexGrowForCell).bgGray300.if(contrast).bgGray700.$
|
|
17042
|
-
},
|
|
17043
|
-
`row-${rowNumber}-cell-${i}`
|
|
17044
|
-
));
|
|
17045
|
-
};
|
|
17046
|
-
return /* @__PURE__ */ jsx152("div", { "aria-label": "Loading", children: rowArray.map((_, i) => /* @__PURE__ */ jsx152("div", { css: Css.df.gap1.mb1.hPx(rowHeight).$, children: rowCells(i) }, `row-${i}`)) });
|
|
17047
|
-
}
|
|
17048
|
-
function getRandomizedFlexBasisByRowIndex(rowIndex) {
|
|
17049
|
-
const randomizedFlexBasisValues = [0.65, 0.8, 0.75, 0.9, 0.8, 0.85, 0.8, 0.95];
|
|
17050
|
-
const valueIndex = rowIndex % randomizedFlexBasisValues.length;
|
|
17051
|
-
return randomizedFlexBasisValues[valueIndex];
|
|
17200
|
+
const state = useMemo39(() => ({ quips, noQuips: quips.length === 0 }), [quips]);
|
|
17201
|
+
return /* @__PURE__ */ jsx155(HbLoadingSpinnerContext.Provider, { value: state, children });
|
|
17052
17202
|
}
|
|
17053
|
-
var sizeToPixels2 = {
|
|
17054
|
-
sm: 16,
|
|
17055
|
-
md: 24,
|
|
17056
|
-
lg: 32
|
|
17057
|
-
};
|
|
17058
17203
|
|
|
17059
17204
|
// src/components/MaxLines.tsx
|
|
17060
17205
|
import { useLayoutEffect as useLayoutEffect2, useResizeObserver as useResizeObserver5 } from "@react-aria/utils";
|
|
17061
|
-
import { useCallback as useCallback21, useEffect as
|
|
17062
|
-
import { jsx as
|
|
17206
|
+
import { useCallback as useCallback21, useEffect as useEffect27, useRef as useRef49, useState as useState39 } from "react";
|
|
17207
|
+
import { jsx as jsx156, jsxs as jsxs74 } from "@emotion/react/jsx-runtime";
|
|
17063
17208
|
function MaxLines({ maxLines, children }) {
|
|
17064
17209
|
const elRef = useRef49(null);
|
|
17065
|
-
const [hasMore, setHasMore] =
|
|
17066
|
-
const [expanded, setExpanded] =
|
|
17210
|
+
const [hasMore, setHasMore] = useState39(false);
|
|
17211
|
+
const [expanded, setExpanded] = useState39(false);
|
|
17067
17212
|
useLayoutEffect2(() => {
|
|
17068
17213
|
if (!elRef.current) return;
|
|
17069
17214
|
setHasMore(elRef.current.scrollHeight > elRef.current.clientHeight);
|
|
17070
17215
|
}, []);
|
|
17071
|
-
|
|
17216
|
+
useEffect27(() => {
|
|
17072
17217
|
setExpanded(false);
|
|
17073
17218
|
}, [children]);
|
|
17074
17219
|
const onResize = useCallback21(() => {
|
|
@@ -17076,14 +17221,14 @@ function MaxLines({ maxLines, children }) {
|
|
|
17076
17221
|
!expanded && setHasMore(elRef.current.scrollHeight > elRef.current.clientHeight);
|
|
17077
17222
|
}, [expanded]);
|
|
17078
17223
|
useResizeObserver5({ ref: elRef, onResize });
|
|
17079
|
-
return /* @__PURE__ */
|
|
17080
|
-
/* @__PURE__ */
|
|
17081
|
-
hasMore && /* @__PURE__ */
|
|
17224
|
+
return /* @__PURE__ */ jsxs74("div", { children: [
|
|
17225
|
+
/* @__PURE__ */ jsx156("div", { ref: elRef, css: Css.if(!expanded).lineClamp(maxLines).$, children }),
|
|
17226
|
+
hasMore && /* @__PURE__ */ jsx156("button", { css: Css.db.smMd.$, onClick: () => setExpanded((prev) => !prev), children: expanded ? "Show Less" : "Show More" })
|
|
17082
17227
|
] });
|
|
17083
17228
|
}
|
|
17084
17229
|
|
|
17085
17230
|
// src/components/Pagination.tsx
|
|
17086
|
-
import { jsx as
|
|
17231
|
+
import { jsx as jsx157, jsxs as jsxs75 } from "@emotion/react/jsx-runtime";
|
|
17087
17232
|
var defaultPage = { offset: 0, limit: 100 };
|
|
17088
17233
|
function Pagination(props) {
|
|
17089
17234
|
const { totalCount, pageSizes = [100, 500, 1e3] } = props;
|
|
@@ -17103,9 +17248,9 @@ function Pagination(props) {
|
|
|
17103
17248
|
}
|
|
17104
17249
|
}
|
|
17105
17250
|
const tid = useTestIds(props, "pagination");
|
|
17106
|
-
return /* @__PURE__ */
|
|
17107
|
-
/* @__PURE__ */
|
|
17108
|
-
/* @__PURE__ */
|
|
17251
|
+
return /* @__PURE__ */ jsxs75("div", { css: Css.df.bcGray200.bt.xs.gray500.px2.pt2.$, ...tid, children: [
|
|
17252
|
+
/* @__PURE__ */ jsx157("div", { css: Css.df.mya.mr2.$, ...tid.pageSizeLabel, children: "Page size:" }),
|
|
17253
|
+
/* @__PURE__ */ jsx157("div", { css: Css.wPx(78).$, children: /* @__PURE__ */ jsx157(
|
|
17109
17254
|
SelectField,
|
|
17110
17255
|
{
|
|
17111
17256
|
compact: true,
|
|
@@ -17117,15 +17262,15 @@ function Pagination(props) {
|
|
|
17117
17262
|
...tid.pageSize
|
|
17118
17263
|
}
|
|
17119
17264
|
) }),
|
|
17120
|
-
/* @__PURE__ */
|
|
17121
|
-
/* @__PURE__ */
|
|
17265
|
+
/* @__PURE__ */ jsxs75("div", { css: Css.mla.mya.df.$, children: [
|
|
17266
|
+
/* @__PURE__ */ jsxs75("div", { css: Css.df.mya.mr2.$, ...tid.pageInfoLabel, children: [
|
|
17122
17267
|
first,
|
|
17123
17268
|
" ",
|
|
17124
17269
|
showLast ? `- ${last}` : "",
|
|
17125
17270
|
" of ",
|
|
17126
17271
|
totalCount
|
|
17127
17272
|
] }),
|
|
17128
|
-
/* @__PURE__ */
|
|
17273
|
+
/* @__PURE__ */ jsx157(
|
|
17129
17274
|
IconButton,
|
|
17130
17275
|
{
|
|
17131
17276
|
icon: "chevronLeft",
|
|
@@ -17135,7 +17280,7 @@ function Pagination(props) {
|
|
|
17135
17280
|
...tid.previousIcon
|
|
17136
17281
|
}
|
|
17137
17282
|
),
|
|
17138
|
-
/* @__PURE__ */
|
|
17283
|
+
/* @__PURE__ */ jsx157(
|
|
17139
17284
|
IconButton,
|
|
17140
17285
|
{
|
|
17141
17286
|
icon: "chevronRight",
|
|
@@ -17164,8 +17309,8 @@ function toPageNumberSize(page) {
|
|
|
17164
17309
|
|
|
17165
17310
|
// src/components/ScrollShadows.tsx
|
|
17166
17311
|
import { useResizeObserver as useResizeObserver6 } from "@react-aria/utils";
|
|
17167
|
-
import { useCallback as useCallback22, useMemo as
|
|
17168
|
-
import { jsx as
|
|
17312
|
+
import { useCallback as useCallback22, useMemo as useMemo40, useRef as useRef50, useState as useState40 } from "react";
|
|
17313
|
+
import { jsx as jsx158, jsxs as jsxs76 } from "@emotion/react/jsx-runtime";
|
|
17169
17314
|
function ScrollShadows(props) {
|
|
17170
17315
|
const { children, xss, horizontal = false, bgColor = "rgba(255,255,255,1)" /* White */ } = props;
|
|
17171
17316
|
const { height = "auto", width: width2 = "auto" } = xss ?? {};
|
|
@@ -17173,10 +17318,10 @@ function ScrollShadows(props) {
|
|
|
17173
17318
|
if (!bgColor.includes("rgba")) {
|
|
17174
17319
|
throw new Error("ScrollShadows: bgColor prop must be in the format 'rgba(255, 255, 255, 1)'");
|
|
17175
17320
|
}
|
|
17176
|
-
const [showStartShadow, setShowStartShadow] =
|
|
17177
|
-
const [showEndShadow, setShowEndShadow] =
|
|
17321
|
+
const [showStartShadow, setShowStartShadow] = useState40(false);
|
|
17322
|
+
const [showEndShadow, setShowEndShadow] = useState40(false);
|
|
17178
17323
|
const scrollRef = useRef50(null);
|
|
17179
|
-
const [startShadowStyles, endShadowStyles] =
|
|
17324
|
+
const [startShadowStyles, endShadowStyles] = useMemo40(() => {
|
|
17180
17325
|
const transparentBgColor = bgColor.replace(/,1\)$/, ",0)");
|
|
17181
17326
|
const commonStyles = Css.absolute.z3.add({ pointerEvents: "none" }).$;
|
|
17182
17327
|
const startShadowStyles2 = !horizontal ? Css.top0.left0.right0.hPx(40).$ : Css.left0.top0.bottom0.wPx(25).$;
|
|
@@ -17201,15 +17346,15 @@ function ScrollShadows(props) {
|
|
|
17201
17346
|
);
|
|
17202
17347
|
const onResize = useCallback22(() => scrollRef.current && updateScrollProps(scrollRef.current), [updateScrollProps]);
|
|
17203
17348
|
useResizeObserver6({ ref: scrollRef, onResize });
|
|
17204
|
-
return /* @__PURE__ */
|
|
17349
|
+
return /* @__PURE__ */ jsxs76(
|
|
17205
17350
|
"div",
|
|
17206
17351
|
{
|
|
17207
17352
|
css: Css.relative.oh.h(height).w(width2).df.fd(!horizontal ? "column" : "row").$,
|
|
17208
17353
|
...tid,
|
|
17209
17354
|
children: [
|
|
17210
|
-
/* @__PURE__ */
|
|
17211
|
-
/* @__PURE__ */
|
|
17212
|
-
/* @__PURE__ */
|
|
17355
|
+
/* @__PURE__ */ jsx158("div", { css: { ...startShadowStyles, opacity: showStartShadow ? 1 : 0 }, "data-chromatic": "ignore" }),
|
|
17356
|
+
/* @__PURE__ */ jsx158("div", { css: { ...endShadowStyles, opacity: showEndShadow ? 1 : 0 }, "data-chromatic": "ignore" }),
|
|
17357
|
+
/* @__PURE__ */ jsx158(
|
|
17213
17358
|
"div",
|
|
17214
17359
|
{
|
|
17215
17360
|
css: {
|
|
@@ -17227,7 +17372,7 @@ function ScrollShadows(props) {
|
|
|
17227
17372
|
}
|
|
17228
17373
|
|
|
17229
17374
|
// src/components/Snackbar/useSnackbar.tsx
|
|
17230
|
-
import { useCallback as useCallback23, useEffect as
|
|
17375
|
+
import { useCallback as useCallback23, useEffect as useEffect28 } from "react";
|
|
17231
17376
|
function useSnackbar() {
|
|
17232
17377
|
const { setNotices, setOffset } = useSnackbarContext();
|
|
17233
17378
|
const onClose = useCallback23(
|
|
@@ -17277,7 +17422,7 @@ function useSnackbar() {
|
|
|
17277
17422
|
[onClose, setNotices]
|
|
17278
17423
|
);
|
|
17279
17424
|
const closeNotice = useCallback23((id) => onClose(id), [onClose]);
|
|
17280
|
-
const useSnackbarOffset = ({ bottom }) =>
|
|
17425
|
+
const useSnackbarOffset = ({ bottom }) => useEffect28(() => {
|
|
17281
17426
|
setOffset({ bottom });
|
|
17282
17427
|
return () => setOffset({});
|
|
17283
17428
|
}, [bottom]);
|
|
@@ -17288,7 +17433,7 @@ var snackbarId = 1;
|
|
|
17288
17433
|
// src/components/Stepper.tsx
|
|
17289
17434
|
import { useRef as useRef51 } from "react";
|
|
17290
17435
|
import { useButton as useButton11, useFocusRing as useFocusRing14, useHover as useHover18 } from "react-aria";
|
|
17291
|
-
import { jsx as
|
|
17436
|
+
import { jsx as jsx159, jsxs as jsxs77 } from "@emotion/react/jsx-runtime";
|
|
17292
17437
|
function Stepper(props) {
|
|
17293
17438
|
const { steps, currentStep, onChange } = props;
|
|
17294
17439
|
if (steps.length === 0) {
|
|
@@ -17299,25 +17444,25 @@ function Stepper(props) {
|
|
|
17299
17444
|
const maxStepWidth = 200;
|
|
17300
17445
|
const minStepWidth = 100;
|
|
17301
17446
|
const gap = 8;
|
|
17302
|
-
return /* @__PURE__ */
|
|
17303
|
-
/* @__PURE__ */
|
|
17447
|
+
return /* @__PURE__ */ jsxs77("nav", { "aria-label": "steps", css: Css.df.fdc.w100.$, ...tid, children: [
|
|
17448
|
+
/* @__PURE__ */ jsx159("ol", { css: Css.listReset.df.gapPx(gap).$, children: steps.map((step) => {
|
|
17304
17449
|
const isCurrent = currentStep === step.value;
|
|
17305
|
-
return /* @__PURE__ */
|
|
17450
|
+
return /* @__PURE__ */ jsx159(
|
|
17306
17451
|
"li",
|
|
17307
17452
|
{
|
|
17308
17453
|
css: Css.df.fg1.fdc.maxwPx(maxStepWidth).mwPx(minStepWidth).$,
|
|
17309
17454
|
"aria-current": isCurrent,
|
|
17310
17455
|
...tid.step,
|
|
17311
|
-
children: /* @__PURE__ */
|
|
17456
|
+
children: /* @__PURE__ */ jsx159(StepButton, { ...step, onClick: () => onChange(step.value), isCurrent, ...tid.stepButton })
|
|
17312
17457
|
},
|
|
17313
17458
|
step.label
|
|
17314
17459
|
);
|
|
17315
17460
|
}) }),
|
|
17316
|
-
/* @__PURE__ */
|
|
17461
|
+
/* @__PURE__ */ jsx159(
|
|
17317
17462
|
"div",
|
|
17318
17463
|
{
|
|
17319
17464
|
css: Css.mt1.bgGray300.hPx(4).maxwPx(steps.length * maxStepWidth + (steps.length - 1) * gap).mwPx(steps.length * minStepWidth + (steps.length - 1) * gap).w100.$,
|
|
17320
|
-
children: /* @__PURE__ */
|
|
17465
|
+
children: /* @__PURE__ */ jsx159(
|
|
17321
17466
|
"div",
|
|
17322
17467
|
{
|
|
17323
17468
|
css: Css.bgBlue600.add("transition", "width 200ms").h100.w(`${(lastCompletedStep + 1) / steps.length * 100}%`).$
|
|
@@ -17336,7 +17481,7 @@ function StepButton(props) {
|
|
|
17336
17481
|
const { hoverProps, isHovered } = useHover18(ariaProps);
|
|
17337
17482
|
const focusRingStyles2 = state === "error" ? Css.bshDanger.$ : Css.bshFocus.$;
|
|
17338
17483
|
const tid = useTestIds(props, "stepButton");
|
|
17339
|
-
return /* @__PURE__ */
|
|
17484
|
+
return /* @__PURE__ */ jsxs77(
|
|
17340
17485
|
"button",
|
|
17341
17486
|
{
|
|
17342
17487
|
ref,
|
|
@@ -17354,7 +17499,7 @@ function StepButton(props) {
|
|
|
17354
17499
|
},
|
|
17355
17500
|
...tid[defaultTestId(label)],
|
|
17356
17501
|
children: [
|
|
17357
|
-
/* @__PURE__ */
|
|
17502
|
+
/* @__PURE__ */ jsx159("span", { css: Css.fs0.mrPx(4).$, children: /* @__PURE__ */ jsx159(StepIcon, { state, isHovered, isPressed, isCurrent }) }),
|
|
17358
17503
|
label
|
|
17359
17504
|
]
|
|
17360
17505
|
}
|
|
@@ -17362,12 +17507,12 @@ function StepButton(props) {
|
|
|
17362
17507
|
}
|
|
17363
17508
|
function StepIcon({ state, isHovered = false, isPressed = false, isCurrent = false }) {
|
|
17364
17509
|
if (state === "error") {
|
|
17365
|
-
return /* @__PURE__ */
|
|
17510
|
+
return /* @__PURE__ */ jsx159(Icon, { icon: "errorCircle" });
|
|
17366
17511
|
}
|
|
17367
17512
|
if (state === "complete") {
|
|
17368
|
-
return /* @__PURE__ */
|
|
17513
|
+
return /* @__PURE__ */ jsx159(Icon, { icon: "check" });
|
|
17369
17514
|
}
|
|
17370
|
-
return /* @__PURE__ */
|
|
17515
|
+
return /* @__PURE__ */ jsx159("div", { css: Css.wPx(24).hPx(24).df.aic.jcc.$, children: /* @__PURE__ */ jsx159(
|
|
17371
17516
|
"div",
|
|
17372
17517
|
{
|
|
17373
17518
|
css: Css.wPx(10).hPx(10).ba.bw2.br100.add("color", "currentColor").if(isHovered || isPressed || isCurrent).add("backgroundColor", "currentColor").$
|
|
@@ -17377,7 +17522,7 @@ function StepIcon({ state, isHovered = false, isPressed = false, isCurrent = fal
|
|
|
17377
17522
|
|
|
17378
17523
|
// src/components/SuperDrawer/components/SuperDrawerHeader.tsx
|
|
17379
17524
|
import { createPortal as createPortal5 } from "react-dom";
|
|
17380
|
-
import { jsx as
|
|
17525
|
+
import { jsx as jsx160, jsxs as jsxs78 } from "@emotion/react/jsx-runtime";
|
|
17381
17526
|
function SuperDrawerHeader(props) {
|
|
17382
17527
|
const { hideControls } = props;
|
|
17383
17528
|
const { sdHeaderDiv, drawerContentStack: contentStack } = useBeamContext();
|
|
@@ -17387,15 +17532,15 @@ function SuperDrawerHeader(props) {
|
|
|
17387
17532
|
const isDetail = currentContent !== firstContent;
|
|
17388
17533
|
const tid = useTestIds({}, "superDrawerHeader");
|
|
17389
17534
|
return createPortal5(
|
|
17390
|
-
/* @__PURE__ */
|
|
17391
|
-
isStructuredProps(props) ? /* @__PURE__ */
|
|
17392
|
-
/* @__PURE__ */
|
|
17393
|
-
typeof props.title === "string" ? /* @__PURE__ */
|
|
17535
|
+
/* @__PURE__ */ jsxs78("div", { css: Css.df.aic.jcsb.gap3.$, ...tid, children: [
|
|
17536
|
+
isStructuredProps(props) ? /* @__PURE__ */ jsxs78("div", { css: Css.df.jcsb.aic.gap2.fg1.$, children: [
|
|
17537
|
+
/* @__PURE__ */ jsxs78("div", { css: Css.fg1.df.aic.gap2.$, children: [
|
|
17538
|
+
typeof props.title === "string" ? /* @__PURE__ */ jsx160("h1", { children: props.title }) : props.title,
|
|
17394
17539
|
props.left
|
|
17395
17540
|
] }),
|
|
17396
|
-
props.right && /* @__PURE__ */
|
|
17397
|
-
] }) : /* @__PURE__ */
|
|
17398
|
-
!hideControls && /* @__PURE__ */
|
|
17541
|
+
props.right && /* @__PURE__ */ jsx160("div", { css: Css.fs0.$, children: props.right })
|
|
17542
|
+
] }) : /* @__PURE__ */ jsx160("div", { css: Css.fg1.$, children: props.children }),
|
|
17543
|
+
!hideControls && /* @__PURE__ */ jsx160("div", { css: Css.fs0.if(isDetail).vh.$, children: /* @__PURE__ */ jsx160(
|
|
17399
17544
|
ButtonGroup,
|
|
17400
17545
|
{
|
|
17401
17546
|
buttons: [
|
|
@@ -17414,18 +17559,18 @@ function isStructuredProps(props) {
|
|
|
17414
17559
|
}
|
|
17415
17560
|
|
|
17416
17561
|
// src/components/SuperDrawer/ConfirmCloseModal.tsx
|
|
17417
|
-
import { Fragment as
|
|
17562
|
+
import { Fragment as Fragment31, jsx as jsx161, jsxs as jsxs79 } from "@emotion/react/jsx-runtime";
|
|
17418
17563
|
function ConfirmCloseModal(props) {
|
|
17419
17564
|
const { onClose, discardText = "Discard Changes", continueText = "Continue Editing" } = props;
|
|
17420
17565
|
const { modalState } = useBeamContext();
|
|
17421
17566
|
function closeModal() {
|
|
17422
17567
|
modalState.current = void 0;
|
|
17423
17568
|
}
|
|
17424
|
-
return /* @__PURE__ */
|
|
17425
|
-
/* @__PURE__ */
|
|
17426
|
-
/* @__PURE__ */
|
|
17427
|
-
/* @__PURE__ */
|
|
17428
|
-
/* @__PURE__ */
|
|
17569
|
+
return /* @__PURE__ */ jsxs79(Fragment31, { children: [
|
|
17570
|
+
/* @__PURE__ */ jsx161(ModalHeader, { children: "Are you sure you want to cancel?" }),
|
|
17571
|
+
/* @__PURE__ */ jsx161(ModalBody, { children: /* @__PURE__ */ jsx161("p", { children: "Any changes you've made so far will be lost." }) }),
|
|
17572
|
+
/* @__PURE__ */ jsxs79(ModalFooter, { children: [
|
|
17573
|
+
/* @__PURE__ */ jsx161(
|
|
17429
17574
|
Button,
|
|
17430
17575
|
{
|
|
17431
17576
|
variant: "tertiary",
|
|
@@ -17436,7 +17581,7 @@ function ConfirmCloseModal(props) {
|
|
|
17436
17581
|
}
|
|
17437
17582
|
}
|
|
17438
17583
|
),
|
|
17439
|
-
/* @__PURE__ */
|
|
17584
|
+
/* @__PURE__ */ jsx161(Button, { label: continueText, onClick: closeModal })
|
|
17440
17585
|
] })
|
|
17441
17586
|
] });
|
|
17442
17587
|
}
|
|
@@ -17445,8 +17590,8 @@ function ConfirmCloseModal(props) {
|
|
|
17445
17590
|
import { motion as motion4 } from "framer-motion";
|
|
17446
17591
|
|
|
17447
17592
|
// src/components/SuperDrawer/useSuperDrawer.tsx
|
|
17448
|
-
import { useMemo as
|
|
17449
|
-
import { jsx as
|
|
17593
|
+
import { useMemo as useMemo41 } from "react";
|
|
17594
|
+
import { jsx as jsx162 } from "@emotion/react/jsx-runtime";
|
|
17450
17595
|
function useSuperDrawer() {
|
|
17451
17596
|
const {
|
|
17452
17597
|
drawerContentStack: contentStack,
|
|
@@ -17458,7 +17603,7 @@ function useSuperDrawer() {
|
|
|
17458
17603
|
function canCloseDrawerDetails(i, doChange) {
|
|
17459
17604
|
for (const canCloseDrawerDetail of canCloseDetailsChecks.current[i] ?? []) {
|
|
17460
17605
|
if (!canClose(canCloseDrawerDetail)) {
|
|
17461
|
-
openModal({ content: /* @__PURE__ */
|
|
17606
|
+
openModal({ content: /* @__PURE__ */ jsx162(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawerDetail }) });
|
|
17462
17607
|
return false;
|
|
17463
17608
|
}
|
|
17464
17609
|
}
|
|
@@ -17478,14 +17623,14 @@ function useSuperDrawer() {
|
|
|
17478
17623
|
for (const canCloseDrawer of canCloseChecks.current) {
|
|
17479
17624
|
if (!canClose(canCloseDrawer)) {
|
|
17480
17625
|
openModal({
|
|
17481
|
-
content: /* @__PURE__ */
|
|
17626
|
+
content: /* @__PURE__ */ jsx162(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawer })
|
|
17482
17627
|
});
|
|
17483
17628
|
return;
|
|
17484
17629
|
}
|
|
17485
17630
|
}
|
|
17486
17631
|
doChange();
|
|
17487
17632
|
}
|
|
17488
|
-
const closeActions =
|
|
17633
|
+
const closeActions = useMemo41(
|
|
17489
17634
|
() => {
|
|
17490
17635
|
return {
|
|
17491
17636
|
/** Attempts to close the drawer. If any checks fail, a confirmation modal will appear */
|
|
@@ -17520,7 +17665,7 @@ function useSuperDrawer() {
|
|
|
17520
17665
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17521
17666
|
[canCloseChecks, canCloseDetailsChecks, contentStack, modalState, openModal]
|
|
17522
17667
|
);
|
|
17523
|
-
const actions =
|
|
17668
|
+
const actions = useMemo41(
|
|
17524
17669
|
() => {
|
|
17525
17670
|
return {
|
|
17526
17671
|
// TODO: Maybe we should rename to openDrawer as a breaking change (to match openDrawerDetail)
|
|
@@ -17573,7 +17718,7 @@ function canClose(canCloseCheck) {
|
|
|
17573
17718
|
}
|
|
17574
17719
|
|
|
17575
17720
|
// src/components/SuperDrawer/SuperDrawerContent.tsx
|
|
17576
|
-
import { Fragment as
|
|
17721
|
+
import { Fragment as Fragment32, jsx as jsx163, jsxs as jsxs80 } from "@emotion/react/jsx-runtime";
|
|
17577
17722
|
var SuperDrawerContent = ({ children, actions }) => {
|
|
17578
17723
|
const { closeDrawerDetail } = useSuperDrawer();
|
|
17579
17724
|
const { drawerContentStack: contentStack } = useBeamContext();
|
|
@@ -17582,17 +17727,17 @@ var SuperDrawerContent = ({ children, actions }) => {
|
|
|
17582
17727
|
const { width: width2 = 1040 /* Normal */ } = firstContent ?? {};
|
|
17583
17728
|
function wrapWithMotionAndMaybeBack(children2) {
|
|
17584
17729
|
if (kind === "open") {
|
|
17585
|
-
return /* @__PURE__ */
|
|
17730
|
+
return /* @__PURE__ */ jsx163(motion4.div, { css: Css.p3.fg1.oa.$, children: children2 }, "content");
|
|
17586
17731
|
} else if (kind === "detail") {
|
|
17587
|
-
return /* @__PURE__ */
|
|
17732
|
+
return /* @__PURE__ */ jsxs80(
|
|
17588
17733
|
motion4.div,
|
|
17589
17734
|
{
|
|
17590
17735
|
css: Css.px3.pt2.pb3.fg1.$,
|
|
17591
17736
|
animate: { overflow: "auto" },
|
|
17592
17737
|
transition: { overflow: { delay: 0.3 } },
|
|
17593
17738
|
children: [
|
|
17594
|
-
/* @__PURE__ */
|
|
17595
|
-
/* @__PURE__ */
|
|
17739
|
+
/* @__PURE__ */ jsx163(Button, { label: "Back", icon: "chevronLeft", variant: "tertiary", onClick: closeDrawerDetail }),
|
|
17740
|
+
/* @__PURE__ */ jsx163(
|
|
17596
17741
|
motion4.div,
|
|
17597
17742
|
{
|
|
17598
17743
|
initial: { x: width2, opacity: 0 },
|
|
@@ -17608,27 +17753,27 @@ var SuperDrawerContent = ({ children, actions }) => {
|
|
|
17608
17753
|
"content"
|
|
17609
17754
|
);
|
|
17610
17755
|
} else {
|
|
17611
|
-
return /* @__PURE__ */
|
|
17756
|
+
return /* @__PURE__ */ jsx163(motion4.div, { css: Css.p3.fg1.$, style: { overflow: "auto" } }, "content");
|
|
17612
17757
|
}
|
|
17613
17758
|
}
|
|
17614
|
-
return /* @__PURE__ */
|
|
17759
|
+
return /* @__PURE__ */ jsxs80(Fragment32, { children: [
|
|
17615
17760
|
wrapWithMotionAndMaybeBack(children),
|
|
17616
|
-
actions && /* @__PURE__ */
|
|
17761
|
+
actions && /* @__PURE__ */ jsx163("footer", { css: Css.bt.bcGray200.p3.df.aic.jcfe.$, children: /* @__PURE__ */ jsx163("div", { css: Css.df.gap1.$, children: actions.map((buttonProps, i) => /* @__PURE__ */ jsx163(Button, { ...buttonProps }, i)) }) })
|
|
17617
17762
|
] });
|
|
17618
17763
|
};
|
|
17619
17764
|
|
|
17620
17765
|
// src/components/Tabs.tsx
|
|
17621
17766
|
import { camelCase as camelCase5 } from "change-case";
|
|
17622
|
-
import { useEffect as
|
|
17767
|
+
import { useEffect as useEffect29, useMemo as useMemo42, useRef as useRef52, useState as useState41 } from "react";
|
|
17623
17768
|
import { mergeProps as mergeProps13, useFocusRing as useFocusRing15, useHover as useHover19 } from "react-aria";
|
|
17624
17769
|
import { matchPath, Route } from "react-router";
|
|
17625
17770
|
import { Link as Link5, useLocation } from "react-router-dom";
|
|
17626
|
-
import { Fragment as
|
|
17771
|
+
import { Fragment as Fragment33, jsx as jsx164, jsxs as jsxs81 } from "@emotion/react/jsx-runtime";
|
|
17627
17772
|
function TabsWithContent(props) {
|
|
17628
17773
|
const styles = hideTabs(props) ? {} : Css.pt3.$;
|
|
17629
|
-
return /* @__PURE__ */
|
|
17630
|
-
/* @__PURE__ */
|
|
17631
|
-
/* @__PURE__ */
|
|
17774
|
+
return /* @__PURE__ */ jsxs81(Fragment33, { children: [
|
|
17775
|
+
/* @__PURE__ */ jsx164(Tabs, { ...props }),
|
|
17776
|
+
/* @__PURE__ */ jsx164(TabContent, { ...props, contentXss: { ...styles, ...props.contentXss } })
|
|
17632
17777
|
] });
|
|
17633
17778
|
}
|
|
17634
17779
|
function TabContent(props) {
|
|
@@ -17643,7 +17788,7 @@ function TabContent(props) {
|
|
|
17643
17788
|
return (
|
|
17644
17789
|
// Using FullBleed to allow the tab's bgColor to extend to the edges of the <ScrollableContent /> element.
|
|
17645
17790
|
// Omit the padding from `FullBleed` if the caller passes in the `paddingLeft/Right` styles.
|
|
17646
|
-
/* @__PURE__ */
|
|
17791
|
+
/* @__PURE__ */ jsx164(FullBleed, { omitPadding: "paddingLeft" in contentXss || "paddingRight" in contentXss, children: /* @__PURE__ */ jsx164(
|
|
17647
17792
|
"div",
|
|
17648
17793
|
{
|
|
17649
17794
|
"aria-labelledby": `${uniqueValue}-tab`,
|
|
@@ -17652,7 +17797,7 @@ function TabContent(props) {
|
|
|
17652
17797
|
tabIndex: 0,
|
|
17653
17798
|
...tid.panel,
|
|
17654
17799
|
css: contentXss,
|
|
17655
|
-
children: isRouteTab(selectedTab) ? /* @__PURE__ */
|
|
17800
|
+
children: isRouteTab(selectedTab) ? /* @__PURE__ */ jsx164(Route, { path: selectedTab.path, render: selectedTab.render }) : selectedTab.render()
|
|
17656
17801
|
}
|
|
17657
17802
|
) })
|
|
17658
17803
|
);
|
|
@@ -17665,9 +17810,9 @@ function Tabs(props) {
|
|
|
17665
17810
|
) : props.selected;
|
|
17666
17811
|
const { isFocusVisible, focusProps } = useFocusRing15();
|
|
17667
17812
|
const tid = useTestIds(others, "tabs");
|
|
17668
|
-
const [active, setActive] =
|
|
17813
|
+
const [active, setActive] = useState41(selected);
|
|
17669
17814
|
const ref = useRef52(null);
|
|
17670
|
-
|
|
17815
|
+
useEffect29(() => setActive(selected), [selected]);
|
|
17671
17816
|
function onKeyUp(e) {
|
|
17672
17817
|
if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
|
|
17673
17818
|
const nextTabValue = getNextTabValue(active, e.key, tabs);
|
|
@@ -17683,10 +17828,10 @@ function Tabs(props) {
|
|
|
17683
17828
|
setActive(selected);
|
|
17684
17829
|
}
|
|
17685
17830
|
}
|
|
17686
|
-
return /* @__PURE__ */
|
|
17687
|
-
!hideTabs(props) && /* @__PURE__ */
|
|
17831
|
+
return /* @__PURE__ */ jsxs81("div", { css: { ...Css.df.aic.oa.wsnw.gap1.$, ...includeBottomBorder ? { ...Css.bb.bcGray200.$ } : {} }, children: [
|
|
17832
|
+
!hideTabs(props) && /* @__PURE__ */ jsx164("div", { ref, css: Css.dif.gap1.asfe.$, "aria-label": ariaLabel, role: "tablist", ...tid, children: tabs.map((tab) => {
|
|
17688
17833
|
const uniqueValue = uniqueTabValue(tab);
|
|
17689
|
-
return /* @__PURE__ */
|
|
17834
|
+
return /* @__PURE__ */ jsx164(
|
|
17690
17835
|
TabImpl,
|
|
17691
17836
|
{
|
|
17692
17837
|
active: active === uniqueValue,
|
|
@@ -17701,7 +17846,7 @@ function Tabs(props) {
|
|
|
17701
17846
|
uniqueValue
|
|
17702
17847
|
);
|
|
17703
17848
|
}) }),
|
|
17704
|
-
right && /* @__PURE__ */
|
|
17849
|
+
right && /* @__PURE__ */ jsx164("div", { css: Css.mla.df.aic.gap1.pb1.$, children: right })
|
|
17705
17850
|
] });
|
|
17706
17851
|
}
|
|
17707
17852
|
function TabImpl(props) {
|
|
@@ -17709,7 +17854,7 @@ function TabImpl(props) {
|
|
|
17709
17854
|
const { disabled = false, name: label, icon, endAdornment } = tab;
|
|
17710
17855
|
const isDisabled = !!disabled;
|
|
17711
17856
|
const { hoverProps, isHovered } = useHover19({ isDisabled });
|
|
17712
|
-
const { baseStyles: baseStyles5, activeStyles: activeStyles4, focusRingStyles: focusRingStyles2, hoverStyles: hoverStyles4, disabledStyles: disabledStyles4, activeHoverStyles } =
|
|
17857
|
+
const { baseStyles: baseStyles5, activeStyles: activeStyles4, focusRingStyles: focusRingStyles2, hoverStyles: hoverStyles4, disabledStyles: disabledStyles4, activeHoverStyles } = useMemo42(
|
|
17713
17858
|
() => getTabStyles(),
|
|
17714
17859
|
[]
|
|
17715
17860
|
);
|
|
@@ -17736,15 +17881,15 @@ function TabImpl(props) {
|
|
|
17736
17881
|
onBlur,
|
|
17737
17882
|
...isRouteTab(tab) ? {} : { onClick: () => onClick(tab.value) }
|
|
17738
17883
|
});
|
|
17739
|
-
const tabLabel = /* @__PURE__ */
|
|
17884
|
+
const tabLabel = /* @__PURE__ */ jsxs81(Fragment33, { children: [
|
|
17740
17885
|
label,
|
|
17741
|
-
(icon || endAdornment) && /* @__PURE__ */
|
|
17886
|
+
(icon || endAdornment) && /* @__PURE__ */ jsx164("span", { css: Css.ml1.$, children: icon ? /* @__PURE__ */ jsx164(Icon, { icon }) : endAdornment })
|
|
17742
17887
|
] });
|
|
17743
17888
|
return isDisabled ? maybeTooltip({
|
|
17744
17889
|
title: resolveTooltip(disabled),
|
|
17745
17890
|
placement: "top",
|
|
17746
|
-
children: /* @__PURE__ */
|
|
17747
|
-
}) : isRouteTab(tab) ? /* @__PURE__ */
|
|
17891
|
+
children: /* @__PURE__ */ jsx164("div", { ...tabProps, children: tabLabel })
|
|
17892
|
+
}) : isRouteTab(tab) ? /* @__PURE__ */ jsx164(Link5, { ...{ ...tabProps, ...interactiveProps }, className: "navLink", to: tab.href, children: tabLabel }) : /* @__PURE__ */ jsx164("button", { ...{ ...tabProps, ...interactiveProps }, children: tabLabel });
|
|
17748
17893
|
}
|
|
17749
17894
|
function getTabStyles() {
|
|
17750
17895
|
const borderBottomWidthPx = 4;
|
|
@@ -17781,11 +17926,11 @@ function hideTabs(props) {
|
|
|
17781
17926
|
}
|
|
17782
17927
|
|
|
17783
17928
|
// src/components/Toast/Toast.tsx
|
|
17784
|
-
import { Fragment as
|
|
17929
|
+
import { Fragment as Fragment34, jsx as jsx165 } from "@emotion/react/jsx-runtime";
|
|
17785
17930
|
function Toast() {
|
|
17786
17931
|
const { setNotice, notice } = useToastContext();
|
|
17787
17932
|
const tid = useTestIds({}, "toast");
|
|
17788
|
-
return /* @__PURE__ */
|
|
17933
|
+
return /* @__PURE__ */ jsx165(Fragment34, { children: notice && /* @__PURE__ */ jsx165(Banner, { ...notice, ...tid, onClose: () => setNotice(void 0) }) });
|
|
17789
17934
|
}
|
|
17790
17935
|
|
|
17791
17936
|
// src/components/Toast/useToast.tsx
|
|
@@ -17868,6 +18013,7 @@ export {
|
|
|
17868
18013
|
FormRow,
|
|
17869
18014
|
FullBleed,
|
|
17870
18015
|
GridTable,
|
|
18016
|
+
GridTableLayout,
|
|
17871
18017
|
HB_QUIPS_FLAVOR,
|
|
17872
18018
|
HB_QUIPS_MISSION,
|
|
17873
18019
|
HEADER,
|
|
@@ -18055,6 +18201,7 @@ export {
|
|
|
18055
18201
|
useDnDGridItem,
|
|
18056
18202
|
useFilter,
|
|
18057
18203
|
useGridTableApi,
|
|
18204
|
+
useGridTableLayoutState,
|
|
18058
18205
|
useGroupBy,
|
|
18059
18206
|
useHover,
|
|
18060
18207
|
useModal,
|