@homebound/beam 2.391.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 +1513 -1362
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +215 -132
- package/dist/index.d.ts +215 -132
- package/dist/index.js +1492 -1343
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4654,6 +4654,10 @@ var Icons = {
|
|
|
4654
4654
|
/* @__PURE__ */ jsx3("rect", { x: "12", y: "10", width: "10", height: "2" })
|
|
4655
4655
|
] }),
|
|
4656
4656
|
cube: /* @__PURE__ */ jsx3("path", { d: "M19.406 4.08601L10.406 0.0860059C10.146 -0.0289941 9.853 -0.0289941 9.593 0.0860059L0.593 4.08601C0.573 4.09501 0.559 4.11001 0.539 4.12101C0.511 4.13501 0.481 4.14401 0.455 4.16101C0.433 4.17601 0.416 4.19501 0.395 4.21101C0.367 4.23201 0.34 4.25501 0.315 4.27901C0.274 4.31801 0.238 4.36001 0.205 4.40501C0.185 4.43301 0.164 4.45801 0.146 4.48601C0.115 4.53901 0.0919999 4.59401 0.0699999 4.65101C0.0609999 4.67801 0.047 4.70301 0.039 4.73001C0.015 4.81701 0 4.90701 0 5.00001V15C0 15.396 0.232 15.753 0.594 15.914L9.594 19.914C9.724 19.972 9.862 20 10 20C10.139 20 10.273 19.961 10.402 19.904L10.406 19.914L19.406 15.914C19.768 15.753 20 15.396 20 15V5.00001C20 4.60401 19.768 4.24701 19.406 4.08601ZM10 2.09501L16.538 5.00001L10 7.90501L8.692 7.32401L3.463 5.00001L10 2.09501ZM2 14.351V6.53901L9 9.65001V17.461L2 14.351ZM11 17.461V9.65001L18 6.53901V14.351L11 17.461Z" }),
|
|
4657
|
+
history: /* @__PURE__ */ jsxs2(Fragment2, { children: [
|
|
4658
|
+
/* @__PURE__ */ jsx3("path", { d: "M12 8V13H17V11H14V8H12Z" }),
|
|
4659
|
+
/* @__PURE__ */ jsx3("path", { d: "M21.292 8.49699C21.066 7.96199 20.787 7.44699 20.463 6.96799C20.141 6.48999 19.772 6.04199 19.364 5.63499C18.956 5.22799 18.51 4.85999 18.032 4.53699C17.55 4.21099 17.035 3.93299 16.504 3.70799C15.959 3.47799 15.39 3.30099 14.814 3.18299C13.633 2.93999 12.37 2.93899 11.188 3.18299C10.609 3.30099 10.041 3.47799 9.498 3.70699C8.967 3.93199 8.453 4.20999 7.969 4.53699C7.492 4.85899 7.043 5.22899 6.636 5.63599C6.229 6.04299 5.859 6.49199 5.537 6.96799C5.211 7.45199 4.932 7.96599 4.708 8.49599C4.478 9.03999 4.301 9.60899 4.183 10.186C4.062 10.778 4 11.388 4 12C4 12.008 4.001 12.017 4.001 12.025H2L5 16L8 12.025H6.001C6.001 12.017 6 12.008 6 12C6 11.523 6.048 11.048 6.142 10.588C6.234 10.139 6.371 9.69799 6.55 9.27499C6.724 8.86299 6.941 8.46199 7.195 8.08699C7.445 7.71599 7.733 7.36799 8.05 7.04999C8.367 6.73199 8.716 6.44499 9.086 6.19499C9.462 5.94099 9.863 5.72399 10.276 5.54899C10.697 5.36999 11.139 5.23299 11.589 5.14099C12.508 4.95199 13.493 4.95299 14.412 5.14099C14.859 5.23299 15.302 5.36999 15.725 5.54899C16.138 5.72299 16.538 5.94099 16.913 6.19299C17.283 6.44399 17.633 6.73199 17.95 7.04899C18.267 7.36499 18.554 7.71399 18.805 8.08599C19.057 8.45799 19.274 8.85799 19.45 9.27499C19.628 9.69199 19.764 10.133 19.858 10.586C19.952 11.049 20 11.524 20 12C20 12.476 19.952 12.951 19.858 13.41C19.764 13.865 19.628 14.306 19.45 14.724C19.274 15.14 19.057 15.539 18.804 15.913C18.554 16.284 18.267 16.633 17.95 16.949C17.633 17.266 17.283 17.554 16.914 17.804C16.538 18.057 16.139 18.275 15.725 18.45C15.302 18.629 14.86 18.766 14.412 18.858C13.494 19.046 12.51 19.047 11.589 18.858C11.14 18.766 10.699 18.629 10.276 18.45C9.864 18.276 9.463 18.059 9.088 17.805C8.717 17.555 8.369 17.267 8.051 16.95L6.637 18.364C7.044 18.772 7.492 19.141 7.969 19.463C8.452 19.789 8.967 20.068 9.497 20.292C10.041 20.522 10.61 20.699 11.187 20.817C11.778 20.938 12.388 21 13 21C13.612 21 14.223 20.938 14.813 20.817C15.39 20.699 15.959 20.523 16.503 20.293C17.035 20.068 17.55 19.789 18.034 19.462C18.51 19.14 18.957 18.771 19.364 18.364C19.771 17.957 20.14 17.509 20.462 17.033C20.787 16.553 21.066 16.038 21.292 15.504C21.52 14.966 21.697 14.398 21.817 13.812C21.938 13.22 22 12.61 22 12C22 11.39 21.938 10.78 21.817 10.186C21.697 9.60199 21.52 9.03399 21.292 8.49699Z" })
|
|
4660
|
+
] }),
|
|
4657
4661
|
// Navigation
|
|
4658
4662
|
projects: /* @__PURE__ */ jsx3("path", { d: "M4 6H6V8H4V6ZM4 11H6V13H4V11ZM4 16H6V18H4V16ZM20 8V6H18.8H9.2H8.023V8H9.2H18.8H20ZM8 11H20V13H8V11ZM8 16H20V18H8V16Z" }),
|
|
4659
4663
|
tasks: /* @__PURE__ */ jsxs2(Fragment2, { children: [
|
|
@@ -13703,7 +13707,7 @@ var variantStyles2 = {
|
|
|
13703
13707
|
};
|
|
13704
13708
|
|
|
13705
13709
|
// src/components/BeamContext.tsx
|
|
13706
|
-
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";
|
|
13707
13711
|
import { OverlayProvider } from "react-aria";
|
|
13708
13712
|
|
|
13709
13713
|
// src/components/Modal/Modal.tsx
|
|
@@ -15580,1336 +15584,1514 @@ function FullBleed({ children, omitPadding = false }) {
|
|
|
15580
15584
|
});
|
|
15581
15585
|
}
|
|
15582
15586
|
|
|
15583
|
-
// src/components/Layout/
|
|
15584
|
-
import {
|
|
15585
|
-
function PreventBrowserScroll({ children }) {
|
|
15586
|
-
return (
|
|
15587
|
-
// Take over the full viewport and hide any overflown content.
|
|
15588
|
-
// 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/
|
|
15589
|
-
// 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.
|
|
15590
|
-
/* @__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 }) })
|
|
15591
|
-
);
|
|
15592
|
-
}
|
|
15587
|
+
// src/components/Layout/GridTableLayout/GridTableLayout.tsx
|
|
15588
|
+
import React14, { useEffect as useEffect25, useState as useState35 } from "react";
|
|
15593
15589
|
|
|
15594
|
-
// src/components/
|
|
15595
|
-
import
|
|
15596
|
-
|
|
15597
|
-
|
|
15598
|
-
|
|
15599
|
-
|
|
15600
|
-
|
|
15601
|
-
|
|
15602
|
-
|
|
15603
|
-
|
|
15604
|
-
|
|
15605
|
-
|
|
15606
|
-
|
|
15607
|
-
|
|
15608
|
-
|
|
15609
|
-
|
|
15610
|
-
|
|
15611
|
-
|
|
15612
|
-
|
|
15613
|
-
|
|
15614
|
-
|
|
15615
|
-
|
|
15616
|
-
|
|
15617
|
-
|
|
15618
|
-
const clearPane = useCallback18(() => setRightPaneContent(void 0), [setRightPaneContent]);
|
|
15619
|
-
const context = useMemo31(
|
|
15620
|
-
() => ({ openInPane, closePane, clearPane, rightPaneContent, isRightPaneOpen }),
|
|
15621
|
-
[openInPane, closePane, rightPaneContent, clearPane, isRightPaneOpen]
|
|
15622
|
-
);
|
|
15623
|
-
return /* @__PURE__ */ jsx124(RightPaneContext.Provider, { value: context, children });
|
|
15624
|
-
}
|
|
15625
|
-
function useRightPaneContext() {
|
|
15626
|
-
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);
|
|
15627
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
|
+
};
|
|
15628
15661
|
|
|
15629
|
-
// src/components/
|
|
15630
|
-
import {
|
|
15631
|
-
|
|
15632
|
-
|
|
15633
|
-
|
|
15634
|
-
|
|
15635
|
-
|
|
15636
|
-
|
|
15637
|
-
|
|
15638
|
-
|
|
15639
|
-
|
|
15640
|
-
|
|
15641
|
-
css: {
|
|
15642
|
-
...Css.w(`calc(100% - ${paneWidth + 24}px)`).add("transition", "width .2s linear").h100.mr3.oxa.$,
|
|
15643
|
-
...Css.if(!isRightPaneOpen).w100.mr0.$,
|
|
15644
|
-
...Css.if(!!defaultPaneContent).w(`calc(100% - ${paneWidth + 24}px)`).mr3.$
|
|
15645
|
-
},
|
|
15646
|
-
children
|
|
15647
|
-
}
|
|
15648
|
-
),
|
|
15649
|
-
/* @__PURE__ */ jsxs61("div", { css: Css.relative.if(!!defaultPaneContent).wPx(paneWidth).$, children: [
|
|
15650
|
-
defaultPaneContent && /* @__PURE__ */ jsx125(
|
|
15651
|
-
"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,
|
|
15652
15674
|
{
|
|
15653
|
-
|
|
15654
|
-
|
|
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`]
|
|
15655
15684
|
}
|
|
15656
|
-
)
|
|
15657
|
-
|
|
15658
|
-
|
|
15659
|
-
|
|
15660
|
-
layout: "position",
|
|
15661
|
-
"data-testid": "rightPaneContent",
|
|
15662
|
-
css: Css.bgColor(paneBgColor).h100.wPx(paneWidth).$,
|
|
15663
|
-
initial: { x: paneWidth + 24, position: "absolute" },
|
|
15664
|
-
animate: { x: 0 },
|
|
15665
|
-
transition: { ease: "linear", duration: 0.2 },
|
|
15666
|
-
exit: { transition: { ease: "linear", duration: 0.2 }, x: paneWidth },
|
|
15667
|
-
onAnimationComplete: (definition) => definition.x !== 0 && clearPane(),
|
|
15668
|
-
children: rightPaneContent
|
|
15669
|
-
},
|
|
15670
|
-
"rightPane"
|
|
15671
|
-
) })
|
|
15672
|
-
] })
|
|
15673
|
-
] }) });
|
|
15674
|
-
}
|
|
15685
|
+
)
|
|
15686
|
+
] });
|
|
15687
|
+
}
|
|
15688
|
+
};
|
|
15675
15689
|
|
|
15676
|
-
// src/components/
|
|
15677
|
-
|
|
15678
|
-
|
|
15679
|
-
return
|
|
15680
|
-
openRightPane: openInPane,
|
|
15681
|
-
closeRightPane: closePane
|
|
15682
|
-
};
|
|
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);
|
|
15683
15694
|
}
|
|
15684
|
-
|
|
15685
|
-
|
|
15686
|
-
|
|
15687
|
-
|
|
15688
|
-
|
|
15689
|
-
|
|
15690
|
-
|
|
15691
|
-
|
|
15692
|
-
|
|
15693
|
-
|
|
15694
|
-
|
|
15695
|
-
|
|
15696
|
-
|
|
15697
|
-
|
|
15698
|
-
|
|
15699
|
-
|
|
15700
|
-
|
|
15701
|
-
|
|
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,
|
|
15702
15727
|
{
|
|
15703
|
-
|
|
15704
|
-
|
|
15705
|
-
|
|
15706
|
-
|
|
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);
|
|
15707
15736
|
},
|
|
15708
|
-
|
|
15737
|
+
nothingSelectedText: nothingSelectedText ?? "All",
|
|
15738
|
+
...this.testId(tid)
|
|
15709
15739
|
}
|
|
15710
|
-
)
|
|
15711
|
-
|
|
15712
|
-
|
|
15713
|
-
}
|
|
15740
|
+
);
|
|
15741
|
+
}
|
|
15742
|
+
};
|
|
15714
15743
|
|
|
15715
|
-
// src/components/
|
|
15716
|
-
import {
|
|
15717
|
-
|
|
15718
|
-
|
|
15719
|
-
setNotice: () => {
|
|
15720
|
-
throw new Error("Missing ToastProvider");
|
|
15721
|
-
},
|
|
15722
|
-
clear: () => {
|
|
15723
|
-
},
|
|
15724
|
-
notice: void 0
|
|
15725
|
-
});
|
|
15726
|
-
function ToastProvider(props) {
|
|
15727
|
-
const [notice, setNotice] = useState35();
|
|
15728
|
-
const clear = useCallback19(() => setNotice(void 0), [setNotice]);
|
|
15729
|
-
const contextValue = useMemo32(() => ({ setNotice, notice, clear }), [notice, clear]);
|
|
15730
|
-
return /* @__PURE__ */ jsx127(ToastContext.Provider, { value: contextValue, children: props.children });
|
|
15731
|
-
}
|
|
15732
|
-
function useToastContext() {
|
|
15733
|
-
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);
|
|
15734
15748
|
}
|
|
15735
|
-
|
|
15736
|
-
|
|
15737
|
-
|
|
15738
|
-
|
|
15739
|
-
|
|
15740
|
-
|
|
15741
|
-
|
|
15742
|
-
|
|
15743
|
-
|
|
15744
|
-
|
|
15745
|
-
|
|
15746
|
-
|
|
15747
|
-
|
|
15748
|
-
|
|
15749
|
-
|
|
15750
|
-
|
|
15751
|
-
|
|
15752
|
-
|
|
15753
|
-
|
|
15754
|
-
|
|
15755
|
-
|
|
15756
|
-
|
|
15757
|
-
|
|
15758
|
-
|
|
15759
|
-
|
|
15760
|
-
|
|
15761
|
-
|
|
15762
|
-
|
|
15763
|
-
|
|
15764
|
-
|
|
15765
|
-
|
|
15766
|
-
|
|
15767
|
-
|
|
15768
|
-
|
|
15769
|
-
|
|
15770
|
-
|
|
15771
|
-
|
|
15772
|
-
|
|
15773
|
-
|
|
15774
|
-
|
|
15775
|
-
|
|
15776
|
-
|
|
15777
|
-
|
|
15778
|
-
|
|
15779
|
-
|
|
15780
|
-
|
|
15781
|
-
|
|
15782
|
-
|
|
15783
|
-
|
|
15784
|
-
|
|
15785
|
-
|
|
15786
|
-
|
|
15787
|
-
|
|
15788
|
-
|
|
15789
|
-
|
|
15790
|
-
|
|
15791
|
-
|
|
15792
|
-
|
|
15793
|
-
|
|
15794
|
-
|
|
15795
|
-
|
|
15796
|
-
|
|
15797
|
-
|
|
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
|
+
] });
|
|
15798
15829
|
}
|
|
15799
15830
|
};
|
|
15800
|
-
function useBeamContext() {
|
|
15801
|
-
return useContext15(BeamContext);
|
|
15802
|
-
}
|
|
15803
15831
|
|
|
15804
|
-
// src/components/
|
|
15805
|
-
import {
|
|
15806
|
-
|
|
15807
|
-
|
|
15808
|
-
import { jsx as jsx129 } from "@emotion/react/jsx-runtime";
|
|
15809
|
-
function ButtonDatePicker(props) {
|
|
15810
|
-
const { defaultOpen, disabled, trigger, onSelect, ...datePickerProps } = props;
|
|
15811
|
-
const state = useMenuTriggerState3({ isOpen: defaultOpen });
|
|
15812
|
-
const buttonRef = useRef44(null);
|
|
15813
|
-
const { menuTriggerProps, menuProps } = useMenuTrigger3({ isDisabled: !!disabled }, state, buttonRef);
|
|
15814
|
-
const tid = useTestIds(
|
|
15815
|
-
props,
|
|
15816
|
-
isTextButton(trigger) ? defaultTestId(labelOr(trigger, "buttonDatePicker")) : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
|
|
15817
|
-
);
|
|
15818
|
-
return /* @__PURE__ */ jsx129(OverlayTrigger, { ...props, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ jsx129(DatePickerOverlay, { overlayProps: menuProps, children: /* @__PURE__ */ jsx129(
|
|
15819
|
-
DatePicker,
|
|
15820
|
-
{
|
|
15821
|
-
...datePickerProps,
|
|
15822
|
-
onSelect: (d) => {
|
|
15823
|
-
onSelect(d);
|
|
15824
|
-
state.close();
|
|
15825
|
-
},
|
|
15826
|
-
...tid.datePicker
|
|
15827
|
-
}
|
|
15828
|
-
) }) });
|
|
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);
|
|
15829
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
|
+
};
|
|
15830
15869
|
|
|
15831
|
-
// src/components/
|
|
15832
|
-
import {
|
|
15833
|
-
|
|
15834
|
-
|
|
15835
|
-
function ButtonGroup(props) {
|
|
15836
|
-
const { buttons, disabled = false, size = "sm" } = props;
|
|
15837
|
-
const tid = useTestIds(props, "buttonGroup");
|
|
15838
|
-
return (
|
|
15839
|
-
// Adding `line-height: 0` prevent inheriting line-heights that might throw off sizing within the button group.
|
|
15840
|
-
/* @__PURE__ */ jsx130("div", { ...tid, css: Css.df.lh(0).add({ ...sizeStyles2[size] }).$, children: buttons.map(({ disabled: buttonDisabled, ...buttonProps }, i) => (
|
|
15841
|
-
// Disable the button if the ButtonGroup is disabled or if the current button is disabled.
|
|
15842
|
-
/* @__PURE__ */ jsx130(GroupButton, { ...buttonProps, disabled: disabled || buttonDisabled, size, ...tid }, i)
|
|
15843
|
-
)) })
|
|
15844
|
-
);
|
|
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);
|
|
15845
15874
|
}
|
|
15846
|
-
|
|
15847
|
-
|
|
15848
|
-
|
|
15849
|
-
|
|
15850
|
-
|
|
15851
|
-
const { isFocusVisible, focusProps } = useFocusRing12();
|
|
15852
|
-
const { hoverProps, isHovered } = useHover15(ariaProps);
|
|
15853
|
-
const tid = useTestIds(props);
|
|
15854
|
-
return /* @__PURE__ */ jsx130("span", { css: getButtonStyles2(), children: maybeTooltip({
|
|
15855
|
-
title: resolveTooltip(disabled, tooltip),
|
|
15856
|
-
placement: "top",
|
|
15857
|
-
children: /* @__PURE__ */ jsxs63(
|
|
15858
|
-
"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,
|
|
15859
15880
|
{
|
|
15860
|
-
|
|
15861
|
-
|
|
15862
|
-
|
|
15863
|
-
|
|
15864
|
-
|
|
15865
|
-
|
|
15866
|
-
|
|
15867
|
-
|
|
15868
|
-
|
|
15869
|
-
...isPressed ? pressedStyles2 : isHovered ? hoverStyles3 : {},
|
|
15870
|
-
...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);
|
|
15871
15890
|
},
|
|
15872
|
-
|
|
15873
|
-
|
|
15874
|
-
icon && /* @__PURE__ */ jsx130(Icon, { xss: Css.if(!!text).mrPx(4).$, icon, color: disabled ? void 0 : iconColor, inc: iconInc }),
|
|
15875
|
-
text
|
|
15876
|
-
]
|
|
15891
|
+
nothingSelectedText: nothingSelectedText ?? "All",
|
|
15892
|
+
...this.testId(tid)
|
|
15877
15893
|
}
|
|
15878
|
-
)
|
|
15879
|
-
}
|
|
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);
|
|
15880
15902
|
}
|
|
15881
|
-
var
|
|
15882
|
-
|
|
15883
|
-
|
|
15884
|
-
|
|
15885
|
-
|
|
15886
|
-
|
|
15887
|
-
|
|
15888
|
-
|
|
15889
|
-
|
|
15890
|
-
|
|
15891
|
-
|
|
15892
|
-
|
|
15893
|
-
|
|
15894
|
-
|
|
15895
|
-
|
|
15896
|
-
|
|
15897
|
-
|
|
15898
|
-
|
|
15899
|
-
|
|
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
|
+
}
|
|
15900
15926
|
};
|
|
15901
|
-
var
|
|
15902
|
-
|
|
15903
|
-
|
|
15904
|
-
|
|
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
|
+
}
|
|
15905
15961
|
};
|
|
15906
15962
|
|
|
15907
|
-
// src/components/
|
|
15908
|
-
import {
|
|
15909
|
-
|
|
15910
|
-
|
|
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";
|
|
15911
15968
|
import { jsx as jsx131 } from "@emotion/react/jsx-runtime";
|
|
15912
|
-
function
|
|
15913
|
-
const {
|
|
15914
|
-
|
|
15915
|
-
|
|
15916
|
-
|
|
15917
|
-
|
|
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" });
|
|
15918
15981
|
}
|
|
15919
|
-
|
|
15920
|
-
|
|
15921
|
-
|
|
15922
|
-
|
|
15923
|
-
|
|
15924
|
-
|
|
15925
|
-
);
|
|
15926
|
-
|
|
15927
|
-
|
|
15928
|
-
|
|
15929
|
-
|
|
15930
|
-
|
|
15931
|
-
|
|
15932
|
-
|
|
15933
|
-
|
|
15934
|
-
|
|
15935
|
-
|
|
15936
|
-
|
|
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,
|
|
15937
16003
|
{
|
|
15938
|
-
|
|
15939
|
-
|
|
15940
|
-
|
|
15941
|
-
|
|
15942
|
-
|
|
15943
|
-
|
|
15944
|
-
|
|
15945
|
-
|
|
15946
|
-
...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
|
|
15947
16012
|
}
|
|
15948
|
-
)
|
|
15949
|
-
|
|
15950
|
-
|
|
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
|
+
] });
|
|
15951
16030
|
}
|
|
15952
|
-
function
|
|
15953
|
-
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
|
+
] });
|
|
15954
16036
|
}
|
|
15955
16037
|
|
|
15956
|
-
// src/components/
|
|
15957
|
-
import {
|
|
15958
|
-
|
|
15959
|
-
|
|
15960
|
-
//
|
|
15961
|
-
|
|
15962
|
-
|
|
15963
|
-
import { jsx as jsx132, jsxs as jsxs64 } from "@emotion/react/jsx-runtime";
|
|
15964
|
-
function Tag(props) {
|
|
15965
|
-
const { text, type, xss, preventTooltip = false, ...otherProps } = props;
|
|
15966
|
-
const typeStyles2 = getStyles(type);
|
|
15967
|
-
const tid = useTestIds(otherProps);
|
|
15968
|
-
const [showTooltip, setShowTooltip] = useState36(false);
|
|
15969
|
-
const ref = useRef47(null);
|
|
15970
|
-
useResizeObserver4({
|
|
15971
|
-
ref,
|
|
15972
|
-
onResize: () => {
|
|
15973
|
-
if (ref.current) {
|
|
15974
|
-
setShowTooltip(ref.current.offsetHeight < ref.current.scrollHeight);
|
|
15975
|
-
}
|
|
15976
|
-
}
|
|
15977
|
-
});
|
|
15978
|
-
return maybeTooltip({
|
|
15979
|
-
title: !preventTooltip && showTooltip ? text : void 0,
|
|
15980
|
-
children: /* @__PURE__ */ jsxs64("span", { ...tid, css: { ...Css.dif.tinySb.ttu.aic.gapPx(4).pxPx(6).pyPx(2).gray900.br4.$, ...typeStyles2, ...xss }, children: [
|
|
15981
|
-
otherProps.icon && /* @__PURE__ */ jsx132("span", { css: Css.fs0.$, children: /* @__PURE__ */ jsx132(Icon, { icon: otherProps.icon, inc: 1.5 }) }),
|
|
15982
|
-
/* @__PURE__ */ jsx132("span", { ref, css: Css.lineClamp1.wbba.$, children: text })
|
|
15983
|
-
] })
|
|
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
|
|
15984
16045
|
});
|
|
15985
16046
|
}
|
|
15986
|
-
|
|
15987
|
-
|
|
15988
|
-
|
|
15989
|
-
|
|
15990
|
-
|
|
15991
|
-
return Css.bgYellow200.$;
|
|
15992
|
-
case "warning":
|
|
15993
|
-
return Css.bgRed200.$;
|
|
15994
|
-
case "success":
|
|
15995
|
-
return Css.bgGreen200.$;
|
|
15996
|
-
default:
|
|
15997
|
-
return Css.bgGray200.$;
|
|
15998
|
-
}
|
|
15999
|
-
}
|
|
16000
|
-
|
|
16001
|
-
// src/components/Card.tsx
|
|
16002
|
-
import { jsx as jsx133, jsxs as jsxs65 } from "@emotion/react/jsx-runtime";
|
|
16003
|
-
function Card(props) {
|
|
16004
|
-
const {
|
|
16005
|
-
title,
|
|
16006
|
-
subtitle,
|
|
16007
|
-
detailContent,
|
|
16008
|
-
imgSrc,
|
|
16009
|
-
imageFit = "contain",
|
|
16010
|
-
type = "card",
|
|
16011
|
-
bordered = false,
|
|
16012
|
-
disabled: isDisabled = false,
|
|
16013
|
-
buttonMenuItems,
|
|
16014
|
-
tag
|
|
16015
|
-
} = props;
|
|
16016
|
-
const tid = useTestIds(props, "card");
|
|
16017
|
-
const { hoverProps, isHovered } = useHover16({ isDisabled });
|
|
16018
|
-
const isList = type === "list";
|
|
16019
|
-
const imgHeight = isList ? 96 : bordered ? 224 : 256;
|
|
16020
|
-
const styles = useMemo34(
|
|
16021
|
-
() => ({
|
|
16022
|
-
...baseStyles4(type),
|
|
16023
|
-
...isList && listStyles,
|
|
16024
|
-
...bordered && borderedStyles,
|
|
16025
|
-
...isHovered && cardHoverStyles,
|
|
16026
|
-
...isDisabled && disabledStyles3
|
|
16027
|
-
}),
|
|
16028
|
-
[isDisabled, isHovered, bordered, type, isList]
|
|
16029
|
-
);
|
|
16030
|
-
return /* @__PURE__ */ jsxs65("div", { css: styles, ...hoverProps, ...tid, children: [
|
|
16031
|
-
/* @__PURE__ */ jsx133(
|
|
16032
|
-
"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,
|
|
16033
16052
|
{
|
|
16034
|
-
|
|
16035
|
-
|
|
16036
|
-
|
|
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);
|
|
16037
16059
|
},
|
|
16038
|
-
|
|
16039
|
-
}
|
|
16040
|
-
),
|
|
16041
|
-
isHovered && buttonMenuItems && /* @__PURE__ */ jsx133("div", { css: Css.absolute.right1.top1.if(bordered && !isList).right3.top3.$, children: /* @__PURE__ */ jsx133(
|
|
16042
|
-
ButtonMenu,
|
|
16043
|
-
{
|
|
16044
|
-
trigger: { icon: "verticalDots", color: isList ? "rgba(100, 100, 100, 1)" /* Gray700 */ : "rgba(255,255,255,1)" /* White */ },
|
|
16045
|
-
items: buttonMenuItems
|
|
16060
|
+
...this.testId(tid)
|
|
16046
16061
|
}
|
|
16047
|
-
)
|
|
16048
|
-
|
|
16049
|
-
|
|
16050
|
-
|
|
16051
|
-
|
|
16052
|
-
|
|
16053
|
-
] }),
|
|
16054
|
-
/* @__PURE__ */ jsx133("div", { ...tid.details, children: detailContent })
|
|
16055
|
-
] })
|
|
16056
|
-
] });
|
|
16057
|
-
}
|
|
16058
|
-
var width = { card: 256, list: 520 };
|
|
16059
|
-
var baseStyles4 = (type) => Css.wPx(width[type]).bgWhite.df.fdc.gap1.relative.$;
|
|
16060
|
-
var listStyles = Css.df.fdr.gap2.$;
|
|
16061
|
-
var borderedStyles = Css.ba.br8.bcGray300.p2.$;
|
|
16062
|
-
var disabledStyles3 = Css.add("opacity", 0.5).add("transition", "opacity 0.3s ease").$;
|
|
16063
|
-
var cardHoverStyles = Css.bcGray400.cursorPointer.$;
|
|
16064
|
-
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
|
+
};
|
|
16065
16068
|
|
|
16066
|
-
// src/components/
|
|
16067
|
-
|
|
16068
|
-
|
|
16069
|
-
|
|
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(
|
|
16070
16111
|
"div",
|
|
16071
16112
|
{
|
|
16072
16113
|
css: {
|
|
16073
|
-
...Css.
|
|
16074
|
-
"& > p": Css.my2.$
|
|
16114
|
+
...vertical ? Css.df.fdc.gap2.$ : Css.df.aic.gap1.$
|
|
16075
16115
|
},
|
|
16076
|
-
|
|
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
|
+
]
|
|
16077
16135
|
}
|
|
16078
16136
|
);
|
|
16079
16137
|
}
|
|
16138
|
+
var _Filters = memo(Filters);
|
|
16080
16139
|
|
|
16081
|
-
// src/components/
|
|
16082
|
-
import
|
|
16083
|
-
|
|
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
|
+
}
|
|
16084
16147
|
|
|
16085
|
-
// src/components/
|
|
16086
|
-
import {
|
|
16087
|
-
|
|
16088
|
-
|
|
16089
|
-
|
|
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 });
|
|
16090
16165
|
}
|
|
16091
|
-
|
|
16092
|
-
|
|
16093
|
-
|
|
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
|
+
);
|
|
16094
16180
|
}
|
|
16095
16181
|
|
|
16096
|
-
// src/components/
|
|
16097
|
-
import {
|
|
16098
|
-
|
|
16099
|
-
|
|
16100
|
-
|
|
16101
|
-
|
|
16102
|
-
|
|
16103
|
-
|
|
16104
|
-
|
|
16105
|
-
|
|
16106
|
-
|
|
16107
|
-
|
|
16108
|
-
|
|
16109
|
-
|
|
16110
|
-
const
|
|
16111
|
-
|
|
16112
|
-
|
|
16113
|
-
|
|
16114
|
-
|
|
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
|
-
|
|
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
|
|
16145
16260
|
}
|
|
16146
|
-
|
|
16147
|
-
|
|
16148
|
-
|
|
16149
|
-
|
|
16150
|
-
|
|
16151
|
-
|
|
16152
|
-
|
|
16153
|
-
|
|
16154
|
-
|
|
16155
|
-
|
|
16156
|
-
|
|
16157
|
-
const x = clientX - transformFrom.current.x - left;
|
|
16158
|
-
const y = clientY - transformFrom.current.y - top;
|
|
16159
|
-
dragEl.current.style.transform = `translate(${x}px, ${y}px)`;
|
|
16160
|
-
const maybeTarget = "touches" in e ? document.elementFromPoint(clientX, clientY) : e.target;
|
|
16161
|
-
const target = maybeTarget instanceof HTMLElement ? maybeTarget?.closest(`[${gridItemIdKey}]`) : void 0;
|
|
16162
|
-
if (target instanceof HTMLElement && target !== cloneEl.current && target !== dragEl.current) {
|
|
16163
|
-
const targetPos = target.getBoundingClientRect();
|
|
16164
|
-
const isHalfwayPassedTarget = (clientY - targetPos.top) / (targetPos.bottom - targetPos.top) > 0.5 || (clientX - targetPos.left) / (targetPos.right - targetPos.left) > 0.5;
|
|
16165
|
-
const shouldInsert = isHalfwayPassedTarget && target.nextSibling !== cloneEl.current || !isHalfwayPassedTarget && target.previousSibling !== cloneEl.current;
|
|
16166
|
-
if (shouldInsert) {
|
|
16167
|
-
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
|
|
16168
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
|
|
16169
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 */ })
|
|
16170
16339
|
}
|
|
16171
|
-
}
|
|
16172
|
-
|
|
16173
|
-
|
|
16174
|
-
|
|
16175
|
-
|
|
16176
|
-
|
|
16177
|
-
|
|
16178
|
-
|
|
16179
|
-
|
|
16180
|
-
|
|
16181
|
-
|
|
16182
|
-
transformFrom.current = { x: clientX - left, y: clientY - top };
|
|
16183
|
-
cloneEl.current = dragEl.current.cloneNode();
|
|
16184
|
-
cloneEl.current?.setAttribute(
|
|
16185
|
-
"style",
|
|
16186
|
-
`border-width: 2px; border-color: ${"rgba(201, 201, 201, 1)" /* Gray400 */}; border-style: dashed; width:${rect.width}px; height:${rect.height}px;`
|
|
16187
|
-
);
|
|
16188
|
-
cloneEl.current?.setAttribute(gridCloneKey, "true");
|
|
16189
|
-
cloneEl.current.removeAttribute("id");
|
|
16190
|
-
cloneEl.current?.classList.remove(activeGridItemClass);
|
|
16191
|
-
gridEl.current.insertBefore(cloneEl.current, dragEl.current.nextSibling);
|
|
16192
|
-
dragEl.current.setAttribute(
|
|
16193
|
-
"style",
|
|
16194
|
-
`pointer-events: none; position:fixed; z-index: 9999; top:${top}px; left:${left}px; width:${rect.width}px; height:${rect.height}px;`
|
|
16195
|
-
);
|
|
16196
|
-
gridEl.current.style.cursor = "grabbing";
|
|
16197
|
-
gridEl.current.addEventListener("mousemove", onMove);
|
|
16198
|
-
gridEl.current.addEventListener("touchmove", onMove);
|
|
16199
|
-
}
|
|
16200
|
-
},
|
|
16201
|
-
[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 }) })
|
|
16202
16351
|
);
|
|
16203
|
-
|
|
16204
|
-
|
|
16205
|
-
|
|
16206
|
-
|
|
16207
|
-
|
|
16208
|
-
|
|
16209
|
-
|
|
16210
|
-
|
|
16211
|
-
|
|
16212
|
-
|
|
16213
|
-
|
|
16214
|
-
|
|
16215
|
-
|
|
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);
|
|
16216
16374
|
},
|
|
16217
|
-
[
|
|
16375
|
+
[setRightPaneContent]
|
|
16218
16376
|
);
|
|
16219
|
-
const
|
|
16220
|
-
|
|
16221
|
-
|
|
16222
|
-
|
|
16223
|
-
|
|
16224
|
-
if (isSpaceKey && !reorderViaKeyboard.current) {
|
|
16225
|
-
e.preventDefault();
|
|
16226
|
-
reorderViaKeyboard.current = true;
|
|
16227
|
-
document.addEventListener("pointerdown", cancelReorder);
|
|
16228
|
-
initReorder();
|
|
16229
|
-
return;
|
|
16230
|
-
}
|
|
16231
|
-
if (!reorderViaKeyboard.current) {
|
|
16232
|
-
return;
|
|
16233
|
-
}
|
|
16234
|
-
const isEnterKey = e.key === "Enter";
|
|
16235
|
-
const isTabKey = e.key === "Tab";
|
|
16236
|
-
if (isEnterKey || isSpaceKey || isTabKey) {
|
|
16237
|
-
if (!isTabKey) {
|
|
16238
|
-
e.preventDefault();
|
|
16239
|
-
}
|
|
16240
|
-
commitReorder();
|
|
16241
|
-
if (isEnterKey) {
|
|
16242
|
-
moveHandle.blur();
|
|
16243
|
-
}
|
|
16244
|
-
document.removeEventListener("pointerdown", cancelReorder);
|
|
16245
|
-
return;
|
|
16246
|
-
}
|
|
16247
|
-
if (e.key === "Escape") {
|
|
16248
|
-
e.preventDefault();
|
|
16249
|
-
cancelReorder();
|
|
16250
|
-
document.removeEventListener("pointerdown", cancelReorder);
|
|
16251
|
-
return;
|
|
16252
|
-
}
|
|
16253
|
-
const movingLeft = ["ArrowLeft", "ArrowUp"].includes(e.key);
|
|
16254
|
-
const movingRight = ["ArrowRight", "ArrowDown"].includes(e.key);
|
|
16255
|
-
if (movingLeft || movingRight) {
|
|
16256
|
-
e.preventDefault();
|
|
16257
|
-
const gridItems = getGridItems();
|
|
16258
|
-
const currentIndex = gridItems.map((child) => child.getAttribute(gridItemIdKey)).filter(isDefined).indexOf(dragEl.current.getAttribute(gridItemIdKey));
|
|
16259
|
-
const newIndex = movingLeft ? currentIndex - 1 : currentIndex + 2;
|
|
16260
|
-
const insertBeforeElement = gridItems[newIndex] ?? gridItems[gridItems.length - 1].nextSibling;
|
|
16261
|
-
if (movingLeft && currentIndex > 0 || movingRight && currentIndex < gridItems.length - 1) {
|
|
16262
|
-
gridEl.current.insertBefore(dragEl.current, insertBeforeElement);
|
|
16263
|
-
}
|
|
16264
|
-
moveHandle.focus();
|
|
16265
|
-
}
|
|
16266
|
-
}
|
|
16267
|
-
},
|
|
16268
|
-
[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]
|
|
16269
16382
|
);
|
|
16270
|
-
return /* @__PURE__ */
|
|
16271
|
-
"div",
|
|
16272
|
-
{
|
|
16273
|
-
ref: gridEl,
|
|
16274
|
-
css: {
|
|
16275
|
-
...Css.ctis.dg.addIn(`& .${activeGridItemClass}`, activeItemStyles ?? Css.bshModal.$).$,
|
|
16276
|
-
...gridStyles
|
|
16277
|
-
},
|
|
16278
|
-
onTouchStart: onDragStart,
|
|
16279
|
-
onMouseDown: onDragStart,
|
|
16280
|
-
onTouchEnd: onDragEnd,
|
|
16281
|
-
onMouseUp: onDragEnd,
|
|
16282
|
-
...tid,
|
|
16283
|
-
children
|
|
16284
|
-
}
|
|
16285
|
-
) });
|
|
16383
|
+
return /* @__PURE__ */ jsx141(RightPaneContext.Provider, { value: context, children });
|
|
16286
16384
|
}
|
|
16287
|
-
|
|
16288
|
-
|
|
16289
|
-
var activeGridItemClass = "dndgrid-active";
|
|
16290
|
-
|
|
16291
|
-
// src/components/DnDGrid/DnDGridItemHandle.tsx
|
|
16292
|
-
import { mergeProps as mergeProps12, useFocusRing as useFocusRing13, useHover as useHover17 } from "react-aria";
|
|
16293
|
-
import { jsx as jsx136 } from "@emotion/react/jsx-runtime";
|
|
16294
|
-
function DnDGridItemHandle(props) {
|
|
16295
|
-
const { dragHandleProps, icon = "move", compact = false, color } = props;
|
|
16296
|
-
const { focusProps, isFocusVisible } = useFocusRing13();
|
|
16297
|
-
const { hoverProps, isHovered } = useHover17({});
|
|
16298
|
-
const tid = useTestIds(props, "dragHandle");
|
|
16299
|
-
const iconButtonNormal2 = Css.hPx(28).wPx(28).br8.bw2.$;
|
|
16300
|
-
const iconButtonCompact2 = Css.hPx(18).wPx(18).br4.bw1.$;
|
|
16301
|
-
return /* @__PURE__ */ jsx136(
|
|
16302
|
-
"button",
|
|
16303
|
-
{
|
|
16304
|
-
css: {
|
|
16305
|
-
...compact ? iconButtonCompact2 : iconButtonNormal2,
|
|
16306
|
-
...Css.cursor("grab").bcTransparent.bss.bgTransparent.outline0.dif.aic.jcc.transition.if(isFocusVisible).bcBlue700.$,
|
|
16307
|
-
...isHovered && Css.bgGray200.$
|
|
16308
|
-
},
|
|
16309
|
-
...mergeProps12(dragHandleProps, focusProps, hoverProps),
|
|
16310
|
-
...tid,
|
|
16311
|
-
children: /* @__PURE__ */ jsx136(Icon, { icon, inc: compact ? 2 : void 0, color })
|
|
16312
|
-
}
|
|
16313
|
-
);
|
|
16385
|
+
function useRightPaneContext() {
|
|
16386
|
+
return useContext13(RightPaneContext);
|
|
16314
16387
|
}
|
|
16315
16388
|
|
|
16316
|
-
// src/components/
|
|
16317
|
-
import {
|
|
16318
|
-
|
|
16319
|
-
|
|
16320
|
-
|
|
16321
|
-
const {
|
|
16322
|
-
|
|
16323
|
-
|
|
16324
|
-
|
|
16325
|
-
|
|
16326
|
-
|
|
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
|
|
16327
16407
|
}
|
|
16328
|
-
|
|
16329
|
-
|
|
16330
|
-
|
|
16331
|
-
|
|
16332
|
-
|
|
16333
|
-
|
|
16334
|
-
|
|
16335
|
-
onDragHandleKeyDown(e);
|
|
16336
|
-
}
|
|
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
|
|
16337
16415
|
}
|
|
16338
|
-
|
|
16339
|
-
|
|
16340
|
-
|
|
16341
|
-
|
|
16342
|
-
|
|
16343
|
-
|
|
16344
|
-
|
|
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
|
+
] }) });
|
|
16345
16434
|
}
|
|
16346
16435
|
|
|
16347
|
-
// src/components/
|
|
16348
|
-
|
|
16349
|
-
|
|
16350
|
-
|
|
16351
|
-
|
|
16352
|
-
|
|
16353
|
-
|
|
16354
|
-
|
|
16355
|
-
}
|
|
16356
|
-
get defaultValue() {
|
|
16357
|
-
return this.props.defaultValue;
|
|
16358
|
-
}
|
|
16359
|
-
testId(tid) {
|
|
16360
|
-
return tid[defaultTestId(this.label)];
|
|
16361
|
-
}
|
|
16362
|
-
};
|
|
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
|
+
}
|
|
16363
16444
|
|
|
16364
|
-
// src/components/
|
|
16365
|
-
import {
|
|
16366
|
-
|
|
16367
|
-
|
|
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);
|
|
16368
16464
|
}
|
|
16369
|
-
var anyOption = {};
|
|
16370
|
-
var DateFilter = class extends BaseFilter {
|
|
16371
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16372
|
-
const { label, operations, getOperationValue, getOperationLabel } = this.props;
|
|
16373
|
-
return /* @__PURE__ */ jsxs66(Fragment25, { children: [
|
|
16374
|
-
vertical && /* @__PURE__ */ jsx137(Label, { label }),
|
|
16375
|
-
/* @__PURE__ */ jsxs66(CompoundField, { children: [
|
|
16376
|
-
/* @__PURE__ */ jsx137(
|
|
16377
|
-
SelectField,
|
|
16378
|
-
{
|
|
16379
|
-
compact: true,
|
|
16380
|
-
sizeToContent: true,
|
|
16381
|
-
options: [
|
|
16382
|
-
// Always show the 'Any' option
|
|
16383
|
-
anyOption,
|
|
16384
|
-
...operations
|
|
16385
|
-
],
|
|
16386
|
-
getOptionValue: (o) => o === anyOption ? void 0 : getOperationValue(o),
|
|
16387
|
-
getOptionLabel: (o) => o === anyOption ? "Any" : getOperationLabel(o),
|
|
16388
|
-
value: value?.op,
|
|
16389
|
-
onSelect: (op) => (
|
|
16390
|
-
// default the selected date to today if it doesn't exist in the filter's value
|
|
16391
|
-
setValue(op ? { op, value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date() } : void 0)
|
|
16392
|
-
),
|
|
16393
|
-
label: inModal ? `${label} date filter operation` : label,
|
|
16394
|
-
labelStyle: !inModal && !vertical ? "inline" : inModal || vertical ? "hidden" : "above",
|
|
16395
|
-
nothingSelectedText: "Any",
|
|
16396
|
-
...tid[`${defaultTestId(this.label)}_dateOperation`]
|
|
16397
|
-
}
|
|
16398
|
-
),
|
|
16399
|
-
/* @__PURE__ */ jsx137(
|
|
16400
|
-
DateField,
|
|
16401
|
-
{
|
|
16402
|
-
compact: true,
|
|
16403
|
-
labelStyle: "inline",
|
|
16404
|
-
value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date(),
|
|
16405
|
-
label: "Date",
|
|
16406
|
-
onChange: (d) => setValue({ ...value, value: d }),
|
|
16407
|
-
disabled: !value,
|
|
16408
|
-
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
16409
|
-
}
|
|
16410
|
-
)
|
|
16411
|
-
] })
|
|
16412
|
-
] });
|
|
16413
|
-
}
|
|
16414
|
-
};
|
|
16415
16465
|
|
|
16416
|
-
// src/components/
|
|
16417
|
-
import {
|
|
16418
|
-
|
|
16419
|
-
|
|
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
|
+
] }) }) }) }) }) });
|
|
16420
16516
|
}
|
|
16421
|
-
var
|
|
16422
|
-
|
|
16423
|
-
|
|
16424
|
-
|
|
16425
|
-
|
|
16426
|
-
|
|
16427
|
-
|
|
16428
|
-
|
|
16429
|
-
|
|
16430
|
-
|
|
16431
|
-
|
|
16432
|
-
placeholder: placeholderText,
|
|
16433
|
-
label: testFieldLabel ?? "Date",
|
|
16434
|
-
value: value?.value ? { from: new Date(value.value.from), to: new Date(value.value.to) } : void 0,
|
|
16435
|
-
onChange: (d) => d ? setValue({ op: defaultValue?.op, value: d }) : setValue(void 0),
|
|
16436
|
-
disabledDays,
|
|
16437
|
-
...tid[`${defaultTestId(this.label)}_dateField`]
|
|
16438
|
-
}
|
|
16439
|
-
)
|
|
16440
|
-
] });
|
|
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();
|
|
16441
16528
|
}
|
|
16442
16529
|
};
|
|
16443
|
-
|
|
16444
|
-
|
|
16445
|
-
import { jsx as jsx139 } from "@emotion/react/jsx-runtime";
|
|
16446
|
-
function multiFilter(props) {
|
|
16447
|
-
return (key) => new MultiFilter(key, props);
|
|
16530
|
+
function useBeamContext() {
|
|
16531
|
+
return useContext15(BeamContext);
|
|
16448
16532
|
}
|
|
16449
|
-
|
|
16450
|
-
|
|
16451
|
-
|
|
16452
|
-
|
|
16453
|
-
|
|
16454
|
-
|
|
16455
|
-
|
|
16456
|
-
|
|
16457
|
-
|
|
16458
|
-
|
|
16459
|
-
|
|
16460
|
-
|
|
16461
|
-
|
|
16462
|
-
|
|
16463
|
-
|
|
16464
|
-
|
|
16465
|
-
|
|
16466
|
-
|
|
16467
|
-
|
|
16468
|
-
|
|
16469
|
-
|
|
16470
|
-
|
|
16471
|
-
|
|
16472
|
-
|
|
16473
|
-
labelStyle: "hidden",
|
|
16474
|
-
...tid[defaultTestId(this.label)]
|
|
16475
|
-
}
|
|
16476
|
-
);
|
|
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
|
|
16477
16557
|
}
|
|
16478
|
-
|
|
16479
|
-
|
|
16480
|
-
|
|
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",
|
|
16481
16589
|
{
|
|
16482
|
-
|
|
16483
|
-
|
|
16484
|
-
|
|
16485
|
-
|
|
16486
|
-
|
|
16487
|
-
|
|
16488
|
-
|
|
16489
|
-
|
|
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] : {}
|
|
16490
16601
|
},
|
|
16491
|
-
|
|
16492
|
-
|
|
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
|
+
]
|
|
16493
16607
|
}
|
|
16494
|
-
)
|
|
16495
|
-
}
|
|
16496
|
-
};
|
|
16497
|
-
|
|
16498
|
-
// src/components/Filters/NumberRangeFilter.tsx
|
|
16499
|
-
import { Fragment as Fragment27, jsx as jsx140, jsxs as jsxs68 } from "@emotion/react/jsx-runtime";
|
|
16500
|
-
function numberRangeFilter(props) {
|
|
16501
|
-
return (key) => new NumberRangeFilter(key, props);
|
|
16608
|
+
)
|
|
16609
|
+
}) });
|
|
16502
16610
|
}
|
|
16503
|
-
var
|
|
16504
|
-
|
|
16505
|
-
|
|
16506
|
-
|
|
16507
|
-
|
|
16508
|
-
|
|
16509
|
-
|
|
16510
|
-
|
|
16511
|
-
|
|
16512
|
-
|
|
16513
|
-
|
|
16514
|
-
|
|
16515
|
-
|
|
16516
|
-
|
|
16517
|
-
|
|
16518
|
-
|
|
16519
|
-
|
|
16520
|
-
|
|
16521
|
-
|
|
16522
|
-
|
|
16523
|
-
|
|
16524
|
-
|
|
16525
|
-
|
|
16526
|
-
|
|
16527
|
-
/* @__PURE__ */ jsx140(
|
|
16528
|
-
NumberField,
|
|
16529
|
-
{
|
|
16530
|
-
labelStyle: "inline",
|
|
16531
|
-
clearable: true,
|
|
16532
|
-
label: "Max",
|
|
16533
|
-
value: max,
|
|
16534
|
-
type: numberFieldType,
|
|
16535
|
-
numberFormatOptions,
|
|
16536
|
-
onChange: (maxVal) => {
|
|
16537
|
-
const minValue = min ? { min } : {};
|
|
16538
|
-
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
16539
|
-
},
|
|
16540
|
-
...tid[`${defaultTestId(label)}_max_vertical`]
|
|
16541
|
-
}
|
|
16542
|
-
)
|
|
16543
|
-
] }),
|
|
16544
|
-
!vertical && /* @__PURE__ */ jsxs68(CompoundField, { ...tid, children: [
|
|
16545
|
-
/* @__PURE__ */ jsx140(
|
|
16546
|
-
NumberField,
|
|
16547
|
-
{
|
|
16548
|
-
compact: true,
|
|
16549
|
-
sizeToContent: !inModal,
|
|
16550
|
-
labelStyle: "inline",
|
|
16551
|
-
clearable: true,
|
|
16552
|
-
label: !inModal ? `${label} Min` : "Min",
|
|
16553
|
-
value: min,
|
|
16554
|
-
type: numberFieldType,
|
|
16555
|
-
numberFormatOptions,
|
|
16556
|
-
onChange: (minVal) => {
|
|
16557
|
-
const maxValue = max ? { max } : {};
|
|
16558
|
-
setValue(minVal || max ? { min: minVal, ...maxValue } : void 0);
|
|
16559
|
-
},
|
|
16560
|
-
...tid[`${defaultTestId(label)}_min`]
|
|
16561
|
-
}
|
|
16562
|
-
),
|
|
16563
|
-
/* @__PURE__ */ jsx140(
|
|
16564
|
-
NumberField,
|
|
16565
|
-
{
|
|
16566
|
-
compact: true,
|
|
16567
|
-
sizeToContent: !inModal,
|
|
16568
|
-
labelStyle: "inline",
|
|
16569
|
-
clearable: true,
|
|
16570
|
-
label: !inModal ? `${label} Max` : "Max",
|
|
16571
|
-
value: max,
|
|
16572
|
-
type: numberFieldType,
|
|
16573
|
-
numberFormatOptions,
|
|
16574
|
-
onChange: (maxVal) => {
|
|
16575
|
-
const minValue = min ? { min } : {};
|
|
16576
|
-
setValue(maxVal || min ? { max: maxVal, ...minValue } : void 0);
|
|
16577
|
-
},
|
|
16578
|
-
...tid[`${defaultTestId(label)}_max`]
|
|
16579
|
-
}
|
|
16580
|
-
)
|
|
16581
|
-
] })
|
|
16582
|
-
] });
|
|
16583
|
-
}
|
|
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.$
|
|
16584
16635
|
};
|
|
16585
16636
|
|
|
16586
|
-
// src/components/
|
|
16587
|
-
import {
|
|
16588
|
-
|
|
16589
|
-
|
|
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
|
+
);
|
|
16590
16681
|
}
|
|
16591
|
-
|
|
16592
|
-
|
|
16593
|
-
|
|
16594
|
-
|
|
16595
|
-
|
|
16596
|
-
|
|
16597
|
-
|
|
16598
|
-
|
|
16599
|
-
|
|
16600
|
-
|
|
16601
|
-
|
|
16602
|
-
|
|
16603
|
-
|
|
16604
|
-
|
|
16605
|
-
|
|
16606
|
-
|
|
16607
|
-
|
|
16608
|
-
|
|
16609
|
-
|
|
16610
|
-
|
|
16611
|
-
|
|
16612
|
-
|
|
16613
|
-
|
|
16614
|
-
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16615
|
-
sizeToContent: !inModal && !vertical,
|
|
16616
|
-
nothingSelectedText: nothingSelectedText ?? "All",
|
|
16617
|
-
onSelect: (value2) => setValue(value2 || void 0),
|
|
16618
|
-
...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);
|
|
16619
16705
|
}
|
|
16620
|
-
|
|
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.$;
|
|
16621
16728
|
}
|
|
16622
|
-
};
|
|
16623
|
-
|
|
16624
|
-
// src/components/Filters/TreeFilter.tsx
|
|
16625
|
-
import { jsx as jsx142 } from "@emotion/react/jsx-runtime";
|
|
16626
|
-
function treeFilter(props) {
|
|
16627
|
-
return (key) => new TreeFilter(key, props);
|
|
16628
16729
|
}
|
|
16629
|
-
|
|
16630
|
-
|
|
16631
|
-
|
|
16632
|
-
|
|
16633
|
-
|
|
16634
|
-
|
|
16635
|
-
|
|
16636
|
-
|
|
16637
|
-
|
|
16638
|
-
|
|
16639
|
-
|
|
16640
|
-
|
|
16641
|
-
|
|
16642
|
-
|
|
16643
|
-
|
|
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
|
|
16644
16767
|
},
|
|
16645
|
-
|
|
16646
|
-
...this.testId(tid)
|
|
16768
|
+
children: /* @__PURE__ */ jsx149("img", { css: Css.w100.h100.objectFit(imageFit).$, src: imgSrc, alt: title, ...tid.img })
|
|
16647
16769
|
}
|
|
16648
|
-
)
|
|
16649
|
-
|
|
16650
|
-
|
|
16651
|
-
|
|
16652
|
-
// src/components/Filters/BooleanFilter.tsx
|
|
16653
|
-
import { jsx as jsx143 } from "@emotion/react/jsx-runtime";
|
|
16654
|
-
function booleanFilter(props) {
|
|
16655
|
-
return (key) => new BooleanFilter(key, props);
|
|
16656
|
-
}
|
|
16657
|
-
var BooleanFilter = class extends BaseFilter {
|
|
16658
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16659
|
-
const { options = defaultBooleanOptions, label, defaultValue, ...props } = this.props;
|
|
16660
|
-
return /* @__PURE__ */ jsx143(
|
|
16661
|
-
SelectField,
|
|
16770
|
+
),
|
|
16771
|
+
isHovered && buttonMenuItems && /* @__PURE__ */ jsx149("div", { css: Css.absolute.right1.top1.if(bordered && !isList).right3.top3.$, children: /* @__PURE__ */ jsx149(
|
|
16772
|
+
ButtonMenu,
|
|
16662
16773
|
{
|
|
16663
|
-
|
|
16664
|
-
|
|
16665
|
-
label: this.label,
|
|
16666
|
-
value: String(value),
|
|
16667
|
-
labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
|
|
16668
|
-
sizeToContent: !inModal && !vertical,
|
|
16669
|
-
options,
|
|
16670
|
-
getOptionValue: (o) => String(o[0]),
|
|
16671
|
-
getOptionLabel: (o) => o[1],
|
|
16672
|
-
onSelect: (value2) => {
|
|
16673
|
-
const parsedValue = value2 === "undefined" ? void 0 : value2 === "true";
|
|
16674
|
-
setValue(parsedValue);
|
|
16675
|
-
},
|
|
16676
|
-
...this.testId(tid)
|
|
16774
|
+
trigger: { icon: "verticalDots", color: isList ? "rgba(100, 100, 100, 1)" /* Gray700 */ : "rgba(255,255,255,1)" /* White */ },
|
|
16775
|
+
items: buttonMenuItems
|
|
16677
16776
|
}
|
|
16678
|
-
)
|
|
16679
|
-
|
|
16680
|
-
|
|
16681
|
-
|
|
16682
|
-
|
|
16683
|
-
|
|
16684
|
-
|
|
16685
|
-
|
|
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").$;
|
|
16686
16795
|
|
|
16687
|
-
// src/components/
|
|
16688
|
-
import { jsx as
|
|
16689
|
-
function
|
|
16690
|
-
return
|
|
16691
|
-
|
|
16692
|
-
|
|
16693
|
-
|
|
16694
|
-
|
|
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
|
+
);
|
|
16695
16809
|
}
|
|
16696
|
-
var CheckboxFilter = class extends BaseFilter {
|
|
16697
|
-
render(value, setValue, tid, inModal, vertical) {
|
|
16698
|
-
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
16699
|
-
return /* @__PURE__ */ jsx144(
|
|
16700
|
-
Checkbox,
|
|
16701
|
-
{
|
|
16702
|
-
...props,
|
|
16703
|
-
selected: value === void 0 ? false : value === onValue,
|
|
16704
|
-
label: this.label,
|
|
16705
|
-
onChange: (on) => {
|
|
16706
|
-
setValue(on ? onValue : offValue);
|
|
16707
|
-
},
|
|
16708
|
-
...this.testId(tid)
|
|
16709
|
-
}
|
|
16710
|
-
);
|
|
16711
|
-
}
|
|
16712
|
-
get hideLabelInModal() {
|
|
16713
|
-
return true;
|
|
16714
|
-
}
|
|
16715
|
-
};
|
|
16716
16810
|
|
|
16717
|
-
// src/components/
|
|
16718
|
-
import
|
|
16811
|
+
// src/components/DnDGrid/DnDGrid.tsx
|
|
16812
|
+
import equal2 from "fast-deep-equal";
|
|
16813
|
+
import { useCallback as useCallback20, useRef as useRef48 } from "react";
|
|
16719
16814
|
|
|
16720
|
-
// src/components/
|
|
16721
|
-
import {
|
|
16722
|
-
|
|
16723
|
-
|
|
16724
|
-
|
|
16725
|
-
const { size, children, keepOpen } = props;
|
|
16726
|
-
useEffect25(() => {
|
|
16727
|
-
if (!keepOpen) {
|
|
16728
|
-
openModal({ size, content: children });
|
|
16729
|
-
}
|
|
16730
|
-
}, [keepOpen, openModal, size, children]);
|
|
16731
|
-
if (keepOpen) {
|
|
16732
|
-
return /* @__PURE__ */ jsx145(Modal, { size, content: children });
|
|
16733
|
-
} else {
|
|
16734
|
-
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: () => {
|
|
16735
16820
|
}
|
|
16821
|
+
});
|
|
16822
|
+
function useDnDGridContext() {
|
|
16823
|
+
return useContext16(DnDGridContext);
|
|
16736
16824
|
}
|
|
16737
16825
|
|
|
16738
|
-
// src/components/
|
|
16739
|
-
import {
|
|
16740
|
-
function
|
|
16741
|
-
const {
|
|
16742
|
-
const
|
|
16743
|
-
const
|
|
16744
|
-
const
|
|
16745
|
-
|
|
16746
|
-
|
|
16747
|
-
|
|
16748
|
-
|
|
16749
|
-
|
|
16750
|
-
|
|
16751
|
-
|
|
16752
|
-
|
|
16753
|
-
)
|
|
16754
|
-
|
|
16755
|
-
|
|
16756
|
-
|
|
16757
|
-
|
|
16758
|
-
|
|
16759
|
-
|
|
16760
|
-
|
|
16761
|
-
|
|
16762
|
-
|
|
16763
|
-
|
|
16764
|
-
|
|
16765
|
-
|
|
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;
|
|
16766
16960
|
}
|
|
16767
|
-
|
|
16768
|
-
|
|
16769
|
-
|
|
16770
|
-
|
|
16771
|
-
|
|
16772
|
-
|
|
16773
|
-
|
|
16774
|
-
|
|
16775
|
-
onApply(modalFilter);
|
|
16776
|
-
closeModal();
|
|
16777
|
-
},
|
|
16778
|
-
...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();
|
|
16779
16969
|
}
|
|
16780
|
-
|
|
16781
|
-
|
|
16782
|
-
|
|
16783
|
-
|
|
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
|
-
|
|
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",
|
|
16812
17002
|
{
|
|
16813
|
-
|
|
16814
|
-
|
|
16815
|
-
|
|
16816
|
-
|
|
16817
|
-
|
|
16818
|
-
|
|
16819
|
-
|
|
16820
|
-
|
|
16821
|
-
|
|
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
|
|
16822
17014
|
}
|
|
16823
|
-
) })
|
|
16824
|
-
|
|
16825
|
-
|
|
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",
|
|
16826
17033
|
{
|
|
16827
17034
|
css: {
|
|
16828
|
-
...
|
|
17035
|
+
...compact ? iconButtonCompact2 : iconButtonNormal2,
|
|
17036
|
+
...Css.cursor("grab").bcTransparent.bss.bgTransparent.outline0.dif.aic.jcc.transition.if(isFocusVisible).bcBlue700.$,
|
|
17037
|
+
...isHovered && Css.bgGray200.$
|
|
16829
17038
|
},
|
|
16830
|
-
...
|
|
16831
|
-
|
|
16832
|
-
|
|
16833
|
-
safeEntries(pageFilters).map(([key, f]) => /* @__PURE__ */ jsx147("div", { children: f.render(filter[key], (value) => onChange(updateFilter(filter, key, value)), testId, false, vertical) }, key)),
|
|
16834
|
-
Object.keys(modalFilters).length > 0 && /* @__PURE__ */ jsx147(
|
|
16835
|
-
Button,
|
|
16836
|
-
{
|
|
16837
|
-
label: "More Filters",
|
|
16838
|
-
endAdornment: numModalFilters > 0 && /* @__PURE__ */ jsx147("span", { css: Css.wPx(16).hPx(16).fs0.br100.bgBlue700.white.tinySb.df.aic.jcc.$, children: numModalFilters }),
|
|
16839
|
-
variant: "secondary",
|
|
16840
|
-
onClick: () => openModal({
|
|
16841
|
-
// Spreading `props` to pass along `data-testid`
|
|
16842
|
-
content: /* @__PURE__ */ jsx147(FilterModal, { ...props, filter, onApply: onChange, filters: modalFilters })
|
|
16843
|
-
}),
|
|
16844
|
-
...testId.moreFiltersBtn
|
|
16845
|
-
}
|
|
16846
|
-
),
|
|
16847
|
-
Object.keys(filter).length > 0 && /* @__PURE__ */ jsx147("div", { children: /* @__PURE__ */ jsx147(Button, { label: "Clear", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn }) })
|
|
16848
|
-
]
|
|
17039
|
+
...mergeProps12(dragHandleProps, focusProps, hoverProps),
|
|
17040
|
+
...tid,
|
|
17041
|
+
children: /* @__PURE__ */ jsx152(Icon, { icon, inc: compact ? 2 : void 0, color })
|
|
16849
17042
|
}
|
|
16850
17043
|
);
|
|
16851
17044
|
}
|
|
16852
|
-
var _Filters = memo(Filters);
|
|
16853
17045
|
|
|
16854
|
-
// src/components/
|
|
16855
|
-
import {
|
|
16856
|
-
function
|
|
16857
|
-
|
|
16858
|
-
|
|
16859
|
-
|
|
16860
|
-
|
|
16861
|
-
|
|
16862
|
-
|
|
16863
|
-
|
|
16864
|
-
|
|
16865
|
-
const { defaultValue, onValue = true, offValue = void 0, ...props } = this.props;
|
|
16866
|
-
return /* @__PURE__ */ jsx148(
|
|
16867
|
-
Switch,
|
|
16868
|
-
{
|
|
16869
|
-
...props,
|
|
16870
|
-
selected: value === void 0 ? false : value === onValue,
|
|
16871
|
-
label: this.label,
|
|
16872
|
-
labelStyle: inModal || vertical ? "filter" : "inline",
|
|
16873
|
-
onChange: (on) => {
|
|
16874
|
-
setValue(on ? onValue : offValue);
|
|
16875
|
-
},
|
|
16876
|
-
...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
|
+
}
|
|
16877
17057
|
}
|
|
16878
|
-
|
|
16879
|
-
|
|
16880
|
-
|
|
16881
|
-
|
|
16882
|
-
|
|
16883
|
-
|
|
16884
|
-
|
|
16885
|
-
|
|
16886
|
-
|
|
16887
|
-
|
|
16888
|
-
|
|
16889
|
-
|
|
16890
|
-
|
|
16891
|
-
|
|
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 };
|
|
16892
17075
|
}
|
|
16893
|
-
var filterTestIdPrefix = "filter";
|
|
16894
17076
|
|
|
16895
17077
|
// src/components/Grid/ResponsiveGrid.tsx
|
|
16896
|
-
import { jsx as
|
|
17078
|
+
import { jsx as jsx153 } from "@emotion/react/jsx-runtime";
|
|
16897
17079
|
function ResponsiveGrid(props) {
|
|
16898
17080
|
const { children, ...hookProps } = props;
|
|
16899
17081
|
const { gridStyles } = useResponsiveGrid(hookProps);
|
|
16900
|
-
return /* @__PURE__ */
|
|
17082
|
+
return /* @__PURE__ */ jsx153("div", { css: { ...gridStyles }, children });
|
|
16901
17083
|
}
|
|
16902
17084
|
|
|
16903
17085
|
// src/components/Grid/ResponsiveGridItem.tsx
|
|
16904
|
-
import { jsx as
|
|
17086
|
+
import { jsx as jsx154 } from "@emotion/react/jsx-runtime";
|
|
16905
17087
|
function ResponsiveGridItem(props) {
|
|
16906
17088
|
const { colSpan, children } = props;
|
|
16907
17089
|
const { gridItemProps } = useResponsiveGridItem({ colSpan });
|
|
16908
|
-
return /* @__PURE__ */
|
|
17090
|
+
return /* @__PURE__ */ jsx154("div", { ...gridItemProps, children });
|
|
16909
17091
|
}
|
|
16910
17092
|
|
|
16911
17093
|
// src/components/Grid/useResponsiveGrid.ts
|
|
16912
|
-
import { useMemo as
|
|
17094
|
+
import { useMemo as useMemo38 } from "react";
|
|
16913
17095
|
|
|
16914
17096
|
// src/components/Grid/utils.ts
|
|
16915
17097
|
var gridItemDataAttribute = "data-grid-item-span";
|
|
@@ -16917,7 +17099,7 @@ var gridItemDataAttribute = "data-grid-item-span";
|
|
|
16917
17099
|
// src/components/Grid/useResponsiveGrid.ts
|
|
16918
17100
|
function useResponsiveGrid(props) {
|
|
16919
17101
|
const { minColumnWidth, gap, columns } = props;
|
|
16920
|
-
const gridStyles =
|
|
17102
|
+
const gridStyles = useMemo38(() => {
|
|
16921
17103
|
const gapCount = columns - 1;
|
|
16922
17104
|
const totalGapWidth = gap * gapCount;
|
|
16923
17105
|
const maxColumnWidth = `calc((100% - ${totalGapWidth}px) / ${columns})`;
|
|
@@ -16958,24 +17140,24 @@ function useResponsiveGridItem({ colSpan = 1 }) {
|
|
|
16958
17140
|
}
|
|
16959
17141
|
|
|
16960
17142
|
// src/components/HbLoadingSpinner.tsx
|
|
16961
|
-
import
|
|
17143
|
+
import React20, { useContext as useContext17, useMemo as useMemo39 } from "react";
|
|
16962
17144
|
|
|
16963
17145
|
// src/components/HbLoadingSpinner.base64.ts
|
|
16964
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";
|
|
16965
17147
|
|
|
16966
17148
|
// src/components/HbLoadingSpinner.tsx
|
|
16967
|
-
import { jsx as
|
|
17149
|
+
import { jsx as jsx155, jsxs as jsxs73 } from "@emotion/react/jsx-runtime";
|
|
16968
17150
|
function HbLoadingSpinner({ noQuips, extraQuips = [], extraQuipsOnly, iconOnly }) {
|
|
16969
17151
|
const ctx = useContext17(HbLoadingSpinnerContext);
|
|
16970
17152
|
const tid = useTestIds({}, "hbSpinner");
|
|
16971
|
-
const quip =
|
|
17153
|
+
const quip = useMemo39(() => {
|
|
16972
17154
|
const allQuips = extraQuipsOnly && extraQuips.length !== 0 ? extraQuips : [...ctx.quips, ...extraQuips];
|
|
16973
17155
|
const forceQuips = extraQuips.length !== 0 || noQuips === false;
|
|
16974
17156
|
if (ctx.noQuips && !forceQuips || noQuips || allQuips.length === 0) return "Loading...";
|
|
16975
17157
|
return allQuips[Math.floor(Math.random() * allQuips.length)];
|
|
16976
17158
|
}, [ctx.noQuips, ctx.quips, extraQuips, extraQuipsOnly, noQuips]);
|
|
16977
|
-
return /* @__PURE__ */
|
|
16978
|
-
/* @__PURE__ */
|
|
17159
|
+
return /* @__PURE__ */ jsxs73("div", { css: Css.df.fdc.jcc.aic.$, ...tid, children: [
|
|
17160
|
+
/* @__PURE__ */ jsx155(
|
|
16979
17161
|
"img",
|
|
16980
17162
|
{
|
|
16981
17163
|
src: HbLoadingSpinner_base64_default,
|
|
@@ -16988,7 +17170,7 @@ function HbLoadingSpinner({ noQuips, extraQuips = [], extraQuipsOnly, iconOnly }
|
|
|
16988
17170
|
...tid.gif
|
|
16989
17171
|
}
|
|
16990
17172
|
),
|
|
16991
|
-
!iconOnly && /* @__PURE__ */
|
|
17173
|
+
!iconOnly && /* @__PURE__ */ jsx155(
|
|
16992
17174
|
"div",
|
|
16993
17175
|
{
|
|
16994
17176
|
"data-chromatic": "ignore",
|
|
@@ -17008,63 +17190,28 @@ var HB_QUIPS_MISSION = [
|
|
|
17008
17190
|
"In Service of Our Customers"
|
|
17009
17191
|
].map(dotDotDot);
|
|
17010
17192
|
var HB_QUIPS_FLAVOR = ["HOM is HOW", "Scaling Massively", "#LoveIt"].map(dotDotDot);
|
|
17011
|
-
var HbLoadingSpinnerContext =
|
|
17193
|
+
var HbLoadingSpinnerContext = React20.createContext({
|
|
17012
17194
|
quips: ["Loading..."],
|
|
17013
17195
|
noQuips: false
|
|
17014
17196
|
});
|
|
17015
17197
|
function HbSpinnerProvider({ quips = [], children }) {
|
|
17016
|
-
const state =
|
|
17017
|
-
return /* @__PURE__ */
|
|
17018
|
-
}
|
|
17019
|
-
|
|
17020
|
-
// src/components/LoadingSkeleton.tsx
|
|
17021
|
-
import { jsx as jsx152 } from "@emotion/react/jsx-runtime";
|
|
17022
|
-
function LoadingSkeleton({
|
|
17023
|
-
rows = 1,
|
|
17024
|
-
columns = 1,
|
|
17025
|
-
size = "md",
|
|
17026
|
-
randomizeWidths = false,
|
|
17027
|
-
contrast = false
|
|
17028
|
-
}) {
|
|
17029
|
-
const cellArray = [...Array(columns)];
|
|
17030
|
-
const rowArray = [...Array(rows)];
|
|
17031
|
-
const rowHeight = sizeToPixels2[size];
|
|
17032
|
-
const rowCells = (rowNumber) => {
|
|
17033
|
-
const flexGrowForCell = randomizeWidths ? getRandomizedFlexBasisByRowIndex(rowNumber) : 1;
|
|
17034
|
-
return cellArray.map((_, i) => /* @__PURE__ */ jsx152(
|
|
17035
|
-
"div",
|
|
17036
|
-
{
|
|
17037
|
-
css: Css.br4.add("animation", "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite").add("flexGrow", flexGrowForCell).bgGray300.if(contrast).bgGray700.$
|
|
17038
|
-
},
|
|
17039
|
-
`row-${rowNumber}-cell-${i}`
|
|
17040
|
-
));
|
|
17041
|
-
};
|
|
17042
|
-
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}`)) });
|
|
17043
|
-
}
|
|
17044
|
-
function getRandomizedFlexBasisByRowIndex(rowIndex) {
|
|
17045
|
-
const randomizedFlexBasisValues = [0.65, 0.8, 0.75, 0.9, 0.8, 0.85, 0.8, 0.95];
|
|
17046
|
-
const valueIndex = rowIndex % randomizedFlexBasisValues.length;
|
|
17047
|
-
return randomizedFlexBasisValues[valueIndex];
|
|
17198
|
+
const state = useMemo39(() => ({ quips, noQuips: quips.length === 0 }), [quips]);
|
|
17199
|
+
return /* @__PURE__ */ jsx155(HbLoadingSpinnerContext.Provider, { value: state, children });
|
|
17048
17200
|
}
|
|
17049
|
-
var sizeToPixels2 = {
|
|
17050
|
-
sm: 16,
|
|
17051
|
-
md: 24,
|
|
17052
|
-
lg: 32
|
|
17053
|
-
};
|
|
17054
17201
|
|
|
17055
17202
|
// src/components/MaxLines.tsx
|
|
17056
17203
|
import { useLayoutEffect as useLayoutEffect2, useResizeObserver as useResizeObserver5 } from "@react-aria/utils";
|
|
17057
|
-
import { useCallback as useCallback21, useEffect as
|
|
17058
|
-
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";
|
|
17059
17206
|
function MaxLines({ maxLines, children }) {
|
|
17060
17207
|
const elRef = useRef49(null);
|
|
17061
|
-
const [hasMore, setHasMore] =
|
|
17062
|
-
const [expanded, setExpanded] =
|
|
17208
|
+
const [hasMore, setHasMore] = useState39(false);
|
|
17209
|
+
const [expanded, setExpanded] = useState39(false);
|
|
17063
17210
|
useLayoutEffect2(() => {
|
|
17064
17211
|
if (!elRef.current) return;
|
|
17065
17212
|
setHasMore(elRef.current.scrollHeight > elRef.current.clientHeight);
|
|
17066
17213
|
}, []);
|
|
17067
|
-
|
|
17214
|
+
useEffect27(() => {
|
|
17068
17215
|
setExpanded(false);
|
|
17069
17216
|
}, [children]);
|
|
17070
17217
|
const onResize = useCallback21(() => {
|
|
@@ -17072,14 +17219,14 @@ function MaxLines({ maxLines, children }) {
|
|
|
17072
17219
|
!expanded && setHasMore(elRef.current.scrollHeight > elRef.current.clientHeight);
|
|
17073
17220
|
}, [expanded]);
|
|
17074
17221
|
useResizeObserver5({ ref: elRef, onResize });
|
|
17075
|
-
return /* @__PURE__ */
|
|
17076
|
-
/* @__PURE__ */
|
|
17077
|
-
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" })
|
|
17078
17225
|
] });
|
|
17079
17226
|
}
|
|
17080
17227
|
|
|
17081
17228
|
// src/components/Pagination.tsx
|
|
17082
|
-
import { jsx as
|
|
17229
|
+
import { jsx as jsx157, jsxs as jsxs75 } from "@emotion/react/jsx-runtime";
|
|
17083
17230
|
var defaultPage = { offset: 0, limit: 100 };
|
|
17084
17231
|
function Pagination(props) {
|
|
17085
17232
|
const { totalCount, pageSizes = [100, 500, 1e3] } = props;
|
|
@@ -17099,9 +17246,9 @@ function Pagination(props) {
|
|
|
17099
17246
|
}
|
|
17100
17247
|
}
|
|
17101
17248
|
const tid = useTestIds(props, "pagination");
|
|
17102
|
-
return /* @__PURE__ */
|
|
17103
|
-
/* @__PURE__ */
|
|
17104
|
-
/* @__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(
|
|
17105
17252
|
SelectField,
|
|
17106
17253
|
{
|
|
17107
17254
|
compact: true,
|
|
@@ -17113,15 +17260,15 @@ function Pagination(props) {
|
|
|
17113
17260
|
...tid.pageSize
|
|
17114
17261
|
}
|
|
17115
17262
|
) }),
|
|
17116
|
-
/* @__PURE__ */
|
|
17117
|
-
/* @__PURE__ */
|
|
17263
|
+
/* @__PURE__ */ jsxs75("div", { css: Css.mla.mya.df.$, children: [
|
|
17264
|
+
/* @__PURE__ */ jsxs75("div", { css: Css.df.mya.mr2.$, ...tid.pageInfoLabel, children: [
|
|
17118
17265
|
first,
|
|
17119
17266
|
" ",
|
|
17120
17267
|
showLast ? `- ${last}` : "",
|
|
17121
17268
|
" of ",
|
|
17122
17269
|
totalCount
|
|
17123
17270
|
] }),
|
|
17124
|
-
/* @__PURE__ */
|
|
17271
|
+
/* @__PURE__ */ jsx157(
|
|
17125
17272
|
IconButton,
|
|
17126
17273
|
{
|
|
17127
17274
|
icon: "chevronLeft",
|
|
@@ -17131,7 +17278,7 @@ function Pagination(props) {
|
|
|
17131
17278
|
...tid.previousIcon
|
|
17132
17279
|
}
|
|
17133
17280
|
),
|
|
17134
|
-
/* @__PURE__ */
|
|
17281
|
+
/* @__PURE__ */ jsx157(
|
|
17135
17282
|
IconButton,
|
|
17136
17283
|
{
|
|
17137
17284
|
icon: "chevronRight",
|
|
@@ -17160,8 +17307,8 @@ function toPageNumberSize(page) {
|
|
|
17160
17307
|
|
|
17161
17308
|
// src/components/ScrollShadows.tsx
|
|
17162
17309
|
import { useResizeObserver as useResizeObserver6 } from "@react-aria/utils";
|
|
17163
|
-
import { useCallback as useCallback22, useMemo as
|
|
17164
|
-
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";
|
|
17165
17312
|
function ScrollShadows(props) {
|
|
17166
17313
|
const { children, xss, horizontal = false, bgColor = "rgba(255,255,255,1)" /* White */ } = props;
|
|
17167
17314
|
const { height = "auto", width: width2 = "auto" } = xss ?? {};
|
|
@@ -17169,10 +17316,10 @@ function ScrollShadows(props) {
|
|
|
17169
17316
|
if (!bgColor.includes("rgba")) {
|
|
17170
17317
|
throw new Error("ScrollShadows: bgColor prop must be in the format 'rgba(255, 255, 255, 1)'");
|
|
17171
17318
|
}
|
|
17172
|
-
const [showStartShadow, setShowStartShadow] =
|
|
17173
|
-
const [showEndShadow, setShowEndShadow] =
|
|
17319
|
+
const [showStartShadow, setShowStartShadow] = useState40(false);
|
|
17320
|
+
const [showEndShadow, setShowEndShadow] = useState40(false);
|
|
17174
17321
|
const scrollRef = useRef50(null);
|
|
17175
|
-
const [startShadowStyles, endShadowStyles] =
|
|
17322
|
+
const [startShadowStyles, endShadowStyles] = useMemo40(() => {
|
|
17176
17323
|
const transparentBgColor = bgColor.replace(/,1\)$/, ",0)");
|
|
17177
17324
|
const commonStyles = Css.absolute.z3.add({ pointerEvents: "none" }).$;
|
|
17178
17325
|
const startShadowStyles2 = !horizontal ? Css.top0.left0.right0.hPx(40).$ : Css.left0.top0.bottom0.wPx(25).$;
|
|
@@ -17197,15 +17344,15 @@ function ScrollShadows(props) {
|
|
|
17197
17344
|
);
|
|
17198
17345
|
const onResize = useCallback22(() => scrollRef.current && updateScrollProps(scrollRef.current), [updateScrollProps]);
|
|
17199
17346
|
useResizeObserver6({ ref: scrollRef, onResize });
|
|
17200
|
-
return /* @__PURE__ */
|
|
17347
|
+
return /* @__PURE__ */ jsxs76(
|
|
17201
17348
|
"div",
|
|
17202
17349
|
{
|
|
17203
17350
|
css: Css.relative.oh.h(height).w(width2).df.fd(!horizontal ? "column" : "row").$,
|
|
17204
17351
|
...tid,
|
|
17205
17352
|
children: [
|
|
17206
|
-
/* @__PURE__ */
|
|
17207
|
-
/* @__PURE__ */
|
|
17208
|
-
/* @__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(
|
|
17209
17356
|
"div",
|
|
17210
17357
|
{
|
|
17211
17358
|
css: {
|
|
@@ -17223,7 +17370,7 @@ function ScrollShadows(props) {
|
|
|
17223
17370
|
}
|
|
17224
17371
|
|
|
17225
17372
|
// src/components/Snackbar/useSnackbar.tsx
|
|
17226
|
-
import { useCallback as useCallback23, useEffect as
|
|
17373
|
+
import { useCallback as useCallback23, useEffect as useEffect28 } from "react";
|
|
17227
17374
|
function useSnackbar() {
|
|
17228
17375
|
const { setNotices, setOffset } = useSnackbarContext();
|
|
17229
17376
|
const onClose = useCallback23(
|
|
@@ -17273,7 +17420,7 @@ function useSnackbar() {
|
|
|
17273
17420
|
[onClose, setNotices]
|
|
17274
17421
|
);
|
|
17275
17422
|
const closeNotice = useCallback23((id) => onClose(id), [onClose]);
|
|
17276
|
-
const useSnackbarOffset = ({ bottom }) =>
|
|
17423
|
+
const useSnackbarOffset = ({ bottom }) => useEffect28(() => {
|
|
17277
17424
|
setOffset({ bottom });
|
|
17278
17425
|
return () => setOffset({});
|
|
17279
17426
|
}, [bottom]);
|
|
@@ -17284,7 +17431,7 @@ var snackbarId = 1;
|
|
|
17284
17431
|
// src/components/Stepper.tsx
|
|
17285
17432
|
import { useRef as useRef51 } from "react";
|
|
17286
17433
|
import { useButton as useButton11, useFocusRing as useFocusRing14, useHover as useHover18 } from "react-aria";
|
|
17287
|
-
import { jsx as
|
|
17434
|
+
import { jsx as jsx159, jsxs as jsxs77 } from "@emotion/react/jsx-runtime";
|
|
17288
17435
|
function Stepper(props) {
|
|
17289
17436
|
const { steps, currentStep, onChange } = props;
|
|
17290
17437
|
if (steps.length === 0) {
|
|
@@ -17295,25 +17442,25 @@ function Stepper(props) {
|
|
|
17295
17442
|
const maxStepWidth = 200;
|
|
17296
17443
|
const minStepWidth = 100;
|
|
17297
17444
|
const gap = 8;
|
|
17298
|
-
return /* @__PURE__ */
|
|
17299
|
-
/* @__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) => {
|
|
17300
17447
|
const isCurrent = currentStep === step.value;
|
|
17301
|
-
return /* @__PURE__ */
|
|
17448
|
+
return /* @__PURE__ */ jsx159(
|
|
17302
17449
|
"li",
|
|
17303
17450
|
{
|
|
17304
17451
|
css: Css.df.fg1.fdc.maxwPx(maxStepWidth).mwPx(minStepWidth).$,
|
|
17305
17452
|
"aria-current": isCurrent,
|
|
17306
17453
|
...tid.step,
|
|
17307
|
-
children: /* @__PURE__ */
|
|
17454
|
+
children: /* @__PURE__ */ jsx159(StepButton, { ...step, onClick: () => onChange(step.value), isCurrent, ...tid.stepButton })
|
|
17308
17455
|
},
|
|
17309
17456
|
step.label
|
|
17310
17457
|
);
|
|
17311
17458
|
}) }),
|
|
17312
|
-
/* @__PURE__ */
|
|
17459
|
+
/* @__PURE__ */ jsx159(
|
|
17313
17460
|
"div",
|
|
17314
17461
|
{
|
|
17315
17462
|
css: Css.mt1.bgGray300.hPx(4).maxwPx(steps.length * maxStepWidth + (steps.length - 1) * gap).mwPx(steps.length * minStepWidth + (steps.length - 1) * gap).w100.$,
|
|
17316
|
-
children: /* @__PURE__ */
|
|
17463
|
+
children: /* @__PURE__ */ jsx159(
|
|
17317
17464
|
"div",
|
|
17318
17465
|
{
|
|
17319
17466
|
css: Css.bgBlue600.add("transition", "width 200ms").h100.w(`${(lastCompletedStep + 1) / steps.length * 100}%`).$
|
|
@@ -17332,7 +17479,7 @@ function StepButton(props) {
|
|
|
17332
17479
|
const { hoverProps, isHovered } = useHover18(ariaProps);
|
|
17333
17480
|
const focusRingStyles2 = state === "error" ? Css.bshDanger.$ : Css.bshFocus.$;
|
|
17334
17481
|
const tid = useTestIds(props, "stepButton");
|
|
17335
|
-
return /* @__PURE__ */
|
|
17482
|
+
return /* @__PURE__ */ jsxs77(
|
|
17336
17483
|
"button",
|
|
17337
17484
|
{
|
|
17338
17485
|
ref,
|
|
@@ -17350,7 +17497,7 @@ function StepButton(props) {
|
|
|
17350
17497
|
},
|
|
17351
17498
|
...tid[defaultTestId(label)],
|
|
17352
17499
|
children: [
|
|
17353
|
-
/* @__PURE__ */
|
|
17500
|
+
/* @__PURE__ */ jsx159("span", { css: Css.fs0.mrPx(4).$, children: /* @__PURE__ */ jsx159(StepIcon, { state, isHovered, isPressed, isCurrent }) }),
|
|
17354
17501
|
label
|
|
17355
17502
|
]
|
|
17356
17503
|
}
|
|
@@ -17358,12 +17505,12 @@ function StepButton(props) {
|
|
|
17358
17505
|
}
|
|
17359
17506
|
function StepIcon({ state, isHovered = false, isPressed = false, isCurrent = false }) {
|
|
17360
17507
|
if (state === "error") {
|
|
17361
|
-
return /* @__PURE__ */
|
|
17508
|
+
return /* @__PURE__ */ jsx159(Icon, { icon: "errorCircle" });
|
|
17362
17509
|
}
|
|
17363
17510
|
if (state === "complete") {
|
|
17364
|
-
return /* @__PURE__ */
|
|
17511
|
+
return /* @__PURE__ */ jsx159(Icon, { icon: "check" });
|
|
17365
17512
|
}
|
|
17366
|
-
return /* @__PURE__ */
|
|
17513
|
+
return /* @__PURE__ */ jsx159("div", { css: Css.wPx(24).hPx(24).df.aic.jcc.$, children: /* @__PURE__ */ jsx159(
|
|
17367
17514
|
"div",
|
|
17368
17515
|
{
|
|
17369
17516
|
css: Css.wPx(10).hPx(10).ba.bw2.br100.add("color", "currentColor").if(isHovered || isPressed || isCurrent).add("backgroundColor", "currentColor").$
|
|
@@ -17373,7 +17520,7 @@ function StepIcon({ state, isHovered = false, isPressed = false, isCurrent = fal
|
|
|
17373
17520
|
|
|
17374
17521
|
// src/components/SuperDrawer/components/SuperDrawerHeader.tsx
|
|
17375
17522
|
import { createPortal as createPortal5 } from "react-dom";
|
|
17376
|
-
import { jsx as
|
|
17523
|
+
import { jsx as jsx160, jsxs as jsxs78 } from "@emotion/react/jsx-runtime";
|
|
17377
17524
|
function SuperDrawerHeader(props) {
|
|
17378
17525
|
const { hideControls } = props;
|
|
17379
17526
|
const { sdHeaderDiv, drawerContentStack: contentStack } = useBeamContext();
|
|
@@ -17383,15 +17530,15 @@ function SuperDrawerHeader(props) {
|
|
|
17383
17530
|
const isDetail = currentContent !== firstContent;
|
|
17384
17531
|
const tid = useTestIds({}, "superDrawerHeader");
|
|
17385
17532
|
return createPortal5(
|
|
17386
|
-
/* @__PURE__ */
|
|
17387
|
-
isStructuredProps(props) ? /* @__PURE__ */
|
|
17388
|
-
/* @__PURE__ */
|
|
17389
|
-
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,
|
|
17390
17537
|
props.left
|
|
17391
17538
|
] }),
|
|
17392
|
-
props.right && /* @__PURE__ */
|
|
17393
|
-
] }) : /* @__PURE__ */
|
|
17394
|
-
!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(
|
|
17395
17542
|
ButtonGroup,
|
|
17396
17543
|
{
|
|
17397
17544
|
buttons: [
|
|
@@ -17410,18 +17557,18 @@ function isStructuredProps(props) {
|
|
|
17410
17557
|
}
|
|
17411
17558
|
|
|
17412
17559
|
// src/components/SuperDrawer/ConfirmCloseModal.tsx
|
|
17413
|
-
import { Fragment as
|
|
17560
|
+
import { Fragment as Fragment31, jsx as jsx161, jsxs as jsxs79 } from "@emotion/react/jsx-runtime";
|
|
17414
17561
|
function ConfirmCloseModal(props) {
|
|
17415
17562
|
const { onClose, discardText = "Discard Changes", continueText = "Continue Editing" } = props;
|
|
17416
17563
|
const { modalState } = useBeamContext();
|
|
17417
17564
|
function closeModal() {
|
|
17418
17565
|
modalState.current = void 0;
|
|
17419
17566
|
}
|
|
17420
|
-
return /* @__PURE__ */
|
|
17421
|
-
/* @__PURE__ */
|
|
17422
|
-
/* @__PURE__ */
|
|
17423
|
-
/* @__PURE__ */
|
|
17424
|
-
/* @__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(
|
|
17425
17572
|
Button,
|
|
17426
17573
|
{
|
|
17427
17574
|
variant: "tertiary",
|
|
@@ -17432,7 +17579,7 @@ function ConfirmCloseModal(props) {
|
|
|
17432
17579
|
}
|
|
17433
17580
|
}
|
|
17434
17581
|
),
|
|
17435
|
-
/* @__PURE__ */
|
|
17582
|
+
/* @__PURE__ */ jsx161(Button, { label: continueText, onClick: closeModal })
|
|
17436
17583
|
] })
|
|
17437
17584
|
] });
|
|
17438
17585
|
}
|
|
@@ -17441,8 +17588,8 @@ function ConfirmCloseModal(props) {
|
|
|
17441
17588
|
import { motion as motion4 } from "framer-motion";
|
|
17442
17589
|
|
|
17443
17590
|
// src/components/SuperDrawer/useSuperDrawer.tsx
|
|
17444
|
-
import { useMemo as
|
|
17445
|
-
import { jsx as
|
|
17591
|
+
import { useMemo as useMemo41 } from "react";
|
|
17592
|
+
import { jsx as jsx162 } from "@emotion/react/jsx-runtime";
|
|
17446
17593
|
function useSuperDrawer() {
|
|
17447
17594
|
const {
|
|
17448
17595
|
drawerContentStack: contentStack,
|
|
@@ -17454,7 +17601,7 @@ function useSuperDrawer() {
|
|
|
17454
17601
|
function canCloseDrawerDetails(i, doChange) {
|
|
17455
17602
|
for (const canCloseDrawerDetail of canCloseDetailsChecks.current[i] ?? []) {
|
|
17456
17603
|
if (!canClose(canCloseDrawerDetail)) {
|
|
17457
|
-
openModal({ content: /* @__PURE__ */
|
|
17604
|
+
openModal({ content: /* @__PURE__ */ jsx162(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawerDetail }) });
|
|
17458
17605
|
return false;
|
|
17459
17606
|
}
|
|
17460
17607
|
}
|
|
@@ -17474,14 +17621,14 @@ function useSuperDrawer() {
|
|
|
17474
17621
|
for (const canCloseDrawer of canCloseChecks.current) {
|
|
17475
17622
|
if (!canClose(canCloseDrawer)) {
|
|
17476
17623
|
openModal({
|
|
17477
|
-
content: /* @__PURE__ */
|
|
17624
|
+
content: /* @__PURE__ */ jsx162(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawer })
|
|
17478
17625
|
});
|
|
17479
17626
|
return;
|
|
17480
17627
|
}
|
|
17481
17628
|
}
|
|
17482
17629
|
doChange();
|
|
17483
17630
|
}
|
|
17484
|
-
const closeActions =
|
|
17631
|
+
const closeActions = useMemo41(
|
|
17485
17632
|
() => {
|
|
17486
17633
|
return {
|
|
17487
17634
|
/** Attempts to close the drawer. If any checks fail, a confirmation modal will appear */
|
|
@@ -17516,7 +17663,7 @@ function useSuperDrawer() {
|
|
|
17516
17663
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17517
17664
|
[canCloseChecks, canCloseDetailsChecks, contentStack, modalState, openModal]
|
|
17518
17665
|
);
|
|
17519
|
-
const actions =
|
|
17666
|
+
const actions = useMemo41(
|
|
17520
17667
|
() => {
|
|
17521
17668
|
return {
|
|
17522
17669
|
// TODO: Maybe we should rename to openDrawer as a breaking change (to match openDrawerDetail)
|
|
@@ -17569,7 +17716,7 @@ function canClose(canCloseCheck) {
|
|
|
17569
17716
|
}
|
|
17570
17717
|
|
|
17571
17718
|
// src/components/SuperDrawer/SuperDrawerContent.tsx
|
|
17572
|
-
import { Fragment as
|
|
17719
|
+
import { Fragment as Fragment32, jsx as jsx163, jsxs as jsxs80 } from "@emotion/react/jsx-runtime";
|
|
17573
17720
|
var SuperDrawerContent = ({ children, actions }) => {
|
|
17574
17721
|
const { closeDrawerDetail } = useSuperDrawer();
|
|
17575
17722
|
const { drawerContentStack: contentStack } = useBeamContext();
|
|
@@ -17578,17 +17725,17 @@ var SuperDrawerContent = ({ children, actions }) => {
|
|
|
17578
17725
|
const { width: width2 = 1040 /* Normal */ } = firstContent ?? {};
|
|
17579
17726
|
function wrapWithMotionAndMaybeBack(children2) {
|
|
17580
17727
|
if (kind === "open") {
|
|
17581
|
-
return /* @__PURE__ */
|
|
17728
|
+
return /* @__PURE__ */ jsx163(motion4.div, { css: Css.p3.fg1.oa.$, children: children2 }, "content");
|
|
17582
17729
|
} else if (kind === "detail") {
|
|
17583
|
-
return /* @__PURE__ */
|
|
17730
|
+
return /* @__PURE__ */ jsxs80(
|
|
17584
17731
|
motion4.div,
|
|
17585
17732
|
{
|
|
17586
17733
|
css: Css.px3.pt2.pb3.fg1.$,
|
|
17587
17734
|
animate: { overflow: "auto" },
|
|
17588
17735
|
transition: { overflow: { delay: 0.3 } },
|
|
17589
17736
|
children: [
|
|
17590
|
-
/* @__PURE__ */
|
|
17591
|
-
/* @__PURE__ */
|
|
17737
|
+
/* @__PURE__ */ jsx163(Button, { label: "Back", icon: "chevronLeft", variant: "tertiary", onClick: closeDrawerDetail }),
|
|
17738
|
+
/* @__PURE__ */ jsx163(
|
|
17592
17739
|
motion4.div,
|
|
17593
17740
|
{
|
|
17594
17741
|
initial: { x: width2, opacity: 0 },
|
|
@@ -17604,27 +17751,27 @@ var SuperDrawerContent = ({ children, actions }) => {
|
|
|
17604
17751
|
"content"
|
|
17605
17752
|
);
|
|
17606
17753
|
} else {
|
|
17607
|
-
return /* @__PURE__ */
|
|
17754
|
+
return /* @__PURE__ */ jsx163(motion4.div, { css: Css.p3.fg1.$, style: { overflow: "auto" } }, "content");
|
|
17608
17755
|
}
|
|
17609
17756
|
}
|
|
17610
|
-
return /* @__PURE__ */
|
|
17757
|
+
return /* @__PURE__ */ jsxs80(Fragment32, { children: [
|
|
17611
17758
|
wrapWithMotionAndMaybeBack(children),
|
|
17612
|
-
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)) }) })
|
|
17613
17760
|
] });
|
|
17614
17761
|
};
|
|
17615
17762
|
|
|
17616
17763
|
// src/components/Tabs.tsx
|
|
17617
17764
|
import { camelCase as camelCase5 } from "change-case";
|
|
17618
|
-
import { useEffect as
|
|
17765
|
+
import { useEffect as useEffect29, useMemo as useMemo42, useRef as useRef52, useState as useState41 } from "react";
|
|
17619
17766
|
import { mergeProps as mergeProps13, useFocusRing as useFocusRing15, useHover as useHover19 } from "react-aria";
|
|
17620
17767
|
import { matchPath, Route } from "react-router";
|
|
17621
17768
|
import { Link as Link5, useLocation } from "react-router-dom";
|
|
17622
|
-
import { Fragment as
|
|
17769
|
+
import { Fragment as Fragment33, jsx as jsx164, jsxs as jsxs81 } from "@emotion/react/jsx-runtime";
|
|
17623
17770
|
function TabsWithContent(props) {
|
|
17624
17771
|
const styles = hideTabs(props) ? {} : Css.pt3.$;
|
|
17625
|
-
return /* @__PURE__ */
|
|
17626
|
-
/* @__PURE__ */
|
|
17627
|
-
/* @__PURE__ */
|
|
17772
|
+
return /* @__PURE__ */ jsxs81(Fragment33, { children: [
|
|
17773
|
+
/* @__PURE__ */ jsx164(Tabs, { ...props }),
|
|
17774
|
+
/* @__PURE__ */ jsx164(TabContent, { ...props, contentXss: { ...styles, ...props.contentXss } })
|
|
17628
17775
|
] });
|
|
17629
17776
|
}
|
|
17630
17777
|
function TabContent(props) {
|
|
@@ -17639,7 +17786,7 @@ function TabContent(props) {
|
|
|
17639
17786
|
return (
|
|
17640
17787
|
// Using FullBleed to allow the tab's bgColor to extend to the edges of the <ScrollableContent /> element.
|
|
17641
17788
|
// Omit the padding from `FullBleed` if the caller passes in the `paddingLeft/Right` styles.
|
|
17642
|
-
/* @__PURE__ */
|
|
17789
|
+
/* @__PURE__ */ jsx164(FullBleed, { omitPadding: "paddingLeft" in contentXss || "paddingRight" in contentXss, children: /* @__PURE__ */ jsx164(
|
|
17643
17790
|
"div",
|
|
17644
17791
|
{
|
|
17645
17792
|
"aria-labelledby": `${uniqueValue}-tab`,
|
|
@@ -17648,7 +17795,7 @@ function TabContent(props) {
|
|
|
17648
17795
|
tabIndex: 0,
|
|
17649
17796
|
...tid.panel,
|
|
17650
17797
|
css: contentXss,
|
|
17651
|
-
children: isRouteTab(selectedTab) ? /* @__PURE__ */
|
|
17798
|
+
children: isRouteTab(selectedTab) ? /* @__PURE__ */ jsx164(Route, { path: selectedTab.path, render: selectedTab.render }) : selectedTab.render()
|
|
17652
17799
|
}
|
|
17653
17800
|
) })
|
|
17654
17801
|
);
|
|
@@ -17661,9 +17808,9 @@ function Tabs(props) {
|
|
|
17661
17808
|
) : props.selected;
|
|
17662
17809
|
const { isFocusVisible, focusProps } = useFocusRing15();
|
|
17663
17810
|
const tid = useTestIds(others, "tabs");
|
|
17664
|
-
const [active, setActive] =
|
|
17811
|
+
const [active, setActive] = useState41(selected);
|
|
17665
17812
|
const ref = useRef52(null);
|
|
17666
|
-
|
|
17813
|
+
useEffect29(() => setActive(selected), [selected]);
|
|
17667
17814
|
function onKeyUp(e) {
|
|
17668
17815
|
if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
|
|
17669
17816
|
const nextTabValue = getNextTabValue(active, e.key, tabs);
|
|
@@ -17679,10 +17826,10 @@ function Tabs(props) {
|
|
|
17679
17826
|
setActive(selected);
|
|
17680
17827
|
}
|
|
17681
17828
|
}
|
|
17682
|
-
return /* @__PURE__ */
|
|
17683
|
-
!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) => {
|
|
17684
17831
|
const uniqueValue = uniqueTabValue(tab);
|
|
17685
|
-
return /* @__PURE__ */
|
|
17832
|
+
return /* @__PURE__ */ jsx164(
|
|
17686
17833
|
TabImpl,
|
|
17687
17834
|
{
|
|
17688
17835
|
active: active === uniqueValue,
|
|
@@ -17697,7 +17844,7 @@ function Tabs(props) {
|
|
|
17697
17844
|
uniqueValue
|
|
17698
17845
|
);
|
|
17699
17846
|
}) }),
|
|
17700
|
-
right && /* @__PURE__ */
|
|
17847
|
+
right && /* @__PURE__ */ jsx164("div", { css: Css.mla.df.aic.gap1.pb1.$, children: right })
|
|
17701
17848
|
] });
|
|
17702
17849
|
}
|
|
17703
17850
|
function TabImpl(props) {
|
|
@@ -17705,7 +17852,7 @@ function TabImpl(props) {
|
|
|
17705
17852
|
const { disabled = false, name: label, icon, endAdornment } = tab;
|
|
17706
17853
|
const isDisabled = !!disabled;
|
|
17707
17854
|
const { hoverProps, isHovered } = useHover19({ isDisabled });
|
|
17708
|
-
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(
|
|
17709
17856
|
() => getTabStyles(),
|
|
17710
17857
|
[]
|
|
17711
17858
|
);
|
|
@@ -17732,15 +17879,15 @@ function TabImpl(props) {
|
|
|
17732
17879
|
onBlur,
|
|
17733
17880
|
...isRouteTab(tab) ? {} : { onClick: () => onClick(tab.value) }
|
|
17734
17881
|
});
|
|
17735
|
-
const tabLabel = /* @__PURE__ */
|
|
17882
|
+
const tabLabel = /* @__PURE__ */ jsxs81(Fragment33, { children: [
|
|
17736
17883
|
label,
|
|
17737
|
-
(icon || endAdornment) && /* @__PURE__ */
|
|
17884
|
+
(icon || endAdornment) && /* @__PURE__ */ jsx164("span", { css: Css.ml1.$, children: icon ? /* @__PURE__ */ jsx164(Icon, { icon }) : endAdornment })
|
|
17738
17885
|
] });
|
|
17739
17886
|
return isDisabled ? maybeTooltip({
|
|
17740
17887
|
title: resolveTooltip(disabled),
|
|
17741
17888
|
placement: "top",
|
|
17742
|
-
children: /* @__PURE__ */
|
|
17743
|
-
}) : 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 });
|
|
17744
17891
|
}
|
|
17745
17892
|
function getTabStyles() {
|
|
17746
17893
|
const borderBottomWidthPx = 4;
|
|
@@ -17777,11 +17924,11 @@ function hideTabs(props) {
|
|
|
17777
17924
|
}
|
|
17778
17925
|
|
|
17779
17926
|
// src/components/Toast/Toast.tsx
|
|
17780
|
-
import { Fragment as
|
|
17927
|
+
import { Fragment as Fragment34, jsx as jsx165 } from "@emotion/react/jsx-runtime";
|
|
17781
17928
|
function Toast() {
|
|
17782
17929
|
const { setNotice, notice } = useToastContext();
|
|
17783
17930
|
const tid = useTestIds({}, "toast");
|
|
17784
|
-
return /* @__PURE__ */
|
|
17931
|
+
return /* @__PURE__ */ jsx165(Fragment34, { children: notice && /* @__PURE__ */ jsx165(Banner, { ...notice, ...tid, onClose: () => setNotice(void 0) }) });
|
|
17785
17932
|
}
|
|
17786
17933
|
|
|
17787
17934
|
// src/components/Toast/useToast.tsx
|
|
@@ -17864,6 +18011,7 @@ export {
|
|
|
17864
18011
|
FormRow,
|
|
17865
18012
|
FullBleed,
|
|
17866
18013
|
GridTable,
|
|
18014
|
+
GridTableLayout,
|
|
17867
18015
|
HB_QUIPS_FLAVOR,
|
|
17868
18016
|
HB_QUIPS_MISSION,
|
|
17869
18017
|
HEADER,
|
|
@@ -18051,6 +18199,7 @@ export {
|
|
|
18051
18199
|
useDnDGridItem,
|
|
18052
18200
|
useFilter,
|
|
18053
18201
|
useGridTableApi,
|
|
18202
|
+
useGridTableLayoutState,
|
|
18054
18203
|
useGroupBy,
|
|
18055
18204
|
useHover,
|
|
18056
18205
|
useModal,
|