@idea-ionic/agenda 5.29.1 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/environment.d.ts +3 -0
- package/esm2020/environment.mjs +20 -0
- package/esm2020/idea-ionic-agenda.mjs +5 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/esm2020/src/agenda.component.mjs +248 -0
- package/esm2020/src/agenda.module.mjs +57 -0
- package/esm2020/src/calendar.component.mjs +125 -0
- package/esm2020/src/calendarCreation.component.mjs +142 -0
- package/esm2020/src/calendarItem.component.mjs +136 -0
- package/esm2020/src/calendars.service.mjs +255 -0
- package/esm2020/src/dateFormatter.provider.mjs +38 -0
- package/fesm2015/idea-ionic-agenda.mjs +974 -0
- package/fesm2015/idea-ionic-agenda.mjs.map +1 -0
- package/fesm2020/idea-ionic-agenda.mjs +967 -0
- package/fesm2020/idea-ionic-agenda.mjs.map +1 -0
- package/idea-ionic-agenda.d.ts +4 -0
- package/package.json +31 -19
- package/src/agenda.component.d.ts +127 -2
- package/src/agenda.module.d.ts +13 -0
- package/src/calendar.component.d.ts +41 -1
- package/src/calendarCreation.component.d.ts +41 -1
- package/src/calendarItem.component.d.ts +25 -0
- package/src/calendars.service.d.ts +50 -0
- package/src/dateFormatter.provider.d.ts +3 -0
- package/bundles/idea-ionic-agenda.umd.js +0 -1141
- package/bundles/idea-ionic-agenda.umd.js.map +0 -1
- package/bundles/idea-ionic-agenda.umd.min.js +0 -16
- package/bundles/idea-ionic-agenda.umd.min.js.map +0 -1
- package/esm2015/environment.js +0 -17
- package/esm2015/environment.ngsummary.json +0 -1
- package/esm2015/idea-ionic-agenda.js +0 -2
- package/esm2015/idea-ionic-agenda.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/animations/animations.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/common/common.ngfactory.js +0 -5
- package/esm2015/node_modules/@angular/common/common.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/common/http/http.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/core/core.ngfactory.js +0 -4
- package/esm2015/node_modules/@angular/core/core.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/forms/forms.ngfactory.js +0 -9
- package/esm2015/node_modules/@angular/forms/forms.ngsummary.json +0 -1
- package/esm2015/node_modules/@angular/router/router.ngfactory.js +0 -12
- package/esm2015/node_modules/@angular/router/router.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/core-plugin-definitions.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/definitions.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/global.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/accessibility.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/app.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/browser.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/camera.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/clipboard.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/device.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/filesystem.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/geolocation.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/local-notifications.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/modals.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/motion.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/network.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/permissions.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/share.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/splash-screen.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/storage.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web/toast.ngsummary.json +0 -1
- package/esm2015/node_modules/@capacitor/core/dist/esm/web-plugins.ngsummary.json +0 -1
- package/esm2015/node_modules/@idea-ionic/common/idea-ionic-common.ngfactory.js +0 -1546
- package/esm2015/node_modules/@idea-ionic/common/idea-ionic-common.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/angular/ionic-angular.ngfactory.js +0 -524
- package/esm2015/node_modules/@ionic/angular/ionic-angular.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/angular/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/action-sheet/action-sheet-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/alert/alert-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/checkbox/checkbox-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/content/content-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/datetime/datetime-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/input/input-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/loading/loading-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/menu/menu-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/modal/modal-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/nav/constants.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/nav/nav-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/nav/view-controller.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/picker/picker-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/popover/popover-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/radio-group/radio-group-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/range/range-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/refresher/refresher-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/reorder-group/reorder-group-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/route/route-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/router/utils/interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/searchbar/searchbar-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/segment/segment-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/select/select-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/select-popover/select-popover-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/spinner/spinner-configs.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/spinner/spinner-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/tab-bar/tab-bar-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/textarea/textarea-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/toast/toast-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/toggle/toggle-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components/virtual-scroll/virtual-scroll-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/components.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/global/config.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/stencil-public-runtime.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/animation-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/animation.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/cubic-bezier.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/config.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/gesture/gesture-controller.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/gesture/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/menu-controller/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/overlays-interface.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/overlays.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/platform.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/sanitization/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/index.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/ios.transition.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/md.transition.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/storage/ionic-storage.ngsummary.json +0 -1
- package/esm2015/node_modules/@ionic/storage/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-calendar/angular-calendar.ngfactory.js +0 -397
- package/esm2015/node_modules/angular-calendar/angular-calendar.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-calendar/date-adapters/date-fns/index.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-calendar/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-draggable-droppable/angular-draggable-droppable.ngfactory.js +0 -5
- package/esm2015/node_modules/angular-draggable-droppable/angular-draggable-droppable.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-draggable-droppable/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-resizable-element/angular-resizable-element.ngfactory.js +0 -5
- package/esm2015/node_modules/angular-resizable-element/angular-resizable-element.ngsummary.json +0 -1
- package/esm2015/node_modules/angular-resizable-element/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/node_modules/calendar-utils/calendar-utils.ngsummary.json +0 -1
- package/esm2015/node_modules/calendar-utils/date-adapters/date-adapter/index.ngsummary.json +0 -1
- package/esm2015/node_modules/date-fns/typings.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/APIRequestLog.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/RCAttachedResource.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/RCConfiguredFolder.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/RCFolder.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/RCResource.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/address.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/amazonTranslateLanguages.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/announcement.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/appointment.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/attachment.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/booleanChoices.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/cacheable.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/cacheableResource.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/calendar.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/check.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/clientInfo.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/contactRequest.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/contacts.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/countries.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/customBlockMeta.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/customFieldMeta.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/customFieldTypes.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/customSectionMeta.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/delta.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/emailChangeRequest.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/emailData.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/epoch.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/errorReport.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/errorWhitelisted.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/index.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/invitation.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/ionicons.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/label.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/labelVariable.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/languages.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/languages.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/limitCounter.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/markdown.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/membership.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/notification.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/pdfTemplate.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/projectPlan.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/projectSubscription.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/pushNotificationsDevice.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/pushNotificationsPlatforms.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/resource.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/sentiment.enum.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/signature.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/signedURL.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/stringVariable.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/suggestion.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/team.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/teamModules.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/timeInterval.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/user.model.ngsummary.json +0 -1
- package/esm2015/node_modules/idea-toolbox/dist/utils.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/components/icon/icon.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/components/icon/utils.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/components.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/index.ngsummary.json +0 -1
- package/esm2015/node_modules/ionicons/dist/types/stencil-public-runtime.ngsummary.json +0 -1
- package/esm2015/node_modules/localforage/typings/localforage.ngsummary.json +0 -1
- package/esm2015/node_modules/positioning/dist/entry.ngsummary.json +0 -1
- package/esm2015/node_modules/positioning/dist/positioning.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/index.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/AsyncSubject.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/BehaviorSubject.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/InnerSubscriber.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Notification.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Observable.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Operator.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/OuterSubscriber.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/ReplaySubject.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Scheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Subject.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Subscriber.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/Subscription.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/config.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/ConnectableObservable.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/bindCallback.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/bindNodeCallback.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/combineLatest.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/concat.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/defer.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/empty.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/forkJoin.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/from.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/fromEvent.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/fromEventPattern.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/generate.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/iif.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/interval.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/merge.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/never.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/of.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/onErrorResumeNext.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/pairs.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/partition.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/race.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/range.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/throwError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/timer.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/using.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/observable/zip.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/operators/groupBy.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduled/scheduled.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/Action.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/AsapScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/AsyncAction.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/AsyncScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/QueueScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/animationFrame.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/asap.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/async.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/scheduler/queue.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/symbol/observable.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/types.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/ArgumentOutOfRangeError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/EmptyError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/ObjectUnsubscribedError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/TimeoutError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/UnsubscriptionError.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/identity.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/isObservable.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/noop.ngsummary.json +0 -1
- package/esm2015/node_modules/rxjs/internal/util/pipe.ngsummary.json +0 -1
- package/esm2015/node_modules/signature_pad/dist/types/point.ngsummary.json +0 -1
- package/esm2015/node_modules/signature_pad/dist/types/signature_pad.ngsummary.json +0 -1
- package/esm2015/node_modules/tslib/tslib.ngsummary.json +0 -1
- package/esm2015/public-api.ngsummary.json +0 -1
- package/esm2015/src/agenda.component.js +0 -142
- package/esm2015/src/agenda.component.ngfactory.js +0 -120
- package/esm2015/src/agenda.component.ngsummary.json +0 -1
- package/esm2015/src/agenda.component.scss.shim.ngstyle.js +0 -3
- package/esm2015/src/agenda.module.js +0 -40
- package/esm2015/src/agenda.module.ngfactory.js +0 -20
- package/esm2015/src/agenda.module.ngsummary.json +0 -1
- package/esm2015/src/calendar.component.js +0 -111
- package/esm2015/src/calendar.component.ngfactory.js +0 -54
- package/esm2015/src/calendar.component.ngsummary.json +0 -1
- package/esm2015/src/calendar.component.scss.shim.ngstyle.js +0 -3
- package/esm2015/src/calendarCreation.component.js +0 -116
- package/esm2015/src/calendarCreation.component.ngfactory.js +0 -43
- package/esm2015/src/calendarCreation.component.ngsummary.json +0 -1
- package/esm2015/src/calendarCreation.component.scss.shim.ngstyle.js +0 -3
- package/esm2015/src/calendarItem.component.js +0 -119
- package/esm2015/src/calendarItem.component.ngfactory.js +0 -24
- package/esm2015/src/calendarItem.component.ngsummary.json +0 -1
- package/esm2015/src/calendarItem.component.scss.shim.ngstyle.js +0 -3
- package/esm2015/src/calendars.service.js +0 -209
- package/esm2015/src/calendars.service.ngsummary.json +0 -1
- package/esm2015/src/dateFormatter.provider.js +0 -32
- package/esm2015/src/dateFormatter.provider.ngsummary.json +0 -1
- package/fesm2015/idea-ionic-agenda.js +0 -736
- package/fesm2015/idea-ionic-agenda.js.map +0 -1
- package/idea-ionic-agenda.metadata.json +0 -1
- package/src/agenda.component.ngfactory.d.ts +0 -1
- package/src/agenda.component.scss.shim.ngstyle.d.ts +0 -1
- package/src/agenda.module.ngfactory.d.ts +0 -3
- package/src/calendar.component.ngfactory.d.ts +0 -1
- package/src/calendar.component.scss.shim.ngstyle.d.ts +0 -1
- package/src/calendarCreation.component.ngfactory.d.ts +0 -1
- package/src/calendarCreation.component.scss.shim.ngstyle.d.ts +0 -1
- package/src/calendarItem.component.ngfactory.d.ts +0 -1
- package/src/calendarItem.component.scss.shim.ngstyle.d.ts +0 -1
package/environment.d.ts
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The environment variables used by this module.
|
|
3
|
+
*/
|
|
4
|
+
export const environment = {
|
|
5
|
+
idea: {
|
|
6
|
+
ionicExtraModules: ['agenda'],
|
|
7
|
+
app: {
|
|
8
|
+
url: ''
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
microsoft: {
|
|
12
|
+
apiClientId: '',
|
|
13
|
+
apiScope: ''
|
|
14
|
+
},
|
|
15
|
+
google: {
|
|
16
|
+
apiClientId: '',
|
|
17
|
+
apiScope: ''
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixJQUFJLEVBQUU7UUFDSixpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUM3QixHQUFHLEVBQUU7WUFDSCxHQUFHLEVBQUUsRUFBRTtTQUNSO0tBQ0Y7SUFDRCxTQUFTLEVBQUU7UUFDVCxXQUFXLEVBQUUsRUFBRTtRQUNmLFFBQVEsRUFBRSxFQUFFO0tBQ2I7SUFDRCxNQUFNLEVBQUU7UUFDTixXQUFXLEVBQUUsRUFBRTtRQUNmLFFBQVEsRUFBRSxFQUFFO0tBQ2I7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHVzZWQgYnkgdGhpcyBtb2R1bGUuXG4gKi9cbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudCA9IHtcbiAgaWRlYToge1xuICAgIGlvbmljRXh0cmFNb2R1bGVzOiBbJ2FnZW5kYSddLFxuICAgIGFwcDoge1xuICAgICAgdXJsOiAnJ1xuICAgIH1cbiAgfSxcbiAgbWljcm9zb2Z0OiB7XG4gICAgYXBpQ2xpZW50SWQ6ICcnLFxuICAgIGFwaVNjb3BlOiAnJ1xuICB9LFxuICBnb29nbGU6IHtcbiAgICBhcGlDbGllbnRJZDogJycsXG4gICAgYXBpU2NvcGU6ICcnXG4gIH1cbn07XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlYS1pb25pYy1hZ2VuZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tb2R1bGVzL2FnZW5kYS9pZGVhLWlvbmljLWFnZW5kYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
File without changes
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { CalendarView } from 'angular-calendar';
|
|
4
|
+
import { isFuture, isToday, isSameDay } from 'date-fns';
|
|
5
|
+
// @ts-ignore
|
|
6
|
+
import ColorParse from 'color-parse';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ionic/angular";
|
|
9
|
+
import * as i2 from "@idea-ionic/common";
|
|
10
|
+
import * as i3 from "angular-calendar";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
/**
|
|
13
|
+
* A local fallback URL for the avatars.
|
|
14
|
+
*/
|
|
15
|
+
const AVATAR_FALLBACK_URL = './assets/imgs/no-avatar.jpg';
|
|
16
|
+
export class IDEAAgendaComponent {
|
|
17
|
+
constructor(platform, tc, t) {
|
|
18
|
+
this.platform = platform;
|
|
19
|
+
this.tc = tc;
|
|
20
|
+
this.t = t;
|
|
21
|
+
/**
|
|
22
|
+
* The events to display in the calendar.
|
|
23
|
+
*/
|
|
24
|
+
this.events = [];
|
|
25
|
+
/**
|
|
26
|
+
* An array of day indexes (0 = sunday, 1 = monday, etc.) that will be hidden on the view.
|
|
27
|
+
*/
|
|
28
|
+
this.excludeDays = [];
|
|
29
|
+
/**
|
|
30
|
+
* The day start hours in 24 hour time. Must be 0-23
|
|
31
|
+
*/
|
|
32
|
+
this.dayStartHour = 0;
|
|
33
|
+
/**
|
|
34
|
+
* The day start hours in 24 hour time. Must be 0-23
|
|
35
|
+
*/
|
|
36
|
+
this.dayEndHour = 23;
|
|
37
|
+
/**
|
|
38
|
+
* The number of segments in an hour. Must divide equally into 60.
|
|
39
|
+
*/
|
|
40
|
+
this.hourSegments = 2;
|
|
41
|
+
/**
|
|
42
|
+
* Whether to open the current day's details right away in month view.
|
|
43
|
+
*/
|
|
44
|
+
this.activeDayIsOpen = false;
|
|
45
|
+
/**
|
|
46
|
+
* The view mode for the agenda.
|
|
47
|
+
*/
|
|
48
|
+
this.view = CalendarView.Week;
|
|
49
|
+
/**
|
|
50
|
+
* Whether to block any day/slot in the past.
|
|
51
|
+
*/
|
|
52
|
+
this.onlyFuture = false;
|
|
53
|
+
/**
|
|
54
|
+
* Trigger when an event is selected.
|
|
55
|
+
*/
|
|
56
|
+
this.selectEvent = new EventEmitter();
|
|
57
|
+
/**
|
|
58
|
+
* Trigger when a day is selected.
|
|
59
|
+
*/
|
|
60
|
+
this.selectDay = new EventEmitter();
|
|
61
|
+
/**
|
|
62
|
+
* Trigger when a time slot is selected.
|
|
63
|
+
*/
|
|
64
|
+
this.selectSlot = new EventEmitter();
|
|
65
|
+
/**
|
|
66
|
+
* Trigger when an event changed date (drag&drop or resize).
|
|
67
|
+
*/
|
|
68
|
+
this.changeEvent = new EventEmitter();
|
|
69
|
+
/**
|
|
70
|
+
* Trigger when the view date of reference changed (because we moved inside the calendar).
|
|
71
|
+
*/
|
|
72
|
+
this.changeDate = new EventEmitter();
|
|
73
|
+
/**
|
|
74
|
+
* Helper to use the enum in the UX.
|
|
75
|
+
*/
|
|
76
|
+
this.CalendarView = CalendarView;
|
|
77
|
+
/**
|
|
78
|
+
* The currently selected date.
|
|
79
|
+
*/
|
|
80
|
+
this.viewDate = new Date();
|
|
81
|
+
/**
|
|
82
|
+
* A controller to refresh the current view.
|
|
83
|
+
*/
|
|
84
|
+
this.refresh = new Subject();
|
|
85
|
+
/**
|
|
86
|
+
* Helper to use the enum in the UI.
|
|
87
|
+
*/
|
|
88
|
+
this.Attendance = EventAttendance;
|
|
89
|
+
}
|
|
90
|
+
ngOnInit() {
|
|
91
|
+
this.locale = this.t.getCurrentLang();
|
|
92
|
+
// in case of Italian locale the starting day for the week is monday (1), otherwise sunday (0)
|
|
93
|
+
this.weekStartsOn = this.locale === 'it' ? 1 : 0;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Run some checks before the month view is rendered (e.g. disable invalid days).
|
|
97
|
+
*/
|
|
98
|
+
beforeMonthViewRender({ body }) {
|
|
99
|
+
body.forEach(day => {
|
|
100
|
+
if (!this.dateIsValid(day.date, true))
|
|
101
|
+
day.cssClass = 'cal-disabled';
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Run some checks before the weel/day view is rendered (e.g. disable invalid days).
|
|
106
|
+
*/
|
|
107
|
+
beforeWeekOrDayViewRender({ header }) {
|
|
108
|
+
header.forEach((day) => {
|
|
109
|
+
if (!this.dateIsValid(day.date, true))
|
|
110
|
+
day.cssClass = 'cal-disabled';
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check whether a date is valid based on the configured parameters.
|
|
115
|
+
*/
|
|
116
|
+
dateIsValid(date, sameDayIsValid) {
|
|
117
|
+
if (!this.onlyFuture)
|
|
118
|
+
return true;
|
|
119
|
+
return isFuture(date) || (sameDayIsValid ? isToday(date) : false);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Change the current view for the agenda.
|
|
123
|
+
*/
|
|
124
|
+
setView(view) {
|
|
125
|
+
this.view = view;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Emit the change of the view date and close the detail component of the month view, if needed.
|
|
129
|
+
*/
|
|
130
|
+
viewDateChanged(newDate) {
|
|
131
|
+
if (this.view === CalendarView.Month)
|
|
132
|
+
this.activeDayIsOpen = false;
|
|
133
|
+
this.changeDate.emit(newDate);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* A day was selected: manage the detailed view.
|
|
137
|
+
*/
|
|
138
|
+
changeDay({ date, events }) {
|
|
139
|
+
// skip if the date isn't valid
|
|
140
|
+
if (!this.dateIsValid(date, true))
|
|
141
|
+
return;
|
|
142
|
+
// if the selected day changed, if the new day has events, open the details in month view (otherwise close them)
|
|
143
|
+
if ((isSameDay(this.viewDate, date) && this.activeDayIsOpen === true) || !events || events.length === 0)
|
|
144
|
+
this.activeDayIsOpen = false;
|
|
145
|
+
else
|
|
146
|
+
this.activeDayIsOpen = true;
|
|
147
|
+
// update the current date in the agenda
|
|
148
|
+
this.viewDate = date;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The time of an event was changed.
|
|
152
|
+
*/
|
|
153
|
+
eventTimesChanged({ event, newStart, newEnd }) {
|
|
154
|
+
// update the event
|
|
155
|
+
event.start = newStart;
|
|
156
|
+
event.end = newEnd;
|
|
157
|
+
// re-map the array to trigger the UI refresh
|
|
158
|
+
this.events = this.events.slice();
|
|
159
|
+
// trigger the event to the parent component
|
|
160
|
+
this.changeEvent.emit(event);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Given a color, it returns an opaque version of it.
|
|
164
|
+
*/
|
|
165
|
+
getAlternateColor(color, amount, opacity) {
|
|
166
|
+
const alt = ColorParse(color);
|
|
167
|
+
const r = Math.max(Math.min(255, Number(alt.values[0]) + amount), 0);
|
|
168
|
+
const g = Math.max(Math.min(255, Number(alt.values[1]) + amount), 0);
|
|
169
|
+
const b = Math.max(Math.min(255, Number(alt.values[2]) + amount), 0);
|
|
170
|
+
return `rgba(${r}, ${g}, ${b}, ${opacity || 1})`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get the content of the tooltip based on the event.
|
|
174
|
+
*/
|
|
175
|
+
getTooltipContent(event) {
|
|
176
|
+
if (!event)
|
|
177
|
+
return '';
|
|
178
|
+
let str = event.title ? '<b>' + event.title + '</b>' : '';
|
|
179
|
+
if (event.description)
|
|
180
|
+
str = str.concat('<br>', event.description);
|
|
181
|
+
if (event.icons)
|
|
182
|
+
event.icons.forEach(x => (str = str.concat('<br>', '<i>', x.title, '</i>')));
|
|
183
|
+
if (event.avatars && event.avatars.length) {
|
|
184
|
+
str = str.concat('<br><br>~');
|
|
185
|
+
event.avatars.forEach(x => (str = str.concat('<br>', x.title)));
|
|
186
|
+
}
|
|
187
|
+
return str;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get a shortened version of the description as preview.
|
|
191
|
+
*/
|
|
192
|
+
getPreviewDescription(description) {
|
|
193
|
+
return description && description.length > 100 ? description.slice(0, 100).concat('...') : description;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Load a fallback url when the avatar is missing.
|
|
197
|
+
*/
|
|
198
|
+
loadFallbackAvatar(targetImg) {
|
|
199
|
+
const fallback = this.fallbackAvatar || AVATAR_FALLBACK_URL;
|
|
200
|
+
if (targetImg && targetImg.src !== fallback)
|
|
201
|
+
targetImg.src = fallback;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
IDEAAgendaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaComponent, deps: [{ token: i1.Platform }, { token: i2.IDEATinCanService }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
205
|
+
IDEAAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", onlyFuture: "onlyFuture", fallbackAvatar: "fallbackAvatar" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", changeEvent: "changeEvent", changeDate: "changeDate" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, tc.get('darkMode') ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, tc.get('darkMode') ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <ion-avatar *ngFor=\"let avatar of weekEvent.event.avatars\" [title]=\"avatar.title\">\n <ion-img [src]=\"avatar.url\" (ionError)=\"loadFallbackAvatar($event?.target)\"></ion-img>\n </ion-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets ion-avatar{display:block;float:left;margin:2px 1px;width:14px;height:14px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"], components: [{ type: i1.IonRow, selector: "ion-row" }, { type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonSelect, selector: "ion-select", inputs: ["cancelText", "compareWith", "disabled", "interface", "interfaceOptions", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "value"] }, { type: i1.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i3.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { type: i3.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { type: i1.IonAvatar, selector: "ion-avatar" }, { type: i1.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { type: i3.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { type: i3.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { type: i3.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }], directives: [{ type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i3.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i3.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { type: i3.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { type: i3.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { type: i3.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "translate": i2.IDEATranslatePipe, "calendarDate": i3.ɵCalendarDatePipe, "calendarA11y": i3.ɵCalendarA11yPipe, "calendarEventTitle": i3.ɵCalendarEventTitlePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaComponent, decorators: [{
|
|
207
|
+
type: Component,
|
|
208
|
+
args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, tc.get('darkMode') ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, tc.get('darkMode') ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <ion-avatar *ngFor=\"let avatar of weekEvent.event.avatars\" [title]=\"avatar.title\">\n <ion-img [src]=\"avatar.url\" (ionError)=\"loadFallbackAvatar($event?.target)\"></ion-img>\n </ion-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets ion-avatar{display:block;float:left;margin:2px 1px;width:14px;height:14px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"] }]
|
|
209
|
+
}], ctorParameters: function () { return [{ type: i1.Platform }, { type: i2.IDEATinCanService }, { type: i2.IDEATranslationsService }]; }, propDecorators: { events: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], excludeDays: [{
|
|
212
|
+
type: Input
|
|
213
|
+
}], dayStartHour: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], dayEndHour: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], hourSegments: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], activeDayIsOpen: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}], view: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}], onlyFuture: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], fallbackAvatar: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}], selectEvent: [{
|
|
228
|
+
type: Output
|
|
229
|
+
}], selectDay: [{
|
|
230
|
+
type: Output
|
|
231
|
+
}], selectSlot: [{
|
|
232
|
+
type: Output
|
|
233
|
+
}], changeEvent: [{
|
|
234
|
+
type: Output
|
|
235
|
+
}], changeDate: [{
|
|
236
|
+
type: Output
|
|
237
|
+
}] } });
|
|
238
|
+
/**
|
|
239
|
+
* Possible attendance statuses for the event.
|
|
240
|
+
*/
|
|
241
|
+
export var EventAttendance;
|
|
242
|
+
(function (EventAttendance) {
|
|
243
|
+
EventAttendance[EventAttendance["DECLINED"] = -1] = "DECLINED";
|
|
244
|
+
EventAttendance[EventAttendance["NEEDS_ACTION"] = 0] = "NEEDS_ACTION";
|
|
245
|
+
EventAttendance[EventAttendance["TENTATIVE"] = 1] = "TENTATIVE";
|
|
246
|
+
EventAttendance[EventAttendance["ACCEPTED"] = 2] = "ACCEPTED";
|
|
247
|
+
})(EventAttendance || (EventAttendance = {}));
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUF1RSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEQsYUFBYTtBQUNiLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBR3JDOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyw2QkFBNkIsQ0FBQztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBb0Y5QixZQUFtQixRQUFrQixFQUFTLEVBQXFCLEVBQVMsQ0FBMEI7UUFBbkYsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBeUI7UUFuRnRHOztXQUVHO1FBQ2EsV0FBTSxHQUFrQixFQUFFLENBQUM7UUFDM0M7O1dBRUc7UUFDYSxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQzs7V0FFRztRQUNhLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDOztXQUVHO1FBQ2EsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQzs7V0FFRztRQUNhLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDOztXQUVHO1FBQ2Esb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEM7O1dB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RztBQUNILE1BQU0sQ0FBTixJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDekIsOERBQWEsQ0FBQTtJQUNiLHFFQUFnQixDQUFBO0lBQ2hCLCtEQUFTLENBQUE7SUFDVCw2REFBUSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLGVBQWUsS0FBZixlQUFlLFFBSzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJFdmVudCwgQ2FsZW5kYXJFdmVudFRpbWVzQ2hhbmdlZEV2ZW50LCBDYWxlbmRhck1vbnRoVmlld0RheSwgQ2FsZW5kYXJWaWV3IH0gZnJvbSAnYW5ndWxhci1jYWxlbmRhcic7XG5pbXBvcnQgeyBpc0Z1dHVyZSwgaXNUb2RheSwgaXNTYW1lRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IENvbG9yUGFyc2UgZnJvbSAnY29sb3ItcGFyc2UnO1xuaW1wb3J0IHsgSURFQVRpbkNhblNlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuLyoqXG4gKiBBIGxvY2FsIGZhbGxiYWNrIFVSTCBmb3IgdGhlIGF2YXRhcnMuXG4gKi9cbmNvbnN0IEFWQVRBUl9GQUxMQkFDS19VUkwgPSAnLi9hc3NldHMvaW1ncy9uby1hdmF0YXIuanBnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1hZ2VuZGEnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICdhZ2VuZGEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYWdlbmRhLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQUFnZW5kYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnRzIHRvIGRpc3BsYXkgaW4gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGV2ZW50czogQWdlbmRhRXZlbnRbXSA9IFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgZGF5IGluZGV4ZXMgKDAgPSBzdW5kYXksIDEgPSBtb25kYXksIGV0Yy4pIHRoYXQgd2lsbCBiZSBoaWRkZW4gb24gdGhlIHZpZXcuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZXhjbHVkZURheXM6IG51bWJlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGF5U3RhcnRIb3VyID0gMDtcbiAgLyoqXG4gICAqIFRoZSBkYXkgc3RhcnQgaG91cnMgaW4gMjQgaG91ciB0aW1lLiBNdXN0IGJlIDAtMjNcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXlFbmRIb3VyID0gMjM7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHNlZ21lbnRzIGluIGFuIGhvdXIuIE11c3QgZGl2aWRlIGVxdWFsbHkgaW50byA2MC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBob3VyU2VnbWVudHMgPSAyO1xuICAvKipcbiAgICogV2hldGhlciB0byBvcGVuIHRoZSBjdXJyZW50IGRheSdzIGRldGFpbHMgcmlnaHQgYXdheSBpbiBtb250aCB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIHZpZXcgbW9kZSBmb3IgdGhlIGFnZW5kYS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXcgPSBDYWxlbmRhclZpZXcuV2VlaztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYmxvY2sgYW55IGRheS9zbG90IGluIHRoZSBwYXN0LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG9ubHlGdXR1cmUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFVSTCB0byB0aGUgZmFsbGJhY2sgYXZhdGFyIHRvIHNob3cgaW4gY2FzZSB0aGUgYXZhdGFyIG9mIGFuIGV2ZW50IGlzbid0IGZvdW5kLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGZhbGxiYWNrQXZhdGFyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYW4gZXZlbnQgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIGRheSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0RGF5ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGEgdGltZSBzbG90IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RTbG90ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGFuIGV2ZW50IGNoYW5nZWQgZGF0ZSAoZHJhZyZkcm9wIG9yIHJlc2l6ZSkuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBZ2VuZGFFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiB0aGUgdmlldyBkYXRlIG9mIHJlZmVyZW5jZSBjaGFuZ2VkIChiZWNhdXNlIHdlIG1vdmVkIGluc2lkZSB0aGUgY2FsZW5kYXIpLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VEYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogSGVscGVyIHRvIHVzZSB0aGUgZW51bSBpbiB0aGUgVVguXG4gICAqL1xuICBwdWJsaWMgQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLlxuICAgKi9cbiAgcHVibGljIHZpZXdEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgLyoqXG4gICAqIEEgY29udHJvbGxlciB0byByZWZyZXNoIHRoZSBjdXJyZW50IHZpZXcuXG4gICAqL1xuICBwdWJsaWMgcmVmcmVzaDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgdXNlZCB0byBmb3JtYXQgZGF0ZXMuXG4gICAqIEBoaWRlXG4gICAqL1xuICBwdWJsaWMgbG9jYWxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhcnRpbmcgZGF5IGZvciB0aGUgd2VlaywgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgKDAgPSBzdW5kYXkpLlxuICAgKiBAaGlkZVxuICAgKi9cbiAgcHVibGljIHdlZWtTdGFydHNPbjogbnVtYmVyO1xuICAvKipcbiAgICogSGVscGVyIHRvIHVzZSB0aGUgZW51bSBpbiB0aGUgVUkuXG4gICAqL1xuICBwdWJsaWMgQXR0ZW5kYW5jZSA9IEV2ZW50QXR0ZW5kYW5jZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtLCBwdWJsaWMgdGM6IElERUFUaW5DYW5TZXJ2aWNlLCBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpIHt9XG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMudC5nZXRDdXJyZW50TGFuZygpO1xuICAgIC8vIGluIGNhc2Ugb2YgSXRhbGlhbiBsb2NhbGUgdGhlIHN0YXJ0aW5nIGRheSBmb3IgdGhlIHdlZWsgaXMgbW9uZGF5ICgxKSwgb3RoZXJ3aXNlIHN1bmRheSAoMClcbiAgICB0aGlzLndlZWtTdGFydHNPbiA9IHRoaXMubG9jYWxlID09PSAnaXQnID8gMSA6IDA7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHNvbWUgY2hlY2tzIGJlZm9yZSB0aGUgbW9udGggdmlldyBpcyByZW5kZXJlZCAoZS5nLiBkaXNhYmxlIGludmFsaWQgZGF5cykuXG4gICAqL1xuICBwdWJsaWMgYmVmb3JlTW9udGhWaWV3UmVuZGVyKHsgYm9keSB9OiB7IGJvZHk6IENhbGVuZGFyTW9udGhWaWV3RGF5W10gfSkge1xuICAgIGJvZHkuZm9yRWFjaChkYXkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRheS5kYXRlLCB0cnVlKSkgZGF5LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFJ1biBzb21lIGNoZWNrcyBiZWZvcmUgdGhlIHdlZWwvZGF5IHZpZXcgaXMgcmVuZGVyZWQgKGUuZy4gZGlzYWJsZSBpbnZhbGlkIGRheXMpLlxuICAgKi9cbiAgcHVibGljIGJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoeyBoZWFkZXIgfTogeyBoZWFkZXI6IGFueSB9KSB7XG4gICAgaGVhZGVyLmZvckVhY2goKGRheTogYW55KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoZGF5LmRhdGUsIHRydWUpKSBkYXkuY3NzQ2xhc3MgPSAnY2FsLWRpc2FibGVkJztcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIGEgZGF0ZSBpcyB2YWxpZCBiYXNlZCBvbiB0aGUgY29uZmlndXJlZCBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGRhdGVJc1ZhbGlkKGRhdGU6IERhdGUsIHNhbWVEYXlJc1ZhbGlkPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5vbmx5RnV0dXJlKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gaXNGdXR1cmUoZGF0ZSkgfHwgKHNhbWVEYXlJc1ZhbGlkID8gaXNUb2RheShkYXRlKSA6IGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGN1cnJlbnQgdmlldyBmb3IgdGhlIGFnZW5kYS5cbiAgICovXG4gIHB1YmxpYyBzZXRWaWV3KHZpZXc6IENhbGVuZGFyVmlldykge1xuICAgIHRoaXMudmlldyA9IHZpZXc7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCB0aGUgY2hhbmdlIG9mIHRoZSB2aWV3IGRhdGUgYW5kIGNsb3NlIHRoZSBkZXRhaWwgY29tcG9uZW50IG9mIHRoZSBtb250aCB2aWV3LCBpZiBuZWVkZWQuXG4gICAqL1xuICBwdWJsaWMgdmlld0RhdGVDaGFuZ2VkKG5ld0RhdGU6IERhdGUpIHtcbiAgICBpZiAodGhpcy52aWV3ID09PSBDYWxlbmRhclZpZXcuTW9udGgpIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jaGFuZ2VEYXRlLmVtaXQobmV3RGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBkYXkgd2FzIHNlbGVjdGVkOiBtYW5hZ2UgdGhlIGRldGFpbGVkIHZpZXcuXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlRGF5KHsgZGF0ZSwgZXZlbnRzIH06IHsgZGF0ZTogRGF0ZTsgZXZlbnRzOiBBZ2VuZGFFdmVudFtdIH0pIHtcbiAgICAvLyBza2lwIGlmIHRoZSBkYXRlIGlzbid0IHZhbGlkXG4gICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRhdGUsIHRydWUpKSByZXR1cm47XG4gICAgLy8gaWYgdGhlIHNlbGVjdGVkIGRheSBjaGFuZ2VkLCBpZiB0aGUgbmV3IGRheSBoYXMgZXZlbnRzLCBvcGVuIHRoZSBkZXRhaWxzIGluIG1vbnRoIHZpZXcgKG90aGVyd2lzZSBjbG9zZSB0aGVtKVxuICAgIGlmICgoaXNTYW1lRGF5KHRoaXMudmlld0RhdGUsIGRhdGUpICYmIHRoaXMuYWN0aXZlRGF5SXNPcGVuID09PSB0cnVlKSB8fCAhZXZlbnRzIHx8IGV2ZW50cy5sZW5ndGggPT09IDApXG4gICAgICB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAgIGVsc2UgdGhpcy5hY3RpdmVEYXlJc09wZW4gPSB0cnVlO1xuICAgIC8vIHVwZGF0ZSB0aGUgY3VycmVudCBkYXRlIGluIHRoZSBhZ2VuZGFcbiAgICB0aGlzLnZpZXdEYXRlID0gZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBvZiBhbiBldmVudCB3YXMgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBldmVudFRpbWVzQ2hhbmdlZCh7IGV2ZW50LCBuZXdTdGFydCwgbmV3RW5kIH06IENhbGVuZGFyRXZlbnRUaW1lc0NoYW5nZWRFdmVudCkge1xuICAgIC8vIHVwZGF0ZSB0aGUgZXZlbnRcbiAgICBldmVudC5zdGFydCA9IG5ld1N0YXJ0O1xuICAgIGV2ZW50LmVuZCA9IG5ld0VuZDtcbiAgICAvLyByZS1tYXAgdGhlIGFycmF5IHRvIHRyaWdnZXIgdGhlIFVJIHJlZnJlc2hcbiAgICB0aGlzLmV2ZW50cyA9IHRoaXMuZXZlbnRzLnNsaWNlKCk7XG4gICAgLy8gdHJpZ2dlciB0aGUgZXZlbnQgdG8gdGhlIHBhcmVudCBjb21wb25lbnRcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgY29sb3IsIGl0IHJldHVybnMgYW4gb3BhcXVlIHZlcnNpb24gb2YgaXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0QWx0ZXJuYXRlQ29sb3IoY29sb3I6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIG9wYWNpdHk/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsdCA9IENvbG9yUGFyc2UoY29sb3IpO1xuICAgIGNvbnN0IHIgPSBNYXRoLm1heChNYXRoLm1pbigyNTUsIE51bWJlcihhbHQudmFsdWVzWzBdKSArIGFtb3VudCksIDApO1xuICAgIGNvbnN0IGcgPSBNYXRoLm1heChNYXRoLm1pbigyNTUsIE51bWJlcihhbHQudmFsdWVzWzFdKSArIGFtb3VudCksIDApO1xuICAgIGNvbnN0IGIgPSBNYXRoLm1heChNYXRoLm1pbigyNTUsIE51bWJlcihhbHQudmFsdWVzWzJdKSArIGFtb3VudCksIDApO1xuICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke29wYWNpdHkgfHwgMX0pYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAgYmFzZWQgb24gdGhlIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIGdldFRvb2x0aXBDb250ZW50KGV2ZW50OiBBZ2VuZGFFdmVudCk6IHN0cmluZyB7XG4gICAgaWYgKCFldmVudCkgcmV0dXJuICcnO1xuICAgIGxldCBzdHIgPSBldmVudC50aXRsZSA/ICc8Yj4nICsgZXZlbnQudGl0bGUgKyAnPC9iPicgOiAnJztcbiAgICBpZiAoZXZlbnQuZGVzY3JpcHRpb24pIHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCBldmVudC5kZXNjcmlwdGlvbik7XG4gICAgaWYgKGV2ZW50Lmljb25zKSBldmVudC5pY29ucy5mb3JFYWNoKHggPT4gKHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCAnPGk+JywgeC50aXRsZSwgJzwvaT4nKSkpO1xuICAgIGlmIChldmVudC5hdmF0YXJzICYmIGV2ZW50LmF2YXRhcnMubGVuZ3RoKSB7XG4gICAgICBzdHIgPSBzdHIuY29uY2F0KCc8YnI+PGJyPn4nKTtcbiAgICAgIGV2ZW50LmF2YXRhcnMuZm9yRWFjaCh4ID0+IChzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgeC50aXRsZSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzaG9ydGVuZWQgdmVyc2lvbiBvZiB0aGUgZGVzY3JpcHRpb24gYXMgcHJldmlldy5cbiAgICovXG4gIHB1YmxpYyBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLmxlbmd0aCA+IDEwMCA/IGRlc2NyaXB0aW9uLnNsaWNlKDAsIDEwMCkuY29uY2F0KCcuLi4nKSA6IGRlc2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBmYWxsYmFjayB1cmwgd2hlbiB0aGUgYXZhdGFyIGlzIG1pc3NpbmcuXG4gICAqL1xuICBwdWJsaWMgbG9hZEZhbGxiYWNrQXZhdGFyKHRhcmdldEltZzogYW55KSB7XG4gICAgY29uc3QgZmFsbGJhY2sgPSB0aGlzLmZhbGxiYWNrQXZhdGFyIHx8IEFWQVRBUl9GQUxMQkFDS19VUkw7XG4gICAgaWYgKHRhcmdldEltZyAmJiB0YXJnZXRJbWcuc3JjICE9PSBmYWxsYmFjaykgdGFyZ2V0SW1nLnNyYyA9IGZhbGxiYWNrO1xuICB9XG59XG5cbi8qKlxuICogQSByaWNoZXIgdmVyc2lvbiBvZiB0aGUgY2xhc3NpYyBDYWxlbmRhckV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW5kYUV2ZW50IGV4dGVuZHMgQ2FsZW5kYXJFdmVudCB7XG4gIC8qKlxuICAgKiBBIGJyaWVmIGRlc2NyaXB0aW9uIGZvciB0aGUgZXZlbnQgKGUuZy4gY3VzdG9tZXIsIGFkZHJlc3MsIGV0Yy4pLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVVJMcyBvZiBpbWFnZXMgdG8gc2hvdyBhcyBzbWFsbCBhdmF0YXJzLlxuICAgKi9cbiAgYXZhdGFycz86IHsgaWQ6IHN0cmluZzsgdXJsOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGlvbi1pY29ucyB0byBzaG93LlxuICAgKi9cbiAgaWNvbnM/OiB7IG5hbWU6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W107XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBldmVudCBpcyBleHRlcm5hbDsgZXh0ZXJuYWwgZXZlbnRzIGFyZSBsZXNzIGltcG9ydGFudCBVSS13aXNlLlxuICAgKi9cbiAgZXh0ZXJuYWw/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGF0dGVuZGFuY2Ugc3RhdHVzIHRvIHRoaXMgZXZlbnQsIGlmIGFueS5cbiAgICovXG4gIGF0dGVuZGFuY2U/OiBFdmVudEF0dGVuZGFuY2U7XG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGFuZCB1bmlxdWUgaWQgZm9yIHRoZSBldmVudCwgdmFsaWQgYWNyb3NzIG11bHRpcGxlIHNvdXJjZXMuXG4gICAqL1xuICBpQ2FsVUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBvc3NpYmxlIGF0dGVuZGFuY2Ugc3RhdHVzZXMgZm9yIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGVudW0gRXZlbnRBdHRlbmRhbmNlIHtcbiAgREVDTElORUQgPSAtMSxcbiAgTkVFRFNfQUNUSU9OID0gMCxcbiAgVEVOVEFUSVZFLFxuICBBQ0NFUFRFRFxufVxuIiwiPGRpdiBjbGFzcz1cImFnZW5kYVwiPlxuICA8IS0tIFRPT0xCQVIgLS0+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxpb24tY29sXG4gICAgICBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlciBpb24tdGV4dC1yaWdodFwiXG4gICAgICBbc2l6ZV09XCI1XCJcbiAgICAgIFtzaXplU21dPVwiM1wiXG4gICAgICBbcHVzaFNtXT1cIjVcIlxuICAgICAgW3NpemVMZ109XCIyXCJcbiAgICAgIFtwdXNoTGddPVwiOFwiXG4gICAgPlxuICAgICAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiIGNsYXNzPVwiY2FsZW5kYXJWaWV3U2VsZWN0b3JcIj5cbiAgICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmlld1wiXG4gICAgICAgICAgKGlvbkNoYW5nZSk9XCIkZXZlbnQ/LmRldGFpbCA/IHNldFZpZXcoJGV2ZW50LmRldGFpbC52YWx1ZSkgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiQ2FsZW5kYXJWaWV3Lk1vbnRoXCI+e3sgJ0lERUFfQUdFTkRBLk1PTlRIJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJDYWxlbmRhclZpZXcuV2Vla1wiPnt7ICdJREVBX0FHRU5EQS5XRUVLJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJDYWxlbmRhclZpZXcuRGF5XCI+e3sgJ0lERUFfQUdFTkRBLkRBWScgfCB0cmFuc2xhdGUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbFxuICAgICAgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgaW9uLXRleHQtcmlnaHRcIlxuICAgICAgW3NpemVdPVwiN1wiXG4gICAgICBbc2l6ZVNtXT1cIjRcIlxuICAgICAgW3B1c2hTbV09XCI1XCJcbiAgICAgIFtzaXplTGddPVwiMlwiXG4gICAgICBbcHVzaExnXT1cIjhcIlxuICAgID5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyUHJldmlvdXNWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyVG9kYXlcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cInRvZGF5LW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyTmV4dFZpZXdcbiAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlclwiIFtzaXplXT1cIjEyXCIgW3NpemVTbV09XCI1XCIgW3B1bGxTbV09XCI3XCIgW3NpemVMZ109XCI4XCIgW3B1bGxMZ109XCI0XCI+XG4gICAgICA8aDI+e3sgdmlld0RhdGUgfCBjYWxlbmRhckRhdGU6IHZpZXcgKyAnVmlld1RpdGxlJzp0LmdldEN1cnJlbnRMYW5nKCkgfX08L2gyPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuICA8IS0tIFRFTVBMQVRFUyAodG91Y2ggb25seSB3aGF0J3MgbmVjZXNzYXJ5IGFuZCBsZWF2ZSBldmVyeXRoaW5nIGVsc2UgYXMgaXQgaXMpIC0tPlxuICA8bmctdGVtcGxhdGUgI2V2ZW50VGl0bGVUZW1wbGF0ZSBsZXQtZXZlbnQ9XCJldmVudFwiIGxldC12aWV3PVwidmlld1wiPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImNhbC1ldmVudC10aXRsZVwiXG4gICAgICBbY2xhc3Mubm9XcmFwXT1cImV2ZW50LmFsbERheVwiXG4gICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ7fSB8IGNhbGVuZGFyQTExeTogJ2hpZGVFdmVudFRpdGxlJ1wiXG4gICAgPlxuICAgICAge3sgZXZlbnQudGl0bGUgfCBjYWxlbmRhckV2ZW50VGl0bGU6IHZpZXc6ZXZlbnQgfX1cbiAgICAgIDxwICpuZ0lmPVwiIWV2ZW50LmFsbERheVwiPnt7IGdldFByZXZpZXdEZXNjcmlwdGlvbihldmVudC5kZXNjcmlwdGlvbikgfX08L3A+XG4gICAgPC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAjZXZlbnRUZW1wbGF0ZVxuICAgIGxldC13ZWVrRXZlbnQ9XCJ3ZWVrRXZlbnRcIlxuICAgIGxldC10b29sdGlwUGxhY2VtZW50PVwidG9vbHRpcFBsYWNlbWVudFwiXG4gICAgbGV0LWV2ZW50Q2xpY2tlZD1cImV2ZW50Q2xpY2tlZFwiXG4gICAgbGV0LXRvb2x0aXBUZW1wbGF0ZT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgbGV0LXRvb2x0aXBBcHBlbmRUb0JvZHk9XCJ0b29sdGlwQXBwZW5kVG9Cb2R5XCJcbiAgICBsZXQtdG9vbHRpcERpc2FibGVkPVwidG9vbHRpcERpc2FibGVkXCJcbiAgICBsZXQtdG9vbHRpcERlbGF5PVwidG9vbHRpcERlbGF5XCJcbiAgICBsZXQtY29sdW1uPVwiY29sdW1uXCJcbiAgICBsZXQtZGF5c0luV2Vlaz1cImRheXNJbldlZWtcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYWwtZXZlbnRcIlxuICAgICAgW2NsYXNzLmV4dGVybmFsXT1cIndlZWtFdmVudC5ldmVudC5leHRlcm5hbFwiXG4gICAgICBbY2xhc3MubmVlZHNBY3Rpb25dPVwiQXR0ZW5kYW5jZS5ORUVEU19BQ1RJT04gPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtjbGFzcy5kZWNsaW5lZF09XCJBdHRlbmRhbmNlLkRFQ0xJTkVEID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbY2xhc3MudGVudGF0aXZlXT1cIkF0dGVuZGFuY2UuVEVOVEFUSVZFID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbc3R5bGUuYm9yZGVyLWxlZnQtY29sb3JdPVwid2Vla0V2ZW50LmV2ZW50LmNvbG9yLnByaW1hcnlcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvci5wcmltYXJ5LCB0Yy5nZXQoJ2RhcmtNb2RlJykgPyA4MCA6IC00MClcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QWx0ZXJuYXRlQ29sb3Iod2Vla0V2ZW50LmV2ZW50LmNvbG9yLnByaW1hcnksIHRjLmdldCgnZGFya01vZGUnKSA/IDYwIDogODAsIDAuMilcIlxuICAgICAgW213bENhbGVuZGFyVG9vbHRpcF09XCIhdG9vbHRpcERpc2FibGVkICYmICFwbGF0Zm9ybS5pcygnbW9iaWxlJykgPyBnZXRUb29sdGlwQ29udGVudCh3ZWVrRXZlbnQuZXZlbnQpIDogJydcIlxuICAgICAgW3Rvb2x0aXBQbGFjZW1lbnRdPVwidG9vbHRpcFBsYWNlbWVudFwiXG4gICAgICBbdG9vbHRpcEV2ZW50XT1cIndlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50XCJcbiAgICAgIFt0b29sdGlwVGVtcGxhdGVdPVwidG9vbHRpcFRlbXBsYXRlXCJcbiAgICAgIFt0b29sdGlwQXBwZW5kVG9Cb2R5XT1cInRvb2x0aXBBcHBlbmRUb0JvZHlcIlxuICAgICAgW3Rvb2x0aXBEZWxheV09XCJ0b29sdGlwRGVsYXlcIlxuICAgICAgKG13bENsaWNrKT1cImV2ZW50Q2xpY2tlZC5lbWl0KHsgc291cmNlRXZlbnQ6ICRldmVudCB9KVwiXG4gICAgICAobXdsS2V5ZG93bkVudGVyKT1cImV2ZW50Q2xpY2tlZC5lbWl0KHsgc291cmNlRXZlbnQ6ICRldmVudCB9KVwiXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgcm9sZT1cImFwcGxpY2F0aW9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgIHsgZXZlbnQ6IHdlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50LCBsb2NhbGU6IGxvY2FsZSB9IHwgY2FsZW5kYXJBMTF5OiAnZXZlbnREZXNjcmlwdGlvbidcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG13bC1jYWxlbmRhci1ldmVudC1hY3Rpb25zIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiPiA8L213bC1jYWxlbmRhci1ldmVudC1hY3Rpb25zPlxuICAgICAgJm5nc3A7XG4gICAgICA8bXdsLWNhbGVuZGFyLWV2ZW50LXRpdGxlXG4gICAgICAgIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiXG4gICAgICAgIFtjdXN0b21UZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgICBbdmlld109XCJkYXlzSW5XZWVrID09PSAxID8gJ2RheScgOiAnd2VlaydcIlxuICAgICAgPlxuICAgICAgPC9td2wtY2FsZW5kYXItZXZlbnQtdGl0bGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRHYWRnZXRzXCIgKm5nSWY9XCIhd2Vla0V2ZW50LmV2ZW50LmFsbERheVwiPlxuICAgICAgICA8aW9uLWljb24gKm5nRm9yPVwibGV0IGljb24gb2Ygd2Vla0V2ZW50LmV2ZW50Lmljb25zXCIgW25hbWVdPVwiaWNvbi5uYW1lXCIgW3RpdGxlXT1cImljb24udGl0bGVcIj48L2lvbi1pY29uPlxuICAgICAgICA8aW9uLWF2YXRhciAqbmdGb3I9XCJsZXQgYXZhdGFyIG9mIHdlZWtFdmVudC5ldmVudC5hdmF0YXJzXCIgW3RpdGxlXT1cImF2YXRhci50aXRsZVwiPlxuICAgICAgICAgIDxpb24taW1nIFtzcmNdPVwiYXZhdGFyLnVybFwiIChpb25FcnJvcik9XCJsb2FkRmFsbGJhY2tBdmF0YXIoJGV2ZW50Py50YXJnZXQpXCI+PC9pb24taW1nPlxuICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBWSUVXUyAtLT5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgIDxtd2wtY2FsZW5kYXItbW9udGgtdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5Nb250aFwiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbYWN0aXZlRGF5SXNPcGVuXT1cImFjdGl2ZURheUlzT3BlblwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZXhjbHVkZURheXNdPVwiZXhjbHVkZURheXNcIlxuICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgW2V2ZW50VGl0bGVUZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGRheUNsaWNrZWQpPVwiY2hhbmdlRGF5KCRldmVudC5kYXkpXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZU1vbnRoVmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItbW9udGgtdmlldz5cbiAgICA8bXdsLWNhbGVuZGFyLXdlZWstdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5XZWVrXCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtleGNsdWRlRGF5c109XCJleGNsdWRlRGF5c1wiXG4gICAgICBbd2Vla1N0YXJ0c09uXT1cIndlZWtTdGFydHNPblwiXG4gICAgICBbZGF5U3RhcnRIb3VyXT1cImRheVN0YXJ0SG91clwiXG4gICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgIFtob3VyU2VnbWVudHNdPVwiaG91clNlZ21lbnRzXCJcbiAgICAgIFtldmVudFRlbXBsYXRlXT1cImV2ZW50VGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGRheUhlYWRlckNsaWNrZWQpPVwiZGF0ZUlzVmFsaWQoJGV2ZW50LmRheS5kYXRlKSA/IHNlbGVjdERheS5lbWl0KCRldmVudC5kYXkuZGF0ZSkgOiBudWxsXCJcbiAgICAgIChob3VyU2VnbWVudENsaWNrZWQpPVwiZGF0ZUlzVmFsaWQoJGV2ZW50LmRhdGUpID8gc2VsZWN0U2xvdC5lbWl0KCRldmVudC5kYXRlKSA6IG51bGxcIlxuICAgICAgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItd2Vlay12aWV3PlxuICAgIDxtd2wtY2FsZW5kYXItZGF5LXZpZXdcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJDYWxlbmRhclZpZXcuRGF5XCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtkYXlTdGFydEhvdXJdPVwiZGF5U3RhcnRIb3VyXCJcbiAgICAgIFtkYXlFbmRIb3VyXT1cImRheUVuZEhvdXJcIlxuICAgICAgW2hvdXJTZWdtZW50c109XCJob3VyU2VnbWVudHNcIlxuICAgICAgW2V2ZW50VGVtcGxhdGVdPVwiZXZlbnRUZW1wbGF0ZVwiXG4gICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAoZXZlbnRUaW1lc0NoYW5nZWQpPVwiZXZlbnRUaW1lc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoaG91clNlZ21lbnRDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXRlKSA/IHNlbGVjdFNsb3QuZW1pdCgkZXZlbnQuZGF0ZSkgOiBudWxsXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbXdsLWNhbGVuZGFyLWRheS12aWV3PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { IonicModule } from '@ionic/angular';
|
|
5
|
+
import { CalendarDateFormatter, CalendarModule, DateAdapter } from 'angular-calendar';
|
|
6
|
+
import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
|
|
7
|
+
import { CustomDateFormatter } from './dateFormatter.provider';
|
|
8
|
+
import { IDEATranslationsModule, IDEAColorPickerModule, IDEACheckerModule } from '@idea-ionic/common';
|
|
9
|
+
import { IDEAAgendaComponent } from './agenda.component';
|
|
10
|
+
import { IDEACalendarComponent } from './calendar.component';
|
|
11
|
+
import { IDEACalendarItemComponent } from './calendarItem.component';
|
|
12
|
+
import { IDEACalendarCreationComponent } from './calendarCreation.component';
|
|
13
|
+
import { IDEACalendarsService } from './calendars.service';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "angular-calendar";
|
|
16
|
+
export class IDEAAgendaModule {
|
|
17
|
+
}
|
|
18
|
+
IDEAAgendaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
19
|
+
IDEAAgendaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaModule, declarations: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent], imports: [CommonModule,
|
|
20
|
+
FormsModule,
|
|
21
|
+
IonicModule,
|
|
22
|
+
IDEATranslationsModule,
|
|
23
|
+
IDEAColorPickerModule,
|
|
24
|
+
IDEACheckerModule, i1.CalendarModule], exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent] });
|
|
25
|
+
IDEAAgendaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaModule, providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService], imports: [[
|
|
26
|
+
CommonModule,
|
|
27
|
+
FormsModule,
|
|
28
|
+
IonicModule,
|
|
29
|
+
IDEATranslationsModule,
|
|
30
|
+
IDEAColorPickerModule,
|
|
31
|
+
IDEACheckerModule,
|
|
32
|
+
CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })
|
|
33
|
+
]] });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaModule, decorators: [{
|
|
35
|
+
type: NgModule,
|
|
36
|
+
args: [{
|
|
37
|
+
imports: [
|
|
38
|
+
CommonModule,
|
|
39
|
+
FormsModule,
|
|
40
|
+
IonicModule,
|
|
41
|
+
IDEATranslationsModule,
|
|
42
|
+
IDEAColorPickerModule,
|
|
43
|
+
IDEACheckerModule,
|
|
44
|
+
CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })
|
|
45
|
+
],
|
|
46
|
+
declarations: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent],
|
|
47
|
+
entryComponents: [
|
|
48
|
+
IDEAAgendaComponent,
|
|
49
|
+
IDEACalendarComponent,
|
|
50
|
+
IDEACalendarItemComponent,
|
|
51
|
+
IDEACalendarCreationComponent
|
|
52
|
+
],
|
|
53
|
+
exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent],
|
|
54
|
+
providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService]
|
|
55
|
+
}]
|
|
56
|
+
}] });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQXNCM0QsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQVZaLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixhQVJqSCxZQUFZO1FBQ1osV0FBVztRQUNYLFdBQVc7UUFDWCxzQkFBc0I7UUFDdEIscUJBQXFCO1FBQ3JCLGlCQUFpQixnQ0FVVCxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkI7OEdBR25HLGdCQUFnQixhQUZoQixDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLG9CQUFvQixDQUFDLFlBakIzRjtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsV0FBVztZQUNYLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIsaUJBQWlCO1lBQ2pCLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztTQUM3RTsyRkFXVSxnQkFBZ0I7a0JBcEI1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUM7cUJBQzdFO29CQUNELFlBQVksRUFBRSxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixDQUFDO29CQUNwSCxlQUFlLEVBQUU7d0JBQ2YsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkIsQ0FBQztvQkFDL0csU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEVBQUUsb0JBQW9CLENBQUM7aUJBQ3JHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5pbXBvcnQgeyBDYWxlbmRhckRhdGVGb3JtYXR0ZXIsIENhbGVuZGFyTW9kdWxlLCBEYXRlQWRhcHRlciB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuaW1wb3J0IHsgYWRhcHRlckZhY3RvcnkgfSBmcm9tICdhbmd1bGFyLWNhbGVuZGFyL2RhdGUtYWRhcHRlcnMvZGF0ZS1mbnMnO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZUZvcm1hdHRlciB9IGZyb20gJy4vZGF0ZUZvcm1hdHRlci5wcm92aWRlcic7XG5cbmltcG9ydCB7IElERUFUcmFuc2xhdGlvbnNNb2R1bGUsIElERUFDb2xvclBpY2tlck1vZHVsZSwgSURFQUNoZWNrZXJNb2R1bGUgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQWdlbmRhQ29tcG9uZW50IH0gZnJvbSAnLi9hZ2VuZGEuY29tcG9uZW50JztcbmltcG9ydCB7IElERUFDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IElERUFDYWxlbmRhckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFySXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSURFQUNhbGVuZGFyQ3JlYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyQ3JlYXRpb24uY29tcG9uZW50JztcblxuaW1wb3J0IHsgSURFQUNhbGVuZGFyc1NlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFycy5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBJREVBVHJhbnNsYXRpb25zTW9kdWxlLFxuICAgIElERUFDb2xvclBpY2tlck1vZHVsZSxcbiAgICBJREVBQ2hlY2tlck1vZHVsZSxcbiAgICBDYWxlbmRhck1vZHVsZS5mb3JSb290KHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUZhY3Rvcnk6IGFkYXB0ZXJGYWN0b3J5IH0pXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW0lERUFBZ2VuZGFDb21wb25lbnQsIElERUFDYWxlbmRhckNvbXBvbmVudCwgSURFQUNhbGVuZGFySXRlbUNvbXBvbmVudCwgSURFQUNhbGVuZGFyQ3JlYXRpb25Db21wb25lbnRdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtcbiAgICBJREVBQWdlbmRhQ29tcG9uZW50LFxuICAgIElERUFDYWxlbmRhckNvbXBvbmVudCxcbiAgICBJREVBQ2FsZW5kYXJJdGVtQ29tcG9uZW50LFxuICAgIElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtJREVBQWdlbmRhQ29tcG9uZW50LCBJREVBQ2FsZW5kYXJDb21wb25lbnQsIElERUFDYWxlbmRhckl0ZW1Db21wb25lbnQsIElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDYWxlbmRhckRhdGVGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlRm9ybWF0dGVyIH0sIElERUFDYWxlbmRhcnNTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQWdlbmRhTW9kdWxlIHt9XG4iXX0=
|