@nylas/web-elements 2.2.0 → 2.2.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 (202) hide show
  1. package/dist/nylas-web-elements/{abstract-provider-D75Ucvku.js → abstract-provider-9AZudYSI.js} +2 -2
  2. package/dist/nylas-web-elements/{abstract-provider-D75Ucvku.js.map → abstract-provider-9AZudYSI.js.map} +1 -1
  3. package/dist/nylas-web-elements/add-circle-icon.entry.js +1 -1
  4. package/dist/nylas-web-elements/archive-icon.entry.js +1 -1
  5. package/dist/nylas-web-elements/arrow-icon.entry.js +1 -1
  6. package/dist/nylas-web-elements/bold-icon.entry.js +1 -1
  7. package/dist/nylas-web-elements/button-component.entry.js +1 -1
  8. package/dist/nylas-web-elements/calendar-agenda-fill-icon.entry.js +1 -1
  9. package/dist/nylas-web-elements/calendar-agenda-icon.entry.js +1 -1
  10. package/dist/nylas-web-elements/calendar-cancel-icon.entry.js +1 -1
  11. package/dist/nylas-web-elements/calendar-check-icon.entry.js +1 -1
  12. package/dist/nylas-web-elements/calendar-icon.entry.js +1 -1
  13. package/dist/nylas-web-elements/calendar-info-icon.entry.js +1 -1
  14. package/dist/nylas-web-elements/calendar-patterns-icon.entry.js +1 -1
  15. package/dist/nylas-web-elements/checkbox-component.entry.esm.js.map +1 -1
  16. package/dist/nylas-web-elements/checkbox-component.entry.js +1 -1
  17. package/dist/nylas-web-elements/checkbox-component.entry.js.map +1 -1
  18. package/dist/nylas-web-elements/checkbox-group.entry.js +1 -1
  19. package/dist/nylas-web-elements/checkmark-circle-icon.entry.js +1 -1
  20. package/dist/nylas-web-elements/checkmark-icon.entry.js +1 -1
  21. package/dist/nylas-web-elements/chevron-icon.entry.js +1 -1
  22. package/dist/nylas-web-elements/clock-icon.entry.js +1 -1
  23. package/dist/nylas-web-elements/close-icon.entry.js +1 -1
  24. package/dist/nylas-web-elements/copy-icon.entry.js +1 -1
  25. package/dist/nylas-web-elements/{customParseFormat-Bk5PI6Cs.js → customParseFormat-BJNMxHY2.js} +2 -2
  26. package/dist/nylas-web-elements/{customParseFormat-Bk5PI6Cs.js.map → customParseFormat-BJNMxHY2.js.map} +1 -1
  27. package/dist/nylas-web-elements/delete-icon.entry.js +1 -1
  28. package/dist/nylas-web-elements/document-refresh-icon.entry.js +1 -1
  29. package/dist/nylas-web-elements/dragable-icon.entry.js +1 -1
  30. package/dist/nylas-web-elements/edit-icon.entry.js +1 -1
  31. package/dist/nylas-web-elements/envelope-fill-icon.entry.js +1 -1
  32. package/dist/nylas-web-elements/envelope-icon.entry.js +1 -1
  33. package/dist/nylas-web-elements/eye-icon.entry.js +1 -1
  34. package/dist/nylas-web-elements/feedback-icon.entry.js +1 -1
  35. package/dist/nylas-web-elements/flow-icon.entry.js +1 -1
  36. package/dist/nylas-web-elements/folder-icon.entry.js +1 -1
  37. package/dist/nylas-web-elements/forward-icon.entry.js +1 -1
  38. package/dist/nylas-web-elements/globe-icon.entry.js +1 -1
  39. package/dist/nylas-web-elements/google-logo-icon.entry.js +1 -1
  40. package/dist/nylas-web-elements/google-meet-icon.entry.js +1 -1
  41. package/dist/nylas-web-elements/inbox-icon.entry.js +1 -1
  42. package/dist/nylas-web-elements/{index-BVtainOy.js → index-BPPwIJj2.js} +2 -2
  43. package/dist/nylas-web-elements/{index-BVtainOy.js.map → index-BPPwIJj2.js.map} +1 -1
  44. package/dist/nylas-web-elements/{index-B-KMpdMZ.js → index-Cbn5rIwb.js} +2 -2
  45. package/dist/nylas-web-elements/index-Cbn5rIwb.js.map +1 -0
  46. package/dist/nylas-web-elements/index.esm.js +1 -1
  47. package/dist/nylas-web-elements/info-icon.entry.js +1 -1
  48. package/dist/nylas-web-elements/input-color-picker.entry.js +1 -1
  49. package/dist/nylas-web-elements/input-component.entry.esm.js.map +1 -1
  50. package/dist/nylas-web-elements/input-component.entry.js +1 -1
  51. package/dist/nylas-web-elements/input-component.entry.js.map +1 -1
  52. package/dist/nylas-web-elements/input-dropdown.entry.esm.js.map +1 -1
  53. package/dist/nylas-web-elements/input-dropdown.entry.js +1 -1
  54. package/dist/nylas-web-elements/input-dropdown.entry.js.map +1 -1
  55. package/dist/nylas-web-elements/input-image-url.entry.js +1 -1
  56. package/dist/nylas-web-elements/italic-icon.entry.js +1 -1
  57. package/dist/nylas-web-elements/loading-icon.entry.js +1 -1
  58. package/dist/nylas-web-elements/location-icon.entry.js +1 -1
  59. package/dist/nylas-web-elements/location-off-icon.entry.js +1 -1
  60. package/dist/nylas-web-elements/microsoft-logo-icon.entry.js +1 -1
  61. package/dist/nylas-web-elements/microsoft-teams-icon.entry.js +1 -1
  62. package/dist/nylas-web-elements/multi-select-dropdown.entry.esm.js.map +1 -1
  63. package/dist/nylas-web-elements/multi-select-dropdown.entry.js +1 -1
  64. package/dist/nylas-web-elements/multi-select-dropdown.entry.js.map +1 -1
  65. package/dist/nylas-web-elements/nylas-additional-participants.entry.js +1 -1
  66. package/dist/nylas-web-elements/{nylas-api-request-B1V2koVc.js → nylas-api-request-rYAjhY1J.js} +2 -2
  67. package/dist/nylas-web-elements/{nylas-api-request-B1V2koVc.js.map → nylas-api-request-rYAjhY1J.js.map} +1 -1
  68. package/dist/nylas-web-elements/nylas-availability-picker.entry.js +1 -1
  69. package/dist/nylas-web-elements/nylas-booked-event-card.entry.js +1 -1
  70. package/dist/nylas-web-elements/nylas-booking-calendar-picker.entry.js +1 -1
  71. package/dist/nylas-web-elements/nylas-booking-confirmation-redirect.entry.js +1 -1
  72. package/dist/nylas-web-elements/nylas-booking-confirmation-type.entry.js +1 -1
  73. package/dist/nylas-web-elements/nylas-booking-form-config.entry.js +2 -2
  74. package/dist/nylas-web-elements/nylas-booking-form.entry.js +1 -1
  75. package/dist/nylas-web-elements/nylas-buffer-time.entry.js +1 -1
  76. package/dist/nylas-web-elements/nylas-calendar-picker.entry.js +1 -1
  77. package/dist/nylas-web-elements/nylas-cancel-booking-form.entry.js +1 -1
  78. package/dist/nylas-web-elements/nylas-cancellation-policy.entry.esm.js.map +1 -1
  79. package/dist/nylas-web-elements/nylas-cancellation-policy.entry.js +1 -1
  80. package/dist/nylas-web-elements/nylas-cancellation-policy.entry.js.map +1 -1
  81. package/dist/nylas-web-elements/nylas-cancelled-event-card.entry.js +1 -1
  82. package/dist/nylas-web-elements/nylas-confirmation-email.entry.js +1 -1
  83. package/dist/nylas-web-elements/nylas-confirmed-event-card.entry.js +1 -1
  84. package/dist/nylas-web-elements/nylas-connected-calendars.entry.js +1 -1
  85. package/dist/nylas-web-elements/nylas-custom-booking-flow.entry.js +1 -1
  86. package/dist/nylas-web-elements/nylas-custom-event-slug.entry.js +1 -1
  87. package/dist/nylas-web-elements/nylas-customize-booking-settings.entry.esm.js.map +1 -1
  88. package/dist/nylas-web-elements/nylas-customize-booking-settings.entry.js +1 -1
  89. package/dist/nylas-web-elements/nylas-customize-booking-settings.entry.js.map +1 -1
  90. package/dist/nylas-web-elements/nylas-date-component.entry.js +1 -1
  91. package/dist/nylas-web-elements/nylas-date-picker.entry.js +1 -1
  92. package/dist/nylas-web-elements/nylas-date-picker.entry.js.map +1 -1
  93. package/dist/nylas-web-elements/nylas-disable-emails.entry.js +1 -1
  94. package/dist/nylas-web-elements/nylas-editor-tabs-group.entry.esm.js.map +1 -1
  95. package/dist/nylas-web-elements/nylas-editor-tabs-group.entry.js +1 -1
  96. package/dist/nylas-web-elements/nylas-editor-tabs-group.entry.js.map +1 -1
  97. package/dist/nylas-web-elements/nylas-editor-tabs.entry.esm.js.map +1 -1
  98. package/dist/nylas-web-elements/nylas-editor-tabs.entry.js +1 -1
  99. package/dist/nylas-web-elements/nylas-editor-tabs.entry.js.map +1 -1
  100. package/dist/nylas-web-elements/nylas-event-calendar.entry.js +1 -1
  101. package/dist/nylas-web-elements/nylas-event-capacity.entry.js +1 -1
  102. package/dist/nylas-web-elements/nylas-event-description.entry.esm.js.map +1 -1
  103. package/dist/nylas-web-elements/nylas-event-description.entry.js +1 -1
  104. package/dist/nylas-web-elements/nylas-event-description.entry.js.map +1 -1
  105. package/dist/nylas-web-elements/nylas-event-duration.entry.esm.js.map +1 -1
  106. package/dist/nylas-web-elements/nylas-event-duration.entry.js +1 -1
  107. package/dist/nylas-web-elements/nylas-event-duration.entry.js.map +1 -1
  108. package/dist/nylas-web-elements/nylas-event-info.entry.js +1 -1
  109. package/dist/nylas-web-elements/nylas-event-limits.entry.esm.js.map +1 -1
  110. package/dist/nylas-web-elements/nylas-event-limits.entry.js +1 -1
  111. package/dist/nylas-web-elements/nylas-event-limits.entry.js.map +1 -1
  112. package/dist/nylas-web-elements/nylas-event-location.entry.esm.js.map +1 -1
  113. package/dist/nylas-web-elements/nylas-event-location.entry.js +1 -1
  114. package/dist/nylas-web-elements/nylas-event-location.entry.js.map +1 -1
  115. package/dist/nylas-web-elements/nylas-event-timeslot.entry.js +1 -1
  116. package/dist/nylas-web-elements/nylas-event-title.entry.esm.js.map +1 -1
  117. package/dist/nylas-web-elements/nylas-event-title.entry.js +1 -1
  118. package/dist/nylas-web-elements/nylas-event-title.entry.js.map +1 -1
  119. package/dist/nylas-web-elements/nylas-feedback-form.entry.js +1 -1
  120. package/dist/nylas-web-elements/nylas-form-card.entry.esm.js.map +1 -1
  121. package/dist/nylas-web-elements/nylas-form-card.entry.js +1 -1
  122. package/dist/nylas-web-elements/nylas-form-card.entry.js.map +1 -1
  123. package/dist/nylas-web-elements/nylas-limit-future-bookings.entry.js +1 -1
  124. package/dist/nylas-web-elements/nylas-list-configurations.entry.js +1 -1
  125. package/dist/nylas-web-elements/nylas-locale-switch.entry.js +1 -1
  126. package/dist/nylas-web-elements/nylas-logo.entry.js +1 -1
  127. package/dist/nylas-web-elements/nylas-min-booking-notice.entry.js +1 -1
  128. package/dist/nylas-web-elements/nylas-min-cancellation-notice.entry.js +1 -1
  129. package/dist/nylas-web-elements/nylas-notification.entry.js +1 -1
  130. package/dist/nylas-web-elements/nylas-notification.entry.js.map +1 -1
  131. package/dist/nylas-web-elements/nylas-organizer-confirmation-card.entry.js +1 -1
  132. package/dist/nylas-web-elements/nylas-page-name.entry.esm.js.map +1 -1
  133. package/dist/nylas-web-elements/nylas-page-name.entry.js +1 -1
  134. package/dist/nylas-web-elements/nylas-page-name.entry.js.map +1 -1
  135. package/dist/nylas-web-elements/nylas-page-styling.entry.js +1 -1
  136. package/dist/nylas-web-elements/nylas-participant-booking-calendars.entry.js +1 -1
  137. package/dist/nylas-web-elements/nylas-participants-custom-availability.entry.js +1 -1
  138. package/dist/nylas-web-elements/nylas-reminder-emails.entry.js +1 -1
  139. package/dist/nylas-web-elements/nylas-reminder-time.entry.js +1 -1
  140. package/dist/nylas-web-elements/nylas-scheduler-editor.entry.esm.js.map +1 -1
  141. package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js +3 -3
  142. package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js.map +1 -1
  143. package/dist/nylas-web-elements/nylas-scheduling-method.entry.js +1 -1
  144. package/dist/nylas-web-elements/nylas-scheduling.entry.js +1 -1
  145. package/dist/nylas-web-elements/nylas-select-event-type.entry.js +1 -1
  146. package/dist/nylas-web-elements/nylas-selected-event-card.entry.js +1 -1
  147. package/dist/nylas-web-elements/nylas-specific-time-availability-picker.entry.js +1 -1
  148. package/dist/nylas-web-elements/nylas-time-window-picker.entry.esm.js.map +1 -1
  149. package/dist/nylas-web-elements/nylas-time-window-picker.entry.js +1 -1
  150. package/dist/nylas-web-elements/nylas-time-window-picker.entry.js.map +1 -1
  151. package/dist/nylas-web-elements/nylas-timeslot-interval.entry.esm.js.map +1 -1
  152. package/dist/nylas-web-elements/nylas-timeslot-interval.entry.js +1 -1
  153. package/dist/nylas-web-elements/nylas-timeslot-interval.entry.js.map +1 -1
  154. package/dist/nylas-web-elements/nylas-timeslot-picker.entry.js +1 -1
  155. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  156. package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
  157. package/dist/nylas-web-elements/paintbrush-fill-icon.entry.js +1 -1
  158. package/dist/nylas-web-elements/paintbrush-icon.entry.js +1 -1
  159. package/dist/nylas-web-elements/people-icon.entry.js +1 -1
  160. package/dist/nylas-web-elements/person-clipboard-icon.entry.js +1 -1
  161. package/dist/nylas-web-elements/person-icon.entry.js +1 -1
  162. package/dist/nylas-web-elements/play-icon.entry.js +1 -1
  163. package/dist/nylas-web-elements/plus-icon.entry.js +1 -1
  164. package/dist/nylas-web-elements/radio-button-group.entry.esm.js.map +1 -1
  165. package/dist/nylas-web-elements/radio-button-group.entry.js +1 -1
  166. package/dist/nylas-web-elements/radio-button-group.entry.js.map +1 -1
  167. package/dist/nylas-web-elements/refresh-icon.entry.js +1 -1
  168. package/dist/nylas-web-elements/{register-component-BHk70oxk.js → register-component-Blj8K64f.js} +2 -2
  169. package/dist/nylas-web-elements/{register-component-BHk70oxk.js.map → register-component-Blj8K64f.js.map} +1 -1
  170. package/dist/nylas-web-elements/reply-all-icon.entry.js +1 -1
  171. package/dist/nylas-web-elements/reply-icon.entry.js +1 -1
  172. package/dist/nylas-web-elements/search-icon.entry.js +1 -1
  173. package/dist/nylas-web-elements/select-dropdown.entry.esm.js.map +1 -1
  174. package/dist/nylas-web-elements/select-dropdown.entry.js +1 -1
  175. package/dist/nylas-web-elements/select-dropdown.entry.js.map +1 -1
  176. package/dist/nylas-web-elements/sent-icon.entry.js +1 -1
  177. package/dist/nylas-web-elements/spam-icon.entry.js +1 -1
  178. package/dist/nylas-web-elements/star-icon.entry.js +1 -1
  179. package/dist/nylas-web-elements/stop-icon.entry.js +1 -1
  180. package/dist/nylas-web-elements/textarea-component.entry.esm.js.map +1 -1
  181. package/dist/nylas-web-elements/textarea-component.entry.js +1 -1
  182. package/dist/nylas-web-elements/textarea-component.entry.js.map +1 -1
  183. package/dist/nylas-web-elements/time-period-selector.entry.js +1 -1
  184. package/dist/nylas-web-elements/toggle-switch.entry.js +1 -1
  185. package/dist/nylas-web-elements/tooltip-component.entry.js +1 -1
  186. package/dist/nylas-web-elements/translate-icon.entry.js +1 -1
  187. package/dist/nylas-web-elements/trash-fill-icon.entry.js +1 -1
  188. package/dist/nylas-web-elements/trash-icon.entry.js +1 -1
  189. package/dist/nylas-web-elements/underline-icon.entry.js +1 -1
  190. package/dist/nylas-web-elements/{utils-Bj5Y75fX.js → utils-DhmCcrVs.js} +3 -3
  191. package/dist/nylas-web-elements/{utils-Bj5Y75fX.js.map → utils-DhmCcrVs.js.map} +1 -1
  192. package/dist/nylas-web-elements/warning-icon.entry.js +1 -1
  193. package/dist/nylas-web-elements/zoom-icon.entry.js +1 -1
  194. package/dist/types/components/design-system/input-component/input-component.d.ts +1 -0
  195. package/dist/types/components/design-system/multi-select-dropdown/multi-select-dropdown.d.ts +1 -0
  196. package/dist/types/components/design-system/textarea-component/textarea-component.d.ts +1 -0
  197. package/dist/types/components/scheduler-editor/nylas-customize-booking-settings/nylas-customize-booking-settings.d.ts +1 -1
  198. package/dist/types/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.d.ts +1 -0
  199. package/dist/types/components.d.ts +4 -4
  200. package/package.json +3 -3
  201. package/readme.md +1 -1
  202. package/dist/nylas-web-elements/index-B-KMpdMZ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["t0","Date","t1","timeInterval","floori","offseti","count","field","interval","date","arguments","length","floor","ceil","round","d0","d1","offset","step","Math","range","start","stop","previous","push","filter","test","setTime","end","every","isFinite","d","millisecond","k","milliseconds","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","getMilliseconds","getUTCSeconds","seconds","timeMinute","getSeconds","getMinutes","timeMinutes","utcMinute","setUTCSeconds","getUTCMinutes","utcMinutes","timeHour","getHours","timeHours","utcHour","setUTCMinutes","getUTCHours","utcHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","timeDays","utcDay","setUTCHours","setUTCDate","getUTCDate","utcDays","unixDay","unixDays","timeWeekday","i","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","timeSundays","timeMondays","timeTuesdays","timeWednesdays","timeThursdays","timeFridays","timeSaturdays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","timeMonth","setMonth","getMonth","getFullYear","timeMonths","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcMonths","timeYear","setFullYear","timeYears","utcYear","setUTCFullYear","utcYears","ascending","a","b","NaN","descending","bisector","f","compare1","compare2","delta","x","zero","left","lo","hi","mid","right","center","number","numbers","values","valueof","undefined","value","index","ascendingBisect","bisectRight","bisectLeft","bisectCenter","blur","r","RangeError","blurf","temp","slice","blur2","Blur2","blurImage","blurfImage","data","rx","ry","width","height","blurx","blury","blurh","blurv","T","S","w","h","y","n","radius","radius0","bluri","t","sum","s0","s1","j","min","max","s","array","empty","arrayify","Array","from","reducer","reduce","cross","pop","map","lengths","fill","product","some","cumsum","Float64Array","v","variance","mean","deviation","sqrt","extent","Adder","constructor","this","_partials","_n","add","p","abs","valueOf","fsum","adder","fcumsum","InternMap","Map","entries","key","keyof","super","Object","defineProperties","_intern","_key","set","get","intern_get","has","intern_set","delete","intern_delete","InternSet","Set","identity","group","keys","nest","groups","flatten","flatMap","g","flatGroup","flatRollup","rollups","rollup","unique","indexes","Error","regroup","permute","source","sort","F","Symbol","iterator","TypeError","Uint32Array","c","ascendingDefined","compareDefined","compare","groupSort","ak","av","bk","bv","prototype","constant","e10","e5","e2","tickSpec","power","log10","error","pow","factor","i1","i2","inc","ticks","reverse","tickIncrement","tickStep","nice","prestep","thresholdSturges","log","LN2","bin","domain","threshold","sturges","histogram","isArray","xz","x0","x1","tz","tn","m","bins","bisect","_","thresholds","call","maxIndex","minIndex","quickselect","Infinity","z","exp","sd","newLeft","newRight","swap","greatest","defined","maxValue","element","quantile","isNaN","i0","value0","subarray","value1","quantileSorted","quantileIndex","thresholdFreedmanDiaconis","thresholdScott","cbrt","median","medianIndex","arrays","merge","mode","counts","modeValue","modeCount","pairs","pairof","pair","first","rank","V","R","compareIndex","forEach","least","minValue","leastIndex","greatestIndex","scan","shuffle","shuffler","random","transpose","matrix","row","zip","mapper","done","next","difference","others","other","disjoint","is","intersection","out","superset","o","io","intern","ivalue","subset","union","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","target","utcTicks","utcTickInterval","timeTicks","timeTickInterval","nylasDatePickerCss","dayjs","extend","utc","timezone","NylasDatePicker","hostRef","selectedTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","selectedDate","dates","getDates","disableNextMonthButton","selectableDatesTimezone","configSettingsChanged","newConfigSettings","nextMonth","availableDaysInFuture","scheduler","available_days_in_future","endDate","addDaysToCurrentDate","getTime","selectedLanguageChanged","newLanguage","i18next","changeLanguage","themeConfigChanged","newThemeConfig","applyThemeConfig","selectedDateChanged","newSelectedDate","isSameMonth","convertDatesToTimezone","targetTimezone","tzDate","selectedTimezoneChanged","newSelectedTimezone","selectableDates","selectableDatesChanged","newSelectableDates","connectedCallback","disconnectedCallback","componentWillLoad","componentDidLoad","debug","themeConfig","host","style","setProperty","lastDayOfMonth","getLastDayOfMonth","firstDayOfMonth","getFirstDayOfMonth","selectDate","dateSelected","emit","changeMonth","change","configSettings","monthChanged","isSelected","isSameDay","isDisabled","render","Host","part","class","name","organizer","eventDuration","convertMinutesToHoursAndMinutes","translateMonth","toLocaleDateString","toLowerCase","title","onClick","button","disabled","isLoading","animationDelay","selected","dateStyle","__decorate","RegisterComponent","stateToProps","eventToProps","async","event","nylasSchedulerConnector","detail","_nylasSchedulerConnector","fireRegisterEvent"],"sources":["../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/interval.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/millisecond.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/duration.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/second.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/minute.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/hour.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/day.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/week.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/month.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/year.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/number.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisect.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/blur.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/count.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/cross.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/cumsum.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/variance.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/deviation.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/extent.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/fsum.js","../../node_modules/.pnpm/internmap@2.0.3/node_modules/internmap/src/index.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/identity.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/group.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/permute.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sort.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/groupSort.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/array.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/constant.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ticks.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/nice.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/threshold/sturges.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bin.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/maxIndex.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/minIndex.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quickselect.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/greatest.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quantile.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/threshold/freedmanDiaconis.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/threshold/scott.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mean.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/median.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/merge.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mode.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/pairs.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/range.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/rank.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/least.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/leastIndex.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/greatestIndex.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/scan.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/shuffle.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sum.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/transpose.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/zip.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/every.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/some.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/filter.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/map.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/reduce.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/reverse.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/difference.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/disjoint.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/intersection.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/superset.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/subset.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/union.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/ticks.js","src/components/scheduler/nylas-date-picker/nylas-date-picker.scss?tag=nylas-date-picker&encapsulation=shadow","src/components/scheduler/nylas-date-picker/nylas-date-picker.tsx"],"sourcesContent":["const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export function blur(values, r) {\n if (!((r = +r) >= 0)) throw new RangeError(\"invalid r\");\n let length = values.length;\n if (!((length = Math.floor(length)) >= 0)) throw new RangeError(\"invalid length\");\n if (!length || !r) return values;\n const blur = blurf(r);\n const temp = values.slice();\n blur(values, temp, 0, length, 1);\n blur(temp, values, 0, length, 1);\n blur(values, temp, 0, length, 1);\n return values;\n}\n\nexport const blur2 = Blur2(blurf);\n\nexport const blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n return function(data, rx, ry = rx) {\n if (!((rx = +rx) >= 0)) throw new RangeError(\"invalid rx\");\n if (!((ry = +ry) >= 0)) throw new RangeError(\"invalid ry\");\n let {data: values, width, height} = data;\n if (!((width = Math.floor(width)) >= 0)) throw new RangeError(\"invalid width\");\n if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError(\"invalid height\");\n if (!width || !height || (!rx && !ry)) return data;\n const blurx = rx && blur(rx);\n const blury = ry && blur(ry);\n const temp = values.slice();\n if (blurx && blury) {\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n } else if (blurx) {\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n } else if (blury) {\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n }\n return data;\n };\n}\n\nfunction blurh(blur, T, S, w, h) {\n for (let y = 0, n = w * h; y < n;) {\n blur(T, S, y, y += w, 1);\n }\n}\n\nfunction blurv(blur, T, S, w, h) {\n for (let x = 0, n = w * h; x < w; ++x) {\n blur(T, S, x, x + n, w);\n }\n}\n\nfunction blurfImage(radius) {\n const blur = blurf(radius);\n return (T, S, start, stop, step) => {\n start <<= 2, stop <<= 2, step <<= 2;\n blur(T, S, start + 0, stop + 0, step);\n blur(T, S, start + 1, stop + 1, step);\n blur(T, S, start + 2, stop + 2, step);\n blur(T, S, start + 3, stop + 3, step);\n };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n const radius0 = Math.floor(radius);\n if (radius0 === radius) return bluri(radius);\n const t = radius - radius0;\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius0 * S[start];\n const s0 = step * radius0;\n const s1 = s0 + step;\n for (let i = start, j = start + s0; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s0)];\n T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n sum -= S[Math.max(start, i - s0)];\n }\n };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius * S[start];\n const s = step * radius;\n for (let i = start, j = start + s; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s)];\n T[i] = sum / w;\n sum -= S[Math.max(start, i - s)];\n }\n };\n}\n","export default function count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n","function length(array) {\n return array.length | 0;\n}\n\nfunction empty(length) {\n return !(length > 0);\n}\n\nfunction arrayify(values) {\n return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n return values => reduce(...values);\n}\n\nexport default function cross(...values) {\n const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n values = values.map(arrayify);\n const lengths = values.map(length);\n const j = values.length - 1;\n const index = new Array(j + 1).fill(0);\n const product = [];\n if (j < 0 || lengths.some(empty)) return product;\n while (true) {\n product.push(index.map((j, i) => values[i][j]));\n let i = j;\n while (++index[i] === lengths[i]) {\n if (i === 0) return reduce ? product.map(reduce) : product;\n index[i--] = 0;\n }\n }\n}\n","export default function cumsum(values, valueof) {\n var sum = 0, index = 0;\n return Float64Array.from(values, valueof === undefined\n ? v => (sum += +v || 0)\n : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","export default function permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n return (reduce.length !== 2\n ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n .map(([key]) => key);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n return () => x;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n return Math.max(1, Math.ceil(Math.log(count(values)) / Math.LN2) + 1);\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n // Be careful not to mutate an array owned by the user!\n var m = tz.length, a = 0, b = m;\n while (tz[a] <= x0) ++a;\n while (tz[b - 1] > x1) --b;\n if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n }\n return maxIndex;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n }\n return minIndex;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n let max;\n let defined = false;\n if (compare.length === 1) {\n let maxValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, maxValue) > 0\n : ascending(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, max) > 0\n : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n return max;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function thresholdFreedmanDiaconis(values, min, max) {\n const c = count(values), d = quantile(values, 0.75) - quantile(values, 0.25);\n return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1;\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n const c = count(values), d = deviation(values);\n return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","import {InternMap} from \"internmap\";\n\nexport default function mode(values, valueof) {\n const counts = new InternMap();\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n }\n let modeValue;\n let modeCount = 0;\n for (const [value, count] of counts) {\n if (count > modeCount) {\n modeCount = count;\n modeValue = value;\n }\n }\n return modeValue;\n}\n","export default function pairs(values, pairof = pair) {\n const pairs = [];\n let previous;\n let first = false;\n for (const value of values) {\n if (first) pairs.push(pairof(previous, value));\n previous = value;\n first = true;\n }\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import ascending from \"./ascending.js\";\nimport {ascendingDefined, compareDefined} from \"./sort.js\";\n\nexport default function rank(values, valueof = ascending) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n let V = Array.from(values);\n const R = new Float64Array(V.length);\n if (valueof.length !== 2) V = V.map(valueof), valueof = ascending;\n const compareIndex = (i, j) => valueof(V[i], V[j]);\n let k, r;\n values = Uint32Array.from(V, (_, i) => i);\n // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123\n values.sort(valueof === ascending ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex));\n values.forEach((j, i) => {\n const c = compareIndex(j, k === undefined ? j : k);\n if (c >= 0) {\n if (k === undefined || c > 0) k = j, r = i;\n R[j] = r;\n } else {\n R[j] = NaN;\n }\n });\n return R;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function least(values, compare = ascending) {\n let min;\n let defined = false;\n if (compare.length === 1) {\n let minValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, minValue) < 0\n : ascending(value, value) === 0) {\n min = element;\n minValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, min) < 0\n : compare(value, value) === 0) {\n min = value;\n defined = true;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport minIndex from \"./minIndex.js\";\n\nexport default function leastIndex(values, compare = ascending) {\n if (compare.length === 1) return minIndex(values, compare);\n let minValue;\n let min = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (min < 0\n ? compare(value, value) === 0\n : compare(value, minValue) < 0) {\n minValue = value;\n min = index;\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport maxIndex from \"./maxIndex.js\";\n\nexport default function greatestIndex(values, compare = ascending) {\n if (compare.length === 1) return maxIndex(values, compare);\n let maxValue;\n let max = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (max < 0\n ? compare(value, value) === 0\n : compare(value, maxValue) > 0) {\n maxValue = value;\n max = index;\n }\n }\n return max;\n}\n","import leastIndex from \"./leastIndex.js\";\n\nexport default function scan(values, compare) {\n const index = leastIndex(values, compare);\n return index < 0 ? undefined : index;\n}\n","export default shuffler(Math.random);\n\nexport function shuffler(random) {\n return function shuffle(array, i0 = 0, i1 = array.length) {\n let m = i1 - (i0 = +i0);\n while (m) {\n const i = random() * m-- | 0, t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n return array;\n };\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","export default function every(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (!test(value, ++index, values)) {\n return false;\n }\n }\n return true;\n}\n","export default function some(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n return true;\n }\n }\n return false;\n}\n","export default function filter(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n const array = [];\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n array.push(value);\n }\n }\n return array;\n}\n","export default function map(values, mapper) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n return Array.from(values, (value, index) => mapper(value, index, values));\n}\n","export default function reduce(values, reducer, value) {\n if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n const iterator = values[Symbol.iterator]();\n let done, next, index = -1;\n if (arguments.length < 3) {\n ({done, value} = iterator.next());\n if (done) return;\n ++index;\n }\n while (({done, value: next} = iterator.next()), !done) {\n value = reducer(value, next, ++index, values);\n }\n return value;\n}\n","export default function reverse(values) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n return Array.from(values).reverse();\n}\n","import {InternSet} from \"internmap\";\n\nexport default function difference(values, ...others) {\n values = new InternSet(values);\n for (const other of others) {\n for (const value of other) {\n values.delete(value);\n }\n }\n return values;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function disjoint(values, other) {\n const iterator = other[Symbol.iterator](), set = new InternSet();\n for (const v of values) {\n if (set.has(v)) return false;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) break;\n if (Object.is(v, value)) return false;\n set.add(value);\n }\n }\n return true;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n values = new InternSet(values);\n others = others.map(set);\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n return values;\n}\n\nfunction set(values) {\n return values instanceof InternSet ? values : new InternSet(values);\n}\n","export default function superset(values, other) {\n const iterator = values[Symbol.iterator](), set = new Set();\n for (const o of other) {\n const io = intern(o);\n if (set.has(io)) continue;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) return false;\n const ivalue = intern(value);\n set.add(ivalue);\n if (Object.is(io, ivalue)) break;\n }\n }\n return true;\n}\n\nfunction intern(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import superset from \"./superset.js\";\n\nexport default function subset(values, other) {\n return superset(other, values);\n}\n","import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n const set = new InternSet();\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n min-height: 444px;\n @include default-css-variables;\n\n @media #{$mobile} {\n min-height: auto;\n }\n}\n\n.nylas-date-picker {\n display: flex;\n gap: 1rem;\n flex-direction: column;\n}\n\n.header {\n margin: 0 0.5rem;\n height: 48px;\n\n h2 {\n font-size: 1.3125rem;\n font-weight: 400;\n line-height: 1rem;\n color: var(--nylas-base-800);\n\n strong {\n font-weight: 600;\n }\n }\n}\n\n.title {\n margin: 0 -1.25rem;\n display: flex;\n flex-direction: column;\n padding: 0 1.5rem;\n gap: 0.5rem;\n border-bottom: 1px solid var(--nylas-base-200);\n font-family: var(--nylas-font-family);\n color: var(--nylas-base-800);\n\n h1 {\n max-width: 376px;\n margin-bottom: 0;\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n\n p {\n margin-top: 0;\n font-size: 16px;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n}\n\n@keyframes pulsate {\n 0% {\n background-color: var(--nylas-base-50);\n }\n\n 50% {\n background-color: var(--nylas-base-100);\n }\n\n 100% {\n background-color: var(--nylas-base-50);\n }\n}\n\n.dates {\n display: grid;\n justify-items: center;\n grid-template-columns: repeat(7, 1fr);\n gap: 0.5rem;\n margin-bottom: 24px;\n\n .date {\n position: relative;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 48px;\n width: 48px;\n min-width: 2rem;\n min-height: 2rem;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n font-size: 16px;\n font-weight: 600;\n font-family: inherit;\n color: var(--nylas-base-text);\n background-color: var(--nylas-base-100);\n cursor: pointer;\n\n &:hover:not(:disabled) {\n box-shadow: 0 0 0 2px var(--nylas-base-500) inset;\n }\n\n border: none;\n\n &.date.current-month {\n color: var(--nylas-base-800);\n }\n\n &.date.selected {\n background-color: var(--nylas-primary);\n color: var(--nylas-base-0);\n font-weight: 700;\n }\n\n &.date.day-skeleton {\n color: var(--nylas-base-300);\n }\n\n &:disabled {\n color: var(--nylas-base-300);\n background-color: transparent;\n font-weight: 400;\n cursor: not-allowed;\n }\n\n @media #{$mobile} {\n width: -webkit-fill-available;\n width: -moz-available;\n width: fill-available;\n }\n\n @media #{$x-small-mobile} {\n height: 38px;\n min-width: none;\n }\n }\n\n .day {\n font-size: 12px;\n color: var(--nylas-base-800);\n font-weight: 600;\n letter-spacing: 0.5px;\n height: 32px;\n display: flex;\n align-items: center;\n\n @media #{$mobile} {\n font-size: 14px;\n }\n }\n\n .date.day-skeleton {\n height: 48px;\n width: 48px;\n border-radius: var(--nylas-border-radius-2x);\n animation: pulsate 1.5s infinite ease-in-out;\n background-color: var(--nylas-base-50);\n\n @media #{$x-small-mobile} {\n width: 38px;\n height: 38px;\n min-width: none;\n }\n }\n\n .date.current-day::after {\n content: '';\n position: absolute;\n bottom: 6px;\n left: 50%;\n transform: translateX(-50%);\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--nylas-base-500);\n }\n\n .date.current-day.selected::after {\n background-color: var(--nylas-base-100);\n }\n}\n\n.pagination {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n min-width: 92px;\n\n .chevron-right {\n transform: rotate(180deg);\n }\n\n .button {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 3vh;\n width: 3vh;\n min-width: 3em;\n min-height: 3em;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n\n background-color: transparent;\n color: var(--nylas-base-800);\n cursor: pointer;\n\n &:hover {\n background-color: var(--nylas-base-50);\n }\n\n border: none;\n\n &:active {\n background-color: var(--nylas-base-100);\n }\n\n &:disabled {\n background-color: transparent;\n color: var(--nylas-base-300);\n cursor: not-allowed;\n }\n }\n}\n\n.flex-row {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n color: var(--nylas-base-500);\n}","import { RegisterComponent } from '@/common/register-component';\nimport { addDaysToCurrentDate, convertMinutesToHoursAndMinutes, getFirstDayOfMonth, getLastDayOfMonth, isSameDay, isSameMonth, translateMonth } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { timeDay } from 'd3-time';\nimport { NylasSchedulerConnector } from '../../..';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport i18next from '@/utils/i18n';\nimport { debug } from '@/utils/utils';\nimport { ThemeConfig } from '@nylas/core';\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\n// Initialize dayjs plugins needed for timezone handling\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n/**\n * The `nylas-date-picker` component is a UI component that allows users to select a date.\n *\n * @part ndp - The date picker host.\n * @part ndp__title - The title.\n * @part ndp__month-header - The month header.\n * @part ndp__month-button - The month button.\n * @part ndp__day - The day.\n * @part ndp__date - The date.\n * @part ndp__date--selected - The selected date.\n * @part ndp__date--current-day - The current day.\n * @part ndp__date--current-month - The dates in the current month.\n * @part ndp__date--disabled - The disabled dates.\n */\n@Component({\n tag: 'nylas-date-picker',\n styleUrl: 'nylas-date-picker.scss',\n shadow: true,\n})\nexport class NylasDatePicker {\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasDatePickerElement;\n\n /**\n * @standalone\n * The dates that are selectable.\n */\n @Prop() selectableDates?: Date[];\n\n /**\n * @standalone\n * The config settings.\n */\n @Prop() configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected timezone.\n */\n @Prop({ attribute: 'selected-timezone' }) readonly selectedTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n /**\n * The selected date.\n */\n @Prop() selectedDate?: Date;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The loading state.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * The event duration.\n */\n @Prop() readonly eventDuration?: number;\n\n /**\n * The month to display.\n */\n @State() month: Date = this.selectedDate || new Date();\n\n /**\n * The dates to render.\n */\n @State() dates: Date[] = this.getDates();\n\n /**\n * The state to disable the next month button.\n */\n @State() disableNextMonthButton: boolean = false;\n\n /**\n * The state to store the selected dates as per the timezone.\n */\n @State() selectableDatesTimezone: Date[] = [];\n\n /**\n * This event is fired when a date is selected.\n */\n @Event() dateSelected!: EventEmitter<Date>;\n\n /**\n * This event is fired when the month is changed.\n */\n @Event() monthChanged!: EventEmitter<Date>;\n\n @Watch('configSettings')\n configSettingsChanged(newConfigSettings: ConfigSettings) {\n const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);\n const availableDaysInFuture = newConfigSettings?.scheduler?.available_days_in_future;\n if (availableDaysInFuture === undefined) {\n return;\n }\n const endDate = addDaysToCurrentDate(new Date(), availableDaysInFuture);\n if (endDate.getTime() < nextMonth.getTime()) {\n this.disableNextMonthButton = true;\n } else {\n this.disableNextMonthButton = false;\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChanged(newLanguage: string) {\n i18next.changeLanguage(newLanguage);\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n @Watch('selectedDate')\n selectedDateChanged(newSelectedDate: Date) {\n if (!newSelectedDate || !isSameMonth(newSelectedDate, this.month)) {\n this.month = newSelectedDate || new Date();\n }\n this.dates = this.getDates();\n }\n\n /**\n * Helper method to convert dates to the specified timezone, preserving only the date part\n */\n private convertDatesToTimezone(dates: Date[] | undefined, targetTimezone: string): Date[] {\n if (!dates || dates.length === 0) {\n return [];\n }\n\n return dates.map(d => {\n const tzDate = dayjs(d).tz(targetTimezone);\n return new Date(tzDate.year(), tzDate.month(), tzDate.date());\n });\n }\n\n @Watch('selectedTimezone')\n selectedTimezoneChanged(newSelectedTimezone: string) {\n this.selectableDatesTimezone = this.convertDatesToTimezone(this.selectableDates, newSelectedTimezone);\n }\n\n @Watch('selectableDates')\n selectableDatesChanged(newSelectableDates: Date[] | undefined) {\n this.selectableDatesTimezone = this.convertDatesToTimezone(newSelectableDates, this.selectedTimezone);\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n componentWillLoad() {}\n\n componentDidLoad() {\n debug(`[nylas-date-picker] Component did load`);\n this.applyThemeConfig(this.themeConfig);\n this.month = this.selectedDate || new Date();\n this.dates = this.getDates();\n this.selectableDatesTimezone = this.convertDatesToTimezone(this.selectableDates, this.selectedTimezone);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n /**\n * Get the dates to render, including the days from the previous and next months.\n * @returns The dates to render.\n */\n private getDates() {\n const lastDayOfMonth = getLastDayOfMonth(this.month);\n const firstDayOfMonth = getFirstDayOfMonth(this.month);\n\n return timeDay.range(timeDay.offset(firstDayOfMonth, -firstDayOfMonth.getDay()), timeDay.offset(lastDayOfMonth, 7 - lastDayOfMonth.getDay()));\n }\n\n /**\n * Select a date.\n * @param date The date to select.\n */\n private selectDate(date?: Date) {\n this.dateSelected.emit(date);\n }\n\n /**\n * Change the month.\n * @param change The change in months.\n */\n private changeMonth(change: number) {\n this.month = new Date(this.month.getFullYear(), this.month.getMonth() + change, 1);\n const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);\n const availableDaysInFuture = this.configSettings?.scheduler?.available_days_in_future;\n const endDate = addDaysToCurrentDate(new Date(), availableDaysInFuture);\n if (endDate.getTime() < nextMonth.getTime()) {\n this.disableNextMonthButton = true;\n } else {\n this.disableNextMonthButton = false;\n }\n this.dates = this.getDates();\n this.monthChanged.emit(this.month);\n }\n\n private isSelected(date: Date | undefined, selectedDate: Date | undefined, selectableDates: Date[] | undefined) {\n return date && selectedDate && isSameDay(date, selectedDate) && selectableDates && selectableDates?.length > 0;\n }\n\n private isDisabled(date: Date | undefined) {\n if (!date || !this.selectableDatesTimezone || this.selectableDatesTimezone.length === 0) {\n return true;\n }\n\n // Compare only the date parts (year, month, day), ignoring time\n return !this.selectableDatesTimezone.some(d => {\n return date.getFullYear() === d.getFullYear() && date.getMonth() === d.getMonth() && date.getDate() === d.getDate();\n });\n }\n\n @RegisterComponent<NylasDatePicker, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-date-picker',\n stateToProps: new Map([\n ['scheduler.selectableDates', 'selectableDates'],\n ['scheduler.selectedDate', 'selectedDate'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.eventDuration', 'eventDuration'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.selectedTimezone', 'selectedTimezone'],\n ]),\n eventToProps: {\n dateSelected: async (event: CustomEvent<Date>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-date-picker', 'dateSelected', event.detail);\n nylasSchedulerConnector.scheduler.selectDate(event.detail);\n },\n monthChanged: async (event: CustomEvent<Date>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-date-picker', 'monthChanged', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"ndp\">\n <div class=\"nylas-date-picker\">\n <div class=\"title\" part=\"ndp__title\">\n {this.configSettings?.name ? (\n <h1>{this.configSettings?.name}</h1>\n ) : (\n this.configSettings?.organizer?.name && (\n <h1>\n <person-icon />\n {this.configSettings?.organizer?.name || 'Organizer'}\n </h1>\n )\n )}\n <p>\n <clock-icon />\n {this.eventDuration ? convertMinutesToHoursAndMinutes(this.eventDuration) : `- ${i18next.t('time.minutes')}`}\n </p>\n </div>\n <div class={'header flex-row'}>\n <h2 part={'ndp__month-header'}>\n <strong>{translateMonth(this.month.toLocaleDateString('en-US', { month: 'long' }).toLowerCase())}</strong>\n &nbsp;\n {this.month.toLocaleDateString(undefined, { year: 'numeric' })}\n </h2>\n <div class={'pagination'}>\n <button\n title=\"Previous month\"\n onClick={() => this.changeMonth(-1)}\n class={{ 'chevron-left': true, 'button': true }}\n disabled={this.month <= new Date()}\n part=\"ndp__month-button\"\n >\n <chevron-icon />\n </button>\n <button\n title=\"Next month\"\n onClick={() => this.changeMonth(1)}\n class={{ 'chevron-right': true, 'button': true }}\n disabled={this.disableNextMonthButton}\n part=\"ndp__month-button\"\n >\n <chevron-icon />\n </button>\n </div>\n </div>\n\n <div class={'dates'}>\n {[\n i18next.t('days.sunday'),\n i18next.t('days.monday'),\n i18next.t('days.tuesday'),\n i18next.t('days.wednesday'),\n i18next.t('days.thursday'),\n i18next.t('days.friday'),\n i18next.t('days.saturday'),\n ].map(day => {\n return (\n <div class={'day'} part=\"ndp__day\">\n {day}\n </div>\n );\n })}\n {this.dates.map((date, i) => {\n const isDisabled = this.isDisabled(date);\n\n if (this.isLoading) {\n return (\n <button\n disabled\n class={{\n 'date day-skeleton': true,\n 'current-month': isSameMonth(date, this.month),\n }}\n style={{ animationDelay: `${i * 20}ms` }}\n part={`ndp__date ndp__date--disabled`}\n >\n {date.getDate()}\n </button>\n );\n }\n return (\n <button\n class={{\n 'date': true,\n 'selected': !!(this.selectedDate && isSameDay(date, this.selectedDate) && this.selectableDates && this.selectableDates?.length > 0),\n 'current-day': isSameDay(date, new Date()),\n 'current-month': isSameMonth(date, this.month),\n }}\n aria-label={date.toLocaleDateString(undefined, { dateStyle: 'full' })}\n disabled={isDisabled}\n onClick={() => this.selectDate(date)}\n part={`ndp__date ${this.isSelected(date, this.selectedDate, this.selectableDates) ? 'ndp__date--selected' : ''} ${isSameDay(date, new Date()) ? 'ndp__date--current-day' : ''} ${isSameMonth(date, this.month) ? 'ndp__date--current-month' : ''}`}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["t0","Date","t1","timeInterval","floori","offseti","count","field","interval","date","arguments","length","floor","ceil","round","d0","d1","offset","step","Math","range","start","stop","previous","push","filter","test","setTime","end","every","isFinite","d","millisecond","k","milliseconds","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","getMilliseconds","getUTCSeconds","seconds","timeMinute","getSeconds","getMinutes","timeMinutes","utcMinute","setUTCSeconds","getUTCMinutes","utcMinutes","timeHour","getHours","timeHours","utcHour","setUTCMinutes","getUTCHours","utcHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","timeDays","utcDay","setUTCHours","setUTCDate","getUTCDate","utcDays","unixDay","unixDays","timeWeekday","i","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","timeSundays","timeMondays","timeTuesdays","timeWednesdays","timeThursdays","timeFridays","timeSaturdays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","timeMonth","setMonth","getMonth","getFullYear","timeMonths","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcMonths","timeYear","setFullYear","timeYears","utcYear","setUTCFullYear","utcYears","ascending","a","b","NaN","descending","bisector","f","compare1","compare2","delta","x","zero","left","lo","hi","mid","right","center","number","numbers","values","valueof","undefined","value","index","ascendingBisect","bisectRight","bisectLeft","bisectCenter","blur","r","RangeError","blurf","temp","slice","blur2","Blur2","blurImage","blurfImage","data","rx","ry","width","height","blurx","blury","blurh","blurv","T","S","w","h","y","n","radius","radius0","bluri","t","sum","s0","s1","j","min","max","s","array","empty","arrayify","Array","from","reducer","reduce","cross","pop","map","lengths","fill","product","some","cumsum","Float64Array","v","variance","mean","deviation","sqrt","extent","Adder","constructor","this","_partials","_n","add","p","abs","valueOf","fsum","adder","fcumsum","InternMap","Map","entries","key","keyof","super","Object","defineProperties","_intern","_key","set","get","intern_get","has","intern_set","delete","intern_delete","InternSet","Set","identity","group","keys","nest","groups","flatten","flatMap","g","flatGroup","flatRollup","rollups","rollup","unique","indexes","Error","regroup","permute","source","sort","F","Symbol","iterator","TypeError","Uint32Array","c","ascendingDefined","compareDefined","compare","groupSort","ak","av","bk","bv","prototype","constant","e10","e5","e2","tickSpec","power","log10","error","pow","factor","i1","i2","inc","ticks","reverse","tickIncrement","tickStep","nice","prestep","thresholdSturges","log","LN2","bin","domain","threshold","sturges","histogram","isArray","xz","x0","x1","tz","tn","m","bins","bisect","_","thresholds","call","maxIndex","minIndex","quickselect","Infinity","z","exp","sd","newLeft","newRight","swap","greatest","defined","maxValue","element","quantile","isNaN","i0","value0","subarray","value1","quantileSorted","quantileIndex","thresholdFreedmanDiaconis","thresholdScott","cbrt","median","medianIndex","arrays","merge","mode","counts","modeValue","modeCount","pairs","pairof","pair","first","rank","V","R","compareIndex","forEach","least","minValue","leastIndex","greatestIndex","scan","shuffle","shuffler","random","transpose","matrix","row","zip","mapper","done","next","difference","others","other","disjoint","is","intersection","out","superset","o","io","intern","ivalue","subset","union","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","target","utcTicks","utcTickInterval","timeTicks","timeTickInterval","nylasDatePickerCss","dayjs","extend","utc","timezone","NylasDatePicker","hostRef","selectedTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","selectedDate","dates","getDates","disableNextMonthButton","selectableDatesTimezone","configSettingsChanged","newConfigSettings","nextMonth","availableDaysInFuture","scheduler","available_days_in_future","endDate","addDaysToCurrentDate","getTime","selectedLanguageChanged","newLanguage","i18next","changeLanguage","themeConfigChanged","newThemeConfig","applyThemeConfig","selectedDateChanged","newSelectedDate","isSameMonth","convertDatesToTimezone","targetTimezone","tzDate","selectedTimezoneChanged","newSelectedTimezone","selectableDates","selectableDatesChanged","newSelectableDates","connectedCallback","disconnectedCallback","componentWillLoad","componentDidLoad","debug","themeConfig","host","style","setProperty","lastDayOfMonth","getLastDayOfMonth","firstDayOfMonth","getFirstDayOfMonth","selectDate","dateSelected","emit","changeMonth","change","configSettings","monthChanged","isSelected","isSameDay","isDisabled","render","Host","part","class","name","organizer","eventDuration","convertMinutesToHoursAndMinutes","translateMonth","toLocaleDateString","toLowerCase","title","onClick","button","disabled","isLoading","animationDelay","selected","dateStyle","__decorate","RegisterComponent","stateToProps","eventToProps","async","event","nylasSchedulerConnector","detail","_nylasSchedulerConnector","fireRegisterEvent"],"sources":["../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/interval.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/millisecond.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/duration.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/second.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/minute.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/hour.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/day.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/week.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/month.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/year.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/number.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisect.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/blur.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/count.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/cross.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/cumsum.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/variance.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/deviation.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/extent.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/fsum.js","../../node_modules/.pnpm/internmap@2.0.3/node_modules/internmap/src/index.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/identity.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/group.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/permute.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sort.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/groupSort.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/array.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/constant.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ticks.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/nice.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/threshold/sturges.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bin.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/maxIndex.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/minIndex.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quickselect.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/greatest.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quantile.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/threshold/freedmanDiaconis.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/threshold/scott.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mean.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/median.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/merge.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mode.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/pairs.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/range.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/rank.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/least.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/leastIndex.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/greatestIndex.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/scan.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/shuffle.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sum.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/transpose.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/zip.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/every.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/some.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/filter.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/map.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/reduce.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/reverse.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/difference.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/disjoint.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/intersection.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/superset.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/subset.js","../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/union.js","../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/ticks.js","src/components/scheduler/nylas-date-picker/nylas-date-picker.scss?tag=nylas-date-picker&encapsulation=shadow","src/components/scheduler/nylas-date-picker/nylas-date-picker.tsx"],"sourcesContent":["const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export function blur(values, r) {\n if (!((r = +r) >= 0)) throw new RangeError(\"invalid r\");\n let length = values.length;\n if (!((length = Math.floor(length)) >= 0)) throw new RangeError(\"invalid length\");\n if (!length || !r) return values;\n const blur = blurf(r);\n const temp = values.slice();\n blur(values, temp, 0, length, 1);\n blur(temp, values, 0, length, 1);\n blur(values, temp, 0, length, 1);\n return values;\n}\n\nexport const blur2 = Blur2(blurf);\n\nexport const blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n return function(data, rx, ry = rx) {\n if (!((rx = +rx) >= 0)) throw new RangeError(\"invalid rx\");\n if (!((ry = +ry) >= 0)) throw new RangeError(\"invalid ry\");\n let {data: values, width, height} = data;\n if (!((width = Math.floor(width)) >= 0)) throw new RangeError(\"invalid width\");\n if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError(\"invalid height\");\n if (!width || !height || (!rx && !ry)) return data;\n const blurx = rx && blur(rx);\n const blury = ry && blur(ry);\n const temp = values.slice();\n if (blurx && blury) {\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n } else if (blurx) {\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n } else if (blury) {\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n }\n return data;\n };\n}\n\nfunction blurh(blur, T, S, w, h) {\n for (let y = 0, n = w * h; y < n;) {\n blur(T, S, y, y += w, 1);\n }\n}\n\nfunction blurv(blur, T, S, w, h) {\n for (let x = 0, n = w * h; x < w; ++x) {\n blur(T, S, x, x + n, w);\n }\n}\n\nfunction blurfImage(radius) {\n const blur = blurf(radius);\n return (T, S, start, stop, step) => {\n start <<= 2, stop <<= 2, step <<= 2;\n blur(T, S, start + 0, stop + 0, step);\n blur(T, S, start + 1, stop + 1, step);\n blur(T, S, start + 2, stop + 2, step);\n blur(T, S, start + 3, stop + 3, step);\n };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n const radius0 = Math.floor(radius);\n if (radius0 === radius) return bluri(radius);\n const t = radius - radius0;\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius0 * S[start];\n const s0 = step * radius0;\n const s1 = s0 + step;\n for (let i = start, j = start + s0; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s0)];\n T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n sum -= S[Math.max(start, i - s0)];\n }\n };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius * S[start];\n const s = step * radius;\n for (let i = start, j = start + s; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s)];\n T[i] = sum / w;\n sum -= S[Math.max(start, i - s)];\n }\n };\n}\n","export default function count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n","function length(array) {\n return array.length | 0;\n}\n\nfunction empty(length) {\n return !(length > 0);\n}\n\nfunction arrayify(values) {\n return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n return values => reduce(...values);\n}\n\nexport default function cross(...values) {\n const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n values = values.map(arrayify);\n const lengths = values.map(length);\n const j = values.length - 1;\n const index = new Array(j + 1).fill(0);\n const product = [];\n if (j < 0 || lengths.some(empty)) return product;\n while (true) {\n product.push(index.map((j, i) => values[i][j]));\n let i = j;\n while (++index[i] === lengths[i]) {\n if (i === 0) return reduce ? product.map(reduce) : product;\n index[i--] = 0;\n }\n }\n}\n","export default function cumsum(values, valueof) {\n var sum = 0, index = 0;\n return Float64Array.from(values, valueof === undefined\n ? v => (sum += +v || 0)\n : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","export default function permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n return (reduce.length !== 2\n ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n .map(([key]) => key);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n return () => x;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n return Math.max(1, Math.ceil(Math.log(count(values)) / Math.LN2) + 1);\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n // Be careful not to mutate an array owned by the user!\n var m = tz.length, a = 0, b = m;\n while (tz[a] <= x0) ++a;\n while (tz[b - 1] > x1) --b;\n if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n }\n return maxIndex;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n }\n return minIndex;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n let max;\n let defined = false;\n if (compare.length === 1) {\n let maxValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, maxValue) > 0\n : ascending(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, max) > 0\n : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n return max;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function thresholdFreedmanDiaconis(values, min, max) {\n const c = count(values), d = quantile(values, 0.75) - quantile(values, 0.25);\n return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1;\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n const c = count(values), d = deviation(values);\n return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","import {InternMap} from \"internmap\";\n\nexport default function mode(values, valueof) {\n const counts = new InternMap();\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n }\n let modeValue;\n let modeCount = 0;\n for (const [value, count] of counts) {\n if (count > modeCount) {\n modeCount = count;\n modeValue = value;\n }\n }\n return modeValue;\n}\n","export default function pairs(values, pairof = pair) {\n const pairs = [];\n let previous;\n let first = false;\n for (const value of values) {\n if (first) pairs.push(pairof(previous, value));\n previous = value;\n first = true;\n }\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import ascending from \"./ascending.js\";\nimport {ascendingDefined, compareDefined} from \"./sort.js\";\n\nexport default function rank(values, valueof = ascending) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n let V = Array.from(values);\n const R = new Float64Array(V.length);\n if (valueof.length !== 2) V = V.map(valueof), valueof = ascending;\n const compareIndex = (i, j) => valueof(V[i], V[j]);\n let k, r;\n values = Uint32Array.from(V, (_, i) => i);\n // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123\n values.sort(valueof === ascending ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex));\n values.forEach((j, i) => {\n const c = compareIndex(j, k === undefined ? j : k);\n if (c >= 0) {\n if (k === undefined || c > 0) k = j, r = i;\n R[j] = r;\n } else {\n R[j] = NaN;\n }\n });\n return R;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function least(values, compare = ascending) {\n let min;\n let defined = false;\n if (compare.length === 1) {\n let minValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, minValue) < 0\n : ascending(value, value) === 0) {\n min = element;\n minValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, min) < 0\n : compare(value, value) === 0) {\n min = value;\n defined = true;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport minIndex from \"./minIndex.js\";\n\nexport default function leastIndex(values, compare = ascending) {\n if (compare.length === 1) return minIndex(values, compare);\n let minValue;\n let min = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (min < 0\n ? compare(value, value) === 0\n : compare(value, minValue) < 0) {\n minValue = value;\n min = index;\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport maxIndex from \"./maxIndex.js\";\n\nexport default function greatestIndex(values, compare = ascending) {\n if (compare.length === 1) return maxIndex(values, compare);\n let maxValue;\n let max = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (max < 0\n ? compare(value, value) === 0\n : compare(value, maxValue) > 0) {\n maxValue = value;\n max = index;\n }\n }\n return max;\n}\n","import leastIndex from \"./leastIndex.js\";\n\nexport default function scan(values, compare) {\n const index = leastIndex(values, compare);\n return index < 0 ? undefined : index;\n}\n","export default shuffler(Math.random);\n\nexport function shuffler(random) {\n return function shuffle(array, i0 = 0, i1 = array.length) {\n let m = i1 - (i0 = +i0);\n while (m) {\n const i = random() * m-- | 0, t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n return array;\n };\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","export default function every(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (!test(value, ++index, values)) {\n return false;\n }\n }\n return true;\n}\n","export default function some(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n return true;\n }\n }\n return false;\n}\n","export default function filter(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n const array = [];\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n array.push(value);\n }\n }\n return array;\n}\n","export default function map(values, mapper) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n return Array.from(values, (value, index) => mapper(value, index, values));\n}\n","export default function reduce(values, reducer, value) {\n if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n const iterator = values[Symbol.iterator]();\n let done, next, index = -1;\n if (arguments.length < 3) {\n ({done, value} = iterator.next());\n if (done) return;\n ++index;\n }\n while (({done, value: next} = iterator.next()), !done) {\n value = reducer(value, next, ++index, values);\n }\n return value;\n}\n","export default function reverse(values) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n return Array.from(values).reverse();\n}\n","import {InternSet} from \"internmap\";\n\nexport default function difference(values, ...others) {\n values = new InternSet(values);\n for (const other of others) {\n for (const value of other) {\n values.delete(value);\n }\n }\n return values;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function disjoint(values, other) {\n const iterator = other[Symbol.iterator](), set = new InternSet();\n for (const v of values) {\n if (set.has(v)) return false;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) break;\n if (Object.is(v, value)) return false;\n set.add(value);\n }\n }\n return true;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n values = new InternSet(values);\n others = others.map(set);\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n return values;\n}\n\nfunction set(values) {\n return values instanceof InternSet ? values : new InternSet(values);\n}\n","export default function superset(values, other) {\n const iterator = values[Symbol.iterator](), set = new Set();\n for (const o of other) {\n const io = intern(o);\n if (set.has(io)) continue;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) return false;\n const ivalue = intern(value);\n set.add(ivalue);\n if (Object.is(io, ivalue)) break;\n }\n }\n return true;\n}\n\nfunction intern(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import superset from \"./superset.js\";\n\nexport default function subset(values, other) {\n return superset(other, values);\n}\n","import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n const set = new InternSet();\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n min-height: 444px;\n @include default-css-variables;\n\n @media #{$mobile} {\n min-height: auto;\n }\n}\n\n.nylas-date-picker {\n display: flex;\n gap: 1rem;\n flex-direction: column;\n}\n\n.header {\n margin: 0 0.5rem;\n height: 48px;\n\n h2 {\n font-size: 1.3125rem;\n font-weight: 400;\n line-height: 1rem;\n color: var(--nylas-base-800);\n\n strong {\n font-weight: 600;\n }\n }\n}\n\n.title {\n margin: 0 -1.25rem;\n display: flex;\n flex-direction: column;\n padding: 0 1.5rem;\n gap: 0.5rem;\n border-bottom: 1px solid var(--nylas-base-200);\n font-family: var(--nylas-font-family);\n color: var(--nylas-base-800);\n\n h1 {\n max-width: 376px;\n margin-bottom: 0;\n font-size: 18px;\n line-height: 20px;\n font-weight: 600;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n\n p {\n margin-top: 0;\n font-size: 16px;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n}\n\n@keyframes pulsate {\n 0% {\n background-color: var(--nylas-base-50);\n }\n\n 50% {\n background-color: var(--nylas-base-100);\n }\n\n 100% {\n background-color: var(--nylas-base-50);\n }\n}\n\n.dates {\n display: grid;\n justify-items: center;\n grid-template-columns: repeat(7, 1fr);\n gap: 0.5rem;\n margin-bottom: 24px;\n\n .date {\n position: relative;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 48px;\n width: 48px;\n min-width: 2rem;\n min-height: 2rem;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n font-size: 16px;\n font-weight: 600;\n font-family: inherit;\n color: var(--nylas-base-text);\n background-color: var(--nylas-base-100);\n cursor: pointer;\n\n &:hover:not(:disabled) {\n box-shadow: 0 0 0 2px var(--nylas-base-500) inset;\n }\n\n border: none;\n\n &.date.current-month {\n color: var(--nylas-base-800);\n }\n\n &.date.selected {\n background-color: var(--nylas-primary);\n color: var(--nylas-base-0);\n font-weight: 700;\n }\n\n &.date.day-skeleton {\n color: var(--nylas-base-300);\n }\n\n &:disabled {\n color: var(--nylas-base-300);\n background-color: transparent;\n font-weight: 400;\n cursor: not-allowed;\n }\n\n @media #{$mobile} {\n width: -webkit-fill-available;\n width: -moz-available;\n width: fill-available;\n }\n\n @media #{$x-small-mobile} {\n height: 38px;\n min-width: none;\n }\n }\n\n .day {\n font-size: 12px;\n color: var(--nylas-base-800);\n font-weight: 600;\n letter-spacing: 0.5px;\n height: 32px;\n display: flex;\n align-items: center;\n\n @media #{$mobile} {\n font-size: 14px;\n }\n }\n\n .date.day-skeleton {\n height: 48px;\n width: 48px;\n border-radius: var(--nylas-border-radius-2x);\n animation: pulsate 1.5s infinite ease-in-out;\n background-color: var(--nylas-base-50);\n\n @media #{$x-small-mobile} {\n width: 38px;\n height: 38px;\n min-width: none;\n }\n }\n\n .date.current-day::after {\n content: '';\n position: absolute;\n bottom: 6px;\n left: 50%;\n transform: translateX(-50%);\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--nylas-base-500);\n }\n\n .date.current-day.selected::after {\n background-color: var(--nylas-base-100);\n }\n}\n\n.pagination {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n min-width: 92px;\n\n .chevron-right {\n transform: rotate(180deg);\n }\n\n .button {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 3vh;\n width: 3vh;\n min-width: 3em;\n min-height: 3em;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n\n background-color: transparent;\n color: var(--nylas-base-800);\n cursor: pointer;\n\n &:hover {\n background-color: var(--nylas-base-50);\n }\n\n border: none;\n\n &:active {\n background-color: var(--nylas-base-100);\n }\n\n &:disabled {\n background-color: transparent;\n color: var(--nylas-base-300);\n cursor: not-allowed;\n }\n }\n}\n\n.flex-row {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n color: var(--nylas-base-500);\n}","import { RegisterComponent } from '@/common/register-component';\nimport { addDaysToCurrentDate, convertMinutesToHoursAndMinutes, getFirstDayOfMonth, getLastDayOfMonth, isSameDay, isSameMonth, translateMonth } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { timeDay } from 'd3-time';\nimport { NylasSchedulerConnector } from '../../..';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { ConfigSettings } from '@/stores/scheduler-store';\nimport i18next from '@/utils/i18n';\nimport { debug } from '@/utils/utils';\nimport { ThemeConfig } from '@nylas/core';\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\n// Initialize dayjs plugins needed for timezone handling\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n/**\n * The `nylas-date-picker` component is a UI component that allows users to select a date.\n *\n * @part ndp - The date picker host.\n * @part ndp__title - The title.\n * @part ndp__month-header - The month header.\n * @part ndp__month-button - The month button.\n * @part ndp__day - The day.\n * @part ndp__date - The date.\n * @part ndp__date--selected - The selected date.\n * @part ndp__date--current-day - The current day.\n * @part ndp__date--current-month - The dates in the current month.\n * @part ndp__date--disabled - The disabled dates.\n */\n@Component({\n tag: 'nylas-date-picker',\n styleUrl: 'nylas-date-picker.scss',\n shadow: true,\n})\nexport class NylasDatePicker {\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasDatePickerElement;\n\n /**\n * @standalone\n * The dates that are selectable.\n */\n @Prop() selectableDates?: Date[];\n\n /**\n * @standalone\n * The config settings.\n */\n @Prop() configSettings?: ConfigSettings;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * The selected timezone.\n */\n @Prop({ attribute: 'selected-timezone' }) readonly selectedTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n /**\n * The selected date.\n */\n @Prop() selectedDate?: Date;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The loading state.\n */\n @Prop() readonly isLoading?: boolean;\n\n /**\n * The event duration.\n */\n @Prop() readonly eventDuration?: number;\n\n /**\n * The month to display.\n */\n @State() month: Date = this.selectedDate || new Date();\n\n /**\n * The dates to render.\n */\n @State() dates: Date[] = this.getDates();\n\n /**\n * The state to disable the next month button.\n */\n @State() disableNextMonthButton: boolean = false;\n\n /**\n * The state to store the selected dates as per the timezone.\n */\n @State() selectableDatesTimezone: Date[] = [];\n\n /**\n * This event is fired when a date is selected.\n */\n @Event() dateSelected!: EventEmitter<Date>;\n\n /**\n * This event is fired when the month is changed.\n */\n @Event() monthChanged!: EventEmitter<Date>;\n\n @Watch('configSettings')\n configSettingsChanged(newConfigSettings: ConfigSettings) {\n const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);\n const availableDaysInFuture = newConfigSettings?.scheduler?.available_days_in_future;\n if (availableDaysInFuture === undefined) {\n return;\n }\n const endDate = addDaysToCurrentDate(new Date(), availableDaysInFuture);\n if (endDate.getTime() < nextMonth.getTime()) {\n this.disableNextMonthButton = true;\n } else {\n this.disableNextMonthButton = false;\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChanged(newLanguage: string) {\n i18next.changeLanguage(newLanguage);\n }\n\n @Watch('themeConfig')\n themeConfigChanged(newThemeConfig: ThemeConfig) {\n this.applyThemeConfig(newThemeConfig);\n }\n\n @Watch('selectedDate')\n selectedDateChanged(newSelectedDate: Date) {\n if (!newSelectedDate || !isSameMonth(newSelectedDate, this.month)) {\n this.month = newSelectedDate || new Date();\n }\n this.dates = this.getDates();\n }\n\n /**\n * Helper method to convert dates to the specified timezone, preserving only the date part\n */\n private convertDatesToTimezone(dates: Date[] | undefined, targetTimezone: string): Date[] {\n if (!dates || dates.length === 0) {\n return [];\n }\n\n return dates.map(d => {\n const tzDate = dayjs(d).tz(targetTimezone);\n return new Date(tzDate.year(), tzDate.month(), tzDate.date());\n });\n }\n\n @Watch('selectedTimezone')\n selectedTimezoneChanged(newSelectedTimezone: string) {\n this.selectableDatesTimezone = this.convertDatesToTimezone(this.selectableDates, newSelectedTimezone);\n }\n\n @Watch('selectableDates')\n selectableDatesChanged(newSelectableDates: Date[] | undefined) {\n this.selectableDatesTimezone = this.convertDatesToTimezone(newSelectableDates, this.selectedTimezone);\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n componentWillLoad() {}\n\n componentDidLoad() {\n debug(`[nylas-date-picker] Component did load`);\n this.applyThemeConfig(this.themeConfig);\n this.month = this.selectedDate || new Date();\n this.dates = this.getDates();\n this.selectableDatesTimezone = this.convertDatesToTimezone(this.selectableDates, this.selectedTimezone);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n /**\n * Get the dates to render, including the days from the previous and next months.\n * @returns The dates to render.\n */\n private getDates() {\n const lastDayOfMonth = getLastDayOfMonth(this.month);\n const firstDayOfMonth = getFirstDayOfMonth(this.month);\n\n return timeDay.range(timeDay.offset(firstDayOfMonth, -firstDayOfMonth.getDay()), timeDay.offset(lastDayOfMonth, 7 - lastDayOfMonth.getDay()));\n }\n\n /**\n * Select a date.\n * @param date The date to select.\n */\n private selectDate(date?: Date) {\n this.dateSelected.emit(date);\n }\n\n /**\n * Change the month.\n * @param change The change in months.\n */\n private changeMonth(change: number) {\n this.month = new Date(this.month.getFullYear(), this.month.getMonth() + change, 1);\n const nextMonth = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);\n const availableDaysInFuture = this.configSettings?.scheduler?.available_days_in_future;\n const endDate = addDaysToCurrentDate(new Date(), availableDaysInFuture);\n if (endDate.getTime() < nextMonth.getTime()) {\n this.disableNextMonthButton = true;\n } else {\n this.disableNextMonthButton = false;\n }\n this.dates = this.getDates();\n this.monthChanged.emit(this.month);\n }\n\n private isSelected(date: Date | undefined, selectedDate: Date | undefined, selectableDates: Date[] | undefined) {\n return date && selectedDate && isSameDay(date, selectedDate) && selectableDates && selectableDates?.length > 0;\n }\n\n private isDisabled(date: Date | undefined) {\n if (!date || !this.selectableDatesTimezone || this.selectableDatesTimezone.length === 0) {\n return true;\n }\n\n // Compare only the date parts (year, month, day), ignoring time\n return !this.selectableDatesTimezone.some(d => {\n return date.getFullYear() === d.getFullYear() && date.getMonth() === d.getMonth() && date.getDate() === d.getDate();\n });\n }\n\n @RegisterComponent<NylasDatePicker, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-date-picker',\n stateToProps: new Map([\n ['scheduler.selectableDates', 'selectableDates'],\n ['scheduler.selectedDate', 'selectedDate'],\n ['scheduler.isLoading', 'isLoading'],\n ['scheduler.configSettings', 'configSettings'],\n ['scheduler.eventDuration', 'eventDuration'],\n ['scheduler.selectedLanguage', 'selectedLanguage'],\n ['scheduler.themeConfig', 'themeConfig'],\n ['scheduler.selectedTimezone', 'selectedTimezone'],\n ]),\n eventToProps: {\n dateSelected: async (event: CustomEvent<Date>, nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-date-picker', 'dateSelected', event.detail);\n nylasSchedulerConnector.scheduler.selectDate(event.detail);\n },\n monthChanged: async (event: CustomEvent<Date>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n debug('nylas-date-picker', 'monthChanged', event.detail);\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"ndp\">\n <div class=\"nylas-date-picker\">\n <div class=\"title\" part=\"ndp__title\">\n {this.configSettings?.name ? (\n <h1>{this.configSettings?.name}</h1>\n ) : (\n this.configSettings?.organizer?.name && (\n <h1>\n <person-icon />\n {this.configSettings?.organizer?.name || 'Organizer'}\n </h1>\n )\n )}\n <p>\n <clock-icon />\n {this.eventDuration ? convertMinutesToHoursAndMinutes(this.eventDuration) : `- ${i18next.t('time.minutes')}`}\n </p>\n </div>\n <div class={'header flex-row'}>\n <h2 part={'ndp__month-header'}>\n <strong>{translateMonth(this.month.toLocaleDateString('en-US', { month: 'long' }).toLowerCase())}</strong>\n &nbsp;\n {this.month.toLocaleDateString(undefined, { year: 'numeric' })}\n </h2>\n <div class={'pagination'}>\n <button\n title=\"Previous month\"\n onClick={() => this.changeMonth(-1)}\n class={{ 'chevron-left': true, 'button': true }}\n disabled={this.month <= new Date()}\n part=\"ndp__month-button\"\n >\n <chevron-icon />\n </button>\n <button\n title=\"Next month\"\n onClick={() => this.changeMonth(1)}\n class={{ 'chevron-right': true, 'button': true }}\n disabled={this.disableNextMonthButton}\n part=\"ndp__month-button\"\n >\n <chevron-icon />\n </button>\n </div>\n </div>\n\n <div class={'dates'}>\n {[\n i18next.t('days.sunday'),\n i18next.t('days.monday'),\n i18next.t('days.tuesday'),\n i18next.t('days.wednesday'),\n i18next.t('days.thursday'),\n i18next.t('days.friday'),\n i18next.t('days.saturday'),\n ].map(day => {\n return (\n <div class={'day'} part=\"ndp__day\">\n {day}\n </div>\n );\n })}\n {this.dates.map((date, i) => {\n const isDisabled = this.isDisabled(date);\n\n if (this.isLoading) {\n return (\n <button\n disabled\n class={{\n 'date day-skeleton': true,\n 'current-month': isSameMonth(date, this.month),\n }}\n style={{ animationDelay: `${i * 20}ms` }}\n part={`ndp__date ndp__date--disabled`}\n >\n {date.getDate()}\n </button>\n );\n }\n return (\n <button\n class={{\n 'date': true,\n 'selected': !!(this.selectedDate && isSameDay(date, this.selectedDate) && this.selectableDates && this.selectableDates?.length > 0),\n 'current-day': isSameDay(date, new Date()),\n 'current-month': isSameMonth(date, this.month),\n }}\n aria-label={date.toLocaleDateString(undefined, { dateStyle: 'full' })}\n disabled={isDisabled}\n onClick={() => this.selectDate(date)}\n part={`ndp__date ${this.isSelected(date, this.selectedDate, this.selectableDates) ? 'ndp__date--selected' : ''} ${isSameDay(date, new Date()) ? 'ndp__date--current-day' : ''} ${isSameMonth(date, this.month) ? 'ndp__date--current-month' : ''}`}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}