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