@elliemae/ds-time-picker 2.3.0-next.3 → 3.0.0-alpha.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.
Files changed (64) hide show
  1. package/dist/cjs/DSTimePicker.js +106 -0
  2. package/dist/cjs/DSTimePicker.js.map +7 -0
  3. package/dist/cjs/DSTimePickerMenu.js +48 -0
  4. package/dist/cjs/DSTimePickerMenu.js.map +7 -0
  5. package/dist/cjs/PickerPanel.js +299 -0
  6. package/dist/cjs/PickerPanel.js.map +7 -0
  7. package/dist/cjs/TimePickerDropdown.js +74 -0
  8. package/dist/cjs/TimePickerDropdown.js.map +7 -0
  9. package/dist/cjs/TimePickerImpl.js +183 -0
  10. package/dist/cjs/TimePickerImpl.js.map +7 -0
  11. package/dist/cjs/TimePickerMenu.js +241 -0
  12. package/dist/cjs/TimePickerMenu.js.map +7 -0
  13. package/dist/cjs/index.js +40 -0
  14. package/dist/cjs/index.js.map +7 -0
  15. package/dist/cjs/moveElementOnScroll.js +93 -0
  16. package/dist/cjs/moveElementOnScroll.js.map +7 -0
  17. package/dist/cjs/utils.js +71 -0
  18. package/dist/cjs/utils.js.map +7 -0
  19. package/dist/esm/DSTimePicker.js +77 -0
  20. package/dist/esm/DSTimePicker.js.map +7 -0
  21. package/dist/esm/DSTimePickerMenu.js +19 -0
  22. package/dist/esm/DSTimePickerMenu.js.map +7 -0
  23. package/dist/esm/PickerPanel.js +270 -0
  24. package/dist/esm/PickerPanel.js.map +7 -0
  25. package/dist/esm/TimePickerDropdown.js +45 -0
  26. package/dist/esm/TimePickerDropdown.js.map +7 -0
  27. package/dist/esm/TimePickerImpl.js +154 -0
  28. package/dist/esm/TimePickerImpl.js.map +7 -0
  29. package/dist/esm/TimePickerMenu.js +212 -0
  30. package/dist/esm/TimePickerMenu.js.map +7 -0
  31. package/dist/esm/index.js +11 -0
  32. package/dist/esm/index.js.map +7 -0
  33. package/dist/esm/moveElementOnScroll.js +64 -0
  34. package/dist/esm/moveElementOnScroll.js.map +7 -0
  35. package/dist/esm/utils.js +42 -0
  36. package/dist/esm/utils.js.map +7 -0
  37. package/{types → dist/types}/DSTimePicker.d.ts +0 -0
  38. package/{types → dist/types}/DSTimePickerMenu.d.ts +0 -0
  39. package/{types → dist/types}/PickerPanel.d.ts +1 -0
  40. package/{types → dist/types}/TimePickerDropdown.d.ts +1 -0
  41. package/{types → dist/types}/TimePickerImpl.d.ts +1 -0
  42. package/{types → dist/types}/TimePickerMenu.d.ts +0 -0
  43. package/{types → dist/types}/index.d.ts +0 -0
  44. package/{types → dist/types}/moveElementOnScroll.d.ts +0 -0
  45. package/{types → dist/types}/utils.d.ts +0 -0
  46. package/package.json +45 -37
  47. package/cjs/DSTimePicker.js +0 -121
  48. package/cjs/DSTimePickerMenu.js +0 -35
  49. package/cjs/PickerPanel.js +0 -402
  50. package/cjs/TimePickerDropdown.js +0 -53
  51. package/cjs/TimePickerImpl.js +0 -175
  52. package/cjs/TimePickerMenu.js +0 -312
  53. package/cjs/index.js +0 -17
  54. package/cjs/moveElementOnScroll.js +0 -75
  55. package/cjs/utils.js +0 -38
  56. package/esm/DSTimePicker.js +0 -111
  57. package/esm/DSTimePickerMenu.js +0 -24
  58. package/esm/PickerPanel.js +0 -392
  59. package/esm/TimePickerDropdown.js +0 -45
  60. package/esm/TimePickerImpl.js +0 -165
  61. package/esm/TimePickerMenu.js +0 -301
  62. package/esm/index.js +0 -4
  63. package/esm/moveElementOnScroll.js +0 -70
  64. package/esm/utils.js +0 -31
@@ -0,0 +1,183 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var TimePickerImpl_exports = {};
29
+ __export(TimePickerImpl_exports, {
30
+ TimePickerImpl: () => TimePickerImpl,
31
+ default: () => TimePickerImpl_default
32
+ });
33
+ var React = __toESM(require("react"));
34
+ var import_react = __toESM(require("react"));
35
+ var import_prop_types = __toESM(require("prop-types"));
36
+ var import_moment = __toESM(require("moment"));
37
+ var import_memoize_one = __toESM(require("memoize-one"));
38
+ var import_ds_utilities = require("@elliemae/ds-utilities");
39
+ var import_ds_classnames = require("@elliemae/ds-classnames");
40
+ var import_ds_form = require("@elliemae/ds-form");
41
+ var import_TimePickerMenu = require("./TimePickerMenu");
42
+ var import_TimePickerDropdown = require("./TimePickerDropdown");
43
+ var import_utils = require("./utils");
44
+ const blockName = "time-picker";
45
+ const TimePickerContainer = (0, import_ds_classnames.aggregatedClasses)(import_ds_form.DSInputGroup)(blockName, null, ({ isMenuOpened }) => ({
46
+ isMenuOpened
47
+ }));
48
+ const TimePickerImpl = ({
49
+ value,
50
+ onChange,
51
+ onOpen,
52
+ format,
53
+ disabled,
54
+ hasHeader,
55
+ hasHeaderDisplay,
56
+ className,
57
+ containerProps,
58
+ placement,
59
+ zIndex,
60
+ disabledTimes,
61
+ minutesInterval
62
+ }) => {
63
+ const [time, setTime] = (0, import_react.useState)();
64
+ const [isMenuOpened, setIsMenuOpened] = (0, import_react.useState)(false);
65
+ const [focusedColumn, setFocusedColumn] = (0, import_react.useState)(null);
66
+ const timePickerRef = (0, import_react.useRef)();
67
+ (0, import_react.useEffect)(() => {
68
+ if ((0, import_moment.default)(value).isValid())
69
+ setTime((0, import_moment.default)(value));
70
+ else if (value === null)
71
+ setTime(void 0);
72
+ }, [value]);
73
+ (0, import_react.useEffect)(() => {
74
+ window.addEventListener("click", handleClickOutside, false);
75
+ return () => window.removeEventListener("click", handleClickOutside, false);
76
+ }, []);
77
+ (0, import_react.useEffect)(() => {
78
+ window.addEventListener("keydown", handleKeyDown, false);
79
+ return () => window.removeEventListener("keydown", handleKeyDown, false);
80
+ }, []);
81
+ (0, import_react.useEffect)(() => {
82
+ if (isMenuOpened)
83
+ handleChangeFocus();
84
+ }, [isMenuOpened]);
85
+ const handleClickOutside = () => {
86
+ if (isMenuOpened)
87
+ setIsMenuOpened(false);
88
+ };
89
+ const handleKeyDown = (event) => {
90
+ const { key } = event;
91
+ const menuOpenKeys = ["Escape", " ", "Enter"];
92
+ if (menuOpenKeys.includes(key))
93
+ setIsMenuOpened(false);
94
+ };
95
+ const handleChangeFocus = () => {
96
+ const [firstColumn] = document.getElementsByClassName("em-ds-time-picker-panel");
97
+ if (firstColumn && !focusedColumn) {
98
+ setFocusedColumn(firstColumn);
99
+ firstColumn.focus();
100
+ }
101
+ };
102
+ const handlePickerChange = (newTime) => {
103
+ setTime((0, import_moment.default)(newTime));
104
+ onChange((0, import_moment.default)(newTime));
105
+ };
106
+ const handleInputChange = (newTime) => {
107
+ setTime(newTime);
108
+ onChange(newTime);
109
+ };
110
+ const handleMenuOpen = (isOpen) => {
111
+ onOpen(isOpen);
112
+ setIsMenuOpened(isOpen);
113
+ if (!isOpen)
114
+ setFocusedColumn(null);
115
+ };
116
+ const getVisibleTimePanels = (0, import_memoize_one.default)((format2) => (0, import_ds_utilities.getVisibleTimeByFormat)(format2));
117
+ const timePickerBlockName = (0, import_ds_classnames.convertPropToCssClassName)(blockName);
118
+ const visiblePanels = getVisibleTimePanels(format);
119
+ const disabledTimeRange = disabledTimes && {
120
+ from: (0, import_utils.convertTimeString)(disabledTimes.from),
121
+ to: (0, import_utils.convertTimeString)(disabledTimes.to)
122
+ };
123
+ return /* @__PURE__ */ import_react.default.createElement(TimePickerContainer, {
124
+ className: `${className} variant-${!disabled ? "default" : "disabled"}`,
125
+ containerProps,
126
+ disabled,
127
+ rightAddon: /* @__PURE__ */ import_react.default.createElement(import_TimePickerDropdown.TimePickerDropdown, {
128
+ blockName: timePickerBlockName,
129
+ disabled,
130
+ isOpen: isMenuOpened,
131
+ zIndex,
132
+ placement,
133
+ onOpen: handleMenuOpen,
134
+ onClick: (e) => {
135
+ e.preventDefault();
136
+ handleMenuOpen(!isMenuOpened);
137
+ },
138
+ menu: /* @__PURE__ */ import_react.default.createElement("div", {
139
+ ref: timePickerRef
140
+ }, /* @__PURE__ */ import_react.default.createElement(import_TimePickerMenu.TimePickerMenu, {
141
+ disabled,
142
+ disabledTimes: disabledTimeRange,
143
+ format,
144
+ hasHeader,
145
+ hasHeaderDisplay,
146
+ onTimeChange: handlePickerChange,
147
+ minutesInterval,
148
+ time,
149
+ ...visiblePanels
150
+ }))
151
+ })
152
+ }, /* @__PURE__ */ import_react.default.createElement(import_ds_form.DSInput, {
153
+ customInputType: ({ onChange: handleChange, ...restInputProps }) => /* @__PURE__ */ import_react.default.createElement(import_ds_form.TimeInputImpl, {
154
+ clearable: true,
155
+ disabled,
156
+ format,
157
+ onChange: handleChange,
158
+ ...restInputProps
159
+ }),
160
+ isShowElipsisActive: false,
161
+ disabled,
162
+ onChange: handleInputChange,
163
+ value: time
164
+ }));
165
+ };
166
+ TimePickerImpl.propTypes = {
167
+ value: import_prop_types.default.instanceOf(Date, import_moment.default),
168
+ onChange: import_prop_types.default.func,
169
+ onOpen: import_prop_types.default.func,
170
+ format: import_prop_types.default.string,
171
+ disabled: import_prop_types.default.bool,
172
+ hasHeader: import_prop_types.default.bool,
173
+ hasHeaderDisplay: import_prop_types.default.bool,
174
+ className: import_prop_types.default.string,
175
+ containerProps: import_prop_types.default.object,
176
+ placement: import_prop_types.default.string,
177
+ zIndex: import_prop_types.default.number,
178
+ disabledTimes: import_prop_types.default.object,
179
+ minutesInterval: import_prop_types.default.number
180
+ };
181
+ var TimePickerImpl_default = TimePickerImpl;
182
+ module.exports = __toCommonJS(TimePickerImpl_exports);
183
+ //# sourceMappingURL=TimePickerImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/TimePickerImpl.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable no-shadow */\nimport React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport memoizeOne from 'memoize-one';\nimport { getVisibleTimeByFormat } from '@elliemae/ds-utilities';\nimport { aggregatedClasses, convertPropToCssClassName } from '@elliemae/ds-classnames';\nimport { DSInput, DSInputGroup, TimeInputImpl } from '@elliemae/ds-form';\nimport { TimePickerMenu } from './TimePickerMenu';\nimport { TimePickerDropdown } from './TimePickerDropdown';\nimport { convertTimeString } from './utils';\n\nconst blockName = 'time-picker';\n\nconst TimePickerContainer = aggregatedClasses(DSInputGroup)(blockName, null, ({ isMenuOpened }) => ({\n isMenuOpened,\n}));\n\nconst TimePickerImpl = ({\n value,\n onChange,\n onOpen,\n format,\n disabled,\n hasHeader,\n hasHeaderDisplay,\n className,\n containerProps,\n placement,\n zIndex,\n disabledTimes,\n minutesInterval,\n}) => {\n const [time, setTime] = useState();\n const [isMenuOpened, setIsMenuOpened] = useState(false);\n const [focusedColumn, setFocusedColumn] = useState(null);\n const timePickerRef = useRef();\n useEffect(() => {\n if (moment(value).isValid()) setTime(moment(value));\n else if (value === null) setTime(undefined);\n }, [value]);\n\n useEffect(() => {\n window.addEventListener('click', handleClickOutside, false);\n return () => window.removeEventListener('click', handleClickOutside, false);\n }, []);\n\n useEffect(() => {\n window.addEventListener('keydown', handleKeyDown, false);\n return () => window.removeEventListener('keydown', handleKeyDown, false);\n }, []);\n\n useEffect(() => {\n if (isMenuOpened) handleChangeFocus();\n }, [isMenuOpened]);\n\n const handleClickOutside = () => {\n if (isMenuOpened) setIsMenuOpened(false);\n };\n\n const handleKeyDown = (event) => {\n const { key } = event;\n const menuOpenKeys = ['Escape', ' ', 'Enter'];\n if (menuOpenKeys.includes(key)) setIsMenuOpened(false);\n };\n\n const handleChangeFocus = () => {\n const [firstColumn] = document.getElementsByClassName('em-ds-time-picker-panel');\n if (firstColumn && !focusedColumn) {\n setFocusedColumn(firstColumn);\n firstColumn.focus();\n }\n };\n\n const handlePickerChange = (newTime) => {\n setTime(moment(newTime));\n onChange(moment(newTime));\n };\n\n const handleInputChange = (newTime) => {\n setTime(newTime);\n onChange(newTime);\n };\n\n const handleMenuOpen = (isOpen) => {\n onOpen(isOpen);\n setIsMenuOpened(isOpen);\n if (!isOpen) setFocusedColumn(null);\n };\n\n const getVisibleTimePanels = memoizeOne((format) => getVisibleTimeByFormat(format));\n const timePickerBlockName = convertPropToCssClassName(blockName);\n const visiblePanels = getVisibleTimePanels(format);\n\n const disabledTimeRange = disabledTimes && {\n from: convertTimeString(disabledTimes.from),\n to: convertTimeString(disabledTimes.to),\n };\n\n return (\n <TimePickerContainer\n className={`${className} variant-${!disabled ? 'default' : 'disabled'}`}\n containerProps={containerProps}\n disabled={disabled}\n rightAddon={\n <TimePickerDropdown\n blockName={timePickerBlockName}\n disabled={disabled}\n isOpen={isMenuOpened}\n zIndex={zIndex}\n placement={placement}\n onOpen={handleMenuOpen}\n onClick={(e) => {\n e.preventDefault();\n handleMenuOpen(!isMenuOpened);\n }}\n menu={\n <div ref={timePickerRef}>\n <TimePickerMenu\n disabled={disabled}\n disabledTimes={disabledTimeRange}\n format={format}\n hasHeader={hasHeader}\n hasHeaderDisplay={hasHeaderDisplay}\n onTimeChange={handlePickerChange}\n minutesInterval={minutesInterval}\n time={time}\n {...visiblePanels}\n />\n </div>\n }\n />\n }\n >\n <DSInput\n customInputType={({ onChange: handleChange, ...restInputProps }) => (\n <TimeInputImpl clearable disabled={disabled} format={format} onChange={handleChange} {...restInputProps} />\n )}\n isShowElipsisActive={false}\n disabled={disabled}\n onChange={handleInputChange}\n value={time}\n />\n </TimePickerContainer>\n );\n};\n\nTimePickerImpl.propTypes = {\n value: PropTypes.instanceOf(Date, moment),\n onChange: PropTypes.func,\n onOpen: PropTypes.func,\n format: PropTypes.string,\n disabled: PropTypes.bool,\n hasHeader: PropTypes.bool,\n hasHeaderDisplay: PropTypes.bool,\n className: PropTypes.string,\n containerProps: PropTypes.object,\n placement: PropTypes.string,\n zIndex: PropTypes.number,\n disabledTimes: PropTypes.object,\n minutesInterval: PropTypes.number,\n};\n\nexport { TimePickerImpl };\nexport default TimePickerImpl;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,241 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var TimePickerMenu_exports = {};
29
+ __export(TimePickerMenu_exports, {
30
+ TimePickerMenu: () => TimePickerMenu,
31
+ default: () => TimePickerMenu_default
32
+ });
33
+ var React = __toESM(require("react"));
34
+ var import_react = __toESM(require("react"));
35
+ var import_prop_types = __toESM(require("prop-types"));
36
+ var import_ds_classnames = require("@elliemae/ds-classnames");
37
+ var import_moment = __toESM(require("moment"));
38
+ var import_ds_utilities = require("@elliemae/ds-utilities");
39
+ var import_utils = require("./utils");
40
+ var import_PickerPanel = require("./PickerPanel");
41
+ const blockName = "time-picker-menu";
42
+ const TimePickerContainer = (0, import_ds_classnames.aggregatedClasses)("div")(blockName);
43
+ const TimePickerHeader = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "header");
44
+ const TimePickerPanelContainer = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "panel-container");
45
+ const generateOption = (format) => (option) => ({
46
+ value: option,
47
+ label: typeof format === "function" ? format(option) : option
48
+ });
49
+ class TimePickerMenu extends import_react.Component {
50
+ constructor(props) {
51
+ super(props);
52
+ this.renderHeader = () => {
53
+ const { time } = this.state;
54
+ return /* @__PURE__ */ import_react.default.createElement(TimePickerHeader, null, time.format("hh:mma"));
55
+ };
56
+ this.state = {
57
+ time: (0, import_moment.default)(props.time || "", props.format) || (0, import_moment.default)()
58
+ };
59
+ }
60
+ static getDerivedStateFromProps(props, state) {
61
+ if (props.time) {
62
+ return { ...state, time: (0, import_moment.default)(props.time) };
63
+ }
64
+ return { ...state, time: void 0 };
65
+ }
66
+ componentDidMount() {
67
+ const { time } = this.state;
68
+ this.setState({ time });
69
+ }
70
+ handleMinuteChange(value) {
71
+ const { time } = this.state;
72
+ this.updateTime(time.minute(value));
73
+ }
74
+ handleHoursChange(value) {
75
+ const { time } = this.state;
76
+ const { use12Hours } = this.props;
77
+ let nextHour = value;
78
+ if (use12Hours) {
79
+ if (!(0, import_utils.isAM)(time)) {
80
+ nextHour = value % 12 + 12;
81
+ }
82
+ }
83
+ this.updateTime(time.hour(nextHour));
84
+ }
85
+ handleSecondsChange(value) {
86
+ const { time } = this.state;
87
+ this.updateTime(time.second(value));
88
+ }
89
+ handleAMPMChange(value) {
90
+ const { time } = this.state;
91
+ const hour = time.hour();
92
+ const nextHour = value.toLowerCase() === "am" ? hour % 12 : hour % 12 + 12;
93
+ this.updateTime(time.hour(nextHour));
94
+ }
95
+ updateTime(time) {
96
+ const { onTimeChange } = this.props;
97
+ onTimeChange(time);
98
+ this.setState({ time });
99
+ }
100
+ renderHoursPanel() {
101
+ const { time } = this.state;
102
+ const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;
103
+ if (!showHours)
104
+ return null;
105
+ const hour = time.hour();
106
+ let selectedHour = use12Hours ? hour % 12 || 12 : hour;
107
+ if (disabledTimes) {
108
+ const { from, to } = disabledTimes;
109
+ if (hour > from.hour && hour < to.hour) {
110
+ if (to.hour < 24) {
111
+ const toFormatted = to.hour % 12 || 12;
112
+ if (selectedHour !== toFormatted)
113
+ this.handleHoursChange(toFormatted);
114
+ selectedHour = toFormatted;
115
+ } else if (from) {
116
+ selectedHour = (from.hour - 1) % 12 || 12;
117
+ }
118
+ }
119
+ }
120
+ const meridiem = hour >= 12 ? "PM" : "AM";
121
+ const withLeadingZeros = format.indexOf("hh") > -1;
122
+ const rangeHours = use12Hours ? (0, import_ds_utilities.range)(1, 13) : (0, import_ds_utilities.range)(24);
123
+ const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && (0, import_ds_utilities.addLeadingZeros)(2)));
124
+ return /* @__PURE__ */ import_react.default.createElement(import_PickerPanel.PickerPanel, {
125
+ type: "hour",
126
+ time,
127
+ meridiem,
128
+ hasHeader,
129
+ header: "H",
130
+ onChange: this.handleHoursChange,
131
+ options: hoursOptions,
132
+ selected: selectedHour,
133
+ disabledTimes
134
+ });
135
+ }
136
+ renderMinutesPanel() {
137
+ const { time } = this.state;
138
+ const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;
139
+ if (!showMinutes)
140
+ return null;
141
+ const withLeadingZeros = format.indexOf("mm") > -1;
142
+ const rangeMinutes = (0, import_ds_utilities.range)(0, 60, minutesInterval).map(generateOption(withLeadingZeros && (0, import_ds_utilities.addLeadingZeros)(2)));
143
+ let selectedMinute = time.minute();
144
+ const selectedHour = time.hour();
145
+ if (disabledTimes) {
146
+ const { from, to } = disabledTimes;
147
+ if (selectedHour <= to.hour && selectedHour > from.hour) {
148
+ if (to) {
149
+ if (selectedMinute < to.min)
150
+ this.handleMinuteChange(to.min);
151
+ } else if (from) {
152
+ if (selectedMinute > from.min)
153
+ this.handleMinuteChange(from.min - 1);
154
+ }
155
+ } else {
156
+ selectedMinute = time.minute();
157
+ }
158
+ }
159
+ return /* @__PURE__ */ import_react.default.createElement(import_PickerPanel.PickerPanel, {
160
+ type: "minutes",
161
+ time,
162
+ hasHeader,
163
+ header: "M",
164
+ onChange: this.handleMinuteChange,
165
+ options: rangeMinutes,
166
+ selected: selectedMinute,
167
+ disabledTimes
168
+ });
169
+ }
170
+ renderSecondsPanel() {
171
+ const { time } = this.state;
172
+ const { showSeconds, format, hasHeader } = this.props;
173
+ if (!showSeconds)
174
+ return null;
175
+ const withLeadingZeros = format.indexOf("ss") > -1;
176
+ const rangeSeconds = (0, import_ds_utilities.range)(60).map(generateOption(withLeadingZeros && (0, import_ds_utilities.addLeadingZeros)(2)));
177
+ return /* @__PURE__ */ import_react.default.createElement(import_PickerPanel.PickerPanel, {
178
+ type: "seconds",
179
+ hasHeader,
180
+ header: "S",
181
+ onChange: this.handleSecondsChange,
182
+ options: rangeSeconds,
183
+ selected: time.second()
184
+ });
185
+ }
186
+ renderAMPMPanel() {
187
+ const { time } = this.state;
188
+ const { use12Hours, hasHeader, disabledTimes } = this.props;
189
+ if (!use12Hours)
190
+ return null;
191
+ let meridiemSelected = !(0, import_utils.isAM)(time) ? "pm" : "am";
192
+ if (disabledTimes && disabledTimes.to && meridiemSelected === "am") {
193
+ meridiemSelected = disabledTimes.to.hour >= 12 ? "pm" : "am";
194
+ if (meridiemSelected === "am" && time.hour() > 12) {
195
+ this.handleAMPMChange("am");
196
+ }
197
+ if (meridiemSelected === "pm" && time.hour() <= 12) {
198
+ this.handleAMPMChange("pm");
199
+ }
200
+ }
201
+ return /* @__PURE__ */ import_react.default.createElement(import_PickerPanel.PickerPanel, {
202
+ type: "meridiem",
203
+ hasHeader,
204
+ header: "",
205
+ onChange: this.handleAMPMChange,
206
+ options: [
207
+ { value: "am", label: "am" },
208
+ { value: "pm", label: "pm" }
209
+ ],
210
+ selected: meridiemSelected,
211
+ disabledTimes
212
+ });
213
+ }
214
+ render() {
215
+ const { hasHeaderDisplay } = this.props;
216
+ return /* @__PURE__ */ import_react.default.createElement(TimePickerContainer, null, hasHeaderDisplay && this.renderHeader(), /* @__PURE__ */ import_react.default.createElement(TimePickerPanelContainer, null, this.renderHoursPanel(), this.renderMinutesPanel(), this.renderSecondsPanel(), this.renderAMPMPanel()));
217
+ }
218
+ }
219
+ TimePickerMenu.defaultProps = {
220
+ time: (0, import_moment.default)(),
221
+ hasHeader: false,
222
+ use12Hours: true,
223
+ showSeconds: true,
224
+ showMinutes: true,
225
+ showHours: true,
226
+ disabledTimes: void 0,
227
+ onTimeChange: () => null
228
+ };
229
+ TimePickerMenu.propTypes = {
230
+ time: import_prop_types.default.instanceOf(import_moment.default),
231
+ hasHeader: import_prop_types.default.bool,
232
+ use12Hours: import_prop_types.default.bool,
233
+ showSeconds: import_prop_types.default.bool,
234
+ showMinutes: import_prop_types.default.bool,
235
+ showHours: import_prop_types.default.bool,
236
+ onTimeChange: import_prop_types.default.func,
237
+ disabledTimes: import_prop_types.default.object
238
+ };
239
+ var TimePickerMenu_default = TimePickerMenu;
240
+ module.exports = __toCommonJS(TimePickerMenu_exports);
241
+ //# sourceMappingURL=TimePickerMenu.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/TimePickerMenu.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport moment from 'moment';\nimport { range, addLeadingZeros } from '@elliemae/ds-utilities';\nimport { isAM } from './utils';\nimport { PickerPanel } from './PickerPanel';\n\nconst blockName = 'time-picker-menu';\n\nconst TimePickerContainer = aggregatedClasses('div')(blockName);\nconst TimePickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst TimePickerPanelContainer = aggregatedClasses('div')(blockName, 'panel-container');\n\nconst generateOption = (format) => (option) => ({\n value: option,\n label: typeof format === 'function' ? format(option) : option,\n});\n\nclass TimePickerMenu extends Component {\n constructor(props) {\n super(props);\n this.state = {\n time: moment(props.time || '', props.format) || moment(),\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.time) {\n return { ...state, time: moment(props.time) };\n }\n return { ...state, time: undefined };\n }\n\n componentDidMount() {\n const { time } = this.state;\n this.setState({ time });\n }\n\n handleMinuteChange(value) {\n const { time } = this.state;\n this.updateTime(time.minute(value));\n }\n\n handleHoursChange(value) {\n const { time } = this.state;\n const { use12Hours } = this.props;\n let nextHour = value;\n if (use12Hours) {\n if (!isAM(time)) {\n nextHour = (value % 12) + 12;\n }\n }\n this.updateTime(time.hour(nextHour));\n }\n\n handleSecondsChange(value) {\n const { time } = this.state;\n this.updateTime(time.second(value));\n }\n\n handleAMPMChange(value) {\n const { time } = this.state;\n const hour = time.hour();\n const nextHour = value.toLowerCase() === 'am' ? hour % 12 : (hour % 12) + 12;\n this.updateTime(time.hour(nextHour));\n }\n\n updateTime(time) {\n const { onTimeChange } = this.props;\n onTimeChange(time);\n this.setState({ time });\n }\n\n renderHoursPanel() {\n const { time } = this.state;\n const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;\n if (!showHours) return null;\n\n const hour = time.hour(); // in 24 format\n let selectedHour = use12Hours ? hour % 12 || 12 : hour;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (hour > from.hour && hour < to.hour) {\n if (to.hour < 24) {\n const toFormatted = to.hour % 12 || 12;\n if (selectedHour !== toFormatted) this.handleHoursChange(toFormatted);\n selectedHour = toFormatted;\n } else if (from) {\n selectedHour = (from.hour - 1) % 12 || 12;\n }\n }\n }\n\n const meridiem = hour >= 12 ? 'PM' : 'AM';\n const withLeadingZeros = format.indexOf('hh') > -1;\n const rangeHours = use12Hours ? range(1, 13) : range(24);\n const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"hour\"\n time={time}\n meridiem={meridiem}\n hasHeader={hasHeader}\n header=\"H\"\n onChange={this.handleHoursChange}\n options={hoursOptions}\n selected={selectedHour}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderMinutesPanel() {\n const { time } = this.state;\n const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;\n if (!showMinutes) return null;\n const withLeadingZeros = format.indexOf('mm') > -1;\n const rangeMinutes = range(0, 60, minutesInterval).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n\n let selectedMinute = time.minute();\n const selectedHour = time.hour();\n\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (selectedHour <= to.hour && selectedHour > from.hour) {\n if (to) {\n if (selectedMinute < to.min) this.handleMinuteChange(to.min);\n } else if (from) {\n if (selectedMinute > from.min) this.handleMinuteChange(from.min - 1);\n }\n } else {\n selectedMinute = time.minute();\n }\n }\n\n return (\n <PickerPanel\n type=\"minutes\"\n time={time}\n hasHeader={hasHeader}\n header=\"M\"\n onChange={this.handleMinuteChange}\n options={rangeMinutes}\n selected={selectedMinute}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderSecondsPanel() {\n const { time } = this.state;\n const { showSeconds, format, hasHeader } = this.props;\n if (!showSeconds) return null;\n const withLeadingZeros = format.indexOf('ss') > -1;\n const rangeSeconds = range(60).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"seconds\"\n hasHeader={hasHeader}\n header=\"S\"\n onChange={this.handleSecondsChange}\n options={rangeSeconds}\n selected={time.second()}\n />\n );\n }\n\n renderAMPMPanel() {\n const { time } = this.state;\n const { use12Hours, hasHeader, disabledTimes } = this.props;\n if (!use12Hours) return null;\n\n let meridiemSelected = !isAM(time) ? 'pm' : 'am';\n if (disabledTimes && disabledTimes.to && meridiemSelected === 'am') {\n meridiemSelected = disabledTimes.to.hour >= 12 ? 'pm' : 'am';\n if (meridiemSelected === 'am' && time.hour() > 12) {\n this.handleAMPMChange('am');\n }\n\n if (meridiemSelected === 'pm' && time.hour() <= 12) {\n this.handleAMPMChange('pm');\n }\n }\n\n return (\n <PickerPanel\n type=\"meridiem\"\n hasHeader={hasHeader}\n header=\"\"\n onChange={this.handleAMPMChange}\n options={[\n { value: 'am', label: 'am' },\n { value: 'pm', label: 'pm' },\n ]}\n selected={meridiemSelected}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderHeader = () => {\n const { time } = this.state;\n return <TimePickerHeader>{time.format('hh:mma')}</TimePickerHeader>;\n };\n\n render() {\n const { hasHeaderDisplay } = this.props;\n\n return (\n <TimePickerContainer>\n {hasHeaderDisplay && this.renderHeader()}\n <TimePickerPanelContainer>\n {this.renderHoursPanel()}\n {this.renderMinutesPanel()}\n {this.renderSecondsPanel()}\n {this.renderAMPMPanel()}\n </TimePickerPanelContainer>\n </TimePickerContainer>\n );\n }\n}\n\nTimePickerMenu.defaultProps = {\n time: moment(),\n hasHeader: false,\n use12Hours: true,\n showSeconds: true,\n showMinutes: true,\n showHours: true,\n disabledTimes: undefined,\n onTimeChange: () => null,\n};\n\nTimePickerMenu.propTypes = {\n /** Time value */\n time: PropTypes.instanceOf(moment),\n /** If the menu has header or not */\n hasHeader: PropTypes.bool,\n /** Whether to use the 12 hours format */\n use12Hours: PropTypes.bool,\n /** Whether show 'seconds' or not */\n showSeconds: PropTypes.bool,\n /** Whether show 'minutes' or not */\n showMinutes: PropTypes.bool,\n /** Whether show 'hours' or not */\n showHours: PropTypes.bool,\n /** Handler when time changes */\n onTimeChange: PropTypes.func,\n disabledTimes: PropTypes.object,\n};\n\nexport { TimePickerMenu };\nexport default TimePickerMenu;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,40 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var src_exports = {};
29
+ __export(src_exports, {
30
+ convertTimeString: () => import_utils.convertTimeString,
31
+ default: () => import_DSTimePicker.default
32
+ });
33
+ var React = __toESM(require("react"));
34
+ __reExport(src_exports, require("./DSTimePicker"));
35
+ __reExport(src_exports, require("./TimePickerMenu"));
36
+ __reExport(src_exports, require("./DSTimePickerMenu"));
37
+ var import_utils = require("./utils");
38
+ var import_DSTimePicker = __toESM(require("./DSTimePicker"));
39
+ module.exports = __toCommonJS(src_exports);
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["export * from './DSTimePicker';\nexport * from './TimePickerMenu';\nexport * from './DSTimePickerMenu';\n\nexport { convertTimeString } from './utils'; // this is an exception, we should move utils to shared tho?\n\nexport { default } from './DSTimePicker';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,wBAAc;AACd,wBAAc;AACd,wBAAc;AAEd,mBAAkC;AAElC,0BAAwB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,93 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var moveElementOnScroll_exports = {};
29
+ __export(moveElementOnScroll_exports, {
30
+ MoveElementOnScroll: () => MoveElementOnScroll,
31
+ default: () => moveElementOnScroll_default
32
+ });
33
+ var React = __toESM(require("react"));
34
+ function MoveElementOnScroll(element, {
35
+ container,
36
+ min = 0,
37
+ max = element.offsetHeight,
38
+ speed = 1,
39
+ smooth = 2,
40
+ onUpdate = () => null,
41
+ onEndScroll = () => null
42
+ }) {
43
+ let moving = false;
44
+ let pos = min;
45
+ let lastPos = pos;
46
+ const requestFrame = function() {
47
+ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(func) {
48
+ window.setTimeout(func, 1e3 / 50);
49
+ };
50
+ }();
51
+ function update() {
52
+ moving = true;
53
+ const delta = (pos - lastPos) / smooth;
54
+ lastPos += delta;
55
+ if (Math.abs(delta) > 0.7) {
56
+ requestFrame(() => {
57
+ onUpdate(lastPos, delta);
58
+ update();
59
+ });
60
+ } else {
61
+ onEndScroll(pos);
62
+ moving = false;
63
+ }
64
+ }
65
+ function scrolling(e) {
66
+ e.preventDefault();
67
+ let delta = e.delta || e.wheelDelta;
68
+ if (delta === void 0) {
69
+ delta = -e.detail;
70
+ delta *= 10 * speed;
71
+ }
72
+ pos += -delta * speed;
73
+ pos = Math.max(min, Math.min(pos, max));
74
+ if (!moving) {
75
+ update();
76
+ }
77
+ }
78
+ container.addEventListener("mousewheel", scrolling, false);
79
+ container.addEventListener("DOMMouseScroll", scrolling, false);
80
+ return {
81
+ unsubscribe: () => {
82
+ container.removeEventListener("mousewheel", scrolling);
83
+ container.removeEventListener("DOMMouseScroll", scrolling);
84
+ },
85
+ updatePosition: (newPos) => {
86
+ pos = -newPos;
87
+ lastPos = -pos;
88
+ }
89
+ };
90
+ }
91
+ var moveElementOnScroll_default = MoveElementOnScroll;
92
+ module.exports = __toCommonJS(moveElementOnScroll_exports);
93
+ //# sourceMappingURL=moveElementOnScroll.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/moveElementOnScroll.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["export function MoveElementOnScroll(\n element,\n {\n container,\n min = 0,\n max = element.offsetHeight,\n speed = 1,\n smooth = 2,\n onUpdate = () => null,\n onEndScroll = () => null,\n },\n) {\n let moving = false;\n let pos = min;\n let lastPos = pos;\n\n // todo: move this to utils if we finally need it\n const requestFrame = (function() {\n return (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(func) {\n window.setTimeout(func, 1000 / 50);\n }\n );\n })();\n\n function update() {\n moving = true;\n const delta = (pos - lastPos) / smooth;\n lastPos += delta;\n\n if (Math.abs(delta) > 0.7) {\n requestFrame(() => {\n onUpdate(lastPos, delta);\n update();\n });\n } else {\n onEndScroll(pos);\n moving = false;\n }\n }\n\n function scrolling(e) {\n e.preventDefault(); // disable default scrolling\n let delta = e.delta || e.wheelDelta;\n if (delta === undefined) {\n // for firefox\n delta = -e.detail;\n delta *= 10 * speed;\n }\n\n pos += -delta * speed;\n pos = Math.max(min, Math.min(pos, max)); // limit scrolling\n if (!moving) {\n update();\n }\n }\n\n container.addEventListener('mousewheel', scrolling, false);\n container.addEventListener('DOMMouseScroll', scrolling, false);\n\n return {\n unsubscribe: () => {\n container.removeEventListener('mousewheel', scrolling);\n container.removeEventListener('DOMMouseScroll', scrolling);\n },\n updatePosition: newPos => {\n pos = -newPos;\n lastPos = -pos;\n },\n };\n}\n\nexport default MoveElementOnScroll;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,6BACL,SACA;AAAA,EACE;AAAA,EACA,MAAM;AAAA,EACN,MAAM,QAAQ;AAAA,EACd,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW,MAAM;AAAA,EACjB,cAAc,MAAM;AAAA,GAEtB;AACA,MAAI,SAAS;AACb,MAAI,MAAM;AACV,MAAI,UAAU;AAGd,QAAM,eAAgB,WAAW;AAC/B,WACE,OAAO,yBACP,OAAO,+BACP,OAAO,4BACP,OAAO,0BACP,OAAO,2BACP,SAAS,MAAM;AACb,aAAO,WAAW,MAAM,MAAO;AAAA;AAAA;AAKrC,oBAAkB;AAChB,aAAS;AACT,UAAM,QAAS,OAAM,WAAW;AAChC,eAAW;AAEX,QAAI,KAAK,IAAI,SAAS,KAAK;AACzB,mBAAa,MAAM;AACjB,iBAAS,SAAS;AAClB;AAAA;AAAA,WAEG;AACL,kBAAY;AACZ,eAAS;AAAA;AAAA;AAIb,qBAAmB,GAAG;AACpB,MAAE;AACF,QAAI,QAAQ,EAAE,SAAS,EAAE;AACzB,QAAI,UAAU,QAAW;AAEvB,cAAQ,CAAC,EAAE;AACX,eAAS,KAAK;AAAA;AAGhB,WAAO,CAAC,QAAQ;AAChB,UAAM,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK;AAClC,QAAI,CAAC,QAAQ;AACX;AAAA;AAAA;AAIJ,YAAU,iBAAiB,cAAc,WAAW;AACpD,YAAU,iBAAiB,kBAAkB,WAAW;AAExD,SAAO;AAAA,IACL,aAAa,MAAM;AACjB,gBAAU,oBAAoB,cAAc;AAC5C,gBAAU,oBAAoB,kBAAkB;AAAA;AAAA,IAElD,gBAAgB,YAAU;AACxB,YAAM,CAAC;AACP,gBAAU,CAAC;AAAA;AAAA;AAAA;AAKjB,IAAO,8BAAQ;",
6
+ "names": []
7
+ }