Commit ed14d577c05509ce81845efc6921bb35c1ee7ee4

Authored by 梁灏
1 parent d04fb45a

remove throttle and use depence

src/components/color-picker/saturation.vue
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 </div> 14 </div>
15 </template> 15 </template>
16 <script> 16 <script>
17 - import throttle from '../../utils/throttle'; 17 + import throttle from 'lodash.throttle';
18 18
19 export default { 19 export default {
20 name: 'Saturation', 20 name: 'Saturation',
src/utils/throttle.js deleted
1 -/**  
2 - * lodash (Custom Build) <https://lodash.com/>  
3 - * Build: `lodash modularize exports="npm" -o ./`  
4 - * Copyright jQuery Foundation and other contributors <https://jquery.org/>  
5 - * Released under MIT license <https://lodash.com/license>  
6 - * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>  
7 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors  
8 - */  
9 -  
10 -/** Used as the `TypeError` message for "Functions" methods. */  
11 -var FUNC_ERROR_TEXT = 'Expected a function';  
12 -  
13 -/** Used as references for various `Number` constants. */  
14 -var NAN = 0 / 0;  
15 -  
16 -/** `Object#toString` result references. */  
17 -var symbolTag = '[object Symbol]';  
18 -  
19 -/** Used to match leading and trailing whitespace. */  
20 -var reTrim = /^\s+|\s+$/g;  
21 -  
22 -/** Used to detect bad signed hexadecimal string values. */  
23 -var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;  
24 -  
25 -/** Used to detect binary string values. */  
26 -var reIsBinary = /^0b[01]+$/i;  
27 -  
28 -/** Used to detect octal string values. */  
29 -var reIsOctal = /^0o[0-7]+$/i;  
30 -  
31 -/** Built-in method references without a dependency on `root`. */  
32 -var freeParseInt = parseInt;  
33 -  
34 -/** Detect free variable `global` from Node.js. */  
35 -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;  
36 -  
37 -/** Detect free variable `self`. */  
38 -var freeSelf = typeof self == 'object' && self && self.Object === Object && self;  
39 -  
40 -/** Used as a reference to the global object. */  
41 -var root = freeGlobal || freeSelf || Function('return this')();  
42 -  
43 -/** Used for built-in method references. */  
44 -var objectProto = Object.prototype;  
45 -  
46 -/**  
47 - * Used to resolve the  
48 - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)  
49 - * of values.  
50 - */  
51 -var objectToString = objectProto.toString;  
52 -  
53 -/* Built-in method references for those with the same name as other `lodash` methods. */  
54 -var nativeMax = Math.max,  
55 - nativeMin = Math.min;  
56 -  
57 -/**  
58 - * Gets the timestamp of the number of milliseconds that have elapsed since  
59 - * the Unix epoch (1 January 1970 00:00:00 UTC).  
60 - *  
61 - * @static  
62 - * @memberOf _  
63 - * @since 2.4.0  
64 - * @category Date  
65 - * @returns {number} Returns the timestamp.  
66 - * @example  
67 - *  
68 - * _.defer(function(stamp) {  
69 - * console.log(_.now() - stamp);  
70 - * }, _.now());  
71 - * // => Logs the number of milliseconds it took for the deferred invocation.  
72 - */  
73 -var now = function() {  
74 - return root.Date.now();  
75 -};  
76 -  
77 -/**  
78 - * Creates a debounced function that delays invoking `func` until after `wait`  
79 - * milliseconds have elapsed since the last time the debounced function was  
80 - * invoked. The debounced function comes with a `cancel` method to cancel  
81 - * delayed `func` invocations and a `flush` method to immediately invoke them.  
82 - * Provide `options` to indicate whether `func` should be invoked on the  
83 - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked  
84 - * with the last arguments provided to the debounced function. Subsequent  
85 - * calls to the debounced function return the result of the last `func`  
86 - * invocation.  
87 - *  
88 - * **Note:** If `leading` and `trailing` options are `true`, `func` is  
89 - * invoked on the trailing edge of the timeout only if the debounced function  
90 - * is invoked more than once during the `wait` timeout.  
91 - *  
92 - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred  
93 - * until to the next tick, similar to `setTimeout` with a timeout of `0`.  
94 - *  
95 - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)  
96 - * for details over the differences between `_.debounce` and `_.throttle`.  
97 - *  
98 - * @static  
99 - * @memberOf _  
100 - * @since 0.1.0  
101 - * @category Function  
102 - * @param {Function} func The function to debounce.  
103 - * @param {number} [wait=0] The number of milliseconds to delay.  
104 - * @param {Object} [options={}] The options object.  
105 - * @param {boolean} [options.leading=false]  
106 - * Specify invoking on the leading edge of the timeout.  
107 - * @param {number} [options.maxWait]  
108 - * The maximum time `func` is allowed to be delayed before it's invoked.  
109 - * @param {boolean} [options.trailing=true]  
110 - * Specify invoking on the trailing edge of the timeout.  
111 - * @returns {Function} Returns the new debounced function.  
112 - * @example  
113 - *  
114 - * // Avoid costly calculations while the window size is in flux.  
115 - * jQuery(window).on('resize', _.debounce(calculateLayout, 150));  
116 - *  
117 - * // Invoke `sendMail` when clicked, debouncing subsequent calls.  
118 - * jQuery(element).on('click', _.debounce(sendMail, 300, {  
119 - * 'leading': true,  
120 - * 'trailing': false  
121 - * }));  
122 - *  
123 - * // Ensure `batchLog` is invoked once after 1 second of debounced calls.  
124 - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });  
125 - * var source = new EventSource('/stream');  
126 - * jQuery(source).on('message', debounced);  
127 - *  
128 - * // Cancel the trailing debounced invocation.  
129 - * jQuery(window).on('popstate', debounced.cancel);  
130 - */  
131 -function debounce(func, wait, options) {  
132 - var lastArgs,  
133 - lastThis,  
134 - maxWait,  
135 - result,  
136 - timerId,  
137 - lastCallTime,  
138 - lastInvokeTime = 0,  
139 - leading = false,  
140 - maxing = false,  
141 - trailing = true;  
142 -  
143 - if (typeof func != 'function') {  
144 - throw new TypeError(FUNC_ERROR_TEXT);  
145 - }  
146 - wait = toNumber(wait) || 0;  
147 - if (isObject(options)) {  
148 - leading = !!options.leading;  
149 - maxing = 'maxWait' in options;  
150 - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;  
151 - trailing = 'trailing' in options ? !!options.trailing : trailing;  
152 - }  
153 -  
154 - function invokeFunc(time) {  
155 - var args = lastArgs,  
156 - thisArg = lastThis;  
157 -  
158 - lastArgs = lastThis = undefined;  
159 - lastInvokeTime = time;  
160 - result = func.apply(thisArg, args);  
161 - return result;  
162 - }  
163 -  
164 - function leadingEdge(time) {  
165 - // Reset any `maxWait` timer.  
166 - lastInvokeTime = time;  
167 - // Start the timer for the trailing edge.  
168 - timerId = setTimeout(timerExpired, wait);  
169 - // Invoke the leading edge.  
170 - return leading ? invokeFunc(time) : result;  
171 - }  
172 -  
173 - function remainingWait(time) {  
174 - var timeSinceLastCall = time - lastCallTime,  
175 - timeSinceLastInvoke = time - lastInvokeTime,  
176 - result = wait - timeSinceLastCall;  
177 -  
178 - return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;  
179 - }  
180 -  
181 - function shouldInvoke(time) {  
182 - var timeSinceLastCall = time - lastCallTime,  
183 - timeSinceLastInvoke = time - lastInvokeTime;  
184 -  
185 - // Either this is the first call, activity has stopped and we're at the  
186 - // trailing edge, the system time has gone backwards and we're treating  
187 - // it as the trailing edge, or we've hit the `maxWait` limit.  
188 - return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||  
189 - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));  
190 - }  
191 -  
192 - function timerExpired() {  
193 - var time = now();  
194 - if (shouldInvoke(time)) {  
195 - return trailingEdge(time);  
196 - }  
197 - // Restart the timer.  
198 - timerId = setTimeout(timerExpired, remainingWait(time));  
199 - }  
200 -  
201 - function trailingEdge(time) {  
202 - timerId = undefined;  
203 -  
204 - // Only invoke if we have `lastArgs` which means `func` has been  
205 - // debounced at least once.  
206 - if (trailing && lastArgs) {  
207 - return invokeFunc(time);  
208 - }  
209 - lastArgs = lastThis = undefined;  
210 - return result;  
211 - }  
212 -  
213 - function cancel() {  
214 - if (timerId !== undefined) {  
215 - clearTimeout(timerId);  
216 - }  
217 - lastInvokeTime = 0;  
218 - lastArgs = lastCallTime = lastThis = timerId = undefined;  
219 - }  
220 -  
221 - function flush() {  
222 - return timerId === undefined ? result : trailingEdge(now());  
223 - }  
224 -  
225 - function debounced() {  
226 - var time = now(),  
227 - isInvoking = shouldInvoke(time);  
228 -  
229 - lastArgs = arguments;  
230 - lastThis = this;  
231 - lastCallTime = time;  
232 -  
233 - if (isInvoking) {  
234 - if (timerId === undefined) {  
235 - return leadingEdge(lastCallTime);  
236 - }  
237 - if (maxing) {  
238 - // Handle invocations in a tight loop.  
239 - timerId = setTimeout(timerExpired, wait);  
240 - return invokeFunc(lastCallTime);  
241 - }  
242 - }  
243 - if (timerId === undefined) {  
244 - timerId = setTimeout(timerExpired, wait);  
245 - }  
246 - return result;  
247 - }  
248 - debounced.cancel = cancel;  
249 - debounced.flush = flush;  
250 - return debounced;  
251 -}  
252 -  
253 -/**  
254 - * Creates a throttled function that only invokes `func` at most once per  
255 - * every `wait` milliseconds. The throttled function comes with a `cancel`  
256 - * method to cancel delayed `func` invocations and a `flush` method to  
257 - * immediately invoke them. Provide `options` to indicate whether `func`  
258 - * should be invoked on the leading and/or trailing edge of the `wait`  
259 - * timeout. The `func` is invoked with the last arguments provided to the  
260 - * throttled function. Subsequent calls to the throttled function return the  
261 - * result of the last `func` invocation.  
262 - *  
263 - * **Note:** If `leading` and `trailing` options are `true`, `func` is  
264 - * invoked on the trailing edge of the timeout only if the throttled function  
265 - * is invoked more than once during the `wait` timeout.  
266 - *  
267 - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred  
268 - * until to the next tick, similar to `setTimeout` with a timeout of `0`.  
269 - *  
270 - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)  
271 - * for details over the differences between `_.throttle` and `_.debounce`.  
272 - *  
273 - * @static  
274 - * @memberOf _  
275 - * @since 0.1.0  
276 - * @category Function  
277 - * @param {Function} func The function to throttle.  
278 - * @param {number} [wait=0] The number of milliseconds to throttle invocations to.  
279 - * @param {Object} [options={}] The options object.  
280 - * @param {boolean} [options.leading=true]  
281 - * Specify invoking on the leading edge of the timeout.  
282 - * @param {boolean} [options.trailing=true]  
283 - * Specify invoking on the trailing edge of the timeout.  
284 - * @returns {Function} Returns the new throttled function.  
285 - * @example  
286 - *  
287 - * // Avoid excessively updating the position while scrolling.  
288 - * jQuery(window).on('scroll', _.throttle(updatePosition, 100));  
289 - *  
290 - * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.  
291 - * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });  
292 - * jQuery(element).on('click', throttled);  
293 - *  
294 - * // Cancel the trailing throttled invocation.  
295 - * jQuery(window).on('popstate', throttled.cancel);  
296 - */  
297 -function throttle(func, wait, options) {  
298 - var leading = true,  
299 - trailing = true;  
300 -  
301 - if (typeof func != 'function') {  
302 - throw new TypeError(FUNC_ERROR_TEXT);  
303 - }  
304 - if (isObject(options)) {  
305 - leading = 'leading' in options ? !!options.leading : leading;  
306 - trailing = 'trailing' in options ? !!options.trailing : trailing;  
307 - }  
308 - return debounce(func, wait, {  
309 - 'leading': leading,  
310 - 'maxWait': wait,  
311 - 'trailing': trailing  
312 - });  
313 -}  
314 -  
315 -/**  
316 - * Checks if `value` is the  
317 - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)  
318 - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)  
319 - *  
320 - * @static  
321 - * @memberOf _  
322 - * @since 0.1.0  
323 - * @category Lang  
324 - * @param {*} value The value to check.  
325 - * @returns {boolean} Returns `true` if `value` is an object, else `false`.  
326 - * @example  
327 - *  
328 - * _.isObject({});  
329 - * // => true  
330 - *  
331 - * _.isObject([1, 2, 3]);  
332 - * // => true  
333 - *  
334 - * _.isObject(_.noop);  
335 - * // => true  
336 - *  
337 - * _.isObject(null);  
338 - * // => false  
339 - */  
340 -function isObject(value) {  
341 - var type = typeof value;  
342 - return !!value && (type == 'object' || type == 'function');  
343 -}  
344 -  
345 -/**  
346 - * Checks if `value` is object-like. A value is object-like if it's not `null`  
347 - * and has a `typeof` result of "object".  
348 - *  
349 - * @static  
350 - * @memberOf _  
351 - * @since 4.0.0  
352 - * @category Lang  
353 - * @param {*} value The value to check.  
354 - * @returns {boolean} Returns `true` if `value` is object-like, else `false`.  
355 - * @example  
356 - *  
357 - * _.isObjectLike({});  
358 - * // => true  
359 - *  
360 - * _.isObjectLike([1, 2, 3]);  
361 - * // => true  
362 - *  
363 - * _.isObjectLike(_.noop);  
364 - * // => false  
365 - *  
366 - * _.isObjectLike(null);  
367 - * // => false  
368 - */  
369 -function isObjectLike(value) {  
370 - return !!value && typeof value == 'object';  
371 -}  
372 -  
373 -/**  
374 - * Checks if `value` is classified as a `Symbol` primitive or object.  
375 - *  
376 - * @static  
377 - * @memberOf _  
378 - * @since 4.0.0  
379 - * @category Lang  
380 - * @param {*} value The value to check.  
381 - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.  
382 - * @example  
383 - *  
384 - * _.isSymbol(Symbol.iterator);  
385 - * // => true  
386 - *  
387 - * _.isSymbol('abc');  
388 - * // => false  
389 - */  
390 -function isSymbol(value) {  
391 - return typeof value == 'symbol' ||  
392 - (isObjectLike(value) && objectToString.call(value) == symbolTag);  
393 -}  
394 -  
395 -/**  
396 - * Converts `value` to a number.  
397 - *  
398 - * @static  
399 - * @memberOf _  
400 - * @since 4.0.0  
401 - * @category Lang  
402 - * @param {*} value The value to process.  
403 - * @returns {number} Returns the number.  
404 - * @example  
405 - *  
406 - * _.toNumber(3.2);  
407 - * // => 3.2  
408 - *  
409 - * _.toNumber(Number.MIN_VALUE);  
410 - * // => 5e-324  
411 - *  
412 - * _.toNumber(Infinity);  
413 - * // => Infinity  
414 - *  
415 - * _.toNumber('3.2');  
416 - * // => 3.2  
417 - */  
418 -function toNumber(value) {  
419 - if (typeof value == 'number') {  
420 - return value;  
421 - }  
422 - if (isSymbol(value)) {  
423 - return NAN;  
424 - }  
425 - if (isObject(value)) {  
426 - var other = typeof value.valueOf == 'function' ? value.valueOf() : value;  
427 - value = isObject(other) ? (other + '') : other;  
428 - }  
429 - if (typeof value != 'string') {  
430 - return value === 0 ? value : +value;  
431 - }  
432 - value = value.replace(reTrim, '');  
433 - var isBinary = reIsBinary.test(value);  
434 - return (isBinary || reIsOctal.test(value))  
435 - ? freeParseInt(value.slice(2), isBinary ? 2 : 8)  
436 - : (reIsBadHex.test(value) ? NAN : +value);  
437 -}  
438 -  
439 -module.exports = throttle;