@jenesei-software/jenesei-kit-react 1.3.40 → 2.0.1
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 +0 -37
- package/build/AnimatePresence-19yP-TCg.js +134 -0
- package/build/AnimatePresence-19yP-TCg.js.map +1 -0
- package/build/AnimatePresence-BdBJCJuf.cjs +11 -0
- package/build/AnimatePresence-BdBJCJuf.cjs.map +1 -0
- package/build/area-outside.cjs.js +1 -2
- package/build/area-outside.d.ts +2 -28
- package/build/area-outside.es.js +2 -3
- package/build/area-preview.cjs.js +1 -2
- package/build/area-preview.d.ts +2 -48
- package/build/area-preview.es.js +3 -5
- package/build/area-skeleton.cjs.js +1 -2
- package/build/area-skeleton.d.ts +2 -68
- package/build/area-skeleton.es.js +2 -4
- package/build/areas/outside/area.d.ts +7 -0
- package/build/areas/outside/index.d.ts +1 -0
- package/build/areas/preview/area.d.ts +3 -0
- package/build/areas/preview/area.hooks.d.ts +1 -0
- package/build/areas/preview/area.types.d.ts +19 -0
- package/build/areas/preview/index.d.ts +3 -0
- package/build/areas/skeleton/area.d.ts +3 -0
- package/build/areas/skeleton/area.types.d.ts +21 -0
- package/build/areas/skeleton/index.d.ts +2 -0
- package/build/build-info.txt +3 -3
- package/build/button-BbGiFvok.js +102 -0
- package/build/button-BbGiFvok.js.map +1 -0
- package/build/button-BuPpgfL_.cjs +3 -0
- package/build/button-BuPpgfL_.cjs.map +1 -0
- package/build/checkbox-CXxWDklX.js +98 -0
- package/build/checkbox-CXxWDklX.js.map +1 -0
- package/build/checkbox-qgc_Ntc3.cjs +3 -0
- package/build/checkbox-qgc_Ntc3.cjs.map +1 -0
- package/build/chunk-Dd8m0Ver.cjs +1 -0
- package/build/chunk-cI0lbGMq.js +31 -0
- package/build/component-BHyXT2-h.js +71 -0
- package/build/component-BHyXT2-h.js.map +1 -0
- package/build/component-button.cjs.js +1 -2
- package/build/component-button.d.ts +2 -208
- package/build/component-button.es.js +2 -5
- package/build/component-checkbox.cjs.js +1 -2
- package/build/component-checkbox.d.ts +2 -208
- package/build/component-checkbox.es.js +2 -8
- package/build/component-date-picker.cjs.js +1 -2
- package/build/component-date-picker.d.ts +2 -582
- package/build/component-date-picker.es.js +2 -19
- package/build/component-icon.cjs.js +1 -2
- package/build/component-icon.d.ts +2 -136
- package/build/component-icon.es.js +4 -8
- package/build/component-input-otp.cjs.js +1 -2
- package/build/component-input-otp.d.ts +2 -211
- package/build/component-input-otp.es.js +2 -7
- package/build/component-input.cjs.js +1 -2
- package/build/component-input.d.ts +2 -286
- package/build/component-input.es.js +2 -18
- package/build/component-jsn2T8Hu.cjs +3 -0
- package/build/component-jsn2T8Hu.cjs.map +1 -0
- package/build/component-pagination.cjs.js +1 -2
- package/build/component-pagination.d.ts +2 -196
- package/build/component-pagination.es.js +2 -4
- package/build/component-popover.cjs.js +1 -0
- package/build/component-popover.d.ts +2 -0
- package/build/component-popover.es.js +5 -0
- package/build/component-select.cjs.js +1 -2
- package/build/component-select.d.ts +2 -411
- package/build/component-select.es.js +6 -18
- package/build/component-separator.cjs.js +1 -2
- package/build/component-separator.d.ts +2 -49
- package/build/component-separator.es.js +2 -5
- package/build/component-stack.cjs.js +1 -2
- package/build/component-stack.d.ts +2 -72
- package/build/component-stack.es.js +3 -6
- package/build/component-textarea.cjs.js +1 -2
- package/build/component-textarea.d.ts +2 -202
- package/build/component-textarea.es.js +2 -6
- package/build/component-toggle.cjs.js +1 -2
- package/build/component-toggle.d.ts +2 -150
- package/build/component-toggle.es.js +2 -6
- package/build/component-tooltip.cjs.js +1 -2
- package/build/component-tooltip.d.ts +2 -360
- package/build/component-tooltip.es.js +2 -10
- package/build/component-typography.cjs.js +1 -2
- package/build/component-typography.d.ts +2 -316
- package/build/component-typography.es.js +3 -9
- package/build/components/button/component.d.ts +3 -0
- package/build/components/button/component.types.d.ts +41 -0
- package/build/components/button/index.d.ts +2 -0
- package/build/components/checkbox/component.d.ts +3 -0
- package/build/components/checkbox/component.types.d.ts +51 -0
- package/build/components/checkbox/index.d.ts +2 -0
- package/build/components/date-picker/component.d.ts +2 -0
- package/build/components/date-picker/component.types.d.ts +86 -0
- package/build/components/date-picker/index.d.ts +2 -0
- package/build/components/error/component.d.ts +3 -0
- package/build/components/error/component.types.d.ts +11 -0
- package/build/components/error/index.d.ts +2 -0
- package/build/components/icon/component.consts.d.ts +6 -0
- package/build/components/icon/component.d.ts +9 -0
- package/build/components/icon/component.functions.d.ts +2 -0
- package/build/components/icon/component.hooks.d.ts +5 -0
- package/build/components/icon/component.types.d.ts +47 -0
- package/build/components/icon/index.d.ts +4 -0
- package/build/components/input/component.d.ts +6 -0
- package/build/components/input/component.types.d.ts +78 -0
- package/build/components/input/index.d.ts +2 -0
- package/build/components/input-otp/component.d.ts +2 -0
- package/build/components/input-otp/component.types.d.ts +8 -0
- package/build/components/input-otp/index.d.ts +2 -0
- package/build/components/pagination/component.constants.d.ts +1 -0
- package/build/components/pagination/component.d.ts +3 -0
- package/build/components/pagination/component.types.d.ts +22 -0
- package/build/components/pagination/index.d.ts +2 -0
- package/build/components/popover/component.constants.d.ts +3 -0
- package/build/components/popover/component.d.ts +34 -0
- package/build/components/popover/component.types.d.ts +113 -0
- package/build/components/popover/index.d.ts +2 -0
- package/build/components/select/component.d.ts +4 -0
- package/build/components/select/component.examples.d.ts +6 -0
- package/build/components/select/component.types.d.ts +109 -0
- package/build/components/select/index.d.ts +3 -0
- package/build/components/separator/component.d.ts +3 -0
- package/build/components/separator/component.types.d.ts +10 -0
- package/build/components/separator/index.d.ts +2 -0
- package/build/components/stack/component.d.ts +4 -0
- package/build/components/stack/component.types.d.ts +20 -0
- package/build/components/stack/index.d.ts +2 -0
- package/build/components/textarea/component.d.ts +2 -0
- package/build/components/textarea/component.types.d.ts +67 -0
- package/build/components/textarea/index.d.ts +2 -0
- package/build/components/toggle/component.d.ts +2 -0
- package/build/components/toggle/component.types.d.ts +25 -0
- package/build/components/toggle/index.d.ts +2 -0
- package/build/components/tooltip/component.constants.d.ts +3 -0
- package/build/components/tooltip/component.d.ts +4 -0
- package/build/components/tooltip/component.types.d.ts +12 -0
- package/build/components/tooltip/index.d.ts +2 -0
- package/build/components/typography/component.d.ts +3 -0
- package/build/components/typography/component.types.d.ts +18 -0
- package/build/components/typography/index.d.ts +2 -0
- package/build/components-error.cjs.js +1 -0
- package/build/components-error.d.ts +2 -0
- package/build/components-error.es.js +4 -0
- package/build/context-app-CMK9g6MI.js +417 -0
- package/build/context-app-CMK9g6MI.js.map +1 -0
- package/build/context-app-HhFcx1wY.cjs +9 -0
- package/build/context-app-HhFcx1wY.cjs.map +1 -0
- package/build/context-app.cjs.js +1 -2
- package/build/context-app.d.ts +2 -224
- package/build/context-app.es.js +3 -19
- package/build/context-browser-theme-Cb6siWO0.js +35 -0
- package/build/context-browser-theme-Cb6siWO0.js.map +1 -0
- package/build/context-browser-theme-Cso_rAT5.cjs +3 -0
- package/build/context-browser-theme-Cso_rAT5.cjs.map +1 -0
- package/build/context-browser-theme.cjs.js +1 -0
- package/build/context-browser-theme.d.ts +2 -0
- package/build/context-browser-theme.es.js +5 -0
- package/build/context-cookie-5CBhf-gb.js +138 -0
- package/build/context-cookie-5CBhf-gb.js.map +1 -0
- package/build/context-cookie-Btkd2aXy.cjs +3 -0
- package/build/context-cookie-Btkd2aXy.cjs.map +1 -0
- package/build/context-cookie.cjs.js +1 -2
- package/build/context-cookie.d.ts +2 -67
- package/build/context-cookie.es.js +3 -8
- package/build/context-dialog-B67-_jMH.cjs +3 -0
- package/build/context-dialog-B67-_jMH.cjs.map +1 -0
- package/build/context-dialog-CxGGmBqC.js +176 -0
- package/build/context-dialog-CxGGmBqC.js.map +1 -0
- package/build/context-dialog.cjs.js +1 -2
- package/build/context-dialog.d.ts +2 -106
- package/build/context-dialog.es.js +4 -17
- package/build/context-geolocation-C7PYGQ2g.js +42 -0
- package/build/context-geolocation-C7PYGQ2g.js.map +1 -0
- package/build/context-geolocation-CV4hV0NX.cjs +3 -0
- package/build/context-geolocation-CV4hV0NX.cjs.map +1 -0
- package/build/context-geolocation.cjs.js +1 -2
- package/build/context-geolocation.d.ts +2 -22
- package/build/context-geolocation.es.js +3 -6
- package/build/context-local-storage-Bb_vktd8.js +83 -0
- package/build/context-local-storage-Bb_vktd8.js.map +1 -0
- package/build/context-local-storage-DUKHVPAA.cjs +3 -0
- package/build/context-local-storage-DUKHVPAA.cjs.map +1 -0
- package/build/context-local-storage.cjs.js +1 -2
- package/build/context-local-storage.d.ts +2 -54
- package/build/context-local-storage.es.js +3 -8
- package/build/context-permission-Co4BKDOu.js +77 -0
- package/build/context-permission-Co4BKDOu.js.map +1 -0
- package/build/context-permission-DrcIwK9y.cjs +3 -0
- package/build/context-permission-DrcIwK9y.cjs.map +1 -0
- package/build/context-permission.cjs.js +1 -2
- package/build/context-permission.d.ts +2 -28
- package/build/context-permission.es.js +3 -7
- package/build/context-screen-width-CFexCIzV.js +53 -0
- package/build/context-screen-width-CFexCIzV.js.map +1 -0
- package/build/context-screen-width-hcRkxzy7.cjs +3 -0
- package/build/context-screen-width-hcRkxzy7.cjs.map +1 -0
- package/build/context-screen-width.cjs.js +1 -2
- package/build/context-screen-width.d.ts +2 -34
- package/build/context-screen-width.es.js +3 -5
- package/build/context-sonner-4gBa1F7G.cjs +3 -0
- package/build/context-sonner-4gBa1F7G.cjs.map +1 -0
- package/build/context-sonner-qDPLFpD5.js +218 -0
- package/build/context-sonner-qDPLFpD5.js.map +1 -0
- package/build/context-sonner.cjs.js +1 -2
- package/build/context-sonner.d.ts +2 -457
- package/build/context-sonner.es.js +3 -20
- package/build/contexts/context-app/context.d.ts +33 -0
- package/build/contexts/context-app/context.hooks.d.ts +2 -0
- package/build/contexts/context-app/context.styles.d.ts +14 -0
- package/build/contexts/context-app/context.types.d.ts +87 -0
- package/build/contexts/context-app/index.d.ts +2 -0
- package/build/contexts/context-browser-theme/context.d.ts +4 -0
- package/build/contexts/context-browser-theme/context.hooks.d.ts +2 -0
- package/build/contexts/context-browser-theme/context.types.d.ts +12 -0
- package/build/contexts/context-browser-theme/index.d.ts +2 -0
- package/build/contexts/context-cookie/context.d.ts +27 -0
- package/build/contexts/context-cookie/context.functions.d.ts +3 -0
- package/build/contexts/context-cookie/context.hooks.d.ts +9 -0
- package/build/contexts/context-cookie/context.types.d.ts +18 -0
- package/build/contexts/context-cookie/index.d.ts +3 -0
- package/build/contexts/context-dialog/context.constants.d.ts +8 -0
- package/build/contexts/context-dialog/context.d.ts +4 -0
- package/build/contexts/context-dialog/context.hooks.d.ts +3 -0
- package/build/contexts/context-dialog/context.styles.d.ts +9 -0
- package/build/contexts/context-dialog/context.types.d.ts +47 -0
- package/build/contexts/context-dialog/index.d.ts +3 -0
- package/build/contexts/context-geolocation/context.d.ts +4 -0
- package/build/contexts/context-geolocation/context.hooks.d.ts +2 -0
- package/build/contexts/context-geolocation/context.types.d.ts +10 -0
- package/build/contexts/context-geolocation/index.d.ts +2 -0
- package/build/contexts/context-local-storage/context.d.ts +21 -0
- package/build/contexts/context-local-storage/context.functions.d.ts +2 -0
- package/build/contexts/context-local-storage/context.hooks.d.ts +5 -0
- package/build/contexts/context-local-storage/context.types.d.ts +16 -0
- package/build/contexts/context-local-storage/index.d.ts +3 -0
- package/build/contexts/context-permission/context.d.ts +3 -0
- package/build/contexts/context-permission/context.functions.d.ts +1 -0
- package/build/contexts/context-permission/context.hooks.d.ts +5 -0
- package/build/contexts/context-permission/context.types.d.ts +11 -0
- package/build/contexts/context-permission/index.d.ts +2 -0
- package/build/contexts/context-screen-width/context.d.ts +4 -0
- package/build/contexts/context-screen-width/context.hooks.d.ts +2 -0
- package/build/contexts/context-screen-width/context.types.d.ts +11 -0
- package/build/contexts/context-screen-width/index.d.ts +3 -0
- package/build/contexts/context-sonner/context.constants.d.ts +9 -0
- package/build/contexts/context-sonner/context.d.ts +4 -0
- package/build/contexts/context-sonner/context.hooks.d.ts +2 -0
- package/build/contexts/context-sonner/context.styles.d.ts +30 -0
- package/build/contexts/context-sonner/context.types.d.ts +59 -0
- package/build/contexts/context-sonner/index.d.ts +3 -0
- package/build/cores/consts.d.ts +30 -0
- package/build/{functions.d.ts → cores/functions.d.ts} +18 -22
- package/build/cores/logger.d.ts +1 -0
- package/build/cores/types.d.ts +18 -0
- package/build/date-picker-CPNNIEa-.cjs +3 -0
- package/build/date-picker-CPNNIEa-.cjs.map +1 -0
- package/build/date-picker-Uuce_InW.js +689 -0
- package/build/date-picker-Uuce_InW.js.map +1 -0
- package/build/dist-BV0C3tLK.js +483 -0
- package/build/dist-BV0C3tLK.js.map +1 -0
- package/build/dist-DswBAjW1.cjs +3 -0
- package/build/dist-DswBAjW1.cjs.map +1 -0
- package/build/error-DzkkNL2H.cjs +3 -0
- package/build/error-DzkkNL2H.cjs.map +1 -0
- package/build/error-L2fvWcNv.js +50 -0
- package/build/error-L2fvWcNv.js.map +1 -0
- package/build/functions-CLGf7hqw.js +20 -0
- package/build/functions-CLGf7hqw.js.map +1 -0
- package/build/functions-Dwo54amB.cjs +3 -0
- package/build/functions-Dwo54amB.cjs.map +1 -0
- package/build/hooks/use-debounced-callback/index.d.ts +1 -0
- package/build/hooks/use-debounced-callback/use.d.ts +1 -0
- package/build/hooks/use-deep-compare-memoize/index.d.ts +1 -0
- package/build/hooks/use-deep-compare-memoize/use.d.ts +1 -0
- package/build/hooks/use-deep-memo/index.d.ts +1 -0
- package/build/hooks/use-deep-memo/use.d.ts +1 -0
- package/build/hooks/use-merge-refs/index.d.ts +1 -0
- package/build/hooks/use-merge-refs/use.d.ts +2 -0
- package/build/hooks/use-overflowing/index.d.ts +2 -0
- package/build/hooks/use-overflowing/use.d.ts +12 -0
- package/build/hooks/use-overflowing/use.types.d.ts +6 -0
- package/build/hooks/use-overflowing-advanced/index.d.ts +2 -0
- package/build/hooks/use-overflowing-advanced/use.d.ts +7 -0
- package/build/hooks/use-overflowing-advanced/use.types.d.ts +5 -0
- package/build/hooks/use-overflowing-in-container/index.d.ts +2 -0
- package/build/hooks/use-overflowing-in-container/use.d.ts +7 -0
- package/build/hooks/use-overflowing-in-container/use.types.d.ts +7 -0
- package/build/hooks/use-responsive-layout/index.d.ts +1 -0
- package/build/hooks/use-responsive-layout/use.d.ts +2 -0
- package/build/hooks/use-typography-styles/index.d.ts +2 -0
- package/build/hooks/use-typography-styles/use.d.ts +2 -0
- package/build/hooks/use-typography-styles/use.types.d.ts +11 -0
- package/build/hooks-use-debounced-callback.cjs.js +3 -2
- package/build/hooks-use-debounced-callback.cjs.js.map +1 -1
- package/build/hooks-use-debounced-callback.d.ts +2 -3
- package/build/hooks-use-debounced-callback.es.js +12 -3
- package/build/hooks-use-debounced-callback.es.js.map +1 -1
- package/build/hooks-use-deep-compare-memoize.cjs.js +3 -2
- package/build/hooks-use-deep-compare-memoize.cjs.js.map +1 -1
- package/build/hooks-use-deep-compare-memoize.d.ts +2 -3
- package/build/hooks-use-deep-compare-memoize.es.js +10 -3
- package/build/hooks-use-deep-compare-memoize.es.js.map +1 -1
- package/build/hooks-use-deep-memo.cjs.js +3 -0
- package/build/hooks-use-deep-memo.cjs.js.map +1 -0
- package/build/hooks-use-deep-memo.d.ts +2 -0
- package/build/hooks-use-deep-memo.es.js +13 -0
- package/build/hooks-use-deep-memo.es.js.map +1 -0
- package/build/hooks-use-merge-refs.cjs.js +3 -0
- package/build/hooks-use-merge-refs.cjs.js.map +1 -0
- package/build/hooks-use-merge-refs.d.ts +2 -0
- package/build/hooks-use-merge-refs.es.js +13 -0
- package/build/hooks-use-merge-refs.es.js.map +1 -0
- package/build/hooks-use-overflowing-advanced.cjs.js +3 -0
- package/build/hooks-use-overflowing-advanced.cjs.js.map +1 -0
- package/build/hooks-use-overflowing-advanced.d.ts +2 -0
- package/build/hooks-use-overflowing-advanced.es.js +24 -0
- package/build/hooks-use-overflowing-advanced.es.js.map +1 -0
- package/build/hooks-use-overflowing-in-container.cjs.js +3 -0
- package/build/hooks-use-overflowing-in-container.cjs.js.map +1 -0
- package/build/hooks-use-overflowing-in-container.d.ts +2 -0
- package/build/hooks-use-overflowing-in-container.es.js +20 -0
- package/build/hooks-use-overflowing-in-container.es.js.map +1 -0
- package/build/hooks-use-overflowing.cjs.js +3 -0
- package/build/hooks-use-overflowing.cjs.js.map +1 -0
- package/build/hooks-use-overflowing.d.ts +2 -0
- package/build/hooks-use-overflowing.es.js +28 -0
- package/build/hooks-use-overflowing.es.js.map +1 -0
- package/build/hooks-use-responsive-layout.cjs.js +3 -0
- package/build/hooks-use-responsive-layout.cjs.js.map +1 -0
- package/build/hooks-use-responsive-layout.d.ts +2 -0
- package/build/hooks-use-responsive-layout.es.js +22 -0
- package/build/hooks-use-responsive-layout.es.js.map +1 -0
- package/build/hooks-use-typography-styles.cjs.js +3 -0
- package/build/hooks-use-typography-styles.cjs.js.map +1 -0
- package/build/hooks-use-typography-styles.d.ts +2 -0
- package/build/hooks-use-typography-styles.es.js +37 -0
- package/build/hooks-use-typography-styles.es.js.map +1 -0
- package/build/icon-CoIQwke4.cjs +3 -0
- package/build/icon-CoIQwke4.cjs.map +1 -0
- package/build/icon-DzAWOQJg.js +277 -0
- package/build/icon-DzAWOQJg.js.map +1 -0
- package/build/index.cjs.js +1 -2
- package/build/index.d.ts +39 -2494
- package/build/index.es.js +104 -309
- package/build/input-CV02F03L.js +917 -0
- package/build/input-CV02F03L.js.map +1 -0
- package/build/input-otp-B9cYxJ7X.js +106 -0
- package/build/input-otp-B9cYxJ7X.js.map +1 -0
- package/build/input-otp-BVRCfoRK.cjs +3 -0
- package/build/input-otp-BVRCfoRK.cjs.map +1 -0
- package/build/input-zXF5f99Z.cjs +11 -0
- package/build/input-zXF5f99Z.cjs.map +1 -0
- package/build/isEqual-DeC2HFe5.cjs +3 -0
- package/build/isEqual-DeC2HFe5.cjs.map +1 -0
- package/build/isEqual-Qb81B2zH.js +676 -0
- package/build/isEqual-Qb81B2zH.js.map +1 -0
- package/build/logger-BRWLzI5S.js +174 -0
- package/build/logger-BRWLzI5S.js.map +1 -0
- package/build/logger-DZFY33QY.cjs +5 -0
- package/build/logger-DZFY33QY.cjs.map +1 -0
- package/build/motion-CAPq8wSn.cjs +3 -0
- package/build/motion-CAPq8wSn.cjs.map +1 -0
- package/build/motion-Dt6TyEjN.js +128 -0
- package/build/motion-Dt6TyEjN.js.map +1 -0
- package/build/outside-B3nRnDGb.cjs +3 -0
- package/build/outside-B3nRnDGb.cjs.map +1 -0
- package/build/outside-DpK1pI8b.js +24 -0
- package/build/outside-DpK1pI8b.js.map +1 -0
- package/build/pagination-Dbs4Lrpt.cjs +3 -0
- package/build/pagination-Dbs4Lrpt.cjs.map +1 -0
- package/build/pagination-YXSjZsMZ.js +110 -0
- package/build/pagination-YXSjZsMZ.js.map +1 -0
- package/build/popover-1k1MNFwv.js +1948 -0
- package/build/popover-1k1MNFwv.js.map +1 -0
- package/build/popover-CgwGn-55.cjs +3 -0
- package/build/popover-CgwGn-55.cjs.map +1 -0
- package/build/preview-C_yFxoFH.js +65 -0
- package/build/preview-C_yFxoFH.js.map +1 -0
- package/build/preview-dT7fmxcc.cjs +3 -0
- package/build/preview-dT7fmxcc.cjs.map +1 -0
- package/build/proxy-_gZenxVU.cjs +3 -0
- package/build/proxy-_gZenxVU.cjs.map +1 -0
- package/build/proxy-wCWa57J3.js +4354 -0
- package/build/proxy-wCWa57J3.js.map +1 -0
- package/build/select-B0adRX2_.cjs +9 -0
- package/build/select-B0adRX2_.cjs.map +1 -0
- package/build/select-D7EyxR2l.js +3443 -0
- package/build/select-D7EyxR2l.js.map +1 -0
- package/build/separator-CbeH8Lug.cjs +3 -0
- package/build/separator-CbeH8Lug.cjs.map +1 -0
- package/build/separator-hWp-s54-.js +29 -0
- package/build/separator-hWp-s54-.js.map +1 -0
- package/build/skeleton-BoVFwt7y.cjs +3 -0
- package/build/skeleton-BoVFwt7y.cjs.map +1 -0
- package/build/skeleton-DNwTI6w0.js +39 -0
- package/build/skeleton-DNwTI6w0.js.map +1 -0
- package/build/style-motion.cjs.js +1 -2
- package/build/style-motion.d.ts +2 -20
- package/build/style-motion.es.js +5 -6
- package/build/style-utils.cjs.js +1 -0
- package/build/style-utils.d.ts +2 -0
- package/build/style-utils.es.js +7 -0
- package/build/styles/motion/index.d.ts +1 -0
- package/build/styles/motion/motion.d.ts +13 -0
- package/build/styles/utils/constants.d.ts +1797 -0
- package/build/styles/utils/functions.d.ts +3 -0
- package/build/styles/utils/index.d.ts +3 -0
- package/build/styles/utils/types.d.ts +68 -0
- package/build/textarea-CbZSeqGR.cjs +3 -0
- package/build/textarea-CbZSeqGR.cjs.map +1 -0
- package/build/textarea-ChkjV_Ha.js +132 -0
- package/build/textarea-ChkjV_Ha.js.map +1 -0
- package/build/toggle-I6YvEX4w.js +86 -0
- package/build/toggle-I6YvEX4w.js.map +1 -0
- package/build/toggle-gYw5FUp-.cjs +3 -0
- package/build/toggle-gYw5FUp-.cjs.map +1 -0
- package/build/typography-B2KioMfq.js +116 -0
- package/build/typography-B2KioMfq.js.map +1 -0
- package/build/typography-DcxhX_9e.cjs +3 -0
- package/build/typography-DcxhX_9e.cjs.map +1 -0
- package/build/utils-Cona48dZ.js +925 -0
- package/build/utils-Cona48dZ.js.map +1 -0
- package/build/utils-DtinAjAU.cjs +3 -0
- package/build/utils-DtinAjAU.cjs.map +1 -0
- package/build/v4-BDi_Luux.cjs +3 -0
- package/build/v4-BDi_Luux.cjs.map +1 -0
- package/build/v4-CYaPyb-W.js +31 -0
- package/build/v4-CYaPyb-W.js.map +1 -0
- package/package.json +185 -194
- package/build/area-0BNtBqG8.cjs +0 -2
- package/build/area-0BNtBqG8.cjs.map +0 -1
- package/build/area-B6xxVQ87.js +0 -35
- package/build/area-B6xxVQ87.js.map +0 -1
- package/build/area-B7-4IFQB.js +0 -19
- package/build/area-B7-4IFQB.js.map +0 -1
- package/build/area-DxKLtDFZ.cjs +0 -2
- package/build/area-DxKLtDFZ.cjs.map +0 -1
- package/build/area-outside.cjs.js.map +0 -1
- package/build/area-outside.es.js.map +0 -1
- package/build/area-preview.cjs.js.map +0 -1
- package/build/area-preview.es.js.map +0 -1
- package/build/area-scroll.cjs.js +0 -2
- package/build/area-scroll.cjs.js.map +0 -1
- package/build/area-scroll.d.ts +0 -57
- package/build/area-scroll.es.js +0 -7
- package/build/area-scroll.es.js.map +0 -1
- package/build/area-skeleton.cjs.js.map +0 -1
- package/build/area-skeleton.es.js.map +0 -1
- package/build/area-smooth.cjs.js +0 -2
- package/build/area-smooth.cjs.js.map +0 -1
- package/build/area-smooth.d.ts +0 -37
- package/build/area-smooth.es.js +0 -5
- package/build/area-smooth.es.js.map +0 -1
- package/build/area.hooks-Bk04M7mk.js +0 -26
- package/build/area.hooks-Bk04M7mk.js.map +0 -1
- package/build/area.hooks-C_UKZzcb.cjs +0 -2
- package/build/area.hooks-C_UKZzcb.cjs.map +0 -1
- package/build/area.styles-Cpx4H0gc.cjs +0 -27
- package/build/area.styles-Cpx4H0gc.cjs.map +0 -1
- package/build/area.styles-DhCCEhuq.js +0 -32
- package/build/area.styles-DhCCEhuq.js.map +0 -1
- package/build/component-B72M2Tpw.js +0 -84
- package/build/component-B72M2Tpw.js.map +0 -1
- package/build/component-BIxOOifU.cjs +0 -2
- package/build/component-BIxOOifU.cjs.map +0 -1
- package/build/component-BMIqhbpK.js +0 -23
- package/build/component-BMIqhbpK.js.map +0 -1
- package/build/component-BQru5uoj.js +0 -10
- package/build/component-BQru5uoj.js.map +0 -1
- package/build/component-BRCDQbb-.js +0 -50
- package/build/component-BRCDQbb-.js.map +0 -1
- package/build/component-BUkf5TLO.js +0 -170
- package/build/component-BUkf5TLO.js.map +0 -1
- package/build/component-BmccRQ_Y.cjs +0 -2
- package/build/component-BmccRQ_Y.cjs.map +0 -1
- package/build/component-Bvq-fgCN.cjs +0 -2
- package/build/component-Bvq-fgCN.cjs.map +0 -1
- package/build/component-C448kBTA.js +0 -443
- package/build/component-C448kBTA.js.map +0 -1
- package/build/component-C6I01Mel.cjs +0 -2
- package/build/component-C6I01Mel.cjs.map +0 -1
- package/build/component-C8mTuBua.js +0 -74
- package/build/component-C8mTuBua.js.map +0 -1
- package/build/component-CVWsmIlg.cjs +0 -2
- package/build/component-CVWsmIlg.cjs.map +0 -1
- package/build/component-C_6x7Mk8.js +0 -88
- package/build/component-C_6x7Mk8.js.map +0 -1
- package/build/component-CbWtsuhz.js +0 -60
- package/build/component-CbWtsuhz.js.map +0 -1
- package/build/component-Cfs39n8Q.js +0 -21
- package/build/component-Cfs39n8Q.js.map +0 -1
- package/build/component-CoOTSdM5.cjs +0 -28
- package/build/component-CoOTSdM5.cjs.map +0 -1
- package/build/component-Cu2i_-RT.cjs +0 -2
- package/build/component-Cu2i_-RT.cjs.map +0 -1
- package/build/component-CyZbUCkT.js +0 -39
- package/build/component-CyZbUCkT.js.map +0 -1
- package/build/component-D-HMYzXU.js +0 -65
- package/build/component-D-HMYzXU.js.map +0 -1
- package/build/component-D2vDwS60.cjs +0 -2
- package/build/component-D2vDwS60.cjs.map +0 -1
- package/build/component-D3KCIC-G.js +0 -64
- package/build/component-D3KCIC-G.js.map +0 -1
- package/build/component-DJAq34yj.cjs +0 -2
- package/build/component-DJAq34yj.cjs.map +0 -1
- package/build/component-DRMRXUJA.cjs +0 -2
- package/build/component-DRMRXUJA.cjs.map +0 -1
- package/build/component-DfSTPgfj.js +0 -248
- package/build/component-DfSTPgfj.js.map +0 -1
- package/build/component-DqV_-YxZ.cjs +0 -2
- package/build/component-DqV_-YxZ.cjs.map +0 -1
- package/build/component-DrmSI_ni.cjs +0 -2
- package/build/component-DrmSI_ni.cjs.map +0 -1
- package/build/component-Qxjnm7yi.cjs +0 -2
- package/build/component-Qxjnm7yi.cjs.map +0 -1
- package/build/component-WmDPzhcW.cjs +0 -2
- package/build/component-WmDPzhcW.cjs.map +0 -1
- package/build/component-accordion.cjs.js +0 -2
- package/build/component-accordion.cjs.js.map +0 -1
- package/build/component-accordion.d.ts +0 -100
- package/build/component-accordion.es.js +0 -11
- package/build/component-accordion.es.js.map +0 -1
- package/build/component-button-group.cjs.js +0 -2
- package/build/component-button-group.cjs.js.map +0 -1
- package/build/component-button-group.d.ts +0 -195
- package/build/component-button-group.es.js +0 -7
- package/build/component-button-group.es.js.map +0 -1
- package/build/component-button.cjs.js.map +0 -1
- package/build/component-button.es.js.map +0 -1
- package/build/component-checkbox-group.cjs.js +0 -2
- package/build/component-checkbox-group.cjs.js.map +0 -1
- package/build/component-checkbox-group.d.ts +0 -224
- package/build/component-checkbox-group.es.js +0 -12
- package/build/component-checkbox-group.es.js.map +0 -1
- package/build/component-checkbox.cjs.js.map +0 -1
- package/build/component-checkbox.es.js.map +0 -1
- package/build/component-date-picker.cjs.js.map +0 -1
- package/build/component-date-picker.es.js.map +0 -1
- package/build/component-gcvwlILJ.js +0 -76
- package/build/component-gcvwlILJ.js.map +0 -1
- package/build/component-icon.cjs.js.map +0 -1
- package/build/component-icon.es.js.map +0 -1
- package/build/component-image-button.cjs.js +0 -2
- package/build/component-image-button.cjs.js.map +0 -1
- package/build/component-image-button.d.ts +0 -215
- package/build/component-image-button.es.js +0 -5
- package/build/component-image-button.es.js.map +0 -1
- package/build/component-image-select.cjs.js +0 -2
- package/build/component-image-select.cjs.js.map +0 -1
- package/build/component-image-select.d.ts +0 -313
- package/build/component-image-select.es.js +0 -12
- package/build/component-image-select.es.js.map +0 -1
- package/build/component-image-slider.cjs.js +0 -2
- package/build/component-image-slider.cjs.js.map +0 -1
- package/build/component-image-slider.d.ts +0 -108
- package/build/component-image-slider.es.js +0 -9
- package/build/component-image-slider.es.js.map +0 -1
- package/build/component-image.cjs.js +0 -2
- package/build/component-image.cjs.js.map +0 -1
- package/build/component-image.d.ts +0 -51
- package/build/component-image.es.js +0 -7
- package/build/component-image.es.js.map +0 -1
- package/build/component-input-otp.cjs.js.map +0 -1
- package/build/component-input-otp.es.js.map +0 -1
- package/build/component-input.cjs.js.map +0 -1
- package/build/component-input.es.js.map +0 -1
- package/build/component-mFXKTq1K.cjs +0 -2
- package/build/component-mFXKTq1K.cjs.map +0 -1
- package/build/component-pagination.cjs.js.map +0 -1
- package/build/component-pagination.es.js.map +0 -1
- package/build/component-range.cjs.js +0 -2
- package/build/component-range.cjs.js.map +0 -1
- package/build/component-range.d.ts +0 -212
- package/build/component-range.es.js +0 -9
- package/build/component-range.es.js.map +0 -1
- package/build/component-ripple.cjs.js +0 -2
- package/build/component-ripple.cjs.js.map +0 -1
- package/build/component-ripple.d.ts +0 -47
- package/build/component-ripple.es.js +0 -12
- package/build/component-ripple.es.js.map +0 -1
- package/build/component-select.cjs.js.map +0 -1
- package/build/component-select.es.js.map +0 -1
- package/build/component-separator.cjs.js.map +0 -1
- package/build/component-separator.es.js.map +0 -1
- package/build/component-stack.cjs.js.map +0 -1
- package/build/component-stack.es.js.map +0 -1
- package/build/component-textarea.cjs.js.map +0 -1
- package/build/component-textarea.es.js.map +0 -1
- package/build/component-toggle.cjs.js.map +0 -1
- package/build/component-toggle.es.js.map +0 -1
- package/build/component-tooltip.cjs.js.map +0 -1
- package/build/component-tooltip.es.js.map +0 -1
- package/build/component-typography.cjs.js.map +0 -1
- package/build/component-typography.es.js.map +0 -1
- package/build/component.constants-BQOzGr0l.js +0 -757
- package/build/component.constants-BQOzGr0l.js.map +0 -1
- package/build/component.constants-CFLrPu5_.cjs +0 -2
- package/build/component.constants-CFLrPu5_.cjs.map +0 -1
- package/build/component.constants-DI22AYyi.js +0 -142
- package/build/component.constants-DI22AYyi.js.map +0 -1
- package/build/component.constants-DnHO8qFb.cjs +0 -2
- package/build/component.constants-DnHO8qFb.cjs.map +0 -1
- package/build/component.functions-D9ffjEok.cjs +0 -8
- package/build/component.functions-D9ffjEok.cjs.map +0 -1
- package/build/component.functions-DNW6h8kk.js +0 -12
- package/build/component.functions-DNW6h8kk.js.map +0 -1
- package/build/component.styles-BX2Aiqp_.cjs +0 -43
- package/build/component.styles-BX2Aiqp_.cjs.map +0 -1
- package/build/component.styles-C0oU5oX_.js +0 -59
- package/build/component.styles-C0oU5oX_.js.map +0 -1
- package/build/component.styles-CD6ZzRrk.cjs +0 -14
- package/build/component.styles-CD6ZzRrk.cjs.map +0 -1
- package/build/component.styles-SZ5VuhNG.js +0 -20
- package/build/component.styles-SZ5VuhNG.js.map +0 -1
- package/build/component.types-6hyRS9ZB.cjs +0 -2
- package/build/component.types-6hyRS9ZB.cjs.map +0 -1
- package/build/component.types-e2YpVj0l.js +0 -907
- package/build/component.types-e2YpVj0l.js.map +0 -1
- package/build/consts.cjs.js +0 -2
- package/build/consts.cjs.js.map +0 -1
- package/build/consts.d.ts +0 -77
- package/build/consts.es.js +0 -151
- package/build/consts.es.js.map +0 -1
- package/build/context-BK9a46O1.cjs +0 -4
- package/build/context-BK9a46O1.cjs.map +0 -1
- package/build/context-CPZf131N.cjs +0 -2
- package/build/context-CPZf131N.cjs.map +0 -1
- package/build/context-Cr80KOpF.js +0 -122
- package/build/context-Cr80KOpF.js.map +0 -1
- package/build/context-DssNKJ_n.cjs +0 -2
- package/build/context-DssNKJ_n.cjs.map +0 -1
- package/build/context-PFdUnKga.js +0 -44
- package/build/context-PFdUnKga.js.map +0 -1
- package/build/context-app.cjs.js.map +0 -1
- package/build/context-app.es.js.map +0 -1
- package/build/context-cookie.cjs.js.map +0 -1
- package/build/context-cookie.es.js.map +0 -1
- package/build/context-dialog.cjs.js.map +0 -1
- package/build/context-dialog.es.js.map +0 -1
- package/build/context-geolocation.cjs.js.map +0 -1
- package/build/context-geolocation.es.js.map +0 -1
- package/build/context-local-storage.cjs.js.map +0 -1
- package/build/context-local-storage.es.js.map +0 -1
- package/build/context-permission.cjs.js.map +0 -1
- package/build/context-permission.es.js.map +0 -1
- package/build/context-screen-width.cjs.js.map +0 -1
- package/build/context-screen-width.es.js.map +0 -1
- package/build/context-sonner.cjs.js.map +0 -1
- package/build/context-sonner.es.js.map +0 -1
- package/build/context-w9weDPCZ.js +0 -200
- package/build/context-w9weDPCZ.js.map +0 -1
- package/build/context.constants-B14bB8O1.js +0 -254
- package/build/context.constants-B14bB8O1.js.map +0 -1
- package/build/context.constants-BA1u2p1r.cjs +0 -32
- package/build/context.constants-BA1u2p1r.cjs.map +0 -1
- package/build/context.constants-BWLe7YHv.js +0 -12598
- package/build/context.constants-BWLe7YHv.js.map +0 -1
- package/build/context.constants-baqYH-_k.cjs +0 -1742
- package/build/context.constants-baqYH-_k.cjs.map +0 -1
- package/build/context.functions--v7FClEV.cjs +0 -2
- package/build/context.functions--v7FClEV.cjs.map +0 -1
- package/build/context.functions-B8FDl7nJ.js +0 -14
- package/build/context.functions-B8FDl7nJ.js.map +0 -1
- package/build/context.functions-CB6--UcR.js +0 -35
- package/build/context.functions-CB6--UcR.js.map +0 -1
- package/build/context.functions-CHaPcuVS.cjs +0 -2
- package/build/context.functions-CHaPcuVS.cjs.map +0 -1
- package/build/context.functions-CPP8X6so.js +0 -35
- package/build/context.functions-CPP8X6so.js.map +0 -1
- package/build/context.functions-ar41xFVo.cjs +0 -2
- package/build/context.functions-ar41xFVo.cjs.map +0 -1
- package/build/context.hooks-B-YcyJ5E.cjs +0 -2
- package/build/context.hooks-B-YcyJ5E.cjs.map +0 -1
- package/build/context.hooks-B9dsW2kz.js +0 -117
- package/build/context.hooks-B9dsW2kz.js.map +0 -1
- package/build/context.hooks-Bi7spFak.cjs +0 -2
- package/build/context.hooks-Bi7spFak.cjs.map +0 -1
- package/build/context.hooks-BnHnPV_i.js +0 -49
- package/build/context.hooks-BnHnPV_i.js.map +0 -1
- package/build/context.hooks-CDnjxy35.cjs +0 -2
- package/build/context.hooks-CDnjxy35.cjs.map +0 -1
- package/build/context.hooks-DDD8ffJI.cjs +0 -2
- package/build/context.hooks-DDD8ffJI.cjs.map +0 -1
- package/build/context.hooks-Df0m0Voe.js +0 -13
- package/build/context.hooks-Df0m0Voe.js.map +0 -1
- package/build/context.hooks-DjafkFMD.cjs +0 -2
- package/build/context.hooks-DjafkFMD.cjs.map +0 -1
- package/build/context.hooks-DpwnIiRj.cjs +0 -2
- package/build/context.hooks-DpwnIiRj.cjs.map +0 -1
- package/build/context.hooks-HEeFGka7.js +0 -13
- package/build/context.hooks-HEeFGka7.js.map +0 -1
- package/build/context.hooks-NDk5ehgk.js +0 -13
- package/build/context.hooks-NDk5ehgk.js.map +0 -1
- package/build/context.hooks-oclt34zD.js +0 -68
- package/build/context.hooks-oclt34zD.js.map +0 -1
- package/build/functions.cjs.js +0 -2
- package/build/functions.cjs.js.map +0 -1
- package/build/functions.es.js +0 -50
- package/build/functions.es.js.map +0 -1
- package/build/index.cjs.js.map +0 -1
- package/build/index.es.js.map +0 -1
- package/build/jsx-runtime-C6yv_9g1.cjs +0 -11
- package/build/jsx-runtime-C6yv_9g1.cjs.map +0 -1
- package/build/jsx-runtime-DZS36FSE.js +0 -316
- package/build/jsx-runtime-DZS36FSE.js.map +0 -1
- package/build/motion-DrSN18V7.cjs +0 -2
- package/build/motion-DrSN18V7.cjs.map +0 -1
- package/build/motion-K7hUU4gL.js +0 -85
- package/build/motion-K7hUU4gL.js.map +0 -1
- package/build/style-BfuEu91g.js +0 -176
- package/build/style-BfuEu91g.js.map +0 -1
- package/build/style-Drq-Q1Im.cjs +0 -136
- package/build/style-Drq-Q1Im.cjs.map +0 -1
- package/build/style-add.cjs.js +0 -2
- package/build/style-add.cjs.js.map +0 -1
- package/build/style-add.d.ts +0 -88
- package/build/style-add.es.js +0 -17
- package/build/style-add.es.js.map +0 -1
- package/build/style-error.cjs.js +0 -2
- package/build/style-error.cjs.js.map +0 -1
- package/build/style-error.d.ts +0 -99
- package/build/style-error.es.js +0 -7
- package/build/style-error.es.js.map +0 -1
- package/build/style-fRZ6xrVp.cjs +0 -10
- package/build/style-fRZ6xrVp.cjs.map +0 -1
- package/build/style-motion.cjs.js.map +0 -1
- package/build/style-motion.es.js.map +0 -1
- package/build/style-plT9Ah7t.js +0 -33
- package/build/style-plT9Ah7t.js.map +0 -1
- package/build/style-sx.cjs.js +0 -2
- package/build/style-sx.cjs.js.map +0 -1
- package/build/style-sx.d.ts +0 -33
- package/build/style-sx.es.js +0 -5
- package/build/style-sx.es.js.map +0 -1
- package/build/style-theme.cjs.js +0 -2
- package/build/style-theme.cjs.js.map +0 -1
- package/build/style-theme.d.ts +0 -293
- package/build/style-theme.es.js +0 -16
- package/build/style-theme.es.js.map +0 -1
- package/build/types.cjs.js +0 -2
- package/build/types.cjs.js.map +0 -1
- package/build/types.d.ts +0 -27
- package/build/types.es.js +0 -2
- package/build/types.es.js.map +0 -1
- package/build/use-BF8VW4MA.cjs +0 -16
- package/build/use-BF8VW4MA.cjs.map +0 -1
- package/build/use-Bp8UVw4Y.js +0 -16
- package/build/use-Bp8UVw4Y.js.map +0 -1
- package/build/use-C7vngeRk.js +0 -882
- package/build/use-C7vngeRk.js.map +0 -1
- package/build/use-DdGWsOBo.js +0 -1577
- package/build/use-DdGWsOBo.js.map +0 -1
- package/build/use-IhzeVumv.cjs +0 -2
- package/build/use-IhzeVumv.cjs.map +0 -1
- package/build/use-zW3LuRc_.cjs +0 -2
- package/build/use-zW3LuRc_.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-D7EyxR2l.js","names":["memo","memo","React"],"sources":["../node_modules/@tanstack/virtual-core/dist/esm/utils.js","../node_modules/@tanstack/virtual-core/dist/esm/index.js","../node_modules/@tanstack/react-virtual/dist/esm/index.js","../src/components/select/component.tsx","../node_modules/moment/dist/moment.js","../src/components/select/component.examples.tsx"],"sourcesContent":["function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n let isInitial = true;\n function memoizedFunction() {\n var _a, _b, _c;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result);\n }\n isInitial = false;\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollState = null;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.now = () => {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();\n };\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n const node = entry.target;\n const index = this.indexFromElement(node);\n if (!node.isConnected) {\n this.observer.unobserve(node);\n return;\n }\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(\n index,\n this.options.measureElement(node, entry, this)\n );\n }\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n laneAssignmentMode: \"estimate\",\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n if (this.scrollState) {\n this.scheduleScrollReconcile();\n }\n this.maybeNotify();\n })\n );\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n }\n };\n this.rafId = null;\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n this.options.laneAssignmentMode\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMeasuredCacheIndexes = [];\n }\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n laneLastIndex[item.lane] = m;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n const shouldCacheLane = laneAssignmentMode === \"estimate\" || itemSizeCache.has(key);\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin;\n } else {\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n if (this.options.lanes > 1 && shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n laneLastIndex[lane] = i;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this.shouldMeasureDuringScroll = (index) => {\n var _a;\n if (!this.scrollState || this.scrollState.behavior !== \"smooth\") {\n return true;\n }\n const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);\n if (scrollIndex !== void 0 && this.range) {\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2)\n );\n const minIndex = Math.max(0, scrollIndex - bufferSize);\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize\n );\n return index >= minIndex && index <= maxIndex;\n }\n return true;\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key2) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key2);\n }\n });\n return;\n }\n const index = this.indexFromElement(node);\n const key = this.options.getItemKey(index);\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if ((!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, void 0, this));\n }\n };\n this.resizeItem = (index, size) => {\n var _a;\n const item = this.measurementsCache[index];\n if (!item) return;\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (((_a = this.scrollState) == null ? void 0 : _a.behavior) !== \"smooth\" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments)) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getMaxScrollOffset = () => {\n if (!this.scrollElement) return 0;\n if (\"scrollHeight\" in this.scrollElement) {\n return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;\n } else {\n const doc = this.scrollElement.document.documentElement;\n return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight;\n }\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n if (!this.scrollElement) return 0;\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getMaxScrollOffset();\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n const item = this.measurementsCache[index];\n if (!item) return;\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n if (align === \"end\" && index === this.options.count - 1) {\n return [this.getMaxScrollOffset(), align];\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior = \"auto\" } = {}) => {\n const offset = this.getOffsetForAlignment(toOffset, align);\n const now = this.now();\n this.scrollState = {\n index: null,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollToIndex = (index, {\n align: initialAlign = \"auto\",\n behavior = \"auto\"\n } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const offsetInfo = this.getOffsetForIndex(index, initialAlign);\n if (!offsetInfo) {\n return;\n }\n const [offset, align] = offsetInfo;\n const now = this.now();\n this.scrollState = {\n index,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollBy = (delta, { behavior = \"auto\" } = {}) => {\n const offset = this.getScrollOffset() + delta;\n const now = this.now();\n this.scrollState = {\n index: null,\n align: \"start\",\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null;\n return;\n }\n if (this.rafId != null) return;\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null;\n this.reconcileScroll();\n });\n }\n reconcileScroll() {\n if (!this.scrollState) return;\n const el = this.scrollElement;\n if (!el) return;\n const MAX_RECONCILE_MS = 5e3;\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null;\n return;\n }\n const offsetInfo = this.scrollState.index != null ? this.getOffsetForIndex(this.scrollState.index, this.scrollState.align) : void 0;\n const targetOffset = offsetInfo ? offsetInfo[0] : this.scrollState.lastTargetOffset;\n const STABLE_FRAMES = 1;\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n this.scrollState.stableFrames++;\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n this.scrollState = null;\n return;\n }\n } else {\n this.scrollState.stableFrames = 0;\n if (targetChanged) {\n this.scrollState.lastTargetOffset = targetOffset;\n this.scrollState.behavior = \"auto\";\n this._scrollToOffset(targetOffset, {\n adjustments: void 0,\n behavior: \"auto\"\n });\n }\n }\n this.scheduleScrollReconcile();\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase({\n useFlushSync = true,\n ...options\n}) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (useFlushSync && sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","/** biome-ignore-all lint/a11y/noNoninteractiveTabindex: <explanation> */\n/** biome-ignore-all lint/a11y/useKeyWithClickEvents: <explanation> */\nimport { Button } from '@local/components/button';\nimport { ErrorMessage } from '@local/components/error';\nimport { Icon } from '@local/components/icon';\nimport { Popover, usePopover } from '@local/components/popover';\nimport { TextArea } from '@local/components/textarea';\nimport { Typography } from '@local/components/typography';\nimport { useMergeRefs } from '@local/hooks/use-merge-refs';\nimport { useTypographyStyles } from '@local/hooks/use-typography-styles';\nimport { CSS_CLASS, CSS_VARS, CSS_VARS_RAW, EXTRA_VALUE } from '@local/styles/utils';\nimport { setClasses, setStyles } from '@local/styles/utils/functions';\n\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { KeyboardEvent, memo, Ref, useCallback, useMemo, useRef } from 'react';\n\nimport { IContainerDropdownListOption, IContainerSelectListOption, ISelect, ISelectItem } from './component.types';\n\nconst DEFAULT_LABEL_SELECT_ALL = 'Select all option';\nconst DEFAULT_LABEL_PLACEHOLDER = 'Select an option';\nconst DEFAULT_LABEL_EMPTY_OPTION = 'No options available';\nconst DEFAULT_LABEL_AND_MORE = (count: number) => `+${count} more`;\nconst DEFAULT_LABEL_ADD_OPTION = (value: string) => `Add \"${value}\" option`;\n\nconst DEFAULT_MAX_VIEW_SELECT = 2;\nconst DEFAULT_MAX_VIEW_DROPDOWN = 5;\nconst DEFAULT_MIN_VIEW_DROPDOWN = 1;\nconst DEFAULT_OVERSCAN = 1;\n\nexport const Select = <T extends object & ISelectItem>(props: ISelect<T>) => {\n const sizeHeight = useMemo(() => CSS_VARS.sizeValue[props.size].height, [props.size]);\n const sizePadding = useMemo(() => CSS_VARS.sizeValue[props.size].padding, [props.size]);\n const sizeRadius = useMemo(() => CSS_VARS.sizeValue[props.size].radius, [props.size]);\n\n const {\n isOpen,\n close,\n open,\n refReference: refReferencePopover,\n refFloating: refFloatingPopover,\n floatingStyles,\n toggle,\n } = usePopover({\n isFocusTrap: true,\n placement: 'bottom-start',\n offset: sizePadding,\n mode: 'independence',\n isClickOutside: true,\n isWidthAsContent: true,\n isDisabled: props?.isDisabled,\n onBlur: props.onBlur,\n onFocus: props.onFocus,\n });\n const refTextArea = useRef<HTMLTextAreaElement>(null);\n const refDropdownList = useRef<HTMLDivElement>(null);\n\n const refReference = useMergeRefs([props.refReference, refReferencePopover]);\n const refFloating = useMergeRefs([props.refFloating, refFloatingPopover]);\n\n const labelSelectAll = useMemo(() => props.labelSelectAll ?? DEFAULT_LABEL_SELECT_ALL, [props.labelSelectAll]);\n const labelPlaceholder = useMemo(() => props.labelPlaceholder ?? DEFAULT_LABEL_PLACEHOLDER, [props.labelPlaceholder]);\n const labelEmptyOption = useMemo(\n () => props.labelEmptyOption ?? DEFAULT_LABEL_EMPTY_OPTION,\n [props.labelEmptyOption],\n );\n const labelAndMore = useMemo(() => props.labelAndMore ?? DEFAULT_LABEL_AND_MORE, [props.labelAndMore]);\n const labelAddOption = useMemo(() => props.labelAddOption ?? DEFAULT_LABEL_ADD_OPTION, [props.labelAddOption]);\n\n const maxViewSelect = useMemo(() => props.maxViewSelect ?? DEFAULT_MAX_VIEW_SELECT, [props.maxViewSelect]);\n const maxViewDropdown = useMemo(() => props.maxViewDropdown ?? DEFAULT_MAX_VIEW_DROPDOWN, [props.maxViewDropdown]);\n const minViewDropdown = useMemo(() => props.minViewDropdown ?? DEFAULT_MIN_VIEW_DROPDOWN, [props.minViewDropdown]);\n\n const isAll = useMemo(\n () => props.value.length === props.option.length || props.value.length === props.optionAllLength,\n [props.option.length, props.optionAllLength, props.value.length],\n );\n const isHaveOption = useMemo(() => !!props.option.length, [props.option.length]);\n const isHaveValue = useMemo(() => !!props.value.length, [props.value.length]);\n const isShowAddOption = useMemo(\n () => props.valueSearch && props.isShowAddOption,\n [props.valueSearch, props.isShowAddOption],\n );\n\n const optionsLength = useMemo(() => {\n if (props.isNotShowDisabledOptions) {\n return props.option.filter((option) => !option.isDisabled).length;\n } else {\n return props.option.length;\n }\n }, [props.option, props.isNotShowDisabledOptions]);\n\n const heightDropdownList = useMemo(() => {\n let result = 0;\n result =\n sizeHeight *\n (optionsLength < maxViewDropdown\n ? optionsLength < minViewDropdown\n ? optionsLength\n : optionsLength\n : maxViewDropdown);\n result =\n result +\n (optionsLength < maxViewDropdown\n ? optionsLength < minViewDropdown\n ? (optionsLength - 1) * (sizePadding / 2.8)\n : (optionsLength - 1) * (sizePadding / 2.8)\n : (maxViewDropdown - 1) * (sizePadding / 2.8));\n return result;\n }, [sizeHeight, optionsLength, maxViewDropdown, minViewDropdown, sizePadding]);\n\n const heightPopover = useMemo(() => {\n const selectAll = props.isShowSelectAll && isHaveOption ? sizeHeight : 0;\n const selectNoOption = !isHaveOption ? sizeHeight : 0;\n const selectList = isHaveOption ? heightDropdownList : 0;\n const selectAdd = isShowAddOption ? sizeHeight : 0;\n const selectSearch = props.isSearch ? sizeHeight : 0;\n const sum =\n (selectAll !== 0 ? 1 : 0) +\n (selectNoOption !== 0 ? 1 : 0) +\n (selectList !== 0 ? 1 : 0) +\n (selectAdd !== 0 ? 1 : 0) +\n (selectSearch !== 0 ? 1 : 0);\n const gap = sum <= 1 ? 0 : (sum - 1) * (sizePadding / 2.8);\n const padding = (sizePadding / 4) * 2;\n const result = selectAll + selectNoOption + selectList + selectAdd + selectSearch + padding + gap;\n return result;\n }, [\n props.isShowSelectAll,\n sizeHeight,\n isHaveOption,\n sizePadding,\n heightDropdownList,\n isShowAddOption,\n props.isSearch,\n ]);\n\n const isValueMoreMaxViewSelect = useMemo(\n () => props.value.length > maxViewSelect,\n [maxViewSelect, props.value.length],\n );\n const isShowIconSearchClear = useMemo(\n () => props.isShowIconSearchClear && props.valueSearch,\n [props.isShowIconSearchClear, props.valueSearch],\n );\n const isShowButtonList = useMemo(\n () => isShowIconSearchClear || props.isShowIconToggle || (props.isShowIconFetching && props.isFetching),\n [isShowIconSearchClear, props.isShowIconToggle, props.isShowIconFetching, props.isFetching],\n );\n const isShowScroll = useMemo(() => optionsLength > maxViewDropdown, [maxViewDropdown, optionsLength]);\n const isSelectedItem = useCallback(\n (option: T): boolean => {\n return isAll || props.value.some((val) => val.value === option.value);\n },\n [isAll, props.value],\n );\n const isShowDropdownSettingsList = useMemo(\n () => isShowAddOption || (props.isShowSelectAll && isHaveOption) || !isHaveOption,\n [isHaveOption, isShowAddOption, props.isShowSelectAll],\n );\n const listVirtualizer = useVirtualizer({\n count: optionsLength,\n estimateSize: props.getEstimateSize ? props.getEstimateSize : () => sizeHeight,\n getScrollElement: () => refDropdownList.current,\n overscan: DEFAULT_OVERSCAN,\n paddingEnd: 0,\n gap: sizePadding / 2.8,\n });\n\n const onClick = useCallback(\n (option: T) => {\n let newValues: T[] = [];\n const optionValue = option.value;\n\n const findIndex = (val: T) => val.value === optionValue;\n const index = props.value.findIndex(findIndex);\n const isFind = index !== -1;\n\n if (props.isMulti) {\n if (isFind) {\n newValues = [...props.value.slice(0, index), ...props.value.slice(index + 1)];\n } else {\n newValues = [...props.value, option];\n }\n } else {\n if (isFind && !props.isStayValueAfterSelect) {\n newValues = [...props.value.slice(0, index), ...props.value.slice(index + 1)];\n } else {\n newValues = [option];\n }\n }\n props.onChange(newValues);\n if (props.isOnClickOptionClose) {\n close();\n }\n },\n [close, props],\n );\n const onClickAll = useCallback(() => {\n props.onChangeAll?.(isAll ? [] : props.option, !isAll);\n if (props.isOnClickOptionClose) {\n close();\n }\n }, [close, isAll, props]);\n // const onClear = useCallback(() => {\n // props.onChange([]);\n // }, [props]);\n const onClearSearch = useCallback(() => {\n props.onChangeSearch?.('');\n }, [props]);\n const onScroll = useCallback(\n (containerRefElement?: HTMLDivElement | null) => {\n if (containerRefElement) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n if (scrollHeight - scrollTop - clientHeight < heightDropdownList && !props.isFetching && props.fetchNextPage) {\n props.fetchNextPage();\n }\n }\n },\n [heightDropdownList, props],\n );\n const onAddOption = useCallback(\n (value: string) => {\n props.onAddOption?.(value);\n props.onChangeSearch?.('');\n },\n [props],\n );\n\n const { className: classNameTypography, style: styleTypography } = useTypographyStyles({\n sx: {\n variant: EXTRA_VALUE.sizeToController[props.size],\n weight: props.isBold ? '700' : '400',\n height: '1',\n ...props?.sxTypography,\n },\n });\n\n const { className: classNameWrapper, style: styleWrapper } = useMemo(() => {\n const className = setClasses([\n CSS_CLASS.component.select.wrapper,\n CSS_CLASS.control[\n props.isDisabled ? 'none' : (props.control ?? (isOpen ? 'boxShadowSelect' : 'boxShadowOnlyHover'))\n ],\n CSS_CLASS.transition.color,\n isShowScroll && CSS_CLASS.component.select.isShowScroll,\n props.isCenter && CSS_CLASS.component.select.isCenter,\n props.isWrapSelectOption && CSS_CLASS.component.select.isWrapSelectOption,\n props.isClearWhenClickSelectListOption && CSS_CLASS.component.select.isClearWhenClickSelectListOption,\n props.isOnlyColorInSelectListOption && CSS_CLASS.component.select.isOnlyColorInSelectListOption,\n props.error?.isError && CSS_CLASS.isError,\n props.className,\n ]);\n\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.select.background] = CSS_VARS.genre.select[props.genre].background.index;\n vars[CSS_VARS_RAW.component.select.color] = CSS_VARS.genre.select[props.genre].color.index;\n vars[CSS_VARS_RAW.component.select.borderColor] = CSS_VARS.genre.select[props.genre].border.index;\n vars[CSS_VARS_RAW.component.select.borderColorSelect] = CSS_VARS.genre.select[props.genre].border.select;\n\n vars[CSS_VARS_RAW.component.select.backgroundChecked] = CSS_VARS.genre.select[props.genre].background.select;\n vars[CSS_VARS_RAW.component.select.borderColorChecked] = CSS_VARS.genre.select[props.genre].border.select;\n\n vars[CSS_VARS_RAW.component.select.height] = CSS_VARS.size[props.size].height;\n vars[CSS_VARS_RAW.component.select.padding] = CSS_VARS.size[props.size].padding;\n vars[CSS_VARS_RAW.component.select.borderRadius] = CSS_VARS.size[props.size].radius;\n\n vars[CSS_VARS_RAW.component.select.backgroundInput] = CSS_VARS.genre.input[props.genre].background;\n vars[CSS_VARS_RAW.component.select.colorInput] = CSS_VARS.genre.input[props.genre].color;\n vars[CSS_VARS_RAW.component.select.borderColorInput] = CSS_VARS.genre.input[props.genre].border;\n\n const style = setStyles([Object.keys(vars).length ? vars : undefined, props.style]);\n\n return { className, style };\n }, [\n props.className,\n props.style,\n props.genre,\n props.isDisabled,\n props.size,\n props.control,\n isOpen,\n props.error?.isError,\n isShowScroll,\n props.isCenter,\n props.isClearWhenClickSelectListOption,\n props.isOnlyColorInSelectListOption,\n props.isWrapSelectOption,\n ]);\n\n const { className: classNamePopover, style: stylePopover } = useMemo(() => {\n const className = setClasses([\n CSS_CLASS.transition.color,\n isShowScroll && CSS_CLASS.component.select.isShowScroll,\n props.isCenter && CSS_CLASS.component.select.isCenter,\n props.classNamePopover,\n ]);\n\n const vars: Record<string, string> = {};\n\n vars[CSS_VARS_RAW.component.select.background] = CSS_VARS.genre.select[props.genre].background.index;\n vars[CSS_VARS_RAW.component.select.color] = CSS_VARS.genre.select[props.genre].color.index;\n vars[CSS_VARS_RAW.component.select.borderColor] = CSS_VARS.genre.select[props.genre].border.index;\n vars[CSS_VARS_RAW.component.select.borderColorSelect] = CSS_VARS.genre.select[props.genre].border.select;\n\n vars[CSS_VARS_RAW.component.select.backgroundChecked] = CSS_VARS.genre.select[props.genre].background.select;\n vars[CSS_VARS_RAW.component.select.borderColorChecked] = CSS_VARS.genre.select[props.genre].border.select;\n\n vars[CSS_VARS_RAW.component.select.height] = CSS_VARS.size[props.size].height;\n vars[CSS_VARS_RAW.component.select.padding] = CSS_VARS.size[props.size].padding;\n vars[CSS_VARS_RAW.component.select.borderRadius] = CSS_VARS.size[props.size].radius;\n\n vars[CSS_VARS_RAW.component.select.backgroundInput] = CSS_VARS.genre.input[props.genre].background;\n vars[CSS_VARS_RAW.component.select.backgroundOption] = CSS_VARS.genre.input[props.genre].backgroundOption;\n vars[CSS_VARS_RAW.component.select.colorInput] = CSS_VARS.genre.input[props.genre].color;\n vars[CSS_VARS_RAW.component.select.borderColorInput] = CSS_VARS.genre.input[props.genre].border;\n\n const style = setStyles([\n Object.keys(vars).length ? vars : undefined,\n {\n background: CSS_VARS.genre.popover[props.genre].background,\n borderRadius: `${sizeRadius}px`,\n padding: '0px',\n maxHeight: `${heightPopover}px`,\n boxSizing: 'content-box',\n },\n props.stylePopover,\n ]);\n\n return { className, style };\n }, [\n props.genre,\n props.size,\n isShowScroll,\n heightPopover,\n sizeRadius,\n props.isCenter,\n props.classNamePopover,\n props.stylePopover,\n ]);\n return (\n <>\n <div\n tabIndex={0}\n className={classNameWrapper}\n style={styleWrapper}\n ref={refReference as Ref<HTMLDivElement | null>}\n onMouseDown={(e) => {\n e.preventDefault();\n toggle();\n }}\n onFocus={() => {\n // При фокусе через Tab/клавиатуру открываем select\n if (!isOpen) {\n open();\n }\n }}\n >\n {isHaveValue && (props.isShowSelectAllLabel ? !isAll : true) ? (\n <ul\n className={CSS_CLASS.component.select.list}\n tabIndex={-1}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.preventDefault();\n }}\n >\n {props.value.map((value, index) => {\n if (index >= maxViewSelect) return null;\n\n const isChecked = isSelectedItem(value);\n return (\n <SelectListOption\n key={`${value.value}-${index}`}\n isChecked={isChecked}\n onClick={() => {\n if (props.isClearWhenClickSelectListOption) {\n onClick(value);\n }\n if (props.isToggleWhenClickSelectListOption) {\n toggle();\n }\n }}\n item={value}\n genre={props.genre}\n size={props.size}\n isOnlyColorInSelectListOption={props.isOnlyColorInSelectListOption}\n isClearWhenClickSelectListOption={props.isClearWhenClickSelectListOption}\n isWrapSelectOption={props.isWrapSelectOption}\n isCenter={props.isCenter}\n className={classNameTypography}\n style={styleTypography}\n />\n );\n })}\n </ul>\n ) : null}\n {isHaveValue && (props.isShowSelectAllLabel ? isAll : false) ? (\n <Typography\n style={{\n padding: `${sizePadding / 2.8}px 0px ${sizePadding / 2.8}px ${sizePadding / 2.8}px`,\n }}\n sx={{ size: 16, line: 1, isNoUserSelect: true }}\n >\n {labelSelectAll}\n </Typography>\n ) : null}\n {!isHaveValue ? (\n <Typography\n style={{\n color: CSS_VARS.genre.select[props.genre].placeholder.index,\n padding: `${sizePadding / 2.8}px 0px ${sizePadding / 2.8}px ${sizePadding / 2.8}px`,\n }}\n sx={{ size: 16, line: 1, isNoUserSelect: true }}\n >\n {labelPlaceholder}\n </Typography>\n ) : null}\n {isValueMoreMaxViewSelect && isHaveValue && (props.isShowSelectAllLabel ? !isAll : true) ? (\n <Typography\n style={{\n padding: `${sizePadding / 2.8}px 0px ${sizePadding / 2.8}px ${sizePadding / 2.8}px`,\n }}\n sx={{ size: 16, line: 1, isNoUserSelect: true }}\n >\n {labelAndMore(props.value.length - maxViewSelect)}\n </Typography>\n ) : null}\n {isShowButtonList ? (\n <div\n className={CSS_CLASS.component.select.listButton}\n onMouseDown={(e) => {\n e.preventDefault();\n }}\n >\n {props.isShowIconToggle && (\n <Button\n genre={props.genre}\n isOnlyIcon\n size='small'\n isWidthAsHeight\n isFullSize\n isFullRadius\n isHiddenBorder\n icons={[{ name: 'Select', type: 'id', size: 'large' }]}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n />\n )}\n {props.isShowIconFetching && props.isFetching && (\n <Button\n tabIndex={-1}\n genre={props.genre}\n size='small'\n isWidthAsHeight\n isFullSize\n isFullRadius\n isHiddenBorder\n control='none'\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Icon type={'loading'} name={'Line'} size={props.size} />\n </Button>\n )}\n </div>\n ) : null}\n </div>\n <Popover\n style={stylePopover}\n className={classNamePopover}\n size={props.size}\n genre={props.genre}\n floatingStyles={floatingStyles}\n ref={refFloating}\n isOpen={isOpen}\n control='boxShadowSelect'\n isDisabledBoxShadow\n >\n <div\n tabIndex={-1}\n ref={refDropdownList}\n className={CSS_CLASS.component.select.dropdownListWrapper}\n onScroll={(e) => onScroll(e.target as HTMLDivElement)}\n >\n {isShowDropdownSettingsList && (\n <ul style={{ position: 'sticky', top: 0, zIndex: 1 }} className={CSS_CLASS.component.select.dropdownList}>\n {props.isSearch && (\n <li\n className={setClasses([\n CSS_CLASS.component.select.dropdownListOption,\n CSS_CLASS.component.select.dropdownListOptionIsBorder,\n CSS_CLASS.control.boxShadow,\n classNameTypography,\n ])}\n tabIndex={0}\n onClick={() => {\n refTextArea.current?.focus();\n }}\n style={setStyles([{ position: 'relative', minHeight: `${sizeHeight}px` }, styleTypography])}\n >\n <TextArea\n className={CSS_CLASS.component.select.textarea}\n ref={refTextArea}\n genre={props.genre}\n size={props.size}\n minRows={1}\n maxRows={5}\n isAutoHeight\n onChange={(value) => {\n props?.onChangeSearch?.(value);\n }}\n onMouseDown={(e) => {\n e.stopPropagation();\n }}\n value={props.valueSearch}\n placeholder={labelPlaceholder}\n control='none'\n />\n {isShowIconSearchClear && (\n <Button\n genre={props.genre}\n size='small'\n isWidthAsHeight\n isFullSize\n isFullRadius\n isHiddenBorder\n isOnlyIcon\n icons={[{ name: 'Close', type: 'id', size: 'large' }]}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onClearSearch();\n }}\n />\n )}\n </li>\n )}\n {isShowAddOption ? (\n <li\n className={setClasses([\n CSS_CLASS.component.select.dropdownListOption,\n CSS_CLASS.component.select.dropdownListOptionIsBorder,\n CSS_CLASS.control.boxShadow,\n classNameTypography,\n ])}\n tabIndex={0}\n onClick={() => props.valueSearch && onAddOption(props.valueSearch)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && props.valueSearch) onAddOption(props.valueSearch);\n }}\n style={setStyles([{ position: 'relative', minHeight: `${sizeHeight}px` }, styleTypography])}\n >\n {props.valueSearch && labelAddOption(props.valueSearch)}\n </li>\n ) : null}\n {props.isShowSelectAll && isHaveOption ? (\n <li\n className={setClasses([\n CSS_CLASS.component.select.dropdownListOption,\n isAll && CSS_CLASS.component.select.dropdownListOptionIsChecked,\n CSS_CLASS.control.boxShadow,\n classNameTypography,\n ])}\n tabIndex={0}\n onClick={() => onClickAll()}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onClickAll();\n }}\n style={setStyles([{ position: 'relative', minHeight: `${sizeHeight}px` }, styleTypography])}\n >\n {labelSelectAll}\n {props.isShowDropdownOptionIcon && (\n <Icon\n className={CSS_CLASS.component.select.dropdownListOptionIcon}\n tabIndex={-1}\n size={props.size}\n type='checkbox'\n name='Arrow'\n />\n )}\n </li>\n ) : null}\n {!isHaveOption ? (\n <li\n tabIndex={-1}\n className={setClasses([CSS_CLASS.component.select.dropdownListOption, classNameTypography])}\n style={setStyles([{ position: 'relative', minHeight: `${sizeHeight}px` }, styleTypography])}\n >\n <Typography sx={{ size: 16, line: 1 }}>{labelEmptyOption}</Typography>\n </li>\n ) : null}\n </ul>\n )}\n\n {isHaveOption ? (\n <ul\n tabIndex={-1}\n style={{ height: `${listVirtualizer.getTotalSize()}px`, minHeight: `${heightDropdownList}px` }}\n className={CSS_CLASS.component.select.dropdownList}\n >\n {listVirtualizer.getVirtualItems().map((virtualRow) => {\n const item = props.option[virtualRow.index];\n const isChecked = isSelectedItem(item);\n return (\n <DropdownListOption\n key={virtualRow.index}\n virtualRowSize={virtualRow.size}\n virtualRowStart={virtualRow.start}\n isChecked={isChecked}\n onClick={() => onClick(item)}\n item={item}\n genre={props.genre}\n size={props.size}\n className={classNameTypography}\n style={styleTypography}\n isCenter={props.isCenter}\n isShowScroll={isShowScroll}\n isShowDropdownOptionIcon={props.isShowDropdownOptionIcon}\n />\n );\n })}\n </ul>\n ) : null}\n </div>\n </Popover>\n {props?.error?.isError && (\n <ErrorMessage\n size={props?.error.size ?? props.size}\n sxTypography={{ size: 16, weight: '400', ...props?.error.sxTypography }}\n {...props.error}\n />\n )}\n </>\n );\n};\n\nconst ContainerDropdownListOption = <T extends object & ISelectItem>(props: IContainerDropdownListOption<T>) => {\n const handleKeyDown = (event: KeyboardEvent<HTMLLIElement>) => {\n if (props.item.isDisabled) return;\n if (event.key === 'Enter') {\n props.onClick();\n }\n };\n\n return (\n <li\n className={setClasses([\n CSS_CLASS.component.select.dropdownListOption,\n props.isChecked && CSS_CLASS.component.select.dropdownListOptionIsChecked,\n props.item.isDisabled && CSS_CLASS.component.select.dropdownListOptionIsDisabled,\n CSS_CLASS.control[props.item.isDisabled ? 'none' : 'boxShadow'],\n props.className,\n ])}\n tabIndex={0}\n onClick={() => {\n !props.item.isDisabled && props.onClick();\n }}\n onKeyDown={handleKeyDown}\n style={setStyles([\n {\n position: 'absolute',\n height: `${props.virtualRowSize}px`,\n transform: `translateY(${props.virtualRowStart}px)`,\n },\n props.style,\n ])}\n >\n {props.item.label}\n {props.isShowDropdownOptionIcon && (\n <Icon\n className={CSS_CLASS.component.select.dropdownListOptionIcon}\n color='inherit'\n tabIndex={-1}\n type='checkbox'\n name='Arrow'\n size={props.size}\n />\n )}\n </li>\n );\n};\n\nconst ContainerSelectListOption = <T extends object & ISelectItem>(props: IContainerSelectListOption<T>) => {\n return (\n <li\n className={setClasses([\n CSS_CLASS.component.select.listOption,\n props.isChecked && CSS_CLASS.component.select.listOptionIsChecked,\n props.className,\n ])}\n style={props.style}\n tabIndex={-1}\n onClick={props.onClick}\n >\n <Typography sx={{ size: 16, height: 1 }}>{props.item.label}</Typography>\n </li>\n );\n};\n\nexport const DropdownListOption = memo(ContainerDropdownListOption);\nexport const SelectListOption = memo(ContainerSelectListOption);\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\nvar hookCallback;\n\nfunction hooks() {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback(callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\nfunction isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n}\n\nfunction isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n}\n\nfunction map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nfunction isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n}\n\nfunction createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\nfunction copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n}\n\nfunction warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n}\n\nfunction set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n};\n\nfunction calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n}\n\nvar formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n};\n\nfunction longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate() {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal(number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n};\n\nfunction relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n}\n\nfunction pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n};\n\nfunction normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n};\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nvar match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\nregexes = {};\n\nfunction addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nfunction absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\nvar tokens = {};\n\nfunction addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\nvar YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear() {\n return isLeapYear(this.year());\n}\n\nfunction makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n}\n\nfunction set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n}\n\n// MOMENTS\n\nfunction stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\nfunction stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction mod(n, x) {\n return ((n % x) + x) % x;\n}\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nfunction daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// PARSING\n\naddRegexToken('M', match1to2, match1to2NoLeadingZero);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\nfunction localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n}\n\nfunction localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n}\n\nfunction getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n}\n\nfunction monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n}\n\nfunction monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// PARSING\n\naddRegexToken('w', match1to2, match1to2NoLeadingZero);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2, match1to2NoLeadingZero);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n);\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek() {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear() {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\nfunction shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n}\n\nvar defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\nfunction localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n}\n\nfunction localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n}\n\nfunction localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nfunction weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n}\n\nfunction weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n}\n\nfunction weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n}\n\nfunction computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n});\n\nfunction meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// PARSING\n\nfunction matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2, match1to2HasZero);\naddRegexToken('h', match1to2, match1to2NoLeadingZero);\naddRegexToken('k', match1to2, match1to2NoLeadingZero);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\nfunction localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n};\n\n// internal storage for locale config files\nvar locales = {},\n localeFamilies = {},\n globalLocale;\n\nfunction commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n}\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n}\n\nfunction isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n}\n\nfunction loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys(locales);\n}\n\nfunction checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n// date from iso format\nfunction configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\nfunction extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n}\n\nfunction untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n}\n\nfunction checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n}\n\nfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n}\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n}\n\n// date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n}\n\nfunction meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n}\n\nfunction createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +new Date();\n};\n\nvar ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n];\n\nfunction isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\nfunction isValid$1() {\n return this._isValid;\n}\n\nfunction createInvalid$1() {\n return createDuration(NaN);\n}\n\nfunction Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration(obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\n// FORMATTING\n\nfunction offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\nfunction createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\nfunction isString(input) {\n return typeof input === 'string' || input instanceof String;\n}\n\n// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\nfunction isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n}\n\nfunction isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n}\n\nfunction isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n}\n\nfunction isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n}\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n}\n\nfunction calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n}\n\nfunction clone() {\n return new Moment(this);\n}\n\nfunction isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n}\n\nfunction isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n}\n\nfunction isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n}\n\nfunction isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n}\n\nfunction diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData() {\n return this._locale;\n}\n\nvar MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n// actual modulo - handles negative numbers (for dates before 1970):\nfunction mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n}\n\nfunction localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n}\n\nfunction utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n}\n\nfunction startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n}\n\nfunction endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n}\n\nfunction valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n}\n\nfunction unix() {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate() {\n return new Date(this.valueOf());\n}\n\nfunction toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n}\n\nfunction toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n}\n\nfunction toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2() {\n return isValid(this);\n}\n\nfunction parsingFlags() {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt() {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n}\n\naddFormatToken('N', 0, 0, 'eraAbbr');\naddFormatToken('NN', 0, 0, 'eraAbbr');\naddFormatToken('NNN', 0, 0, 'eraAbbr');\naddFormatToken('NNNN', 0, 0, 'eraName');\naddFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\naddFormatToken('y', ['y', 1], 'yo', 'eraYear');\naddFormatToken('y', ['yy', 2], 0, 'eraYear');\naddFormatToken('y', ['yyy', 3], 0, 'eraYear');\naddFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\naddRegexToken('N', matchEraAbbr);\naddRegexToken('NN', matchEraAbbr);\naddRegexToken('NNN', matchEraAbbr);\naddRegexToken('NNNN', matchEraName);\naddRegexToken('NNNNN', matchEraNarrow);\n\naddParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n);\n\naddRegexToken('y', matchUnsigned);\naddRegexToken('yy', matchUnsigned);\naddRegexToken('yyy', matchUnsigned);\naddRegexToken('yyyy', matchUnsigned);\naddRegexToken('yo', matchEraYearOrdinal);\n\naddParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\naddParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n});\n\nfunction localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n}\n\nfunction localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n}\n\nfunction localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n}\n\nfunction getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n}\n\nfunction getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n}\n\nfunction getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n}\n\nfunction getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n}\n\nfunction erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n}\n\nfunction erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n}\n\nfunction erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n}\n\nfunction matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n}\n\nfunction matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n}\n\nfunction matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n}\n\nfunction matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n}\n\nfunction computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n);\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n}\n\nfunction getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n}\n\nfunction getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n}\n\nfunction getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// PARSING\n\naddRegexToken('D', match1to2, match1to2NoLeadingZero);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// PARSING\n\naddRegexToken('m', match1to2, match1to2HasZero);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// PARSING\n\naddRegexToken('s', match1to2, match1to2HasZero);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token, getSetMillisecond;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n\ngetSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nif (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n}\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\nproto.eraName = getEraName;\nproto.eraNarrow = getEraNarrow;\nproto.eraAbbr = getEraAbbr;\nproto.eraYear = getEraYear;\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\nproto.quarter = proto.quarters = getSetQuarter;\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.weeksInWeekYear = getWeeksInWeekYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\nproto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\nproto.hour = proto.hours = getSetHour;\nproto.minute = proto.minutes = getSetMinute;\nproto.second = proto.seconds = getSetSecond;\nproto.millisecond = proto.milliseconds = getSetMillisecond;\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\nproto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n);\nproto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n);\nproto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n);\nproto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n);\nproto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n);\n\nfunction createUnix(input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat(string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\nproto$1.eras = localeEras;\nproto$1.erasParse = localeErasParse;\nproto$1.erasConvertYear = localeErasConvertYear;\nproto$1.erasAbbrRegex = erasAbbrRegex;\nproto$1.erasNameRegex = erasNameRegex;\nproto$1.erasNarrowRegex = erasNarrowRegex;\n\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n});\n\n// Side effect imports\n\nhooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n);\nhooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n);\n\nvar mathAbs = Math.abs;\n\nfunction abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n}\n\nfunction monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n}\n\nfunction as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n}\n\nfunction makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\nfunction clone$1() {\n return createDuration(this);\n}\n\nfunction get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n}\n\nvar milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\nfunction weeks() {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n\nfunction humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction sign(x) {\n return (x > 0) - (x < 0) || +x;\n}\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asQuarters = asQuarters;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.clone = clone$1;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\nproto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n);\nproto$2.lang = lang;\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n//! moment.js\n\nhooks.version = '2.30.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\n// currently HTML5 input type only supports 24-hour formats\nhooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n};\n\nexport default hooks;\n","import { LIST_LANGUAGE } from '@local/cores/consts';\n\nimport moment from 'moment';\nimport { FC, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Select } from './component';\nimport { ISelectLanguage, ISelectLanguageOption, ISelectMonth, ISelectMonths, ISelectYear } from './component.types';\n\nexport const SelectLanguage: FC<ISelectLanguage> = (props) => {\n const { value, onChange } = props;\n\n const option = LIST_LANGUAGE;\n\n const [viewOption] = useState<ISelectLanguageOption[]>(option);\n\n const handleSelectChange = (value: ISelectLanguageOption[]) => {\n if (value.length === 0) {\n onChange(null);\n } else {\n onChange(value[0].value.toString());\n }\n };\n const valueLocal = useMemo(() => {\n const findOption = option.find((e) => e.value === value);\n if (!findOption) return [];\n return [findOption];\n }, [value]);\n\n return (\n <Select<ISelectLanguageOption> {...props} option={viewOption} value={valueLocal} onChange={handleSelectChange} />\n );\n};\nexport const SelectMonth: FC<ISelectMonth> = (props) => {\n const { value, onChange, dateMin, dateMax, monthsLocale, isShortLabel } = props;\n\n const year = moment(value).utc().year();\n\n const option = useMemo(() => {\n return monthsLocale.map((monthItem) => {\n const monthIndex = moment().month(monthItem.value).month();\n\n const monthMoment = moment.utc().year(year).month(monthIndex).startOf('month');\n const isDisabled =\n (dateMin && monthMoment.isBefore(moment.utc(dateMin), 'month')) ||\n (dateMax && monthMoment.isAfter(moment.utc(dateMax), 'month'));\n\n return {\n value: monthMoment.valueOf(),\n label: isShortLabel ? monthItem.localeShort : monthItem.localeLong,\n placeholder: isShortLabel ? monthItem.localeShort : monthItem.localeLong,\n search: `${monthItem.localeLong.toLowerCase()}, ${monthIndex + 1}`,\n isDisabled: !!isDisabled,\n monthValue: monthItem.value,\n };\n });\n }, [monthsLocale, year, dateMin, dateMax, isShortLabel]);\n\n const handleSelectChange = (value: ISelectLanguageOption[]) => {\n if (value.length === 0) onChange(null);\n onChange(+value[0].value);\n };\n const valueLocal = useMemo(() => {\n const findOption = option.find((e) => e.value === value);\n if (!findOption) return [];\n return [findOption];\n }, [value, option]);\n\n return <Select<ISelectLanguageOption> {...props} option={option} value={valueLocal} onChange={handleSelectChange} />;\n};\nexport const SelectMonths: FC<ISelectMonths> = (props) => {\n const { value, onChange, dateMin, dateMax, monthsLocale, isShortLabel } = props;\n\n const year = moment(value).utc().year();\n\n const option = useMemo(() => {\n return monthsLocale.map((monthItem) => {\n const monthIndex = moment().month(monthItem.value).month();\n\n const monthMoment = moment.utc().year(year).month(monthIndex).startOf('month');\n const isDisabled =\n (dateMin && monthMoment.isBefore(moment.utc(dateMin), 'month')) ||\n (dateMax && monthMoment.isAfter(moment.utc(dateMax), 'month'));\n\n return {\n value: monthMoment.valueOf(),\n label: isShortLabel ? monthItem.localeShort : monthItem.localeLong,\n placeholder: isShortLabel ? monthItem.localeShort : monthItem.localeLong,\n search: `${monthItem.localeLong.toLowerCase()}, ${monthIndex + 1}`,\n isDisabled: !!isDisabled,\n monthValue: monthItem.value,\n };\n });\n }, [monthsLocale, year, dateMin, dateMax, isShortLabel]);\n const [viewOption, setViewOption] = useState<ISelectLanguageOption[]>(option);\n\n useEffect(() => {\n setViewOption(option);\n }, [option]);\n const handleSelectChange = (value: ISelectLanguageOption[]) => {\n if (value.length === 0) onChange([]);\n onChange(value.map((e) => +e.value));\n };\n const valueLocal = useMemo(() => {\n if (!value || value.length === 0) return [];\n return value.map((val) => option.find((opt) => opt.value === val)).filter(Boolean) as ISelectLanguageOption[];\n }, [value, option]);\n\n const [search, setSearch] = useState<string>('');\n const handleSearchChange = useCallback(\n (value: string) => {\n setSearch(value);\n\n if (value === '') {\n setViewOption(option);\n } else {\n const filteredOptions = option.filter((option) =>\n Object.values(option).some((field) => field?.toString().toLowerCase().includes(value.toLowerCase())),\n );\n setViewOption(filteredOptions);\n }\n },\n [option],\n );\n return (\n <Select<ISelectLanguageOption>\n {...props}\n valueSearch={search}\n onChangeSearch={handleSearchChange}\n optionAllLength={option.length}\n option={viewOption}\n minViewDropdown={1}\n isMulti\n value={valueLocal}\n onChange={handleSelectChange}\n onChangeAll={(_value, isAll) => {\n if (isAll) {\n onChange(viewOption.map((e) => +e.value));\n } else {\n onChange([]);\n }\n }}\n />\n );\n};\nexport const SelectYear: FC<ISelectYear> = (props) => {\n const { value, onChange, dateMin, dateMax, sortOrder = 'desc' } = props;\n\n const startYear = moment(dateMin).utc().year();\n const endYear = moment(dateMax).utc().year();\n\n const option = useMemo(() => {\n const yearArray = Array.from({ length: endYear - startYear + 1 }, (_, index) => {\n const year = startYear + index;\n return {\n value: moment().year(year).utc().startOf('year').valueOf(),\n label: moment().year(year).utc().format('YYYY'),\n placeholder: moment().year(year).utc().format('YYYY'),\n search: `${moment().year(year).utc().format('YYYY').toLowerCase()}`,\n };\n });\n\n return sortOrder === 'asc'\n ? yearArray.sort((a, b) => a.value - b.value)\n : yearArray.sort((a, b) => b.value - a.value);\n }, [endYear, startYear, sortOrder]);\n\n const handleSelectChange = (value: ISelectLanguageOption[]) => {\n if (value.length === 0) onChange(null);\n onChange(+value[0].value);\n };\n const valueLocal = useMemo(() => {\n const findOption = option.find((e) => e.value === value);\n if (!findOption) return [];\n return [findOption];\n }, [value, option]);\n\n return <Select<ISelectLanguageOption> {...props} option={option} value={valueLocal} onChange={handleSelectChange} />;\n};\n"],"x_google_ignoreList":[0,1,2,4],"mappings":"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"}
|