grevlingui 0.1.23 → 0.1.25
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.
|
@@ -1,110 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
overflow: hidden;
|
|
3
|
-
}
|
|
1
|
+
|
|
4
2
|
|
|
5
3
|
.numberSelect {
|
|
6
4
|
position: relative;
|
|
7
|
-
display: flex;
|
|
8
|
-
align-items: center;
|
|
9
|
-
justify-content: center;
|
|
10
|
-
|
|
11
|
-
cursor: default;
|
|
12
|
-
-webkit-user-select: none; /* Safari */
|
|
13
|
-
-ms-user-select: none; /* IE 10 and IE 11 */
|
|
14
|
-
user-select: none; /* Standard syntax */
|
|
15
5
|
}
|
|
16
6
|
|
|
17
|
-
.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
right: 0;
|
|
7
|
+
.numberSelect_editing {
|
|
8
|
+
z-index: 2;
|
|
9
|
+
}
|
|
21
10
|
|
|
11
|
+
.numberSelect_value {
|
|
12
|
+
position: relative;
|
|
22
13
|
display: flex;
|
|
23
14
|
align-items: center;
|
|
24
15
|
justify-content: center;
|
|
25
|
-
|
|
26
|
-
z-index:
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.numberSelect .pointer,
|
|
30
|
-
.numberSelect .pointerShadow {
|
|
31
|
-
clip-path: polygon(50% 0, 100% 30%, 50% 100%, 0 30%);
|
|
16
|
+
border-radius: 100%;
|
|
17
|
+
z-index: 2;
|
|
32
18
|
}
|
|
33
19
|
|
|
34
|
-
.
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.numberSelect .inputModal {
|
|
40
|
-
z-index: 3;
|
|
20
|
+
.numberSelect_increment {
|
|
21
|
+
border-radius: 100%;
|
|
41
22
|
position: absolute;
|
|
42
|
-
|
|
43
|
-
opacity: 1;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.numberSelect .hidden.inputModal {
|
|
47
|
-
opacity: 0;
|
|
48
|
-
transition: opacity 300ms linear;
|
|
23
|
+
z-index: 3;
|
|
49
24
|
}
|
|
50
25
|
|
|
51
|
-
.
|
|
26
|
+
.numberSelect_blur {
|
|
52
27
|
position: absolute;
|
|
53
|
-
|
|
54
|
-
bottom: 0;
|
|
55
|
-
z-index: 5;
|
|
56
|
-
height: 100%;
|
|
57
|
-
pointer-events: none;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.numberSelect .fade.left {
|
|
61
|
-
left: 0;
|
|
62
|
-
border-radius: 1rem 0 0 1rem;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.numberSelect .fade.right {
|
|
66
|
-
right: 0;
|
|
67
|
-
border-radius: 0 1rem 1rem 0;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.numberSelect .inputModal.shadow {
|
|
71
|
-
box-shadow: 0px 6px 5px 0px rgba(0, 0, 0, 0.70);
|
|
72
|
-
-webkit-box-shadow: 0px 6px 5px 0px rgba(0, 0, 0, 0.70);
|
|
73
|
-
-moz-box-shadow: 0px 6px 5px 0px rgba(0, 0, 0, 0.70);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
.numberSelect .scrollSelector::-webkit-scrollbar {
|
|
78
|
-
display: none;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.numberSelect .scrollSelector {
|
|
82
|
-
position: relative;
|
|
83
|
-
width: 90px;
|
|
84
|
-
overflow: auto;
|
|
85
|
-
overscroll-behavior: contain;
|
|
86
|
-
padding: 1rem 0;
|
|
87
|
-
|
|
88
|
-
scroll-snap-type: x mandatory;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.numberSelect .thin.scrollSelector {
|
|
92
|
-
padding: 8px 0;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.numberSelect .options {
|
|
96
|
-
display: flex;
|
|
97
|
-
align-items: center;
|
|
98
|
-
justify-content: center;
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.numberSelect .option {
|
|
103
|
-
border-radius: 2rem;
|
|
104
|
-
display: flex;
|
|
105
|
-
align-items: center;
|
|
106
|
-
justify-content: center;
|
|
107
|
-
|
|
108
|
-
scroll-snap-align: start;
|
|
109
|
-
scroll-snap-stop: always;
|
|
28
|
+
z-index: 1;
|
|
110
29
|
}
|
|
@@ -11,10 +11,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
|
|
12
12
|
require("./NumberSelect.css");
|
|
13
13
|
|
|
14
|
-
var _UseEffectPartialDeps = _interopRequireDefault(require("../utils/UseEffectPartialDeps"));
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
15
|
|
|
20
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -25,153 +21,89 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
25
21
|
|
|
26
22
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
27
23
|
|
|
28
|
-
const cosmos = {};
|
|
29
|
-
|
|
30
24
|
const NumberSelect = _ref => {
|
|
31
25
|
let {
|
|
32
26
|
value,
|
|
33
27
|
setValue,
|
|
34
|
-
flip,
|
|
35
|
-
thin,
|
|
36
28
|
min = 1,
|
|
37
29
|
max = 10,
|
|
38
|
-
|
|
39
|
-
size = 40,
|
|
30
|
+
size = 5,
|
|
40
31
|
color = 'white',
|
|
41
|
-
numberBgColor = '#
|
|
42
|
-
selectorColor = '#
|
|
43
|
-
pointerColor = '#6c9fff',
|
|
44
|
-
pointerShadowColor = '#33333390',
|
|
45
|
-
top = -16
|
|
32
|
+
numberBgColor = '#663399',
|
|
33
|
+
selectorColor = '#1E90FF'
|
|
46
34
|
} = _ref;
|
|
47
|
-
const [
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
setRendered(true);
|
|
60
|
-
}, []);
|
|
61
|
-
(0, _UseEffectPartialDeps.default)(() => {
|
|
62
|
-
clearTimeout(timeout1);
|
|
63
|
-
if (showInput) setHidden(false);else setTimeout1(setTimeout(() => setHidden(true), 320));
|
|
64
|
-
}, [showInput]);
|
|
65
|
-
(0, _UseEffectPartialDeps.default)(() => {
|
|
66
|
-
if (!rendered) return;
|
|
67
|
-
const ref = cosmoState.refs[value + 2 - min];
|
|
68
|
-
if (!ref) return;
|
|
69
|
-
ref.scrollIntoView();
|
|
70
|
-
}, [rendered]);
|
|
71
|
-
if (!cosmoState) return /*#__PURE__*/_react.default.createElement("div", null);
|
|
72
|
-
|
|
73
|
-
const getExactValue = () => cosmoState.scrollRef.scrollLeft / size + min;
|
|
74
|
-
|
|
75
|
-
if (max - min === 0) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
76
|
-
const optionStyle = {
|
|
77
|
-
width: "".concat(size, "px"),
|
|
78
|
-
height: "".concat(size - 1, "px"),
|
|
79
|
-
fontSize: "".concat(size * .6, "px"),
|
|
80
|
-
borderRadius: "".concat(size, "px"),
|
|
81
|
-
paddingBottom: '1px'
|
|
35
|
+
const [editing, setEditing] = (0, _react.useState)(false);
|
|
36
|
+
const fullSize = "".concat(size, "rem");
|
|
37
|
+
const incrementorSize = "".concat(size * .8, "rem");
|
|
38
|
+
const incrementorVerticalOffset = "-".concat(size * .9, "rem");
|
|
39
|
+
const incrementorHorizontalOffset = "".concat(size * .1, "rem");
|
|
40
|
+
const minusHalfSize = "-".concat(size / 3, "rem");
|
|
41
|
+
const incrementorStyle = {
|
|
42
|
+
height: incrementorSize,
|
|
43
|
+
width: incrementorSize,
|
|
44
|
+
backgroundColor: selectorColor,
|
|
45
|
+
right: incrementorHorizontalOffset,
|
|
46
|
+
bottom: incrementorHorizontalOffset
|
|
82
47
|
};
|
|
83
48
|
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
49
|
+
const addStyle = _objectSpread(_objectSpread({}, incrementorStyle), {}, {
|
|
50
|
+
top: incrementorVerticalOffset
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const subtractStyle = _objectSpread(_objectSpread({}, incrementorStyle), {}, {
|
|
54
|
+
bottom: incrementorVerticalOffset
|
|
90
55
|
});
|
|
91
56
|
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
top:
|
|
57
|
+
const blurStyle = {
|
|
58
|
+
background: "radial-gradient(".concat(numberBgColor, "FF, ").concat(numberBgColor, "00, ").concat(numberBgColor, "00)"),
|
|
59
|
+
left: minusHalfSize,
|
|
60
|
+
right: minusHalfSize,
|
|
61
|
+
top: incrementorVerticalOffset,
|
|
62
|
+
bottom: incrementorVerticalOffset
|
|
97
63
|
};
|
|
98
64
|
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
128
|
-
className: "pointer",
|
|
129
|
-
style: {
|
|
130
|
-
backgroundColor: pointerColor,
|
|
131
|
-
width: "".concat(size / 2, "px"),
|
|
132
|
-
height: "".concat(size * 0.8, "px")
|
|
133
|
-
}
|
|
134
|
-
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
135
|
-
className: "scrollSelector ".concat(thin ? 'thin' : ''),
|
|
136
|
-
ref: node => cosmoState.scrollRef = node,
|
|
137
|
-
style: {
|
|
138
|
-
width: "".concat(size * 3, "px")
|
|
139
|
-
},
|
|
140
|
-
onScroll: () => {
|
|
141
|
-
const centerNumber = Math.round(getExactValue());
|
|
142
|
-
if (value !== centerNumber) setValue(centerNumber);
|
|
143
|
-
}
|
|
144
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
145
|
-
className: "options",
|
|
146
|
-
style: {
|
|
147
|
-
width: "".concat((options.length + 2) * size, "px")
|
|
148
|
-
}
|
|
149
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
150
|
-
className: "option",
|
|
151
|
-
style: optionStyle,
|
|
152
|
-
ref: node => cosmoState.refs[0] = node
|
|
153
|
-
}), options.map((n, i) => /*#__PURE__*/_react.default.createElement("div", {
|
|
154
|
-
style: _objectSpread(_objectSpread({}, optionStyle), {}, {
|
|
155
|
-
backgroundColor: value === n ? numberBgColor : ''
|
|
156
|
-
}),
|
|
157
|
-
key: n,
|
|
158
|
-
ref: node => cosmoState.refs[i + 1] = node,
|
|
159
|
-
className: 'option'
|
|
160
|
-
}, n)), /*#__PURE__*/_react.default.createElement("div", {
|
|
161
|
-
className: "option",
|
|
162
|
-
style: optionStyle,
|
|
163
|
-
ref: node => cosmoState.refs[options.length + 1] = node
|
|
164
|
-
}))));
|
|
65
|
+
const icon = up => /*#__PURE__*/_react.default.createElement("svg", {
|
|
66
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
67
|
+
viewBox: "0 -960 960 960",
|
|
68
|
+
fill: color
|
|
69
|
+
}, up ? /*#__PURE__*/_react.default.createElement("path", {
|
|
70
|
+
d: "m283-345-43-43 240-240 240 239-43 43-197-197-197 198Z"
|
|
71
|
+
}) : /*#__PURE__*/_react.default.createElement("path", {
|
|
72
|
+
d: "M480-345 240-585l43-43 197 198 197-197 43 43-240 239Z"
|
|
73
|
+
}));
|
|
74
|
+
|
|
75
|
+
const increment = change => () => {
|
|
76
|
+
const nv = change + value;
|
|
77
|
+
if (nv > max || nv < min) return;
|
|
78
|
+
setValue(nv);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const renderInputs = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
82
|
+
className: "numberSelect_increment numberSelect_add ".concat(editing ? 'numberSelect_editing' : ''),
|
|
83
|
+
style: addStyle,
|
|
84
|
+
onClick: increment(1)
|
|
85
|
+
}, icon(true)), /*#__PURE__*/_react.default.createElement("div", {
|
|
86
|
+
className: "numberSelect_blur",
|
|
87
|
+
style: blurStyle
|
|
88
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
89
|
+
className: "numberSelect_increment numberSelect_subtract",
|
|
90
|
+
style: subtractStyle,
|
|
91
|
+
onClick: increment(-1)
|
|
92
|
+
}, icon()));
|
|
165
93
|
|
|
166
94
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
167
|
-
className: "
|
|
95
|
+
className: "numberSelect"
|
|
168
96
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
169
|
-
className: "
|
|
170
|
-
|
|
97
|
+
className: "numberSelect_value",
|
|
98
|
+
onClick: () => setEditing(pv => !pv),
|
|
99
|
+
style: {
|
|
100
|
+
height: fullSize,
|
|
101
|
+
width: fullSize,
|
|
171
102
|
color,
|
|
172
|
-
backgroundColor: numberBgColor
|
|
173
|
-
|
|
174
|
-
|
|
103
|
+
backgroundColor: numberBgColor,
|
|
104
|
+
fontSize: "".concat(size / 2, "rem")
|
|
105
|
+
}
|
|
106
|
+
}, value), editing && renderInputs());
|
|
175
107
|
};
|
|
176
108
|
|
|
177
109
|
exports.NumberSelect = NumberSelect;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
.hidden.NumberSliderSelectWrapper {
|
|
2
|
+
overflow: hidden;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.NumberSliderSelect {
|
|
6
|
+
position: relative;
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
|
|
11
|
+
cursor: default;
|
|
12
|
+
-webkit-user-select: none; /* Safari */
|
|
13
|
+
-ms-user-select: none; /* IE 10 and IE 11 */
|
|
14
|
+
user-select: none; /* Standard syntax */
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.NumberSliderSelect .pointerContainer {
|
|
18
|
+
position: absolute;
|
|
19
|
+
left: 0;
|
|
20
|
+
right: 0;
|
|
21
|
+
|
|
22
|
+
display: flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
justify-content: center;
|
|
25
|
+
pointer-events: none;
|
|
26
|
+
z-index: 1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.NumberSliderSelect .pointer,
|
|
30
|
+
.NumberSliderSelect .pointerShadow {
|
|
31
|
+
clip-path: polygon(50% 0, 100% 30%, 50% 100%, 0 30%);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.NumberSliderSelect .pointerShadow {
|
|
35
|
+
background-color: #33333390;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
.NumberSliderSelect .inputModal {
|
|
40
|
+
z-index: 3;
|
|
41
|
+
position: absolute;
|
|
42
|
+
border-radius: 1rem;
|
|
43
|
+
opacity: 1;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.NumberSliderSelect .hidden.inputModal {
|
|
47
|
+
opacity: 0;
|
|
48
|
+
transition: opacity 300ms linear;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.NumberSliderSelect .fade {
|
|
52
|
+
position: absolute;
|
|
53
|
+
top: 0;
|
|
54
|
+
bottom: 0;
|
|
55
|
+
z-index: 5;
|
|
56
|
+
height: 100%;
|
|
57
|
+
pointer-events: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.NumberSliderSelect .fade.left {
|
|
61
|
+
left: 0;
|
|
62
|
+
border-radius: 1rem 0 0 1rem;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.NumberSliderSelect .fade.right {
|
|
66
|
+
right: 0;
|
|
67
|
+
border-radius: 0 1rem 1rem 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.NumberSliderSelect .inputModal.shadow {
|
|
71
|
+
box-shadow: 0px 6px 5px 0px rgba(0, 0, 0, 0.70);
|
|
72
|
+
-webkit-box-shadow: 0px 6px 5px 0px rgba(0, 0, 0, 0.70);
|
|
73
|
+
-moz-box-shadow: 0px 6px 5px 0px rgba(0, 0, 0, 0.70);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
.NumberSliderSelect .scrollSelector::-webkit-scrollbar {
|
|
78
|
+
display: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.NumberSliderSelect .scrollSelector {
|
|
82
|
+
position: relative;
|
|
83
|
+
width: 90px;
|
|
84
|
+
overflow: auto;
|
|
85
|
+
overscroll-behavior: contain;
|
|
86
|
+
padding: 1rem 0;
|
|
87
|
+
|
|
88
|
+
scroll-snap-type: x mandatory;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.NumberSliderSelect .thin.scrollSelector {
|
|
92
|
+
padding: 8px 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.NumberSliderSelect .options {
|
|
96
|
+
display: flex;
|
|
97
|
+
align-items: center;
|
|
98
|
+
justify-content: center;
|
|
99
|
+
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.NumberSliderSelect .option {
|
|
103
|
+
border-radius: 2rem;
|
|
104
|
+
display: flex;
|
|
105
|
+
align-items: center;
|
|
106
|
+
justify-content: center;
|
|
107
|
+
|
|
108
|
+
scroll-snap-align: start;
|
|
109
|
+
scroll-snap-stop: always;
|
|
110
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.NumberSliderSelect = void 0;
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
require("./NumberSliderSelect.css");
|
|
13
|
+
|
|
14
|
+
var _UseEffectPartialDeps = _interopRequireDefault(require("../utils/UseEffectPartialDeps"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
23
|
+
|
|
24
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
25
|
+
|
|
26
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
27
|
+
|
|
28
|
+
const cosmos = {};
|
|
29
|
+
|
|
30
|
+
const NumberSliderSelect = _ref => {
|
|
31
|
+
let {
|
|
32
|
+
value,
|
|
33
|
+
setValue,
|
|
34
|
+
flip,
|
|
35
|
+
thin,
|
|
36
|
+
min = 1,
|
|
37
|
+
max = 10,
|
|
38
|
+
shadow,
|
|
39
|
+
size = 40,
|
|
40
|
+
color = 'white',
|
|
41
|
+
numberBgColor = '#663399FF',
|
|
42
|
+
selectorColor = '#1E90FFFF',
|
|
43
|
+
pointerColor = '#6c9fff',
|
|
44
|
+
pointerShadowColor = '#33333390',
|
|
45
|
+
top = -16
|
|
46
|
+
} = _ref;
|
|
47
|
+
const [id] = (0, _react.useState)("id-".concat(Math.random()));
|
|
48
|
+
const [rendered, setRendered] = (0, _react.useState)(false);
|
|
49
|
+
const [showInput, setShowInput] = (0, _react.useState)(false);
|
|
50
|
+
const [hidden, setHidden] = (0, _react.useState)(false);
|
|
51
|
+
const [timeout1, setTimeout1] = (0, _react.useState)(0);
|
|
52
|
+
const [timeout2, setTimeout2] = (0, _react.useState)(0);
|
|
53
|
+
const options = [...Array(Math.max(max - min + 1, 1)).keys()].map(v => v + min);
|
|
54
|
+
let cosmoState = cosmos[id];
|
|
55
|
+
(0, _react.useLayoutEffect)(() => {
|
|
56
|
+
cosmoState = cosmos[id] = {
|
|
57
|
+
refs: []
|
|
58
|
+
};
|
|
59
|
+
setRendered(true);
|
|
60
|
+
}, []);
|
|
61
|
+
(0, _UseEffectPartialDeps.default)(() => {
|
|
62
|
+
clearTimeout(timeout1);
|
|
63
|
+
if (showInput) setHidden(false);else setTimeout1(setTimeout(() => setHidden(true), 320));
|
|
64
|
+
}, [showInput]);
|
|
65
|
+
(0, _UseEffectPartialDeps.default)(() => {
|
|
66
|
+
if (!rendered) return;
|
|
67
|
+
const ref = cosmoState.refs[value + 2 - min];
|
|
68
|
+
if (!ref) return;
|
|
69
|
+
ref.scrollIntoView();
|
|
70
|
+
}, [rendered]);
|
|
71
|
+
if (!cosmoState) return /*#__PURE__*/_react.default.createElement("div", null);
|
|
72
|
+
|
|
73
|
+
const getExactValue = () => cosmoState.scrollRef.scrollLeft / size + min;
|
|
74
|
+
|
|
75
|
+
if (max - min === 0) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
76
|
+
const optionStyle = {
|
|
77
|
+
width: "".concat(size, "px"),
|
|
78
|
+
height: "".concat(size - 1, "px"),
|
|
79
|
+
fontSize: "".concat(size * .6, "px"),
|
|
80
|
+
borderRadius: "".concat(size, "px"),
|
|
81
|
+
paddingBottom: '1px'
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const renderFade = (side, direction) => /*#__PURE__*/_react.default.createElement("div", {
|
|
85
|
+
className: "fade ".concat(side),
|
|
86
|
+
style: {
|
|
87
|
+
width: "".concat(size * .8, "px"),
|
|
88
|
+
backgroundImage: "linear-gradient(to ".concat(direction, ", ").concat(selectorColor, ", ").concat(selectorColor, " , #00000000)")
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const pointerContainerStyle = flip ? {
|
|
93
|
+
bottom: "-".concat(size * .4, "px"),
|
|
94
|
+
transform: 'rotate(180deg)'
|
|
95
|
+
} : {
|
|
96
|
+
top: "-".concat(size / 2, "px")
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const renderModal = () => /*#__PURE__*/_react.default.createElement("div", {
|
|
100
|
+
className: "inputModal ".concat(showInput ? '' : 'hidden', " ").concat(shadow ? 'shadow' : ''),
|
|
101
|
+
style: {
|
|
102
|
+
backgroundColor: selectorColor,
|
|
103
|
+
top: "".concat(top + (thin ? 8 : 0), "px")
|
|
104
|
+
},
|
|
105
|
+
onTouchStart: () => {
|
|
106
|
+
clearTimeout(timeout2);
|
|
107
|
+
setShowInput(true);
|
|
108
|
+
},
|
|
109
|
+
onTouchEnd: () => {
|
|
110
|
+
clearTimeout(timeout2);
|
|
111
|
+
setTimeout2(setTimeout(() => setShowInput(false), 800));
|
|
112
|
+
}
|
|
113
|
+
}, renderFade('left', 'right'), renderFade('right', 'left'), /*#__PURE__*/_react.default.createElement("div", {
|
|
114
|
+
className: "pointerContainer",
|
|
115
|
+
style: pointerContainerStyle
|
|
116
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
117
|
+
className: "pointerShadow",
|
|
118
|
+
style: {
|
|
119
|
+
backgroundColor: pointerShadowColor,
|
|
120
|
+
width: "".concat(size / 2, "px"),
|
|
121
|
+
height: "".concat(size * 0.8, "px"),
|
|
122
|
+
marginTop: "".concat(size / 7, "px")
|
|
123
|
+
}
|
|
124
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
125
|
+
className: "pointerContainer",
|
|
126
|
+
style: pointerContainerStyle
|
|
127
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
128
|
+
className: "pointer",
|
|
129
|
+
style: {
|
|
130
|
+
backgroundColor: pointerColor,
|
|
131
|
+
width: "".concat(size / 2, "px"),
|
|
132
|
+
height: "".concat(size * 0.8, "px")
|
|
133
|
+
}
|
|
134
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
135
|
+
className: "scrollSelector ".concat(thin ? 'thin' : ''),
|
|
136
|
+
ref: node => cosmoState.scrollRef = node,
|
|
137
|
+
style: {
|
|
138
|
+
width: "".concat(size * 3, "px")
|
|
139
|
+
},
|
|
140
|
+
onScroll: () => {
|
|
141
|
+
const centerNumber = Math.round(getExactValue());
|
|
142
|
+
if (value !== centerNumber) setValue(centerNumber);
|
|
143
|
+
}
|
|
144
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
145
|
+
className: "options",
|
|
146
|
+
style: {
|
|
147
|
+
width: "".concat((options.length + 2) * size, "px")
|
|
148
|
+
}
|
|
149
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
150
|
+
className: "option",
|
|
151
|
+
style: optionStyle,
|
|
152
|
+
ref: node => cosmoState.refs[0] = node
|
|
153
|
+
}), options.map((n, i) => /*#__PURE__*/_react.default.createElement("div", {
|
|
154
|
+
style: _objectSpread(_objectSpread({}, optionStyle), {}, {
|
|
155
|
+
backgroundColor: value === n ? numberBgColor : ''
|
|
156
|
+
}),
|
|
157
|
+
key: n,
|
|
158
|
+
ref: node => cosmoState.refs[i + 1] = node,
|
|
159
|
+
className: 'option'
|
|
160
|
+
}, n)), /*#__PURE__*/_react.default.createElement("div", {
|
|
161
|
+
className: "option",
|
|
162
|
+
style: optionStyle,
|
|
163
|
+
ref: node => cosmoState.refs[options.length + 1] = node
|
|
164
|
+
}))));
|
|
165
|
+
|
|
166
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
167
|
+
className: "NumberSliderSelectWrapper ".concat(hidden ? 'hidden' : '')
|
|
168
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
169
|
+
className: "NumberSliderSelect",
|
|
170
|
+
style: _objectSpread(_objectSpread({}, optionStyle), {}, {
|
|
171
|
+
color,
|
|
172
|
+
backgroundColor: numberBgColor
|
|
173
|
+
})
|
|
174
|
+
}, value, renderModal()));
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
exports.NumberSliderSelect = NumberSliderSelect;
|
package/index.js
CHANGED
|
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "NumberSelect", {
|
|
|
33
33
|
return _NumberSelect.NumberSelect;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "NumberSliderSelect", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _NumberSliderSelect.NumberSliderSelect;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
36
42
|
Object.defineProperty(exports, "PaneView", {
|
|
37
43
|
enumerable: true,
|
|
38
44
|
get: function get() {
|
|
@@ -110,6 +116,8 @@ var _SunMoon = require("./SunMoon");
|
|
|
110
116
|
|
|
111
117
|
var _ToggleSwitch = require("./ToggleSwitch");
|
|
112
118
|
|
|
119
|
+
var _NumberSliderSelect = require("./NumberSliderSelect/NumberSliderSelect");
|
|
120
|
+
|
|
113
121
|
var _NumberSelect = require("./NumberSelect/NumberSelect");
|
|
114
122
|
|
|
115
123
|
var _PaneView = require("./PaneView/PaneView");
|