ngx-bootstrap 3.0.1 → 3.1.4
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/CHANGELOG.md +298 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +24 -8
- package/accordion/accordion-group.component.d.ts +3 -3
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js +264 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +2 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -0
- package/accordion/esm2015/accordion-group.component.js +140 -0
- package/accordion/esm2015/accordion.component.js +88 -0
- package/accordion/esm2015/accordion.config.js +35 -0
- package/accordion/esm2015/accordion.module.js +36 -0
- package/accordion/esm2015/ngx-bootstrap-accordion.js +10 -0
- package/accordion/esm2015/public_api.js +10 -0
- package/accordion/esm5/accordion-group.component.js +157 -0
- package/accordion/esm5/accordion.component.js +99 -0
- package/accordion/esm5/accordion.config.js +37 -0
- package/accordion/esm5/accordion.module.js +43 -0
- package/accordion/esm5/ngx-bootstrap-accordion.js +10 -0
- package/accordion/esm5/public_api.js +10 -0
- package/accordion/fesm2015/ngx-bootstrap-accordion.js +222 -0
- package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -0
- package/accordion/fesm5/ngx-bootstrap-accordion.js +255 -0
- package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -0
- package/accordion/ngx-bootstrap-accordion.d.ts +4 -0
- package/accordion/ngx-bootstrap-accordion.metadata.json +1 -0
- package/accordion/package.json +19 -0
- package/accordion/{index.d.ts → public_api.d.ts} +0 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.js +209 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js +2 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -0
- package/alert/esm2015/alert.component.js +145 -0
- package/alert/esm2015/alert.config.js +50 -0
- package/alert/esm2015/alert.module.js +35 -0
- package/alert/esm2015/ngx-bootstrap-alert.js +10 -0
- package/alert/esm2015/public_api.js +9 -0
- package/alert/esm5/alert.component.js +157 -0
- package/alert/esm5/alert.config.js +52 -0
- package/alert/esm5/alert.module.js +42 -0
- package/alert/esm5/ngx-bootstrap-alert.js +10 -0
- package/alert/esm5/public_api.js +9 -0
- package/alert/fesm2015/ngx-bootstrap-alert.js +153 -0
- package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -0
- package/alert/fesm5/ngx-bootstrap-alert.js +171 -0
- package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -0
- package/alert/ngx-bootstrap-alert.d.ts +4 -0
- package/alert/ngx-bootstrap-alert.metadata.json +1 -0
- package/alert/package.json +19 -0
- package/alert/{index.d.ts → public_api.d.ts} +0 -0
- package/bundles/ngx-bootstrap.es2015.js +20178 -12836
- package/bundles/ngx-bootstrap.es2015.js.map +1 -1
- package/bundles/ngx-bootstrap.umd.js +179 -21213
- package/bundles/ngx-bootstrap.umd.js.map +1 -1
- package/bundles/ngx-bootstrap.umd.min.js +1 -64
- package/bundles/ngx-bootstrap.umd.min.js.map +1 -1
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js +479 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +2 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -0
- package/buttons/button-checkbox.directive.d.ts +10 -10
- package/buttons/button-radio-group.directive.d.ts +9 -10
- package/buttons/button-radio.directive.d.ts +12 -12
- package/buttons/esm2015/button-checkbox.directive.js +146 -0
- package/buttons/esm2015/button-radio-group.directive.js +90 -0
- package/buttons/esm2015/button-radio.directive.js +200 -0
- package/buttons/esm2015/buttons.module.js +33 -0
- package/buttons/esm2015/ngx-bootstrap-buttons.js +13 -0
- package/buttons/esm2015/public_api.js +10 -0
- package/buttons/esm5/button-checkbox.directive.js +184 -0
- package/buttons/esm5/button-radio-group.directive.js +105 -0
- package/buttons/esm5/button-radio.directive.js +239 -0
- package/buttons/esm5/buttons.module.js +40 -0
- package/buttons/esm5/ngx-bootstrap-buttons.js +13 -0
- package/buttons/esm5/public_api.js +10 -0
- package/buttons/fesm2015/ngx-bootstrap-buttons.js +376 -0
- package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -0
- package/buttons/fesm5/ngx-bootstrap-buttons.js +471 -0
- package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -0
- package/buttons/ngx-bootstrap-buttons.d.ts +7 -0
- package/buttons/ngx-bootstrap-buttons.metadata.json +1 -0
- package/buttons/package.json +19 -0
- package/buttons/{index.d.ts → public_api.d.ts} +0 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js +567 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +2 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -0
- package/carousel/carousel.component.d.ts +3 -7
- package/carousel/esm2015/carousel.component.js +372 -0
- package/carousel/esm2015/carousel.config.js +59 -0
- package/carousel/esm2015/carousel.module.js +36 -0
- package/carousel/esm2015/ngx-bootstrap-carousel.js +10 -0
- package/carousel/esm2015/public_api.js +10 -0
- package/carousel/esm2015/slide.component.js +81 -0
- package/carousel/esm5/carousel.component.js +495 -0
- package/carousel/esm5/carousel.config.js +61 -0
- package/carousel/esm5/carousel.module.js +43 -0
- package/carousel/esm5/ngx-bootstrap-carousel.js +10 -0
- package/carousel/esm5/public_api.js +10 -0
- package/carousel/esm5/slide.component.js +86 -0
- package/carousel/fesm2015/ngx-bootstrap-carousel.js +423 -0
- package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -0
- package/carousel/fesm5/ngx-bootstrap-carousel.js +556 -0
- package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -0
- package/carousel/ngx-bootstrap-carousel.d.ts +4 -0
- package/carousel/ngx-bootstrap-carousel.metadata.json +1 -0
- package/carousel/package.json +19 -0
- package/carousel/{index.d.ts → public_api.d.ts} +0 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js +8428 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +2 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -0
- package/chronos/esm2015/create/check-overflow.js +39 -0
- package/chronos/esm2015/create/clone.js +13 -0
- package/chronos/esm2015/create/date-from-array.js +38 -0
- package/chronos/esm2015/create/from-anything.js +131 -0
- package/chronos/esm2015/create/from-array.js +149 -0
- package/chronos/esm2015/create/from-object.js +25 -0
- package/chronos/esm2015/create/from-string-and-array.js +46 -0
- package/chronos/esm2015/create/from-string-and-format.js +120 -0
- package/chronos/esm2015/create/from-string.js +268 -0
- package/chronos/esm2015/create/local.js +23 -0
- package/chronos/esm2015/create/parsing-flags.js +38 -0
- package/chronos/esm2015/create/parsing.types.js +146 -0
- package/chronos/esm2015/create/valid.js +60 -0
- package/chronos/esm2015/duration/bubble.js +64 -0
- package/chronos/esm2015/duration/constructor.js +182 -0
- package/chronos/esm2015/duration/create.js +141 -0
- package/chronos/esm2015/duration/humanize.js +109 -0
- package/chronos/esm2015/duration/valid.js +54 -0
- package/chronos/esm2015/format/format.js +67 -0
- package/chronos/esm2015/format.js +71 -0
- package/chronos/esm2015/i18n/ar.js +155 -0
- package/chronos/esm2015/i18n/bg.js +101 -0
- package/chronos/esm2015/i18n/cs.js +215 -0
- package/chronos/esm2015/i18n/da.js +56 -0
- package/chronos/esm2015/i18n/de.js +80 -0
- package/chronos/esm2015/i18n/en-gb.js +72 -0
- package/chronos/esm2015/i18n/es-do.js +118 -0
- package/chronos/esm2015/i18n/es-us.js +111 -0
- package/chronos/esm2015/i18n/es.js +117 -0
- package/chronos/esm2015/i18n/fi.js +119 -0
- package/chronos/esm2015/i18n/fr.js +87 -0
- package/chronos/esm2015/i18n/gl.js +117 -0
- package/chronos/esm2015/i18n/he.js +129 -0
- package/chronos/esm2015/i18n/hi.js +150 -0
- package/chronos/esm2015/i18n/hu.js +140 -0
- package/chronos/esm2015/i18n/id.js +100 -0
- package/chronos/esm2015/i18n/it.js +79 -0
- package/chronos/esm2015/i18n/ja.js +95 -0
- package/chronos/esm2015/i18n/ko.js +82 -0
- package/chronos/esm2015/i18n/lt.js +155 -0
- package/chronos/esm2015/i18n/mn.js +108 -0
- package/chronos/esm2015/i18n/nb.js +59 -0
- package/chronos/esm2015/i18n/nl-be.js +97 -0
- package/chronos/esm2015/i18n/nl.js +97 -0
- package/chronos/esm2015/i18n/pl.js +156 -0
- package/chronos/esm2015/i18n/pt-br.js +65 -0
- package/chronos/esm2015/i18n/ro.js +73 -0
- package/chronos/esm2015/i18n/ru.js +218 -0
- package/chronos/esm2015/i18n/sk.js +193 -0
- package/chronos/esm2015/i18n/sl.js +202 -0
- package/chronos/esm2015/i18n/sv.js +74 -0
- package/chronos/esm2015/i18n/th.js +75 -0
- package/chronos/esm2015/i18n/tr.js +95 -0
- package/chronos/esm2015/i18n/zh-cn.js +136 -0
- package/chronos/esm2015/index.js +7 -0
- package/chronos/esm2015/locale/calendar.js +14 -0
- package/chronos/esm2015/locale/locale.class.js +841 -0
- package/chronos/esm2015/locale/locale.defaults.js +46 -0
- package/chronos/esm2015/locale/locales.js +272 -0
- package/chronos/esm2015/moment/add-subtract.js +61 -0
- package/chronos/esm2015/moment/calendar.js +81 -0
- package/chronos/esm2015/moment/diff.js +88 -0
- package/chronos/esm2015/moment/min-max.js +50 -0
- package/chronos/esm2015/ngx-bootstrap-chronos.js +11 -0
- package/chronos/esm2015/parse/regex.js +72 -0
- package/chronos/esm2015/parse/token.js +52 -0
- package/chronos/esm2015/public_api.js +50 -0
- package/chronos/esm2015/test/chain.js +1212 -0
- package/chronos/esm2015/types.js +76 -0
- package/chronos/esm2015/units/aliases.js +53 -0
- package/chronos/esm2015/units/constants.js +16 -0
- package/chronos/esm2015/units/day-of-month.js +39 -0
- package/chronos/esm2015/units/day-of-week.js +183 -0
- package/chronos/esm2015/units/day-of-year.js +55 -0
- package/chronos/esm2015/units/hour.js +153 -0
- package/chronos/esm2015/units/index.js +24 -0
- package/chronos/esm2015/units/millisecond.js +74 -0
- package/chronos/esm2015/units/minute.js +31 -0
- package/chronos/esm2015/units/month.js +75 -0
- package/chronos/esm2015/units/offset.js +227 -0
- package/chronos/esm2015/units/priorities.js +31 -0
- package/chronos/esm2015/units/quarter.js +57 -0
- package/chronos/esm2015/units/second.js +31 -0
- package/chronos/esm2015/units/timestamp.js +36 -0
- package/chronos/esm2015/units/timezone.js +33 -0
- package/chronos/esm2015/units/week-calendar-utils.js +94 -0
- package/chronos/esm2015/units/week-year.js +175 -0
- package/chronos/esm2015/units/week.js +83 -0
- package/chronos/esm2015/units/year.js +81 -0
- package/chronos/esm2015/utils/abs-ceil.js +13 -0
- package/chronos/esm2015/utils/abs-round.js +13 -0
- package/chronos/esm2015/utils/compare-arrays.js +27 -0
- package/chronos/esm2015/utils/date-compare.js +108 -0
- package/chronos/esm2015/utils/date-getters.js +157 -0
- package/chronos/esm2015/utils/date-setters.js +147 -0
- package/chronos/esm2015/utils/defaults.js +22 -0
- package/chronos/esm2015/utils/start-end-of.js +74 -0
- package/chronos/esm2015/utils/type-checks.js +114 -0
- package/chronos/esm2015/utils/zero-fill.js +21 -0
- package/chronos/esm2015/utils.js +21 -0
- package/chronos/esm5/create/check-overflow.js +39 -0
- package/chronos/esm5/create/clone.js +13 -0
- package/chronos/esm5/create/date-from-array.js +44 -0
- package/chronos/esm5/create/from-anything.js +131 -0
- package/chronos/esm5/create/from-array.js +149 -0
- package/chronos/esm5/create/from-object.js +25 -0
- package/chronos/esm5/create/from-string-and-array.js +46 -0
- package/chronos/esm5/create/from-string-and-format.js +120 -0
- package/chronos/esm5/create/from-string.js +268 -0
- package/chronos/esm5/create/local.js +23 -0
- package/chronos/esm5/create/parsing-flags.js +38 -0
- package/chronos/esm5/create/parsing.types.js +146 -0
- package/chronos/esm5/create/valid.js +60 -0
- package/chronos/esm5/duration/bubble.js +64 -0
- package/chronos/esm5/duration/constructor.js +205 -0
- package/chronos/esm5/duration/create.js +143 -0
- package/chronos/esm5/duration/humanize.js +109 -0
- package/chronos/esm5/duration/valid.js +54 -0
- package/chronos/esm5/format/format.js +68 -0
- package/chronos/esm5/format.js +73 -0
- package/chronos/esm5/i18n/ar.js +155 -0
- package/chronos/esm5/i18n/bg.js +101 -0
- package/chronos/esm5/i18n/cs.js +215 -0
- package/chronos/esm5/i18n/da.js +56 -0
- package/chronos/esm5/i18n/de.js +80 -0
- package/chronos/esm5/i18n/en-gb.js +72 -0
- package/chronos/esm5/i18n/es-do.js +118 -0
- package/chronos/esm5/i18n/es-us.js +111 -0
- package/chronos/esm5/i18n/es.js +117 -0
- package/chronos/esm5/i18n/fi.js +119 -0
- package/chronos/esm5/i18n/fr.js +87 -0
- package/chronos/esm5/i18n/gl.js +117 -0
- package/chronos/esm5/i18n/he.js +129 -0
- package/chronos/esm5/i18n/hi.js +150 -0
- package/chronos/esm5/i18n/hu.js +140 -0
- package/chronos/esm5/i18n/id.js +100 -0
- package/chronos/esm5/i18n/it.js +79 -0
- package/chronos/esm5/i18n/ja.js +95 -0
- package/chronos/esm5/i18n/ko.js +82 -0
- package/chronos/esm5/i18n/lt.js +155 -0
- package/chronos/esm5/i18n/mn.js +108 -0
- package/chronos/esm5/i18n/nb.js +59 -0
- package/chronos/esm5/i18n/nl-be.js +97 -0
- package/chronos/esm5/i18n/nl.js +97 -0
- package/chronos/esm5/i18n/pl.js +156 -0
- package/chronos/esm5/i18n/pt-br.js +65 -0
- package/chronos/esm5/i18n/ro.js +73 -0
- package/chronos/esm5/i18n/ru.js +218 -0
- package/chronos/esm5/i18n/sk.js +193 -0
- package/chronos/esm5/i18n/sl.js +202 -0
- package/chronos/esm5/i18n/sv.js +74 -0
- package/chronos/esm5/i18n/th.js +75 -0
- package/chronos/esm5/i18n/tr.js +95 -0
- package/chronos/esm5/i18n/zh-cn.js +136 -0
- package/chronos/esm5/index.js +7 -0
- package/chronos/esm5/locale/calendar.js +14 -0
- package/chronos/esm5/locale/locale.class.js +996 -0
- package/chronos/esm5/locale/locale.defaults.js +46 -0
- package/chronos/esm5/locale/locales.js +272 -0
- package/chronos/esm5/moment/add-subtract.js +61 -0
- package/chronos/esm5/moment/calendar.js +83 -0
- package/chronos/esm5/moment/diff.js +89 -0
- package/chronos/esm5/moment/min-max.js +58 -0
- package/chronos/esm5/ngx-bootstrap-chronos.js +11 -0
- package/chronos/esm5/parse/regex.js +72 -0
- package/chronos/esm5/parse/token.js +52 -0
- package/chronos/esm5/public_api.js +50 -0
- package/chronos/esm5/test/chain.js +1506 -0
- package/chronos/esm5/types.js +76 -0
- package/chronos/esm5/units/aliases.js +53 -0
- package/chronos/esm5/units/constants.js +16 -0
- package/chronos/esm5/units/day-of-month.js +39 -0
- package/chronos/esm5/units/day-of-week.js +188 -0
- package/chronos/esm5/units/day-of-year.js +55 -0
- package/chronos/esm5/units/hour.js +153 -0
- package/chronos/esm5/units/index.js +24 -0
- package/chronos/esm5/units/millisecond.js +74 -0
- package/chronos/esm5/units/minute.js +31 -0
- package/chronos/esm5/units/month.js +75 -0
- package/chronos/esm5/units/offset.js +231 -0
- package/chronos/esm5/units/priorities.js +31 -0
- package/chronos/esm5/units/quarter.js +58 -0
- package/chronos/esm5/units/second.js +31 -0
- package/chronos/esm5/units/timestamp.js +36 -0
- package/chronos/esm5/units/timezone.js +33 -0
- package/chronos/esm5/units/week-calendar-utils.js +94 -0
- package/chronos/esm5/units/week-year.js +178 -0
- package/chronos/esm5/units/week.js +85 -0
- package/chronos/esm5/units/year.js +81 -0
- package/chronos/esm5/utils/abs-ceil.js +13 -0
- package/chronos/esm5/utils/abs-round.js +13 -0
- package/chronos/esm5/utils/compare-arrays.js +27 -0
- package/chronos/esm5/utils/date-compare.js +112 -0
- package/chronos/esm5/utils/date-getters.js +165 -0
- package/chronos/esm5/utils/date-setters.js +147 -0
- package/chronos/esm5/utils/defaults.js +22 -0
- package/chronos/esm5/utils/start-end-of.js +74 -0
- package/chronos/esm5/utils/type-checks.js +114 -0
- package/chronos/esm5/utils/zero-fill.js +21 -0
- package/chronos/esm5/utils.js +21 -0
- package/chronos/fesm2015/ngx-bootstrap-chronos.js +8176 -0
- package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -0
- package/chronos/fesm5/ngx-bootstrap-chronos.js +8383 -0
- package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -0
- package/chronos/i18n/bg.d.ts +2 -0
- package/chronos/i18n/lt.d.ts +2 -0
- package/chronos/i18n/nb.d.ts +2 -0
- package/chronos/i18n/sk.d.ts +2 -0
- package/chronos/index.d.ts +1 -7
- package/chronos/ngx-bootstrap-chronos.d.ts +5 -0
- package/chronos/ngx-bootstrap-chronos.metadata.json +1 -0
- package/chronos/package.json +19 -0
- package/chronos/public_api.d.ts +46 -0
- package/chronos/units/day-of-month.d.ts +1 -1
- package/chronos/units/day-of-week.d.ts +1 -0
- package/chronos/units/day-of-year.d.ts +1 -0
- package/chronos/units/hour.d.ts +1 -1
- package/chronos/units/millisecond.d.ts +1 -1
- package/chronos/units/minute.d.ts +1 -1
- package/chronos/units/month.d.ts +1 -0
- package/chronos/units/offset.d.ts +1 -0
- package/chronos/units/quarter.d.ts +1 -0
- package/chronos/units/second.d.ts +1 -1
- package/chronos/units/timestamp.d.ts +1 -1
- package/chronos/units/timezone.d.ts +1 -0
- package/chronos/units/week-year.d.ts +1 -0
- package/chronos/units/week.d.ts +1 -0
- package/chronos/units/year.d.ts +1 -0
- package/chronos/utils/date-compare.d.ts +2 -0
- package/chronos/utils/type-checks.d.ts +1 -1
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js +178 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js +2 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -0
- package/collapse/esm2015/collapse.directive.js +150 -0
- package/collapse/esm2015/collapse.module.js +31 -0
- package/collapse/esm2015/ngx-bootstrap-collapse.js +10 -0
- package/collapse/esm2015/public_api.js +8 -0
- package/collapse/esm5/collapse.directive.js +167 -0
- package/collapse/esm5/collapse.module.js +38 -0
- package/collapse/esm5/ngx-bootstrap-collapse.js +10 -0
- package/collapse/esm5/public_api.js +8 -0
- package/collapse/fesm2015/ngx-bootstrap-collapse.js +147 -0
- package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -0
- package/collapse/fesm5/ngx-bootstrap-collapse.js +169 -0
- package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -0
- package/collapse/ngx-bootstrap-collapse.d.ts +4 -0
- package/collapse/ngx-bootstrap-collapse.metadata.json +1 -0
- package/collapse/package.json +19 -0
- package/collapse/{index.d.ts → public_api.d.ts} +0 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +508 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +2 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -0
- package/component-loader/component-loader.class.d.ts +11 -5
- package/component-loader/component-loader.factory.d.ts +1 -2
- package/component-loader/esm2015/bs-component-ref.class.js +17 -0
- package/component-loader/esm2015/component-loader.class.js +402 -0
- package/component-loader/esm2015/component-loader.factory.js +66 -0
- package/component-loader/esm2015/content-ref.class.js +34 -0
- package/component-loader/esm2015/listen-options.model.js +28 -0
- package/component-loader/esm2015/ngx-bootstrap-component-loader.js +10 -0
- package/component-loader/esm2015/public_api.js +10 -0
- package/component-loader/esm5/bs-component-ref.class.js +27 -0
- package/component-loader/esm5/component-loader.class.js +468 -0
- package/component-loader/esm5/component-loader.factory.js +75 -0
- package/component-loader/esm5/content-ref.class.js +31 -0
- package/component-loader/esm5/listen-options.model.js +28 -0
- package/component-loader/esm5/ngx-bootstrap-component-loader.js +10 -0
- package/component-loader/esm5/public_api.js +10 -0
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +426 -0
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -0
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js +498 -0
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -0
- package/component-loader/listen-options.model.d.ts +1 -0
- package/component-loader/ngx-bootstrap-component-loader.d.ts +4 -0
- package/component-loader/ngx-bootstrap-component-loader.metadata.json +1 -0
- package/component-loader/package.json +19 -0
- package/component-loader/public_api.d.ts +4 -0
- package/datepicker/base/bs-datepicker-container.d.ts +3 -1
- package/datepicker/bs-datepicker-input.directive.d.ts +3 -3
- package/datepicker/bs-datepicker.component.d.ts +13 -3
- package/datepicker/bs-datepicker.config.d.ts +14 -1
- package/datepicker/bs-datepicker.css +14 -5
- package/datepicker/bs-datepicker.css.map +2 -2
- package/datepicker/bs-datepicker.module.d.ts +0 -1
- package/datepicker/bs-datepicker.scss +23 -10
- package/datepicker/bs-daterangepicker-input.directive.d.ts +3 -3
- package/datepicker/bs-daterangepicker.component.d.ts +4 -3
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +4334 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +2 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -0
- package/datepicker/datepicker.component.d.ts +5 -5
- package/datepicker/engine/calc-days-calendar.d.ts +1 -1
- package/datepicker/engine/flag-days-calendar.d.ts +2 -1
- package/datepicker/engine/flag-months-calendar.d.ts +1 -1
- package/datepicker/engine/flag-years-calendar.d.ts +1 -1
- package/datepicker/engine/format-days-calendar.d.ts +1 -1
- package/datepicker/engine/format-months-calendar.d.ts +1 -1
- package/datepicker/engine/format-years-calendar.d.ts +1 -1
- package/datepicker/engine/view-mode.d.ts +2 -2
- package/datepicker/esm2015/base/bs-datepicker-container.js +109 -0
- package/datepicker/esm2015/bs-datepicker-input.directive.js +208 -0
- package/datepicker/esm2015/bs-datepicker.component.js +307 -0
- package/datepicker/esm2015/bs-datepicker.config.js +117 -0
- package/datepicker/esm2015/bs-datepicker.module.js +90 -0
- package/datepicker/esm2015/bs-daterangepicker-input.directive.js +224 -0
- package/datepicker/esm2015/bs-daterangepicker.component.js +293 -0
- package/datepicker/esm2015/bs-daterangepicker.config.js +29 -0
- package/datepicker/esm2015/bs-locale.service.js +61 -0
- package/datepicker/esm2015/date-formatter.js +18 -0
- package/datepicker/esm2015/datepicker-inner.component.js +451 -0
- package/datepicker/esm2015/datepicker.component.js +326 -0
- package/datepicker/esm2015/datepicker.config.js +74 -0
- package/datepicker/esm2015/datepicker.module.js +52 -0
- package/datepicker/esm2015/daypicker.component.js +212 -0
- package/datepicker/esm2015/engine/calc-days-calendar.js +29 -0
- package/datepicker/esm2015/engine/flag-days-calendar.js +115 -0
- package/datepicker/esm2015/engine/flag-months-calendar.js +57 -0
- package/datepicker/esm2015/engine/flag-years-calendar.js +56 -0
- package/datepicker/esm2015/engine/format-days-calendar.js +50 -0
- package/datepicker/esm2015/engine/format-months-calendar.js +29 -0
- package/datepicker/esm2015/engine/format-years-calendar.js +42 -0
- package/datepicker/esm2015/engine/view-mode.js +14 -0
- package/datepicker/esm2015/models/index.js +199 -0
- package/datepicker/esm2015/monthpicker.component.js +118 -0
- package/datepicker/esm2015/ngx-bootstrap-datepicker.js +29 -0
- package/datepicker/esm2015/public_api.js +19 -0
- package/datepicker/esm2015/reducer/_defaults.js +10 -0
- package/datepicker/esm2015/reducer/bs-datepicker.actions.js +204 -0
- package/datepicker/esm2015/reducer/bs-datepicker.effects.js +249 -0
- package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +289 -0
- package/datepicker/esm2015/reducer/bs-datepicker.state.js +87 -0
- package/datepicker/esm2015/reducer/bs-datepicker.store.js +34 -0
- package/datepicker/esm2015/themes/bs/bs-calendar-layout.component.js +39 -0
- package/datepicker/esm2015/themes/bs/bs-current-date-view.component.js +32 -0
- package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +51 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +113 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-day-decorator.directive.js +73 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-navigation-view.component.js +88 -0
- package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +133 -0
- package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +134 -0
- package/datepicker/esm2015/themes/bs/bs-months-calendar-view.component.js +104 -0
- package/datepicker/esm2015/themes/bs/bs-timepicker-view.component.js +53 -0
- package/datepicker/esm2015/themes/bs/bs-years-calendar-view.component.js +105 -0
- package/datepicker/esm2015/utils/bs-calendar-utils.js +54 -0
- package/datepicker/esm2015/utils/matrix-utils.js +39 -0
- package/datepicker/esm2015/yearpicker.component.js +122 -0
- package/datepicker/esm5/base/bs-datepicker-container.js +170 -0
- package/datepicker/esm5/bs-datepicker-input.directive.js +242 -0
- package/datepicker/esm5/bs-datepicker.component.js +368 -0
- package/datepicker/esm5/bs-datepicker.config.js +119 -0
- package/datepicker/esm5/bs-datepicker.module.js +97 -0
- package/datepicker/esm5/bs-daterangepicker-input.directive.js +263 -0
- package/datepicker/esm5/bs-daterangepicker.component.js +354 -0
- package/datepicker/esm5/bs-daterangepicker.config.js +34 -0
- package/datepicker/esm5/bs-locale.service.js +79 -0
- package/datepicker/esm5/date-formatter.js +28 -0
- package/datepicker/esm5/datepicker-inner.component.js +547 -0
- package/datepicker/esm5/datepicker.component.js +325 -0
- package/datepicker/esm5/datepicker.config.js +76 -0
- package/datepicker/esm5/datepicker.module.js +59 -0
- package/datepicker/esm5/daypicker.component.js +157 -0
- package/datepicker/esm5/engine/calc-days-calendar.js +29 -0
- package/datepicker/esm5/engine/flag-days-calendar.js +115 -0
- package/datepicker/esm5/engine/flag-months-calendar.js +57 -0
- package/datepicker/esm5/engine/flag-years-calendar.js +56 -0
- package/datepicker/esm5/engine/format-days-calendar.js +55 -0
- package/datepicker/esm5/engine/format-months-calendar.js +31 -0
- package/datepicker/esm5/engine/format-years-calendar.js +44 -0
- package/datepicker/esm5/engine/view-mode.js +14 -0
- package/datepicker/esm5/models/index.js +199 -0
- package/datepicker/esm5/monthpicker.component.js +85 -0
- package/datepicker/esm5/ngx-bootstrap-datepicker.js +29 -0
- package/datepicker/esm5/public_api.js +19 -0
- package/datepicker/esm5/reducer/_defaults.js +10 -0
- package/datepicker/esm5/reducer/bs-datepicker.actions.js +266 -0
- package/datepicker/esm5/reducer/bs-datepicker.effects.js +314 -0
- package/datepicker/esm5/reducer/bs-datepicker.reducer.js +298 -0
- package/datepicker/esm5/reducer/bs-datepicker.state.js +91 -0
- package/datepicker/esm5/reducer/bs-datepicker.store.js +40 -0
- package/datepicker/esm5/themes/bs/bs-calendar-layout.component.js +28 -0
- package/datepicker/esm5/themes/bs/bs-current-date-view.component.js +36 -0
- package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +50 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +138 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-day-decorator.directive.js +73 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-navigation-view.component.js +68 -0
- package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +158 -0
- package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +114 -0
- package/datepicker/esm5/themes/bs/bs-months-calendar-view.component.js +100 -0
- package/datepicker/esm5/themes/bs/bs-timepicker-view.component.js +37 -0
- package/datepicker/esm5/themes/bs/bs-years-calendar-view.component.js +101 -0
- package/datepicker/esm5/utils/bs-calendar-utils.js +54 -0
- package/datepicker/esm5/utils/matrix-utils.js +39 -0
- package/datepicker/esm5/yearpicker.component.js +92 -0
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +3827 -0
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -0
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js +4198 -0
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -0
- package/datepicker/models/index.d.ts +3 -1
- package/datepicker/ngx-bootstrap-datepicker.d.ts +23 -0
- package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -0
- package/datepicker/package.json +19 -0
- package/datepicker/public_api.d.ts +14 -0
- package/datepicker/reducer/_defaults.d.ts +1 -1
- package/datepicker/reducer/bs-datepicker.actions.d.ts +5 -3
- package/datepicker/reducer/bs-datepicker.effects.d.ts +3 -2
- package/datepicker/reducer/bs-datepicker.reducer.d.ts +1 -1
- package/datepicker/reducer/bs-datepicker.state.d.ts +4 -1
- package/datepicker/reducer/bs-datepicker.store.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +9 -2
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +4 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +1 -1
- package/datepicker/utils/matrix-utils.d.ts +1 -1
- package/dropdown/bs-dropdown-container.component.d.ts +3 -0
- package/dropdown/bs-dropdown-toggle.directive.d.ts +4 -2
- package/dropdown/bs-dropdown.config.d.ts +2 -0
- package/dropdown/bs-dropdown.directive.d.ts +12 -6
- package/dropdown/bs-dropdown.state.d.ts +2 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +793 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +2 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -0
- package/dropdown/esm2015/bs-dropdown-container.component.js +104 -0
- package/dropdown/esm2015/bs-dropdown-menu.directive.js +42 -0
- package/dropdown/esm2015/bs-dropdown-toggle.directive.js +109 -0
- package/dropdown/esm2015/bs-dropdown.config.js +44 -0
- package/dropdown/esm2015/bs-dropdown.directive.js +408 -0
- package/dropdown/esm2015/bs-dropdown.module.js +60 -0
- package/dropdown/esm2015/bs-dropdown.state.js +51 -0
- package/dropdown/esm2015/index.js +7 -0
- package/dropdown/esm2015/ngx-bootstrap-dropdown.js +10 -0
- package/dropdown/esm2015/public_api.js +13 -0
- package/dropdown/esm5/bs-dropdown-container.component.js +109 -0
- package/dropdown/esm5/bs-dropdown-menu.directive.js +40 -0
- package/dropdown/esm5/bs-dropdown-toggle.directive.js +132 -0
- package/dropdown/esm5/bs-dropdown.config.js +46 -0
- package/dropdown/esm5/bs-dropdown.directive.js +501 -0
- package/dropdown/esm5/bs-dropdown.module.js +69 -0
- package/dropdown/esm5/bs-dropdown.state.js +54 -0
- package/dropdown/esm5/index.js +7 -0
- package/dropdown/esm5/ngx-bootstrap-dropdown.js +10 -0
- package/dropdown/esm5/public_api.js +13 -0
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +623 -0
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -0
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js +748 -0
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -0
- package/dropdown/index.d.ts +1 -7
- package/dropdown/ngx-bootstrap-dropdown.d.ts +4 -0
- package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -0
- package/dropdown/package.json +19 -0
- package/dropdown/public_api.d.ts +7 -0
- package/esm2015/ngx-bootstrap.js +10 -0
- package/esm2015/public_api.js +31 -0
- package/esm5/ngx-bootstrap.js +10 -0
- package/esm5/public_api.js +31 -0
- package/fesm2015/ngx-bootstrap.js +35 -0
- package/fesm2015/ngx-bootstrap.js.map +1 -0
- package/fesm5/ngx-bootstrap.js +35 -0
- package/fesm5/ngx-bootstrap.js.map +1 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.js +56 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js +2 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js.map +1 -0
- package/locale/esm2015/ngx-bootstrap-locale.js +10 -0
- package/locale/esm2015/public_api.js +40 -0
- package/locale/esm5/ngx-bootstrap-locale.js +10 -0
- package/locale/esm5/public_api.js +40 -0
- package/locale/fesm2015/ngx-bootstrap-locale.js +13 -0
- package/locale/fesm2015/ngx-bootstrap-locale.js.map +1 -0
- package/locale/fesm5/ngx-bootstrap-locale.js +13 -0
- package/locale/fesm5/ngx-bootstrap-locale.js.map +1 -0
- package/locale/ngx-bootstrap-locale.d.ts +4 -0
- package/locale/ngx-bootstrap-locale.metadata.json +1 -0
- package/locale/package.json +19 -0
- package/locale/public_api.d.ts +34 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js +178 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js +2 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -0
- package/mini-ngrx/esm2015/index.js +7 -0
- package/mini-ngrx/esm2015/ngx-bootstrap-mini-ngrx.js +10 -0
- package/mini-ngrx/esm2015/public_api.js +18 -0
- package/mini-ngrx/esm2015/state.class.js +29 -0
- package/mini-ngrx/esm2015/store.class.js +81 -0
- package/mini-ngrx/esm5/index.js +7 -0
- package/mini-ngrx/esm5/ngx-bootstrap-mini-ngrx.js +10 -0
- package/mini-ngrx/esm5/public_api.js +18 -0
- package/mini-ngrx/esm5/state.class.js +35 -0
- package/mini-ngrx/esm5/store.class.js +114 -0
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js +114 -0
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js.map +1 -0
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js +144 -0
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -0
- package/mini-ngrx/index.d.ts +1 -7
- package/mini-ngrx/ngx-bootstrap-mini-ngrx.d.ts +4 -0
- package/mini-ngrx/ngx-bootstrap-mini-ngrx.metadata.json +1 -0
- package/mini-ngrx/package.json +19 -0
- package/mini-ngrx/public_api.d.ts +7 -0
- package/modal/bs-modal-ref.service.d.ts +4 -0
- package/modal/bs-modal.service.d.ts +5 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.js +1156 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js +2 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -0
- package/modal/esm2015/bs-modal-ref.service.js +46 -0
- package/modal/esm2015/bs-modal.service.js +267 -0
- package/modal/esm2015/modal-backdrop.component.js +103 -0
- package/modal/esm2015/modal-backdrop.options.js +19 -0
- package/modal/esm2015/modal-container.component.js +160 -0
- package/modal/esm2015/modal-options.class.js +92 -0
- package/modal/esm2015/modal.directive.js +459 -0
- package/modal/esm2015/modal.module.js +44 -0
- package/modal/esm2015/models/index.js +58 -0
- package/modal/esm2015/ngx-bootstrap-modal.js +11 -0
- package/modal/esm2015/public_api.js +14 -0
- package/modal/esm5/bs-modal-ref.service.js +48 -0
- package/modal/esm5/bs-modal.service.js +333 -0
- package/modal/esm5/modal-backdrop.component.js +112 -0
- package/modal/esm5/modal-backdrop.options.js +18 -0
- package/modal/esm5/modal-container.component.js +170 -0
- package/modal/esm5/modal-options.class.js +96 -0
- package/modal/esm5/modal.directive.js +580 -0
- package/modal/esm5/modal.module.js +51 -0
- package/modal/esm5/models/index.js +58 -0
- package/modal/esm5/ngx-bootstrap-modal.js +11 -0
- package/modal/esm5/public_api.js +14 -0
- package/modal/fesm2015/ngx-bootstrap-modal.js +932 -0
- package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -0
- package/modal/fesm5/ngx-bootstrap-modal.js +1142 -0
- package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -0
- package/modal/modal-container.component.d.ts +2 -2
- package/modal/modal-options.class.d.ts +5 -7
- package/modal/modal.directive.d.ts +25 -7
- package/modal/models/index.d.ts +22 -0
- package/modal/ngx-bootstrap-modal.d.ts +5 -0
- package/modal/ngx-bootstrap-modal.metadata.json +1 -0
- package/modal/package.json +19 -0
- package/modal/{index.d.ts → public_api.d.ts} +0 -0
- package/ngx-bootstrap.d.ts +4 -0
- package/ngx-bootstrap.metadata.json +1 -0
- package/package.json +30 -29
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js +815 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +2 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -0
- package/pagination/esm2015/models/index.js +62 -0
- package/pagination/esm2015/ngx-bootstrap-pagination.js +12 -0
- package/pagination/esm2015/pager.component.js +412 -0
- package/pagination/esm2015/pagination.component.js +422 -0
- package/pagination/esm2015/pagination.config.js +49 -0
- package/pagination/esm2015/pagination.module.js +35 -0
- package/pagination/esm2015/public_api.js +10 -0
- package/pagination/esm5/models/index.js +62 -0
- package/pagination/esm5/ngx-bootstrap-pagination.js +12 -0
- package/pagination/esm5/pager.component.js +475 -0
- package/pagination/esm5/pagination.component.js +485 -0
- package/pagination/esm5/pagination.config.js +51 -0
- package/pagination/esm5/pagination.module.js +42 -0
- package/pagination/esm5/public_api.js +10 -0
- package/pagination/fesm2015/ngx-bootstrap-pagination.js +685 -0
- package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -0
- package/pagination/fesm5/ngx-bootstrap-pagination.js +816 -0
- package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -0
- package/pagination/models/index.d.ts +25 -0
- package/pagination/ngx-bootstrap-pagination.d.ts +6 -0
- package/pagination/ngx-bootstrap-pagination.metadata.json +1 -0
- package/pagination/package.json +19 -0
- package/pagination/pager.component.d.ts +11 -11
- package/pagination/pagination.component.d.ts +12 -12
- package/pagination/pagination.config.d.ts +3 -2
- package/pagination/{index.d.ts → public_api.d.ts} +0 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.js +317 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js +2 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -0
- package/popover/esm2015/ngx-bootstrap-popover.js +10 -0
- package/popover/esm2015/popover-container.component.js +72 -0
- package/popover/esm2015/popover.config.js +58 -0
- package/popover/esm2015/popover.directive.js +227 -0
- package/popover/esm2015/popover.module.js +41 -0
- package/popover/esm2015/public_api.js +10 -0
- package/popover/esm5/ngx-bootstrap-popover.js +10 -0
- package/popover/esm5/popover-container.component.js +66 -0
- package/popover/esm5/popover.config.js +60 -0
- package/popover/esm5/popover.directive.js +260 -0
- package/popover/esm5/popover.module.js +48 -0
- package/popover/esm5/public_api.js +10 -0
- package/popover/fesm2015/ngx-bootstrap-popover.js +277 -0
- package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -0
- package/popover/fesm5/ngx-bootstrap-popover.js +309 -0
- package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -0
- package/popover/ngx-bootstrap-popover.d.ts +4 -0
- package/popover/ngx-bootstrap-popover.metadata.json +1 -0
- package/popover/package.json +19 -0
- package/popover/popover.directive.d.ts +3 -3
- package/popover/{index.d.ts → public_api.d.ts} +0 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js +366 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +2 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -0
- package/positioning/esm2015/ng-positioning.js +253 -0
- package/positioning/esm2015/ngx-bootstrap-positioning.js +10 -0
- package/positioning/esm2015/positioning.service.js +91 -0
- package/positioning/esm2015/public_api.js +8 -0
- package/positioning/esm5/ng-positioning.js +300 -0
- package/positioning/esm5/ngx-bootstrap-positioning.js +10 -0
- package/positioning/esm5/positioning.service.js +99 -0
- package/positioning/esm5/public_api.js +8 -0
- package/positioning/fesm2015/ngx-bootstrap-positioning.js +299 -0
- package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -0
- package/positioning/fesm5/ngx-bootstrap-positioning.js +352 -0
- package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -0
- package/positioning/ngx-bootstrap-positioning.d.ts +4 -0
- package/positioning/ngx-bootstrap-positioning.metadata.json +1 -0
- package/positioning/package.json +19 -0
- package/positioning/{index.d.ts → public_api.d.ts} +0 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +319 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +2 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -0
- package/progressbar/esm2015/bar.component.js +129 -0
- package/progressbar/esm2015/ngx-bootstrap-progressbar.js +10 -0
- package/progressbar/esm2015/progressbar.component.js +148 -0
- package/progressbar/esm2015/progressbar.config.js +41 -0
- package/progressbar/esm2015/progressbar.module.js +35 -0
- package/progressbar/esm2015/public_api.js +10 -0
- package/progressbar/esm5/bar.component.js +149 -0
- package/progressbar/esm5/ngx-bootstrap-progressbar.js +10 -0
- package/progressbar/esm5/progressbar.component.js +170 -0
- package/progressbar/esm5/progressbar.config.js +43 -0
- package/progressbar/esm5/progressbar.module.js +42 -0
- package/progressbar/esm5/public_api.js +10 -0
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +268 -0
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -0
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js +315 -0
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -0
- package/progressbar/ngx-bootstrap-progressbar.d.ts +4 -0
- package/progressbar/ngx-bootstrap-progressbar.metadata.json +1 -0
- package/progressbar/package.json +19 -0
- package/progressbar/progressbar.component.d.ts +4 -2
- package/progressbar/{index.d.ts → public_api.d.ts} +0 -0
- package/public_api.d.ts +25 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.js +243 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js +2 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -0
- package/rating/esm2015/models/index.js +28 -0
- package/rating/esm2015/ngx-bootstrap-rating.js +11 -0
- package/rating/esm2015/public_api.js +8 -0
- package/rating/esm2015/rating.component.js +210 -0
- package/rating/esm2015/rating.module.js +36 -0
- package/rating/esm5/models/index.js +28 -0
- package/rating/esm5/ngx-bootstrap-rating.js +11 -0
- package/rating/esm5/public_api.js +8 -0
- package/rating/esm5/rating.component.js +244 -0
- package/rating/esm5/rating.module.js +43 -0
- package/rating/fesm2015/ngx-bootstrap-rating.js +194 -0
- package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -0
- package/rating/fesm5/ngx-bootstrap-rating.js +233 -0
- package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -0
- package/rating/models/index.d.ts +9 -0
- package/rating/ngx-bootstrap-rating.d.ts +5 -0
- package/rating/ngx-bootstrap-rating.metadata.json +1 -0
- package/rating/package.json +19 -0
- package/rating/{index.d.ts → public_api.d.ts} +0 -0
- package/rating/rating.component.d.ts +6 -5
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/index.js +98 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/index.spec.js +37 -0
- package/schematics/ng-add/index.spec.js.map +1 -0
- package/schematics/ng-add/schema.js +10 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +16 -0
- package/schematics/utils/index.js +135 -0
- package/schematics/utils/index.js.map +1 -0
- package/schematics/utils/ng-module-imports.js +69 -0
- package/schematics/utils/ng-module-imports.js.map +1 -0
- package/schematics/utils/project-main-file.js +22 -0
- package/schematics/utils/project-main-file.js.map +1 -0
- package/schematics/utils/project-targets.js +25 -0
- package/schematics/utils/project-targets.js.map +1 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js +464 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js +2 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -0
- package/sortable/esm2015/draggable-item.js +24 -0
- package/sortable/esm2015/draggable-item.service.js +65 -0
- package/sortable/esm2015/ngx-bootstrap-sortable.js +10 -0
- package/sortable/esm2015/public_api.js +9 -0
- package/sortable/esm2015/sortable.component.js +382 -0
- package/sortable/esm2015/sortable.module.js +34 -0
- package/sortable/esm5/draggable-item.js +24 -0
- package/sortable/esm5/draggable-item.service.js +82 -0
- package/sortable/esm5/ngx-bootstrap-sortable.js +10 -0
- package/sortable/esm5/public_api.js +9 -0
- package/sortable/esm5/sortable.component.js +398 -0
- package/sortable/esm5/sortable.module.js +41 -0
- package/sortable/fesm2015/ngx-bootstrap-sortable.js +377 -0
- package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -0
- package/sortable/fesm5/ngx-bootstrap-sortable.js +414 -0
- package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -0
- package/sortable/ngx-bootstrap-sortable.d.ts +4 -0
- package/sortable/ngx-bootstrap-sortable.metadata.json +1 -0
- package/sortable/package.json +19 -0
- package/sortable/{index.d.ts → public_api.d.ts} +0 -0
- package/sortable/sortable.component.d.ts +1 -1
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js +481 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +2 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -0
- package/tabs/esm2015/ng-transclude.directive.js +61 -0
- package/tabs/esm2015/ngx-bootstrap-tabs.js +10 -0
- package/tabs/esm2015/public_api.js +12 -0
- package/tabs/esm2015/tab-heading.directive.js +39 -0
- package/tabs/esm2015/tab.directive.js +181 -0
- package/tabs/esm2015/tabs.module.js +50 -0
- package/tabs/esm2015/tabset.component.js +195 -0
- package/tabs/esm2015/tabset.config.js +32 -0
- package/tabs/esm5/ng-transclude.directive.js +65 -0
- package/tabs/esm5/ngx-bootstrap-tabs.js +10 -0
- package/tabs/esm5/public_api.js +12 -0
- package/tabs/esm5/tab-heading.directive.js +38 -0
- package/tabs/esm5/tab.directive.js +194 -0
- package/tabs/esm5/tabs.module.js +57 -0
- package/tabs/esm5/tabset.component.js +231 -0
- package/tabs/esm5/tabset.config.js +34 -0
- package/tabs/fesm2015/ngx-bootstrap-tabs.js +415 -0
- package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -0
- package/tabs/fesm5/ngx-bootstrap-tabs.js +470 -0
- package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -0
- package/tabs/ngx-bootstrap-tabs.d.ts +4 -0
- package/tabs/ngx-bootstrap-tabs.metadata.json +1 -0
- package/tabs/package.json +19 -0
- package/tabs/{index.d.ts → public_api.d.ts} +0 -0
- package/tabs/tabset.component.d.ts +3 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +1183 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +2 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -0
- package/timepicker/esm2015/models/index.js +18 -0
- package/timepicker/esm2015/ngx-bootstrap-timepicker.js +11 -0
- package/timepicker/esm2015/public_api.js +11 -0
- package/timepicker/esm2015/reducer/timepicker.actions.js +99 -0
- package/timepicker/esm2015/reducer/timepicker.reducer.js +103 -0
- package/timepicker/esm2015/reducer/timepicker.store.js +33 -0
- package/timepicker/esm2015/timepicker-controls.util.js +156 -0
- package/timepicker/esm2015/timepicker.component.js +480 -0
- package/timepicker/esm2015/timepicker.config.js +144 -0
- package/timepicker/esm2015/timepicker.models.js +82 -0
- package/timepicker/esm2015/timepicker.module.js +39 -0
- package/timepicker/esm2015/timepicker.utils.js +224 -0
- package/timepicker/esm5/models/index.js +18 -0
- package/timepicker/esm5/ngx-bootstrap-timepicker.js +11 -0
- package/timepicker/esm5/public_api.js +11 -0
- package/timepicker/esm5/reducer/timepicker.actions.js +127 -0
- package/timepicker/esm5/reducer/timepicker.reducer.js +108 -0
- package/timepicker/esm5/reducer/timepicker.store.js +39 -0
- package/timepicker/esm5/timepicker-controls.util.js +156 -0
- package/timepicker/esm5/timepicker.component.js +564 -0
- package/timepicker/esm5/timepicker.config.js +146 -0
- package/timepicker/esm5/timepicker.models.js +82 -0
- package/timepicker/esm5/timepicker.module.js +46 -0
- package/timepicker/esm5/timepicker.utils.js +227 -0
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +1006 -0
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -0
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js +1132 -0
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -0
- package/timepicker/models/index.d.ts +8 -0
- package/timepicker/ngx-bootstrap-timepicker.d.ts +5 -0
- package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -0
- package/timepicker/package.json +19 -0
- package/timepicker/{index.d.ts → public_api.d.ts} +0 -0
- package/timepicker/reducer/timepicker.actions.d.ts +1 -1
- package/timepicker/reducer/timepicker.reducer.d.ts +1 -1
- package/timepicker/reducer/timepicker.store.d.ts +1 -1
- package/timepicker/timepicker.component.d.ts +8 -7
- package/timepicker/timepicker.config.d.ts +1 -1
- package/timepicker/timepicker.utils.d.ts +1 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +546 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +2 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -0
- package/tooltip/esm2015/ngx-bootstrap-tooltip.js +10 -0
- package/tooltip/esm2015/public_api.js +10 -0
- package/tooltip/esm2015/tooltip-container.component.js +92 -0
- package/tooltip/esm2015/tooltip.config.js +49 -0
- package/tooltip/esm2015/tooltip.directive.js +419 -0
- package/tooltip/esm2015/tooltip.module.js +41 -0
- package/tooltip/esm5/ngx-bootstrap-tooltip.js +10 -0
- package/tooltip/esm5/public_api.js +10 -0
- package/tooltip/esm5/tooltip-container.component.js +82 -0
- package/tooltip/esm5/tooltip.config.js +51 -0
- package/tooltip/esm5/tooltip.directive.js +490 -0
- package/tooltip/esm5/tooltip.module.js +48 -0
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +456 -0
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -0
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js +522 -0
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -0
- package/tooltip/ngx-bootstrap-tooltip.d.ts +4 -0
- package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -0
- package/tooltip/package.json +19 -0
- package/tooltip/{index.d.ts → public_api.d.ts} +0 -0
- package/tooltip/tooltip-container.component.d.ts +4 -1
- package/tooltip/tooltip.directive.d.ts +10 -8
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +2029 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +2 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -0
- package/typeahead/esm2015/latin-map.js +833 -0
- package/typeahead/esm2015/ngx-bootstrap-typeahead.js +10 -0
- package/typeahead/esm2015/public_api.js +14 -0
- package/typeahead/esm2015/typeahead-container.component.js +336 -0
- package/typeahead/esm2015/typeahead-match.class.js +38 -0
- package/typeahead/esm2015/typeahead-options.class.js +22 -0
- package/typeahead/esm2015/typeahead-utils.js +80 -0
- package/typeahead/esm2015/typeahead.config.js +35 -0
- package/typeahead/esm2015/typeahead.directive.js +652 -0
- package/typeahead/esm2015/typeahead.module.js +41 -0
- package/typeahead/esm5/latin-map.js +833 -0
- package/typeahead/esm5/ngx-bootstrap-typeahead.js +10 -0
- package/typeahead/esm5/public_api.js +14 -0
- package/typeahead/esm5/typeahead-container.component.js +414 -0
- package/typeahead/esm5/typeahead-match.class.js +44 -0
- package/typeahead/esm5/typeahead-options.class.js +21 -0
- package/typeahead/esm5/typeahead-utils.js +94 -0
- package/typeahead/esm5/typeahead.config.js +37 -0
- package/typeahead/esm5/typeahead.directive.js +748 -0
- package/typeahead/esm5/typeahead.module.js +48 -0
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +1780 -0
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -0
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js +1975 -0
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -0
- package/typeahead/ngx-bootstrap-typeahead.d.ts +4 -0
- package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -0
- package/typeahead/package.json +19 -0
- package/typeahead/public_api.d.ts +8 -0
- package/typeahead/typeahead-container.component.d.ts +2 -2
- package/typeahead/typeahead.config.d.ts +5 -0
- package/typeahead/typeahead.directive.d.ts +13 -10
- package/utils/bundles/ngx-bootstrap-utils.umd.js +792 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js +10 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -0
- package/utils/esm2015/decorators.js +37 -0
- package/utils/esm2015/facade/browser.js +29 -0
- package/utils/esm2015/linked-list.class.js +324 -0
- package/utils/esm2015/ngx-bootstrap-utils.js +10 -0
- package/utils/esm2015/public_api.js +16 -0
- package/utils/esm2015/theme-provider.js +49 -0
- package/utils/esm2015/trigger.class.js +32 -0
- package/utils/esm2015/triggers.js +165 -0
- package/utils/esm2015/utils.class.js +31 -0
- package/utils/esm2015/warn-once.js +21 -0
- package/utils/esm5/decorators.js +39 -0
- package/utils/esm5/facade/browser.js +29 -0
- package/utils/esm5/linked-list.class.js +425 -0
- package/utils/esm5/ngx-bootstrap-utils.js +10 -0
- package/utils/esm5/public_api.js +16 -0
- package/utils/esm5/theme-provider.js +49 -0
- package/utils/esm5/trigger.class.js +33 -0
- package/utils/esm5/triggers.js +170 -0
- package/utils/esm5/utils.class.js +46 -0
- package/utils/esm5/warn-once.js +21 -0
- package/utils/facade/browser.d.ts +5 -5
- package/utils/fesm2015/ngx-bootstrap-utils.js +650 -0
- package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -0
- package/utils/fesm5/ngx-bootstrap-utils.js +768 -0
- package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -0
- package/utils/ngx-bootstrap-utils.d.ts +4 -0
- package/utils/ngx-bootstrap-utils.metadata.json +1 -0
- package/utils/package.json +19 -0
- package/utils/public_api.d.ts +10 -0
- package/utils/triggers.d.ts +12 -1
- package/accordion/accordion-group.component.html +0 -19
- package/accordion/accordion-group.component.js +0 -82
- package/accordion/accordion-group.component.js.map +0 -1
- package/accordion/accordion-group.component.metadata.json +0 -1
- package/accordion/accordion-group.component.ngfactory.js.map +0 -1
- package/accordion/accordion.component.js +0 -50
- package/accordion/accordion.component.js.map +0 -1
- package/accordion/accordion.component.metadata.json +0 -1
- package/accordion/accordion.component.ngfactory.js.map +0 -1
- package/accordion/accordion.config.js +0 -16
- package/accordion/accordion.config.js.map +0 -1
- package/accordion/accordion.config.metadata.json +0 -1
- package/accordion/accordion.config.ngfactory.js.map +0 -1
- package/accordion/accordion.module.js +0 -23
- package/accordion/accordion.module.js.map +0 -1
- package/accordion/accordion.module.metadata.json +0 -1
- package/accordion/accordion.module.ngfactory.js.map +0 -1
- package/accordion/index.js +0 -5
- package/accordion/index.js.map +0 -1
- package/accordion/index.metadata.json +0 -1
- package/alert/alert.component.html +0 -11
- package/alert/alert.component.js +0 -99
- package/alert/alert.component.js.map +0 -1
- package/alert/alert.component.metadata.json +0 -1
- package/alert/alert.component.ngfactory.js.map +0 -1
- package/alert/alert.config.js +0 -17
- package/alert/alert.config.js.map +0 -1
- package/alert/alert.config.metadata.json +0 -1
- package/alert/alert.config.ngfactory.js.map +0 -1
- package/alert/alert.module.js +0 -22
- package/alert/alert.module.js.map +0 -1
- package/alert/alert.module.metadata.json +0 -1
- package/alert/alert.module.ngfactory.js.map +0 -1
- package/alert/index.js +0 -4
- package/alert/index.js.map +0 -1
- package/alert/index.metadata.json +0 -1
- package/buttons/button-checkbox.directive.js +0 -93
- package/buttons/button-checkbox.directive.js.map +0 -1
- package/buttons/button-checkbox.directive.metadata.json +0 -1
- package/buttons/button-checkbox.directive.ngfactory.js.map +0 -1
- package/buttons/button-radio-group.directive.js +0 -53
- package/buttons/button-radio-group.directive.js.map +0 -1
- package/buttons/button-radio-group.directive.metadata.json +0 -1
- package/buttons/button-radio-group.directive.ngfactory.js.map +0 -1
- package/buttons/button-radio.directive.js +0 -126
- package/buttons/button-radio.directive.js.map +0 -1
- package/buttons/button-radio.directive.metadata.json +0 -1
- package/buttons/button-radio.directive.ngfactory.js.map +0 -1
- package/buttons/buttons.module.js +0 -20
- package/buttons/buttons.module.js.map +0 -1
- package/buttons/buttons.module.metadata.json +0 -1
- package/buttons/buttons.module.ngfactory.js.map +0 -1
- package/buttons/index.js +0 -5
- package/buttons/index.js.map +0 -1
- package/buttons/index.metadata.json +0 -1
- package/carousel/carousel.component.html +0 -14
- package/carousel/carousel.component.js +0 -419
- package/carousel/carousel.component.js.map +0 -1
- package/carousel/carousel.component.metadata.json +0 -1
- package/carousel/carousel.component.ngfactory.js.map +0 -1
- package/carousel/carousel.config.js +0 -19
- package/carousel/carousel.config.js.map +0 -1
- package/carousel/carousel.config.metadata.json +0 -1
- package/carousel/carousel.config.ngfactory.js.map +0 -1
- package/carousel/carousel.module.js +0 -23
- package/carousel/carousel.module.js.map +0 -1
- package/carousel/carousel.module.metadata.json +0 -1
- package/carousel/carousel.module.ngfactory.js.map +0 -1
- package/carousel/index.js +0 -5
- package/carousel/index.js.map +0 -1
- package/carousel/index.metadata.json +0 -1
- package/carousel/slide.component.js +0 -41
- package/carousel/slide.component.js.map +0 -1
- package/carousel/slide.component.metadata.json +0 -1
- package/carousel/slide.component.ngfactory.js.map +0 -1
- package/chronos/create/check-overflow.js +0 -30
- package/chronos/create/check-overflow.js.map +0 -1
- package/chronos/create/check-overflow.metadata.json +0 -1
- package/chronos/create/clone.js +0 -6
- package/chronos/create/clone.js.map +0 -1
- package/chronos/create/clone.metadata.json +0 -1
- package/chronos/create/date-from-array.js +0 -23
- package/chronos/create/date-from-array.js.map +0 -1
- package/chronos/create/date-from-array.metadata.json +0 -1
- package/chronos/create/from-anything.js +0 -106
- package/chronos/create/from-anything.js.map +0 -1
- package/chronos/create/from-anything.metadata.json +0 -1
- package/chronos/create/from-array.js +0 -136
- package/chronos/create/from-array.js.map +0 -1
- package/chronos/create/from-array.metadata.json +0 -1
- package/chronos/create/from-object.js +0 -16
- package/chronos/create/from-object.js.map +0 -1
- package/chronos/create/from-object.metadata.json +0 -1
- package/chronos/create/from-string-and-array.js +0 -38
- package/chronos/create/from-string-and-array.js.map +0 -1
- package/chronos/create/from-string-and-array.metadata.json +0 -1
- package/chronos/create/from-string-and-format.js +0 -106
- package/chronos/create/from-string-and-format.js.map +0 -1
- package/chronos/create/from-string-and-format.metadata.json +0 -1
- package/chronos/create/from-string.js +0 -226
- package/chronos/create/from-string.js.map +0 -1
- package/chronos/create/from-string.metadata.json +0 -1
- package/chronos/create/local.js +0 -10
- package/chronos/create/local.js.map +0 -1
- package/chronos/create/local.metadata.json +0 -1
- package/chronos/create/parsing-flags.js +0 -26
- package/chronos/create/parsing-flags.js.map +0 -1
- package/chronos/create/parsing-flags.metadata.json +0 -1
- package/chronos/create/parsing.types.js +0 -1
- package/chronos/create/parsing.types.js.map +0 -1
- package/chronos/create/parsing.types.metadata.json +0 -1
- package/chronos/create/valid.js +0 -42
- package/chronos/create/valid.js.map +0 -1
- package/chronos/create/valid.metadata.json +0 -1
- package/chronos/duration/bubble.js +0 -47
- package/chronos/duration/bubble.js.map +0 -1
- package/chronos/duration/bubble.metadata.json +0 -1
- package/chronos/duration/constructor.js +0 -134
- package/chronos/duration/constructor.js.map +0 -1
- package/chronos/duration/constructor.metadata.json +0 -1
- package/chronos/duration/create.js +0 -114
- package/chronos/duration/create.js.map +0 -1
- package/chronos/duration/create.metadata.json +0 -1
- package/chronos/duration/humanize.js +0 -84
- package/chronos/duration/humanize.js.map +0 -1
- package/chronos/duration/humanize.metadata.json +0 -1
- package/chronos/duration/valid.js +0 -45
- package/chronos/duration/valid.js.map +0 -1
- package/chronos/duration/valid.metadata.json +0 -1
- package/chronos/format/format.js +0 -52
- package/chronos/format/format.js.map +0 -1
- package/chronos/format/format.metadata.json +0 -1
- package/chronos/format.js +0 -48
- package/chronos/format.js.map +0 -1
- package/chronos/format.metadata.json +0 -1
- package/chronos/i18n/ar.js +0 -132
- package/chronos/i18n/ar.js.map +0 -1
- package/chronos/i18n/ar.metadata.json +0 -1
- package/chronos/i18n/cs.js +0 -191
- package/chronos/i18n/cs.js.map +0 -1
- package/chronos/i18n/cs.metadata.json +0 -1
- package/chronos/i18n/da.js +0 -51
- package/chronos/i18n/da.js.map +0 -1
- package/chronos/i18n/da.metadata.json +0 -1
- package/chronos/i18n/de.js +0 -73
- package/chronos/i18n/de.js.map +0 -1
- package/chronos/i18n/de.metadata.json +0 -1
- package/chronos/i18n/en-gb.js +0 -62
- package/chronos/i18n/en-gb.js.map +0 -1
- package/chronos/i18n/en-gb.metadata.json +0 -1
- package/chronos/i18n/es-do.js +0 -86
- package/chronos/i18n/es-do.js.map +0 -1
- package/chronos/i18n/es-do.metadata.json +0 -1
- package/chronos/i18n/es-us.js +0 -80
- package/chronos/i18n/es-us.js.map +0 -1
- package/chronos/i18n/es-us.metadata.json +0 -1
- package/chronos/i18n/es.js +0 -85
- package/chronos/i18n/es.js.map +0 -1
- package/chronos/i18n/es.metadata.json +0 -1
- package/chronos/i18n/fi.js +0 -101
- package/chronos/i18n/fi.js.map +0 -1
- package/chronos/i18n/fi.metadata.json +0 -1
- package/chronos/i18n/fr.js +0 -77
- package/chronos/i18n/fr.js.map +0 -1
- package/chronos/i18n/fr.metadata.json +0 -1
- package/chronos/i18n/gl.js +0 -85
- package/chronos/i18n/gl.js.map +0 -1
- package/chronos/i18n/gl.metadata.json +0 -1
- package/chronos/i18n/he.js +0 -98
- package/chronos/i18n/he.js.map +0 -1
- package/chronos/i18n/he.metadata.json +0 -1
- package/chronos/i18n/hi.js +0 -125
- package/chronos/i18n/hi.js.map +0 -1
- package/chronos/i18n/hi.metadata.json +0 -1
- package/chronos/i18n/hu.js +0 -105
- package/chronos/i18n/hu.js.map +0 -1
- package/chronos/i18n/hu.metadata.json +0 -1
- package/chronos/i18n/id.js +0 -84
- package/chronos/i18n/id.js.map +0 -1
- package/chronos/i18n/id.metadata.json +0 -1
- package/chronos/i18n/it.js +0 -66
- package/chronos/i18n/it.js.map +0 -1
- package/chronos/i18n/it.metadata.json +0 -1
- package/chronos/i18n/ja.js +0 -75
- package/chronos/i18n/ja.js.map +0 -1
- package/chronos/i18n/ja.metadata.json +0 -1
- package/chronos/i18n/ko.js +0 -77
- package/chronos/i18n/ko.js.map +0 -1
- package/chronos/i18n/ko.metadata.json +0 -1
- package/chronos/i18n/mn.js +0 -99
- package/chronos/i18n/mn.js.map +0 -1
- package/chronos/i18n/mn.metadata.json +0 -1
- package/chronos/i18n/nl-be.js +0 -82
- package/chronos/i18n/nl-be.js.map +0 -1
- package/chronos/i18n/nl-be.metadata.json +0 -1
- package/chronos/i18n/nl.js +0 -81
- package/chronos/i18n/nl.js.map +0 -1
- package/chronos/i18n/nl.metadata.json +0 -1
- package/chronos/i18n/pl.js +0 -121
- package/chronos/i18n/pl.js.map +0 -1
- package/chronos/i18n/pl.metadata.json +0 -1
- package/chronos/i18n/pt-br.js +0 -56
- package/chronos/i18n/pt-br.js.map +0 -1
- package/chronos/i18n/pt-br.metadata.json +0 -1
- package/chronos/i18n/ro.js +0 -67
- package/chronos/i18n/ro.js.map +0 -1
- package/chronos/i18n/ro.metadata.json +0 -1
- package/chronos/i18n/ru.js +0 -182
- package/chronos/i18n/ru.js.map +0 -1
- package/chronos/i18n/ru.metadata.json +0 -1
- package/chronos/i18n/sl.js +0 -185
- package/chronos/i18n/sl.js.map +0 -1
- package/chronos/i18n/sl.metadata.json +0 -1
- package/chronos/i18n/sv.js +0 -64
- package/chronos/i18n/sv.js.map +0 -1
- package/chronos/i18n/sv.metadata.json +0 -1
- package/chronos/i18n/th.js +0 -60
- package/chronos/i18n/th.js.map +0 -1
- package/chronos/i18n/th.metadata.json +0 -1
- package/chronos/i18n/tr.js +0 -84
- package/chronos/i18n/tr.js.map +0 -1
- package/chronos/i18n/tr.metadata.json +0 -1
- package/chronos/i18n/zh-cn.js +0 -115
- package/chronos/i18n/zh-cn.js.map +0 -1
- package/chronos/i18n/zh-cn.metadata.json +0 -1
- package/chronos/index.js +0 -7
- package/chronos/index.js.map +0 -1
- package/chronos/index.metadata.json +0 -1
- package/chronos/locale/calendar.js +0 -9
- package/chronos/locale/calendar.js.map +0 -1
- package/chronos/locale/calendar.metadata.json +0 -1
- package/chronos/locale/locale.class.js +0 -550
- package/chronos/locale/locale.class.js.map +0 -1
- package/chronos/locale/locale.class.metadata.json +0 -1
- package/chronos/locale/locale.defaults.js +0 -41
- package/chronos/locale/locale.defaults.js.map +0 -1
- package/chronos/locale/locale.defaults.metadata.json +0 -1
- package/chronos/locale/locales.js +0 -194
- package/chronos/locale/locales.js.map +0 -1
- package/chronos/locale/locales.metadata.json +0 -1
- package/chronos/moment/add-subtract.js +0 -35
- package/chronos/moment/add-subtract.js.map +0 -1
- package/chronos/moment/add-subtract.metadata.json +0 -1
- package/chronos/moment/calendar.js +0 -43
- package/chronos/moment/calendar.js.map +0 -1
- package/chronos/moment/calendar.metadata.json +0 -1
- package/chronos/moment/diff.js +0 -71
- package/chronos/moment/diff.js.map +0 -1
- package/chronos/moment/diff.metadata.json +0 -1
- package/chronos/moment/min-max.js +0 -41
- package/chronos/moment/min-max.js.map +0 -1
- package/chronos/moment/min-max.metadata.json +0 -1
- package/chronos/parse/regex.js +0 -49
- package/chronos/parse/regex.js.map +0 -1
- package/chronos/parse/regex.metadata.json +0 -1
- package/chronos/parse/token.js +0 -31
- package/chronos/parse/token.js.map +0 -1
- package/chronos/parse/token.metadata.json +0 -1
- package/chronos/test/chain.js +0 -738
- package/chronos/test/chain.js.map +0 -1
- package/chronos/test/chain.metadata.json +0 -1
- package/chronos/types.js +0 -1
- package/chronos/types.js.map +0 -1
- package/chronos/types.metadata.json +0 -1
- package/chronos/units/aliases.js +0 -35
- package/chronos/units/aliases.js.map +0 -1
- package/chronos/units/aliases.metadata.json +0 -1
- package/chronos/units/constants.js +0 -11
- package/chronos/units/constants.js.map +0 -1
- package/chronos/units/constants.metadata.json +0 -1
- package/chronos/units/day-of-month.js +0 -28
- package/chronos/units/day-of-month.js.map +0 -1
- package/chronos/units/day-of-week.js +0 -129
- package/chronos/units/day-of-week.js.map +0 -1
- package/chronos/units/day-of-week.metadata.json +0 -1
- package/chronos/units/day-of-year.js +0 -34
- package/chronos/units/day-of-year.js.map +0 -1
- package/chronos/units/day-of-year.metadata.json +0 -1
- package/chronos/units/hour.js +0 -122
- package/chronos/units/hour.js.map +0 -1
- package/chronos/units/index.js +0 -19
- package/chronos/units/index.js.map +0 -1
- package/chronos/units/millisecond.js +0 -58
- package/chronos/units/millisecond.js.map +0 -1
- package/chronos/units/minute.js +0 -20
- package/chronos/units/minute.js.map +0 -1
- package/chronos/units/month.js +0 -61
- package/chronos/units/month.js.map +0 -1
- package/chronos/units/month.metadata.json +0 -1
- package/chronos/units/offset.js +0 -212
- package/chronos/units/offset.js.map +0 -1
- package/chronos/units/offset.metadata.json +0 -1
- package/chronos/units/priorities.js +0 -21
- package/chronos/units/priorities.js.map +0 -1
- package/chronos/units/priorities.metadata.json +0 -1
- package/chronos/units/quarter.js +0 -37
- package/chronos/units/quarter.js.map +0 -1
- package/chronos/units/quarter.metadata.json +0 -1
- package/chronos/units/second.js +0 -20
- package/chronos/units/second.js.map +0 -1
- package/chronos/units/timestamp.js +0 -24
- package/chronos/units/timestamp.js.map +0 -1
- package/chronos/units/timezone.js +0 -17
- package/chronos/units/timezone.js.map +0 -1
- package/chronos/units/timezone.metadata.json +0 -1
- package/chronos/units/week-calendar-utils.js +0 -63
- package/chronos/units/week-calendar-utils.js.map +0 -1
- package/chronos/units/week-calendar-utils.metadata.json +0 -1
- package/chronos/units/week-year.js +0 -102
- package/chronos/units/week-year.js.map +0 -1
- package/chronos/units/week-year.metadata.json +0 -1
- package/chronos/units/week.js +0 -56
- package/chronos/units/week.js.map +0 -1
- package/chronos/units/week.metadata.json +0 -1
- package/chronos/units/year.js +0 -55
- package/chronos/units/year.js.map +0 -1
- package/chronos/units/year.metadata.json +0 -1
- package/chronos/utils/abs-ceil.js +0 -4
- package/chronos/utils/abs-ceil.js.map +0 -1
- package/chronos/utils/abs-ceil.metadata.json +0 -1
- package/chronos/utils/abs-round.js +0 -4
- package/chronos/utils/abs-round.js.map +0 -1
- package/chronos/utils/abs-round.metadata.json +0 -1
- package/chronos/utils/compare-arrays.js +0 -15
- package/chronos/utils/compare-arrays.js.map +0 -1
- package/chronos/utils/compare-arrays.metadata.json +0 -1
- package/chronos/utils/date-compare.js +0 -50
- package/chronos/utils/date-compare.js.map +0 -1
- package/chronos/utils/date-compare.metadata.json +0 -1
- package/chronos/utils/date-getters.js +0 -75
- package/chronos/utils/date-getters.js.map +0 -1
- package/chronos/utils/date-getters.metadata.json +0 -1
- package/chronos/utils/date-setters.js +0 -74
- package/chronos/utils/date-setters.js.map +0 -1
- package/chronos/utils/date-setters.metadata.json +0 -1
- package/chronos/utils/defaults.js +0 -11
- package/chronos/utils/defaults.js.map +0 -1
- package/chronos/utils/defaults.metadata.json +0 -1
- package/chronos/utils/start-end-of.js +0 -57
- package/chronos/utils/start-end-of.js.map +0 -1
- package/chronos/utils/start-end-of.metadata.json +0 -1
- package/chronos/utils/type-checks.js +0 -56
- package/chronos/utils/type-checks.js.map +0 -1
- package/chronos/utils/type-checks.metadata.json +0 -1
- package/chronos/utils/zero-fill.js +0 -10
- package/chronos/utils/zero-fill.js.map +0 -1
- package/chronos/utils/zero-fill.metadata.json +0 -1
- package/chronos/utils.js +0 -7
- package/chronos/utils.js.map +0 -1
- package/chronos/utils.metadata.json +0 -1
- package/collapse/collapse.directive.js +0 -98
- package/collapse/collapse.directive.js.map +0 -1
- package/collapse/collapse.directive.metadata.json +0 -1
- package/collapse/collapse.directive.ngfactory.js.map +0 -1
- package/collapse/collapse.module.js +0 -18
- package/collapse/collapse.module.js.map +0 -1
- package/collapse/collapse.module.metadata.json +0 -1
- package/collapse/collapse.module.ngfactory.js.map +0 -1
- package/collapse/index.js +0 -3
- package/collapse/index.js.map +0 -1
- package/collapse/index.metadata.json +0 -1
- package/component-loader/bs-component-ref.class.js +0 -7
- package/component-loader/bs-component-ref.class.js.map +0 -1
- package/component-loader/bs-component-ref.class.metadata.json +0 -1
- package/component-loader/component-loader.class.js +0 -258
- package/component-loader/component-loader.class.js.map +0 -1
- package/component-loader/component-loader.class.metadata.json +0 -1
- package/component-loader/component-loader.factory.js +0 -50
- package/component-loader/component-loader.factory.js.map +0 -1
- package/component-loader/component-loader.factory.metadata.json +0 -1
- package/component-loader/component-loader.factory.ngfactory.js.map +0 -1
- package/component-loader/content-ref.class.js +0 -14
- package/component-loader/content-ref.class.js.map +0 -1
- package/component-loader/content-ref.class.metadata.json +0 -1
- package/component-loader/index.d.ts +0 -3
- package/component-loader/index.js +0 -4
- package/component-loader/index.js.map +0 -1
- package/component-loader/index.metadata.json +0 -1
- package/component-loader/listen-options.model.js +0 -1
- package/component-loader/listen-options.model.js.map +0 -1
- package/component-loader/listen-options.model.metadata.json +0 -1
- package/datepicker/base/bs-datepicker-container.js +0 -40
- package/datepicker/base/bs-datepicker-container.js.map +0 -1
- package/datepicker/base/bs-datepicker-container.metadata.json +0 -1
- package/datepicker/bs-datepicker-input.directive.js +0 -134
- package/datepicker/bs-datepicker-input.directive.js.map +0 -1
- package/datepicker/bs-datepicker-input.directive.metadata.json +0 -1
- package/datepicker/bs-datepicker-input.directive.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.component.js +0 -217
- package/datepicker/bs-datepicker.component.js.map +0 -1
- package/datepicker/bs-datepicker.component.metadata.json +0 -1
- package/datepicker/bs-datepicker.component.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.config.js +0 -39
- package/datepicker/bs-datepicker.config.js.map +0 -1
- package/datepicker/bs-datepicker.config.metadata.json +0 -1
- package/datepicker/bs-datepicker.config.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.module.js +0 -80
- package/datepicker/bs-datepicker.module.js.map +0 -1
- package/datepicker/bs-datepicker.module.metadata.json +0 -1
- package/datepicker/bs-datepicker.module.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker-input.directive.js +0 -150
- package/datepicker/bs-daterangepicker-input.directive.js.map +0 -1
- package/datepicker/bs-daterangepicker-input.directive.metadata.json +0 -1
- package/datepicker/bs-daterangepicker-input.directive.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker.component.js +0 -220
- package/datepicker/bs-daterangepicker.component.js.map +0 -1
- package/datepicker/bs-daterangepicker.component.metadata.json +0 -1
- package/datepicker/bs-daterangepicker.component.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker.config.js +0 -27
- package/datepicker/bs-daterangepicker.config.js.map +0 -1
- package/datepicker/bs-daterangepicker.config.metadata.json +0 -1
- package/datepicker/bs-daterangepicker.config.ngfactory.js.map +0 -1
- package/datepicker/bs-locale.service.js +0 -42
- package/datepicker/bs-locale.service.js.map +0 -1
- package/datepicker/bs-locale.service.metadata.json +0 -1
- package/datepicker/bs-locale.service.ngfactory.js.map +0 -1
- package/datepicker/date-formatter.js +0 -11
- package/datepicker/date-formatter.js.map +0 -1
- package/datepicker/date-formatter.metadata.json +0 -1
- package/datepicker/datepicker-inner.component.js +0 -317
- package/datepicker/datepicker-inner.component.js.map +0 -1
- package/datepicker/datepicker-inner.component.metadata.json +0 -1
- package/datepicker/datepicker-inner.component.ngfactory.js.map +0 -1
- package/datepicker/datepicker.component.js +0 -114
- package/datepicker/datepicker.component.js.map +0 -1
- package/datepicker/datepicker.component.metadata.json +0 -1
- package/datepicker/datepicker.component.ngfactory.js.map +0 -1
- package/datepicker/datepicker.config.js +0 -28
- package/datepicker/datepicker.config.js.map +0 -1
- package/datepicker/datepicker.config.metadata.json +0 -1
- package/datepicker/datepicker.config.ngfactory.js.map +0 -1
- package/datepicker/datepicker.module.js +0 -39
- package/datepicker/datepicker.module.js.map +0 -1
- package/datepicker/datepicker.module.metadata.json +0 -1
- package/datepicker/datepicker.module.ngfactory.js.map +0 -1
- package/datepicker/daypicker.component.js +0 -116
- package/datepicker/daypicker.component.js.map +0 -1
- package/datepicker/daypicker.component.metadata.json +0 -1
- package/datepicker/daypicker.component.ngfactory.js.map +0 -1
- package/datepicker/engine/calc-days-calendar.js +0 -19
- package/datepicker/engine/calc-days-calendar.js.map +0 -1
- package/datepicker/engine/calc-days-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-days-calendar.js +0 -72
- package/datepicker/engine/flag-days-calendar.js.map +0 -1
- package/datepicker/engine/flag-days-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-months-calendar.js +0 -30
- package/datepicker/engine/flag-months-calendar.js.map +0 -1
- package/datepicker/engine/flag-months-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-years-calendar.js +0 -29
- package/datepicker/engine/flag-years-calendar.js.map +0 -1
- package/datepicker/engine/flag-years-calendar.metadata.json +0 -1
- package/datepicker/engine/format-days-calendar.js +0 -34
- package/datepicker/engine/format-days-calendar.js.map +0 -1
- package/datepicker/engine/format-days-calendar.metadata.json +0 -1
- package/datepicker/engine/format-months-calendar.js +0 -22
- package/datepicker/engine/format-months-calendar.js.map +0 -1
- package/datepicker/engine/format-months-calendar.metadata.json +0 -1
- package/datepicker/engine/format-years-calendar.js +0 -30
- package/datepicker/engine/format-years-calendar.js.map +0 -1
- package/datepicker/engine/format-years-calendar.metadata.json +0 -1
- package/datepicker/engine/view-mode.js +0 -4
- package/datepicker/engine/view-mode.js.map +0 -1
- package/datepicker/engine/view-mode.metadata.json +0 -1
- package/datepicker/index.d.ts +0 -13
- package/datepicker/index.js +0 -14
- package/datepicker/index.js.map +0 -1
- package/datepicker/index.metadata.json +0 -1
- package/datepicker/models/index.js +0 -15
- package/datepicker/models/index.js.map +0 -1
- package/datepicker/models/index.metadata.json +0 -1
- package/datepicker/monthpicker.component.js +0 -56
- package/datepicker/monthpicker.component.js.map +0 -1
- package/datepicker/monthpicker.component.metadata.json +0 -1
- package/datepicker/monthpicker.component.ngfactory.js.map +0 -1
- package/datepicker/reducer/_defaults.js +0 -5
- package/datepicker/reducer/_defaults.js.map +0 -1
- package/datepicker/reducer/_defaults.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.actions.js +0 -104
- package/datepicker/reducer/bs-datepicker.actions.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.actions.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.actions.ngfactory.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.effects.js +0 -179
- package/datepicker/reducer/bs-datepicker.effects.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.effects.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.effects.ngfactory.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.reducer.js +0 -261
- package/datepicker/reducer/bs-datepicker.reducer.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.reducer.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.state.js +0 -16
- package/datepicker/reducer/bs-datepicker.state.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.state.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.store.js +0 -36
- package/datepicker/reducer/bs-datepicker.store.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.store.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.store.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.js +0 -14
- package/datepicker/themes/bs/bs-calendar-layout.component.js.map +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.js +0 -18
- package/datepicker/themes/bs/bs-current-date-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.js +0 -20
- package/datepicker/themes/bs/bs-custom-dates-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.js +0 -87
- package/datepicker/themes/bs/bs-datepicker-container.component.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +0 -28
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +0 -30
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-view.html +0 -61
- package/datepicker/themes/bs/bs-daterangepicker-container.component.js +0 -105
- package/datepicker/themes/bs/bs-daterangepicker-container.component.js.map +0 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.js +0 -42
- package/datepicker/themes/bs/bs-days-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.js +0 -40
- package/datepicker/themes/bs/bs-months-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.js +0 -17
- package/datepicker/themes/bs/bs-timepicker-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.js +0 -41
- package/datepicker/themes/bs/bs-years-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/utils/bs-calendar-utils.js +0 -30
- package/datepicker/utils/bs-calendar-utils.js.map +0 -1
- package/datepicker/utils/bs-calendar-utils.metadata.json +0 -1
- package/datepicker/utils/matrix-utils.js +0 -14
- package/datepicker/utils/matrix-utils.js.map +0 -1
- package/datepicker/utils/matrix-utils.metadata.json +0 -1
- package/datepicker/yearpicker.component.js +0 -57
- package/datepicker/yearpicker.component.js.map +0 -1
- package/datepicker/yearpicker.component.metadata.json +0 -1
- package/datepicker/yearpicker.component.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-container.component.js +0 -59
- package/dropdown/bs-dropdown-container.component.js.map +0 -1
- package/dropdown/bs-dropdown-container.component.metadata.json +0 -1
- package/dropdown/bs-dropdown-container.component.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-menu.directive.js +0 -25
- package/dropdown/bs-dropdown-menu.directive.js.map +0 -1
- package/dropdown/bs-dropdown-menu.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown-menu.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-toggle.directive.js +0 -63
- package/dropdown/bs-dropdown-toggle.directive.js.map +0 -1
- package/dropdown/bs-dropdown-toggle.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown-toggle.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.config.js +0 -14
- package/dropdown/bs-dropdown.config.js.map +0 -1
- package/dropdown/bs-dropdown.config.metadata.json +0 -1
- package/dropdown/bs-dropdown.config.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.directive.js +0 -300
- package/dropdown/bs-dropdown.directive.js.map +0 -1
- package/dropdown/bs-dropdown.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.module.js +0 -46
- package/dropdown/bs-dropdown.module.js.map +0 -1
- package/dropdown/bs-dropdown.module.metadata.json +0 -1
- package/dropdown/bs-dropdown.module.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.state.js +0 -21
- package/dropdown/bs-dropdown.state.js.map +0 -1
- package/dropdown/bs-dropdown.state.metadata.json +0 -1
- package/dropdown/bs-dropdown.state.ngfactory.js.map +0 -1
- package/dropdown/index.js +0 -8
- package/dropdown/index.js.map +0 -1
- package/dropdown/index.metadata.json +0 -1
- package/index.d.ts +0 -24
- package/index.js +0 -25
- package/index.js.map +0 -1
- package/index.metadata.json +0 -1
- package/locale.d.ts +0 -30
- package/locale.js +0 -31
- package/locale.js.map +0 -1
- package/locale.metadata.json +0 -1
- package/mini-ngrx/LICENCE +0 -21
- package/mini-ngrx/index.js +0 -3
- package/mini-ngrx/index.js.map +0 -1
- package/mini-ngrx/index.metadata.json +0 -1
- package/mini-ngrx/state.class.js +0 -30
- package/mini-ngrx/state.class.js.map +0 -1
- package/mini-ngrx/state.class.metadata.json +0 -1
- package/mini-ngrx/store.class.js +0 -46
- package/mini-ngrx/store.class.js.map +0 -1
- package/mini-ngrx/store.class.metadata.json +0 -1
- package/modal/bs-modal-ref.service.js +0 -15
- package/modal/bs-modal-ref.service.js.map +0 -1
- package/modal/bs-modal-ref.service.metadata.json +0 -1
- package/modal/bs-modal-ref.service.ngfactory.js.map +0 -1
- package/modal/bs-modal.service.js +0 -174
- package/modal/bs-modal.service.js.map +0 -1
- package/modal/bs-modal.service.metadata.json +0 -1
- package/modal/bs-modal.service.ngfactory.js.map +0 -1
- package/modal/index.js +0 -9
- package/modal/index.js.map +0 -1
- package/modal/index.metadata.json +0 -1
- package/modal/modal-backdrop.component.js +0 -69
- package/modal/modal-backdrop.component.js.map +0 -1
- package/modal/modal-backdrop.component.metadata.json +0 -1
- package/modal/modal-backdrop.component.ngfactory.js.map +0 -1
- package/modal/modal-backdrop.options.js +0 -9
- package/modal/modal-backdrop.options.js.map +0 -1
- package/modal/modal-backdrop.options.metadata.json +0 -1
- package/modal/modal-container.component.js +0 -103
- package/modal/modal-container.component.js.map +0 -1
- package/modal/modal-container.component.metadata.json +0 -1
- package/modal/modal-container.component.ngfactory.js.map +0 -1
- package/modal/modal-options.class.js +0 -44
- package/modal/modal-options.class.js.map +0 -1
- package/modal/modal-options.class.metadata.json +0 -1
- package/modal/modal-options.class.ngfactory.js.map +0 -1
- package/modal/modal.directive.js +0 -436
- package/modal/modal.directive.js.map +0 -1
- package/modal/modal.directive.metadata.json +0 -1
- package/modal/modal.directive.ngfactory.js.map +0 -1
- package/modal/modal.module.js +0 -31
- package/modal/modal.module.js.map +0 -1
- package/modal/modal.module.metadata.json +0 -1
- package/modal/modal.module.ngfactory.js.map +0 -1
- package/pagination/index.js +0 -5
- package/pagination/index.js.map +0 -1
- package/pagination/index.metadata.json +0 -1
- package/pagination/pager.component.html +0 -12
- package/pagination/pager.component.js +0 -249
- package/pagination/pager.component.js.map +0 -1
- package/pagination/pager.component.metadata.json +0 -1
- package/pagination/pager.component.ngfactory.js.map +0 -1
- package/pagination/pagination.component.html +0 -35
- package/pagination/pagination.component.js +0 -249
- package/pagination/pagination.component.js.map +0 -1
- package/pagination/pagination.component.metadata.json +0 -1
- package/pagination/pagination.component.ngfactory.js.map +0 -1
- package/pagination/pagination.config.js +0 -31
- package/pagination/pagination.config.js.map +0 -1
- package/pagination/pagination.config.metadata.json +0 -1
- package/pagination/pagination.config.ngfactory.js.map +0 -1
- package/pagination/pagination.module.js +0 -22
- package/pagination/pagination.module.js.map +0 -1
- package/pagination/pagination.module.metadata.json +0 -1
- package/pagination/pagination.module.ngfactory.js.map +0 -1
- package/popover/index.js +0 -5
- package/popover/index.js.map +0 -1
- package/popover/index.metadata.json +0 -1
- package/popover/popover-container.component.html +0 -5
- package/popover/popover-container.component.js +0 -43
- package/popover/popover-container.component.js.map +0 -1
- package/popover/popover-container.component.metadata.json +0 -1
- package/popover/popover-container.component.ngfactory.js.map +0 -1
- package/popover/popover.config.js +0 -27
- package/popover/popover.config.js.map +0 -1
- package/popover/popover.config.metadata.json +0 -1
- package/popover/popover.config.ngfactory.js.map +0 -1
- package/popover/popover.directive.js +0 -165
- package/popover/popover.directive.js.map +0 -1
- package/popover/popover.directive.metadata.json +0 -1
- package/popover/popover.directive.ngfactory.js.map +0 -1
- package/popover/popover.module.js +0 -28
- package/popover/popover.module.js.map +0 -1
- package/popover/popover.module.metadata.json +0 -1
- package/popover/popover.module.ngfactory.js.map +0 -1
- package/positioning/index.js +0 -3
- package/positioning/index.js.map +0 -1
- package/positioning/index.metadata.json +0 -1
- package/positioning/ng-positioning.js +0 -216
- package/positioning/ng-positioning.js.map +0 -1
- package/positioning/ng-positioning.metadata.json +0 -1
- package/positioning/positioning.service.js +0 -26
- package/positioning/positioning.service.js.map +0 -1
- package/positioning/positioning.service.metadata.json +0 -1
- package/positioning/positioning.service.ngfactory.js.map +0 -1
- package/progressbar/bar.component.html +0 -1
- package/progressbar/bar.component.js +0 -87
- package/progressbar/bar.component.js.map +0 -1
- package/progressbar/bar.component.metadata.json +0 -1
- package/progressbar/bar.component.ngfactory.js.map +0 -1
- package/progressbar/index.js +0 -5
- package/progressbar/index.js.map +0 -1
- package/progressbar/index.metadata.json +0 -1
- package/progressbar/progressbar.component.html +0 -6
- package/progressbar/progressbar.component.js +0 -76
- package/progressbar/progressbar.component.js.map +0 -1
- package/progressbar/progressbar.component.metadata.json +0 -1
- package/progressbar/progressbar.component.ngfactory.js.map +0 -1
- package/progressbar/progressbar.config.js +0 -15
- package/progressbar/progressbar.config.js.map +0 -1
- package/progressbar/progressbar.config.metadata.json +0 -1
- package/progressbar/progressbar.config.ngfactory.js.map +0 -1
- package/progressbar/progressbar.module.js +0 -22
- package/progressbar/progressbar.module.js.map +0 -1
- package/progressbar/progressbar.module.metadata.json +0 -1
- package/progressbar/progressbar.module.ngfactory.js.map +0 -1
- package/rating/index.js +0 -3
- package/rating/index.js.map +0 -1
- package/rating/index.metadata.json +0 -1
- package/rating/rating.component.html +0 -18
- package/rating/rating.component.js +0 -111
- package/rating/rating.component.js.map +0 -1
- package/rating/rating.component.metadata.json +0 -1
- package/rating/rating.component.ngfactory.js.map +0 -1
- package/rating/rating.module.js +0 -23
- package/rating/rating.module.js.map +0 -1
- package/rating/rating.module.metadata.json +0 -1
- package/rating/rating.module.ngfactory.js.map +0 -1
- package/sortable/draggable-item.js +0 -1
- package/sortable/draggable-item.js.map +0 -1
- package/sortable/draggable-item.metadata.json +0 -1
- package/sortable/draggable-item.service.js +0 -34
- package/sortable/draggable-item.service.js.map +0 -1
- package/sortable/draggable-item.service.metadata.json +0 -1
- package/sortable/draggable-item.service.ngfactory.js.map +0 -1
- package/sortable/index.js +0 -4
- package/sortable/index.js.map +0 -1
- package/sortable/index.metadata.json +0 -1
- package/sortable/sortable.component.js +0 -186
- package/sortable/sortable.component.js.map +0 -1
- package/sortable/sortable.component.metadata.json +0 -1
- package/sortable/sortable.component.ngfactory.js.map +0 -1
- package/sortable/sortable.module.js +0 -21
- package/sortable/sortable.module.js.map +0 -1
- package/sortable/sortable.module.metadata.json +0 -1
- package/sortable/sortable.module.ngfactory.js.map +0 -1
- package/spec/ng-bootstrap/license +0 -23
- package/tabs/index.js +0 -7
- package/tabs/index.js.map +0 -1
- package/tabs/index.metadata.json +0 -1
- package/tabs/ng-transclude.directive.js +0 -34
- package/tabs/ng-transclude.directive.js.map +0 -1
- package/tabs/ng-transclude.directive.metadata.json +0 -1
- package/tabs/ng-transclude.directive.ngfactory.js.map +0 -1
- package/tabs/tab-heading.directive.js +0 -19
- package/tabs/tab-heading.directive.js.map +0 -1
- package/tabs/tab-heading.directive.metadata.json +0 -1
- package/tabs/tab-heading.directive.ngfactory.js.map +0 -1
- package/tabs/tab.directive.js +0 -97
- package/tabs/tab.directive.js.map +0 -1
- package/tabs/tab.directive.metadata.json +0 -1
- package/tabs/tab.directive.ngfactory.js.map +0 -1
- package/tabs/tabs.module.js +0 -37
- package/tabs/tabs.module.js.map +0 -1
- package/tabs/tabs.module.metadata.json +0 -1
- package/tabs/tabs.module.ngfactory.js.map +0 -1
- package/tabs/tabset.component.html +0 -15
- package/tabs/tabset.component.js +0 -134
- package/tabs/tabset.component.js.map +0 -1
- package/tabs/tabset.component.metadata.json +0 -1
- package/tabs/tabset.component.ngfactory.js.map +0 -1
- package/tabs/tabset.config.js +0 -13
- package/tabs/tabset.config.js.map +0 -1
- package/tabs/tabset.config.metadata.json +0 -1
- package/tabs/tabset.config.ngfactory.js.map +0 -1
- package/timepicker/index.js +0 -6
- package/timepicker/index.js.map +0 -1
- package/timepicker/index.metadata.json +0 -1
- package/timepicker/reducer/timepicker.actions.js +0 -53
- package/timepicker/reducer/timepicker.actions.js.map +0 -1
- package/timepicker/reducer/timepicker.actions.metadata.json +0 -1
- package/timepicker/reducer/timepicker.actions.ngfactory.js.map +0 -1
- package/timepicker/reducer/timepicker.reducer.js +0 -90
- package/timepicker/reducer/timepicker.reducer.js.map +0 -1
- package/timepicker/reducer/timepicker.reducer.metadata.json +0 -1
- package/timepicker/reducer/timepicker.store.js +0 -34
- package/timepicker/reducer/timepicker.store.js.map +0 -1
- package/timepicker/reducer/timepicker.store.metadata.json +0 -1
- package/timepicker/reducer/timepicker.store.ngfactory.js.map +0 -1
- package/timepicker/timepicker-controls.util.js +0 -122
- package/timepicker/timepicker-controls.util.js.map +0 -1
- package/timepicker/timepicker-controls.util.metadata.json +0 -1
- package/timepicker/timepicker.component.html +0 -122
- package/timepicker/timepicker.component.js +0 -288
- package/timepicker/timepicker.component.js.map +0 -1
- package/timepicker/timepicker.component.metadata.json +0 -1
- package/timepicker/timepicker.component.ngfactory.js.map +0 -1
- package/timepicker/timepicker.config.js +0 -36
- package/timepicker/timepicker.config.js.map +0 -1
- package/timepicker/timepicker.config.metadata.json +0 -1
- package/timepicker/timepicker.config.ngfactory.js.map +0 -1
- package/timepicker/timepicker.models.js +0 -1
- package/timepicker/timepicker.models.js.map +0 -1
- package/timepicker/timepicker.models.metadata.json +0 -1
- package/timepicker/timepicker.module.js +0 -26
- package/timepicker/timepicker.module.js.map +0 -1
- package/timepicker/timepicker.module.metadata.json +0 -1
- package/timepicker/timepicker.module.ngfactory.js.map +0 -1
- package/timepicker/timepicker.utils.js +0 -141
- package/timepicker/timepicker.utils.js.map +0 -1
- package/timepicker/timepicker.utils.metadata.json +0 -1
- package/tooltip/index.js +0 -5
- package/tooltip/index.js.map +0 -1
- package/tooltip/index.metadata.json +0 -1
- package/tooltip/tooltip-container.component.js +0 -50
- package/tooltip/tooltip-container.component.js.map +0 -1
- package/tooltip/tooltip-container.component.metadata.json +0 -1
- package/tooltip/tooltip-container.component.ngfactory.js.map +0 -1
- package/tooltip/tooltip.config.js +0 -16
- package/tooltip/tooltip.config.js.map +0 -1
- package/tooltip/tooltip.config.metadata.json +0 -1
- package/tooltip/tooltip.config.ngfactory.js.map +0 -1
- package/tooltip/tooltip.directive.js +0 -315
- package/tooltip/tooltip.directive.js.map +0 -1
- package/tooltip/tooltip.directive.metadata.json +0 -1
- package/tooltip/tooltip.directive.ngfactory.js.map +0 -1
- package/tooltip/tooltip.module.js +0 -28
- package/tooltip/tooltip.module.js.map +0 -1
- package/tooltip/tooltip.module.metadata.json +0 -1
- package/tooltip/tooltip.module.ngfactory.js.map +0 -1
- package/tsconfig.spec.json +0 -41
- package/typeahead/index.d.ts +0 -7
- package/typeahead/index.js +0 -8
- package/typeahead/index.js.map +0 -1
- package/typeahead/index.metadata.json +0 -1
- package/typeahead/latin-map.js +0 -828
- package/typeahead/latin-map.js.map +0 -1
- package/typeahead/latin-map.metadata.json +0 -1
- package/typeahead/typeahead-container.component.html +0 -42
- package/typeahead/typeahead-container.component.js +0 -240
- package/typeahead/typeahead-container.component.js.map +0 -1
- package/typeahead/typeahead-container.component.metadata.json +0 -1
- package/typeahead/typeahead-container.component.ngfactory.js.map +0 -1
- package/typeahead/typeahead-match.class.js +0 -18
- package/typeahead/typeahead-match.class.js.map +0 -1
- package/typeahead/typeahead-match.class.metadata.json +0 -1
- package/typeahead/typeahead-options.class.js +0 -8
- package/typeahead/typeahead-options.class.js.map +0 -1
- package/typeahead/typeahead-options.class.metadata.json +0 -1
- package/typeahead/typeahead-utils.js +0 -60
- package/typeahead/typeahead-utils.js.map +0 -1
- package/typeahead/typeahead-utils.metadata.json +0 -1
- package/typeahead/typeahead.directive.js +0 -383
- package/typeahead/typeahead.directive.js.map +0 -1
- package/typeahead/typeahead.directive.metadata.json +0 -1
- package/typeahead/typeahead.directive.ngfactory.js.map +0 -1
- package/typeahead/typeahead.module.js +0 -27
- package/typeahead/typeahead.module.js.map +0 -1
- package/typeahead/typeahead.module.metadata.json +0 -1
- package/typeahead/typeahead.module.ngfactory.js.map +0 -1
- package/utils/decorators.js +0 -21
- package/utils/decorators.js.map +0 -1
- package/utils/decorators.metadata.json +0 -1
- package/utils/facade/browser.js +0 -25
- package/utils/facade/browser.js.map +0 -1
- package/utils/facade/browser.metadata.json +0 -1
- package/utils/index.d.ts +0 -6
- package/utils/index.js +0 -7
- package/utils/index.js.map +0 -1
- package/utils/index.metadata.json +0 -1
- package/utils/linked-list.class.js +0 -244
- package/utils/linked-list.class.js.map +0 -1
- package/utils/linked-list.class.metadata.json +0 -1
- package/utils/theme-provider.js +0 -35
- package/utils/theme-provider.js.map +0 -1
- package/utils/theme-provider.metadata.json +0 -1
- package/utils/trigger.class.js +0 -16
- package/utils/trigger.class.js.map +0 -1
- package/utils/trigger.class.metadata.json +0 -1
- package/utils/triggers.js +0 -94
- package/utils/triggers.js.map +0 -1
- package/utils/triggers.metadata.json +0 -1
- package/utils/utils.class.js +0 -25
- package/utils/utils.class.js.map +0 -1
- package/utils/utils.class.metadata.json +0 -1
- package/utils/warn-once.js +0 -12
- package/utils/warn-once.js.map +0 -1
- package/utils/warn-once.metadata.json +0 -1
@@ -0,0 +1,1183 @@
|
|
1
|
+
(function (global, factory) {
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('ngx-bootstrap/mini-ngrx'), require('@angular/forms'), require('@angular/common')) :
|
3
|
+
typeof define === 'function' && define.amd ? define('ngx-bootstrap/timepicker', ['exports', '@angular/core', 'rxjs', 'ngx-bootstrap/mini-ngrx', '@angular/forms', '@angular/common'], factory) :
|
4
|
+
(factory((global['ngx-bootstrap'] = global['ngx-bootstrap'] || {}, global['ngx-bootstrap'].timepicker = {}),global.ng.core,global.rxjs,global.miniNgrx,global.ng.forms,global.ng.common));
|
5
|
+
}(this, (function (exports,core,rxjs,miniNgrx,forms,common) { 'use strict';
|
6
|
+
|
7
|
+
/**
|
8
|
+
* @fileoverview added by tsickle
|
9
|
+
* @suppress {checkTypes} checked by tsc
|
10
|
+
*/
|
11
|
+
var TimepickerActions = (function () {
|
12
|
+
function TimepickerActions() {
|
13
|
+
}
|
14
|
+
/**
|
15
|
+
* @param {?} value
|
16
|
+
* @return {?}
|
17
|
+
*/
|
18
|
+
TimepickerActions.prototype.writeValue = /**
|
19
|
+
* @param {?} value
|
20
|
+
* @return {?}
|
21
|
+
*/
|
22
|
+
function (value) {
|
23
|
+
return {
|
24
|
+
type: TimepickerActions.WRITE_VALUE,
|
25
|
+
payload: value
|
26
|
+
};
|
27
|
+
};
|
28
|
+
/**
|
29
|
+
* @param {?} event
|
30
|
+
* @return {?}
|
31
|
+
*/
|
32
|
+
TimepickerActions.prototype.changeHours = /**
|
33
|
+
* @param {?} event
|
34
|
+
* @return {?}
|
35
|
+
*/
|
36
|
+
function (event) {
|
37
|
+
return {
|
38
|
+
type: TimepickerActions.CHANGE_HOURS,
|
39
|
+
payload: event
|
40
|
+
};
|
41
|
+
};
|
42
|
+
/**
|
43
|
+
* @param {?} event
|
44
|
+
* @return {?}
|
45
|
+
*/
|
46
|
+
TimepickerActions.prototype.changeMinutes = /**
|
47
|
+
* @param {?} event
|
48
|
+
* @return {?}
|
49
|
+
*/
|
50
|
+
function (event) {
|
51
|
+
return {
|
52
|
+
type: TimepickerActions.CHANGE_MINUTES,
|
53
|
+
payload: event
|
54
|
+
};
|
55
|
+
};
|
56
|
+
/**
|
57
|
+
* @param {?} event
|
58
|
+
* @return {?}
|
59
|
+
*/
|
60
|
+
TimepickerActions.prototype.changeSeconds = /**
|
61
|
+
* @param {?} event
|
62
|
+
* @return {?}
|
63
|
+
*/
|
64
|
+
function (event) {
|
65
|
+
return {
|
66
|
+
type: TimepickerActions.CHANGE_SECONDS,
|
67
|
+
payload: event
|
68
|
+
};
|
69
|
+
};
|
70
|
+
/**
|
71
|
+
* @param {?} value
|
72
|
+
* @return {?}
|
73
|
+
*/
|
74
|
+
TimepickerActions.prototype.setTime = /**
|
75
|
+
* @param {?} value
|
76
|
+
* @return {?}
|
77
|
+
*/
|
78
|
+
function (value) {
|
79
|
+
return {
|
80
|
+
type: TimepickerActions.SET_TIME_UNIT,
|
81
|
+
payload: value
|
82
|
+
};
|
83
|
+
};
|
84
|
+
/**
|
85
|
+
* @param {?} value
|
86
|
+
* @return {?}
|
87
|
+
*/
|
88
|
+
TimepickerActions.prototype.updateControls = /**
|
89
|
+
* @param {?} value
|
90
|
+
* @return {?}
|
91
|
+
*/
|
92
|
+
function (value) {
|
93
|
+
return {
|
94
|
+
type: TimepickerActions.UPDATE_CONTROLS,
|
95
|
+
payload: value
|
96
|
+
};
|
97
|
+
};
|
98
|
+
TimepickerActions.WRITE_VALUE = '[timepicker] write value from ng model';
|
99
|
+
TimepickerActions.CHANGE_HOURS = '[timepicker] change hours';
|
100
|
+
TimepickerActions.CHANGE_MINUTES = '[timepicker] change minutes';
|
101
|
+
TimepickerActions.CHANGE_SECONDS = '[timepicker] change seconds';
|
102
|
+
TimepickerActions.SET_TIME_UNIT = '[timepicker] set time unit';
|
103
|
+
TimepickerActions.UPDATE_CONTROLS = '[timepicker] update controls';
|
104
|
+
TimepickerActions.decorators = [
|
105
|
+
{ type: core.Injectable }
|
106
|
+
];
|
107
|
+
return TimepickerActions;
|
108
|
+
}());
|
109
|
+
|
110
|
+
/*! *****************************************************************************
|
111
|
+
Copyright (c) Microsoft Corporation. All rights reserved.
|
112
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
113
|
+
this file except in compliance with the License. You may obtain a copy of the
|
114
|
+
License at http://www.apache.org/licenses/LICENSE-2.0
|
115
|
+
|
116
|
+
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
117
|
+
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
118
|
+
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
119
|
+
MERCHANTABLITY OR NON-INFRINGEMENT.
|
120
|
+
|
121
|
+
See the Apache Version 2.0 License for specific language governing permissions
|
122
|
+
and limitations under the License.
|
123
|
+
***************************************************************************** */
|
124
|
+
/* global Reflect, Promise */
|
125
|
+
var extendStatics = function (d, b) {
|
126
|
+
extendStatics = Object.setPrototypeOf ||
|
127
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
128
|
+
function (d, b) { for (var p in b)
|
129
|
+
if (b.hasOwnProperty(p))
|
130
|
+
d[p] = b[p]; };
|
131
|
+
return extendStatics(d, b);
|
132
|
+
};
|
133
|
+
function __extends(d, b) {
|
134
|
+
extendStatics(d, b);
|
135
|
+
function __() { this.constructor = d; }
|
136
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
137
|
+
}
|
138
|
+
|
139
|
+
/**
|
140
|
+
* @fileoverview added by tsickle
|
141
|
+
* @suppress {checkTypes} checked by tsc
|
142
|
+
*/
|
143
|
+
var /** @type {?} */ dex = 10;
|
144
|
+
var /** @type {?} */ hoursPerDay = 24;
|
145
|
+
var /** @type {?} */ hoursPerDayHalf = 12;
|
146
|
+
var /** @type {?} */ minutesPerHour = 60;
|
147
|
+
var /** @type {?} */ secondsPerMinute = 60;
|
148
|
+
/**
|
149
|
+
* @param {?=} value
|
150
|
+
* @return {?}
|
151
|
+
*/
|
152
|
+
function isValidDate(value) {
|
153
|
+
if (!value) {
|
154
|
+
return false;
|
155
|
+
}
|
156
|
+
if (value instanceof Date && isNaN(value.getHours())) {
|
157
|
+
return false;
|
158
|
+
}
|
159
|
+
if (typeof value === 'string') {
|
160
|
+
return isValidDate(new Date(value));
|
161
|
+
}
|
162
|
+
return true;
|
163
|
+
}
|
164
|
+
/**
|
165
|
+
* @param {?} controls
|
166
|
+
* @param {?} newDate
|
167
|
+
* @return {?}
|
168
|
+
*/
|
169
|
+
function isValidLimit(controls, newDate) {
|
170
|
+
if (controls.min && newDate < controls.min) {
|
171
|
+
return false;
|
172
|
+
}
|
173
|
+
if (controls.max && newDate > controls.max) {
|
174
|
+
return false;
|
175
|
+
}
|
176
|
+
return true;
|
177
|
+
}
|
178
|
+
/**
|
179
|
+
* @param {?} value
|
180
|
+
* @return {?}
|
181
|
+
*/
|
182
|
+
function toNumber(value) {
|
183
|
+
if (typeof value === 'number') {
|
184
|
+
return value;
|
185
|
+
}
|
186
|
+
return parseInt(value, dex);
|
187
|
+
}
|
188
|
+
/**
|
189
|
+
* @param {?} value
|
190
|
+
* @param {?=} isPM
|
191
|
+
* @return {?}
|
192
|
+
*/
|
193
|
+
function parseHours(value, isPM) {
|
194
|
+
if (isPM === void 0) {
|
195
|
+
isPM = false;
|
196
|
+
}
|
197
|
+
var /** @type {?} */ hour = toNumber(value);
|
198
|
+
if (isNaN(hour) ||
|
199
|
+
hour < 0 ||
|
200
|
+
hour > (isPM ? hoursPerDayHalf : hoursPerDay)) {
|
201
|
+
return NaN;
|
202
|
+
}
|
203
|
+
return hour;
|
204
|
+
}
|
205
|
+
/**
|
206
|
+
* @param {?} value
|
207
|
+
* @return {?}
|
208
|
+
*/
|
209
|
+
function parseMinutes(value) {
|
210
|
+
var /** @type {?} */ minute = toNumber(value);
|
211
|
+
if (isNaN(minute) || minute < 0 || minute > minutesPerHour) {
|
212
|
+
return NaN;
|
213
|
+
}
|
214
|
+
return minute;
|
215
|
+
}
|
216
|
+
/**
|
217
|
+
* @param {?} value
|
218
|
+
* @return {?}
|
219
|
+
*/
|
220
|
+
function parseSeconds(value) {
|
221
|
+
var /** @type {?} */ seconds = toNumber(value);
|
222
|
+
if (isNaN(seconds) || seconds < 0 || seconds > secondsPerMinute) {
|
223
|
+
return NaN;
|
224
|
+
}
|
225
|
+
return seconds;
|
226
|
+
}
|
227
|
+
/**
|
228
|
+
* @param {?} value
|
229
|
+
* @return {?}
|
230
|
+
*/
|
231
|
+
function parseTime(value) {
|
232
|
+
if (typeof value === 'string') {
|
233
|
+
return new Date(value);
|
234
|
+
}
|
235
|
+
return value;
|
236
|
+
}
|
237
|
+
/**
|
238
|
+
* @param {?} value
|
239
|
+
* @param {?} diff
|
240
|
+
* @return {?}
|
241
|
+
*/
|
242
|
+
function changeTime(value, diff) {
|
243
|
+
if (!value) {
|
244
|
+
return changeTime(createDate(new Date(), 0, 0, 0), diff);
|
245
|
+
}
|
246
|
+
var /** @type {?} */ hour = value.getHours();
|
247
|
+
var /** @type {?} */ minutes = value.getMinutes();
|
248
|
+
var /** @type {?} */ seconds = value.getSeconds();
|
249
|
+
if (diff.hour) {
|
250
|
+
hour = (hour + toNumber(diff.hour)) % hoursPerDay;
|
251
|
+
if (hour < 0) {
|
252
|
+
hour += hoursPerDay;
|
253
|
+
}
|
254
|
+
}
|
255
|
+
if (diff.minute) {
|
256
|
+
minutes = minutes + toNumber(diff.minute);
|
257
|
+
}
|
258
|
+
if (diff.seconds) {
|
259
|
+
seconds = seconds + toNumber(diff.seconds);
|
260
|
+
}
|
261
|
+
return createDate(value, hour, minutes, seconds);
|
262
|
+
}
|
263
|
+
/**
|
264
|
+
* @param {?} value
|
265
|
+
* @param {?} opts
|
266
|
+
* @return {?}
|
267
|
+
*/
|
268
|
+
function setTime(value, opts) {
|
269
|
+
var /** @type {?} */ hour = parseHours(opts.hour);
|
270
|
+
var /** @type {?} */ minute = parseMinutes(opts.minute);
|
271
|
+
var /** @type {?} */ seconds = parseSeconds(opts.seconds) || 0;
|
272
|
+
if (opts.isPM) {
|
273
|
+
hour += hoursPerDayHalf;
|
274
|
+
}
|
275
|
+
if (!value) {
|
276
|
+
if (!isNaN(hour) && !isNaN(minute)) {
|
277
|
+
return createDate(new Date(), hour, minute, seconds);
|
278
|
+
}
|
279
|
+
return value;
|
280
|
+
}
|
281
|
+
if (isNaN(hour) || isNaN(minute)) {
|
282
|
+
return value;
|
283
|
+
}
|
284
|
+
return createDate(value, hour, minute, seconds);
|
285
|
+
}
|
286
|
+
/**
|
287
|
+
* @param {?} value
|
288
|
+
* @param {?} hours
|
289
|
+
* @param {?} minutes
|
290
|
+
* @param {?} seconds
|
291
|
+
* @return {?}
|
292
|
+
*/
|
293
|
+
function createDate(value, hours, minutes, seconds) {
|
294
|
+
return new Date(value.getFullYear(), value.getMonth(), value.getDate(), hours, minutes, seconds, value.getMilliseconds());
|
295
|
+
}
|
296
|
+
/**
|
297
|
+
* @param {?} value
|
298
|
+
* @return {?}
|
299
|
+
*/
|
300
|
+
function padNumber(value) {
|
301
|
+
var /** @type {?} */ _value = value.toString();
|
302
|
+
if (_value.length > 1) {
|
303
|
+
return _value;
|
304
|
+
}
|
305
|
+
return "0" + _value;
|
306
|
+
}
|
307
|
+
/**
|
308
|
+
* @param {?} hours
|
309
|
+
* @param {?} isPM
|
310
|
+
* @return {?}
|
311
|
+
*/
|
312
|
+
function isHourInputValid(hours, isPM) {
|
313
|
+
return !isNaN(parseHours(hours, isPM));
|
314
|
+
}
|
315
|
+
/**
|
316
|
+
* @param {?} minutes
|
317
|
+
* @return {?}
|
318
|
+
*/
|
319
|
+
function isMinuteInputValid(minutes) {
|
320
|
+
return !isNaN(parseMinutes(minutes));
|
321
|
+
}
|
322
|
+
/**
|
323
|
+
* @param {?} seconds
|
324
|
+
* @return {?}
|
325
|
+
*/
|
326
|
+
function isSecondInputValid(seconds) {
|
327
|
+
return !isNaN(parseSeconds(seconds));
|
328
|
+
}
|
329
|
+
/**
|
330
|
+
* @param {?} diff
|
331
|
+
* @param {?} max
|
332
|
+
* @param {?} min
|
333
|
+
* @return {?}
|
334
|
+
*/
|
335
|
+
function isInputLimitValid(diff, max, min) {
|
336
|
+
var /** @type {?} */ newDate = changeTime(new Date(), diff);
|
337
|
+
if (max && newDate > max) {
|
338
|
+
return false;
|
339
|
+
}
|
340
|
+
if (min && newDate < min) {
|
341
|
+
return false;
|
342
|
+
}
|
343
|
+
return true;
|
344
|
+
}
|
345
|
+
/**
|
346
|
+
* @param {?} hours
|
347
|
+
* @param {?=} minutes
|
348
|
+
* @param {?=} seconds
|
349
|
+
* @param {?=} isPM
|
350
|
+
* @return {?}
|
351
|
+
*/
|
352
|
+
function isInputValid(hours, minutes, seconds, isPM) {
|
353
|
+
if (minutes === void 0) {
|
354
|
+
minutes = '0';
|
355
|
+
}
|
356
|
+
if (seconds === void 0) {
|
357
|
+
seconds = '0';
|
358
|
+
}
|
359
|
+
return isHourInputValid(hours, isPM)
|
360
|
+
&& isMinuteInputValid(minutes)
|
361
|
+
&& isSecondInputValid(seconds);
|
362
|
+
}
|
363
|
+
|
364
|
+
/**
|
365
|
+
* @fileoverview added by tsickle
|
366
|
+
* @suppress {checkTypes} checked by tsc
|
367
|
+
*/
|
368
|
+
/**
|
369
|
+
* @param {?} state
|
370
|
+
* @param {?=} event
|
371
|
+
* @return {?}
|
372
|
+
*/
|
373
|
+
function canChangeValue(state, event) {
|
374
|
+
if (state.readonlyInput || state.disabled) {
|
375
|
+
return false;
|
376
|
+
}
|
377
|
+
if (event) {
|
378
|
+
if (event.source === 'wheel' && !state.mousewheel) {
|
379
|
+
return false;
|
380
|
+
}
|
381
|
+
if (event.source === 'key' && !state.arrowkeys) {
|
382
|
+
return false;
|
383
|
+
}
|
384
|
+
}
|
385
|
+
return true;
|
386
|
+
}
|
387
|
+
/**
|
388
|
+
* @param {?} event
|
389
|
+
* @param {?} controls
|
390
|
+
* @return {?}
|
391
|
+
*/
|
392
|
+
function canChangeHours(event, controls) {
|
393
|
+
if (!event.step) {
|
394
|
+
return false;
|
395
|
+
}
|
396
|
+
if (event.step > 0 && !controls.canIncrementHours) {
|
397
|
+
return false;
|
398
|
+
}
|
399
|
+
if (event.step < 0 && !controls.canDecrementHours) {
|
400
|
+
return false;
|
401
|
+
}
|
402
|
+
return true;
|
403
|
+
}
|
404
|
+
/**
|
405
|
+
* @param {?} event
|
406
|
+
* @param {?} controls
|
407
|
+
* @return {?}
|
408
|
+
*/
|
409
|
+
function canChangeMinutes(event, controls) {
|
410
|
+
if (!event.step) {
|
411
|
+
return false;
|
412
|
+
}
|
413
|
+
if (event.step > 0 && !controls.canIncrementMinutes) {
|
414
|
+
return false;
|
415
|
+
}
|
416
|
+
if (event.step < 0 && !controls.canDecrementMinutes) {
|
417
|
+
return false;
|
418
|
+
}
|
419
|
+
return true;
|
420
|
+
}
|
421
|
+
/**
|
422
|
+
* @param {?} event
|
423
|
+
* @param {?} controls
|
424
|
+
* @return {?}
|
425
|
+
*/
|
426
|
+
function canChangeSeconds(event, controls) {
|
427
|
+
if (!event.step) {
|
428
|
+
return false;
|
429
|
+
}
|
430
|
+
if (event.step > 0 && !controls.canIncrementSeconds) {
|
431
|
+
return false;
|
432
|
+
}
|
433
|
+
if (event.step < 0 && !controls.canDecrementSeconds) {
|
434
|
+
return false;
|
435
|
+
}
|
436
|
+
return true;
|
437
|
+
}
|
438
|
+
/**
|
439
|
+
* @param {?} state
|
440
|
+
* @return {?}
|
441
|
+
*/
|
442
|
+
function getControlsValue(state) {
|
443
|
+
var hourStep = state.hourStep, minuteStep = state.minuteStep, secondsStep = state.secondsStep, readonlyInput = state.readonlyInput, disabled = state.disabled, mousewheel = state.mousewheel, arrowkeys = state.arrowkeys, showSpinners = state.showSpinners, showMeridian = state.showMeridian, showSeconds = state.showSeconds, meridians = state.meridians, min = state.min, max = state.max;
|
444
|
+
return {
|
445
|
+
hourStep: hourStep,
|
446
|
+
minuteStep: minuteStep,
|
447
|
+
secondsStep: secondsStep,
|
448
|
+
readonlyInput: readonlyInput,
|
449
|
+
disabled: disabled,
|
450
|
+
mousewheel: mousewheel,
|
451
|
+
arrowkeys: arrowkeys,
|
452
|
+
showSpinners: showSpinners,
|
453
|
+
showMeridian: showMeridian,
|
454
|
+
showSeconds: showSeconds,
|
455
|
+
meridians: meridians,
|
456
|
+
min: min,
|
457
|
+
max: max
|
458
|
+
};
|
459
|
+
}
|
460
|
+
/**
|
461
|
+
* @param {?} value
|
462
|
+
* @param {?} state
|
463
|
+
* @return {?}
|
464
|
+
*/
|
465
|
+
function timepickerControls(value, state) {
|
466
|
+
var /** @type {?} */ hoursPerDayHalf = 12;
|
467
|
+
var min = state.min, max = state.max, hourStep = state.hourStep, minuteStep = state.minuteStep, secondsStep = state.secondsStep, showSeconds = state.showSeconds;
|
468
|
+
var /** @type {?} */ res = {
|
469
|
+
canIncrementHours: true,
|
470
|
+
canIncrementMinutes: true,
|
471
|
+
canIncrementSeconds: true,
|
472
|
+
canDecrementHours: true,
|
473
|
+
canDecrementMinutes: true,
|
474
|
+
canDecrementSeconds: true,
|
475
|
+
canToggleMeridian: true
|
476
|
+
};
|
477
|
+
if (!value) {
|
478
|
+
return res;
|
479
|
+
}
|
480
|
+
// compare dates
|
481
|
+
if (max) {
|
482
|
+
var /** @type {?} */ _newHour = changeTime(value, { hour: hourStep });
|
483
|
+
res.canIncrementHours = max > _newHour;
|
484
|
+
if (!res.canIncrementHours) {
|
485
|
+
var /** @type {?} */ _newMinutes = changeTime(value, { minute: minuteStep });
|
486
|
+
res.canIncrementMinutes = showSeconds
|
487
|
+
? max > _newMinutes
|
488
|
+
: max >= _newMinutes;
|
489
|
+
}
|
490
|
+
if (!res.canIncrementMinutes) {
|
491
|
+
var /** @type {?} */ _newSeconds = changeTime(value, { seconds: secondsStep });
|
492
|
+
res.canIncrementSeconds = max >= _newSeconds;
|
493
|
+
}
|
494
|
+
if (value.getHours() < hoursPerDayHalf) {
|
495
|
+
res.canToggleMeridian = changeTime(value, { hour: hoursPerDayHalf }) < max;
|
496
|
+
}
|
497
|
+
}
|
498
|
+
if (min) {
|
499
|
+
var /** @type {?} */ _newHour = changeTime(value, { hour: -hourStep });
|
500
|
+
res.canDecrementHours = min < _newHour;
|
501
|
+
if (!res.canDecrementHours) {
|
502
|
+
var /** @type {?} */ _newMinutes = changeTime(value, { minute: -minuteStep });
|
503
|
+
res.canDecrementMinutes = showSeconds
|
504
|
+
? min < _newMinutes
|
505
|
+
: min <= _newMinutes;
|
506
|
+
}
|
507
|
+
if (!res.canDecrementMinutes) {
|
508
|
+
var /** @type {?} */ _newSeconds = changeTime(value, { seconds: -secondsStep });
|
509
|
+
res.canDecrementSeconds = min <= _newSeconds;
|
510
|
+
}
|
511
|
+
if (value.getHours() >= hoursPerDayHalf) {
|
512
|
+
res.canToggleMeridian = changeTime(value, { hour: -hoursPerDayHalf }) > min;
|
513
|
+
}
|
514
|
+
}
|
515
|
+
return res;
|
516
|
+
}
|
517
|
+
|
518
|
+
/**
|
519
|
+
* @fileoverview added by tsickle
|
520
|
+
* @suppress {checkTypes} checked by tsc
|
521
|
+
*/
|
522
|
+
/**
|
523
|
+
* Provides default configuration values for timepicker
|
524
|
+
*/
|
525
|
+
var TimepickerConfig = (function () {
|
526
|
+
function TimepickerConfig() {
|
527
|
+
/**
|
528
|
+
* hours change step
|
529
|
+
*/
|
530
|
+
this.hourStep = 1;
|
531
|
+
/**
|
532
|
+
* hours change step
|
533
|
+
*/
|
534
|
+
this.minuteStep = 5;
|
535
|
+
/**
|
536
|
+
* seconds changes step
|
537
|
+
*/
|
538
|
+
this.secondsStep = 10;
|
539
|
+
/**
|
540
|
+
* if true works in 12H mode and displays AM/PM. If false works in 24H mode and hides AM/PM
|
541
|
+
*/
|
542
|
+
this.showMeridian = true;
|
543
|
+
/**
|
544
|
+
* meridian labels based on locale
|
545
|
+
*/
|
546
|
+
this.meridians = ['AM', 'PM'];
|
547
|
+
/**
|
548
|
+
* if true hours and minutes fields will be readonly
|
549
|
+
*/
|
550
|
+
this.readonlyInput = false;
|
551
|
+
/**
|
552
|
+
* if true hours and minutes fields will be disabled
|
553
|
+
*/
|
554
|
+
this.disabled = false;
|
555
|
+
/**
|
556
|
+
* if true scroll inside hours and minutes inputs will change time
|
557
|
+
*/
|
558
|
+
this.mousewheel = true;
|
559
|
+
/**
|
560
|
+
* if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard
|
561
|
+
*/
|
562
|
+
this.arrowkeys = true;
|
563
|
+
/**
|
564
|
+
* if true spinner arrows above and below the inputs will be shown
|
565
|
+
*/
|
566
|
+
this.showSpinners = true;
|
567
|
+
/**
|
568
|
+
* show seconds in timepicker
|
569
|
+
*/
|
570
|
+
this.showSeconds = false;
|
571
|
+
/**
|
572
|
+
* show minutes in timepicker
|
573
|
+
*/
|
574
|
+
this.showMinutes = true;
|
575
|
+
}
|
576
|
+
TimepickerConfig.decorators = [
|
577
|
+
{ type: core.Injectable }
|
578
|
+
];
|
579
|
+
return TimepickerConfig;
|
580
|
+
}());
|
581
|
+
|
582
|
+
/**
|
583
|
+
* @fileoverview added by tsickle
|
584
|
+
* @suppress {checkTypes} checked by tsc
|
585
|
+
*/
|
586
|
+
var /** @type {?} */ initialState = {
|
587
|
+
value: null,
|
588
|
+
config: new TimepickerConfig(),
|
589
|
+
controls: {
|
590
|
+
canIncrementHours: true,
|
591
|
+
canIncrementMinutes: true,
|
592
|
+
canIncrementSeconds: true,
|
593
|
+
canDecrementHours: true,
|
594
|
+
canDecrementMinutes: true,
|
595
|
+
canDecrementSeconds: true,
|
596
|
+
canToggleMeridian: true
|
597
|
+
}
|
598
|
+
};
|
599
|
+
/**
|
600
|
+
* @param {?=} state
|
601
|
+
* @param {?=} action
|
602
|
+
* @return {?}
|
603
|
+
*/
|
604
|
+
function timepickerReducer(state, action) {
|
605
|
+
if (state === void 0) {
|
606
|
+
state = initialState;
|
607
|
+
}
|
608
|
+
switch (action.type) {
|
609
|
+
case TimepickerActions.WRITE_VALUE: {
|
610
|
+
return Object.assign({}, state, { value: action.payload });
|
611
|
+
}
|
612
|
+
case TimepickerActions.CHANGE_HOURS: {
|
613
|
+
if (!canChangeValue(state.config, action.payload) ||
|
614
|
+
!canChangeHours(action.payload, state.controls)) {
|
615
|
+
return state;
|
616
|
+
}
|
617
|
+
var /** @type {?} */ _newTime = changeTime(state.value, { hour: action.payload.step });
|
618
|
+
if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
|
619
|
+
return state;
|
620
|
+
}
|
621
|
+
return Object.assign({}, state, { value: _newTime });
|
622
|
+
}
|
623
|
+
case TimepickerActions.CHANGE_MINUTES: {
|
624
|
+
if (!canChangeValue(state.config, action.payload) ||
|
625
|
+
!canChangeMinutes(action.payload, state.controls)) {
|
626
|
+
return state;
|
627
|
+
}
|
628
|
+
var /** @type {?} */ _newTime = changeTime(state.value, { minute: action.payload.step });
|
629
|
+
if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
|
630
|
+
return state;
|
631
|
+
}
|
632
|
+
return Object.assign({}, state, { value: _newTime });
|
633
|
+
}
|
634
|
+
case TimepickerActions.CHANGE_SECONDS: {
|
635
|
+
if (!canChangeValue(state.config, action.payload) ||
|
636
|
+
!canChangeSeconds(action.payload, state.controls)) {
|
637
|
+
return state;
|
638
|
+
}
|
639
|
+
var /** @type {?} */ _newTime = changeTime(state.value, {
|
640
|
+
seconds: action.payload.step
|
641
|
+
});
|
642
|
+
if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
|
643
|
+
return state;
|
644
|
+
}
|
645
|
+
return Object.assign({}, state, { value: _newTime });
|
646
|
+
}
|
647
|
+
case TimepickerActions.SET_TIME_UNIT: {
|
648
|
+
if (!canChangeValue(state.config)) {
|
649
|
+
return state;
|
650
|
+
}
|
651
|
+
var /** @type {?} */ _newTime = setTime(state.value, action.payload);
|
652
|
+
return Object.assign({}, state, { value: _newTime });
|
653
|
+
}
|
654
|
+
case TimepickerActions.UPDATE_CONTROLS: {
|
655
|
+
var /** @type {?} */ _newControlsState = timepickerControls(state.value, action.payload);
|
656
|
+
var /** @type {?} */ _newState = {
|
657
|
+
value: state.value,
|
658
|
+
config: action.payload,
|
659
|
+
controls: _newControlsState
|
660
|
+
};
|
661
|
+
if (state.config.showMeridian !== _newState.config.showMeridian) {
|
662
|
+
if (state.value) {
|
663
|
+
_newState.value = new Date(state.value);
|
664
|
+
}
|
665
|
+
}
|
666
|
+
return Object.assign({}, state, _newState);
|
667
|
+
}
|
668
|
+
default:
|
669
|
+
return state;
|
670
|
+
}
|
671
|
+
}
|
672
|
+
|
673
|
+
/**
|
674
|
+
* @fileoverview added by tsickle
|
675
|
+
* @suppress {checkTypes} checked by tsc
|
676
|
+
*/
|
677
|
+
var TimepickerStore = (function (_super) {
|
678
|
+
__extends(TimepickerStore, _super);
|
679
|
+
function TimepickerStore() {
|
680
|
+
var _this = this;
|
681
|
+
var /** @type {?} */ _dispatcher = new rxjs.BehaviorSubject({
|
682
|
+
type: '[mini-ngrx] dispatcher init'
|
683
|
+
});
|
684
|
+
var /** @type {?} */ state = new miniNgrx.MiniState(initialState, _dispatcher, timepickerReducer);
|
685
|
+
_this = _super.call(this, _dispatcher, timepickerReducer, state) || this;
|
686
|
+
return _this;
|
687
|
+
}
|
688
|
+
TimepickerStore.decorators = [
|
689
|
+
{ type: core.Injectable }
|
690
|
+
];
|
691
|
+
/** @nocollapse */
|
692
|
+
TimepickerStore.ctorParameters = function () { return []; };
|
693
|
+
return TimepickerStore;
|
694
|
+
}(miniNgrx.MiniStore));
|
695
|
+
|
696
|
+
/**
|
697
|
+
* @fileoverview added by tsickle
|
698
|
+
* @suppress {checkTypes} checked by tsc
|
699
|
+
*/
|
700
|
+
var /** @type {?} */ TIMEPICKER_CONTROL_VALUE_ACCESSOR = {
|
701
|
+
provide: forms.NG_VALUE_ACCESSOR,
|
702
|
+
/* tslint:disable-next-line: no-use-before-declare */
|
703
|
+
useExisting: core.forwardRef(function () { return TimepickerComponent; }),
|
704
|
+
multi: true
|
705
|
+
};
|
706
|
+
var TimepickerComponent = (function () {
|
707
|
+
function TimepickerComponent(_config, _cd, _store, _timepickerActions) {
|
708
|
+
var _this = this;
|
709
|
+
this._store = _store;
|
710
|
+
this._timepickerActions = _timepickerActions;
|
711
|
+
/**
|
712
|
+
* emits true if value is a valid date
|
713
|
+
*/
|
714
|
+
this.isValid = new core.EventEmitter();
|
715
|
+
// min\max validation for input fields
|
716
|
+
this.invalidHours = false;
|
717
|
+
this.invalidMinutes = false;
|
718
|
+
this.invalidSeconds = false;
|
719
|
+
// control value accessor methods
|
720
|
+
// tslint:disable-next-line:no-any
|
721
|
+
this.onChange = Function.prototype;
|
722
|
+
// tslint:disable-next-line:no-any
|
723
|
+
this.onTouched = Function.prototype;
|
724
|
+
Object.assign(this, _config);
|
725
|
+
this.timepickerSub = _store
|
726
|
+
.select(function (state) { return state.value; })
|
727
|
+
.subscribe(function (value) {
|
728
|
+
// update UI values if date changed
|
729
|
+
// update UI values if date changed
|
730
|
+
_this._renderTime(value);
|
731
|
+
_this.onChange(value);
|
732
|
+
_this._store.dispatch(_this._timepickerActions.updateControls(getControlsValue(_this)));
|
733
|
+
});
|
734
|
+
_store
|
735
|
+
.select(function (state) { return state.controls; })
|
736
|
+
.subscribe(function (controlsState) {
|
737
|
+
_this.isValid.emit(isInputValid(_this.hours, _this.minutes, _this.seconds, _this.isPM()));
|
738
|
+
Object.assign(_this, controlsState);
|
739
|
+
_cd.markForCheck();
|
740
|
+
});
|
741
|
+
}
|
742
|
+
Object.defineProperty(TimepickerComponent.prototype, "isSpinnersVisible", {
|
743
|
+
/** @deprecated - please use `isEditable` instead */
|
744
|
+
get: /**
|
745
|
+
* @deprecated - please use `isEditable` instead
|
746
|
+
* @return {?}
|
747
|
+
*/ function () {
|
748
|
+
return this.showSpinners && !this.readonlyInput;
|
749
|
+
},
|
750
|
+
enumerable: true,
|
751
|
+
configurable: true
|
752
|
+
});
|
753
|
+
Object.defineProperty(TimepickerComponent.prototype, "isEditable", {
|
754
|
+
get: /**
|
755
|
+
* @return {?}
|
756
|
+
*/ function () {
|
757
|
+
return !(this.readonlyInput || this.disabled);
|
758
|
+
},
|
759
|
+
enumerable: true,
|
760
|
+
configurable: true
|
761
|
+
});
|
762
|
+
/**
|
763
|
+
* @return {?}
|
764
|
+
*/
|
765
|
+
TimepickerComponent.prototype.resetValidation = /**
|
766
|
+
* @return {?}
|
767
|
+
*/
|
768
|
+
function () {
|
769
|
+
this.invalidHours = false;
|
770
|
+
this.invalidMinutes = false;
|
771
|
+
this.invalidSeconds = false;
|
772
|
+
};
|
773
|
+
/**
|
774
|
+
* @return {?}
|
775
|
+
*/
|
776
|
+
TimepickerComponent.prototype.isPM = /**
|
777
|
+
* @return {?}
|
778
|
+
*/
|
779
|
+
function () {
|
780
|
+
return this.showMeridian && this.meridian === this.meridians[1];
|
781
|
+
};
|
782
|
+
/**
|
783
|
+
* @param {?} $event
|
784
|
+
* @return {?}
|
785
|
+
*/
|
786
|
+
TimepickerComponent.prototype.prevDef = /**
|
787
|
+
* @param {?} $event
|
788
|
+
* @return {?}
|
789
|
+
*/
|
790
|
+
function ($event) {
|
791
|
+
$event.preventDefault();
|
792
|
+
};
|
793
|
+
/**
|
794
|
+
* @param {?} $event
|
795
|
+
* @return {?}
|
796
|
+
*/
|
797
|
+
TimepickerComponent.prototype.wheelSign = /**
|
798
|
+
* @param {?} $event
|
799
|
+
* @return {?}
|
800
|
+
*/
|
801
|
+
function ($event) {
|
802
|
+
return Math.sign($event.deltaY) * -1;
|
803
|
+
};
|
804
|
+
/**
|
805
|
+
* @param {?} changes
|
806
|
+
* @return {?}
|
807
|
+
*/
|
808
|
+
TimepickerComponent.prototype.ngOnChanges = /**
|
809
|
+
* @param {?} changes
|
810
|
+
* @return {?}
|
811
|
+
*/
|
812
|
+
function (changes) {
|
813
|
+
this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));
|
814
|
+
};
|
815
|
+
/**
|
816
|
+
* @param {?} step
|
817
|
+
* @param {?=} source
|
818
|
+
* @return {?}
|
819
|
+
*/
|
820
|
+
TimepickerComponent.prototype.changeHours = /**
|
821
|
+
* @param {?} step
|
822
|
+
* @param {?=} source
|
823
|
+
* @return {?}
|
824
|
+
*/
|
825
|
+
function (step, source) {
|
826
|
+
if (source === void 0) {
|
827
|
+
source = '';
|
828
|
+
}
|
829
|
+
this.resetValidation();
|
830
|
+
this._store.dispatch(this._timepickerActions.changeHours({ step: step, source: source }));
|
831
|
+
};
|
832
|
+
/**
|
833
|
+
* @param {?} step
|
834
|
+
* @param {?=} source
|
835
|
+
* @return {?}
|
836
|
+
*/
|
837
|
+
TimepickerComponent.prototype.changeMinutes = /**
|
838
|
+
* @param {?} step
|
839
|
+
* @param {?=} source
|
840
|
+
* @return {?}
|
841
|
+
*/
|
842
|
+
function (step, source) {
|
843
|
+
if (source === void 0) {
|
844
|
+
source = '';
|
845
|
+
}
|
846
|
+
this.resetValidation();
|
847
|
+
this._store.dispatch(this._timepickerActions.changeMinutes({ step: step, source: source }));
|
848
|
+
};
|
849
|
+
/**
|
850
|
+
* @param {?} step
|
851
|
+
* @param {?=} source
|
852
|
+
* @return {?}
|
853
|
+
*/
|
854
|
+
TimepickerComponent.prototype.changeSeconds = /**
|
855
|
+
* @param {?} step
|
856
|
+
* @param {?=} source
|
857
|
+
* @return {?}
|
858
|
+
*/
|
859
|
+
function (step, source) {
|
860
|
+
if (source === void 0) {
|
861
|
+
source = '';
|
862
|
+
}
|
863
|
+
this.resetValidation();
|
864
|
+
this._store.dispatch(this._timepickerActions.changeSeconds({ step: step, source: source }));
|
865
|
+
};
|
866
|
+
/**
|
867
|
+
* @param {?} hours
|
868
|
+
* @return {?}
|
869
|
+
*/
|
870
|
+
TimepickerComponent.prototype.updateHours = /**
|
871
|
+
* @param {?} hours
|
872
|
+
* @return {?}
|
873
|
+
*/
|
874
|
+
function (hours) {
|
875
|
+
this.resetValidation();
|
876
|
+
this.hours = hours;
|
877
|
+
var /** @type {?} */ isValid = isHourInputValid(this.hours, this.isPM()) && this.isValidLimit();
|
878
|
+
if (!isValid) {
|
879
|
+
this.invalidHours = true;
|
880
|
+
this.isValid.emit(false);
|
881
|
+
this.onChange(null);
|
882
|
+
return;
|
883
|
+
}
|
884
|
+
this._updateTime();
|
885
|
+
};
|
886
|
+
/**
|
887
|
+
* @param {?} minutes
|
888
|
+
* @return {?}
|
889
|
+
*/
|
890
|
+
TimepickerComponent.prototype.updateMinutes = /**
|
891
|
+
* @param {?} minutes
|
892
|
+
* @return {?}
|
893
|
+
*/
|
894
|
+
function (minutes) {
|
895
|
+
this.resetValidation();
|
896
|
+
this.minutes = minutes;
|
897
|
+
var /** @type {?} */ isValid = isMinuteInputValid(this.minutes) && this.isValidLimit();
|
898
|
+
if (!isValid) {
|
899
|
+
this.invalidMinutes = true;
|
900
|
+
this.isValid.emit(false);
|
901
|
+
this.onChange(null);
|
902
|
+
return;
|
903
|
+
}
|
904
|
+
this._updateTime();
|
905
|
+
};
|
906
|
+
/**
|
907
|
+
* @param {?} seconds
|
908
|
+
* @return {?}
|
909
|
+
*/
|
910
|
+
TimepickerComponent.prototype.updateSeconds = /**
|
911
|
+
* @param {?} seconds
|
912
|
+
* @return {?}
|
913
|
+
*/
|
914
|
+
function (seconds) {
|
915
|
+
this.resetValidation();
|
916
|
+
this.seconds = seconds;
|
917
|
+
var /** @type {?} */ isValid = isSecondInputValid(this.seconds) && this.isValidLimit();
|
918
|
+
if (!isValid) {
|
919
|
+
this.invalidSeconds = true;
|
920
|
+
this.isValid.emit(false);
|
921
|
+
this.onChange(null);
|
922
|
+
return;
|
923
|
+
}
|
924
|
+
this._updateTime();
|
925
|
+
};
|
926
|
+
/**
|
927
|
+
* @return {?}
|
928
|
+
*/
|
929
|
+
TimepickerComponent.prototype.isValidLimit = /**
|
930
|
+
* @return {?}
|
931
|
+
*/
|
932
|
+
function () {
|
933
|
+
return isInputLimitValid({
|
934
|
+
hour: this.hours,
|
935
|
+
minute: this.minutes,
|
936
|
+
seconds: this.seconds,
|
937
|
+
isPM: this.isPM()
|
938
|
+
}, this.max, this.min);
|
939
|
+
};
|
940
|
+
/**
|
941
|
+
* @return {?}
|
942
|
+
*/
|
943
|
+
TimepickerComponent.prototype._updateTime = /**
|
944
|
+
* @return {?}
|
945
|
+
*/
|
946
|
+
function () {
|
947
|
+
var /** @type {?} */ _seconds = this.showSeconds ? this.seconds : void 0;
|
948
|
+
var /** @type {?} */ _minutes = this.showMinutes ? this.minutes : void 0;
|
949
|
+
if (!isInputValid(this.hours, _minutes, _seconds, this.isPM())) {
|
950
|
+
this.isValid.emit(false);
|
951
|
+
this.onChange(null);
|
952
|
+
return;
|
953
|
+
}
|
954
|
+
this._store.dispatch(this._timepickerActions.setTime({
|
955
|
+
hour: this.hours,
|
956
|
+
minute: this.minutes,
|
957
|
+
seconds: this.seconds,
|
958
|
+
isPM: this.isPM()
|
959
|
+
}));
|
960
|
+
};
|
961
|
+
/**
|
962
|
+
* @return {?}
|
963
|
+
*/
|
964
|
+
TimepickerComponent.prototype.toggleMeridian = /**
|
965
|
+
* @return {?}
|
966
|
+
*/
|
967
|
+
function () {
|
968
|
+
if (!this.showMeridian || !this.isEditable) {
|
969
|
+
return;
|
970
|
+
}
|
971
|
+
var /** @type {?} */ _hoursPerDayHalf = 12;
|
972
|
+
this._store.dispatch(this._timepickerActions.changeHours({
|
973
|
+
step: _hoursPerDayHalf,
|
974
|
+
source: ''
|
975
|
+
}));
|
976
|
+
};
|
977
|
+
/**
|
978
|
+
* Write a new value to the element.
|
979
|
+
*/
|
980
|
+
/**
|
981
|
+
* Write a new value to the element.
|
982
|
+
* @param {?} obj
|
983
|
+
* @return {?}
|
984
|
+
*/
|
985
|
+
TimepickerComponent.prototype.writeValue = /**
|
986
|
+
* Write a new value to the element.
|
987
|
+
* @param {?} obj
|
988
|
+
* @return {?}
|
989
|
+
*/
|
990
|
+
function (obj) {
|
991
|
+
if (isValidDate(obj)) {
|
992
|
+
this._store.dispatch(this._timepickerActions.writeValue(parseTime(obj)));
|
993
|
+
}
|
994
|
+
else if (obj == null) {
|
995
|
+
this._store.dispatch(this._timepickerActions.writeValue(null));
|
996
|
+
}
|
997
|
+
};
|
998
|
+
/**
|
999
|
+
* Set the function to be called when the control receives a change event.
|
1000
|
+
*/
|
1001
|
+
// tslint:disable-next-line:no-any
|
1002
|
+
/**
|
1003
|
+
* Set the function to be called when the control receives a change event.
|
1004
|
+
* @param {?} fn
|
1005
|
+
* @return {?}
|
1006
|
+
*/
|
1007
|
+
TimepickerComponent.prototype.registerOnChange = /**
|
1008
|
+
* Set the function to be called when the control receives a change event.
|
1009
|
+
* @param {?} fn
|
1010
|
+
* @return {?}
|
1011
|
+
*/
|
1012
|
+
function (fn) {
|
1013
|
+
this.onChange = fn;
|
1014
|
+
};
|
1015
|
+
/**
|
1016
|
+
* Set the function to be called when the control receives a touch event.
|
1017
|
+
*/
|
1018
|
+
/**
|
1019
|
+
* Set the function to be called when the control receives a touch event.
|
1020
|
+
* @param {?} fn
|
1021
|
+
* @return {?}
|
1022
|
+
*/
|
1023
|
+
TimepickerComponent.prototype.registerOnTouched = /**
|
1024
|
+
* Set the function to be called when the control receives a touch event.
|
1025
|
+
* @param {?} fn
|
1026
|
+
* @return {?}
|
1027
|
+
*/
|
1028
|
+
function (fn) {
|
1029
|
+
this.onTouched = fn;
|
1030
|
+
};
|
1031
|
+
/**
|
1032
|
+
* This function is called when the control status changes to or from "disabled".
|
1033
|
+
* Depending on the value, it will enable or disable the appropriate DOM element.
|
1034
|
+
*
|
1035
|
+
* @param isDisabled
|
1036
|
+
*/
|
1037
|
+
/**
|
1038
|
+
* This function is called when the control status changes to or from "disabled".
|
1039
|
+
* Depending on the value, it will enable or disable the appropriate DOM element.
|
1040
|
+
*
|
1041
|
+
* @param {?} isDisabled
|
1042
|
+
* @return {?}
|
1043
|
+
*/
|
1044
|
+
TimepickerComponent.prototype.setDisabledState = /**
|
1045
|
+
* This function is called when the control status changes to or from "disabled".
|
1046
|
+
* Depending on the value, it will enable or disable the appropriate DOM element.
|
1047
|
+
*
|
1048
|
+
* @param {?} isDisabled
|
1049
|
+
* @return {?}
|
1050
|
+
*/
|
1051
|
+
function (isDisabled) {
|
1052
|
+
this.disabled = isDisabled;
|
1053
|
+
};
|
1054
|
+
/**
|
1055
|
+
* @return {?}
|
1056
|
+
*/
|
1057
|
+
TimepickerComponent.prototype.ngOnDestroy = /**
|
1058
|
+
* @return {?}
|
1059
|
+
*/
|
1060
|
+
function () {
|
1061
|
+
this.timepickerSub.unsubscribe();
|
1062
|
+
};
|
1063
|
+
/**
|
1064
|
+
* @param {?} value
|
1065
|
+
* @return {?}
|
1066
|
+
*/
|
1067
|
+
TimepickerComponent.prototype._renderTime = /**
|
1068
|
+
* @param {?} value
|
1069
|
+
* @return {?}
|
1070
|
+
*/
|
1071
|
+
function (value) {
|
1072
|
+
if (!isValidDate(value)) {
|
1073
|
+
this.hours = '';
|
1074
|
+
this.minutes = '';
|
1075
|
+
this.seconds = '';
|
1076
|
+
this.meridian = this.meridians[0];
|
1077
|
+
return;
|
1078
|
+
}
|
1079
|
+
var /** @type {?} */ _value = parseTime(value);
|
1080
|
+
var /** @type {?} */ _hoursPerDayHalf = 12;
|
1081
|
+
var /** @type {?} */ _hours = _value.getHours();
|
1082
|
+
if (this.showMeridian) {
|
1083
|
+
this.meridian = this.meridians[_hours >= _hoursPerDayHalf ? 1 : 0];
|
1084
|
+
_hours = _hours % _hoursPerDayHalf;
|
1085
|
+
// should be 12 PM, not 00 PM
|
1086
|
+
if (_hours === 0) {
|
1087
|
+
_hours = _hoursPerDayHalf;
|
1088
|
+
}
|
1089
|
+
}
|
1090
|
+
this.hours = padNumber(_hours);
|
1091
|
+
this.minutes = padNumber(_value.getMinutes());
|
1092
|
+
this.seconds = padNumber(_value.getUTCSeconds());
|
1093
|
+
};
|
1094
|
+
TimepickerComponent.decorators = [
|
1095
|
+
{ type: core.Component, args: [{
|
1096
|
+
selector: 'timepicker',
|
1097
|
+
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
1098
|
+
providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore],
|
1099
|
+
template: "<table>\n <tbody>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- increment hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementHours || !isEditable\"\n (click)=\"changeHours(hourStep)\"\n ><span class=\"bs-chevron bs-chevron-up\"></span></a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\"> </td>\n <!-- increment minutes button -->\n <td *ngIf=\"showMinutes\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementMinutes || !isEditable\"\n (click)=\"changeMinutes(minuteStep)\"\n ><span class=\"bs-chevron bs-chevron-up\"></span></a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\"> </td>\n <!-- increment seconds button -->\n <td *ngIf=\"showSeconds\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementSeconds || !isEditable\"\n (click)=\"changeSeconds(secondsStep)\">\n <span class=\"bs-chevron bs-chevron-up\"></span>\n </a>\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\"> </td>\n <!-- meridian placeholder-->\n <td *ngIf=\"showMeridian\"></td>\n </tr>\n <tr>\n <!-- hours -->\n <td class=\"form-group\" [class.has-error]=\"invalidHours\">\n <input type=\"text\" [class.is-invalid]=\"invalidHours\"\n class=\"form-control text-center bs-timepicker-field\"\n placeholder=\"HH\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"hours\"\n (wheel)=\"prevDef($event);changeHours(hourStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeHours(hourStep, 'key')\"\n (keydown.ArrowDown)=\"changeHours(-hourStep, 'key')\"\n (change)=\"updateHours($event.target.value)\"></td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\"> : </td>\n <!-- minutes -->\n <td class=\"form-group\" *ngIf=\"showMinutes\" [class.has-error]=\"invalidMinutes\">\n <input type=\"text\" [class.is-invalid]=\"invalidMinutes\"\n class=\"form-control text-center bs-timepicker-field\"\n placeholder=\"MM\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"minutes\"\n (wheel)=\"prevDef($event);changeMinutes(minuteStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeMinutes(minuteStep, 'key')\"\n (keydown.ArrowDown)=\"changeMinutes(-minuteStep, 'key')\"\n (change)=\"updateMinutes($event.target.value)\">\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\"> : </td>\n <!-- seconds -->\n <td class=\"form-group\" *ngIf=\"showSeconds\" [class.has-error]=\"invalidSeconds\">\n <input type=\"text\" [class.is-invalid]=\"invalidSeconds\"\n class=\"form-control text-center bs-timepicker-field\"\n placeholder=\"SS\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"seconds\"\n (wheel)=\"prevDef($event);changeSeconds(secondsStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeSeconds(secondsStep, 'key')\"\n (keydown.ArrowDown)=\"changeSeconds(-secondsStep, 'key')\"\n (change)=\"updateSeconds($event.target.value)\">\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\"> </td>\n <!-- meridian -->\n <td *ngIf=\"showMeridian\">\n <button type=\"button\" class=\"btn btn-default text-center\"\n [disabled]=\"!isEditable || !canToggleMeridian\"\n [class.disabled]=\"!isEditable || !canToggleMeridian\"\n (click)=\"toggleMeridian()\"\n >{{ meridian }}\n </button>\n </td>\n </tr>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- decrement hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementHours || !isEditable\"\n (click)=\"changeHours(-hourStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\"> </td>\n <!-- decrement minutes button-->\n <td *ngIf=\"showMinutes\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementMinutes || !isEditable\"\n (click)=\"changeMinutes(-minuteStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\"> </td>\n <!-- decrement seconds button-->\n <td *ngIf=\"showSeconds\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementSeconds || !isEditable\"\n (click)=\"changeSeconds(-secondsStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\"> </td>\n <!-- meridian placeholder-->\n <td *ngIf=\"showMeridian\"></td>\n </tr>\n </tbody>\n</table>\n",
|
1100
|
+
encapsulation: core.ViewEncapsulation.None,
|
1101
|
+
styles: ["\n .bs-chevron {\n border-style: solid;\n display: block;\n width: 9px;\n height: 9px;\n position: relative;\n border-width: 3px 0px 0 3px;\n }\n\n .bs-chevron-up {\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n top: 2px;\n }\n\n .bs-chevron-down {\n -webkit-transform: rotate(-135deg);\n transform: rotate(-135deg);\n top: -2px;\n }\n\n .bs-timepicker-field {\n width: 50px;\n }\n "]
|
1102
|
+
}] }
|
1103
|
+
];
|
1104
|
+
/** @nocollapse */
|
1105
|
+
TimepickerComponent.ctorParameters = function () {
|
1106
|
+
return [
|
1107
|
+
{ type: TimepickerConfig, },
|
1108
|
+
{ type: core.ChangeDetectorRef, },
|
1109
|
+
{ type: TimepickerStore, },
|
1110
|
+
{ type: TimepickerActions, },
|
1111
|
+
];
|
1112
|
+
};
|
1113
|
+
TimepickerComponent.propDecorators = {
|
1114
|
+
"hourStep": [{ type: core.Input },],
|
1115
|
+
"minuteStep": [{ type: core.Input },],
|
1116
|
+
"secondsStep": [{ type: core.Input },],
|
1117
|
+
"readonlyInput": [{ type: core.Input },],
|
1118
|
+
"disabled": [{ type: core.Input },],
|
1119
|
+
"mousewheel": [{ type: core.Input },],
|
1120
|
+
"arrowkeys": [{ type: core.Input },],
|
1121
|
+
"showSpinners": [{ type: core.Input },],
|
1122
|
+
"showMeridian": [{ type: core.Input },],
|
1123
|
+
"showMinutes": [{ type: core.Input },],
|
1124
|
+
"showSeconds": [{ type: core.Input },],
|
1125
|
+
"meridians": [{ type: core.Input },],
|
1126
|
+
"min": [{ type: core.Input },],
|
1127
|
+
"max": [{ type: core.Input },],
|
1128
|
+
"isValid": [{ type: core.Output },],
|
1129
|
+
};
|
1130
|
+
return TimepickerComponent;
|
1131
|
+
}());
|
1132
|
+
|
1133
|
+
/**
|
1134
|
+
* @fileoverview added by tsickle
|
1135
|
+
* @suppress {checkTypes} checked by tsc
|
1136
|
+
*/
|
1137
|
+
var TimepickerModule = (function () {
|
1138
|
+
function TimepickerModule() {
|
1139
|
+
}
|
1140
|
+
/**
|
1141
|
+
* @return {?}
|
1142
|
+
*/
|
1143
|
+
TimepickerModule.forRoot = /**
|
1144
|
+
* @return {?}
|
1145
|
+
*/
|
1146
|
+
function () {
|
1147
|
+
return {
|
1148
|
+
ngModule: TimepickerModule,
|
1149
|
+
providers: [TimepickerConfig, TimepickerActions, TimepickerStore]
|
1150
|
+
};
|
1151
|
+
};
|
1152
|
+
TimepickerModule.decorators = [
|
1153
|
+
{ type: core.NgModule, args: [{
|
1154
|
+
imports: [common.CommonModule],
|
1155
|
+
declarations: [TimepickerComponent],
|
1156
|
+
exports: [TimepickerComponent]
|
1157
|
+
},] }
|
1158
|
+
];
|
1159
|
+
return TimepickerModule;
|
1160
|
+
}());
|
1161
|
+
|
1162
|
+
/**
|
1163
|
+
* @fileoverview added by tsickle
|
1164
|
+
* @suppress {checkTypes} checked by tsc
|
1165
|
+
*/
|
1166
|
+
|
1167
|
+
/**
|
1168
|
+
* @fileoverview added by tsickle
|
1169
|
+
* @suppress {checkTypes} checked by tsc
|
1170
|
+
*/
|
1171
|
+
|
1172
|
+
exports.TimepickerComponent = TimepickerComponent;
|
1173
|
+
exports.TimepickerActions = TimepickerActions;
|
1174
|
+
exports.TimepickerStore = TimepickerStore;
|
1175
|
+
exports.TimepickerConfig = TimepickerConfig;
|
1176
|
+
exports.TimepickerModule = TimepickerModule;
|
1177
|
+
exports.ɵa = TIMEPICKER_CONTROL_VALUE_ACCESSOR;
|
1178
|
+
|
1179
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
1180
|
+
|
1181
|
+
})));
|
1182
|
+
|
1183
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC10aW1lcGlja2VyLnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyL3JlZHVjZXIvdGltZXBpY2tlci5hY3Rpb25zLnRzIiwibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5nOi8vbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyL3RpbWVwaWNrZXIudXRpbHMudHMiLCJuZzovL25neC1ib290c3RyYXAvdGltZXBpY2tlci90aW1lcGlja2VyLWNvbnRyb2xzLnV0aWwudHMiLCJuZzovL25neC1ib290c3RyYXAvdGltZXBpY2tlci90aW1lcGlja2VyLmNvbmZpZy50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyL3JlZHVjZXIvdGltZXBpY2tlci5yZWR1Y2VyLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXIvcmVkdWNlci90aW1lcGlja2VyLnN0b3JlLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCJuZzovL25neC1ib290c3RyYXAvdGltZXBpY2tlci90aW1lcGlja2VyLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICduZ3gtYm9vdHN0cmFwL21pbmktbmdyeCc7XG5pbXBvcnQge1xuICBUaW1lQ2hhbmdlRXZlbnQsXG4gIFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZSxcbiAgVGltZVxufSBmcm9tICcuLi90aW1lcGlja2VyLm1vZGVscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUaW1lcGlja2VyQWN0aW9ucyB7XG4gIHN0YXRpYyByZWFkb25seSBXUklURV9WQUxVRSA9ICdbdGltZXBpY2tlcl0gd3JpdGUgdmFsdWUgZnJvbSBuZyBtb2RlbCc7XG4gIHN0YXRpYyByZWFkb25seSBDSEFOR0VfSE9VUlMgPSAnW3RpbWVwaWNrZXJdIGNoYW5nZSBob3Vycyc7XG4gIHN0YXRpYyByZWFkb25seSBDSEFOR0VfTUlOVVRFUyA9ICdbdGltZXBpY2tlcl0gY2hhbmdlIG1pbnV0ZXMnO1xuICBzdGF0aWMgcmVhZG9ubHkgQ0hBTkdFX1NFQ09ORFMgPSAnW3RpbWVwaWNrZXJdIGNoYW5nZSBzZWNvbmRzJztcbiAgc3RhdGljIHJlYWRvbmx5IFNFVF9USU1FX1VOSVQgPSAnW3RpbWVwaWNrZXJdIHNldCB0aW1lIHVuaXQnO1xuICBzdGF0aWMgcmVhZG9ubHkgVVBEQVRFX0NPTlRST0xTID0gJ1t0aW1lcGlja2VyXSB1cGRhdGUgY29udHJvbHMnO1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVGltZXBpY2tlckFjdGlvbnMuV1JJVEVfVkFMVUUsXG4gICAgICBwYXlsb2FkOiB2YWx1ZVxuICAgIH07XG4gIH1cblxuICBjaGFuZ2VIb3VycyhldmVudDogVGltZUNoYW5nZUV2ZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRpbWVwaWNrZXJBY3Rpb25zLkNIQU5HRV9IT1VSUyxcbiAgICAgIHBheWxvYWQ6IGV2ZW50XG4gICAgfTtcbiAgfVxuXG4gIGNoYW5nZU1pbnV0ZXMoZXZlbnQ6IFRpbWVDaGFuZ2VFdmVudCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBUaW1lcGlja2VyQWN0aW9ucy5DSEFOR0VfTUlOVVRFUyxcbiAgICAgIHBheWxvYWQ6IGV2ZW50XG4gICAgfTtcbiAgfVxuXG4gIGNoYW5nZVNlY29uZHMoZXZlbnQ6IFRpbWVDaGFuZ2VFdmVudCk6IEFjdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRpbWVwaWNrZXJBY3Rpb25zLkNIQU5HRV9TRUNPTkRTLFxuICAgICAgcGF5bG9hZDogZXZlbnRcbiAgICB9O1xuICB9XG5cbiAgc2V0VGltZSh2YWx1ZTogVGltZSk6IEFjdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRpbWVwaWNrZXJBY3Rpb25zLlNFVF9USU1FX1VOSVQsXG4gICAgICBwYXlsb2FkOiB2YWx1ZVxuICAgIH07XG4gIH1cblxuICB1cGRhdGVDb250cm9scyh2YWx1ZTogVGltZXBpY2tlckNvbXBvbmVudFN0YXRlKTogQWN0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVGltZXBpY2tlckFjdGlvbnMuVVBEQVRFX0NPTlRST0xTLFxuICAgICAgcGF5bG9hZDogdmFsdWVcbiAgICB9O1xuICB9XG59XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IFRpbWUsIFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZSB9IGZyb20gJy4vdGltZXBpY2tlci5tb2RlbHMnO1xuXG5jb25zdCBkZXggPSAxMDtcbmNvbnN0IGhvdXJzUGVyRGF5ID0gMjQ7XG5jb25zdCBob3Vyc1BlckRheUhhbGYgPSAxMjtcbmNvbnN0IG1pbnV0ZXNQZXJIb3VyID0gNjA7XG5jb25zdCBzZWNvbmRzUGVyTWludXRlID0gNjA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRGF0ZSh2YWx1ZT86IHN0cmluZyB8IERhdGUpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgaXNOYU4odmFsdWUuZ2V0SG91cnMoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBpc1ZhbGlkRGF0ZShuZXcgRGF0ZSh2YWx1ZSkpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTGltaXQoY29udHJvbHM6IFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZSwgbmV3RGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICBpZiAoY29udHJvbHMubWluICYmIG5ld0RhdGUgPCBjb250cm9scy5taW4pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoY29udHJvbHMubWF4ICYmIG5ld0RhdGUgPiBjb250cm9scy5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gIWlzTmFOKHRvTnVtYmVyKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhvdXJzKFxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLFxuICBpc1BNID0gZmFsc2Vcbik6IG51bWJlciB7XG4gIGNvbnN0IGhvdXIgPSB0b051bWJlcih2YWx1ZSk7XG4gIGlmIChcbiAgICBpc05hTihob3VyKSB8fFxuICAgIGhvdXIgPCAwIHx8XG4gICAgaG91ciA+IChpc1BNID8gaG91cnNQZXJEYXlIYWxmIDogaG91cnNQZXJEYXkpXG4gICkge1xuICAgIHJldHVybiBOYU47XG4gIH1cblxuICByZXR1cm4gaG91cjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWludXRlcyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgbWludXRlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAoaXNOYU4obWludXRlKSB8fCBtaW51dGUgPCAwIHx8IG1pbnV0ZSA+IG1pbnV0ZXNQZXJIb3VyKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIHJldHVybiBtaW51dGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNlY29uZHModmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IHNlY29uZHMgPSB0b051bWJlcih2YWx1ZSk7XG4gIGlmIChpc05hTihzZWNvbmRzKSB8fCBzZWNvbmRzIDwgMCB8fCBzZWNvbmRzID4gc2Vjb25kc1Blck1pbnV0ZSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cblxuICByZXR1cm4gc2Vjb25kcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGltZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IERhdGUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VUaW1lKHZhbHVlOiBEYXRlLCBkaWZmOiBUaW1lKTogRGF0ZSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gY2hhbmdlVGltZShjcmVhdGVEYXRlKG5ldyBEYXRlKCksIDAsIDAsIDApLCBkaWZmKTtcbiAgfVxuXG4gIGxldCBob3VyID0gdmFsdWUuZ2V0SG91cnMoKTtcbiAgbGV0IG1pbnV0ZXMgPSB2YWx1ZS5nZXRNaW51dGVzKCk7XG4gIGxldCBzZWNvbmRzID0gdmFsdWUuZ2V0U2Vjb25kcygpO1xuXG4gIGlmIChkaWZmLmhvdXIpIHtcbiAgICBob3VyID0gKGhvdXIgKyB0b051bWJlcihkaWZmLmhvdXIpKSAlIGhvdXJzUGVyRGF5O1xuICAgIGlmIChob3VyIDwgMCkge1xuICAgICAgaG91ciArPSBob3Vyc1BlckRheTtcbiAgICB9XG4gIH1cblxuICBpZiAoZGlmZi5taW51dGUpIHtcbiAgICBtaW51dGVzID0gbWludXRlcyArIHRvTnVtYmVyKGRpZmYubWludXRlKTtcbiAgfVxuXG4gIGlmIChkaWZmLnNlY29uZHMpIHtcbiAgICBzZWNvbmRzID0gc2Vjb25kcyArIHRvTnVtYmVyKGRpZmYuc2Vjb25kcyk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlRGF0ZSh2YWx1ZSwgaG91ciwgbWludXRlcywgc2Vjb25kcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUaW1lKHZhbHVlOiBEYXRlLCBvcHRzOiBUaW1lKTogRGF0ZSB7XG4gIGxldCBob3VyID0gcGFyc2VIb3VycyhvcHRzLmhvdXIpO1xuICBjb25zdCBtaW51dGUgPSBwYXJzZU1pbnV0ZXMob3B0cy5taW51dGUpO1xuICBjb25zdCBzZWNvbmRzID0gcGFyc2VTZWNvbmRzKG9wdHMuc2Vjb25kcykgfHwgMDtcblxuICBpZiAob3B0cy5pc1BNKSB7XG4gICAgaG91ciArPSBob3Vyc1BlckRheUhhbGY7XG4gIH1cblxuICBpZiAoIXZhbHVlKSB7XG4gICAgaWYgKCFpc05hTihob3VyKSAmJiAhaXNOYU4obWludXRlKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZURhdGUobmV3IERhdGUoKSwgaG91ciwgbWludXRlLCBzZWNvbmRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBpZiAoaXNOYU4oaG91cikgfHwgaXNOYU4obWludXRlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVEYXRlKHZhbHVlLCBob3VyLCBtaW51dGUsIHNlY29uZHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGF0ZShcbiAgdmFsdWU6IERhdGUsXG4gIGhvdXJzOiBudW1iZXIsXG4gIG1pbnV0ZXM6IG51bWJlcixcbiAgc2Vjb25kczogbnVtYmVyXG4pOiBEYXRlIHtcbiAgcmV0dXJuIG5ldyBEYXRlKFxuICAgIHZhbHVlLmdldEZ1bGxZZWFyKCksXG4gICAgdmFsdWUuZ2V0TW9udGgoKSxcbiAgICB2YWx1ZS5nZXREYXRlKCksXG4gICAgaG91cnMsXG4gICAgbWludXRlcyxcbiAgICBzZWNvbmRzLFxuICAgIHZhbHVlLmdldE1pbGxpc2Vjb25kcygpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWROdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IF92YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gIGlmIChfdmFsdWUubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBfdmFsdWU7XG4gIH1cblxuICByZXR1cm4gYDAke192YWx1ZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIb3VySW5wdXRWYWxpZChob3Vyczogc3RyaW5nLCBpc1BNOiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNOYU4ocGFyc2VIb3Vycyhob3VycywgaXNQTSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNaW51dGVJbnB1dFZhbGlkKG1pbnV0ZXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gIWlzTmFOKHBhcnNlTWludXRlcyhtaW51dGVzKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlY29uZElucHV0VmFsaWQoc2Vjb25kczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNOYU4ocGFyc2VTZWNvbmRzKHNlY29uZHMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5wdXRMaW1pdFZhbGlkKGRpZmY6IFRpbWUsIG1heDogRGF0ZSwgbWluOiBEYXRlKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5ld0RhdGUgPSBjaGFuZ2VUaW1lKG5ldyBEYXRlKCksIGRpZmYpO1xuXG4gIGlmIChtYXggJiYgbmV3RGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChtaW4gJiYgbmV3RGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnB1dFZhbGlkKFxuICBob3Vyczogc3RyaW5nLFxuICBtaW51dGVzID0gJzAnLFxuICBzZWNvbmRzID0gJzAnLFxuICBpc1BNOiBib29sZWFuXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzSG91cklucHV0VmFsaWQoaG91cnMsIGlzUE0pXG4gICAgJiYgaXNNaW51dGVJbnB1dFZhbGlkKG1pbnV0ZXMpXG4gICAgJiYgaXNTZWNvbmRJbnB1dFZhbGlkKHNlY29uZHMpO1xufVxuIiwiaW1wb3J0IHsgY2hhbmdlVGltZSB9IGZyb20gJy4vdGltZXBpY2tlci51dGlscyc7XG5pbXBvcnQge1xuICBUaW1lQ2hhbmdlRXZlbnQsXG4gIFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZSxcbiAgVGltZXBpY2tlckNvbnRyb2xzXG59IGZyb20gJy4vdGltZXBpY2tlci5tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FuQ2hhbmdlVmFsdWUoXG4gIHN0YXRlOiBUaW1lcGlja2VyQ29tcG9uZW50U3RhdGUsXG4gIGV2ZW50PzogVGltZUNoYW5nZUV2ZW50XG4pOiBib29sZWFuIHtcbiAgaWYgKHN0YXRlLnJlYWRvbmx5SW5wdXQgfHwgc3RhdGUuZGlzYWJsZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuc291cmNlID09PSAnd2hlZWwnICYmICFzdGF0ZS5tb3VzZXdoZWVsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnNvdXJjZSA9PT0gJ2tleScgJiYgIXN0YXRlLmFycm93a2V5cykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuQ2hhbmdlSG91cnMoXG4gIGV2ZW50OiBUaW1lQ2hhbmdlRXZlbnQsXG4gIGNvbnRyb2xzOiBUaW1lcGlja2VyQ29udHJvbHNcbik6IGJvb2xlYW4ge1xuICBpZiAoIWV2ZW50LnN0ZXApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoZXZlbnQuc3RlcCA+IDAgJiYgIWNvbnRyb2xzLmNhbkluY3JlbWVudEhvdXJzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGV2ZW50LnN0ZXAgPCAwICYmICFjb250cm9scy5jYW5EZWNyZW1lbnRIb3Vycykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuQ2hhbmdlTWludXRlcyhcbiAgZXZlbnQ6IFRpbWVDaGFuZ2VFdmVudCxcbiAgY29udHJvbHM6IFRpbWVwaWNrZXJDb250cm9sc1xuKTogYm9vbGVhbiB7XG4gIGlmICghZXZlbnQuc3RlcCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZXZlbnQuc3RlcCA+IDAgJiYgIWNvbnRyb2xzLmNhbkluY3JlbWVudE1pbnV0ZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGV2ZW50LnN0ZXAgPCAwICYmICFjb250cm9scy5jYW5EZWNyZW1lbnRNaW51dGVzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5DaGFuZ2VTZWNvbmRzKFxuICBldmVudDogVGltZUNoYW5nZUV2ZW50LFxuICBjb250cm9sczogVGltZXBpY2tlckNvbnRyb2xzXG4pOiBib29sZWFuIHtcbiAgaWYgKCFldmVudC5zdGVwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChldmVudC5zdGVwID4gMCAmJiAhY29udHJvbHMuY2FuSW5jcmVtZW50U2Vjb25kcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZXZlbnQuc3RlcCA8IDAgJiYgIWNvbnRyb2xzLmNhbkRlY3JlbWVudFNlY29uZHMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyb2xzVmFsdWUoXG4gIHN0YXRlOiBUaW1lcGlja2VyQ29tcG9uZW50U3RhdGVcbik6IFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZSB7XG4gIGNvbnN0IHtcbiAgICBob3VyU3RlcCxcbiAgICBtaW51dGVTdGVwLFxuICAgIHNlY29uZHNTdGVwLFxuICAgIHJlYWRvbmx5SW5wdXQsXG4gICAgZGlzYWJsZWQsXG4gICAgbW91c2V3aGVlbCxcbiAgICBhcnJvd2tleXMsXG4gICAgc2hvd1NwaW5uZXJzLFxuICAgIHNob3dNZXJpZGlhbixcbiAgICBzaG93U2Vjb25kcyxcbiAgICBtZXJpZGlhbnMsXG4gICAgbWluLFxuICAgIG1heFxuICB9ID0gc3RhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICBob3VyU3RlcCxcbiAgICBtaW51dGVTdGVwLFxuICAgIHNlY29uZHNTdGVwLFxuICAgIHJlYWRvbmx5SW5wdXQsXG4gICAgZGlzYWJsZWQsXG4gICAgbW91c2V3aGVlbCxcbiAgICBhcnJvd2tleXMsXG4gICAgc2hvd1NwaW5uZXJzLFxuICAgIHNob3dNZXJpZGlhbixcbiAgICBzaG93U2Vjb25kcyxcbiAgICBtZXJpZGlhbnMsXG4gICAgbWluLFxuICAgIG1heFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGltZXBpY2tlckNvbnRyb2xzKFxuICB2YWx1ZTogRGF0ZSxcbiAgc3RhdGU6IFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZVxuKTogVGltZXBpY2tlckNvbnRyb2xzIHtcbiAgY29uc3QgaG91cnNQZXJEYXlIYWxmID0gMTI7XG4gIGNvbnN0IHsgbWluLCBtYXgsIGhvdXJTdGVwLCBtaW51dGVTdGVwLCBzZWNvbmRzU3RlcCwgc2hvd1NlY29uZHMgfSA9IHN0YXRlO1xuICBjb25zdCByZXM6IFRpbWVwaWNrZXJDb250cm9scyA9IHtcbiAgICBjYW5JbmNyZW1lbnRIb3VyczogdHJ1ZSxcbiAgICBjYW5JbmNyZW1lbnRNaW51dGVzOiB0cnVlLFxuICAgIGNhbkluY3JlbWVudFNlY29uZHM6IHRydWUsXG5cbiAgICBjYW5EZWNyZW1lbnRIb3VyczogdHJ1ZSxcbiAgICBjYW5EZWNyZW1lbnRNaW51dGVzOiB0cnVlLFxuICAgIGNhbkRlY3JlbWVudFNlY29uZHM6IHRydWUsXG5cbiAgICBjYW5Ub2dnbGVNZXJpZGlhbjogdHJ1ZVxuICB9O1xuXG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLy8gY29tcGFyZSBkYXRlc1xuICBpZiAobWF4KSB7XG4gICAgY29uc3QgX25ld0hvdXIgPSBjaGFuZ2VUaW1lKHZhbHVlLCB7IGhvdXI6IGhvdXJTdGVwIH0pO1xuICAgIHJlcy5jYW5JbmNyZW1lbnRIb3VycyA9IG1heCA+IF9uZXdIb3VyO1xuXG4gICAgaWYgKCFyZXMuY2FuSW5jcmVtZW50SG91cnMpIHtcbiAgICAgIGNvbnN0IF9uZXdNaW51dGVzID0gY2hhbmdlVGltZSh2YWx1ZSwgeyBtaW51dGU6IG1pbnV0ZVN0ZXAgfSk7XG4gICAgICByZXMuY2FuSW5jcmVtZW50TWludXRlcyA9IHNob3dTZWNvbmRzXG4gICAgICAgID8gbWF4ID4gX25ld01pbnV0ZXNcbiAgICAgICAgOiBtYXggPj0gX25ld01pbnV0ZXM7XG4gICAgfVxuXG4gICAgaWYgKCFyZXMuY2FuSW5jcmVtZW50TWludXRlcykge1xuICAgICAgY29uc3QgX25ld1NlY29uZHMgPSBjaGFuZ2VUaW1lKHZhbHVlLCB7IHNlY29uZHM6IHNlY29uZHNTdGVwIH0pO1xuICAgICAgcmVzLmNhbkluY3JlbWVudFNlY29uZHMgPSBtYXggPj0gX25ld1NlY29uZHM7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmdldEhvdXJzKCkgPCBob3Vyc1BlckRheUhhbGYpIHtcbiAgICAgIHJlcy5jYW5Ub2dnbGVNZXJpZGlhbiA9IGNoYW5nZVRpbWUodmFsdWUsIHsgaG91cjogaG91cnNQZXJEYXlIYWxmIH0pIDwgbWF4O1xuICAgIH1cbiAgfVxuXG4gIGlmIChtaW4pIHtcbiAgICBjb25zdCBfbmV3SG91ciA9IGNoYW5nZVRpbWUodmFsdWUsIHsgaG91cjogLWhvdXJTdGVwIH0pO1xuICAgIHJlcy5jYW5EZWNyZW1lbnRIb3VycyA9IG1pbiA8IF9uZXdIb3VyO1xuXG4gICAgaWYgKCFyZXMuY2FuRGVjcmVtZW50SG91cnMpIHtcbiAgICAgIGNvbnN0IF9uZXdNaW51dGVzID0gY2hhbmdlVGltZSh2YWx1ZSwgeyBtaW51dGU6IC1taW51dGVTdGVwIH0pO1xuICAgICAgcmVzLmNhbkRlY3JlbWVudE1pbnV0ZXMgPSBzaG93U2Vjb25kc1xuICAgICAgICA/IG1pbiA8IF9uZXdNaW51dGVzXG4gICAgICAgIDogbWluIDw9IF9uZXdNaW51dGVzO1xuICAgIH1cblxuICAgIGlmICghcmVzLmNhbkRlY3JlbWVudE1pbnV0ZXMpIHtcbiAgICAgIGNvbnN0IF9uZXdTZWNvbmRzID0gY2hhbmdlVGltZSh2YWx1ZSwgeyBzZWNvbmRzOiAtc2Vjb25kc1N0ZXAgfSk7XG4gICAgICByZXMuY2FuRGVjcmVtZW50U2Vjb25kcyA9IG1pbiA8PSBfbmV3U2Vjb25kcztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuZ2V0SG91cnMoKSA+PSBob3Vyc1BlckRheUhhbGYpIHtcbiAgICAgIHJlcy5jYW5Ub2dnbGVNZXJpZGlhbiA9IGNoYW5nZVRpbWUodmFsdWUsIHsgaG91cjogLWhvdXJzUGVyRGF5SGFsZiB9KSA+IG1pbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogUHJvdmlkZXMgZGVmYXVsdCBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgdGltZXBpY2tlciAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRpbWVwaWNrZXJDb25maWcge1xuICAvKiogaG91cnMgY2hhbmdlIHN0ZXAgKi9cbiAgaG91clN0ZXAgPSAxO1xuICAvKiogaG91cnMgY2hhbmdlIHN0ZXAgKi9cbiAgbWludXRlU3RlcCA9IDU7XG4gIC8qKiBzZWNvbmRzIGNoYW5nZXMgc3RlcCAqL1xuICBzZWNvbmRzU3RlcCA9IDEwO1xuICAvKiogaWYgdHJ1ZSB3b3JrcyBpbiAxMkggbW9kZSBhbmQgZGlzcGxheXMgQU0vUE0uIElmIGZhbHNlIHdvcmtzIGluIDI0SCBtb2RlIGFuZCBoaWRlcyBBTS9QTSAqL1xuICBzaG93TWVyaWRpYW4gPSB0cnVlO1xuICAvKiogbWVyaWRpYW4gbGFiZWxzIGJhc2VkIG9uIGxvY2FsZSAqL1xuICBtZXJpZGlhbnMgPSBbJ0FNJywgJ1BNJ107XG4gIC8qKiBpZiB0cnVlIGhvdXJzIGFuZCBtaW51dGVzIGZpZWxkcyB3aWxsIGJlIHJlYWRvbmx5ICovXG4gIHJlYWRvbmx5SW5wdXQgPSBmYWxzZTtcbiAgLyoqIGlmIHRydWUgaG91cnMgYW5kIG1pbnV0ZXMgZmllbGRzIHdpbGwgYmUgZGlzYWJsZWQgKi9cbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgLyoqIGlmIHRydWUgc2Nyb2xsIGluc2lkZSBob3VycyBhbmQgbWludXRlcyBpbnB1dHMgd2lsbCBjaGFuZ2UgdGltZSAqL1xuICBtb3VzZXdoZWVsID0gdHJ1ZTtcbiAgLyoqIGlmIHRydWUgdGhlIHZhbHVlcyBvZiBob3VycyBhbmQgbWludXRlcyBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUgdXAvZG93biBhcnJvdyBrZXlzIG9uIHRoZSBrZXlib2FyZCAqL1xuICBhcnJvd2tleXMgPSB0cnVlO1xuICAvKiogaWYgdHJ1ZSBzcGlubmVyIGFycm93cyBhYm92ZSBhbmQgYmVsb3cgdGhlIGlucHV0cyB3aWxsIGJlIHNob3duICovXG4gIHNob3dTcGlubmVycyA9IHRydWU7XG4gIC8qKiBzaG93IHNlY29uZHMgaW4gdGltZXBpY2tlciAqL1xuICBzaG93U2Vjb25kcyA9IGZhbHNlO1xuICAvKiogc2hvdyBtaW51dGVzIGluIHRpbWVwaWNrZXIgKi9cbiAgc2hvd01pbnV0ZXMgPSB0cnVlO1xuICAvKiogbWluaW11bSB0aW1lIHVzZXIgY2FuIHNlbGVjdCAqL1xuICBtaW46IERhdGU7XG4gIC8qKiBtYXhpbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gIG1heDogRGF0ZTtcbn1cbiIsImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ25neC1ib290c3RyYXAvbWluaS1uZ3J4JztcbmltcG9ydCB7XG4gIGNhbkNoYW5nZUhvdXJzLFxuICBjYW5DaGFuZ2VNaW51dGVzLFxuICBjYW5DaGFuZ2VTZWNvbmRzLFxuICBjYW5DaGFuZ2VWYWx1ZSxcbiAgdGltZXBpY2tlckNvbnRyb2xzXG59IGZyb20gJy4uL3RpbWVwaWNrZXItY29udHJvbHMudXRpbCc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQ29uZmlnIH0gZnJvbSAnLi4vdGltZXBpY2tlci5jb25maWcnO1xuaW1wb3J0IHtcbiAgVGltZXBpY2tlckNvbXBvbmVudFN0YXRlLFxuICBUaW1lcGlja2VyQ29udHJvbHNcbn0gZnJvbSAnLi4vdGltZXBpY2tlci5tb2RlbHMnO1xuaW1wb3J0IHsgY2hhbmdlVGltZSwgc2V0VGltZSwgaXNWYWxpZExpbWl0IH0gZnJvbSAnLi4vdGltZXBpY2tlci51dGlscyc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQWN0aW9ucyB9IGZyb20gJy4vdGltZXBpY2tlci5hY3Rpb25zJztcblxuZXhwb3J0IGNsYXNzIFRpbWVwaWNrZXJTdGF0ZSB7XG4gIHZhbHVlOiBEYXRlO1xuICBjb25maWc6IFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZTtcbiAgY29udHJvbHM6IFRpbWVwaWNrZXJDb250cm9scztcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogVGltZXBpY2tlclN0YXRlID0ge1xuICB2YWx1ZTogbnVsbCxcbiAgY29uZmlnOiBuZXcgVGltZXBpY2tlckNvbmZpZygpLFxuICBjb250cm9sczoge1xuICAgIGNhbkluY3JlbWVudEhvdXJzOiB0cnVlLFxuICAgIGNhbkluY3JlbWVudE1pbnV0ZXM6IHRydWUsXG4gICAgY2FuSW5jcmVtZW50U2Vjb25kczogdHJ1ZSxcblxuICAgIGNhbkRlY3JlbWVudEhvdXJzOiB0cnVlLFxuICAgIGNhbkRlY3JlbWVudE1pbnV0ZXM6IHRydWUsXG4gICAgY2FuRGVjcmVtZW50U2Vjb25kczogdHJ1ZSxcblxuICAgIGNhblRvZ2dsZU1lcmlkaWFuOiB0cnVlXG4gIH1cbn07XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjeWNsb21hdGljLWNvbXBsZXhpdHlcbmV4cG9ydCBmdW5jdGlvbiB0aW1lcGlja2VyUmVkdWNlcihzdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pIHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgVGltZXBpY2tlckFjdGlvbnMuV1JJVEVfVkFMVUU6IHtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgeyB2YWx1ZTogYWN0aW9uLnBheWxvYWQgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBUaW1lcGlja2VyQWN0aW9ucy5DSEFOR0VfSE9VUlM6IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWNhbkNoYW5nZVZhbHVlKHN0YXRlLmNvbmZpZywgYWN0aW9uLnBheWxvYWQpIHx8XG4gICAgICAgICFjYW5DaGFuZ2VIb3VycyhhY3Rpb24ucGF5bG9hZCwgc3RhdGUuY29udHJvbHMpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBfbmV3VGltZSA9IGNoYW5nZVRpbWUoc3RhdGUudmFsdWUsIHsgaG91cjogYWN0aW9uLnBheWxvYWQuc3RlcCB9KTtcblxuICAgICAgaWYgKChzdGF0ZS5jb25maWcubWF4IHx8IHN0YXRlLmNvbmZpZy5taW4pICYmICFpc1ZhbGlkTGltaXQoc3RhdGUuY29uZmlnLCBfbmV3VGltZSkpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgeyB2YWx1ZTogX25ld1RpbWUgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBUaW1lcGlja2VyQWN0aW9ucy5DSEFOR0VfTUlOVVRFUzoge1xuICAgICAgaWYgKFxuICAgICAgICAhY2FuQ2hhbmdlVmFsdWUoc3RhdGUuY29uZmlnLCBhY3Rpb24ucGF5bG9hZCkgfHxcbiAgICAgICAgIWNhbkNoYW5nZU1pbnV0ZXMoYWN0aW9uLnBheWxvYWQsIHN0YXRlLmNvbnRyb2xzKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgX25ld1RpbWUgPSBjaGFuZ2VUaW1lKHN0YXRlLnZhbHVlLCB7IG1pbnV0ZTogYWN0aW9uLnBheWxvYWQuc3RlcCB9KTtcblxuICAgICAgaWYgKChzdGF0ZS5jb25maWcubWF4IHx8IHN0YXRlLmNvbmZpZy5taW4pICYmICFpc1ZhbGlkTGltaXQoc3RhdGUuY29uZmlnLCBfbmV3VGltZSkpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHsgdmFsdWU6IF9uZXdUaW1lIH0pO1xuICAgIH1cblxuICAgIGNhc2UgVGltZXBpY2tlckFjdGlvbnMuQ0hBTkdFX1NFQ09ORFM6IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWNhbkNoYW5nZVZhbHVlKHN0YXRlLmNvbmZpZywgYWN0aW9uLnBheWxvYWQpIHx8XG4gICAgICAgICFjYW5DaGFuZ2VTZWNvbmRzKGFjdGlvbi5wYXlsb2FkLCBzdGF0ZS5jb250cm9scylcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9uZXdUaW1lID0gY2hhbmdlVGltZShzdGF0ZS52YWx1ZSwge1xuICAgICAgICBzZWNvbmRzOiBhY3Rpb24ucGF5bG9hZC5zdGVwXG4gICAgICB9KTtcblxuICAgICAgaWYgKChzdGF0ZS5jb25maWcubWF4IHx8IHN0YXRlLmNvbmZpZy5taW4pICYmICFpc1ZhbGlkTGltaXQoc3RhdGUuY29uZmlnLCBfbmV3VGltZSkpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHsgdmFsdWU6IF9uZXdUaW1lIH0pO1xuICAgIH1cblxuICAgIGNhc2UgVGltZXBpY2tlckFjdGlvbnMuU0VUX1RJTUVfVU5JVDoge1xuICAgICAgaWYgKCFjYW5DaGFuZ2VWYWx1ZShzdGF0ZS5jb25maWcpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgX25ld1RpbWUgPSBzZXRUaW1lKHN0YXRlLnZhbHVlLCBhY3Rpb24ucGF5bG9hZCk7XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgeyB2YWx1ZTogX25ld1RpbWUgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBUaW1lcGlja2VyQWN0aW9ucy5VUERBVEVfQ09OVFJPTFM6IHtcbiAgICAgIGNvbnN0IF9uZXdDb250cm9sc1N0YXRlID0gdGltZXBpY2tlckNvbnRyb2xzKHN0YXRlLnZhbHVlLCBhY3Rpb24ucGF5bG9hZCk7XG4gICAgICBjb25zdCBfbmV3U3RhdGU6IFRpbWVwaWNrZXJTdGF0ZSA9IHtcbiAgICAgICAgdmFsdWU6IHN0YXRlLnZhbHVlLFxuICAgICAgICBjb25maWc6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBjb250cm9sczogX25ld0NvbnRyb2xzU3RhdGVcbiAgICAgIH07XG5cbiAgICAgIGlmIChzdGF0ZS5jb25maWcuc2hvd01lcmlkaWFuICE9PSBfbmV3U3RhdGUuY29uZmlnLnNob3dNZXJpZGlhbikge1xuICAgICAgICBpZiAoc3RhdGUudmFsdWUpIHtcbiAgICAgICAgICBfbmV3U3RhdGUudmFsdWUgPSBuZXcgRGF0ZShzdGF0ZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBfbmV3U3RhdGUpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHRpbWVwaWNrZXJSZWR1Y2VyLFxuICBUaW1lcGlja2VyU3RhdGUsXG4gIGluaXRpYWxTdGF0ZVxufSBmcm9tICcuL3RpbWVwaWNrZXIucmVkdWNlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQWN0aW9uLCBNaW5pU3RvcmUsIE1pbmlTdGF0ZSB9IGZyb20gJ25neC1ib290c3RyYXAvbWluaS1uZ3J4JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRpbWVwaWNrZXJTdG9yZSBleHRlbmRzIE1pbmlTdG9yZTxUaW1lcGlja2VyU3RhdGU+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgX2Rpc3BhdGNoZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjdGlvbj4oe1xuICAgICAgdHlwZTogJ1ttaW5pLW5ncnhdIGRpc3BhdGNoZXIgaW5pdCdcbiAgICB9KTtcbiAgICBjb25zdCBzdGF0ZSA9IG5ldyBNaW5pU3RhdGU8VGltZXBpY2tlclN0YXRlPihcbiAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgIF9kaXNwYXRjaGVyLFxuICAgICAgdGltZXBpY2tlclJlZHVjZXJcbiAgICApO1xuICAgIHN1cGVyKF9kaXNwYXRjaGVyLCB0aW1lcGlja2VyUmVkdWNlciwgc3RhdGUpO1xuICB9XG59XG4iLCIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1mb3J3YXJkLXJlZiBtYXgtZmlsZS1saW5lLWNvdW50ICovXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVGltZXBpY2tlckFjdGlvbnMgfSBmcm9tICcuL3JlZHVjZXIvdGltZXBpY2tlci5hY3Rpb25zJztcbmltcG9ydCB7IFRpbWVwaWNrZXJTdG9yZSB9IGZyb20gJy4vcmVkdWNlci90aW1lcGlja2VyLnN0b3JlJztcbmltcG9ydCB7IGdldENvbnRyb2xzVmFsdWUgfSBmcm9tICcuL3RpbWVwaWNrZXItY29udHJvbHMudXRpbCc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQ29uZmlnIH0gZnJvbSAnLi90aW1lcGlja2VyLmNvbmZpZyc7XG5cbmltcG9ydCB7XG4gIFRpbWVDaGFuZ2VTb3VyY2UsXG4gIFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZSxcbiAgVGltZXBpY2tlckNvbnRyb2xzXG59IGZyb20gJy4vdGltZXBpY2tlci5tb2RlbHMnO1xuXG5pbXBvcnQge1xuICBpc1ZhbGlkRGF0ZSxcbiAgcGFkTnVtYmVyLFxuICBwYXJzZVRpbWUsXG4gIGlzSW5wdXRWYWxpZCxcbiAgaXNIb3VySW5wdXRWYWxpZCxcbiAgaXNNaW51dGVJbnB1dFZhbGlkLFxuICBpc1NlY29uZElucHV0VmFsaWQsXG4gIGlzSW5wdXRMaW1pdFZhbGlkXG59IGZyb20gJy4vdGltZXBpY2tlci51dGlscyc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3Nvck1vZGVsIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgVElNRVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBDb250cm9sVmFsdWVBY2Nlc3Nvck1vZGVsID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby11c2UtYmVmb3JlLWRlY2xhcmUgKi9cbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZXBpY2tlckNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0aW1lcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1RJTUVQSUNLRVJfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiwgVGltZXBpY2tlclN0b3JlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtgXG4gICAgLmJzLWNoZXZyb24ge1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDlweDtcbiAgICAgIGhlaWdodDogOXB4O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYm9yZGVyLXdpZHRoOiAzcHggMHB4IDAgM3B4O1xuICAgIH1cblxuICAgIC5icy1jaGV2cm9uLXVwIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgdG9wOiAycHg7XG4gICAgfVxuXG4gICAgLmJzLWNoZXZyb24tZG93biB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzVkZWcpO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEzNWRlZyk7XG4gICAgICB0b3A6IC0ycHg7XG4gICAgfVxuXG4gICAgLmJzLXRpbWVwaWNrZXItZmllbGQge1xuICAgICAgd2lkdGg6IDUwcHg7XG4gICAgfVxuICBgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lcGlja2VyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgVGltZXBpY2tlckNvbXBvbmVudFN0YXRlLFxuICAgIFRpbWVwaWNrZXJDb250cm9scyxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95IHtcbiAgLyoqIGhvdXJzIGNoYW5nZSBzdGVwICovXG4gIEBJbnB1dCgpIGhvdXJTdGVwOiBudW1iZXI7XG4gIC8qKiBob3VycyBjaGFuZ2Ugc3RlcCAqL1xuICBASW5wdXQoKSBtaW51dGVTdGVwOiBudW1iZXI7XG4gIC8qKiBzZWNvbmRzIGNoYW5nZSBzdGVwICovXG4gIEBJbnB1dCgpIHNlY29uZHNTdGVwOiBudW1iZXI7XG4gIC8qKiBpZiB0cnVlIGhvdXJzIGFuZCBtaW51dGVzIGZpZWxkcyB3aWxsIGJlIHJlYWRvbmx5ICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5SW5wdXQ6IGJvb2xlYW47XG4gIC8qKiBpZiB0cnVlIGhvdXJzIGFuZCBtaW51dGVzIGZpZWxkcyB3aWxsIGJlIGRpc2FibGVkICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSBzY3JvbGwgaW5zaWRlIGhvdXJzIGFuZCBtaW51dGVzIGlucHV0cyB3aWxsIGNoYW5nZSB0aW1lICovXG4gIEBJbnB1dCgpIG1vdXNld2hlZWw6IGJvb2xlYW47XG4gIC8qKiBpZiB0cnVlIHRoZSB2YWx1ZXMgb2YgaG91cnMgYW5kIG1pbnV0ZXMgY2FuIGJlIGNoYW5nZWQgdXNpbmcgdGhlIHVwL2Rvd24gYXJyb3cga2V5cyBvbiB0aGUga2V5Ym9hcmQgKi9cbiAgQElucHV0KCkgYXJyb3drZXlzOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSBzcGlubmVyIGFycm93cyBhYm92ZSBhbmQgYmVsb3cgdGhlIGlucHV0cyB3aWxsIGJlIHNob3duICovXG4gIEBJbnB1dCgpIHNob3dTcGlubmVyczogYm9vbGVhbjtcbiAgLyoqIGlmIHRydWUgbWVyaWRpYW4gYnV0dG9uIHdpbGwgYmUgc2hvd24gKi9cbiAgQElucHV0KCkgc2hvd01lcmlkaWFuOiBib29sZWFuO1xuICAvKiogc2hvdyBtaW51dGVzIGluIHRpbWVwaWNrZXIgKi9cbiAgQElucHV0KCkgc2hvd01pbnV0ZXM6IGJvb2xlYW47XG4gIC8qKiBzaG93IHNlY29uZHMgaW4gdGltZXBpY2tlciAqL1xuICBASW5wdXQoKSBzaG93U2Vjb25kczogYm9vbGVhbjtcbiAgLyoqIG1lcmlkaWFuIGxhYmVscyBiYXNlZCBvbiBsb2NhbGUgKi9cbiAgQElucHV0KCkgbWVyaWRpYW5zOiBzdHJpbmdbXTtcbiAgLyoqIG1pbmltdW0gdGltZSB1c2VyIGNhbiBzZWxlY3QgKi9cbiAgQElucHV0KCkgbWluOiBEYXRlO1xuICAvKiogbWF4aW11bSB0aW1lIHVzZXIgY2FuIHNlbGVjdCAqL1xuICBASW5wdXQoKSBtYXg6IERhdGU7XG5cbiAgLyoqIGVtaXRzIHRydWUgaWYgdmFsdWUgaXMgYSB2YWxpZCBkYXRlICovXG4gIEBPdXRwdXQoKSBpc1ZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8vIHVpIHZhcmlhYmxlc1xuICBob3Vyczogc3RyaW5nO1xuICBtaW51dGVzOiBzdHJpbmc7XG4gIHNlY29uZHM6IHN0cmluZztcbiAgbWVyaWRpYW46IHN0cmluZztcblxuICAvKiogQGRlcHJlY2F0ZWQgLSBwbGVhc2UgdXNlIGBpc0VkaXRhYmxlYCBpbnN0ZWFkICovXG4gIGdldCBpc1NwaW5uZXJzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93U3Bpbm5lcnMgJiYgIXRoaXMucmVhZG9ubHlJbnB1dDtcbiAgfVxuXG4gIGdldCBpc0VkaXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHRoaXMucmVhZG9ubHlJbnB1dCB8fCB0aGlzLmRpc2FibGVkKTtcbiAgfVxuXG4gIC8vIG1pblxcbWF4IHZhbGlkYXRpb24gZm9yIGlucHV0IGZpZWxkc1xuICBpbnZhbGlkSG91cnMgPSBmYWxzZTtcbiAgaW52YWxpZE1pbnV0ZXMgPSBmYWxzZTtcbiAgaW52YWxpZFNlY29uZHMgPSBmYWxzZTtcblxuICAvLyB0aW1lIHBpY2tlciBjb250cm9scyBzdGF0ZVxuICBjYW5JbmNyZW1lbnRIb3VyczogYm9vbGVhbjtcbiAgY2FuSW5jcmVtZW50TWludXRlczogYm9vbGVhbjtcbiAgY2FuSW5jcmVtZW50U2Vjb25kczogYm9vbGVhbjtcblxuICBjYW5EZWNyZW1lbnRIb3VyczogYm9vbGVhbjtcbiAgY2FuRGVjcmVtZW50TWludXRlczogYm9vbGVhbjtcbiAgY2FuRGVjcmVtZW50U2Vjb25kczogYm9vbGVhbjtcblxuICBjYW5Ub2dnbGVNZXJpZGlhbjogYm9vbGVhbjtcblxuICAvLyBjb250cm9sIHZhbHVlIGFjY2Vzc29yIG1ldGhvZHNcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvbkNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvblRvdWNoZWQgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgdGltZXBpY2tlclN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIF9jb25maWc6IFRpbWVwaWNrZXJDb25maWcsXG4gICAgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9zdG9yZTogVGltZXBpY2tlclN0b3JlLFxuICAgIHByaXZhdGUgX3RpbWVwaWNrZXJBY3Rpb25zOiBUaW1lcGlja2VyQWN0aW9uc1xuICApIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIF9jb25maWcpO1xuXG4gICAgdGhpcy50aW1lcGlja2VyU3ViID0gX3N0b3JlXG4gICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnZhbHVlKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERhdGUpID0+IHtcbiAgICAgICAgLy8gdXBkYXRlIFVJIHZhbHVlcyBpZiBkYXRlIGNoYW5nZWRcbiAgICAgICAgdGhpcy5fcmVuZGVyVGltZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIHRoaXMuX3RpbWVwaWNrZXJBY3Rpb25zLnVwZGF0ZUNvbnRyb2xzKGdldENvbnRyb2xzVmFsdWUodGhpcykpXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIF9zdG9yZVxuICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5jb250cm9scylcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRyb2xzU3RhdGU6IFRpbWVwaWNrZXJDb250cm9scykgPT4ge1xuICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChpc0lucHV0VmFsaWQodGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB0aGlzLnNlY29uZHMsIHRoaXMuaXNQTSgpKSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgY29udHJvbHNTdGF0ZSk7XG4gICAgICAgIF9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmVzZXRWYWxpZGF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuaW52YWxpZEhvdXJzID0gZmFsc2U7XG4gICAgdGhpcy5pbnZhbGlkTWludXRlcyA9IGZhbHNlO1xuICAgIHRoaXMuaW52YWxpZFNlY29uZHMgPSBmYWxzZTtcbiAgfVxuXG4gIGlzUE0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd01lcmlkaWFuICYmIHRoaXMubWVyaWRpYW4gPT09IHRoaXMubWVyaWRpYW5zWzFdO1xuICB9XG5cbiAgcHJldkRlZigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICB3aGVlbFNpZ24oJGV2ZW50OiBXaGVlbEV2ZW50SW5pdCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguc2lnbigkZXZlbnQuZGVsdGFZKSAqIC0xO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgdGhpcy5fdGltZXBpY2tlckFjdGlvbnMudXBkYXRlQ29udHJvbHMoZ2V0Q29udHJvbHNWYWx1ZSh0aGlzKSlcbiAgICApO1xuICB9XG5cbiAgY2hhbmdlSG91cnMoc3RlcDogbnVtYmVyLCBzb3VyY2U6IFRpbWVDaGFuZ2VTb3VyY2UgPSAnJyk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2godGhpcy5fdGltZXBpY2tlckFjdGlvbnMuY2hhbmdlSG91cnMoeyBzdGVwLCBzb3VyY2UgfSkpO1xuICB9XG5cbiAgY2hhbmdlTWludXRlcyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXJBY3Rpb25zLmNoYW5nZU1pbnV0ZXMoeyBzdGVwLCBzb3VyY2UgfSlcbiAgICApO1xuICB9XG5cbiAgY2hhbmdlU2Vjb25kcyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXJBY3Rpb25zLmNoYW5nZVNlY29uZHMoeyBzdGVwLCBzb3VyY2UgfSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlSG91cnMoaG91cnM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5ob3VycyA9IGhvdXJzO1xuXG4gICAgY29uc3QgaXNWYWxpZCA9IGlzSG91cklucHV0VmFsaWQodGhpcy5ob3VycywgdGhpcy5pc1BNKCkpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZEhvdXJzID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVUaW1lKCk7XG4gIH1cblxuICB1cGRhdGVNaW51dGVzKG1pbnV0ZXM6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5taW51dGVzID0gbWludXRlcztcblxuICAgIGNvbnN0IGlzVmFsaWQgPSBpc01pbnV0ZUlucHV0VmFsaWQodGhpcy5taW51dGVzKSAmJiB0aGlzLmlzVmFsaWRMaW1pdCgpO1xuXG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRNaW51dGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVUaW1lKCk7XG4gIH1cblxuICB1cGRhdGVTZWNvbmRzKHNlY29uZHM6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5zZWNvbmRzID0gc2Vjb25kcztcblxuICAgIGNvbnN0IGlzVmFsaWQgPSBpc1NlY29uZElucHV0VmFsaWQodGhpcy5zZWNvbmRzKSAmJiB0aGlzLmlzVmFsaWRMaW1pdCgpO1xuXG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRTZWNvbmRzID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVUaW1lKCk7XG4gIH1cblxuICBpc1ZhbGlkTGltaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzSW5wdXRMaW1pdFZhbGlkKHtcbiAgICAgIGhvdXI6IHRoaXMuaG91cnMsXG4gICAgICBtaW51dGU6IHRoaXMubWludXRlcyxcbiAgICAgIHNlY29uZHM6IHRoaXMuc2Vjb25kcyxcbiAgICAgIGlzUE06IHRoaXMuaXNQTSgpXG4gICAgfSwgdGhpcy5tYXgsIHRoaXMubWluKTtcbiAgfVxuXG4gIF91cGRhdGVUaW1lKCkge1xuICAgIGNvbnN0IF9zZWNvbmRzID0gdGhpcy5zaG93U2Vjb25kcyA/IHRoaXMuc2Vjb25kcyA6IHZvaWQgMDtcbiAgICBjb25zdCBfbWludXRlcyA9IHRoaXMuc2hvd01pbnV0ZXMgPyB0aGlzLm1pbnV0ZXMgOiB2b2lkIDA7XG4gICAgaWYgKCFpc0lucHV0VmFsaWQodGhpcy5ob3VycywgX21pbnV0ZXMsIF9zZWNvbmRzLCB0aGlzLmlzUE0oKSkpIHtcbiAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXJBY3Rpb25zLnNldFRpbWUoe1xuICAgICAgICBob3VyOiB0aGlzLmhvdXJzLFxuICAgICAgICBtaW51dGU6IHRoaXMubWludXRlcyxcbiAgICAgICAgc2Vjb25kczogdGhpcy5zZWNvbmRzLFxuICAgICAgICBpc1BNOiB0aGlzLmlzUE0oKVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdG9nZ2xlTWVyaWRpYW4oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3dNZXJpZGlhbiB8fCAhdGhpcy5pc0VkaXRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgX2hvdXJzUGVyRGF5SGFsZiA9IDEyO1xuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgdGhpcy5fdGltZXBpY2tlckFjdGlvbnMuY2hhbmdlSG91cnMoe1xuICAgICAgICBzdGVwOiBfaG91cnNQZXJEYXlIYWxmLFxuICAgICAgICBzb3VyY2U6ICcnXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgYSBuZXcgdmFsdWUgdG8gdGhlIGVsZW1lbnQuXG4gICAqL1xuICB3cml0ZVZhbHVlKG9iajogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB8IERhdGUpOiB2b2lkIHtcbiAgICBpZiAoaXNWYWxpZERhdGUob2JqKSkge1xuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2godGhpcy5fdGltZXBpY2tlckFjdGlvbnMud3JpdGVWYWx1ZShwYXJzZVRpbWUob2JqKSkpO1xuICAgIH0gZWxzZSBpZiAob2JqID09IG51bGwpIHtcbiAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKHRoaXMuX3RpbWVwaWNrZXJBY3Rpb25zLndyaXRlVmFsdWUobnVsbCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgdG91Y2ggZXZlbnQuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgc3RhdHVzIGNoYW5nZXMgdG8gb3IgZnJvbSBcImRpc2FibGVkXCIuXG4gICAqIERlcGVuZGluZyBvbiB0aGUgdmFsdWUsIGl0IHdpbGwgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGFwcHJvcHJpYXRlIERPTSBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZFxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVwaWNrZXJTdWIudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlclRpbWUodmFsdWU6IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWREYXRlKHZhbHVlKSkge1xuICAgICAgdGhpcy5ob3VycyA9ICcnO1xuICAgICAgdGhpcy5taW51dGVzID0gJyc7XG4gICAgICB0aGlzLnNlY29uZHMgPSAnJztcbiAgICAgIHRoaXMubWVyaWRpYW4gPSB0aGlzLm1lcmlkaWFuc1swXTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IF92YWx1ZSA9IHBhcnNlVGltZSh2YWx1ZSk7XG4gICAgY29uc3QgX2hvdXJzUGVyRGF5SGFsZiA9IDEyO1xuICAgIGxldCBfaG91cnMgPSBfdmFsdWUuZ2V0SG91cnMoKTtcblxuICAgIGlmICh0aGlzLnNob3dNZXJpZGlhbikge1xuICAgICAgdGhpcy5tZXJpZGlhbiA9IHRoaXMubWVyaWRpYW5zW19ob3VycyA+PSBfaG91cnNQZXJEYXlIYWxmID8gMSA6IDBdO1xuICAgICAgX2hvdXJzID0gX2hvdXJzICUgX2hvdXJzUGVyRGF5SGFsZjtcbiAgICAgIC8vIHNob3VsZCBiZSAxMiBQTSwgbm90IDAwIFBNXG4gICAgICBpZiAoX2hvdXJzID09PSAwKSB7XG4gICAgICAgIF9ob3VycyA9IF9ob3Vyc1BlckRheUhhbGY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ob3VycyA9IHBhZE51bWJlcihfaG91cnMpO1xuICAgIHRoaXMubWludXRlcyA9IHBhZE51bWJlcihfdmFsdWUuZ2V0TWludXRlcygpKTtcbiAgICB0aGlzLnNlY29uZHMgPSBwYWROdW1iZXIoX3ZhbHVlLmdldFVUQ1NlY29uZHMoKSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQWN0aW9ucyB9IGZyb20gJy4vcmVkdWNlci90aW1lcGlja2VyLmFjdGlvbnMnO1xuaW1wb3J0IHsgVGltZXBpY2tlckNvbmZpZyB9IGZyb20gJy4vdGltZXBpY2tlci5jb25maWcnO1xuaW1wb3J0IHsgVGltZXBpY2tlclN0b3JlIH0gZnJvbSAnLi9yZWR1Y2VyL3RpbWVwaWNrZXIuc3RvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbVGltZXBpY2tlckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtUaW1lcGlja2VyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lcGlja2VyTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBUaW1lcGlja2VyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbVGltZXBpY2tlckNvbmZpZywgVGltZXBpY2tlckFjdGlvbnMsIFRpbWVwaWNrZXJTdG9yZV1cbiAgICB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsiSW5qZWN0YWJsZSIsInRzbGliXzEuX19leHRlbmRzIiwiQmVoYXZpb3JTdWJqZWN0IiwiTWluaVN0YXRlIiwiTWluaVN0b3JlIiwiTkdfVkFMVUVfQUNDRVNTT1IiLCJmb3J3YXJkUmVmIiwiRXZlbnRFbWl0dGVyIiwiQ29tcG9uZW50IiwiQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kiLCJWaWV3RW5jYXBzdWxhdGlvbiIsIkNoYW5nZURldGVjdG9yUmVmIiwiSW5wdXQiLCJPdXRwdXQiLCJOZ01vZHVsZSIsIkNvbW1vbk1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7Ozs7O1FBaUJFLHNDQUFVOzs7O1lBQVYsVUFBVyxLQUFvQjtnQkFDN0IsT0FBTztvQkFDTCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsV0FBVztvQkFDbkMsT0FBTyxFQUFFLEtBQUs7aUJBQ2YsQ0FBQzthQUNIOzs7OztRQUVELHVDQUFXOzs7O1lBQVgsVUFBWSxLQUFzQjtnQkFDaEMsT0FBTztvQkFDTCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsWUFBWTtvQkFDcEMsT0FBTyxFQUFFLEtBQUs7aUJBQ2YsQ0FBQzth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
|