@wfrog/vc-ui 1.0.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/README.md +95 -0
- package/dist/es/chunk/-EkpfdcW.mjs +1100 -0
- package/dist/es/chunk/8rLUmOVR.mjs +29 -0
- package/dist/es/chunk/B-rxnVJv.mjs +3 -0
- package/dist/es/chunk/BAGoDD49.mjs +36 -0
- package/dist/es/chunk/BAtns-Mc.mjs +96 -0
- package/dist/es/chunk/BJS5Pdfp.mjs +55 -0
- package/dist/es/chunk/BMzd-IS6.mjs +900 -0
- package/dist/es/chunk/BWcCXRRK.mjs +229 -0
- package/dist/es/chunk/BX-Ogf7p.mjs +3743 -0
- package/dist/es/chunk/B_tU9Nax.mjs +49 -0
- package/dist/es/chunk/BdDihk0t.mjs +3420 -0
- package/dist/es/chunk/C2LgraHx.mjs +489 -0
- package/dist/es/chunk/C5hWsUfD.mjs +64 -0
- package/dist/es/chunk/C7iSSBUr.mjs +303 -0
- package/dist/es/chunk/CD98REcR.mjs +666 -0
- package/dist/es/chunk/CEClY-_T.mjs +445 -0
- package/dist/es/chunk/CEm0brzD.mjs +35 -0
- package/dist/es/chunk/CMABHk8B.mjs +1942 -0
- package/dist/es/chunk/CS4VKsqy.mjs +19 -0
- package/dist/es/chunk/CVlj9F0I.mjs +291 -0
- package/dist/es/chunk/CZ4ggqDE.mjs +140 -0
- package/dist/es/chunk/CaTfZePA.mjs +533 -0
- package/dist/es/chunk/Ce9ApjrT.mjs +201 -0
- package/dist/es/chunk/ClZGuAIb.mjs +10 -0
- package/dist/es/chunk/Coex0GxM.mjs +450 -0
- package/dist/es/chunk/Ct6q2FXg.mjs +5 -0
- package/dist/es/chunk/CyxEcbcy.mjs +29 -0
- package/dist/es/chunk/D389hx_T.mjs +35 -0
- package/dist/es/chunk/D3DXeVfC.mjs +1171 -0
- package/dist/es/chunk/D3uV7vm-.mjs +45 -0
- package/dist/es/chunk/D5259bwd.mjs +50 -0
- package/dist/es/chunk/DMHNh_tw.mjs +49 -0
- package/dist/es/chunk/DVNTpOBR.mjs +4 -0
- package/dist/es/chunk/DZACQ9LT.mjs +95 -0
- package/dist/es/chunk/De_EXLIy.mjs +22 -0
- package/dist/es/chunk/Dh4jaUSg.mjs +89 -0
- package/dist/es/chunk/DhhdKtyu.mjs +439 -0
- package/dist/es/chunk/DqUIKX7f.mjs +2039 -0
- package/dist/es/chunk/Dqz1zvKN.mjs +59 -0
- package/dist/es/chunk/Dvi7RsXg.mjs +727 -0
- package/dist/es/chunk/DyDMGLoF.mjs +123 -0
- package/dist/es/chunk/E_WRn0OP.mjs +449 -0
- package/dist/es/chunk/Fo0dZYnz.mjs +128 -0
- package/dist/es/chunk/HSv8BL8o.mjs +72 -0
- package/dist/es/chunk/JCIyOUEY.mjs +105 -0
- package/dist/es/chunk/O-uhUKF4.mjs +43 -0
- package/dist/es/chunk/Spa-JKB4.mjs +1046 -0
- package/dist/es/chunk/VAdRxe-1.mjs +16 -0
- package/dist/es/chunk/VCrtRnxt.mjs +1477 -0
- package/dist/es/chunk/ViP2SEY4.mjs +211 -0
- package/dist/es/chunk/aibQ9WSZ.mjs +249 -0
- package/dist/es/chunk/nWBcrYxV.mjs +690 -0
- package/dist/es/chunk/pcqpp-6-.mjs +9 -0
- package/dist/es/chunk/qY9OvNHY.mjs +283 -0
- package/dist/es/chunk/su2Zrql0.mjs +53 -0
- package/dist/es/chunk/zfg5SOj1.mjs +138 -0
- package/dist/es/components/awesome-icon/awesome-icon.d.ts +6 -0
- package/dist/es/components/awesome-icon/awesome-icon.mjs +41 -0
- package/dist/es/components/awesome-icon/awesome-icon.vue.d.ts +5 -0
- package/dist/es/components/awesome-icon/index.d.ts +4 -0
- package/dist/es/components/awesome-icon/index.mjs +6 -0
- package/dist/es/components/backbottom/backbottom.d.ts +7 -0
- package/dist/es/components/backbottom/backbottom.mjs +172 -0
- package/dist/es/components/backbottom/backbottom.vue.d.ts +7 -0
- package/dist/es/components/backbottom/components/child.vue.d.ts +30 -0
- package/dist/es/components/backbottom/index.d.ts +4 -0
- package/dist/es/components/backbottom/index.mjs +6 -0
- package/dist/es/components/button/button.d.ts +18 -0
- package/dist/es/components/button/button.mjs +313 -0
- package/dist/es/components/button/button.vue.d.ts +33 -0
- package/dist/es/components/button/index.css +9 -0
- package/dist/es/components/button/index.d.ts +4 -0
- package/dist/es/components/button/index.mjs +6 -0
- package/dist/es/components/cdn-tag.vue.d.ts +5 -0
- package/dist/es/components/chat-container/chat-container.d.ts +9 -0
- package/dist/es/components/chat-container/chat-container.mjs +77 -0
- package/dist/es/components/chat-container/chat-container.vue.d.ts +29 -0
- package/dist/es/components/chat-container/index.css +9 -0
- package/dist/es/components/chat-container/index.d.ts +4 -0
- package/dist/es/components/chat-container/index.mjs +6 -0
- package/dist/es/components/choice/choice.d.ts +6 -0
- package/dist/es/components/choice/choice.mjs +53 -0
- package/dist/es/components/choice/choice.vue.d.ts +5 -0
- package/dist/es/components/choice/index.css +7 -0
- package/dist/es/components/choice/index.d.ts +4 -0
- package/dist/es/components/choice/index.mjs +6 -0
- package/dist/es/components/choice-boolean/choice-boolean.d.ts +5 -0
- package/dist/es/components/choice-boolean/choice-boolean.mjs +32 -0
- package/dist/es/components/choice-boolean/choice-boolean.vue.d.ts +10 -0
- package/dist/es/components/choice-boolean/index.d.ts +4 -0
- package/dist/es/components/choice-boolean/index.mjs +6 -0
- package/dist/es/components/config-provider/config-provider.d.ts +16 -0
- package/dist/es/components/config-provider/config-provider.mjs +29 -0
- package/dist/es/components/config-provider/config-provider.vue.d.ts +18 -0
- package/dist/es/components/config-provider/config-provider2.mjs +6 -0
- package/dist/es/components/config-provider/index.d.ts +4 -0
- package/dist/es/components/config-provider/index.mjs +6 -0
- package/dist/es/components/cropper/cropper.d.ts +12 -0
- package/dist/es/components/cropper/cropper.mjs +333 -0
- package/dist/es/components/cropper/cropper.vue.d.ts +32 -0
- package/dist/es/components/cropper/index.css +4 -0
- package/dist/es/components/cropper/index.d.ts +4 -0
- package/dist/es/components/cropper/index.mjs +6 -0
- package/dist/es/components/currency/currency.d.ts +21 -0
- package/dist/es/components/currency/currency.mjs +185 -0
- package/dist/es/components/currency/currency.vue.d.ts +14 -0
- package/dist/es/components/currency/index.css +8 -0
- package/dist/es/components/currency/index.d.ts +4 -0
- package/dist/es/components/currency/index.mjs +6 -0
- package/dist/es/components/daterange-picker/daterange-picker.d.ts +6 -0
- package/dist/es/components/daterange-picker/daterange-picker.mjs +5550 -0
- package/dist/es/components/daterange-picker/daterange-picker.vue.d.ts +13 -0
- package/dist/es/components/daterange-picker/index.d.ts +4 -0
- package/dist/es/components/daterange-picker/index.mjs +6 -0
- package/dist/es/components/dialog/dialog.d.ts +13 -0
- package/dist/es/components/dialog/dialog.mjs +537 -0
- package/dist/es/components/dialog/dialog.vue.d.ts +38 -0
- package/dist/es/components/dialog/index.css +87 -0
- package/dist/es/components/dialog/index.d.ts +4 -0
- package/dist/es/components/dialog/index.mjs +6 -0
- package/dist/es/components/dialog-camera-upload/dialog-camera-upload.d.ts +33 -0
- package/dist/es/components/dialog-camera-upload/dialog-camera-upload.mjs +412 -0
- package/dist/es/components/dialog-camera-upload/dialog-camera-upload.vue.d.ts +23 -0
- package/dist/es/components/dialog-camera-upload/index.css +66 -0
- package/dist/es/components/dialog-camera-upload/index.d.ts +4 -0
- package/dist/es/components/dialog-camera-upload/index.mjs +6 -0
- package/dist/es/components/dialog-map-point/dialog-map-point.d.ts +9 -0
- package/dist/es/components/dialog-map-point/dialog-map-point.mjs +183 -0
- package/dist/es/components/dialog-map-point/dialog-map-point.vue.d.ts +22 -0
- package/dist/es/components/dialog-map-point/index.css +11 -0
- package/dist/es/components/dialog-map-point/index.d.ts +4 -0
- package/dist/es/components/dialog-map-point/index.mjs +6 -0
- package/dist/es/components/dialog-upload-images/dialog-upload-images.d.ts +16 -0
- package/dist/es/components/dialog-upload-images/dialog-upload-images.mjs +1391 -0
- package/dist/es/components/dialog-upload-images/dialog-upload-images.vue.d.ts +19 -0
- package/dist/es/components/dialog-upload-images/index.css +62 -0
- package/dist/es/components/dialog-upload-images/index.d.ts +4 -0
- package/dist/es/components/dialog-upload-images/index.mjs +6 -0
- package/dist/es/components/document.vue.d.ts +14 -0
- package/dist/es/components/drawer/drawer.d.ts +7 -0
- package/dist/es/components/drawer/drawer.mjs +412 -0
- package/dist/es/components/drawer/drawer.vue.d.ts +31 -0
- package/dist/es/components/drawer/index.css +56 -0
- package/dist/es/components/drawer/index.d.ts +4 -0
- package/dist/es/components/drawer/index.mjs +6 -0
- package/dist/es/components/easy-pagination/easy-pagination.d.ts +8 -0
- package/dist/es/components/easy-pagination/easy-pagination.mjs +74 -0
- package/dist/es/components/easy-pagination/easy-pagination.vue.d.ts +19 -0
- package/dist/es/components/easy-pagination/index.css +10 -0
- package/dist/es/components/easy-pagination/index.d.ts +4 -0
- package/dist/es/components/easy-pagination/index.mjs +6 -0
- package/dist/es/components/el-icon/el-icon.d.ts +6 -0
- package/dist/es/components/el-icon/el-icon.mjs +46 -0
- package/dist/es/components/el-icon/el-icon.vue.d.ts +6 -0
- package/dist/es/components/el-icon/index.css +7 -0
- package/dist/es/components/el-icon/index.d.ts +4 -0
- package/dist/es/components/el-icon/index.mjs +6 -0
- package/dist/es/components/example-wrapper.vue.d.ts +19 -0
- package/dist/es/components/flag/flag.mjs +44 -0
- package/dist/es/components/flag/flag.vue.d.ts +5 -0
- package/dist/es/components/flag/flags.d.ts +8 -0
- package/dist/es/components/flag/index.d.ts +4 -0
- package/dist/es/components/flag/index.mjs +6 -0
- package/dist/es/components/icon/icon.d.ts +6 -0
- package/dist/es/components/icon/icon.mjs +54 -0
- package/dist/es/components/icon/icon.vue.d.ts +3 -0
- package/dist/es/components/icon/icon2.mjs +27 -0
- package/dist/es/components/icon/index.css +9 -0
- package/dist/es/components/icon/index.d.ts +4 -0
- package/dist/es/components/icon/index.mjs +6 -0
- package/dist/es/components/image/image.d.ts +16 -0
- package/dist/es/components/image/image.mjs +167 -0
- package/dist/es/components/image/image.vue.d.ts +206 -0
- package/dist/es/components/image/index.css +20 -0
- package/dist/es/components/image/index.d.ts +4 -0
- package/dist/es/components/image/index.mjs +6 -0
- package/dist/es/components/input/index.css +9 -0
- package/dist/es/components/input/index.d.ts +4 -0
- package/dist/es/components/input/index.mjs +6 -0
- package/dist/es/components/input/input.d.ts +4 -0
- package/dist/es/components/input/input.mjs +85 -0
- package/dist/es/components/input/input.vue.d.ts +1232 -0
- package/dist/es/components/input-number/index.css +24 -0
- package/dist/es/components/input-number/index.d.ts +4 -0
- package/dist/es/components/input-number/index.mjs +6 -0
- package/dist/es/components/input-number/input-number.d.ts +8 -0
- package/dist/es/components/input-number/input-number.mjs +137 -0
- package/dist/es/components/input-number/input-number.vue.d.ts +35 -0
- package/dist/es/components/pca-picker/components/c.vue.d.ts +123 -0
- package/dist/es/components/pca-picker/components/elevator-item.vue.d.ts +7 -0
- package/dist/es/components/pca-picker/components/filter.vue.d.ts +2 -0
- package/dist/es/components/pca-picker/components/history.vue.d.ts +2 -0
- package/dist/es/components/pca-picker/components/hot.vue.d.ts +2 -0
- package/dist/es/components/pca-picker/components/p.vue.d.ts +2 -0
- package/dist/es/components/pca-picker/components/pca.vue.d.ts +9 -0
- package/dist/es/components/pca-picker/index.css +107 -0
- package/dist/es/components/pca-picker/index.d.ts +4 -0
- package/dist/es/components/pca-picker/index.mjs +6 -0
- package/dist/es/components/pca-picker/pca-picker.d.ts +78 -0
- package/dist/es/components/pca-picker/pca-picker.mjs +1667 -0
- package/dist/es/components/pca-picker/pca-picker.vue.d.ts +583 -0
- package/dist/es/components/qr-code/index.d.ts +4 -0
- package/dist/es/components/qr-code/index.mjs +6 -0
- package/dist/es/components/qr-code/qr-code.d.ts +9 -0
- package/dist/es/components/qr-code/qr-code.mjs +69 -0
- package/dist/es/components/qr-code/qr-code.vue.d.ts +13 -0
- package/dist/es/components/screenfull/index.css +14 -0
- package/dist/es/components/screenfull/index.d.ts +4 -0
- package/dist/es/components/screenfull/index.mjs +6 -0
- package/dist/es/components/screenfull/screenfull.d.ts +4 -0
- package/dist/es/components/screenfull/screenfull.mjs +91 -0
- package/dist/es/components/screenfull/screenfull.vue.d.ts +20 -0
- package/dist/es/components/select/index.css +9 -0
- package/dist/es/components/select/index.d.ts +4 -0
- package/dist/es/components/select/index.mjs +6 -0
- package/dist/es/components/select/select.d.ts +6 -0
- package/dist/es/components/select/select.mjs +63 -0
- package/dist/es/components/select/select.vue.d.ts +6 -0
- package/dist/es/components/single-player/index.css +45 -0
- package/dist/es/components/single-player/index.d.ts +4 -0
- package/dist/es/components/single-player/index.mjs +6 -0
- package/dist/es/components/single-player/single-player.d.ts +4 -0
- package/dist/es/components/single-player/single-player.mjs +1172 -0
- package/dist/es/components/single-player/single-player.vue.d.ts +13 -0
- package/dist/es/components/svg-icon/index.css +9 -0
- package/dist/es/components/svg-icon/index.d.ts +4 -0
- package/dist/es/components/svg-icon/index.mjs +6 -0
- package/dist/es/components/svg-icon/svg-icon.d.ts +5 -0
- package/dist/es/components/svg-icon/svg-icon.mjs +46 -0
- package/dist/es/components/svg-icon/svg-icon.vue.d.ts +18 -0
- package/dist/es/components/switch/index.css +15 -0
- package/dist/es/components/switch/index.d.ts +4 -0
- package/dist/es/components/switch/index.mjs +6 -0
- package/dist/es/components/switch/switch.d.ts +9 -0
- package/dist/es/components/switch/switch.mjs +82 -0
- package/dist/es/components/switch/switch.vue.d.ts +14 -0
- package/dist/es/components/sync-scroll-container/index.css +82 -0
- package/dist/es/components/sync-scroll-container/index.d.ts +4 -0
- package/dist/es/components/sync-scroll-container/index.mjs +6 -0
- package/dist/es/components/sync-scroll-container/sync-scroll-container.d.ts +6 -0
- package/dist/es/components/sync-scroll-container/sync-scroll-container.mjs +157 -0
- package/dist/es/components/sync-scroll-container/sync-scroll-container.vue.d.ts +36 -0
- package/dist/es/components/tags/index.css +17 -0
- package/dist/es/components/tags/index.d.ts +4 -0
- package/dist/es/components/tags/index.mjs +6 -0
- package/dist/es/components/tags/tags.d.ts +9 -0
- package/dist/es/components/tags/tags.mjs +296 -0
- package/dist/es/components/tags/tags.vue.d.ts +20 -0
- package/dist/es/components/text-ellipsis/index.css +15 -0
- package/dist/es/components/text-ellipsis/index.d.ts +4 -0
- package/dist/es/components/text-ellipsis/index.mjs +6 -0
- package/dist/es/components/text-ellipsis/text-ellipsis.d.ts +12 -0
- package/dist/es/components/text-ellipsis/text-ellipsis.mjs +137 -0
- package/dist/es/components/text-ellipsis/text-ellipsis.vue.d.ts +41 -0
- package/dist/es/components/thousand-input/index.css +4 -0
- package/dist/es/components/thousand-input/index.d.ts +4 -0
- package/dist/es/components/thousand-input/index.mjs +6 -0
- package/dist/es/components/thousand-input/thousand-input.d.ts +11 -0
- package/dist/es/components/thousand-input/thousand-input.mjs +159 -0
- package/dist/es/components/thousand-input/thousand-input.vue.d.ts +2558 -0
- package/dist/es/components/tinymce/config.d.ts +25 -0
- package/dist/es/components/tinymce/index.css +9 -0
- package/dist/es/components/tinymce/index.d.ts +4 -0
- package/dist/es/components/tinymce/index.mjs +6 -0
- package/dist/es/components/tinymce/tinymce.d.ts +9 -0
- package/dist/es/components/tinymce/tinymce.mjs +176 -0
- package/dist/es/components/tinymce/tinymce.vue.d.ts +20 -0
- package/dist/es/components/tree-picker/components/popover-cascader.d.ts +8 -0
- package/dist/es/components/tree-picker/components/popover-cascader.vue.d.ts +1361 -0
- package/dist/es/components/tree-picker/docs/data.d.ts +2 -0
- package/dist/es/components/tree-picker/index.css +41 -0
- package/dist/es/components/tree-picker/index.d.ts +4 -0
- package/dist/es/components/tree-picker/index.mjs +6 -0
- package/dist/es/components/tree-picker/popover-cascader.css +23 -0
- package/dist/es/components/tree-picker/tree-picker.d.ts +14 -0
- package/dist/es/components/tree-picker/tree-picker.mjs +173 -0
- package/dist/es/components/tree-picker/tree-picker.vue.d.ts +575 -0
- package/dist/es/components/upload-file/index.css +30 -0
- package/dist/es/components/upload-file/index.d.ts +4 -0
- package/dist/es/components/upload-file/index.mjs +6 -0
- package/dist/es/components/upload-file/upload-file.d.ts +39 -0
- package/dist/es/components/upload-file/upload-file.mjs +202 -0
- package/dist/es/components/upload-file/upload-file.vue.d.ts +30 -0
- package/dist/es/directives/cleave/index.d.ts +3 -0
- package/dist/es/directives/focus/index.d.ts +4 -0
- package/dist/es/directives/index.d.ts +3 -0
- package/dist/es/directives/thousand/index.d.ts +3 -0
- package/dist/es/index.d.ts +42 -0
- package/dist/es/index.mjs +122 -0
- package/dist/es/use/useSmallScreen/index.d.ts +4 -0
- package/dist/es/use/useSmallScreen/index.mjs +10 -0
- package/dist/es/use/useStore/index.d.ts +3 -0
- package/dist/es/use/useStore/index.mjs +22 -0
- package/dist/es/utils/index.d.ts +6 -0
- package/dist/es/utils/resolver.d.ts +3 -0
- package/dist/es/utils/resolver.mjs +24 -0
- package/dist/es/utils/typescript.d.ts +6 -0
- package/dist/global.d.ts +42 -0
- package/dist/index.css +869 -0
- package/package.json +58 -0
|
@@ -0,0 +1,1100 @@
|
|
|
1
|
+
import { g as getNative, f as isLength, h as isFunction, j as isArguments, k as isIndex, b as isArray, L as ListCache, M as Map, l as MapCache, m as arrayPush, n as toSource, o as eq } from './Spa-JKB4.mjs';
|
|
2
|
+
import { r as root, i as isObjectLike, b as baseGetTag, S as Symbol$1 } from './Fo0dZYnz.mjs';
|
|
3
|
+
import { b as baseUnary, n as nodeUtil } from './O-uhUKF4.mjs';
|
|
4
|
+
|
|
5
|
+
/* Built-in method references that are verified to be native. */
|
|
6
|
+
var WeakMap = getNative(root, 'WeakMap');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Checks if `value` is array-like. A value is considered array-like if it's
|
|
10
|
+
* not a function and has a `value.length` that's an integer greater than or
|
|
11
|
+
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
|
|
12
|
+
*
|
|
13
|
+
* @static
|
|
14
|
+
* @memberOf _
|
|
15
|
+
* @since 4.0.0
|
|
16
|
+
* @category Lang
|
|
17
|
+
* @param {*} value The value to check.
|
|
18
|
+
* @returns {boolean} Returns `true` if `value` is array-like, else `false`.
|
|
19
|
+
* @example
|
|
20
|
+
*
|
|
21
|
+
* _.isArrayLike([1, 2, 3]);
|
|
22
|
+
* // => true
|
|
23
|
+
*
|
|
24
|
+
* _.isArrayLike(document.body.children);
|
|
25
|
+
* // => true
|
|
26
|
+
*
|
|
27
|
+
* _.isArrayLike('abc');
|
|
28
|
+
* // => true
|
|
29
|
+
*
|
|
30
|
+
* _.isArrayLike(_.noop);
|
|
31
|
+
* // => false
|
|
32
|
+
*/
|
|
33
|
+
function isArrayLike(value) {
|
|
34
|
+
return value != null && isLength(value.length) && !isFunction(value);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Used for built-in method references. */
|
|
38
|
+
var objectProto$5 = Object.prototype;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Checks if `value` is likely a prototype object.
|
|
42
|
+
*
|
|
43
|
+
* @private
|
|
44
|
+
* @param {*} value The value to check.
|
|
45
|
+
* @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
|
|
46
|
+
*/
|
|
47
|
+
function isPrototype(value) {
|
|
48
|
+
var Ctor = value && value.constructor,
|
|
49
|
+
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5;
|
|
50
|
+
|
|
51
|
+
return value === proto;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The base implementation of `_.times` without support for iteratee shorthands
|
|
56
|
+
* or max array length checks.
|
|
57
|
+
*
|
|
58
|
+
* @private
|
|
59
|
+
* @param {number} n The number of times to invoke `iteratee`.
|
|
60
|
+
* @param {Function} iteratee The function invoked per iteration.
|
|
61
|
+
* @returns {Array} Returns the array of results.
|
|
62
|
+
*/
|
|
63
|
+
function baseTimes(n, iteratee) {
|
|
64
|
+
var index = -1,
|
|
65
|
+
result = Array(n);
|
|
66
|
+
|
|
67
|
+
while (++index < n) {
|
|
68
|
+
result[index] = iteratee(index);
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* This method returns `false`.
|
|
75
|
+
*
|
|
76
|
+
* @static
|
|
77
|
+
* @memberOf _
|
|
78
|
+
* @since 4.13.0
|
|
79
|
+
* @category Util
|
|
80
|
+
* @returns {boolean} Returns `false`.
|
|
81
|
+
* @example
|
|
82
|
+
*
|
|
83
|
+
* _.times(2, _.stubFalse);
|
|
84
|
+
* // => [false, false]
|
|
85
|
+
*/
|
|
86
|
+
function stubFalse() {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** Detect free variable `exports`. */
|
|
91
|
+
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
|
|
92
|
+
|
|
93
|
+
/** Detect free variable `module`. */
|
|
94
|
+
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
|
|
95
|
+
|
|
96
|
+
/** Detect the popular CommonJS extension `module.exports`. */
|
|
97
|
+
var moduleExports = freeModule && freeModule.exports === freeExports;
|
|
98
|
+
|
|
99
|
+
/** Built-in value references. */
|
|
100
|
+
var Buffer = moduleExports ? root.Buffer : undefined;
|
|
101
|
+
|
|
102
|
+
/* Built-in method references for those with the same name as other `lodash` methods. */
|
|
103
|
+
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Checks if `value` is a buffer.
|
|
107
|
+
*
|
|
108
|
+
* @static
|
|
109
|
+
* @memberOf _
|
|
110
|
+
* @since 4.3.0
|
|
111
|
+
* @category Lang
|
|
112
|
+
* @param {*} value The value to check.
|
|
113
|
+
* @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
|
|
114
|
+
* @example
|
|
115
|
+
*
|
|
116
|
+
* _.isBuffer(new Buffer(2));
|
|
117
|
+
* // => true
|
|
118
|
+
*
|
|
119
|
+
* _.isBuffer(new Uint8Array(2));
|
|
120
|
+
* // => false
|
|
121
|
+
*/
|
|
122
|
+
var isBuffer = nativeIsBuffer || stubFalse;
|
|
123
|
+
|
|
124
|
+
/** `Object#toString` result references. */
|
|
125
|
+
var argsTag$1 = '[object Arguments]',
|
|
126
|
+
arrayTag$1 = '[object Array]',
|
|
127
|
+
boolTag$1 = '[object Boolean]',
|
|
128
|
+
dateTag$1 = '[object Date]',
|
|
129
|
+
errorTag$1 = '[object Error]',
|
|
130
|
+
funcTag = '[object Function]',
|
|
131
|
+
mapTag$2 = '[object Map]',
|
|
132
|
+
numberTag$1 = '[object Number]',
|
|
133
|
+
objectTag$2 = '[object Object]',
|
|
134
|
+
regexpTag$1 = '[object RegExp]',
|
|
135
|
+
setTag$2 = '[object Set]',
|
|
136
|
+
stringTag$1 = '[object String]',
|
|
137
|
+
weakMapTag$1 = '[object WeakMap]';
|
|
138
|
+
|
|
139
|
+
var arrayBufferTag$1 = '[object ArrayBuffer]',
|
|
140
|
+
dataViewTag$2 = '[object DataView]',
|
|
141
|
+
float32Tag = '[object Float32Array]',
|
|
142
|
+
float64Tag = '[object Float64Array]',
|
|
143
|
+
int8Tag = '[object Int8Array]',
|
|
144
|
+
int16Tag = '[object Int16Array]',
|
|
145
|
+
int32Tag = '[object Int32Array]',
|
|
146
|
+
uint8Tag = '[object Uint8Array]',
|
|
147
|
+
uint8ClampedTag = '[object Uint8ClampedArray]',
|
|
148
|
+
uint16Tag = '[object Uint16Array]',
|
|
149
|
+
uint32Tag = '[object Uint32Array]';
|
|
150
|
+
|
|
151
|
+
/** Used to identify `toStringTag` values of typed arrays. */
|
|
152
|
+
var typedArrayTags = {};
|
|
153
|
+
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
|
|
154
|
+
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
|
|
155
|
+
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
|
|
156
|
+
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
|
|
157
|
+
typedArrayTags[uint32Tag] = true;
|
|
158
|
+
typedArrayTags[argsTag$1] = typedArrayTags[arrayTag$1] =
|
|
159
|
+
typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] =
|
|
160
|
+
typedArrayTags[dataViewTag$2] = typedArrayTags[dateTag$1] =
|
|
161
|
+
typedArrayTags[errorTag$1] = typedArrayTags[funcTag] =
|
|
162
|
+
typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] =
|
|
163
|
+
typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] =
|
|
164
|
+
typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] =
|
|
165
|
+
typedArrayTags[weakMapTag$1] = false;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* The base implementation of `_.isTypedArray` without Node.js optimizations.
|
|
169
|
+
*
|
|
170
|
+
* @private
|
|
171
|
+
* @param {*} value The value to check.
|
|
172
|
+
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
|
|
173
|
+
*/
|
|
174
|
+
function baseIsTypedArray(value) {
|
|
175
|
+
return isObjectLike(value) &&
|
|
176
|
+
isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* Node.js helper references. */
|
|
180
|
+
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Checks if `value` is classified as a typed array.
|
|
184
|
+
*
|
|
185
|
+
* @static
|
|
186
|
+
* @memberOf _
|
|
187
|
+
* @since 3.0.0
|
|
188
|
+
* @category Lang
|
|
189
|
+
* @param {*} value The value to check.
|
|
190
|
+
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
|
|
191
|
+
* @example
|
|
192
|
+
*
|
|
193
|
+
* _.isTypedArray(new Uint8Array);
|
|
194
|
+
* // => true
|
|
195
|
+
*
|
|
196
|
+
* _.isTypedArray([]);
|
|
197
|
+
* // => false
|
|
198
|
+
*/
|
|
199
|
+
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
|
|
200
|
+
|
|
201
|
+
/** Used for built-in method references. */
|
|
202
|
+
var objectProto$4 = Object.prototype;
|
|
203
|
+
|
|
204
|
+
/** Used to check objects for own properties. */
|
|
205
|
+
var hasOwnProperty$3 = objectProto$4.hasOwnProperty;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Creates an array of the enumerable property names of the array-like `value`.
|
|
209
|
+
*
|
|
210
|
+
* @private
|
|
211
|
+
* @param {*} value The value to query.
|
|
212
|
+
* @param {boolean} inherited Specify returning inherited property names.
|
|
213
|
+
* @returns {Array} Returns the array of property names.
|
|
214
|
+
*/
|
|
215
|
+
function arrayLikeKeys(value, inherited) {
|
|
216
|
+
var isArr = isArray(value),
|
|
217
|
+
isArg = !isArr && isArguments(value),
|
|
218
|
+
isBuff = !isArr && !isArg && isBuffer(value),
|
|
219
|
+
isType = !isArr && !isArg && !isBuff && isTypedArray(value),
|
|
220
|
+
skipIndexes = isArr || isArg || isBuff || isType,
|
|
221
|
+
result = skipIndexes ? baseTimes(value.length, String) : [],
|
|
222
|
+
length = result.length;
|
|
223
|
+
|
|
224
|
+
for (var key in value) {
|
|
225
|
+
if ((inherited || hasOwnProperty$3.call(value, key)) &&
|
|
226
|
+
!(skipIndexes && (
|
|
227
|
+
// Safari 9 has enumerable `arguments.length` in strict mode.
|
|
228
|
+
key == 'length' ||
|
|
229
|
+
// Node.js 0.10 has enumerable non-index properties on buffers.
|
|
230
|
+
(isBuff && (key == 'offset' || key == 'parent')) ||
|
|
231
|
+
// PhantomJS 2 has enumerable non-index properties on typed arrays.
|
|
232
|
+
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
|
|
233
|
+
// Skip index properties.
|
|
234
|
+
isIndex(key, length)
|
|
235
|
+
))) {
|
|
236
|
+
result.push(key);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Creates a unary function that invokes `func` with its argument transformed.
|
|
244
|
+
*
|
|
245
|
+
* @private
|
|
246
|
+
* @param {Function} func The function to wrap.
|
|
247
|
+
* @param {Function} transform The argument transform.
|
|
248
|
+
* @returns {Function} Returns the new function.
|
|
249
|
+
*/
|
|
250
|
+
function overArg(func, transform) {
|
|
251
|
+
return function(arg) {
|
|
252
|
+
return func(transform(arg));
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Built-in method references for those with the same name as other `lodash` methods. */
|
|
257
|
+
var nativeKeys = overArg(Object.keys, Object);
|
|
258
|
+
|
|
259
|
+
/** Used for built-in method references. */
|
|
260
|
+
var objectProto$3 = Object.prototype;
|
|
261
|
+
|
|
262
|
+
/** Used to check objects for own properties. */
|
|
263
|
+
var hasOwnProperty$2 = objectProto$3.hasOwnProperty;
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
|
|
267
|
+
*
|
|
268
|
+
* @private
|
|
269
|
+
* @param {Object} object The object to query.
|
|
270
|
+
* @returns {Array} Returns the array of property names.
|
|
271
|
+
*/
|
|
272
|
+
function baseKeys(object) {
|
|
273
|
+
if (!isPrototype(object)) {
|
|
274
|
+
return nativeKeys(object);
|
|
275
|
+
}
|
|
276
|
+
var result = [];
|
|
277
|
+
for (var key in Object(object)) {
|
|
278
|
+
if (hasOwnProperty$2.call(object, key) && key != 'constructor') {
|
|
279
|
+
result.push(key);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return result;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Creates an array of the own enumerable property names of `object`.
|
|
287
|
+
*
|
|
288
|
+
* **Note:** Non-object values are coerced to objects. See the
|
|
289
|
+
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
|
|
290
|
+
* for more details.
|
|
291
|
+
*
|
|
292
|
+
* @static
|
|
293
|
+
* @since 0.1.0
|
|
294
|
+
* @memberOf _
|
|
295
|
+
* @category Object
|
|
296
|
+
* @param {Object} object The object to query.
|
|
297
|
+
* @returns {Array} Returns the array of property names.
|
|
298
|
+
* @example
|
|
299
|
+
*
|
|
300
|
+
* function Foo() {
|
|
301
|
+
* this.a = 1;
|
|
302
|
+
* this.b = 2;
|
|
303
|
+
* }
|
|
304
|
+
*
|
|
305
|
+
* Foo.prototype.c = 3;
|
|
306
|
+
*
|
|
307
|
+
* _.keys(new Foo);
|
|
308
|
+
* // => ['a', 'b'] (iteration order is not guaranteed)
|
|
309
|
+
*
|
|
310
|
+
* _.keys('hi');
|
|
311
|
+
* // => ['0', '1']
|
|
312
|
+
*/
|
|
313
|
+
function keys(object) {
|
|
314
|
+
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Removes all key-value entries from the stack.
|
|
319
|
+
*
|
|
320
|
+
* @private
|
|
321
|
+
* @name clear
|
|
322
|
+
* @memberOf Stack
|
|
323
|
+
*/
|
|
324
|
+
function stackClear() {
|
|
325
|
+
this.__data__ = new ListCache;
|
|
326
|
+
this.size = 0;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Removes `key` and its value from the stack.
|
|
331
|
+
*
|
|
332
|
+
* @private
|
|
333
|
+
* @name delete
|
|
334
|
+
* @memberOf Stack
|
|
335
|
+
* @param {string} key The key of the value to remove.
|
|
336
|
+
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
|
337
|
+
*/
|
|
338
|
+
function stackDelete(key) {
|
|
339
|
+
var data = this.__data__,
|
|
340
|
+
result = data['delete'](key);
|
|
341
|
+
|
|
342
|
+
this.size = data.size;
|
|
343
|
+
return result;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Gets the stack value for `key`.
|
|
348
|
+
*
|
|
349
|
+
* @private
|
|
350
|
+
* @name get
|
|
351
|
+
* @memberOf Stack
|
|
352
|
+
* @param {string} key The key of the value to get.
|
|
353
|
+
* @returns {*} Returns the entry value.
|
|
354
|
+
*/
|
|
355
|
+
function stackGet(key) {
|
|
356
|
+
return this.__data__.get(key);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Checks if a stack value for `key` exists.
|
|
361
|
+
*
|
|
362
|
+
* @private
|
|
363
|
+
* @name has
|
|
364
|
+
* @memberOf Stack
|
|
365
|
+
* @param {string} key The key of the entry to check.
|
|
366
|
+
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
|
367
|
+
*/
|
|
368
|
+
function stackHas(key) {
|
|
369
|
+
return this.__data__.has(key);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/** Used as the size to enable large array optimizations. */
|
|
373
|
+
var LARGE_ARRAY_SIZE = 200;
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Sets the stack `key` to `value`.
|
|
377
|
+
*
|
|
378
|
+
* @private
|
|
379
|
+
* @name set
|
|
380
|
+
* @memberOf Stack
|
|
381
|
+
* @param {string} key The key of the value to set.
|
|
382
|
+
* @param {*} value The value to set.
|
|
383
|
+
* @returns {Object} Returns the stack cache instance.
|
|
384
|
+
*/
|
|
385
|
+
function stackSet(key, value) {
|
|
386
|
+
var data = this.__data__;
|
|
387
|
+
if (data instanceof ListCache) {
|
|
388
|
+
var pairs = data.__data__;
|
|
389
|
+
if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
|
|
390
|
+
pairs.push([key, value]);
|
|
391
|
+
this.size = ++data.size;
|
|
392
|
+
return this;
|
|
393
|
+
}
|
|
394
|
+
data = this.__data__ = new MapCache(pairs);
|
|
395
|
+
}
|
|
396
|
+
data.set(key, value);
|
|
397
|
+
this.size = data.size;
|
|
398
|
+
return this;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Creates a stack cache object to store key-value pairs.
|
|
403
|
+
*
|
|
404
|
+
* @private
|
|
405
|
+
* @constructor
|
|
406
|
+
* @param {Array} [entries] The key-value pairs to cache.
|
|
407
|
+
*/
|
|
408
|
+
function Stack(entries) {
|
|
409
|
+
var data = this.__data__ = new ListCache(entries);
|
|
410
|
+
this.size = data.size;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// Add methods to `Stack`.
|
|
414
|
+
Stack.prototype.clear = stackClear;
|
|
415
|
+
Stack.prototype['delete'] = stackDelete;
|
|
416
|
+
Stack.prototype.get = stackGet;
|
|
417
|
+
Stack.prototype.has = stackHas;
|
|
418
|
+
Stack.prototype.set = stackSet;
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* A specialized version of `_.filter` for arrays without support for
|
|
422
|
+
* iteratee shorthands.
|
|
423
|
+
*
|
|
424
|
+
* @private
|
|
425
|
+
* @param {Array} [array] The array to iterate over.
|
|
426
|
+
* @param {Function} predicate The function invoked per iteration.
|
|
427
|
+
* @returns {Array} Returns the new filtered array.
|
|
428
|
+
*/
|
|
429
|
+
function arrayFilter(array, predicate) {
|
|
430
|
+
var index = -1,
|
|
431
|
+
length = array == null ? 0 : array.length,
|
|
432
|
+
resIndex = 0,
|
|
433
|
+
result = [];
|
|
434
|
+
|
|
435
|
+
while (++index < length) {
|
|
436
|
+
var value = array[index];
|
|
437
|
+
if (predicate(value, index, array)) {
|
|
438
|
+
result[resIndex++] = value;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
return result;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* This method returns a new empty array.
|
|
446
|
+
*
|
|
447
|
+
* @static
|
|
448
|
+
* @memberOf _
|
|
449
|
+
* @since 4.13.0
|
|
450
|
+
* @category Util
|
|
451
|
+
* @returns {Array} Returns the new empty array.
|
|
452
|
+
* @example
|
|
453
|
+
*
|
|
454
|
+
* var arrays = _.times(2, _.stubArray);
|
|
455
|
+
*
|
|
456
|
+
* console.log(arrays);
|
|
457
|
+
* // => [[], []]
|
|
458
|
+
*
|
|
459
|
+
* console.log(arrays[0] === arrays[1]);
|
|
460
|
+
* // => false
|
|
461
|
+
*/
|
|
462
|
+
function stubArray() {
|
|
463
|
+
return [];
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
/** Used for built-in method references. */
|
|
467
|
+
var objectProto$2 = Object.prototype;
|
|
468
|
+
|
|
469
|
+
/** Built-in value references. */
|
|
470
|
+
var propertyIsEnumerable = objectProto$2.propertyIsEnumerable;
|
|
471
|
+
|
|
472
|
+
/* Built-in method references for those with the same name as other `lodash` methods. */
|
|
473
|
+
var nativeGetSymbols = Object.getOwnPropertySymbols;
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Creates an array of the own enumerable symbols of `object`.
|
|
477
|
+
*
|
|
478
|
+
* @private
|
|
479
|
+
* @param {Object} object The object to query.
|
|
480
|
+
* @returns {Array} Returns the array of symbols.
|
|
481
|
+
*/
|
|
482
|
+
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
|
|
483
|
+
if (object == null) {
|
|
484
|
+
return [];
|
|
485
|
+
}
|
|
486
|
+
object = Object(object);
|
|
487
|
+
return arrayFilter(nativeGetSymbols(object), function(symbol) {
|
|
488
|
+
return propertyIsEnumerable.call(object, symbol);
|
|
489
|
+
});
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
/**
|
|
493
|
+
* The base implementation of `getAllKeys` and `getAllKeysIn` which uses
|
|
494
|
+
* `keysFunc` and `symbolsFunc` to get the enumerable property names and
|
|
495
|
+
* symbols of `object`.
|
|
496
|
+
*
|
|
497
|
+
* @private
|
|
498
|
+
* @param {Object} object The object to query.
|
|
499
|
+
* @param {Function} keysFunc The function to get the keys of `object`.
|
|
500
|
+
* @param {Function} symbolsFunc The function to get the symbols of `object`.
|
|
501
|
+
* @returns {Array} Returns the array of property names and symbols.
|
|
502
|
+
*/
|
|
503
|
+
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
|
|
504
|
+
var result = keysFunc(object);
|
|
505
|
+
return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Creates an array of own enumerable property names and symbols of `object`.
|
|
510
|
+
*
|
|
511
|
+
* @private
|
|
512
|
+
* @param {Object} object The object to query.
|
|
513
|
+
* @returns {Array} Returns the array of property names and symbols.
|
|
514
|
+
*/
|
|
515
|
+
function getAllKeys(object) {
|
|
516
|
+
return baseGetAllKeys(object, keys, getSymbols);
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/* Built-in method references that are verified to be native. */
|
|
520
|
+
var DataView = getNative(root, 'DataView');
|
|
521
|
+
|
|
522
|
+
/* Built-in method references that are verified to be native. */
|
|
523
|
+
var Promise$1 = getNative(root, 'Promise');
|
|
524
|
+
|
|
525
|
+
/* Built-in method references that are verified to be native. */
|
|
526
|
+
var Set = getNative(root, 'Set');
|
|
527
|
+
|
|
528
|
+
/** `Object#toString` result references. */
|
|
529
|
+
var mapTag$1 = '[object Map]',
|
|
530
|
+
objectTag$1 = '[object Object]',
|
|
531
|
+
promiseTag = '[object Promise]',
|
|
532
|
+
setTag$1 = '[object Set]',
|
|
533
|
+
weakMapTag = '[object WeakMap]';
|
|
534
|
+
|
|
535
|
+
var dataViewTag$1 = '[object DataView]';
|
|
536
|
+
|
|
537
|
+
/** Used to detect maps, sets, and weakmaps. */
|
|
538
|
+
var dataViewCtorString = toSource(DataView),
|
|
539
|
+
mapCtorString = toSource(Map),
|
|
540
|
+
promiseCtorString = toSource(Promise$1),
|
|
541
|
+
setCtorString = toSource(Set),
|
|
542
|
+
weakMapCtorString = toSource(WeakMap);
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Gets the `toStringTag` of `value`.
|
|
546
|
+
*
|
|
547
|
+
* @private
|
|
548
|
+
* @param {*} value The value to query.
|
|
549
|
+
* @returns {string} Returns the `toStringTag`.
|
|
550
|
+
*/
|
|
551
|
+
var getTag = baseGetTag;
|
|
552
|
+
|
|
553
|
+
// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
|
|
554
|
+
if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$1) ||
|
|
555
|
+
(Map && getTag(new Map) != mapTag$1) ||
|
|
556
|
+
(Promise$1 && getTag(Promise$1.resolve()) != promiseTag) ||
|
|
557
|
+
(Set && getTag(new Set) != setTag$1) ||
|
|
558
|
+
(WeakMap && getTag(new WeakMap) != weakMapTag)) {
|
|
559
|
+
getTag = function(value) {
|
|
560
|
+
var result = baseGetTag(value),
|
|
561
|
+
Ctor = result == objectTag$1 ? value.constructor : undefined,
|
|
562
|
+
ctorString = Ctor ? toSource(Ctor) : '';
|
|
563
|
+
|
|
564
|
+
if (ctorString) {
|
|
565
|
+
switch (ctorString) {
|
|
566
|
+
case dataViewCtorString: return dataViewTag$1;
|
|
567
|
+
case mapCtorString: return mapTag$1;
|
|
568
|
+
case promiseCtorString: return promiseTag;
|
|
569
|
+
case setCtorString: return setTag$1;
|
|
570
|
+
case weakMapCtorString: return weakMapTag;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
return result;
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/** Built-in value references. */
|
|
578
|
+
var Uint8Array = root.Uint8Array;
|
|
579
|
+
|
|
580
|
+
/** Used to stand-in for `undefined` hash values. */
|
|
581
|
+
var HASH_UNDEFINED = '__lodash_hash_undefined__';
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Adds `value` to the array cache.
|
|
585
|
+
*
|
|
586
|
+
* @private
|
|
587
|
+
* @name add
|
|
588
|
+
* @memberOf SetCache
|
|
589
|
+
* @alias push
|
|
590
|
+
* @param {*} value The value to cache.
|
|
591
|
+
* @returns {Object} Returns the cache instance.
|
|
592
|
+
*/
|
|
593
|
+
function setCacheAdd(value) {
|
|
594
|
+
this.__data__.set(value, HASH_UNDEFINED);
|
|
595
|
+
return this;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* Checks if `value` is in the array cache.
|
|
600
|
+
*
|
|
601
|
+
* @private
|
|
602
|
+
* @name has
|
|
603
|
+
* @memberOf SetCache
|
|
604
|
+
* @param {*} value The value to search for.
|
|
605
|
+
* @returns {number} Returns `true` if `value` is found, else `false`.
|
|
606
|
+
*/
|
|
607
|
+
function setCacheHas(value) {
|
|
608
|
+
return this.__data__.has(value);
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
*
|
|
613
|
+
* Creates an array cache object to store unique values.
|
|
614
|
+
*
|
|
615
|
+
* @private
|
|
616
|
+
* @constructor
|
|
617
|
+
* @param {Array} [values] The values to cache.
|
|
618
|
+
*/
|
|
619
|
+
function SetCache(values) {
|
|
620
|
+
var index = -1,
|
|
621
|
+
length = values == null ? 0 : values.length;
|
|
622
|
+
|
|
623
|
+
this.__data__ = new MapCache;
|
|
624
|
+
while (++index < length) {
|
|
625
|
+
this.add(values[index]);
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
// Add methods to `SetCache`.
|
|
630
|
+
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
|
|
631
|
+
SetCache.prototype.has = setCacheHas;
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* A specialized version of `_.some` for arrays without support for iteratee
|
|
635
|
+
* shorthands.
|
|
636
|
+
*
|
|
637
|
+
* @private
|
|
638
|
+
* @param {Array} [array] The array to iterate over.
|
|
639
|
+
* @param {Function} predicate The function invoked per iteration.
|
|
640
|
+
* @returns {boolean} Returns `true` if any element passes the predicate check,
|
|
641
|
+
* else `false`.
|
|
642
|
+
*/
|
|
643
|
+
function arraySome(array, predicate) {
|
|
644
|
+
var index = -1,
|
|
645
|
+
length = array == null ? 0 : array.length;
|
|
646
|
+
|
|
647
|
+
while (++index < length) {
|
|
648
|
+
if (predicate(array[index], index, array)) {
|
|
649
|
+
return true;
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
return false;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* Checks if a `cache` value for `key` exists.
|
|
657
|
+
*
|
|
658
|
+
* @private
|
|
659
|
+
* @param {Object} cache The cache to query.
|
|
660
|
+
* @param {string} key The key of the entry to check.
|
|
661
|
+
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
|
662
|
+
*/
|
|
663
|
+
function cacheHas(cache, key) {
|
|
664
|
+
return cache.has(key);
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
/** Used to compose bitmasks for value comparisons. */
|
|
668
|
+
var COMPARE_PARTIAL_FLAG$3 = 1,
|
|
669
|
+
COMPARE_UNORDERED_FLAG$1 = 2;
|
|
670
|
+
|
|
671
|
+
/**
|
|
672
|
+
* A specialized version of `baseIsEqualDeep` for arrays with support for
|
|
673
|
+
* partial deep comparisons.
|
|
674
|
+
*
|
|
675
|
+
* @private
|
|
676
|
+
* @param {Array} array The array to compare.
|
|
677
|
+
* @param {Array} other The other array to compare.
|
|
678
|
+
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
|
|
679
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
680
|
+
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
681
|
+
* @param {Object} stack Tracks traversed `array` and `other` objects.
|
|
682
|
+
* @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
|
|
683
|
+
*/
|
|
684
|
+
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
|
|
685
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3,
|
|
686
|
+
arrLength = array.length,
|
|
687
|
+
othLength = other.length;
|
|
688
|
+
|
|
689
|
+
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
|
|
690
|
+
return false;
|
|
691
|
+
}
|
|
692
|
+
// Check that cyclic values are equal.
|
|
693
|
+
var arrStacked = stack.get(array);
|
|
694
|
+
var othStacked = stack.get(other);
|
|
695
|
+
if (arrStacked && othStacked) {
|
|
696
|
+
return arrStacked == other && othStacked == array;
|
|
697
|
+
}
|
|
698
|
+
var index = -1,
|
|
699
|
+
result = true,
|
|
700
|
+
seen = (bitmask & COMPARE_UNORDERED_FLAG$1) ? new SetCache : undefined;
|
|
701
|
+
|
|
702
|
+
stack.set(array, other);
|
|
703
|
+
stack.set(other, array);
|
|
704
|
+
|
|
705
|
+
// Ignore non-index properties.
|
|
706
|
+
while (++index < arrLength) {
|
|
707
|
+
var arrValue = array[index],
|
|
708
|
+
othValue = other[index];
|
|
709
|
+
|
|
710
|
+
if (customizer) {
|
|
711
|
+
var compared = isPartial
|
|
712
|
+
? customizer(othValue, arrValue, index, other, array, stack)
|
|
713
|
+
: customizer(arrValue, othValue, index, array, other, stack);
|
|
714
|
+
}
|
|
715
|
+
if (compared !== undefined) {
|
|
716
|
+
if (compared) {
|
|
717
|
+
continue;
|
|
718
|
+
}
|
|
719
|
+
result = false;
|
|
720
|
+
break;
|
|
721
|
+
}
|
|
722
|
+
// Recursively compare arrays (susceptible to call stack limits).
|
|
723
|
+
if (seen) {
|
|
724
|
+
if (!arraySome(other, function(othValue, othIndex) {
|
|
725
|
+
if (!cacheHas(seen, othIndex) &&
|
|
726
|
+
(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
|
|
727
|
+
return seen.push(othIndex);
|
|
728
|
+
}
|
|
729
|
+
})) {
|
|
730
|
+
result = false;
|
|
731
|
+
break;
|
|
732
|
+
}
|
|
733
|
+
} else if (!(
|
|
734
|
+
arrValue === othValue ||
|
|
735
|
+
equalFunc(arrValue, othValue, bitmask, customizer, stack)
|
|
736
|
+
)) {
|
|
737
|
+
result = false;
|
|
738
|
+
break;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
stack['delete'](array);
|
|
742
|
+
stack['delete'](other);
|
|
743
|
+
return result;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* Converts `map` to its key-value pairs.
|
|
748
|
+
*
|
|
749
|
+
* @private
|
|
750
|
+
* @param {Object} map The map to convert.
|
|
751
|
+
* @returns {Array} Returns the key-value pairs.
|
|
752
|
+
*/
|
|
753
|
+
function mapToArray(map) {
|
|
754
|
+
var index = -1,
|
|
755
|
+
result = Array(map.size);
|
|
756
|
+
|
|
757
|
+
map.forEach(function(value, key) {
|
|
758
|
+
result[++index] = [key, value];
|
|
759
|
+
});
|
|
760
|
+
return result;
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* Converts `set` to an array of its values.
|
|
765
|
+
*
|
|
766
|
+
* @private
|
|
767
|
+
* @param {Object} set The set to convert.
|
|
768
|
+
* @returns {Array} Returns the values.
|
|
769
|
+
*/
|
|
770
|
+
function setToArray(set) {
|
|
771
|
+
var index = -1,
|
|
772
|
+
result = Array(set.size);
|
|
773
|
+
|
|
774
|
+
set.forEach(function(value) {
|
|
775
|
+
result[++index] = value;
|
|
776
|
+
});
|
|
777
|
+
return result;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
/** Used to compose bitmasks for value comparisons. */
|
|
781
|
+
var COMPARE_PARTIAL_FLAG$2 = 1,
|
|
782
|
+
COMPARE_UNORDERED_FLAG = 2;
|
|
783
|
+
|
|
784
|
+
/** `Object#toString` result references. */
|
|
785
|
+
var boolTag = '[object Boolean]',
|
|
786
|
+
dateTag = '[object Date]',
|
|
787
|
+
errorTag = '[object Error]',
|
|
788
|
+
mapTag = '[object Map]',
|
|
789
|
+
numberTag = '[object Number]',
|
|
790
|
+
regexpTag = '[object RegExp]',
|
|
791
|
+
setTag = '[object Set]',
|
|
792
|
+
stringTag = '[object String]',
|
|
793
|
+
symbolTag = '[object Symbol]';
|
|
794
|
+
|
|
795
|
+
var arrayBufferTag = '[object ArrayBuffer]',
|
|
796
|
+
dataViewTag = '[object DataView]';
|
|
797
|
+
|
|
798
|
+
/** Used to convert symbols to primitives and strings. */
|
|
799
|
+
var symbolProto = Symbol$1 ? Symbol$1.prototype : undefined,
|
|
800
|
+
symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
|
|
801
|
+
|
|
802
|
+
/**
|
|
803
|
+
* A specialized version of `baseIsEqualDeep` for comparing objects of
|
|
804
|
+
* the same `toStringTag`.
|
|
805
|
+
*
|
|
806
|
+
* **Note:** This function only supports comparing values with tags of
|
|
807
|
+
* `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
|
|
808
|
+
*
|
|
809
|
+
* @private
|
|
810
|
+
* @param {Object} object The object to compare.
|
|
811
|
+
* @param {Object} other The other object to compare.
|
|
812
|
+
* @param {string} tag The `toStringTag` of the objects to compare.
|
|
813
|
+
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
|
|
814
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
815
|
+
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
816
|
+
* @param {Object} stack Tracks traversed `object` and `other` objects.
|
|
817
|
+
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
|
|
818
|
+
*/
|
|
819
|
+
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
|
|
820
|
+
switch (tag) {
|
|
821
|
+
case dataViewTag:
|
|
822
|
+
if ((object.byteLength != other.byteLength) ||
|
|
823
|
+
(object.byteOffset != other.byteOffset)) {
|
|
824
|
+
return false;
|
|
825
|
+
}
|
|
826
|
+
object = object.buffer;
|
|
827
|
+
other = other.buffer;
|
|
828
|
+
|
|
829
|
+
case arrayBufferTag:
|
|
830
|
+
if ((object.byteLength != other.byteLength) ||
|
|
831
|
+
!equalFunc(new Uint8Array(object), new Uint8Array(other))) {
|
|
832
|
+
return false;
|
|
833
|
+
}
|
|
834
|
+
return true;
|
|
835
|
+
|
|
836
|
+
case boolTag:
|
|
837
|
+
case dateTag:
|
|
838
|
+
case numberTag:
|
|
839
|
+
// Coerce booleans to `1` or `0` and dates to milliseconds.
|
|
840
|
+
// Invalid dates are coerced to `NaN`.
|
|
841
|
+
return eq(+object, +other);
|
|
842
|
+
|
|
843
|
+
case errorTag:
|
|
844
|
+
return object.name == other.name && object.message == other.message;
|
|
845
|
+
|
|
846
|
+
case regexpTag:
|
|
847
|
+
case stringTag:
|
|
848
|
+
// Coerce regexes to strings and treat strings, primitives and objects,
|
|
849
|
+
// as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
|
|
850
|
+
// for more details.
|
|
851
|
+
return object == (other + '');
|
|
852
|
+
|
|
853
|
+
case mapTag:
|
|
854
|
+
var convert = mapToArray;
|
|
855
|
+
|
|
856
|
+
case setTag:
|
|
857
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2;
|
|
858
|
+
convert || (convert = setToArray);
|
|
859
|
+
|
|
860
|
+
if (object.size != other.size && !isPartial) {
|
|
861
|
+
return false;
|
|
862
|
+
}
|
|
863
|
+
// Assume cyclic values are equal.
|
|
864
|
+
var stacked = stack.get(object);
|
|
865
|
+
if (stacked) {
|
|
866
|
+
return stacked == other;
|
|
867
|
+
}
|
|
868
|
+
bitmask |= COMPARE_UNORDERED_FLAG;
|
|
869
|
+
|
|
870
|
+
// Recursively compare objects (susceptible to call stack limits).
|
|
871
|
+
stack.set(object, other);
|
|
872
|
+
var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
|
|
873
|
+
stack['delete'](object);
|
|
874
|
+
return result;
|
|
875
|
+
|
|
876
|
+
case symbolTag:
|
|
877
|
+
if (symbolValueOf) {
|
|
878
|
+
return symbolValueOf.call(object) == symbolValueOf.call(other);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
return false;
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
/** Used to compose bitmasks for value comparisons. */
|
|
885
|
+
var COMPARE_PARTIAL_FLAG$1 = 1;
|
|
886
|
+
|
|
887
|
+
/** Used for built-in method references. */
|
|
888
|
+
var objectProto$1 = Object.prototype;
|
|
889
|
+
|
|
890
|
+
/** Used to check objects for own properties. */
|
|
891
|
+
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* A specialized version of `baseIsEqualDeep` for objects with support for
|
|
895
|
+
* partial deep comparisons.
|
|
896
|
+
*
|
|
897
|
+
* @private
|
|
898
|
+
* @param {Object} object The object to compare.
|
|
899
|
+
* @param {Object} other The other object to compare.
|
|
900
|
+
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
|
|
901
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
902
|
+
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
903
|
+
* @param {Object} stack Tracks traversed `object` and `other` objects.
|
|
904
|
+
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
|
|
905
|
+
*/
|
|
906
|
+
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
|
|
907
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1,
|
|
908
|
+
objProps = getAllKeys(object),
|
|
909
|
+
objLength = objProps.length,
|
|
910
|
+
othProps = getAllKeys(other),
|
|
911
|
+
othLength = othProps.length;
|
|
912
|
+
|
|
913
|
+
if (objLength != othLength && !isPartial) {
|
|
914
|
+
return false;
|
|
915
|
+
}
|
|
916
|
+
var index = objLength;
|
|
917
|
+
while (index--) {
|
|
918
|
+
var key = objProps[index];
|
|
919
|
+
if (!(isPartial ? key in other : hasOwnProperty$1.call(other, key))) {
|
|
920
|
+
return false;
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
// Check that cyclic values are equal.
|
|
924
|
+
var objStacked = stack.get(object);
|
|
925
|
+
var othStacked = stack.get(other);
|
|
926
|
+
if (objStacked && othStacked) {
|
|
927
|
+
return objStacked == other && othStacked == object;
|
|
928
|
+
}
|
|
929
|
+
var result = true;
|
|
930
|
+
stack.set(object, other);
|
|
931
|
+
stack.set(other, object);
|
|
932
|
+
|
|
933
|
+
var skipCtor = isPartial;
|
|
934
|
+
while (++index < objLength) {
|
|
935
|
+
key = objProps[index];
|
|
936
|
+
var objValue = object[key],
|
|
937
|
+
othValue = other[key];
|
|
938
|
+
|
|
939
|
+
if (customizer) {
|
|
940
|
+
var compared = isPartial
|
|
941
|
+
? customizer(othValue, objValue, key, other, object, stack)
|
|
942
|
+
: customizer(objValue, othValue, key, object, other, stack);
|
|
943
|
+
}
|
|
944
|
+
// Recursively compare objects (susceptible to call stack limits).
|
|
945
|
+
if (!(compared === undefined
|
|
946
|
+
? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
|
|
947
|
+
: compared
|
|
948
|
+
)) {
|
|
949
|
+
result = false;
|
|
950
|
+
break;
|
|
951
|
+
}
|
|
952
|
+
skipCtor || (skipCtor = key == 'constructor');
|
|
953
|
+
}
|
|
954
|
+
if (result && !skipCtor) {
|
|
955
|
+
var objCtor = object.constructor,
|
|
956
|
+
othCtor = other.constructor;
|
|
957
|
+
|
|
958
|
+
// Non `Object` object instances with different constructors are not equal.
|
|
959
|
+
if (objCtor != othCtor &&
|
|
960
|
+
('constructor' in object && 'constructor' in other) &&
|
|
961
|
+
!(typeof objCtor == 'function' && objCtor instanceof objCtor &&
|
|
962
|
+
typeof othCtor == 'function' && othCtor instanceof othCtor)) {
|
|
963
|
+
result = false;
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
stack['delete'](object);
|
|
967
|
+
stack['delete'](other);
|
|
968
|
+
return result;
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
/** Used to compose bitmasks for value comparisons. */
|
|
972
|
+
var COMPARE_PARTIAL_FLAG = 1;
|
|
973
|
+
|
|
974
|
+
/** `Object#toString` result references. */
|
|
975
|
+
var argsTag = '[object Arguments]',
|
|
976
|
+
arrayTag = '[object Array]',
|
|
977
|
+
objectTag = '[object Object]';
|
|
978
|
+
|
|
979
|
+
/** Used for built-in method references. */
|
|
980
|
+
var objectProto = Object.prototype;
|
|
981
|
+
|
|
982
|
+
/** Used to check objects for own properties. */
|
|
983
|
+
var hasOwnProperty = objectProto.hasOwnProperty;
|
|
984
|
+
|
|
985
|
+
/**
|
|
986
|
+
* A specialized version of `baseIsEqual` for arrays and objects which performs
|
|
987
|
+
* deep comparisons and tracks traversed objects enabling objects with circular
|
|
988
|
+
* references to be compared.
|
|
989
|
+
*
|
|
990
|
+
* @private
|
|
991
|
+
* @param {Object} object The object to compare.
|
|
992
|
+
* @param {Object} other The other object to compare.
|
|
993
|
+
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
|
|
994
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
995
|
+
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
996
|
+
* @param {Object} [stack] Tracks traversed `object` and `other` objects.
|
|
997
|
+
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
|
|
998
|
+
*/
|
|
999
|
+
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
|
|
1000
|
+
var objIsArr = isArray(object),
|
|
1001
|
+
othIsArr = isArray(other),
|
|
1002
|
+
objTag = objIsArr ? arrayTag : getTag(object),
|
|
1003
|
+
othTag = othIsArr ? arrayTag : getTag(other);
|
|
1004
|
+
|
|
1005
|
+
objTag = objTag == argsTag ? objectTag : objTag;
|
|
1006
|
+
othTag = othTag == argsTag ? objectTag : othTag;
|
|
1007
|
+
|
|
1008
|
+
var objIsObj = objTag == objectTag,
|
|
1009
|
+
othIsObj = othTag == objectTag,
|
|
1010
|
+
isSameTag = objTag == othTag;
|
|
1011
|
+
|
|
1012
|
+
if (isSameTag && isBuffer(object)) {
|
|
1013
|
+
if (!isBuffer(other)) {
|
|
1014
|
+
return false;
|
|
1015
|
+
}
|
|
1016
|
+
objIsArr = true;
|
|
1017
|
+
objIsObj = false;
|
|
1018
|
+
}
|
|
1019
|
+
if (isSameTag && !objIsObj) {
|
|
1020
|
+
stack || (stack = new Stack);
|
|
1021
|
+
return (objIsArr || isTypedArray(object))
|
|
1022
|
+
? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
|
|
1023
|
+
: equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
|
|
1024
|
+
}
|
|
1025
|
+
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
|
|
1026
|
+
var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
|
|
1027
|
+
othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
|
|
1028
|
+
|
|
1029
|
+
if (objIsWrapped || othIsWrapped) {
|
|
1030
|
+
var objUnwrapped = objIsWrapped ? object.value() : object,
|
|
1031
|
+
othUnwrapped = othIsWrapped ? other.value() : other;
|
|
1032
|
+
|
|
1033
|
+
stack || (stack = new Stack);
|
|
1034
|
+
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
if (!isSameTag) {
|
|
1038
|
+
return false;
|
|
1039
|
+
}
|
|
1040
|
+
stack || (stack = new Stack);
|
|
1041
|
+
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
/**
|
|
1045
|
+
* The base implementation of `_.isEqual` which supports partial comparisons
|
|
1046
|
+
* and tracks traversed objects.
|
|
1047
|
+
*
|
|
1048
|
+
* @private
|
|
1049
|
+
* @param {*} value The value to compare.
|
|
1050
|
+
* @param {*} other The other value to compare.
|
|
1051
|
+
* @param {boolean} bitmask The bitmask flags.
|
|
1052
|
+
* 1 - Unordered comparison
|
|
1053
|
+
* 2 - Partial comparison
|
|
1054
|
+
* @param {Function} [customizer] The function to customize comparisons.
|
|
1055
|
+
* @param {Object} [stack] Tracks traversed `value` and `other` objects.
|
|
1056
|
+
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
|
1057
|
+
*/
|
|
1058
|
+
function baseIsEqual(value, other, bitmask, customizer, stack) {
|
|
1059
|
+
if (value === other) {
|
|
1060
|
+
return true;
|
|
1061
|
+
}
|
|
1062
|
+
if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
|
|
1063
|
+
return value !== value && other !== other;
|
|
1064
|
+
}
|
|
1065
|
+
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
/**
|
|
1069
|
+
* Performs a deep comparison between two values to determine if they are
|
|
1070
|
+
* equivalent.
|
|
1071
|
+
*
|
|
1072
|
+
* **Note:** This method supports comparing arrays, array buffers, booleans,
|
|
1073
|
+
* date objects, error objects, maps, numbers, `Object` objects, regexes,
|
|
1074
|
+
* sets, strings, symbols, and typed arrays. `Object` objects are compared
|
|
1075
|
+
* by their own, not inherited, enumerable properties. Functions and DOM
|
|
1076
|
+
* nodes are compared by strict equality, i.e. `===`.
|
|
1077
|
+
*
|
|
1078
|
+
* @static
|
|
1079
|
+
* @memberOf _
|
|
1080
|
+
* @since 0.1.0
|
|
1081
|
+
* @category Lang
|
|
1082
|
+
* @param {*} value The value to compare.
|
|
1083
|
+
* @param {*} other The other value to compare.
|
|
1084
|
+
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
|
1085
|
+
* @example
|
|
1086
|
+
*
|
|
1087
|
+
* var object = { 'a': 1 };
|
|
1088
|
+
* var other = { 'a': 1 };
|
|
1089
|
+
*
|
|
1090
|
+
* _.isEqual(object, other);
|
|
1091
|
+
* // => true
|
|
1092
|
+
*
|
|
1093
|
+
* object === other;
|
|
1094
|
+
* // => false
|
|
1095
|
+
*/
|
|
1096
|
+
function isEqual(value, other) {
|
|
1097
|
+
return baseIsEqual(value, other);
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
export { Stack as S, Uint8Array as U, isArrayLike as a, baseIsEqual as b, isPrototype as c, arrayLikeKeys as d, baseGetAllKeys as e, getTag as f, getSymbols as g, isBuffer as h, isEqual as i, getAllKeys as j, keys as k, overArg as o, stubArray as s };
|