@idea-ionic/agenda 5.29.3 → 6.0.2

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.
Files changed (303) hide show
  1. package/README.md +2 -2
  2. package/environment.d.ts +3 -0
  3. package/esm2020/environment.mjs +20 -0
  4. package/esm2020/idea-ionic-agenda.mjs +5 -0
  5. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  6. package/esm2020/src/agenda.component.mjs +249 -0
  7. package/esm2020/src/agenda.module.mjs +57 -0
  8. package/esm2020/src/calendar.component.mjs +125 -0
  9. package/esm2020/src/calendarCreation.component.mjs +142 -0
  10. package/esm2020/src/calendarItem.component.mjs +136 -0
  11. package/esm2020/src/calendars.service.mjs +255 -0
  12. package/esm2020/src/dateFormatter.provider.mjs +38 -0
  13. package/fesm2015/idea-ionic-agenda.mjs +974 -0
  14. package/fesm2015/idea-ionic-agenda.mjs.map +1 -0
  15. package/fesm2020/idea-ionic-agenda.mjs +967 -0
  16. package/fesm2020/idea-ionic-agenda.mjs.map +1 -0
  17. package/idea-ionic-agenda.d.ts +4 -0
  18. package/package.json +30 -18
  19. package/src/agenda.component.d.ts +127 -2
  20. package/src/agenda.module.d.ts +13 -0
  21. package/src/calendar.component.d.ts +41 -1
  22. package/src/calendarCreation.component.d.ts +41 -1
  23. package/src/calendarItem.component.d.ts +25 -0
  24. package/src/calendars.service.d.ts +50 -0
  25. package/src/dateFormatter.provider.d.ts +3 -0
  26. package/bundles/idea-ionic-agenda.umd.js +0 -1156
  27. package/bundles/idea-ionic-agenda.umd.js.map +0 -1
  28. package/bundles/idea-ionic-agenda.umd.min.js +0 -16
  29. package/bundles/idea-ionic-agenda.umd.min.js.map +0 -1
  30. package/esm2015/environment.js +0 -17
  31. package/esm2015/environment.ngsummary.json +0 -1
  32. package/esm2015/idea-ionic-agenda.js +0 -2
  33. package/esm2015/idea-ionic-agenda.ngsummary.json +0 -1
  34. package/esm2015/node_modules/@angular/animations/animations.ngsummary.json +0 -1
  35. package/esm2015/node_modules/@angular/common/common.ngfactory.js +0 -5
  36. package/esm2015/node_modules/@angular/common/common.ngsummary.json +0 -1
  37. package/esm2015/node_modules/@angular/common/http/http.ngsummary.json +0 -1
  38. package/esm2015/node_modules/@angular/core/core.ngfactory.js +0 -4
  39. package/esm2015/node_modules/@angular/core/core.ngsummary.json +0 -1
  40. package/esm2015/node_modules/@angular/forms/forms.ngfactory.js +0 -9
  41. package/esm2015/node_modules/@angular/forms/forms.ngsummary.json +0 -1
  42. package/esm2015/node_modules/@angular/router/router.ngfactory.js +0 -12
  43. package/esm2015/node_modules/@angular/router/router.ngsummary.json +0 -1
  44. package/esm2015/node_modules/@capacitor/core/dist/esm/core-plugin-definitions.ngsummary.json +0 -1
  45. package/esm2015/node_modules/@capacitor/core/dist/esm/definitions.ngsummary.json +0 -1
  46. package/esm2015/node_modules/@capacitor/core/dist/esm/global.ngsummary.json +0 -1
  47. package/esm2015/node_modules/@capacitor/core/dist/esm/index.ngsummary.json +0 -1
  48. package/esm2015/node_modules/@capacitor/core/dist/esm/web/accessibility.ngsummary.json +0 -1
  49. package/esm2015/node_modules/@capacitor/core/dist/esm/web/app.ngsummary.json +0 -1
  50. package/esm2015/node_modules/@capacitor/core/dist/esm/web/browser.ngsummary.json +0 -1
  51. package/esm2015/node_modules/@capacitor/core/dist/esm/web/camera.ngsummary.json +0 -1
  52. package/esm2015/node_modules/@capacitor/core/dist/esm/web/clipboard.ngsummary.json +0 -1
  53. package/esm2015/node_modules/@capacitor/core/dist/esm/web/device.ngsummary.json +0 -1
  54. package/esm2015/node_modules/@capacitor/core/dist/esm/web/filesystem.ngsummary.json +0 -1
  55. package/esm2015/node_modules/@capacitor/core/dist/esm/web/geolocation.ngsummary.json +0 -1
  56. package/esm2015/node_modules/@capacitor/core/dist/esm/web/index.ngsummary.json +0 -1
  57. package/esm2015/node_modules/@capacitor/core/dist/esm/web/local-notifications.ngsummary.json +0 -1
  58. package/esm2015/node_modules/@capacitor/core/dist/esm/web/modals.ngsummary.json +0 -1
  59. package/esm2015/node_modules/@capacitor/core/dist/esm/web/motion.ngsummary.json +0 -1
  60. package/esm2015/node_modules/@capacitor/core/dist/esm/web/network.ngsummary.json +0 -1
  61. package/esm2015/node_modules/@capacitor/core/dist/esm/web/permissions.ngsummary.json +0 -1
  62. package/esm2015/node_modules/@capacitor/core/dist/esm/web/share.ngsummary.json +0 -1
  63. package/esm2015/node_modules/@capacitor/core/dist/esm/web/splash-screen.ngsummary.json +0 -1
  64. package/esm2015/node_modules/@capacitor/core/dist/esm/web/storage.ngsummary.json +0 -1
  65. package/esm2015/node_modules/@capacitor/core/dist/esm/web/toast.ngsummary.json +0 -1
  66. package/esm2015/node_modules/@capacitor/core/dist/esm/web-plugins.ngsummary.json +0 -1
  67. package/esm2015/node_modules/@idea-ionic/common/idea-ionic-common.ngfactory.js +0 -1546
  68. package/esm2015/node_modules/@idea-ionic/common/idea-ionic-common.ngsummary.json +0 -1
  69. package/esm2015/node_modules/@ionic/angular/ionic-angular.ngfactory.js +0 -524
  70. package/esm2015/node_modules/@ionic/angular/ionic-angular.ngsummary.json +0 -1
  71. package/esm2015/node_modules/@ionic/angular/node_modules/tslib/tslib.ngsummary.json +0 -1
  72. package/esm2015/node_modules/@ionic/core/dist/types/components/action-sheet/action-sheet-interface.ngsummary.json +0 -1
  73. package/esm2015/node_modules/@ionic/core/dist/types/components/alert/alert-interface.ngsummary.json +0 -1
  74. package/esm2015/node_modules/@ionic/core/dist/types/components/checkbox/checkbox-interface.ngsummary.json +0 -1
  75. package/esm2015/node_modules/@ionic/core/dist/types/components/content/content-interface.ngsummary.json +0 -1
  76. package/esm2015/node_modules/@ionic/core/dist/types/components/datetime/datetime-interface.ngsummary.json +0 -1
  77. package/esm2015/node_modules/@ionic/core/dist/types/components/input/input-interface.ngsummary.json +0 -1
  78. package/esm2015/node_modules/@ionic/core/dist/types/components/loading/loading-interface.ngsummary.json +0 -1
  79. package/esm2015/node_modules/@ionic/core/dist/types/components/menu/menu-interface.ngsummary.json +0 -1
  80. package/esm2015/node_modules/@ionic/core/dist/types/components/modal/modal-interface.ngsummary.json +0 -1
  81. package/esm2015/node_modules/@ionic/core/dist/types/components/nav/constants.ngsummary.json +0 -1
  82. package/esm2015/node_modules/@ionic/core/dist/types/components/nav/nav-interface.ngsummary.json +0 -1
  83. package/esm2015/node_modules/@ionic/core/dist/types/components/nav/view-controller.ngsummary.json +0 -1
  84. package/esm2015/node_modules/@ionic/core/dist/types/components/picker/picker-interface.ngsummary.json +0 -1
  85. package/esm2015/node_modules/@ionic/core/dist/types/components/popover/popover-interface.ngsummary.json +0 -1
  86. package/esm2015/node_modules/@ionic/core/dist/types/components/radio-group/radio-group-interface.ngsummary.json +0 -1
  87. package/esm2015/node_modules/@ionic/core/dist/types/components/range/range-interface.ngsummary.json +0 -1
  88. package/esm2015/node_modules/@ionic/core/dist/types/components/refresher/refresher-interface.ngsummary.json +0 -1
  89. package/esm2015/node_modules/@ionic/core/dist/types/components/reorder-group/reorder-group-interface.ngsummary.json +0 -1
  90. package/esm2015/node_modules/@ionic/core/dist/types/components/route/route-interface.ngsummary.json +0 -1
  91. package/esm2015/node_modules/@ionic/core/dist/types/components/router/utils/interface.ngsummary.json +0 -1
  92. package/esm2015/node_modules/@ionic/core/dist/types/components/searchbar/searchbar-interface.ngsummary.json +0 -1
  93. package/esm2015/node_modules/@ionic/core/dist/types/components/segment/segment-interface.ngsummary.json +0 -1
  94. package/esm2015/node_modules/@ionic/core/dist/types/components/select/select-interface.ngsummary.json +0 -1
  95. package/esm2015/node_modules/@ionic/core/dist/types/components/select-popover/select-popover-interface.ngsummary.json +0 -1
  96. package/esm2015/node_modules/@ionic/core/dist/types/components/spinner/spinner-configs.ngsummary.json +0 -1
  97. package/esm2015/node_modules/@ionic/core/dist/types/components/spinner/spinner-interface.ngsummary.json +0 -1
  98. package/esm2015/node_modules/@ionic/core/dist/types/components/tab-bar/tab-bar-interface.ngsummary.json +0 -1
  99. package/esm2015/node_modules/@ionic/core/dist/types/components/textarea/textarea-interface.ngsummary.json +0 -1
  100. package/esm2015/node_modules/@ionic/core/dist/types/components/toast/toast-interface.ngsummary.json +0 -1
  101. package/esm2015/node_modules/@ionic/core/dist/types/components/toggle/toggle-interface.ngsummary.json +0 -1
  102. package/esm2015/node_modules/@ionic/core/dist/types/components/virtual-scroll/virtual-scroll-interface.ngsummary.json +0 -1
  103. package/esm2015/node_modules/@ionic/core/dist/types/components.ngsummary.json +0 -1
  104. package/esm2015/node_modules/@ionic/core/dist/types/global/config.ngsummary.json +0 -1
  105. package/esm2015/node_modules/@ionic/core/dist/types/index.ngsummary.json +0 -1
  106. package/esm2015/node_modules/@ionic/core/dist/types/interface.ngsummary.json +0 -1
  107. package/esm2015/node_modules/@ionic/core/dist/types/stencil-public-runtime.ngsummary.json +0 -1
  108. package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/animation-interface.ngsummary.json +0 -1
  109. package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/animation.ngsummary.json +0 -1
  110. package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/cubic-bezier.ngsummary.json +0 -1
  111. package/esm2015/node_modules/@ionic/core/dist/types/utils/config.ngsummary.json +0 -1
  112. package/esm2015/node_modules/@ionic/core/dist/types/utils/gesture/gesture-controller.ngsummary.json +0 -1
  113. package/esm2015/node_modules/@ionic/core/dist/types/utils/gesture/index.ngsummary.json +0 -1
  114. package/esm2015/node_modules/@ionic/core/dist/types/utils/menu-controller/index.ngsummary.json +0 -1
  115. package/esm2015/node_modules/@ionic/core/dist/types/utils/overlays-interface.ngsummary.json +0 -1
  116. package/esm2015/node_modules/@ionic/core/dist/types/utils/overlays.ngsummary.json +0 -1
  117. package/esm2015/node_modules/@ionic/core/dist/types/utils/platform.ngsummary.json +0 -1
  118. package/esm2015/node_modules/@ionic/core/dist/types/utils/sanitization/index.ngsummary.json +0 -1
  119. package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/index.ngsummary.json +0 -1
  120. package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/ios.transition.ngsummary.json +0 -1
  121. package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/md.transition.ngsummary.json +0 -1
  122. package/esm2015/node_modules/@ionic/storage/dist/esm/index.ngsummary.json +0 -1
  123. package/esm2015/node_modules/angular-calendar/angular-calendar.ngfactory.js +0 -397
  124. package/esm2015/node_modules/angular-calendar/angular-calendar.ngsummary.json +0 -1
  125. package/esm2015/node_modules/angular-calendar/date-adapters/date-fns/index.ngsummary.json +0 -1
  126. package/esm2015/node_modules/angular-calendar/node_modules/tslib/tslib.ngsummary.json +0 -1
  127. package/esm2015/node_modules/angular-draggable-droppable/angular-draggable-droppable.ngfactory.js +0 -5
  128. package/esm2015/node_modules/angular-draggable-droppable/angular-draggable-droppable.ngsummary.json +0 -1
  129. package/esm2015/node_modules/angular-draggable-droppable/node_modules/tslib/tslib.ngsummary.json +0 -1
  130. package/esm2015/node_modules/angular-resizable-element/angular-resizable-element.ngfactory.js +0 -5
  131. package/esm2015/node_modules/angular-resizable-element/angular-resizable-element.ngsummary.json +0 -1
  132. package/esm2015/node_modules/angular-resizable-element/node_modules/tslib/tslib.ngsummary.json +0 -1
  133. package/esm2015/node_modules/calendar-utils/calendar-utils.ngsummary.json +0 -1
  134. package/esm2015/node_modules/calendar-utils/date-adapters/date-adapter/index.ngsummary.json +0 -1
  135. package/esm2015/node_modules/date-fns/typings.ngsummary.json +0 -1
  136. package/esm2015/node_modules/idea-toolbox/dist/index.ngsummary.json +0 -1
  137. package/esm2015/node_modules/idea-toolbox/dist/src/APIRequestLog.model.ngsummary.json +0 -1
  138. package/esm2015/node_modules/idea-toolbox/dist/src/RCAttachedResource.model.ngsummary.json +0 -1
  139. package/esm2015/node_modules/idea-toolbox/dist/src/RCConfiguredFolder.model.ngsummary.json +0 -1
  140. package/esm2015/node_modules/idea-toolbox/dist/src/RCFolder.model.ngsummary.json +0 -1
  141. package/esm2015/node_modules/idea-toolbox/dist/src/RCResource.model.ngsummary.json +0 -1
  142. package/esm2015/node_modules/idea-toolbox/dist/src/address.model.ngsummary.json +0 -1
  143. package/esm2015/node_modules/idea-toolbox/dist/src/amazonTranslateLanguages.enum.ngsummary.json +0 -1
  144. package/esm2015/node_modules/idea-toolbox/dist/src/announcement.model.ngsummary.json +0 -1
  145. package/esm2015/node_modules/idea-toolbox/dist/src/appointment.model.ngsummary.json +0 -1
  146. package/esm2015/node_modules/idea-toolbox/dist/src/attachment.model.ngsummary.json +0 -1
  147. package/esm2015/node_modules/idea-toolbox/dist/src/booleanChoices.enum.ngsummary.json +0 -1
  148. package/esm2015/node_modules/idea-toolbox/dist/src/cacheable.model.ngsummary.json +0 -1
  149. package/esm2015/node_modules/idea-toolbox/dist/src/cacheableResource.model.ngsummary.json +0 -1
  150. package/esm2015/node_modules/idea-toolbox/dist/src/calendar.model.ngsummary.json +0 -1
  151. package/esm2015/node_modules/idea-toolbox/dist/src/check.model.ngsummary.json +0 -1
  152. package/esm2015/node_modules/idea-toolbox/dist/src/clientInfo.model.ngsummary.json +0 -1
  153. package/esm2015/node_modules/idea-toolbox/dist/src/cognitoUser.model.ngsummary.json +0 -1
  154. package/esm2015/node_modules/idea-toolbox/dist/src/contactRequest.model.ngsummary.json +0 -1
  155. package/esm2015/node_modules/idea-toolbox/dist/src/contacts.model.ngsummary.json +0 -1
  156. package/esm2015/node_modules/idea-toolbox/dist/src/countries.enum.ngsummary.json +0 -1
  157. package/esm2015/node_modules/idea-toolbox/dist/src/customBlockMeta.model.ngsummary.json +0 -1
  158. package/esm2015/node_modules/idea-toolbox/dist/src/customFieldMeta.model.ngsummary.json +0 -1
  159. package/esm2015/node_modules/idea-toolbox/dist/src/customFieldTypes.enum.ngsummary.json +0 -1
  160. package/esm2015/node_modules/idea-toolbox/dist/src/customSectionMeta.model.ngsummary.json +0 -1
  161. package/esm2015/node_modules/idea-toolbox/dist/src/delta.model.ngsummary.json +0 -1
  162. package/esm2015/node_modules/idea-toolbox/dist/src/emailChangeRequest.model.ngsummary.json +0 -1
  163. package/esm2015/node_modules/idea-toolbox/dist/src/emailData.model.ngsummary.json +0 -1
  164. package/esm2015/node_modules/idea-toolbox/dist/src/epoch.ngsummary.json +0 -1
  165. package/esm2015/node_modules/idea-toolbox/dist/src/errorReport.model.ngsummary.json +0 -1
  166. package/esm2015/node_modules/idea-toolbox/dist/src/errorWhitelisted.model.ngsummary.json +0 -1
  167. package/esm2015/node_modules/idea-toolbox/dist/src/excelRow.model.ngsummary.json +0 -1
  168. package/esm2015/node_modules/idea-toolbox/dist/src/invitation.model.ngsummary.json +0 -1
  169. package/esm2015/node_modules/idea-toolbox/dist/src/ionicons.enum.ngsummary.json +0 -1
  170. package/esm2015/node_modules/idea-toolbox/dist/src/label.model.ngsummary.json +0 -1
  171. package/esm2015/node_modules/idea-toolbox/dist/src/labelVariable.model.ngsummary.json +0 -1
  172. package/esm2015/node_modules/idea-toolbox/dist/src/languages.enum.ngsummary.json +0 -1
  173. package/esm2015/node_modules/idea-toolbox/dist/src/languages.model.ngsummary.json +0 -1
  174. package/esm2015/node_modules/idea-toolbox/dist/src/limitCounter.model.ngsummary.json +0 -1
  175. package/esm2015/node_modules/idea-toolbox/dist/src/markdown.ngsummary.json +0 -1
  176. package/esm2015/node_modules/idea-toolbox/dist/src/membership.model.ngsummary.json +0 -1
  177. package/esm2015/node_modules/idea-toolbox/dist/src/notification.model.ngsummary.json +0 -1
  178. package/esm2015/node_modules/idea-toolbox/dist/src/pdfTemplate.model.ngsummary.json +0 -1
  179. package/esm2015/node_modules/idea-toolbox/dist/src/projectPlan.model.ngsummary.json +0 -1
  180. package/esm2015/node_modules/idea-toolbox/dist/src/projectSubscription.model.ngsummary.json +0 -1
  181. package/esm2015/node_modules/idea-toolbox/dist/src/pushNotificationsDevice.model.ngsummary.json +0 -1
  182. package/esm2015/node_modules/idea-toolbox/dist/src/pushNotificationsPlatforms.enum.ngsummary.json +0 -1
  183. package/esm2015/node_modules/idea-toolbox/dist/src/resource.model.ngsummary.json +0 -1
  184. package/esm2015/node_modules/idea-toolbox/dist/src/sentiment.enum.ngsummary.json +0 -1
  185. package/esm2015/node_modules/idea-toolbox/dist/src/signature.model.ngsummary.json +0 -1
  186. package/esm2015/node_modules/idea-toolbox/dist/src/signedURL.model.ngsummary.json +0 -1
  187. package/esm2015/node_modules/idea-toolbox/dist/src/stringVariable.model.ngsummary.json +0 -1
  188. package/esm2015/node_modules/idea-toolbox/dist/src/suggestion.model.ngsummary.json +0 -1
  189. package/esm2015/node_modules/idea-toolbox/dist/src/team.model.ngsummary.json +0 -1
  190. package/esm2015/node_modules/idea-toolbox/dist/src/teamModules.model.ngsummary.json +0 -1
  191. package/esm2015/node_modules/idea-toolbox/dist/src/timeInterval.model.ngsummary.json +0 -1
  192. package/esm2015/node_modules/idea-toolbox/dist/src/user.model.ngsummary.json +0 -1
  193. package/esm2015/node_modules/idea-toolbox/dist/src/utils.ngsummary.json +0 -1
  194. package/esm2015/node_modules/ionicons/dist/types/components/icon/icon.ngsummary.json +0 -1
  195. package/esm2015/node_modules/ionicons/dist/types/components/icon/utils.ngsummary.json +0 -1
  196. package/esm2015/node_modules/ionicons/dist/types/components.ngsummary.json +0 -1
  197. package/esm2015/node_modules/ionicons/dist/types/index.ngsummary.json +0 -1
  198. package/esm2015/node_modules/ionicons/dist/types/stencil-public-runtime.ngsummary.json +0 -1
  199. package/esm2015/node_modules/positioning/dist/entry.ngsummary.json +0 -1
  200. package/esm2015/node_modules/positioning/dist/positioning.ngsummary.json +0 -1
  201. package/esm2015/node_modules/rxjs/index.ngsummary.json +0 -1
  202. package/esm2015/node_modules/rxjs/internal/AsyncSubject.ngsummary.json +0 -1
  203. package/esm2015/node_modules/rxjs/internal/BehaviorSubject.ngsummary.json +0 -1
  204. package/esm2015/node_modules/rxjs/internal/InnerSubscriber.ngsummary.json +0 -1
  205. package/esm2015/node_modules/rxjs/internal/Notification.ngsummary.json +0 -1
  206. package/esm2015/node_modules/rxjs/internal/Observable.ngsummary.json +0 -1
  207. package/esm2015/node_modules/rxjs/internal/Operator.ngsummary.json +0 -1
  208. package/esm2015/node_modules/rxjs/internal/OuterSubscriber.ngsummary.json +0 -1
  209. package/esm2015/node_modules/rxjs/internal/ReplaySubject.ngsummary.json +0 -1
  210. package/esm2015/node_modules/rxjs/internal/Scheduler.ngsummary.json +0 -1
  211. package/esm2015/node_modules/rxjs/internal/Subject.ngsummary.json +0 -1
  212. package/esm2015/node_modules/rxjs/internal/Subscriber.ngsummary.json +0 -1
  213. package/esm2015/node_modules/rxjs/internal/Subscription.ngsummary.json +0 -1
  214. package/esm2015/node_modules/rxjs/internal/config.ngsummary.json +0 -1
  215. package/esm2015/node_modules/rxjs/internal/observable/ConnectableObservable.ngsummary.json +0 -1
  216. package/esm2015/node_modules/rxjs/internal/observable/bindCallback.ngsummary.json +0 -1
  217. package/esm2015/node_modules/rxjs/internal/observable/bindNodeCallback.ngsummary.json +0 -1
  218. package/esm2015/node_modules/rxjs/internal/observable/combineLatest.ngsummary.json +0 -1
  219. package/esm2015/node_modules/rxjs/internal/observable/concat.ngsummary.json +0 -1
  220. package/esm2015/node_modules/rxjs/internal/observable/defer.ngsummary.json +0 -1
  221. package/esm2015/node_modules/rxjs/internal/observable/empty.ngsummary.json +0 -1
  222. package/esm2015/node_modules/rxjs/internal/observable/forkJoin.ngsummary.json +0 -1
  223. package/esm2015/node_modules/rxjs/internal/observable/from.ngsummary.json +0 -1
  224. package/esm2015/node_modules/rxjs/internal/observable/fromEvent.ngsummary.json +0 -1
  225. package/esm2015/node_modules/rxjs/internal/observable/fromEventPattern.ngsummary.json +0 -1
  226. package/esm2015/node_modules/rxjs/internal/observable/generate.ngsummary.json +0 -1
  227. package/esm2015/node_modules/rxjs/internal/observable/iif.ngsummary.json +0 -1
  228. package/esm2015/node_modules/rxjs/internal/observable/interval.ngsummary.json +0 -1
  229. package/esm2015/node_modules/rxjs/internal/observable/merge.ngsummary.json +0 -1
  230. package/esm2015/node_modules/rxjs/internal/observable/never.ngsummary.json +0 -1
  231. package/esm2015/node_modules/rxjs/internal/observable/of.ngsummary.json +0 -1
  232. package/esm2015/node_modules/rxjs/internal/observable/onErrorResumeNext.ngsummary.json +0 -1
  233. package/esm2015/node_modules/rxjs/internal/observable/pairs.ngsummary.json +0 -1
  234. package/esm2015/node_modules/rxjs/internal/observable/partition.ngsummary.json +0 -1
  235. package/esm2015/node_modules/rxjs/internal/observable/race.ngsummary.json +0 -1
  236. package/esm2015/node_modules/rxjs/internal/observable/range.ngsummary.json +0 -1
  237. package/esm2015/node_modules/rxjs/internal/observable/throwError.ngsummary.json +0 -1
  238. package/esm2015/node_modules/rxjs/internal/observable/timer.ngsummary.json +0 -1
  239. package/esm2015/node_modules/rxjs/internal/observable/using.ngsummary.json +0 -1
  240. package/esm2015/node_modules/rxjs/internal/observable/zip.ngsummary.json +0 -1
  241. package/esm2015/node_modules/rxjs/internal/operators/groupBy.ngsummary.json +0 -1
  242. package/esm2015/node_modules/rxjs/internal/scheduled/scheduled.ngsummary.json +0 -1
  243. package/esm2015/node_modules/rxjs/internal/scheduler/Action.ngsummary.json +0 -1
  244. package/esm2015/node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.ngsummary.json +0 -1
  245. package/esm2015/node_modules/rxjs/internal/scheduler/AsapScheduler.ngsummary.json +0 -1
  246. package/esm2015/node_modules/rxjs/internal/scheduler/AsyncAction.ngsummary.json +0 -1
  247. package/esm2015/node_modules/rxjs/internal/scheduler/AsyncScheduler.ngsummary.json +0 -1
  248. package/esm2015/node_modules/rxjs/internal/scheduler/QueueScheduler.ngsummary.json +0 -1
  249. package/esm2015/node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.ngsummary.json +0 -1
  250. package/esm2015/node_modules/rxjs/internal/scheduler/animationFrame.ngsummary.json +0 -1
  251. package/esm2015/node_modules/rxjs/internal/scheduler/asap.ngsummary.json +0 -1
  252. package/esm2015/node_modules/rxjs/internal/scheduler/async.ngsummary.json +0 -1
  253. package/esm2015/node_modules/rxjs/internal/scheduler/queue.ngsummary.json +0 -1
  254. package/esm2015/node_modules/rxjs/internal/symbol/observable.ngsummary.json +0 -1
  255. package/esm2015/node_modules/rxjs/internal/types.ngsummary.json +0 -1
  256. package/esm2015/node_modules/rxjs/internal/util/ArgumentOutOfRangeError.ngsummary.json +0 -1
  257. package/esm2015/node_modules/rxjs/internal/util/EmptyError.ngsummary.json +0 -1
  258. package/esm2015/node_modules/rxjs/internal/util/ObjectUnsubscribedError.ngsummary.json +0 -1
  259. package/esm2015/node_modules/rxjs/internal/util/TimeoutError.ngsummary.json +0 -1
  260. package/esm2015/node_modules/rxjs/internal/util/UnsubscriptionError.ngsummary.json +0 -1
  261. package/esm2015/node_modules/rxjs/internal/util/identity.ngsummary.json +0 -1
  262. package/esm2015/node_modules/rxjs/internal/util/isObservable.ngsummary.json +0 -1
  263. package/esm2015/node_modules/rxjs/internal/util/noop.ngsummary.json +0 -1
  264. package/esm2015/node_modules/rxjs/internal/util/pipe.ngsummary.json +0 -1
  265. package/esm2015/node_modules/signature_pad/dist/types/point.ngsummary.json +0 -1
  266. package/esm2015/node_modules/signature_pad/dist/types/signature_pad.ngsummary.json +0 -1
  267. package/esm2015/node_modules/tslib/tslib.ngsummary.json +0 -1
  268. package/esm2015/public-api.ngsummary.json +0 -1
  269. package/esm2015/src/agenda.component.js +0 -142
  270. package/esm2015/src/agenda.component.ngfactory.js +0 -120
  271. package/esm2015/src/agenda.component.ngsummary.json +0 -1
  272. package/esm2015/src/agenda.component.scss.shim.ngstyle.js +0 -3
  273. package/esm2015/src/agenda.module.js +0 -40
  274. package/esm2015/src/agenda.module.ngfactory.js +0 -20
  275. package/esm2015/src/agenda.module.ngsummary.json +0 -1
  276. package/esm2015/src/calendar.component.js +0 -111
  277. package/esm2015/src/calendar.component.ngfactory.js +0 -54
  278. package/esm2015/src/calendar.component.ngsummary.json +0 -1
  279. package/esm2015/src/calendar.component.scss.shim.ngstyle.js +0 -3
  280. package/esm2015/src/calendarCreation.component.js +0 -116
  281. package/esm2015/src/calendarCreation.component.ngfactory.js +0 -43
  282. package/esm2015/src/calendarCreation.component.ngsummary.json +0 -1
  283. package/esm2015/src/calendarCreation.component.scss.shim.ngstyle.js +0 -3
  284. package/esm2015/src/calendarItem.component.js +0 -119
  285. package/esm2015/src/calendarItem.component.ngfactory.js +0 -24
  286. package/esm2015/src/calendarItem.component.ngsummary.json +0 -1
  287. package/esm2015/src/calendarItem.component.scss.shim.ngstyle.js +0 -3
  288. package/esm2015/src/calendars.service.js +0 -209
  289. package/esm2015/src/calendars.service.ngsummary.json +0 -1
  290. package/esm2015/src/dateFormatter.provider.js +0 -32
  291. package/esm2015/src/dateFormatter.provider.ngsummary.json +0 -1
  292. package/fesm2015/idea-ionic-agenda.js +0 -736
  293. package/fesm2015/idea-ionic-agenda.js.map +0 -1
  294. package/idea-ionic-agenda.metadata.json +0 -1
  295. package/src/agenda.component.ngfactory.d.ts +0 -1
  296. package/src/agenda.component.scss.shim.ngstyle.d.ts +0 -1
  297. package/src/agenda.module.ngfactory.d.ts +0 -3
  298. package/src/calendar.component.ngfactory.d.ts +0 -1
  299. package/src/calendar.component.scss.shim.ngstyle.d.ts +0 -1
  300. package/src/calendarCreation.component.ngfactory.d.ts +0 -1
  301. package/src/calendarCreation.component.scss.shim.ngstyle.d.ts +0 -1
  302. package/src/calendarItem.component.ngfactory.d.ts +0 -1
  303. package/src/calendarItem.component.scss.shim.ngstyle.d.ts +0 -1
package/README.md CHANGED
@@ -15,8 +15,8 @@ _Be sure to install all the requested peer dependencies._
15
15
  Then, add this imports into the `global.scss` file, after the import on the top of the page:
16
16
 
17
17
  ```
18
- @import '../node_modules/angular-calendar/css/angular-calendar.css';
19
- @import '../node_modules/@idea-ionic/agenda/css/global.scss';
18
+ @import '~angular-calendar/css/angular-calendar.css';
19
+ @import '~@idea-ionic/agenda/css/global.scss';
20
20
  ```
21
21
 
22
22
  To make sure the translations are loaded into the project:
package/environment.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ /**
2
+ * The environment variables used by this module.
3
+ */
1
4
  export declare const environment: {
2
5
  idea: {
3
6
  ionicExtraModules: string[];
@@ -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
@@ -0,0 +1,249 @@
1
+ import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { CalendarView } from 'angular-calendar';
4
+ // @ts-ignore
5
+ import { isFuture, isToday, isSameDay } from 'date-fns';
6
+ // @ts-ignore
7
+ import ColorParse from 'color-parse';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ionic/angular";
10
+ import * as i2 from "@idea-ionic/common";
11
+ import * as i3 from "angular-calendar";
12
+ import * as i4 from "@angular/common";
13
+ /**
14
+ * A local fallback URL for the avatars.
15
+ */
16
+ const AVATAR_FALLBACK_URL = './assets/imgs/no-avatar.jpg';
17
+ export class IDEAAgendaComponent {
18
+ constructor(platform, tc, t) {
19
+ this.platform = platform;
20
+ this.tc = tc;
21
+ this.t = t;
22
+ /**
23
+ * The events to display in the calendar.
24
+ */
25
+ this.events = [];
26
+ /**
27
+ * An array of day indexes (0 = sunday, 1 = monday, etc.) that will be hidden on the view.
28
+ */
29
+ this.excludeDays = [];
30
+ /**
31
+ * The day start hours in 24 hour time. Must be 0-23
32
+ */
33
+ this.dayStartHour = 0;
34
+ /**
35
+ * The day start hours in 24 hour time. Must be 0-23
36
+ */
37
+ this.dayEndHour = 23;
38
+ /**
39
+ * The number of segments in an hour. Must divide equally into 60.
40
+ */
41
+ this.hourSegments = 2;
42
+ /**
43
+ * Whether to open the current day's details right away in month view.
44
+ */
45
+ this.activeDayIsOpen = false;
46
+ /**
47
+ * The view mode for the agenda.
48
+ */
49
+ this.view = CalendarView.Week;
50
+ /**
51
+ * Whether to block any day/slot in the past.
52
+ */
53
+ this.onlyFuture = false;
54
+ /**
55
+ * Trigger when an event is selected.
56
+ */
57
+ this.selectEvent = new EventEmitter();
58
+ /**
59
+ * Trigger when a day is selected.
60
+ */
61
+ this.selectDay = new EventEmitter();
62
+ /**
63
+ * Trigger when a time slot is selected.
64
+ */
65
+ this.selectSlot = new EventEmitter();
66
+ /**
67
+ * Trigger when an event changed date (drag&drop or resize).
68
+ */
69
+ this.changeEvent = new EventEmitter();
70
+ /**
71
+ * Trigger when the view date of reference changed (because we moved inside the calendar).
72
+ */
73
+ this.changeDate = new EventEmitter();
74
+ /**
75
+ * Helper to use the enum in the UX.
76
+ */
77
+ this.CalendarView = CalendarView;
78
+ /**
79
+ * The currently selected date.
80
+ */
81
+ this.viewDate = new Date();
82
+ /**
83
+ * A controller to refresh the current view.
84
+ */
85
+ this.refresh = new Subject();
86
+ /**
87
+ * Helper to use the enum in the UI.
88
+ */
89
+ this.Attendance = EventAttendance;
90
+ }
91
+ ngOnInit() {
92
+ this.locale = this.t.getCurrentLang();
93
+ // in case of Italian locale the starting day for the week is monday (1), otherwise sunday (0)
94
+ this.weekStartsOn = this.locale === 'it' ? 1 : 0;
95
+ }
96
+ /**
97
+ * Run some checks before the month view is rendered (e.g. disable invalid days).
98
+ */
99
+ beforeMonthViewRender({ body }) {
100
+ body.forEach(day => {
101
+ if (!this.dateIsValid(day.date, true))
102
+ day.cssClass = 'cal-disabled';
103
+ });
104
+ }
105
+ /**
106
+ * Run some checks before the weel/day view is rendered (e.g. disable invalid days).
107
+ */
108
+ beforeWeekOrDayViewRender({ header }) {
109
+ header.forEach((day) => {
110
+ if (!this.dateIsValid(day.date, true))
111
+ day.cssClass = 'cal-disabled';
112
+ });
113
+ }
114
+ /**
115
+ * Check whether a date is valid based on the configured parameters.
116
+ */
117
+ dateIsValid(date, sameDayIsValid) {
118
+ if (!this.onlyFuture)
119
+ return true;
120
+ return isFuture(date) || (sameDayIsValid ? isToday(date) : false);
121
+ }
122
+ /**
123
+ * Change the current view for the agenda.
124
+ */
125
+ setView(view) {
126
+ this.view = view;
127
+ }
128
+ /**
129
+ * Emit the change of the view date and close the detail component of the month view, if needed.
130
+ */
131
+ viewDateChanged(newDate) {
132
+ if (this.view === CalendarView.Month)
133
+ this.activeDayIsOpen = false;
134
+ this.changeDate.emit(newDate);
135
+ }
136
+ /**
137
+ * A day was selected: manage the detailed view.
138
+ */
139
+ changeDay({ date, events }) {
140
+ // skip if the date isn't valid
141
+ if (!this.dateIsValid(date, true))
142
+ return;
143
+ // if the selected day changed, if the new day has events, open the details in month view (otherwise close them)
144
+ if ((isSameDay(this.viewDate, date) && this.activeDayIsOpen === true) || !events || events.length === 0)
145
+ this.activeDayIsOpen = false;
146
+ else
147
+ this.activeDayIsOpen = true;
148
+ // update the current date in the agenda
149
+ this.viewDate = date;
150
+ }
151
+ /**
152
+ * The time of an event was changed.
153
+ */
154
+ eventTimesChanged({ event, newStart, newEnd }) {
155
+ // update the event
156
+ event.start = newStart;
157
+ event.end = newEnd;
158
+ // re-map the array to trigger the UI refresh
159
+ this.events = this.events.slice();
160
+ // trigger the event to the parent component
161
+ this.changeEvent.emit(event);
162
+ }
163
+ /**
164
+ * Given a color, it returns an opaque version of it.
165
+ */
166
+ getAlternateColor(color, amount, opacity) {
167
+ const alt = ColorParse(color);
168
+ const r = Math.max(Math.min(255, Number(alt.values[0]) + amount), 0);
169
+ const g = Math.max(Math.min(255, Number(alt.values[1]) + amount), 0);
170
+ const b = Math.max(Math.min(255, Number(alt.values[2]) + amount), 0);
171
+ return `rgba(${r}, ${g}, ${b}, ${opacity || 1})`;
172
+ }
173
+ /**
174
+ * Get the content of the tooltip based on the event.
175
+ */
176
+ getTooltipContent(event) {
177
+ if (!event)
178
+ return '';
179
+ let str = event.title ? '<b>' + event.title + '</b>' : '';
180
+ if (event.description)
181
+ str = str.concat('<br>', event.description);
182
+ if (event.icons)
183
+ event.icons.forEach(x => (str = str.concat('<br>', '<i>', x.title, '</i>')));
184
+ if (event.avatars && event.avatars.length) {
185
+ str = str.concat('<br><br>~');
186
+ event.avatars.forEach(x => (str = str.concat('<br>', x.title)));
187
+ }
188
+ return str;
189
+ }
190
+ /**
191
+ * Get a shortened version of the description as preview.
192
+ */
193
+ getPreviewDescription(description) {
194
+ return description && description.length > 100 ? description.slice(0, 100).concat('...') : description;
195
+ }
196
+ /**
197
+ * Load a fallback url when the avatar is missing.
198
+ */
199
+ loadFallbackAvatar(targetImg) {
200
+ const fallback = this.fallbackAvatar || AVATAR_FALLBACK_URL;
201
+ if (targetImg && targetImg.src !== fallback)
202
+ targetImg.src = fallback;
203
+ }
204
+ }
205
+ 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 });
206
+ 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 });
207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaComponent, decorators: [{
208
+ type: Component,
209
+ 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"] }]
210
+ }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i2.IDEATinCanService }, { type: i2.IDEATranslationsService }]; }, propDecorators: { events: [{
211
+ type: Input
212
+ }], excludeDays: [{
213
+ type: Input
214
+ }], dayStartHour: [{
215
+ type: Input
216
+ }], dayEndHour: [{
217
+ type: Input
218
+ }], hourSegments: [{
219
+ type: Input
220
+ }], activeDayIsOpen: [{
221
+ type: Input
222
+ }], view: [{
223
+ type: Input
224
+ }], onlyFuture: [{
225
+ type: Input
226
+ }], fallbackAvatar: [{
227
+ type: Input
228
+ }], selectEvent: [{
229
+ type: Output
230
+ }], selectDay: [{
231
+ type: Output
232
+ }], selectSlot: [{
233
+ type: Output
234
+ }], changeEvent: [{
235
+ type: Output
236
+ }], changeDate: [{
237
+ type: Output
238
+ }] } });
239
+ /**
240
+ * Possible attendance statuses for the event.
241
+ */
242
+ export var EventAttendance;
243
+ (function (EventAttendance) {
244
+ EventAttendance[EventAttendance["DECLINED"] = -1] = "DECLINED";
245
+ EventAttendance[EventAttendance["NEEDS_ACTION"] = 0] = "NEEDS_ACTION";
246
+ EventAttendance[EventAttendance["TENTATIVE"] = 1] = "TENTATIVE";
247
+ EventAttendance[EventAttendance["ACCEPTED"] = 2] = "ACCEPTED";
248
+ })(EventAttendance || (EventAttendance = {}));
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUF1RSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNySCxhQUFhO0FBQ2IsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hELGFBQWE7QUFDYixPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUdyQzs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsNkJBQTZCLENBQUM7QUFRMUQsTUFBTSxPQUFPLG1CQUFtQjtJQW9GOUIsWUFBbUIsUUFBa0IsRUFBUyxFQUFxQixFQUFTLENBQTBCO1FBQW5GLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQXlCO1FBbkZ0Rzs7V0FFRztRQUNhLFdBQU0sR0FBa0IsRUFBRSxDQUFDO1FBQzNDOztXQUVHO1FBQ2EsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0M7O1dBRUc7UUFDYSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQzs7V0FFRztRQUNhLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDYSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQzs7V0FFRztRQUNhLG9CQUFlLEdBQUcsS0FBSyxDQUFD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QUFrTFQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3pCLDhEQUFhLENBQUE7SUFDYixxRUFBZ0IsQ0FBQTtJQUNoQiwrREFBUyxDQUFBO0lBQ1QsNkRBQVEsQ0FBQTtBQUNWLENBQUMsRUFMVyxlQUFlLEtBQWYsZUFBZSxRQUsxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQsIENhbGVuZGFyRXZlbnRUaW1lc0NoYW5nZWRFdmVudCwgQ2FsZW5kYXJNb250aFZpZXdEYXksIENhbGVuZGFyVmlldyB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgaXNGdXR1cmUsIGlzVG9kYXksIGlzU2FtZURheSB9IGZyb20gJ2RhdGUtZm5zJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCBDb2xvclBhcnNlIGZyb20gJ2NvbG9yLXBhcnNlJztcbmltcG9ydCB7IElERUFUaW5DYW5TZXJ2aWNlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbi8qKlxuICogQSBsb2NhbCBmYWxsYmFjayBVUkwgZm9yIHRoZSBhdmF0YXJzLlxuICovXG5jb25zdCBBVkFUQVJfRkFMTEJBQ0tfVVJMID0gJy4vYXNzZXRzL2ltZ3Mvbm8tYXZhdGFyLmpwZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtYWdlbmRhJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlVXJsOiAnYWdlbmRhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2FnZW5kYS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFBZ2VuZGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhlIGV2ZW50cyB0byBkaXNwbGF5IGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudHM6IEFnZW5kYUV2ZW50W10gPSBbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGRheSBpbmRleGVzICgwID0gc3VuZGF5LCAxID0gbW9uZGF5LCBldGMuKSB0aGF0IHdpbGwgYmUgaGlkZGVuIG9uIHRoZSB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGV4Y2x1ZGVEYXlzOiBudW1iZXJbXSA9IFtdO1xuICAvKipcbiAgICogVGhlIGRheSBzdGFydCBob3VycyBpbiAyNCBob3VyIHRpbWUuIE11c3QgYmUgMC0yM1xuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGRheVN0YXJ0SG91ciA9IDA7XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGF5RW5kSG91ciA9IDIzO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhbiBob3VyLiBNdXN0IGRpdmlkZSBlcXVhbGx5IGludG8gNjAuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaG91clNlZ21lbnRzID0gMjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gb3BlbiB0aGUgY3VycmVudCBkYXkncyBkZXRhaWxzIHJpZ2h0IGF3YXkgaW4gbW9udGggdmlldy5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSB2aWV3IG1vZGUgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgdmlldzogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWs7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGJsb2NrIGFueSBkYXkvc2xvdCBpbiB0aGUgcGFzdC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBvbmx5RnV0dXJlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBVUkwgdG8gdGhlIGZhbGxiYWNrIGF2YXRhciB0byBzaG93IGluIGNhc2UgdGhlIGF2YXRhciBvZiBhbiBldmVudCBpc24ndCBmb3VuZC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmYWxsYmFja0F2YXRhcjogc3RyaW5nO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGFuIGV2ZW50IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYSBkYXkgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdERheSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIHRpbWUgc2xvdCBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0U2xvdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhbiBldmVudCBjaGFuZ2VkIGRhdGUgKGRyYWcmZHJvcCBvciByZXNpemUpLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gdGhlIHZpZXcgZGF0ZSBvZiByZWZlcmVuY2UgY2hhbmdlZCAoYmVjYXVzZSB3ZSBtb3ZlZCBpbnNpZGUgdGhlIGNhbGVuZGFyKS5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIEhlbHBlciB0byB1c2UgdGhlIGVudW0gaW4gdGhlIFVYLlxuICAgKi9cbiAgcHVibGljIENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldztcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS5cbiAgICovXG4gIHB1YmxpYyB2aWV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIC8qKlxuICAgKiBBIGNvbnRyb2xsZXIgdG8gcmVmcmVzaCB0aGUgY3VycmVudCB2aWV3LlxuICAgKi9cbiAgcHVibGljIHJlZnJlc2g6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKlxuICAgKiBUaGUgbG9jYWxlIHVzZWQgdG8gZm9ybWF0IGRhdGVzLlxuICAgKiBAaGlkZVxuICAgKi9cbiAgcHVibGljIGxvY2FsZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXJ0aW5nIGRheSBmb3IgdGhlIHdlZWssIGFjY29yZGluZyB0byB0aGUgbG9jYWxlICgwID0gc3VuZGF5KS5cbiAgICogQGhpZGVcbiAgICovXG4gIHB1YmxpYyB3ZWVrU3RhcnRzT246IG51bWJlcjtcbiAgLyoqXG4gICAqIEhlbHBlciB0byB1c2UgdGhlIGVudW0gaW4gdGhlIFVJLlxuICAgKi9cbiAgcHVibGljIEF0dGVuZGFuY2UgPSBFdmVudEF0dGVuZGFuY2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybSwgcHVibGljIHRjOiBJREVBVGluQ2FuU2VydmljZSwgcHVibGljIHQ6IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKSB7fVxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLnQuZ2V0Q3VycmVudExhbmcoKTtcbiAgICAvLyBpbiBjYXNlIG9mIEl0YWxpYW4gbG9jYWxlIHRoZSBzdGFydGluZyBkYXkgZm9yIHRoZSB3ZWVrIGlzIG1vbmRheSAoMSksIG90aGVyd2lzZSBzdW5kYXkgKDApXG4gICAgdGhpcy53ZWVrU3RhcnRzT24gPSB0aGlzLmxvY2FsZSA9PT0gJ2l0JyA/IDEgOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBzb21lIGNoZWNrcyBiZWZvcmUgdGhlIG1vbnRoIHZpZXcgaXMgcmVuZGVyZWQgKGUuZy4gZGlzYWJsZSBpbnZhbGlkIGRheXMpLlxuICAgKi9cbiAgcHVibGljIGJlZm9yZU1vbnRoVmlld1JlbmRlcih7IGJvZHkgfTogeyBib2R5OiBDYWxlbmRhck1vbnRoVmlld0RheVtdIH0pIHtcbiAgICBib2R5LmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXkuZGF0ZSwgdHJ1ZSkpIGRheS5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSdW4gc29tZSBjaGVja3MgYmVmb3JlIHRoZSB3ZWVsL2RheSB2aWV3IGlzIHJlbmRlcmVkIChlLmcuIGRpc2FibGUgaW52YWxpZCBkYXlzKS5cbiAgICovXG4gIHB1YmxpYyBiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKHsgaGVhZGVyIH06IHsgaGVhZGVyOiBhbnkgfSkge1xuICAgIGhlYWRlci5mb3JFYWNoKChkYXk6IGFueSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRheS5kYXRlLCB0cnVlKSkgZGF5LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGRhdGUgaXMgdmFsaWQgYmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBkYXRlSXNWYWxpZChkYXRlOiBEYXRlLCBzYW1lRGF5SXNWYWxpZD86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMub25seUZ1dHVyZSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGlzRnV0dXJlKGRhdGUpIHx8IChzYW1lRGF5SXNWYWxpZCA/IGlzVG9kYXkoZGF0ZSkgOiBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBjdXJyZW50IHZpZXcgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBwdWJsaWMgc2V0Vmlldyh2aWV3OiBDYWxlbmRhclZpZXcpIHtcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIGNoYW5nZSBvZiB0aGUgdmlldyBkYXRlIGFuZCBjbG9zZSB0aGUgZGV0YWlsIGNvbXBvbmVudCBvZiB0aGUgbW9udGggdmlldywgaWYgbmVlZGVkLlxuICAgKi9cbiAgcHVibGljIHZpZXdEYXRlQ2hhbmdlZChuZXdEYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMudmlldyA9PT0gQ2FsZW5kYXJWaWV3Lk1vbnRoKSB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlRGF0ZS5lbWl0KG5ld0RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZGF5IHdhcyBzZWxlY3RlZDogbWFuYWdlIHRoZSBkZXRhaWxlZCB2aWV3LlxuICAgKi9cbiAgcHVibGljIGNoYW5nZURheSh7IGRhdGUsIGV2ZW50cyB9OiB7IGRhdGU6IERhdGU7IGV2ZW50czogQWdlbmRhRXZlbnRbXSB9KSB7XG4gICAgLy8gc2tpcCBpZiB0aGUgZGF0ZSBpc24ndCB2YWxpZFxuICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXRlLCB0cnVlKSkgcmV0dXJuO1xuICAgIC8vIGlmIHRoZSBzZWxlY3RlZCBkYXkgY2hhbmdlZCwgaWYgdGhlIG5ldyBkYXkgaGFzIGV2ZW50cywgb3BlbiB0aGUgZGV0YWlscyBpbiBtb250aCB2aWV3IChvdGhlcndpc2UgY2xvc2UgdGhlbSlcbiAgICBpZiAoKGlzU2FtZURheSh0aGlzLnZpZXdEYXRlLCBkYXRlKSAmJiB0aGlzLmFjdGl2ZURheUlzT3BlbiA9PT0gdHJ1ZSkgfHwgIWV2ZW50cyB8fCBldmVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5hY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgICBlbHNlIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gdHJ1ZTtcbiAgICAvLyB1cGRhdGUgdGhlIGN1cnJlbnQgZGF0ZSBpbiB0aGUgYWdlbmRhXG4gICAgdGhpcy52aWV3RGF0ZSA9IGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRpbWUgb2YgYW4gZXZlbnQgd2FzIGNoYW5nZWQuXG4gICAqL1xuICBwdWJsaWMgZXZlbnRUaW1lc0NoYW5nZWQoeyBldmVudCwgbmV3U3RhcnQsIG5ld0VuZCB9OiBDYWxlbmRhckV2ZW50VGltZXNDaGFuZ2VkRXZlbnQpIHtcbiAgICAvLyB1cGRhdGUgdGhlIGV2ZW50XG4gICAgZXZlbnQuc3RhcnQgPSBuZXdTdGFydDtcbiAgICBldmVudC5lbmQgPSBuZXdFbmQ7XG4gICAgLy8gcmUtbWFwIHRoZSBhcnJheSB0byB0cmlnZ2VyIHRoZSBVSSByZWZyZXNoXG4gICAgdGhpcy5ldmVudHMgPSB0aGlzLmV2ZW50cy5zbGljZSgpO1xuICAgIC8vIHRyaWdnZXIgdGhlIGV2ZW50IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGNvbG9yLCBpdCByZXR1cm5zIGFuIG9wYXF1ZSB2ZXJzaW9uIG9mIGl0LlxuICAgKi9cbiAgcHVibGljIGdldEFsdGVybmF0ZUNvbG9yKGNvbG9yOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBvcGFjaXR5PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbHQgPSBDb2xvclBhcnNlKGNvbG9yKTtcbiAgICBjb25zdCByID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1swXSkgKyBhbW91bnQpLCAwKTtcbiAgICBjb25zdCBnID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1sxXSkgKyBhbW91bnQpLCAwKTtcbiAgICBjb25zdCBiID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1syXSkgKyBhbW91bnQpLCAwKTtcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5IHx8IDF9KWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb250ZW50IG9mIHRoZSB0b29sdGlwIGJhc2VkIG9uIHRoZSBldmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRUb29sdGlwQ29udGVudChldmVudDogQWdlbmRhRXZlbnQpOiBzdHJpbmcge1xuICAgIGlmICghZXZlbnQpIHJldHVybiAnJztcbiAgICBsZXQgc3RyID0gZXZlbnQudGl0bGUgPyAnPGI+JyArIGV2ZW50LnRpdGxlICsgJzwvYj4nIDogJyc7XG4gICAgaWYgKGV2ZW50LmRlc2NyaXB0aW9uKSBzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgZXZlbnQuZGVzY3JpcHRpb24pO1xuICAgIGlmIChldmVudC5pY29ucykgZXZlbnQuaWNvbnMuZm9yRWFjaCh4ID0+IChzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgJzxpPicsIHgudGl0bGUsICc8L2k+JykpKTtcbiAgICBpZiAoZXZlbnQuYXZhdGFycyAmJiBldmVudC5hdmF0YXJzLmxlbmd0aCkge1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPjxicj5+Jyk7XG4gICAgICBldmVudC5hdmF0YXJzLmZvckVhY2goeCA9PiAoc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIHgudGl0bGUpKSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2hvcnRlbmVkIHZlcnNpb24gb2YgdGhlIGRlc2NyaXB0aW9uIGFzIHByZXZpZXcuXG4gICAqL1xuICBwdWJsaWMgZ2V0UHJldmlld0Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvbi5sZW5ndGggPiAxMDAgPyBkZXNjcmlwdGlvbi5zbGljZSgwLCAxMDApLmNvbmNhdCgnLi4uJykgOiBkZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgZmFsbGJhY2sgdXJsIHdoZW4gdGhlIGF2YXRhciBpcyBtaXNzaW5nLlxuICAgKi9cbiAgcHVibGljIGxvYWRGYWxsYmFja0F2YXRhcih0YXJnZXRJbWc6IGFueSkge1xuICAgIGNvbnN0IGZhbGxiYWNrID0gdGhpcy5mYWxsYmFja0F2YXRhciB8fCBBVkFUQVJfRkFMTEJBQ0tfVVJMO1xuICAgIGlmICh0YXJnZXRJbWcgJiYgdGFyZ2V0SW1nLnNyYyAhPT0gZmFsbGJhY2spIHRhcmdldEltZy5zcmMgPSBmYWxsYmFjaztcbiAgfVxufVxuXG4vKipcbiAqIEEgcmljaGVyIHZlcnNpb24gb2YgdGhlIGNsYXNzaWMgQ2FsZW5kYXJFdmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VuZGFFdmVudCBleHRlbmRzIENhbGVuZGFyRXZlbnQge1xuICAvKipcbiAgICogQSBicmllZiBkZXNjcmlwdGlvbiBmb3IgdGhlIGV2ZW50IChlLmcuIGN1c3RvbWVyLCBhZGRyZXNzLCBldGMuKS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBldmVudC5cbiAgICovXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBsaXN0IG9mIFVSTHMgb2YgaW1hZ2VzIHRvIHNob3cgYXMgc21hbGwgYXZhdGFycy5cbiAgICovXG4gIGF2YXRhcnM/OiB7IGlkOiBzdHJpbmc7IHVybDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXTtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpb24taWNvbnMgdG8gc2hvdy5cbiAgICovXG4gIGljb25zPzogeyBuYW1lOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZXZlbnQgaXMgZXh0ZXJuYWw7IGV4dGVybmFsIGV2ZW50cyBhcmUgbGVzcyBpbXBvcnRhbnQgVUktd2lzZS5cbiAgICovXG4gIGV4dGVybmFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhdHRlbmRhbmNlIHN0YXR1cyB0byB0aGlzIGV2ZW50LCBpZiBhbnkuXG4gICAqL1xuICBhdHRlbmRhbmNlPzogRXZlbnRBdHRlbmRhbmNlO1xuICAvKipcbiAgICogQSBzdGFuZGFyZCBhbmQgdW5pcXVlIGlkIGZvciB0aGUgZXZlbnQsIHZhbGlkIGFjcm9zcyBtdWx0aXBsZSBzb3VyY2VzLlxuICAgKi9cbiAgaUNhbFVJRD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQb3NzaWJsZSBhdHRlbmRhbmNlIHN0YXR1c2VzIGZvciB0aGUgZXZlbnQuXG4gKi9cbmV4cG9ydCBlbnVtIEV2ZW50QXR0ZW5kYW5jZSB7XG4gIERFQ0xJTkVEID0gLTEsXG4gIE5FRURTX0FDVElPTiA9IDAsXG4gIFRFTlRBVElWRSxcbiAgQUNDRVBURURcbn1cbiIsIjxkaXYgY2xhc3M9XCJhZ2VuZGFcIj5cbiAgPCEtLSBUT09MQkFSIC0tPlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbFxuICAgICAgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgaW9uLXRleHQtcmlnaHRcIlxuICAgICAgW3NpemVdPVwiNVwiXG4gICAgICBbc2l6ZVNtXT1cIjNcIlxuICAgICAgW3B1c2hTbV09XCI1XCJcbiAgICAgIFtzaXplTGddPVwiMlwiXG4gICAgICBbcHVzaExnXT1cIjhcIlxuICAgID5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBjbGFzcz1cImNhbGVuZGFyVmlld1NlbGVjdG9yXCI+XG4gICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgW3ZhbHVlXT1cInZpZXdcIlxuICAgICAgICAgIChpb25DaGFuZ2UpPVwiJGV2ZW50Py5kZXRhaWwgPyBzZXRWaWV3KCRldmVudC5kZXRhaWwudmFsdWUpIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cIkNhbGVuZGFyVmlldy5Nb250aFwiPnt7ICdJREVBX0FHRU5EQS5NT05USCcgfCB0cmFuc2xhdGUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiQ2FsZW5kYXJWaWV3LldlZWtcIj57eyAnSURFQV9BR0VOREEuV0VFSycgfCB0cmFuc2xhdGUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiQ2FsZW5kYXJWaWV3LkRheVwiPnt7ICdJREVBX0FHRU5EQS5EQVknIHwgdHJhbnNsYXRlIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjdcIlxuICAgICAgW3NpemVTbV09XCI0XCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclByZXZpb3VzVmlld1xuICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclRvZGF5XG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0b2RheS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhck5leHRWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNVwiIFtwdWxsU21dPVwiN1wiIFtzaXplTGddPVwiOFwiIFtwdWxsTGddPVwiNFwiPlxuICAgICAgPGgyPnt7IHZpZXdEYXRlIHwgY2FsZW5kYXJEYXRlOiB2aWV3ICsgJ1ZpZXdUaXRsZSc6dC5nZXRDdXJyZW50TGFuZygpIH19PC9oMj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPCEtLSBURU1QTEFURVMgKHRvdWNoIG9ubHkgd2hhdCdzIG5lY2Vzc2FyeSBhbmQgbGVhdmUgZXZlcnl0aGluZyBlbHNlIGFzIGl0IGlzKSAtLT5cbiAgPG5nLXRlbXBsYXRlICNldmVudFRpdGxlVGVtcGxhdGUgbGV0LWV2ZW50PVwiZXZlbnRcIiBsZXQtdmlldz1cInZpZXdcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJjYWwtZXZlbnQtdGl0bGVcIlxuICAgICAgW2NsYXNzLm5vV3JhcF09XCJldmVudC5hbGxEYXlcIlxuICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwie30gfCBjYWxlbmRhckExMXk6ICdoaWRlRXZlbnRUaXRsZSdcIlxuICAgID5cbiAgICAgIHt7IGV2ZW50LnRpdGxlIHwgY2FsZW5kYXJFdmVudFRpdGxlOiB2aWV3OmV2ZW50IH19XG4gICAgICA8cCAqbmdJZj1cIiFldmVudC5hbGxEYXlcIj57eyBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZXZlbnQuZGVzY3JpcHRpb24pIH19PC9wPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2V2ZW50VGVtcGxhdGVcbiAgICBsZXQtd2Vla0V2ZW50PVwid2Vla0V2ZW50XCJcbiAgICBsZXQtdG9vbHRpcFBsYWNlbWVudD1cInRvb2x0aXBQbGFjZW1lbnRcIlxuICAgIGxldC1ldmVudENsaWNrZWQ9XCJldmVudENsaWNrZWRcIlxuICAgIGxldC10b29sdGlwVGVtcGxhdGU9XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgIGxldC10b29sdGlwQXBwZW5kVG9Cb2R5PVwidG9vbHRpcEFwcGVuZFRvQm9keVwiXG4gICAgbGV0LXRvb2x0aXBEaXNhYmxlZD1cInRvb2x0aXBEaXNhYmxlZFwiXG4gICAgbGV0LXRvb2x0aXBEZWxheT1cInRvb2x0aXBEZWxheVwiXG4gICAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gICAgbGV0LWRheXNJbldlZWs9XCJkYXlzSW5XZWVrXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2FsLWV2ZW50XCJcbiAgICAgIFtjbGFzcy5leHRlcm5hbF09XCJ3ZWVrRXZlbnQuZXZlbnQuZXh0ZXJuYWxcIlxuICAgICAgW2NsYXNzLm5lZWRzQWN0aW9uXT1cIkF0dGVuZGFuY2UuTkVFRFNfQUNUSU9OID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbY2xhc3MuZGVjbGluZWRdPVwiQXR0ZW5kYW5jZS5ERUNMSU5FRCA9PT0gd2Vla0V2ZW50LmV2ZW50LmF0dGVuZGFuY2VcIlxuICAgICAgW2NsYXNzLnRlbnRhdGl2ZV09XCJBdHRlbmRhbmNlLlRFTlRBVElWRSA9PT0gd2Vla0V2ZW50LmV2ZW50LmF0dGVuZGFuY2VcIlxuICAgICAgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cIndlZWtFdmVudC5ldmVudC5jb2xvci5wcmltYXJ5XCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRBbHRlcm5hdGVDb2xvcih3ZWVrRXZlbnQuZXZlbnQuY29sb3IucHJpbWFyeSwgdGMuZ2V0KCdkYXJrTW9kZScpID8gODAgOiAtNDApXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvci5wcmltYXJ5LCB0Yy5nZXQoJ2RhcmtNb2RlJykgPyA2MCA6IDgwLCAwLjIpXCJcbiAgICAgIFttd2xDYWxlbmRhclRvb2x0aXBdPVwiIXRvb2x0aXBEaXNhYmxlZCAmJiAhcGxhdGZvcm0uaXMoJ21vYmlsZScpID8gZ2V0VG9vbHRpcENvbnRlbnQod2Vla0V2ZW50LmV2ZW50KSA6ICcnXCJcbiAgICAgIFt0b29sdGlwUGxhY2VtZW50XT1cInRvb2x0aXBQbGFjZW1lbnRcIlxuICAgICAgW3Rvb2x0aXBFdmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiXG4gICAgICBbdG9vbHRpcFRlbXBsYXRlXT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgICBbdG9vbHRpcEFwcGVuZFRvQm9keV09XCJ0b29sdGlwQXBwZW5kVG9Cb2R5XCJcbiAgICAgIFt0b29sdGlwRGVsYXldPVwidG9vbHRpcERlbGF5XCJcbiAgICAgIChtd2xDbGljayk9XCJldmVudENsaWNrZWQuZW1pdCh7IHNvdXJjZUV2ZW50OiAkZXZlbnQgfSlcIlxuICAgICAgKG13bEtleWRvd25FbnRlcik9XCJldmVudENsaWNrZWQuZW1pdCh7IHNvdXJjZUV2ZW50OiAkZXZlbnQgfSlcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHJvbGU9XCJhcHBsaWNhdGlvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICB7IGV2ZW50OiB3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudCwgbG9jYWxlOiBsb2NhbGUgfSB8IGNhbGVuZGFyQTExeTogJ2V2ZW50RGVzY3JpcHRpb24nXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxtd2wtY2FsZW5kYXItZXZlbnQtYWN0aW9ucyBbZXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIj4gPC9td2wtY2FsZW5kYXItZXZlbnQtYWN0aW9ucz5cbiAgICAgICZuZ3NwO1xuICAgICAgPG13bC1jYWxlbmRhci1ldmVudC10aXRsZVxuICAgICAgICBbZXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIlxuICAgICAgICBbY3VzdG9tVGVtcGxhdGVdPVwiZXZlbnRUaXRsZVRlbXBsYXRlXCJcbiAgICAgICAgW3ZpZXddPVwiZGF5c0luV2VlayA9PT0gMSA/ICdkYXknIDogJ3dlZWsnXCJcbiAgICAgID5cbiAgICAgIDwvbXdsLWNhbGVuZGFyLWV2ZW50LXRpdGxlPlxuICAgICAgPGRpdiBjbGFzcz1cImV2ZW50R2FkZ2V0c1wiICpuZ0lmPVwiIXdlZWtFdmVudC5ldmVudC5hbGxEYXlcIj5cbiAgICAgICAgPGlvbi1pY29uICpuZ0Zvcj1cImxldCBpY29uIG9mIHdlZWtFdmVudC5ldmVudC5pY29uc1wiIFtuYW1lXT1cImljb24ubmFtZVwiIFt0aXRsZV09XCJpY29uLnRpdGxlXCI+PC9pb24taWNvbj5cbiAgICAgICAgPGlvbi1hdmF0YXIgKm5nRm9yPVwibGV0IGF2YXRhciBvZiB3ZWVrRXZlbnQuZXZlbnQuYXZhdGFyc1wiIFt0aXRsZV09XCJhdmF0YXIudGl0bGVcIj5cbiAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cImF2YXRhci51cmxcIiAoaW9uRXJyb3IpPVwibG9hZEZhbGxiYWNrQXZhdGFyKCRldmVudD8udGFyZ2V0KVwiPjwvaW9uLWltZz5cbiAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwhLS0gVklFV1MgLS0+XG4gIDxkaXYgW25nU3dpdGNoXT1cInZpZXdcIj5cbiAgICA8bXdsLWNhbGVuZGFyLW1vbnRoLXZpZXdcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJDYWxlbmRhclZpZXcuTW9udGhcIlxuICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgIFtldmVudHNdPVwiZXZlbnRzXCJcbiAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgW2FjdGl2ZURheUlzT3Blbl09XCJhY3RpdmVEYXlJc09wZW5cIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW2V4Y2x1ZGVEYXlzXT1cImV4Y2x1ZGVEYXlzXCJcbiAgICAgIFt3ZWVrU3RhcnRzT25dPVwid2Vla1N0YXJ0c09uXCJcbiAgICAgIFtldmVudFRpdGxlVGVtcGxhdGVdPVwiZXZlbnRUaXRsZVRlbXBsYXRlXCJcbiAgICAgIChldmVudENsaWNrZWQpPVwic2VsZWN0RXZlbnQuZW1pdCgkZXZlbnQuZXZlbnQpXCJcbiAgICAgIChldmVudFRpbWVzQ2hhbmdlZCk9XCJldmVudFRpbWVzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChkYXlDbGlja2VkKT1cImNoYW5nZURheSgkZXZlbnQuZGF5KVwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVNb250aFZpZXdSZW5kZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbXdsLWNhbGVuZGFyLW1vbnRoLXZpZXc+XG4gICAgPG13bC1jYWxlbmRhci13ZWVrLXZpZXdcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJDYWxlbmRhclZpZXcuV2Vla1wiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZXhjbHVkZURheXNdPVwiZXhjbHVkZURheXNcIlxuICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgW2RheVN0YXJ0SG91cl09XCJkYXlTdGFydEhvdXJcIlxuICAgICAgW2RheUVuZEhvdXJdPVwiZGF5RW5kSG91clwiXG4gICAgICBbaG91clNlZ21lbnRzXT1cImhvdXJTZWdtZW50c1wiXG4gICAgICBbZXZlbnRUZW1wbGF0ZV09XCJldmVudFRlbXBsYXRlXCJcbiAgICAgIChldmVudENsaWNrZWQpPVwic2VsZWN0RXZlbnQuZW1pdCgkZXZlbnQuZXZlbnQpXCJcbiAgICAgIChldmVudFRpbWVzQ2hhbmdlZCk9XCJldmVudFRpbWVzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChkYXlIZWFkZXJDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXkuZGF0ZSkgPyBzZWxlY3REYXkuZW1pdCgkZXZlbnQuZGF5LmRhdGUpIDogbnVsbFwiXG4gICAgICAoaG91clNlZ21lbnRDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXRlKSA/IHNlbGVjdFNsb3QuZW1pdCgkZXZlbnQuZGF0ZSkgOiBudWxsXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbXdsLWNhbGVuZGFyLXdlZWstdmlldz5cbiAgICA8bXdsLWNhbGVuZGFyLWRheS12aWV3XG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiQ2FsZW5kYXJWaWV3LkRheVwiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZGF5U3RhcnRIb3VyXT1cImRheVN0YXJ0SG91clwiXG4gICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgIFtob3VyU2VnbWVudHNdPVwiaG91clNlZ21lbnRzXCJcbiAgICAgIFtldmVudFRlbXBsYXRlXT1cImV2ZW50VGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKCRldmVudClcIlxuICAgID5cbiAgICA8L213bC1jYWxlbmRhci1kYXktdmlldz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -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=