{ "version": 3, "sources": ["../../../node_modules/choices.js/public/assets/scripts/choices.js", "../../../node_modules/chartkick/dist/chartkick.js", "../../../node_modules/strict-uri-encode/index.js", "../../../node_modules/decode-uri-component/index.js", "../../../node_modules/split-on-first/index.js", "../../../node_modules/filter-obj/index.js", "../../../node_modules/query-string/index.js", "../../../node_modules/big.js/big.js", "../../../node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.esm.js", "../../../node_modules/trix/src/trix/config/attachments.js", "../../../node_modules/trix/src/trix/config/block_attributes.js", "../../../node_modules/trix/src/trix/config/browser.js", "../../../node_modules/trix/src/trix/config/dompurify.js", "../../../node_modules/trix/src/trix/config/lang.js", "../../../node_modules/trix/src/trix/config/file_size_formatting.js", "../../../node_modules/trix/src/trix/constants.js", "../../../node_modules/trix/src/trix/core/helpers/extend.js", "../../../node_modules/trix/src/trix/core/helpers/dom.js", "../../../node_modules/trix/src/trix/config/input.js", "../../../node_modules/trix/src/trix/config/key_names.js", "../../../node_modules/trix/src/trix/config/parser.js", "../../../node_modules/trix/src/trix/config/text_attributes.js", "../../../node_modules/trix/src/trix/config/toolbar.js", "../../../node_modules/trix/src/trix/config/undo.js", "../../../node_modules/trix/src/trix/config/css.js", "../../../node_modules/trix/src/trix/core/basic_object.js", "../../../node_modules/trix/src/trix/core/utilities/utf16_string.js", "../../../node_modules/trix/src/trix/core/object.js", "../../../node_modules/trix/src/trix/core/helpers/arrays.js", "../../../node_modules/trix/src/trix/core/helpers/bidi.js", "../../../node_modules/trix/src/trix/core/helpers/config.js", "../../../node_modules/trix/src/trix/core/helpers/custom_elements.js", "../../../node_modules/trix/src/trix/core/helpers/events.js", "../../../node_modules/trix/src/trix/core/helpers/functions.js", "../../../node_modules/trix/src/trix/core/helpers/objects.js", "../../../node_modules/trix/src/trix/core/helpers/ranges.js", "../../../node_modules/trix/src/trix/observers/selection_change_observer.js", "../../../node_modules/trix/src/trix/core/helpers/strings.js", "../../../node_modules/trix/src/trix/core/collections/hash.js", "../../../node_modules/trix/src/trix/core/collections/object_group.js", "../../../node_modules/trix/src/trix/core/collections/object_map.js", "../../../node_modules/trix/src/trix/core/collections/element_store.js", "../../../node_modules/trix/src/trix/core/utilities/operation.js", "../../../node_modules/trix/src/trix/views/object_view.js", "../../../node_modules/trix/src/trix/models/html_sanitizer.js", "../../../node_modules/trix/src/trix/views/attachment_view.js", "../../../node_modules/trix/src/trix/views/previewable_attachment_view.js", "../../../node_modules/trix/src/trix/views/piece_view.js", "../../../node_modules/trix/src/trix/views/text_view.js", "../../../node_modules/trix/src/trix/views/block_view.js", "../../../node_modules/trix/src/trix/views/document_view.js", "../../../node_modules/trix/src/trix/models/piece.js", "../../../node_modules/trix/src/trix/operations/image_preload_operation.js", "../../../node_modules/trix/src/trix/models/attachment.js", "../../../node_modules/trix/src/trix/models/attachment_piece.js", "../../../node_modules/trix/src/trix/models/string_piece.js", "../../../node_modules/trix/src/trix/models/splittable_list.js", "../../../node_modules/trix/src/trix/models/text.js", "../../../node_modules/trix/src/trix/models/block.js", "../../../node_modules/trix/src/trix/models/document.js", "../../../node_modules/trix/src/trix/models/html_parser.js", "../../../node_modules/trix/src/trix/core/serialization.js", "../../../node_modules/trix/src/trix/models/managed_attachment.js", "../../../node_modules/trix/src/trix/models/attachment_manager.js", "../../../node_modules/trix/src/trix/models/line_break_insertion.js", "../../../node_modules/trix/src/trix/models/composition.js", "../../../node_modules/trix/src/trix/models/undo_manager.js", "../../../node_modules/trix/src/trix/filters/filter.js", "../../../node_modules/trix/src/trix/filters/attachment_gallery_filter.js", "../../../node_modules/trix/src/trix/models/editor.js", "../../../node_modules/trix/src/trix/models/location_mapper.js", "../../../node_modules/trix/src/trix/models/point_mapper.js", "../../../node_modules/trix/src/trix/models/selection_manager.js", "../../../node_modules/trix/src/trix/controllers/attachment_editor_controller.js", "../../../node_modules/trix/src/trix/controllers/composition_controller.js", "../../../node_modules/trix/src/trix/controllers/controller.js", "../../../node_modules/trix/src/trix/observers/mutation_observer.js", "../../../node_modules/trix/src/trix/operations/file_verification_operation.js", "../../../node_modules/trix/src/trix/models/flaky_android_keyboard_detector.js", "../../../node_modules/trix/src/trix/controllers/input_controller.js", "../../../node_modules/trix/src/trix/controllers/level_0_input_controller.js", "../../../node_modules/trix/src/trix/controllers/level_2_input_controller.js", "../../../node_modules/trix/src/trix/controllers/toolbar_controller.js", "../../../node_modules/trix/src/trix/controllers/editor_controller.js", "../../../node_modules/trix/src/trix/elements/trix_toolbar_element.js", "../../../node_modules/trix/src/trix/elements/trix_editor_element.js", "../../../node_modules/trix/src/trix/trix.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js", "../../../node_modules/@rails/actiontext/app/assets/javascripts/actiontext.esm.js", "../../../node_modules/axios/lib/helpers/bind.js", "../../../node_modules/axios/lib/utils.js", "../../../node_modules/axios/lib/core/AxiosError.js", "../../../node_modules/axios/lib/helpers/null.js", "../../../node_modules/axios/lib/helpers/toFormData.js", "../../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../../../node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/axios/lib/defaults/transitional.js", "../../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "../../../node_modules/axios/lib/platform/browser/classes/FormData.js", "../../../node_modules/axios/lib/platform/browser/classes/Blob.js", "../../../node_modules/axios/lib/platform/browser/index.js", "../../../node_modules/axios/lib/platform/common/utils.js", "../../../node_modules/axios/lib/platform/index.js", "../../../node_modules/axios/lib/helpers/toURLEncodedForm.js", "../../../node_modules/axios/lib/helpers/formDataToJSON.js", "../../../node_modules/axios/lib/defaults/index.js", "../../../node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/axios/lib/core/AxiosHeaders.js", "../../../node_modules/axios/lib/core/transformData.js", "../../../node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/axios/lib/cancel/CanceledError.js", "../../../node_modules/axios/lib/core/settle.js", "../../../node_modules/axios/lib/helpers/parseProtocol.js", "../../../node_modules/axios/lib/helpers/speedometer.js", "../../../node_modules/axios/lib/helpers/throttle.js", "../../../node_modules/axios/lib/helpers/progressEventReducer.js", "../../../node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/axios/lib/helpers/resolveConfig.js", "../../../node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/axios/lib/helpers/composeSignals.js", "../../../node_modules/axios/lib/helpers/trackStream.js", "../../../node_modules/axios/lib/adapters/fetch.js", "../../../node_modules/axios/lib/adapters/adapters.js", "../../../node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/axios/lib/env/data.js", "../../../node_modules/axios/lib/helpers/validator.js", "../../../node_modules/axios/lib/core/Axios.js", "../../../node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/axios/lib/helpers/spread.js", "../../../node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/axios/lib/helpers/HttpStatusCode.js", "../../../node_modules/axios/lib/axios.js", "../../../node_modules/axios/index.js", "../../javascript/lib/axios.ts", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../components/decor/base_controller.ts", "../../javascript/lib/app_configuration.ts", "../../javascript/lib/i18n.ts", "../../javascript/lib/util/replace_with_dom_nodes.ts", "../../javascript/lib/util/safe_html.ts", "../../components/decor/modal_controller.ts", "../../components/decor/confirm_modal_controller.ts", "../../javascript/lib/overlay/modal.ts", "../../javascript/lib/rails.ts", "webpack://external-svg-loader/lib/counter.js", "webpack://external-svg-loader/lib/css-url-fixer.js", "webpack://external-svg-loader/lib/scope-css.js", "webpack://external-svg-loader/node_modules/idb-keyval/dist/index.js", "webpack://external-svg-loader/webpack/bootstrap", "webpack://external-svg-loader/webpack/runtime/define%20property%20getters", "webpack://external-svg-loader/webpack/runtime/hasOwnProperty%20shorthand", "webpack://external-svg-loader/webpack/runtime/make%20namespace%20object", "webpack://external-svg-loader/svg-loader.js", "../../javascript/lib/third_party_libs.ts", "../../../node_modules/chart.js/dist/chunks/helpers.segment.mjs", "../../../node_modules/chart.js/dist/chart.mjs", "../../../node_modules/date-fns/constants.js", "../../../node_modules/date-fns/constructFrom.js", "../../../node_modules/date-fns/toDate.js", "../../../node_modules/date-fns/addDays.js", "../../../node_modules/date-fns/addMonths.js", "../../../node_modules/date-fns/addMilliseconds.js", "../../../node_modules/date-fns/addHours.js", "../../../node_modules/date-fns/_lib/defaultOptions.js", "../../../node_modules/date-fns/startOfWeek.js", "../../../node_modules/date-fns/startOfISOWeek.js", "../../../node_modules/date-fns/getISOWeekYear.js", "../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "../../../node_modules/date-fns/_lib/normalizeDates.js", "../../../node_modules/date-fns/startOfDay.js", "../../../node_modules/date-fns/differenceInCalendarDays.js", "../../../node_modules/date-fns/startOfISOWeekYear.js", "../../../node_modules/date-fns/addMinutes.js", "../../../node_modules/date-fns/addQuarters.js", "../../../node_modules/date-fns/addSeconds.js", "../../../node_modules/date-fns/addWeeks.js", "../../../node_modules/date-fns/addYears.js", "../../../node_modules/date-fns/compareAsc.js", "../../../node_modules/date-fns/isDate.js", "../../../node_modules/date-fns/isValid.js", "../../../node_modules/date-fns/differenceInCalendarMonths.js", "../../../node_modules/date-fns/differenceInCalendarYears.js", "../../../node_modules/date-fns/differenceInDays.js", "../../../node_modules/date-fns/_lib/getRoundingMethod.js", "../../../node_modules/date-fns/differenceInHours.js", "../../../node_modules/date-fns/differenceInMilliseconds.js", "../../../node_modules/date-fns/differenceInMinutes.js", "../../../node_modules/date-fns/endOfDay.js", "../../../node_modules/date-fns/endOfMonth.js", "../../../node_modules/date-fns/isLastDayOfMonth.js", "../../../node_modules/date-fns/differenceInMonths.js", "../../../node_modules/date-fns/differenceInQuarters.js", "../../../node_modules/date-fns/differenceInSeconds.js", "../../../node_modules/date-fns/differenceInWeeks.js", "../../../node_modules/date-fns/differenceInYears.js", "../../../node_modules/date-fns/startOfQuarter.js", "../../../node_modules/date-fns/startOfMonth.js", "../../../node_modules/date-fns/endOfYear.js", "../../../node_modules/date-fns/startOfYear.js", "../../../node_modules/date-fns/endOfHour.js", "../../../node_modules/date-fns/endOfWeek.js", "../../../node_modules/date-fns/endOfMinute.js", "../../../node_modules/date-fns/endOfQuarter.js", "../../../node_modules/date-fns/endOfSecond.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js", "../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js", "../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/localize.js", "../../../node_modules/date-fns/locale/_lib/buildMatchFn.js", "../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/match.js", "../../../node_modules/date-fns/locale/en-US.js", "../../../node_modules/date-fns/getDayOfYear.js", "../../../node_modules/date-fns/getISOWeek.js", "../../../node_modules/date-fns/getWeekYear.js", "../../../node_modules/date-fns/startOfWeekYear.js", "../../../node_modules/date-fns/getWeek.js", "../../../node_modules/date-fns/_lib/addLeadingZeros.js", "../../../node_modules/date-fns/_lib/format/lightFormatters.js", "../../../node_modules/date-fns/_lib/format/formatters.js", "../../../node_modules/date-fns/_lib/format/longFormatters.js", "../../../node_modules/date-fns/_lib/protectedTokens.js", "../../../node_modules/date-fns/format.js", "../../../node_modules/date-fns/getDefaultOptions.js", "../../../node_modules/date-fns/getISODay.js", "../../../node_modules/date-fns/transpose.js", "../../../node_modules/date-fns/parse/_lib/Setter.js", "../../../node_modules/date-fns/parse/_lib/Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/EraParser.js", "../../../node_modules/date-fns/parse/_lib/constants.js", "../../../node_modules/date-fns/parse/_lib/utils.js", "../../../node_modules/date-fns/parse/_lib/parsers/YearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/MonthParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js", "../../../node_modules/date-fns/setWeek.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js", "../../../node_modules/date-fns/setISOWeek.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DateParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js", "../../../node_modules/date-fns/setDay.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js", "../../../node_modules/date-fns/setISODay.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/SecondParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js", "../../../node_modules/date-fns/parse/_lib/parsers.js", "../../../node_modules/date-fns/parse.js", "../../../node_modules/date-fns/startOfHour.js", "../../../node_modules/date-fns/startOfMinute.js", "../../../node_modules/date-fns/startOfSecond.js", "../../../node_modules/date-fns/parseISO.js", "../../../node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js", "../../../node_modules/chartjs-plugin-gradient/dist/chartjs-plugin-gradient.esm.js", "../../../node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js", "../../components/decor/button_controller.ts", "../../javascript/controllers/identifiers.ts", "../../../node_modules/ssr-window/ssr-window.esm.js", "../../../node_modules/dom7/dom7.esm.js", "../../../node_modules/swiper/shared/dom.js", "../../../node_modules/swiper/shared/utils.js", "../../../node_modules/swiper/shared/get-support.js", "../../../node_modules/swiper/shared/get-device.js", "../../../node_modules/swiper/shared/get-browser.js", "../../../node_modules/swiper/core/modules/resize/resize.js", "../../../node_modules/swiper/core/modules/observer/observer.js", "../../../node_modules/swiper/core/events-emitter.js", "../../../node_modules/swiper/core/update/updateSize.js", "../../../node_modules/swiper/core/update/updateSlides.js", "../../../node_modules/swiper/core/update/updateAutoHeight.js", "../../../node_modules/swiper/core/update/updateSlidesOffset.js", "../../../node_modules/swiper/core/update/updateSlidesProgress.js", "../../../node_modules/swiper/core/update/updateProgress.js", "../../../node_modules/swiper/core/update/updateSlidesClasses.js", "../../../node_modules/swiper/core/update/updateActiveIndex.js", "../../../node_modules/swiper/core/update/updateClickedSlide.js", "../../../node_modules/swiper/core/update/index.js", "../../../node_modules/swiper/core/translate/getTranslate.js", "../../../node_modules/swiper/core/translate/setTranslate.js", "../../../node_modules/swiper/core/translate/minTranslate.js", "../../../node_modules/swiper/core/translate/maxTranslate.js", "../../../node_modules/swiper/core/translate/translateTo.js", "../../../node_modules/swiper/core/translate/index.js", "../../../node_modules/swiper/core/transition/setTransition.js", "../../../node_modules/swiper/core/transition/transitionEmit.js", "../../../node_modules/swiper/core/transition/transitionStart.js", "../../../node_modules/swiper/core/transition/transitionEnd.js", "../../../node_modules/swiper/core/transition/index.js", "../../../node_modules/swiper/core/slide/slideTo.js", "../../../node_modules/swiper/core/slide/slideToLoop.js", "../../../node_modules/swiper/core/slide/slideNext.js", "../../../node_modules/swiper/core/slide/slidePrev.js", "../../../node_modules/swiper/core/slide/slideReset.js", "../../../node_modules/swiper/core/slide/slideToClosest.js", "../../../node_modules/swiper/core/slide/slideToClickedSlide.js", "../../../node_modules/swiper/core/slide/index.js", "../../../node_modules/swiper/core/loop/loopCreate.js", "../../../node_modules/swiper/core/loop/loopFix.js", "../../../node_modules/swiper/core/loop/loopDestroy.js", "../../../node_modules/swiper/core/loop/index.js", "../../../node_modules/swiper/core/grab-cursor/setGrabCursor.js", "../../../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js", "../../../node_modules/swiper/core/grab-cursor/index.js", "../../../node_modules/swiper/core/events/onTouchStart.js", "../../../node_modules/swiper/core/events/onTouchMove.js", "../../../node_modules/swiper/core/events/onTouchEnd.js", "../../../node_modules/swiper/core/events/onResize.js", "../../../node_modules/swiper/core/events/onClick.js", "../../../node_modules/swiper/core/events/onScroll.js", "../../../node_modules/swiper/core/events/index.js", "../../../node_modules/swiper/core/breakpoints/setBreakpoint.js", "../../../node_modules/swiper/core/breakpoints/getBreakpoint.js", "../../../node_modules/swiper/core/breakpoints/index.js", "../../../node_modules/swiper/core/classes/addClasses.js", "../../../node_modules/swiper/core/classes/removeClasses.js", "../../../node_modules/swiper/core/classes/index.js", "../../../node_modules/swiper/core/images/loadImage.js", "../../../node_modules/swiper/core/images/preloadImages.js", "../../../node_modules/swiper/core/images/index.js", "../../../node_modules/swiper/core/check-overflow/index.js", "../../../node_modules/swiper/core/defaults.js", "../../../node_modules/swiper/core/moduleExtendParams.js", "../../../node_modules/swiper/core/core.js", "../../components/decor/carousel_controller.ts", "../../components/decor/notification_manager_controller.ts", "../../javascript/lib/overlay/notification.ts", "../../components/decor/click_to_copy_controller.ts", "../../components/decor/dropdown_controller.ts", "../../components/decor/flash_controller.ts", "../../javascript/lib/util/form_validators.ts", "../../components/decor/forms/form_control_controller.ts", "../../javascript/lib/util/form_validation_messages.ts", "../../components/decor/forms/form_field_layout_controller.ts", "../../components/decor/forms/form_field_controller.ts", "../../components/decor/forms/button_radio_group_controller.ts", "../../components/decor/forms/checkbox_controller.ts", "../../../node_modules/flatpickr/dist/esm/types/options.js", "../../../node_modules/flatpickr/dist/esm/l10n/default.js", "../../../node_modules/flatpickr/dist/esm/utils/index.js", "../../../node_modules/flatpickr/dist/esm/utils/dom.js", "../../../node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../node_modules/flatpickr/dist/esm/utils/dates.js", "../../../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../node_modules/flatpickr/dist/esm/index.js", "../../javascript/lib/util/build_flatpickr_options.ts", "../../components/decor/forms/date_calendar_controller.ts", "../../components/decor/forms/error_icon_section_controller.ts", "../../components/decor/forms/expanding_checkbox_collection_controller.ts", "../../components/decor/forms/file_upload_controller.ts", "../../components/decor/forms/form_controller.ts", "../../components/decor/forms/helper_text_section_controller.ts", "../../components/decor/forms/text_field_controller.ts", "../../components/decor/forms/number_field_controller.ts", "../../components/decor/forms/radio_controller.ts", "../../components/decor/forms/select_controller.ts", "../../components/decor/forms/switch_controller.ts", "../../components/decor/forms/text_area_controller.ts", "../../javascript/lib/util/add_script_tag.ts", "../../components/decor/map_controller.ts", "../../components/decor/modal_close_button_controller.ts", "../../components/decor/modal_open_button_controller.ts", "../../javascript/lib/util/add_parameter_to_url.ts", "../../javascript/lib/util/keyboard_key.ts", "../../components/decor/search_and_filter_controller.ts", "../../components/decor/tables/data_table_cell_controller.ts", "../../components/decor/tables/data_table_controller.ts", "../../components/decor/tables/data_table_header_cell_controller.ts", "../../components/decor/tables/data_table_header_row_controller.ts", "../../components/decor/tables/data_table_row_controller.ts", "../../components/decor/tabs_controller.ts", "../../components/decor/tooltip_controller.ts", "../../components/mercor/carts/cart_item_controller.ts", "../../components/mercor/catalog_management/price_edit_controller.ts", "../../components/mercor/catalog_management/submit_price_update_controller.ts", "../../components/mercor/delivery_cut_off_pill_controller.ts", "../../components/mercor/delivery_date_calendar_controller.ts", "../../components/mercor/delivery_date_select_controller.ts", "../../components/navigo/navbar_with_search_controller.ts", "../../components/mercor/navbar_controller.ts", "../../javascript/lib/price_calculations.ts", "../../components/mercor/order_guide_controller.ts", "../../components/mercor/order_guide_row_controller.ts", "../../components/mercor/order_management/modify_order_form_controller.ts", "../../components/mercor/order_management/breakdown_remove_item_controller.ts", "../../components/mercor/order_management/input_final_details_confirmation_controller.ts", "../../components/mercor/order_management/input_final_details_form_controller.ts", "../../components/mercor/product_category_filter_tier_controller.ts", "../../components/mercor/product_category_filters_controller.ts", "../../components/mercor/product_lightbox_controller.ts", "../../javascript/lib/util/stringify_escape_quotes.ts", "../../javascript/lib/util/track_hover.ts", "../../components/mercor/product_navigation_controller.ts", "../../components/mercor/product_navigation_tier_controller.ts", "../../components/mercor/purchase_configurator/add_note_controller.ts", "../../components/mercor/purchase_configurator/purchase_configurator_variant_abstract.ts", "../../components/mercor/purchase_configurator/extra_info_controller.ts", "../../components/mercor/purchase_configurator/quantity_calculator_controller.ts", "../../components/mercor/purchase_configurator/uom_pricing_details_controller.ts", "../../components/mercor/shopping_cart_dropdown_controller.ts", "../../components/mercor/purchase_configurator_controller.ts", "../../components/mercor/report_filters_controller.ts", "../../components/mercor/serviceability_dropdown_controller.ts", "../../javascript/lib/util/serialize.ts", "../../components/mercor/sidebar_filters_controller.ts", "../../components/navigo/breadcrumbs_controller.ts", "../../components/navigo/side_navbar_controller.ts", "../../components/navigo/side_navbar_item_controller.ts", "../../components/navigo/side_navbar_section_controller.ts", "../../components/navigo/side_navbar_sub_item_controller.ts", "../../components/navigo/top_navbar_controller.ts", "../../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js", "../../javascript/controllers/base/notifications_controller.ts", "../../javascript/controllers/base/notifications_emitter_controller.ts", "../../../node_modules/timeago.js/src/lang/en_US.ts", "../../../node_modules/timeago.js/src/lang/zh_CN.ts", "../../../node_modules/timeago.js/src/register.ts", "../../../node_modules/timeago.js/src/utils/date.ts", "../../../node_modules/timeago.js/src/format.ts", "../../../node_modules/timeago.js/src/index.ts", "../../javascript/controllers/base/timeago_controller.ts", "../../javascript/controllers/catalogs/price_modifier_controller.ts", "../../javascript/controllers/entities/entity_form_controller.ts", "../../javascript/controllers/entities/entity_user_form_controller.ts", "../../javascript/controllers/layouts/message_threads/assignee_controller.ts", "../../javascript/lib/util/parse_datetime_attr.ts", "../../javascript/controllers/layouts/message_threads/dynamic_messages_controller.ts", "../../javascript/controllers/layouts/message_threads/message_item_controller.ts", "../../javascript/controllers/layouts/message_threads/select_toggle_controller.ts", "../../javascript/controllers/layouts/message_threads/unread_item_controller.ts", "../../javascript/controllers/layouts/message_threads/unread_messages_controller.ts", "../../javascript/lib/util/set_element_hidden.ts", "../../javascript/lib/util/set_element_required.ts", "../../javascript/controllers/layouts/registration/step1_controller.ts", "../../javascript/controllers/serviceability/route_form_controller.ts", "../../javascript/controllers/util/dev_form_fill_controller.ts", "../../../spec/components/previews/decor/error_locations_example_controller.ts", "../../../spec/components/previews/decor/flash_examples_controller.ts", "../../../spec/components/previews/decor/form_examples_flash_controller.ts", "../../../spec/components/previews/decor/refresh_popup_example_controller.ts", "../../javascript/controllers/index.ts", "../../javascript/confinus.ts"], "sourcesContent": ["/*! choices.js v10.2.0 | \u00A9 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Choices\"] = factory();\n\telse\n\t\troot[\"Choices\"] = factory();\n})(window, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 282:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.clearChoices = exports.activateChoices = exports.filterChoices = exports.addChoice = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addChoice = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n groupId = _a.groupId,\n disabled = _a.disabled,\n elementId = _a.elementId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_CHOICE,\n value: value,\n label: label,\n id: id,\n groupId: groupId,\n disabled: disabled,\n elementId: elementId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\nexports.addChoice = addChoice;\nvar filterChoices = function (results) {\n return {\n type: constants_1.ACTION_TYPES.FILTER_CHOICES,\n results: results\n };\n};\nexports.filterChoices = filterChoices;\nvar activateChoices = function (active) {\n if (active === void 0) {\n active = true;\n }\n return {\n type: constants_1.ACTION_TYPES.ACTIVATE_CHOICES,\n active: active\n };\n};\nexports.activateChoices = activateChoices;\nvar clearChoices = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_CHOICES\n };\n};\nexports.clearChoices = clearChoices;\n\n/***/ }),\n\n/***/ 783:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addGroup = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addGroup = function (_a) {\n var value = _a.value,\n id = _a.id,\n active = _a.active,\n disabled = _a.disabled;\n return {\n type: constants_1.ACTION_TYPES.ADD_GROUP,\n value: value,\n id: id,\n active: active,\n disabled: disabled\n };\n};\nexports.addGroup = addGroup;\n\n/***/ }),\n\n/***/ 464:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.highlightItem = exports.removeItem = exports.addItem = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addItem = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n choiceId = _a.choiceId,\n groupId = _a.groupId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_ITEM,\n value: value,\n label: label,\n id: id,\n choiceId: choiceId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\nexports.addItem = addItem;\nvar removeItem = function (id, choiceId) {\n return {\n type: constants_1.ACTION_TYPES.REMOVE_ITEM,\n id: id,\n choiceId: choiceId\n };\n};\nexports.removeItem = removeItem;\nvar highlightItem = function (id, highlighted) {\n return {\n type: constants_1.ACTION_TYPES.HIGHLIGHT_ITEM,\n id: id,\n highlighted: highlighted\n };\n};\nexports.highlightItem = highlightItem;\n\n/***/ }),\n\n/***/ 137:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setIsLoading = exports.resetTo = exports.clearAll = void 0;\nvar constants_1 = __webpack_require__(883);\nvar clearAll = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_ALL\n };\n};\nexports.clearAll = clearAll;\nvar resetTo = function (state) {\n return {\n type: constants_1.ACTION_TYPES.RESET_TO,\n state: state\n };\n};\nexports.resetTo = resetTo;\nvar setIsLoading = function (isLoading) {\n return {\n type: constants_1.ACTION_TYPES.SET_IS_LOADING,\n isLoading: isLoading\n };\n};\nexports.setIsLoading = setIsLoading;\n\n/***/ }),\n\n/***/ 373:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar deepmerge_1 = __importDefault(__webpack_require__(996));\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar fuse_js_1 = __importDefault(__webpack_require__(221));\nvar choices_1 = __webpack_require__(282);\nvar groups_1 = __webpack_require__(783);\nvar items_1 = __webpack_require__(464);\nvar misc_1 = __webpack_require__(137);\nvar components_1 = __webpack_require__(520);\nvar constants_1 = __webpack_require__(883);\nvar defaults_1 = __webpack_require__(789);\nvar utils_1 = __webpack_require__(799);\nvar reducers_1 = __webpack_require__(655);\nvar store_1 = __importDefault(__webpack_require__(744));\nvar templates_1 = __importDefault(__webpack_require__(686));\n/** @see {@link http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c} */\nvar IS_IE11 = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;\nvar USER_DEFAULTS = {};\n/**\n * Choices\n * @author Josh Johnson\n */\nvar Choices = /** @class */function () {\n function Choices(element, userConfig) {\n if (element === void 0) {\n element = '[data-choice]';\n }\n if (userConfig === void 0) {\n userConfig = {};\n }\n var _this = this;\n if (userConfig.allowHTML === undefined) {\n console.warn('Deprecation warning: allowHTML will default to false in a future release. To render HTML in Choices, you will need to set it to true. Setting allowHTML will suppress this message.');\n }\n this.config = deepmerge_1.default.all([defaults_1.DEFAULT_CONFIG, Choices.defaults.options, userConfig],\n // When merging array configs, replace with a copy of the userConfig array,\n // instead of concatenating with the default array\n {\n arrayMerge: function (_, sourceArray) {\n return __spreadArray([], sourceArray, true);\n }\n });\n var invalidConfigOptions = (0, utils_1.diff)(this.config, defaults_1.DEFAULT_CONFIG);\n if (invalidConfigOptions.length) {\n console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));\n }\n var passedElement = typeof element === 'string' ? document.querySelector(element) : element;\n if (!(passedElement instanceof HTMLInputElement || passedElement instanceof HTMLSelectElement)) {\n throw TypeError('Expected one of the following types text|select-one|select-multiple');\n }\n this._isTextElement = passedElement.type === constants_1.TEXT_TYPE;\n this._isSelectOneElement = passedElement.type === constants_1.SELECT_ONE_TYPE;\n this._isSelectMultipleElement = passedElement.type === constants_1.SELECT_MULTIPLE_TYPE;\n this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;\n this.config.searchEnabled = this._isSelectMultipleElement || this.config.searchEnabled;\n if (!['auto', 'always'].includes(\"\".concat(this.config.renderSelectedChoices))) {\n this.config.renderSelectedChoices = 'auto';\n }\n if (userConfig.addItemFilter && typeof userConfig.addItemFilter !== 'function') {\n var re = userConfig.addItemFilter instanceof RegExp ? userConfig.addItemFilter : new RegExp(userConfig.addItemFilter);\n this.config.addItemFilter = re.test.bind(re);\n }\n if (this._isTextElement) {\n this.passedElement = new components_1.WrappedInput({\n element: passedElement,\n classNames: this.config.classNames,\n delimiter: this.config.delimiter\n });\n } else {\n this.passedElement = new components_1.WrappedSelect({\n element: passedElement,\n classNames: this.config.classNames,\n template: function (data) {\n return _this._templates.option(data);\n }\n });\n }\n this.initialised = false;\n this._store = new store_1.default();\n this._initialState = reducers_1.defaultState;\n this._currentState = reducers_1.defaultState;\n this._prevState = reducers_1.defaultState;\n this._currentValue = '';\n this._canSearch = !!this.config.searchEnabled;\n this._isScrollingOnIe = false;\n this._highlightPosition = 0;\n this._wasTap = true;\n this._placeholderValue = this._generatePlaceholderValue();\n this._baseId = (0, utils_1.generateId)(this.passedElement.element, 'choices-');\n /**\n * setting direction in cases where it's explicitly set on passedElement\n * or when calculated direction is different from the document\n */\n this._direction = this.passedElement.dir;\n if (!this._direction) {\n var elementDirection = window.getComputedStyle(this.passedElement.element).direction;\n var documentDirection = window.getComputedStyle(document.documentElement).direction;\n if (elementDirection !== documentDirection) {\n this._direction = elementDirection;\n }\n }\n this._idNames = {\n itemChoice: 'item-choice'\n };\n if (this._isSelectElement) {\n // Assign preset groups from passed element\n this._presetGroups = this.passedElement.optionGroups;\n // Assign preset options from passed element\n this._presetOptions = this.passedElement.options;\n }\n // Assign preset choices from passed object\n this._presetChoices = this.config.choices;\n // Assign preset items from passed object first\n this._presetItems = this.config.items;\n // Add any values passed from attribute\n if (this.passedElement.value && this._isTextElement) {\n var splitValues = this.passedElement.value.split(this.config.delimiter);\n this._presetItems = this._presetItems.concat(splitValues);\n }\n // Create array of choices from option elements\n if (this.passedElement.options) {\n this.passedElement.options.forEach(function (option) {\n _this._presetChoices.push({\n value: option.value,\n label: option.innerHTML,\n selected: !!option.selected,\n disabled: option.disabled || option.parentNode.disabled,\n placeholder: option.value === '' || option.hasAttribute('placeholder'),\n customProperties: (0, utils_1.parseCustomProperties)(option.dataset.customProperties)\n });\n });\n }\n this._render = this._render.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._onKeyUp = this._onKeyUp.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onTouchMove = this._onTouchMove.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseOver = this._onMouseOver.bind(this);\n this._onFormReset = this._onFormReset.bind(this);\n this._onSelectKey = this._onSelectKey.bind(this);\n this._onEnterKey = this._onEnterKey.bind(this);\n this._onEscapeKey = this._onEscapeKey.bind(this);\n this._onDirectionKey = this._onDirectionKey.bind(this);\n this._onDeleteKey = this._onDeleteKey.bind(this);\n // If element has already been initialised with Choices, fail silently\n if (this.passedElement.isActive) {\n if (!this.config.silent) {\n console.warn('Trying to initialise Choices on element already initialised', {\n element: element\n });\n }\n this.initialised = true;\n return;\n }\n // Let's go\n this.init();\n }\n Object.defineProperty(Choices, \"defaults\", {\n get: function () {\n return Object.preventExtensions({\n get options() {\n return USER_DEFAULTS;\n },\n get templates() {\n return templates_1.default;\n }\n });\n },\n enumerable: false,\n configurable: true\n });\n Choices.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this._createTemplates();\n this._createElements();\n this._createStructure();\n this._store.subscribe(this._render);\n this._render();\n this._addEventListeners();\n var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');\n if (shouldDisable) {\n this.disable();\n }\n this.initialised = true;\n var callbackOnInit = this.config.callbackOnInit;\n // Run callback if it is a function\n if (callbackOnInit && typeof callbackOnInit === 'function') {\n callbackOnInit.call(this);\n }\n };\n Choices.prototype.destroy = function () {\n if (!this.initialised) {\n return;\n }\n this._removeEventListeners();\n this.passedElement.reveal();\n this.containerOuter.unwrap(this.passedElement.element);\n this.clearStore();\n if (this._isSelectElement) {\n this.passedElement.options = this._presetOptions;\n }\n this._templates = templates_1.default;\n this.initialised = false;\n };\n Choices.prototype.enable = function () {\n if (this.passedElement.isDisabled) {\n this.passedElement.enable();\n }\n if (this.containerOuter.isDisabled) {\n this._addEventListeners();\n this.input.enable();\n this.containerOuter.enable();\n }\n return this;\n };\n Choices.prototype.disable = function () {\n if (!this.passedElement.isDisabled) {\n this.passedElement.disable();\n }\n if (!this.containerOuter.isDisabled) {\n this._removeEventListeners();\n this.input.disable();\n this.containerOuter.disable();\n }\n return this;\n };\n Choices.prototype.highlightItem = function (item, runEvent) {\n if (runEvent === void 0) {\n runEvent = true;\n }\n if (!item || !item.id) {\n return this;\n }\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n this._store.dispatch((0, items_1.highlightItem)(id, true));\n if (runEvent) {\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n }\n return this;\n };\n Choices.prototype.unhighlightItem = function (item) {\n if (!item || !item.id) {\n return this;\n }\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n this._store.dispatch((0, items_1.highlightItem)(id, false));\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n return this;\n };\n Choices.prototype.highlightAll = function () {\n var _this = this;\n this._store.items.forEach(function (item) {\n return _this.highlightItem(item);\n });\n return this;\n };\n Choices.prototype.unhighlightAll = function () {\n var _this = this;\n this._store.items.forEach(function (item) {\n return _this.unhighlightItem(item);\n });\n return this;\n };\n Choices.prototype.removeActiveItemsByValue = function (value) {\n var _this = this;\n this._store.activeItems.filter(function (item) {\n return item.value === value;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n return this;\n };\n Choices.prototype.removeActiveItems = function (excludedId) {\n var _this = this;\n this._store.activeItems.filter(function (_a) {\n var id = _a.id;\n return id !== excludedId;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n return this;\n };\n Choices.prototype.removeHighlightedItems = function (runEvent) {\n var _this = this;\n if (runEvent === void 0) {\n runEvent = false;\n }\n this._store.highlightedActiveItems.forEach(function (item) {\n _this._removeItem(item);\n // If this action was performed by the user\n // trigger the event\n if (runEvent) {\n _this._triggerChange(item.value);\n }\n });\n return this;\n };\n Choices.prototype.showDropdown = function (preventInputFocus) {\n var _this = this;\n if (this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.show();\n _this.containerOuter.open(_this.dropdown.distanceFromTopWindow);\n if (!preventInputFocus && _this._canSearch) {\n _this.input.focus();\n }\n _this.passedElement.triggerEvent(constants_1.EVENTS.showDropdown, {});\n });\n return this;\n };\n Choices.prototype.hideDropdown = function (preventInputBlur) {\n var _this = this;\n if (!this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.hide();\n _this.containerOuter.close();\n if (!preventInputBlur && _this._canSearch) {\n _this.input.removeActiveDescendant();\n _this.input.blur();\n }\n _this.passedElement.triggerEvent(constants_1.EVENTS.hideDropdown, {});\n });\n return this;\n };\n Choices.prototype.getValue = function (valueOnly) {\n if (valueOnly === void 0) {\n valueOnly = false;\n }\n var values = this._store.activeItems.reduce(function (selectedItems, item) {\n var itemValue = valueOnly ? item.value : item;\n selectedItems.push(itemValue);\n return selectedItems;\n }, []);\n return this._isSelectOneElement ? values[0] : values;\n };\n Choices.prototype.setValue = function (items) {\n var _this = this;\n if (!this.initialised) {\n return this;\n }\n items.forEach(function (value) {\n return _this._setChoiceOrItem(value);\n });\n return this;\n };\n Choices.prototype.setChoiceByValue = function (value) {\n var _this = this;\n if (!this.initialised || this._isTextElement) {\n return this;\n }\n // If only one value has been passed, convert to array\n var choiceValue = Array.isArray(value) ? value : [value];\n // Loop through each value and\n choiceValue.forEach(function (val) {\n return _this._findAndSelectChoiceByValue(val);\n });\n return this;\n };\n /**\n * Set choices of select input via an array of objects (or function that returns array of object or promise of it),\n * a value field name and a label field name.\n * This behaves the same as passing items via the choices option but can be called after initialising Choices.\n * This can also be used to add groups of choices (see example 2); Optionally pass a true `replaceChoices` value to remove any existing choices.\n * Optionally pass a `customProperties` object to add additional data to your choices (useful when searching/filtering etc).\n *\n * **Input types affected:** select-one, select-multiple\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([\n * {value: 'One', label: 'Label One', disabled: true},\n * {value: 'Two', label: 'Label Two', selected: true},\n * {value: 'Three', label: 'Label Three'},\n * ], 'value', 'label', false);\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices(async () => {\n * try {\n * const items = await fetch('/items');\n * return items.json()\n * } catch(err) {\n * console.error(err)\n * }\n * });\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([{\n * label: 'Group one',\n * id: 1,\n * disabled: false,\n * choices: [\n * {value: 'Child One', label: 'Child One', selected: true},\n * {value: 'Child Two', label: 'Child Two', disabled: true},\n * {value: 'Child Three', label: 'Child Three'},\n * ]\n * },\n * {\n * label: 'Group two',\n * id: 2,\n * disabled: false,\n * choices: [\n * {value: 'Child Four', label: 'Child Four', disabled: true},\n * {value: 'Child Five', label: 'Child Five'},\n * {value: 'Child Six', label: 'Child Six', customProperties: {\n * description: 'Custom description about child six',\n * random: 'Another random custom property'\n * }},\n * ]\n * }], 'value', 'label', false);\n * ```\n */\n Choices.prototype.setChoices = function (choicesArrayOrFetcher, value, label, replaceChoices) {\n var _this = this;\n if (choicesArrayOrFetcher === void 0) {\n choicesArrayOrFetcher = [];\n }\n if (value === void 0) {\n value = 'value';\n }\n if (label === void 0) {\n label = 'label';\n }\n if (replaceChoices === void 0) {\n replaceChoices = false;\n }\n if (!this.initialised) {\n throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");\n }\n if (!this._isSelectElement) {\n throw new TypeError(\"setChoices can't be used with INPUT based Choices\");\n }\n if (typeof value !== 'string' || !value) {\n throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");\n }\n // Clear choices if needed\n if (replaceChoices) {\n this.clearChoices();\n }\n if (typeof choicesArrayOrFetcher === 'function') {\n // it's a choices fetcher function\n var fetcher_1 = choicesArrayOrFetcher(this);\n if (typeof Promise === 'function' && fetcher_1 instanceof Promise) {\n // that's a promise\n // eslint-disable-next-line no-promise-executor-return\n return new Promise(function (resolve) {\n return requestAnimationFrame(resolve);\n }).then(function () {\n return _this._handleLoadingState(true);\n }).then(function () {\n return fetcher_1;\n }).then(function (data) {\n return _this.setChoices(data, value, label, replaceChoices);\n }).catch(function (err) {\n if (!_this.config.silent) {\n console.error(err);\n }\n }).then(function () {\n return _this._handleLoadingState(false);\n }).then(function () {\n return _this;\n });\n }\n // function returned something else than promise, let's check if it's an array of choices\n if (!Array.isArray(fetcher_1)) {\n throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \".concat(typeof fetcher_1));\n }\n // recursion with results, it's sync and choices were cleared already\n return this.setChoices(fetcher_1, value, label, false);\n }\n if (!Array.isArray(choicesArrayOrFetcher)) {\n throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");\n }\n this.containerOuter.removeLoadingState();\n this._startLoading();\n choicesArrayOrFetcher.forEach(function (groupOrChoice) {\n if (groupOrChoice.choices) {\n _this._addGroup({\n id: groupOrChoice.id ? parseInt(\"\".concat(groupOrChoice.id), 10) : null,\n group: groupOrChoice,\n valueKey: value,\n labelKey: label\n });\n } else {\n var choice = groupOrChoice;\n _this._addChoice({\n value: choice[value],\n label: choice[label],\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: choice.customProperties\n });\n }\n });\n this._stopLoading();\n return this;\n };\n Choices.prototype.clearChoices = function () {\n this._store.dispatch((0, choices_1.clearChoices)());\n return this;\n };\n Choices.prototype.clearStore = function () {\n this._store.dispatch((0, misc_1.clearAll)());\n return this;\n };\n Choices.prototype.clearInput = function () {\n var shouldSetInputWidth = !this._isSelectOneElement;\n this.input.clear(shouldSetInputWidth);\n if (!this._isTextElement && this._canSearch) {\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n return this;\n };\n Choices.prototype._render = function () {\n if (this._store.isLoading()) {\n return;\n }\n this._currentState = this._store.state;\n var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;\n var shouldRenderChoices = this._isSelectElement;\n var shouldRenderItems = this._currentState.items !== this._prevState.items;\n if (!stateChanged) {\n return;\n }\n if (shouldRenderChoices) {\n this._renderChoices();\n }\n if (shouldRenderItems) {\n this._renderItems();\n }\n this._prevState = this._currentState;\n };\n Choices.prototype._renderChoices = function () {\n var _this = this;\n var _a = this._store,\n activeGroups = _a.activeGroups,\n activeChoices = _a.activeChoices;\n var choiceListFragment = document.createDocumentFragment();\n this.choiceList.clear();\n if (this.config.resetScrollPosition) {\n requestAnimationFrame(function () {\n return _this.choiceList.scrollToTop();\n });\n }\n // If we have grouped options\n if (activeGroups.length >= 1 && !this._isSearching) {\n // If we have a placeholder choice along with groups\n var activePlaceholders = activeChoices.filter(function (activeChoice) {\n return activeChoice.placeholder === true && activeChoice.groupId === -1;\n });\n if (activePlaceholders.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);\n }\n choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);\n } else if (activeChoices.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);\n }\n // If we have choices to show\n if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {\n var activeItems = this._store.activeItems;\n var canAddItem = this._canAddItem(activeItems, this.input.value);\n // ...and we can select them\n if (canAddItem.response) {\n // ...append them and highlight the first choice\n this.choiceList.append(choiceListFragment);\n this._highlightChoice();\n } else {\n var notice = this._getTemplate('notice', canAddItem.notice);\n this.choiceList.append(notice);\n }\n } else {\n // Otherwise show a notice\n var dropdownItem = void 0;\n var notice = void 0;\n if (this._isSearching) {\n notice = typeof this.config.noResultsText === 'function' ? this.config.noResultsText() : this.config.noResultsText;\n dropdownItem = this._getTemplate('notice', notice, 'no-results');\n } else {\n notice = typeof this.config.noChoicesText === 'function' ? this.config.noChoicesText() : this.config.noChoicesText;\n dropdownItem = this._getTemplate('notice', notice, 'no-choices');\n }\n this.choiceList.append(dropdownItem);\n }\n };\n Choices.prototype._renderItems = function () {\n var activeItems = this._store.activeItems || [];\n this.itemList.clear();\n // Create a fragment to store our list items\n // (so we don't have to update the DOM for each item)\n var itemListFragment = this._createItemsFragment(activeItems);\n // If we have items to add, append them\n if (itemListFragment.childNodes) {\n this.itemList.append(itemListFragment);\n }\n };\n Choices.prototype._createGroupsFragment = function (groups, choices, fragment) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n var getGroupChoices = function (group) {\n return choices.filter(function (choice) {\n if (_this._isSelectOneElement) {\n return choice.groupId === group.id;\n }\n return choice.groupId === group.id && (_this.config.renderSelectedChoices === 'always' || !choice.selected);\n });\n };\n // If sorting is enabled, filter groups\n if (this.config.shouldSort) {\n groups.sort(this.config.sorter);\n }\n groups.forEach(function (group) {\n var groupChoices = getGroupChoices(group);\n if (groupChoices.length >= 1) {\n var dropdownGroup = _this._getTemplate('choiceGroup', group);\n fragment.appendChild(dropdownGroup);\n _this._createChoicesFragment(groupChoices, fragment, true);\n }\n });\n return fragment;\n };\n Choices.prototype._createChoicesFragment = function (choices, fragment, withinGroup) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n if (withinGroup === void 0) {\n withinGroup = false;\n }\n // Create a fragment to store our list items (so we don't have to update the DOM for each item)\n var _a = this.config,\n renderSelectedChoices = _a.renderSelectedChoices,\n searchResultLimit = _a.searchResultLimit,\n renderChoiceLimit = _a.renderChoiceLimit;\n var filter = this._isSearching ? utils_1.sortByScore : this.config.sorter;\n var appendChoice = function (choice) {\n var shouldRender = renderSelectedChoices === 'auto' ? _this._isSelectOneElement || !choice.selected : true;\n if (shouldRender) {\n var dropdownItem = _this._getTemplate('choice', choice, _this.config.itemSelectText);\n fragment.appendChild(dropdownItem);\n }\n };\n var rendererableChoices = choices;\n if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {\n rendererableChoices = choices.filter(function (choice) {\n return !choice.selected;\n });\n }\n // Split array into placeholders and \"normal\" choices\n var _b = rendererableChoices.reduce(function (acc, choice) {\n if (choice.placeholder) {\n acc.placeholderChoices.push(choice);\n } else {\n acc.normalChoices.push(choice);\n }\n return acc;\n }, {\n placeholderChoices: [],\n normalChoices: []\n }),\n placeholderChoices = _b.placeholderChoices,\n normalChoices = _b.normalChoices;\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort || this._isSearching) {\n normalChoices.sort(filter);\n }\n var choiceLimit = rendererableChoices.length;\n // Prepend placeholeder\n var sortedChoices = this._isSelectOneElement ? __spreadArray(__spreadArray([], placeholderChoices, true), normalChoices, true) : normalChoices;\n if (this._isSearching) {\n choiceLimit = searchResultLimit;\n } else if (renderChoiceLimit && renderChoiceLimit > 0 && !withinGroup) {\n choiceLimit = renderChoiceLimit;\n }\n // Add each choice to dropdown within range\n for (var i = 0; i < choiceLimit; i += 1) {\n if (sortedChoices[i]) {\n appendChoice(sortedChoices[i]);\n }\n }\n return fragment;\n };\n Choices.prototype._createItemsFragment = function (items, fragment) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n // Create fragment to add elements to\n var _a = this.config,\n shouldSortItems = _a.shouldSortItems,\n sorter = _a.sorter,\n removeItemButton = _a.removeItemButton;\n // If sorting is enabled, filter items\n if (shouldSortItems && !this._isSelectOneElement) {\n items.sort(sorter);\n }\n if (this._isTextElement) {\n // Update the value of the hidden input\n this.passedElement.value = items.map(function (_a) {\n var value = _a.value;\n return value;\n }).join(this.config.delimiter);\n } else {\n // Update the options of the hidden input\n this.passedElement.options = items;\n }\n var addItemToFragment = function (item) {\n // Create new list element\n var listItem = _this._getTemplate('item', item, removeItemButton);\n // Append it to list\n fragment.appendChild(listItem);\n };\n // Add each list item to list\n items.forEach(addItemToFragment);\n return fragment;\n };\n Choices.prototype._triggerChange = function (value) {\n if (value === undefined || value === null) {\n return;\n }\n this.passedElement.triggerEvent(constants_1.EVENTS.change, {\n value: value\n });\n };\n Choices.prototype._selectPlaceholderChoice = function (placeholderChoice) {\n this._addItem({\n value: placeholderChoice.value,\n label: placeholderChoice.label,\n choiceId: placeholderChoice.id,\n groupId: placeholderChoice.groupId,\n placeholder: placeholderChoice.placeholder\n });\n this._triggerChange(placeholderChoice.value);\n };\n Choices.prototype._handleButtonAction = function (activeItems, element) {\n if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {\n return;\n }\n var itemId = element.parentNode && element.parentNode.dataset.id;\n var itemToRemove = itemId && activeItems.find(function (item) {\n return item.id === parseInt(itemId, 10);\n });\n if (!itemToRemove) {\n return;\n }\n // Remove item associated with button\n this._removeItem(itemToRemove);\n this._triggerChange(itemToRemove.value);\n if (this._isSelectOneElement && this._store.placeholderChoice) {\n this._selectPlaceholderChoice(this._store.placeholderChoice);\n }\n };\n Choices.prototype._handleItemAction = function (activeItems, element, hasShiftKey) {\n var _this = this;\n if (hasShiftKey === void 0) {\n hasShiftKey = false;\n }\n if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {\n return;\n }\n var passedId = element.dataset.id;\n // We only want to select one item with a click\n // so we deselect any items that aren't the target\n // unless shift is being pressed\n activeItems.forEach(function (item) {\n if (item.id === parseInt(\"\".concat(passedId), 10) && !item.highlighted) {\n _this.highlightItem(item);\n } else if (!hasShiftKey && item.highlighted) {\n _this.unhighlightItem(item);\n }\n });\n // Focus input as without focus, a user cannot do anything with a\n // highlighted item\n this.input.focus();\n };\n Choices.prototype._handleChoiceAction = function (activeItems, element) {\n if (!activeItems || !element) {\n return;\n }\n // If we are clicking on an option\n var id = element.dataset.id;\n var choice = id && this._store.getChoiceById(id);\n if (!choice) {\n return;\n }\n var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : undefined;\n var hasActiveDropdown = this.dropdown.isActive;\n // Update choice keyCode\n choice.keyCode = passedKeyCode;\n this.passedElement.triggerEvent(constants_1.EVENTS.choice, {\n choice: choice\n });\n if (!choice.selected && !choice.disabled) {\n var canAddItem = this._canAddItem(activeItems, choice.value);\n if (canAddItem.response) {\n this._addItem({\n value: choice.value,\n label: choice.label,\n choiceId: choice.id,\n groupId: choice.groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder,\n keyCode: choice.keyCode\n });\n this._triggerChange(choice.value);\n }\n }\n this.clearInput();\n // We want to close the dropdown if we are dealing with a single select box\n if (hasActiveDropdown && this._isSelectOneElement) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n Choices.prototype._handleBackspace = function (activeItems) {\n if (!this.config.removeItems || !activeItems) {\n return;\n }\n var lastItem = activeItems[activeItems.length - 1];\n var hasHighlightedItems = activeItems.some(function (item) {\n return item.highlighted;\n });\n // If editing the last item is allowed and there are not other selected items,\n // we can edit the item value. Otherwise if we can remove items, remove all selected items\n if (this.config.editItems && !hasHighlightedItems && lastItem) {\n this.input.value = lastItem.value;\n this.input.setWidth();\n this._removeItem(lastItem);\n this._triggerChange(lastItem.value);\n } else {\n if (!hasHighlightedItems) {\n // Highlight last item if none already highlighted\n this.highlightItem(lastItem, false);\n }\n this.removeHighlightedItems(true);\n }\n };\n Choices.prototype._startLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(true));\n };\n Choices.prototype._stopLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(false));\n };\n Choices.prototype._handleLoadingState = function (setLoading) {\n if (setLoading === void 0) {\n setLoading = true;\n }\n var placeholderItem = this.itemList.getChild(\".\".concat(this.config.classNames.placeholder));\n if (setLoading) {\n this.disable();\n this.containerOuter.addLoadingState();\n if (this._isSelectOneElement) {\n if (!placeholderItem) {\n placeholderItem = this._getTemplate('placeholder', this.config.loadingText);\n if (placeholderItem) {\n this.itemList.append(placeholderItem);\n }\n } else {\n placeholderItem.innerHTML = this.config.loadingText;\n }\n } else {\n this.input.placeholder = this.config.loadingText;\n }\n } else {\n this.enable();\n this.containerOuter.removeLoadingState();\n if (this._isSelectOneElement) {\n if (placeholderItem) {\n placeholderItem.innerHTML = this._placeholderValue || '';\n }\n } else {\n this.input.placeholder = this._placeholderValue || '';\n }\n }\n };\n Choices.prototype._handleSearch = function (value) {\n if (!this.input.isFocussed) {\n return;\n }\n var choices = this._store.choices;\n var _a = this.config,\n searchFloor = _a.searchFloor,\n searchChoices = _a.searchChoices;\n var hasUnactiveChoices = choices.some(function (option) {\n return !option.active;\n });\n // Check that we have a value to search and the input was an alphanumeric character\n if (value !== null && typeof value !== 'undefined' && value.length >= searchFloor) {\n var resultCount = searchChoices ? this._searchChoices(value) : 0;\n // Trigger search event\n this.passedElement.triggerEvent(constants_1.EVENTS.search, {\n value: value,\n resultCount: resultCount\n });\n } else if (hasUnactiveChoices) {\n // Otherwise reset choices to active\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n };\n Choices.prototype._canAddItem = function (activeItems, value) {\n var canAddItem = true;\n var notice = typeof this.config.addItemText === 'function' ? this.config.addItemText(value) : this.config.addItemText;\n if (!this._isSelectOneElement) {\n var isDuplicateValue = (0, utils_1.existsInArray)(activeItems, value);\n if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {\n // If there is a max entry limit and we have reached that limit\n // don't update\n canAddItem = false;\n notice = typeof this.config.maxItemText === 'function' ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;\n }\n if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {\n canAddItem = false;\n notice = typeof this.config.uniqueItemText === 'function' ? this.config.uniqueItemText(value) : this.config.uniqueItemText;\n }\n if (this._isTextElement && this.config.addItems && canAddItem && typeof this.config.addItemFilter === 'function' && !this.config.addItemFilter(value)) {\n canAddItem = false;\n notice = typeof this.config.customAddItemText === 'function' ? this.config.customAddItemText(value) : this.config.customAddItemText;\n }\n }\n return {\n response: canAddItem,\n notice: notice\n };\n };\n Choices.prototype._searchChoices = function (value) {\n var newValue = typeof value === 'string' ? value.trim() : value;\n var currentValue = typeof this._currentValue === 'string' ? this._currentValue.trim() : this._currentValue;\n if (newValue.length < 1 && newValue === \"\".concat(currentValue, \" \")) {\n return 0;\n }\n // If new value matches the desired length and is not the same as the current value with a space\n var haystack = this._store.searchableChoices;\n var needle = newValue;\n var options = Object.assign(this.config.fuseOptions, {\n keys: __spreadArray([], this.config.searchFields, true),\n includeMatches: true\n });\n var fuse = new fuse_js_1.default(haystack, options);\n var results = fuse.search(needle); // see https://github.com/krisk/Fuse/issues/303\n this._currentValue = newValue;\n this._highlightPosition = 0;\n this._isSearching = true;\n this._store.dispatch((0, choices_1.filterChoices)(results));\n return results.length;\n };\n Choices.prototype._addEventListeners = function () {\n var documentElement = document.documentElement;\n // capture events - can cancel event processing or propagation\n documentElement.addEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.addEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.addEventListener('mousedown', this._onMouseDown, true);\n // passive events - doesn't call `preventDefault` or `stopPropagation`\n documentElement.addEventListener('click', this._onClick, {\n passive: true\n });\n documentElement.addEventListener('touchmove', this._onTouchMove, {\n passive: true\n });\n this.dropdown.element.addEventListener('mouseover', this._onMouseOver, {\n passive: true\n });\n if (this._isSelectOneElement) {\n this.containerOuter.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.containerOuter.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n }\n this.input.element.addEventListener('keyup', this._onKeyUp, {\n passive: true\n });\n this.input.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.input.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n if (this.input.element.form) {\n this.input.element.form.addEventListener('reset', this._onFormReset, {\n passive: true\n });\n }\n this.input.addEventListeners();\n };\n Choices.prototype._removeEventListeners = function () {\n var documentElement = document.documentElement;\n documentElement.removeEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.removeEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.removeEventListener('mousedown', this._onMouseDown, true);\n documentElement.removeEventListener('click', this._onClick);\n documentElement.removeEventListener('touchmove', this._onTouchMove);\n this.dropdown.element.removeEventListener('mouseover', this._onMouseOver);\n if (this._isSelectOneElement) {\n this.containerOuter.element.removeEventListener('focus', this._onFocus);\n this.containerOuter.element.removeEventListener('blur', this._onBlur);\n }\n this.input.element.removeEventListener('keyup', this._onKeyUp);\n this.input.element.removeEventListener('focus', this._onFocus);\n this.input.element.removeEventListener('blur', this._onBlur);\n if (this.input.element.form) {\n this.input.element.form.removeEventListener('reset', this._onFormReset);\n }\n this.input.removeEventListeners();\n };\n Choices.prototype._onKeyDown = function (event) {\n var keyCode = event.keyCode;\n var activeItems = this._store.activeItems;\n var hasFocusedInput = this.input.isFocussed;\n var hasActiveDropdown = this.dropdown.isActive;\n var hasItems = this.itemList.hasChildren();\n var keyString = String.fromCharCode(keyCode);\n // eslint-disable-next-line no-control-regex\n var wasPrintableChar = /[^\\x00-\\x1F]/.test(keyString);\n var BACK_KEY = constants_1.KEY_CODES.BACK_KEY,\n DELETE_KEY = constants_1.KEY_CODES.DELETE_KEY,\n ENTER_KEY = constants_1.KEY_CODES.ENTER_KEY,\n A_KEY = constants_1.KEY_CODES.A_KEY,\n ESC_KEY = constants_1.KEY_CODES.ESC_KEY,\n UP_KEY = constants_1.KEY_CODES.UP_KEY,\n DOWN_KEY = constants_1.KEY_CODES.DOWN_KEY,\n PAGE_UP_KEY = constants_1.KEY_CODES.PAGE_UP_KEY,\n PAGE_DOWN_KEY = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n if (!this._isTextElement && !hasActiveDropdown && wasPrintableChar) {\n this.showDropdown();\n if (!this.input.isFocussed) {\n /*\n We update the input value with the pressed key as\n the input was not focussed at the time of key press\n therefore does not have the value of the key.\n */\n this.input.value += event.key.toLowerCase();\n }\n }\n switch (keyCode) {\n case A_KEY:\n return this._onSelectKey(event, hasItems);\n case ENTER_KEY:\n return this._onEnterKey(event, activeItems, hasActiveDropdown);\n case ESC_KEY:\n return this._onEscapeKey(hasActiveDropdown);\n case UP_KEY:\n case PAGE_UP_KEY:\n case DOWN_KEY:\n case PAGE_DOWN_KEY:\n return this._onDirectionKey(event, hasActiveDropdown);\n case DELETE_KEY:\n case BACK_KEY:\n return this._onDeleteKey(event, activeItems, hasFocusedInput);\n default:\n }\n };\n Choices.prototype._onKeyUp = function (_a) {\n var target = _a.target,\n keyCode = _a.keyCode;\n var value = this.input.value;\n var activeItems = this._store.activeItems;\n var canAddItem = this._canAddItem(activeItems, value);\n var backKey = constants_1.KEY_CODES.BACK_KEY,\n deleteKey = constants_1.KEY_CODES.DELETE_KEY;\n // We are typing into a text input and have a value, we want to show a dropdown\n // notice. Otherwise hide the dropdown\n if (this._isTextElement) {\n var canShowDropdownNotice = canAddItem.notice && value;\n if (canShowDropdownNotice) {\n var dropdownItem = this._getTemplate('notice', canAddItem.notice);\n this.dropdown.element.innerHTML = dropdownItem.outerHTML;\n this.showDropdown(true);\n } else {\n this.hideDropdown(true);\n }\n } else {\n var wasRemovalKeyCode = keyCode === backKey || keyCode === deleteKey;\n var userHasRemovedValue = wasRemovalKeyCode && target && !target.value;\n var canReactivateChoices = !this._isTextElement && this._isSearching;\n var canSearch = this._canSearch && canAddItem.response;\n if (userHasRemovedValue && canReactivateChoices) {\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n } else if (canSearch) {\n this._handleSearch(this.input.rawValue);\n }\n }\n this._canSearch = this.config.searchEnabled;\n };\n Choices.prototype._onSelectKey = function (event, hasItems) {\n var ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n var hasCtrlDownKeyPressed = ctrlKey || metaKey;\n // If CTRL + A or CMD + A have been pressed and there are items to select\n if (hasCtrlDownKeyPressed && hasItems) {\n this._canSearch = false;\n var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;\n if (shouldHightlightAll) {\n this.highlightAll();\n }\n }\n };\n Choices.prototype._onEnterKey = function (event, activeItems, hasActiveDropdown) {\n var target = event.target;\n var enterKey = constants_1.KEY_CODES.ENTER_KEY;\n var targetWasButton = target && target.hasAttribute('data-button');\n if (this._isTextElement && target && target.value) {\n var value = this.input.value;\n var canAddItem = this._canAddItem(activeItems, value);\n if (canAddItem.response) {\n this.hideDropdown(true);\n this._addItem({\n value: value\n });\n this._triggerChange(value);\n this.clearInput();\n }\n }\n if (targetWasButton) {\n this._handleButtonAction(activeItems, target);\n event.preventDefault();\n }\n if (hasActiveDropdown) {\n var highlightedChoice = this.dropdown.getChild(\".\".concat(this.config.classNames.highlightedState));\n if (highlightedChoice) {\n // add enter keyCode value\n if (activeItems[0]) {\n activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign\n }\n\n this._handleChoiceAction(activeItems, highlightedChoice);\n }\n event.preventDefault();\n } else if (this._isSelectOneElement) {\n this.showDropdown();\n event.preventDefault();\n }\n };\n Choices.prototype._onEscapeKey = function (hasActiveDropdown) {\n if (hasActiveDropdown) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n Choices.prototype._onDirectionKey = function (event, hasActiveDropdown) {\n var keyCode = event.keyCode,\n metaKey = event.metaKey;\n var downKey = constants_1.KEY_CODES.DOWN_KEY,\n pageUpKey = constants_1.KEY_CODES.PAGE_UP_KEY,\n pageDownKey = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n // If up or down key is pressed, traverse through options\n if (hasActiveDropdown || this._isSelectOneElement) {\n this.showDropdown();\n this._canSearch = false;\n var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;\n var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;\n var selectableChoiceIdentifier = '[data-choice-selectable]';\n var nextEl = void 0;\n if (skipKey) {\n if (directionInt > 0) {\n nextEl = this.dropdown.element.querySelector(\"\".concat(selectableChoiceIdentifier, \":last-of-type\"));\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n } else {\n var currentEl = this.dropdown.element.querySelector(\".\".concat(this.config.classNames.highlightedState));\n if (currentEl) {\n nextEl = (0, utils_1.getAdjacentEl)(currentEl, selectableChoiceIdentifier, directionInt);\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n }\n if (nextEl) {\n // We prevent default to stop the cursor moving\n // when pressing the arrow\n if (!(0, utils_1.isScrolledIntoView)(nextEl, this.choiceList.element, directionInt)) {\n this.choiceList.scrollToChildElement(nextEl, directionInt);\n }\n this._highlightChoice(nextEl);\n }\n // Prevent default to maintain cursor position whilst\n // traversing dropdown options\n event.preventDefault();\n }\n };\n Choices.prototype._onDeleteKey = function (event, activeItems, hasFocusedInput) {\n var target = event.target;\n // If backspace or delete key is pressed and the input has no value\n if (!this._isSelectOneElement && !target.value && hasFocusedInput) {\n this._handleBackspace(activeItems);\n event.preventDefault();\n }\n };\n Choices.prototype._onTouchMove = function () {\n if (this._wasTap) {\n this._wasTap = false;\n }\n };\n Choices.prototype._onTouchEnd = function (event) {\n var target = (event || event.touches[0]).target;\n var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);\n if (touchWasWithinContainer) {\n var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;\n if (containerWasExactTarget) {\n if (this._isTextElement) {\n this.input.focus();\n } else if (this._isSelectMultipleElement) {\n this.showDropdown();\n }\n }\n // Prevents focus event firing\n event.stopPropagation();\n }\n this._wasTap = true;\n };\n /**\n * Handles mousedown event in capture mode for containetOuter.element\n */\n Choices.prototype._onMouseDown = function (event) {\n var target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n // If we have our mouse down on the scrollbar and are on IE11...\n if (IS_IE11 && this.choiceList.element.contains(target)) {\n // check if click was on a scrollbar area\n var firstChoice = this.choiceList.element.firstElementChild;\n var isOnScrollbar = this._direction === 'ltr' ? event.offsetX >= firstChoice.offsetWidth : event.offsetX < firstChoice.offsetLeft;\n this._isScrollingOnIe = isOnScrollbar;\n }\n if (target === this.input.element) {\n return;\n }\n var item = target.closest('[data-button],[data-item],[data-choice]');\n if (item instanceof HTMLElement) {\n var hasShiftKey = event.shiftKey;\n var activeItems = this._store.activeItems;\n var dataset = item.dataset;\n if ('button' in dataset) {\n this._handleButtonAction(activeItems, item);\n } else if ('item' in dataset) {\n this._handleItemAction(activeItems, item, hasShiftKey);\n } else if ('choice' in dataset) {\n this._handleChoiceAction(activeItems, item);\n }\n }\n event.preventDefault();\n };\n /**\n * Handles mouseover event over this.dropdown\n * @param {MouseEvent} event\n */\n Choices.prototype._onMouseOver = function (_a) {\n var target = _a.target;\n if (target instanceof HTMLElement && 'choice' in target.dataset) {\n this._highlightChoice(target);\n }\n };\n Choices.prototype._onClick = function (_a) {\n var target = _a.target;\n var clickWasWithinContainer = this.containerOuter.element.contains(target);\n if (clickWasWithinContainer) {\n if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {\n if (this._isTextElement) {\n if (document.activeElement !== this.input.element) {\n this.input.focus();\n }\n } else {\n this.showDropdown();\n this.containerOuter.focus();\n }\n } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {\n this.hideDropdown();\n }\n } else {\n var hasHighlightedItems = this._store.highlightedActiveItems.length > 0;\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n this.containerOuter.removeFocusState();\n this.hideDropdown(true);\n }\n };\n Choices.prototype._onFocus = function (_a) {\n var _b;\n var _this = this;\n var target = _a.target;\n var focusWasWithinContainer = target && this.containerOuter.element.contains(target);\n if (!focusWasWithinContainer) {\n return;\n }\n var focusActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.addFocusState();\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.addFocusState();\n if (target === _this.input.element) {\n _this.showDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.showDropdown(true);\n // If element is a select box, the focused element is the container and the dropdown\n // isn't already open, focus and show dropdown\n _this.containerOuter.addFocusState();\n }\n }, _b);\n focusActions[this.passedElement.element.type]();\n };\n Choices.prototype._onBlur = function (_a) {\n var _b;\n var _this = this;\n var target = _a.target;\n var blurWasWithinContainer = target && this.containerOuter.element.contains(target);\n if (blurWasWithinContainer && !this._isScrollingOnIe) {\n var activeItems = this._store.activeItems;\n var hasHighlightedItems_1 = activeItems.some(function (item) {\n return item.highlighted;\n });\n var blurActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.removeFocusState();\n if (target === _this.input.element || target === _this.containerOuter.element && !_this._canSearch) {\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n _this.hideDropdown(true);\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n }\n }, _b);\n blurActions[this.passedElement.element.type]();\n } else {\n // On IE11, clicking the scollbar blurs our input and thus\n // closes the dropdown. To stop this, we refocus our input\n // if we know we are on IE *and* are scrolling.\n this._isScrollingOnIe = false;\n this.input.element.focus();\n }\n };\n Choices.prototype._onFormReset = function () {\n this._store.dispatch((0, misc_1.resetTo)(this._initialState));\n };\n Choices.prototype._highlightChoice = function (el) {\n var _this = this;\n if (el === void 0) {\n el = null;\n }\n var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));\n if (!choices.length) {\n return;\n }\n var passedEl = el;\n var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(\".\".concat(this.config.classNames.highlightedState)));\n // Remove any highlighted choices\n highlightedChoices.forEach(function (choice) {\n choice.classList.remove(_this.config.classNames.highlightedState);\n choice.setAttribute('aria-selected', 'false');\n });\n if (passedEl) {\n this._highlightPosition = choices.indexOf(passedEl);\n } else {\n // Highlight choice based on last known highlight location\n if (choices.length > this._highlightPosition) {\n // If we have an option to highlight\n passedEl = choices[this._highlightPosition];\n } else {\n // Otherwise highlight the option before\n passedEl = choices[choices.length - 1];\n }\n if (!passedEl) {\n passedEl = choices[0];\n }\n }\n passedEl.classList.add(this.config.classNames.highlightedState);\n passedEl.setAttribute('aria-selected', 'true');\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightChoice, {\n el: passedEl\n });\n if (this.dropdown.isActive) {\n // IE11 ignores aria-label and blocks virtual keyboard\n // if aria-activedescendant is set without a dropdown\n this.input.setActiveDescendant(passedEl.id);\n this.containerOuter.setActiveDescendant(passedEl.id);\n }\n };\n Choices.prototype._addItem = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.choiceId,\n choiceId = _c === void 0 ? -1 : _c,\n _d = _a.groupId,\n groupId = _d === void 0 ? -1 : _d,\n _e = _a.customProperties,\n customProperties = _e === void 0 ? {} : _e,\n _f = _a.placeholder,\n placeholder = _f === void 0 ? false : _f,\n _g = _a.keyCode,\n keyCode = _g === void 0 ? -1 : _g;\n var passedValue = typeof value === 'string' ? value.trim() : value;\n var items = this._store.items;\n var passedLabel = label || passedValue;\n var passedOptionId = choiceId || -1;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n var id = items ? items.length + 1 : 1;\n // If a prepended value has been passed, prepend it\n if (this.config.prependValue) {\n passedValue = this.config.prependValue + passedValue.toString();\n }\n // If an appended value has been passed, append it\n if (this.config.appendValue) {\n passedValue += this.config.appendValue.toString();\n }\n this._store.dispatch((0, items_1.addItem)({\n value: passedValue,\n label: passedLabel,\n id: id,\n choiceId: passedOptionId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n if (this._isSelectOneElement) {\n this.removeActiveItems(id);\n }\n // Trigger change event\n this.passedElement.triggerEvent(constants_1.EVENTS.addItem, {\n id: id,\n value: passedValue,\n label: passedLabel,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null,\n keyCode: keyCode\n });\n };\n Choices.prototype._removeItem = function (item) {\n var id = item.id,\n value = item.value,\n label = item.label,\n customProperties = item.customProperties,\n choiceId = item.choiceId,\n groupId = item.groupId;\n var group = groupId && groupId >= 0 ? this._store.getGroupById(groupId) : null;\n if (!id || !choiceId) {\n return;\n }\n this._store.dispatch((0, items_1.removeItem)(id, choiceId));\n this.passedElement.triggerEvent(constants_1.EVENTS.removeItem, {\n id: id,\n value: value,\n label: label,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null\n });\n };\n Choices.prototype._addChoice = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.isSelected,\n isSelected = _c === void 0 ? false : _c,\n _d = _a.isDisabled,\n isDisabled = _d === void 0 ? false : _d,\n _e = _a.groupId,\n groupId = _e === void 0 ? -1 : _e,\n _f = _a.customProperties,\n customProperties = _f === void 0 ? {} : _f,\n _g = _a.placeholder,\n placeholder = _g === void 0 ? false : _g,\n _h = _a.keyCode,\n keyCode = _h === void 0 ? -1 : _h;\n if (typeof value === 'undefined' || value === null) {\n return;\n }\n // Generate unique id\n var choices = this._store.choices;\n var choiceLabel = label || value;\n var choiceId = choices ? choices.length + 1 : 1;\n var choiceElementId = \"\".concat(this._baseId, \"-\").concat(this._idNames.itemChoice, \"-\").concat(choiceId);\n this._store.dispatch((0, choices_1.addChoice)({\n id: choiceId,\n groupId: groupId,\n elementId: choiceElementId,\n value: value,\n label: choiceLabel,\n disabled: isDisabled,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n if (isSelected) {\n this._addItem({\n value: value,\n label: choiceLabel,\n choiceId: choiceId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n });\n }\n };\n Choices.prototype._addGroup = function (_a) {\n var _this = this;\n var group = _a.group,\n id = _a.id,\n _b = _a.valueKey,\n valueKey = _b === void 0 ? 'value' : _b,\n _c = _a.labelKey,\n labelKey = _c === void 0 ? 'label' : _c;\n var groupChoices = (0, utils_1.isType)('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));\n var groupId = id || Math.floor(new Date().valueOf() * Math.random());\n var isDisabled = group.disabled ? group.disabled : false;\n if (groupChoices) {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: groupId,\n active: true,\n disabled: isDisabled\n }));\n var addGroupChoices = function (choice) {\n var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;\n _this._addChoice({\n value: choice[valueKey],\n label: (0, utils_1.isType)('Object', choice) ? choice[labelKey] : choice.innerHTML,\n isSelected: choice.selected,\n isDisabled: isOptDisabled,\n groupId: groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder\n });\n };\n groupChoices.forEach(addGroupChoices);\n } else {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: group.id,\n active: false,\n disabled: group.disabled\n }));\n }\n };\n Choices.prototype._getTemplate = function (template) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (_a = this._templates[template]).call.apply(_a, __spreadArray([this, this.config], args, false));\n };\n Choices.prototype._createTemplates = function () {\n var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;\n var userTemplates = {};\n if (callbackOnCreateTemplates && typeof callbackOnCreateTemplates === 'function') {\n userTemplates = callbackOnCreateTemplates.call(this, utils_1.strToEl);\n }\n this._templates = (0, deepmerge_1.default)(templates_1.default, userTemplates);\n };\n Choices.prototype._createElements = function () {\n this.containerOuter = new components_1.Container({\n element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type, this.config.labelId),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.containerInner = new components_1.Container({\n element: this._getTemplate('containerInner'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.input = new components_1.Input({\n element: this._getTemplate('input', this._placeholderValue),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n preventPaste: !this.config.paste\n });\n this.choiceList = new components_1.List({\n element: this._getTemplate('choiceList', this._isSelectOneElement)\n });\n this.itemList = new components_1.List({\n element: this._getTemplate('itemList', this._isSelectOneElement)\n });\n this.dropdown = new components_1.Dropdown({\n element: this._getTemplate('dropdown'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type\n });\n };\n Choices.prototype._createStructure = function () {\n // Hide original element\n this.passedElement.conceal();\n // Wrap input in container preserving DOM ordering\n this.containerInner.wrap(this.passedElement.element);\n // Wrapper inner container with outer container\n this.containerOuter.wrap(this.containerInner.element);\n if (this._isSelectOneElement) {\n this.input.placeholder = this.config.searchPlaceholderValue || '';\n } else if (this._placeholderValue) {\n this.input.placeholder = this._placeholderValue;\n this.input.setWidth();\n }\n this.containerOuter.element.appendChild(this.containerInner.element);\n this.containerOuter.element.appendChild(this.dropdown.element);\n this.containerInner.element.appendChild(this.itemList.element);\n if (!this._isTextElement) {\n this.dropdown.element.appendChild(this.choiceList.element);\n }\n if (!this._isSelectOneElement) {\n this.containerInner.element.appendChild(this.input.element);\n } else if (this.config.searchEnabled) {\n this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);\n }\n if (this._isSelectElement) {\n this._highlightPosition = 0;\n this._isSearching = false;\n this._startLoading();\n if (this._presetGroups.length) {\n this._addPredefinedGroups(this._presetGroups);\n } else {\n this._addPredefinedChoices(this._presetChoices);\n }\n this._stopLoading();\n }\n if (this._isTextElement) {\n this._addPredefinedItems(this._presetItems);\n }\n };\n Choices.prototype._addPredefinedGroups = function (groups) {\n var _this = this;\n // If we have a placeholder option\n var placeholderChoice = this.passedElement.placeholderOption;\n if (placeholderChoice && placeholderChoice.parentNode && placeholderChoice.parentNode.tagName === 'SELECT') {\n this._addChoice({\n value: placeholderChoice.value,\n label: placeholderChoice.innerHTML,\n isSelected: placeholderChoice.selected,\n isDisabled: placeholderChoice.disabled,\n placeholder: true\n });\n }\n groups.forEach(function (group) {\n return _this._addGroup({\n group: group,\n id: group.id || null\n });\n });\n };\n Choices.prototype._addPredefinedChoices = function (choices) {\n var _this = this;\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort) {\n choices.sort(this.config.sorter);\n }\n var hasSelectedChoice = choices.some(function (choice) {\n return choice.selected;\n });\n var firstEnabledChoiceIndex = choices.findIndex(function (choice) {\n return choice.disabled === undefined || !choice.disabled;\n });\n choices.forEach(function (choice, index) {\n var _a = choice.value,\n value = _a === void 0 ? '' : _a,\n label = choice.label,\n customProperties = choice.customProperties,\n placeholder = choice.placeholder;\n if (_this._isSelectElement) {\n // If the choice is actually a group\n if (choice.choices) {\n _this._addGroup({\n group: choice,\n id: choice.id || null\n });\n } else {\n /**\n * If there is a selected choice already or the choice is not the first in\n * the array, add each choice normally.\n *\n * Otherwise we pre-select the first enabled choice in the array (\"select-one\" only)\n */\n var shouldPreselect = _this._isSelectOneElement && !hasSelectedChoice && index === firstEnabledChoiceIndex;\n var isSelected = shouldPreselect ? true : choice.selected;\n var isDisabled = choice.disabled;\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!isSelected,\n isDisabled: !!isDisabled,\n placeholder: !!placeholder,\n customProperties: customProperties\n });\n }\n } else {\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: customProperties\n });\n }\n });\n };\n Choices.prototype._addPredefinedItems = function (items) {\n var _this = this;\n items.forEach(function (item) {\n if (typeof item === 'object' && item.value) {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n if (typeof item === 'string') {\n _this._addItem({\n value: item\n });\n }\n });\n };\n Choices.prototype._setChoiceOrItem = function (item) {\n var _this = this;\n var itemType = (0, utils_1.getType)(item).toLowerCase();\n var handleType = {\n object: function () {\n if (!item.value) {\n return;\n }\n // If we are dealing with a select input, we need to create an option first\n // that is then selected. For text inputs we can just add items normally.\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item.value,\n label: item.label,\n isSelected: true,\n isDisabled: false,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n } else {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n },\n string: function () {\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item,\n label: item,\n isSelected: true,\n isDisabled: false\n });\n } else {\n _this._addItem({\n value: item\n });\n }\n }\n };\n handleType[itemType]();\n };\n Choices.prototype._findAndSelectChoiceByValue = function (value) {\n var _this = this;\n var choices = this._store.choices;\n // Check 'value' property exists and the choice isn't already selected\n var foundChoice = choices.find(function (choice) {\n return _this.config.valueComparer(choice.value, value);\n });\n if (foundChoice && !foundChoice.selected) {\n this._addItem({\n value: foundChoice.value,\n label: foundChoice.label,\n choiceId: foundChoice.id,\n groupId: foundChoice.groupId,\n customProperties: foundChoice.customProperties,\n placeholder: foundChoice.placeholder,\n keyCode: foundChoice.keyCode\n });\n }\n };\n Choices.prototype._generatePlaceholderValue = function () {\n if (this._isSelectElement && this.passedElement.placeholderOption) {\n var placeholderOption = this.passedElement.placeholderOption;\n return placeholderOption ? placeholderOption.text : null;\n }\n var _a = this.config,\n placeholder = _a.placeholder,\n placeholderValue = _a.placeholderValue;\n var dataset = this.passedElement.element.dataset;\n if (placeholder) {\n if (placeholderValue) {\n return placeholderValue;\n }\n if (dataset.placeholder) {\n return dataset.placeholder;\n }\n }\n return null;\n };\n return Choices;\n}();\nexports[\"default\"] = Choices;\n\n/***/ }),\n\n/***/ 613:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar constants_1 = __webpack_require__(883);\nvar Container = /** @class */function () {\n function Container(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n position = _a.position;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.position = position;\n this.isOpen = false;\n this.isFlipped = false;\n this.isFocussed = false;\n this.isDisabled = false;\n this.isLoading = false;\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Container.prototype.addEventListeners = function () {\n this.element.addEventListener('focus', this._onFocus);\n this.element.addEventListener('blur', this._onBlur);\n };\n Container.prototype.removeEventListeners = function () {\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n /**\n * Determine whether container should be flipped based on passed\n * dropdown position\n */\n Container.prototype.shouldFlip = function (dropdownPos) {\n if (typeof dropdownPos !== 'number') {\n return false;\n }\n // If flip is enabled and the dropdown bottom position is\n // greater than the window height flip the dropdown.\n var shouldFlip = false;\n if (this.position === 'auto') {\n shouldFlip = !window.matchMedia(\"(min-height: \".concat(dropdownPos + 1, \"px)\")).matches;\n } else if (this.position === 'top') {\n shouldFlip = true;\n }\n return shouldFlip;\n };\n Container.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Container.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Container.prototype.open = function (dropdownPos) {\n this.element.classList.add(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isOpen = true;\n if (this.shouldFlip(dropdownPos)) {\n this.element.classList.add(this.classNames.flippedState);\n this.isFlipped = true;\n }\n };\n Container.prototype.close = function () {\n this.element.classList.remove(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'false');\n this.removeActiveDescendant();\n this.isOpen = false;\n // A dropdown flips if it does not have space within the page\n if (this.isFlipped) {\n this.element.classList.remove(this.classNames.flippedState);\n this.isFlipped = false;\n }\n };\n Container.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Container.prototype.addFocusState = function () {\n this.element.classList.add(this.classNames.focusState);\n };\n Container.prototype.removeFocusState = function () {\n this.element.classList.remove(this.classNames.focusState);\n };\n Container.prototype.enable = function () {\n this.element.classList.remove(this.classNames.disabledState);\n this.element.removeAttribute('aria-disabled');\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '0');\n }\n this.isDisabled = false;\n };\n Container.prototype.disable = function () {\n this.element.classList.add(this.classNames.disabledState);\n this.element.setAttribute('aria-disabled', 'true');\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '-1');\n }\n this.isDisabled = true;\n };\n Container.prototype.wrap = function (element) {\n (0, utils_1.wrap)(element, this.element);\n };\n Container.prototype.unwrap = function (element) {\n if (this.element.parentNode) {\n // Move passed element outside this element\n this.element.parentNode.insertBefore(element, this.element);\n // Remove this element\n this.element.parentNode.removeChild(this.element);\n }\n };\n Container.prototype.addLoadingState = function () {\n this.element.classList.add(this.classNames.loadingState);\n this.element.setAttribute('aria-busy', 'true');\n this.isLoading = true;\n };\n Container.prototype.removeLoadingState = function () {\n this.element.classList.remove(this.classNames.loadingState);\n this.element.removeAttribute('aria-busy');\n this.isLoading = false;\n };\n Container.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Container.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Container;\n}();\nexports[\"default\"] = Container;\n\n/***/ }),\n\n/***/ 217:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar Dropdown = /** @class */function () {\n function Dropdown(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.isActive = false;\n }\n Object.defineProperty(Dropdown.prototype, \"distanceFromTopWindow\", {\n /**\n * Bottom position of dropdown in viewport coordinates\n */\n get: function () {\n return this.element.getBoundingClientRect().bottom;\n },\n enumerable: false,\n configurable: true\n });\n Dropdown.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n /**\n * Show dropdown to user by adding active state class\n */\n Dropdown.prototype.show = function () {\n this.element.classList.add(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isActive = true;\n return this;\n };\n /**\n * Hide dropdown from user\n */\n Dropdown.prototype.hide = function () {\n this.element.classList.remove(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'false');\n this.isActive = false;\n return this;\n };\n return Dropdown;\n}();\nexports[\"default\"] = Dropdown;\n\n/***/ }),\n\n/***/ 520:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.WrappedSelect = exports.WrappedInput = exports.List = exports.Input = exports.Container = exports.Dropdown = void 0;\nvar dropdown_1 = __importDefault(__webpack_require__(217));\nexports.Dropdown = dropdown_1.default;\nvar container_1 = __importDefault(__webpack_require__(613));\nexports.Container = container_1.default;\nvar input_1 = __importDefault(__webpack_require__(11));\nexports.Input = input_1.default;\nvar list_1 = __importDefault(__webpack_require__(624));\nexports.List = list_1.default;\nvar wrapped_input_1 = __importDefault(__webpack_require__(541));\nexports.WrappedInput = wrapped_input_1.default;\nvar wrapped_select_1 = __importDefault(__webpack_require__(982));\nexports.WrappedSelect = wrapped_select_1.default;\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar constants_1 = __webpack_require__(883);\nvar Input = /** @class */function () {\n function Input(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n preventPaste = _a.preventPaste;\n this.element = element;\n this.type = type;\n this.classNames = classNames;\n this.preventPaste = preventPaste;\n this.isFocussed = this.element.isEqualNode(document.activeElement);\n this.isDisabled = element.disabled;\n this._onPaste = this._onPaste.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Object.defineProperty(Input.prototype, \"placeholder\", {\n set: function (placeholder) {\n this.element.placeholder = placeholder;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"value\", {\n get: function () {\n return (0, utils_1.sanitise)(this.element.value);\n },\n set: function (value) {\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"rawValue\", {\n get: function () {\n return this.element.value;\n },\n enumerable: false,\n configurable: true\n });\n Input.prototype.addEventListeners = function () {\n this.element.addEventListener('paste', this._onPaste);\n this.element.addEventListener('input', this._onInput, {\n passive: true\n });\n this.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n };\n Input.prototype.removeEventListeners = function () {\n this.element.removeEventListener('input', this._onInput);\n this.element.removeEventListener('paste', this._onPaste);\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n Input.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.isDisabled = false;\n };\n Input.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.isDisabled = true;\n };\n Input.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Input.prototype.blur = function () {\n if (this.isFocussed) {\n this.element.blur();\n }\n };\n Input.prototype.clear = function (setWidth) {\n if (setWidth === void 0) {\n setWidth = true;\n }\n if (this.element.value) {\n this.element.value = '';\n }\n if (setWidth) {\n this.setWidth();\n }\n return this;\n };\n /**\n * Set the correct input width based on placeholder\n * value or input value\n */\n Input.prototype.setWidth = function () {\n // Resize input to contents or placeholder\n var _a = this.element,\n style = _a.style,\n value = _a.value,\n placeholder = _a.placeholder;\n style.minWidth = \"\".concat(placeholder.length + 1, \"ch\");\n style.width = \"\".concat(value.length + 1, \"ch\");\n };\n Input.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Input.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Input.prototype._onInput = function () {\n if (this.type !== constants_1.SELECT_ONE_TYPE) {\n this.setWidth();\n }\n };\n Input.prototype._onPaste = function (event) {\n if (this.preventPaste) {\n event.preventDefault();\n }\n };\n Input.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Input.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Input;\n}();\nexports[\"default\"] = Input;\n\n/***/ }),\n\n/***/ 624:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar constants_1 = __webpack_require__(883);\nvar List = /** @class */function () {\n function List(_a) {\n var element = _a.element;\n this.element = element;\n this.scrollPos = this.element.scrollTop;\n this.height = this.element.offsetHeight;\n }\n List.prototype.clear = function () {\n this.element.innerHTML = '';\n };\n List.prototype.append = function (node) {\n this.element.appendChild(node);\n };\n List.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n List.prototype.hasChildren = function () {\n return this.element.hasChildNodes();\n };\n List.prototype.scrollToTop = function () {\n this.element.scrollTop = 0;\n };\n List.prototype.scrollToChildElement = function (element, direction) {\n var _this = this;\n if (!element) {\n return;\n }\n var listHeight = this.element.offsetHeight;\n // Scroll position of dropdown\n var listScrollPosition = this.element.scrollTop + listHeight;\n var elementHeight = element.offsetHeight;\n // Distance from bottom of element to top of parent\n var elementPos = element.offsetTop + elementHeight;\n // Difference between the element and scroll position\n var destination = direction > 0 ? this.element.scrollTop + elementPos - listScrollPosition : element.offsetTop;\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n };\n List.prototype._scrollDown = function (scrollPos, strength, destination) {\n var easing = (destination - scrollPos) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos + distance;\n };\n List.prototype._scrollUp = function (scrollPos, strength, destination) {\n var easing = (scrollPos - destination) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos - distance;\n };\n List.prototype._animateScroll = function (destination, direction) {\n var _this = this;\n var strength = constants_1.SCROLLING_SPEED;\n var choiceListScrollTop = this.element.scrollTop;\n var continueAnimation = false;\n if (direction > 0) {\n this._scrollDown(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop < destination) {\n continueAnimation = true;\n }\n } else {\n this._scrollUp(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop > destination) {\n continueAnimation = true;\n }\n }\n if (continueAnimation) {\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n }\n };\n return List;\n}();\nexports[\"default\"] = List;\n\n/***/ }),\n\n/***/ 730:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar WrappedElement = /** @class */function () {\n function WrappedElement(_a) {\n var element = _a.element,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n if (!(element instanceof HTMLInputElement) && !(element instanceof HTMLSelectElement)) {\n throw new TypeError('Invalid element passed');\n }\n this.isDisabled = false;\n }\n Object.defineProperty(WrappedElement.prototype, \"isActive\", {\n get: function () {\n return this.element.dataset.choice === 'active';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"dir\", {\n get: function () {\n return this.element.dir;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n // you must define setter here otherwise it will be readonly property\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n WrappedElement.prototype.conceal = function () {\n // Hide passed input\n this.element.classList.add(this.classNames.input);\n this.element.hidden = true;\n // Remove element from tab index\n this.element.tabIndex = -1;\n // Backup original styles if any\n var origStyle = this.element.getAttribute('style');\n if (origStyle) {\n this.element.setAttribute('data-choice-orig-style', origStyle);\n }\n this.element.setAttribute('data-choice', 'active');\n };\n WrappedElement.prototype.reveal = function () {\n // Reinstate passed element\n this.element.classList.remove(this.classNames.input);\n this.element.hidden = false;\n this.element.removeAttribute('tabindex');\n // Recover original styles if any\n var origStyle = this.element.getAttribute('data-choice-orig-style');\n if (origStyle) {\n this.element.removeAttribute('data-choice-orig-style');\n this.element.setAttribute('style', origStyle);\n } else {\n this.element.removeAttribute('style');\n }\n this.element.removeAttribute('data-choice');\n // Re-assign values - this is weird, I know\n // @todo Figure out why we need to do this\n this.element.value = this.element.value; // eslint-disable-line no-self-assign\n };\n\n WrappedElement.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.element.disabled = false;\n this.isDisabled = false;\n };\n WrappedElement.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.element.disabled = true;\n this.isDisabled = true;\n };\n WrappedElement.prototype.triggerEvent = function (eventType, data) {\n (0, utils_1.dispatchEvent)(this.element, eventType, data);\n };\n return WrappedElement;\n}();\nexports[\"default\"] = WrappedElement;\n\n/***/ }),\n\n/***/ 541:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\nvar WrappedInput = /** @class */function (_super) {\n __extends(WrappedInput, _super);\n function WrappedInput(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n delimiter = _a.delimiter;\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.delimiter = delimiter;\n return _this;\n }\n Object.defineProperty(WrappedInput.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n this.element.setAttribute('value', value);\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n return WrappedInput;\n}(wrapped_element_1.default);\nexports[\"default\"] = WrappedInput;\n\n/***/ }),\n\n/***/ 982:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\nvar WrappedSelect = /** @class */function (_super) {\n __extends(WrappedSelect, _super);\n function WrappedSelect(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n template = _a.template;\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.template = template;\n return _this;\n }\n Object.defineProperty(WrappedSelect.prototype, \"placeholderOption\", {\n get: function () {\n return this.element.querySelector('option[value=\"\"]') ||\n // Backward compatibility layer for the non-standard placeholder attribute supported in older versions.\n this.element.querySelector('option[placeholder]');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"optionGroups\", {\n get: function () {\n return Array.from(this.element.getElementsByTagName('OPTGROUP'));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"options\", {\n get: function () {\n return Array.from(this.element.options);\n },\n set: function (options) {\n var _this = this;\n var fragment = document.createDocumentFragment();\n var addOptionToFragment = function (data) {\n // Create a standard select option\n var option = _this.template(data);\n // Append it to fragment\n fragment.appendChild(option);\n };\n // Add each list item to list\n options.forEach(function (optionData) {\n return addOptionToFragment(optionData);\n });\n this.appendDocFragment(fragment);\n },\n enumerable: false,\n configurable: true\n });\n WrappedSelect.prototype.appendDocFragment = function (fragment) {\n this.element.innerHTML = '';\n this.element.appendChild(fragment);\n };\n return WrappedSelect;\n}(wrapped_element_1.default);\nexports[\"default\"] = WrappedSelect;\n\n/***/ }),\n\n/***/ 883:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SCROLLING_SPEED = exports.SELECT_MULTIPLE_TYPE = exports.SELECT_ONE_TYPE = exports.TEXT_TYPE = exports.KEY_CODES = exports.ACTION_TYPES = exports.EVENTS = void 0;\nexports.EVENTS = {\n showDropdown: 'showDropdown',\n hideDropdown: 'hideDropdown',\n change: 'change',\n choice: 'choice',\n search: 'search',\n addItem: 'addItem',\n removeItem: 'removeItem',\n highlightItem: 'highlightItem',\n highlightChoice: 'highlightChoice',\n unhighlightItem: 'unhighlightItem'\n};\nexports.ACTION_TYPES = {\n ADD_CHOICE: 'ADD_CHOICE',\n FILTER_CHOICES: 'FILTER_CHOICES',\n ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n CLEAR_CHOICES: 'CLEAR_CHOICES',\n ADD_GROUP: 'ADD_GROUP',\n ADD_ITEM: 'ADD_ITEM',\n REMOVE_ITEM: 'REMOVE_ITEM',\n HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n CLEAR_ALL: 'CLEAR_ALL',\n RESET_TO: 'RESET_TO',\n SET_IS_LOADING: 'SET_IS_LOADING'\n};\nexports.KEY_CODES = {\n BACK_KEY: 46,\n DELETE_KEY: 8,\n ENTER_KEY: 13,\n A_KEY: 65,\n ESC_KEY: 27,\n UP_KEY: 38,\n DOWN_KEY: 40,\n PAGE_UP_KEY: 33,\n PAGE_DOWN_KEY: 34\n};\nexports.TEXT_TYPE = 'text';\nexports.SELECT_ONE_TYPE = 'select-one';\nexports.SELECT_MULTIPLE_TYPE = 'select-multiple';\nexports.SCROLLING_SPEED = 4;\n\n/***/ }),\n\n/***/ 789:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.DEFAULT_CONFIG = exports.DEFAULT_CLASSNAMES = void 0;\nvar utils_1 = __webpack_require__(799);\nexports.DEFAULT_CLASSNAMES = {\n containerOuter: 'choices',\n containerInner: 'choices__inner',\n input: 'choices__input',\n inputCloned: 'choices__input--cloned',\n list: 'choices__list',\n listItems: 'choices__list--multiple',\n listSingle: 'choices__list--single',\n listDropdown: 'choices__list--dropdown',\n item: 'choices__item',\n itemSelectable: 'choices__item--selectable',\n itemDisabled: 'choices__item--disabled',\n itemChoice: 'choices__item--choice',\n placeholder: 'choices__placeholder',\n group: 'choices__group',\n groupHeading: 'choices__heading',\n button: 'choices__button',\n activeState: 'is-active',\n focusState: 'is-focused',\n openState: 'is-open',\n disabledState: 'is-disabled',\n highlightedState: 'is-highlighted',\n selectedState: 'is-selected',\n flippedState: 'is-flipped',\n loadingState: 'is-loading',\n noResults: 'has-no-results',\n noChoices: 'has-no-choices'\n};\nexports.DEFAULT_CONFIG = {\n items: [],\n choices: [],\n silent: false,\n renderChoiceLimit: -1,\n maxItemCount: -1,\n addItems: true,\n addItemFilter: null,\n removeItems: true,\n removeItemButton: false,\n editItems: false,\n allowHTML: true,\n duplicateItemsAllowed: true,\n delimiter: ',',\n paste: true,\n searchEnabled: true,\n searchChoices: true,\n searchFloor: 1,\n searchResultLimit: 4,\n searchFields: ['label', 'value'],\n position: 'auto',\n resetScrollPosition: true,\n shouldSort: true,\n shouldSortItems: false,\n sorter: utils_1.sortByAlpha,\n placeholder: true,\n placeholderValue: null,\n searchPlaceholderValue: null,\n prependValue: null,\n appendValue: null,\n renderSelectedChoices: 'auto',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n uniqueItemText: 'Only unique values can be added',\n customAddItemText: 'Only values matching specific conditions can be added',\n addItemText: function (value) {\n return \"Press Enter to add \\\"\".concat((0, utils_1.sanitise)(value), \"\\\"\");\n },\n maxItemText: function (maxItemCount) {\n return \"Only \".concat(maxItemCount, \" values can be added\");\n },\n valueComparer: function (value1, value2) {\n return value1 === value2;\n },\n fuseOptions: {\n includeScore: true\n },\n labelId: '',\n callbackOnInit: null,\n callbackOnCreateTemplates: null,\n classNames: exports.DEFAULT_CLASSNAMES\n};\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 978:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 948:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 359:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 533:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 187:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n__exportStar(__webpack_require__(18), exports);\n__exportStar(__webpack_require__(978), exports);\n__exportStar(__webpack_require__(948), exports);\n__exportStar(__webpack_require__(359), exports);\n__exportStar(__webpack_require__(285), exports);\n__exportStar(__webpack_require__(533), exports);\n__exportStar(__webpack_require__(287), exports);\n__exportStar(__webpack_require__(132), exports);\n__exportStar(__webpack_require__(837), exports);\n__exportStar(__webpack_require__(598), exports);\n__exportStar(__webpack_require__(369), exports);\n__exportStar(__webpack_require__(37), exports);\n__exportStar(__webpack_require__(47), exports);\n__exportStar(__webpack_require__(923), exports);\n__exportStar(__webpack_require__(876), exports);\n\n/***/ }),\n\n/***/ 287:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 132:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 837:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 598:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 369:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 47:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 923:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 876:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 799:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.parseCustomProperties = exports.diff = exports.cloneObject = exports.existsInArray = exports.dispatchEvent = exports.sortByScore = exports.sortByAlpha = exports.strToEl = exports.sanitise = exports.isScrolledIntoView = exports.getAdjacentEl = exports.wrap = exports.isType = exports.getType = exports.generateId = exports.generateChars = exports.getRandomNumber = void 0;\nvar getRandomNumber = function (min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n};\nexports.getRandomNumber = getRandomNumber;\nvar generateChars = function (length) {\n return Array.from({\n length: length\n }, function () {\n return (0, exports.getRandomNumber)(0, 36).toString(36);\n }).join('');\n};\nexports.generateChars = generateChars;\nvar generateId = function (element, prefix) {\n var id = element.id || element.name && \"\".concat(element.name, \"-\").concat((0, exports.generateChars)(2)) || (0, exports.generateChars)(4);\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = \"\".concat(prefix, \"-\").concat(id);\n return id;\n};\nexports.generateId = generateId;\nvar getType = function (obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n};\nexports.getType = getType;\nvar isType = function (type, obj) {\n return obj !== undefined && obj !== null && (0, exports.getType)(obj) === type;\n};\nexports.isType = isType;\nvar wrap = function (element, wrapper) {\n if (wrapper === void 0) {\n wrapper = document.createElement('div');\n }\n if (element.parentNode) {\n if (element.nextSibling) {\n element.parentNode.insertBefore(wrapper, element.nextSibling);\n } else {\n element.parentNode.appendChild(wrapper);\n }\n }\n return wrapper.appendChild(element);\n};\nexports.wrap = wrap;\nvar getAdjacentEl = function (startEl, selector, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n var prop = \"\".concat(direction > 0 ? 'next' : 'previous', \"ElementSibling\");\n var sibling = startEl[prop];\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n sibling = sibling[prop];\n }\n return sibling;\n};\nexports.getAdjacentEl = getAdjacentEl;\nvar isScrolledIntoView = function (element, parent, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n if (!element) {\n return false;\n }\n var isVisible;\n if (direction > 0) {\n // In view from bottom\n isVisible = parent.scrollTop + parent.offsetHeight >= element.offsetTop + element.offsetHeight;\n } else {\n // In view from top\n isVisible = element.offsetTop >= parent.scrollTop;\n }\n return isVisible;\n};\nexports.isScrolledIntoView = isScrolledIntoView;\nvar sanitise = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n return value.replace(/&/g, '&').replace(/>/g, '>').replace(/ -1) {\n return state.map(function (obj) {\n var choice = obj;\n if (choice.id === parseInt(\"\".concat(addItemAction_1.choiceId), 10)) {\n choice.selected = true;\n }\n return choice;\n });\n }\n return state;\n }\n case 'REMOVE_ITEM':\n {\n var removeItemAction_1 = action;\n // When an item is removed and it has an associated choice,\n // we want to re-enable it so it can be chosen again\n if (removeItemAction_1.choiceId && removeItemAction_1.choiceId > -1) {\n return state.map(function (obj) {\n var choice = obj;\n if (choice.id === parseInt(\"\".concat(removeItemAction_1.choiceId), 10)) {\n choice.selected = false;\n }\n return choice;\n });\n }\n return state;\n }\n case 'FILTER_CHOICES':\n {\n var filterChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n // Set active state based on whether choice is\n // within filtered results\n choice.active = filterChoicesAction_1.results.some(function (_a) {\n var item = _a.item,\n score = _a.score;\n if (item.id === choice.id) {\n choice.score = score;\n return true;\n }\n return false;\n });\n return choice;\n });\n }\n case 'ACTIVATE_CHOICES':\n {\n var activateChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n choice.active = activateChoicesAction_1.active;\n return choice;\n });\n }\n case 'CLEAR_CHOICES':\n {\n return exports.defaultState;\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = choices;\n\n/***/ }),\n\n/***/ 871:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction groups(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_GROUP':\n {\n var addGroupAction = action;\n return __spreadArray(__spreadArray([], state, true), [{\n id: addGroupAction.id,\n value: addGroupAction.value,\n active: addGroupAction.active,\n disabled: addGroupAction.disabled\n }], false);\n }\n case 'CLEAR_CHOICES':\n {\n return [];\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = groups;\n\n/***/ }),\n\n/***/ 655:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nvar redux_1 = __webpack_require__(791);\nvar items_1 = __importDefault(__webpack_require__(52));\nvar groups_1 = __importDefault(__webpack_require__(871));\nvar choices_1 = __importDefault(__webpack_require__(273));\nvar loading_1 = __importDefault(__webpack_require__(502));\nvar utils_1 = __webpack_require__(799);\nexports.defaultState = {\n groups: [],\n items: [],\n choices: [],\n loading: false\n};\nvar appReducer = (0, redux_1.combineReducers)({\n items: items_1.default,\n groups: groups_1.default,\n choices: choices_1.default,\n loading: loading_1.default\n});\nvar rootReducer = function (passedState, action) {\n var state = passedState;\n // If we are clearing all items, groups and options we reassign\n // state and then pass that state to our proper reducer. This isn't\n // mutating our actual state\n // See: http://stackoverflow.com/a/35641992\n if (action.type === 'CLEAR_ALL') {\n state = exports.defaultState;\n } else if (action.type === 'RESET_TO') {\n return (0, utils_1.cloneObject)(action.state);\n }\n return appReducer(state, action);\n};\nexports[\"default\"] = rootReducer;\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction items(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_ITEM':\n {\n var addItemAction = action;\n // Add object to items array\n var newState = __spreadArray(__spreadArray([], state, true), [{\n id: addItemAction.id,\n choiceId: addItemAction.choiceId,\n groupId: addItemAction.groupId,\n value: addItemAction.value,\n label: addItemAction.label,\n active: true,\n highlighted: false,\n customProperties: addItemAction.customProperties,\n placeholder: addItemAction.placeholder || false,\n keyCode: null\n }], false);\n return newState.map(function (obj) {\n var item = obj;\n item.highlighted = false;\n return item;\n });\n }\n case 'REMOVE_ITEM':\n {\n // Set item to inactive\n return state.map(function (obj) {\n var item = obj;\n if (item.id === action.id) {\n item.active = false;\n }\n return item;\n });\n }\n case 'HIGHLIGHT_ITEM':\n {\n var highlightItemAction_1 = action;\n return state.map(function (obj) {\n var item = obj;\n if (item.id === highlightItemAction_1.id) {\n item.highlighted = highlightItemAction_1.highlighted;\n }\n return item;\n });\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = items;\n\n/***/ }),\n\n/***/ 502:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = false;\nvar general = function (state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'SET_IS_LOADING':\n {\n return action.isLoading;\n }\n default:\n {\n return state;\n }\n }\n};\nexports[\"default\"] = general;\n\n/***/ }),\n\n/***/ 744:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar redux_1 = __webpack_require__(791);\nvar index_1 = __importDefault(__webpack_require__(655));\nvar Store = /** @class */function () {\n function Store() {\n this._store = (0, redux_1.createStore)(index_1.default, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n }\n /**\n * Subscribe store to function call (wrapped Redux method)\n */\n Store.prototype.subscribe = function (onChange) {\n this._store.subscribe(onChange);\n };\n /**\n * Dispatch event to store (wrapped Redux method)\n */\n Store.prototype.dispatch = function (action) {\n this._store.dispatch(action);\n };\n Object.defineProperty(Store.prototype, \"state\", {\n /**\n * Get store object (wrapping Redux method)\n */\n get: function () {\n return this._store.getState();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"items\", {\n /**\n * Get items from store\n */\n get: function () {\n return this.state.items;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeItems\", {\n /**\n * Get active items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"highlightedActiveItems\", {\n /**\n * Get highlighted items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active && item.highlighted;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"choices\", {\n /**\n * Get choices from store\n */\n get: function () {\n return this.state.choices;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeChoices\", {\n /**\n * Get active choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"selectableChoices\", {\n /**\n * Get selectable choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.disabled !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"searchableChoices\", {\n /**\n * Get choices that can be searched (excluding placeholders)\n */\n get: function () {\n return this.selectableChoices.filter(function (choice) {\n return choice.placeholder !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"placeholderChoice\", {\n /**\n * Get placeholder choice from store\n */\n get: function () {\n return __spreadArray([], this.choices, true).reverse().find(function (choice) {\n return choice.placeholder === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"groups\", {\n /**\n * Get groups from store\n */\n get: function () {\n return this.state.groups;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeGroups\", {\n /**\n * Get active groups from store\n */\n get: function () {\n var _a = this,\n groups = _a.groups,\n choices = _a.choices;\n return groups.filter(function (group) {\n var isActive = group.active === true && group.disabled === false;\n var hasActiveOptions = choices.some(function (choice) {\n return choice.active === true && choice.disabled === false;\n });\n return isActive && hasActiveOptions;\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Get loading state from store\n */\n Store.prototype.isLoading = function () {\n return this.state.loading;\n };\n /**\n * Get single choice by it's ID\n */\n Store.prototype.getChoiceById = function (id) {\n return this.activeChoices.find(function (choice) {\n return choice.id === parseInt(id, 10);\n });\n };\n /**\n * Get group by group id\n */\n Store.prototype.getGroupById = function (id) {\n return this.groups.find(function (group) {\n return group.id === id;\n });\n };\n return Store;\n}();\nexports[\"default\"] = Store;\n\n/***/ }),\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/**\n * Helpers to create HTML elements used by Choices\n * Can be overridden by providing `callbackOnCreateTemplates` option\n */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar templates = {\n containerOuter: function (_a, dir, isSelectElement, isSelectOneElement, searchEnabled, passedElementType, labelId) {\n var containerOuter = _a.classNames.containerOuter;\n var div = Object.assign(document.createElement('div'), {\n className: containerOuter\n });\n div.dataset.type = passedElementType;\n if (dir) {\n div.dir = dir;\n }\n if (isSelectOneElement) {\n div.tabIndex = 0;\n }\n if (isSelectElement) {\n div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n if (searchEnabled) {\n div.setAttribute('aria-autocomplete', 'list');\n }\n }\n div.setAttribute('aria-haspopup', 'true');\n div.setAttribute('aria-expanded', 'false');\n if (labelId) {\n div.setAttribute('aria-labelledby', labelId);\n }\n return div;\n },\n containerInner: function (_a) {\n var containerInner = _a.classNames.containerInner;\n return Object.assign(document.createElement('div'), {\n className: containerInner\n });\n },\n itemList: function (_a, isSelectOneElement) {\n var _b = _a.classNames,\n list = _b.list,\n listSingle = _b.listSingle,\n listItems = _b.listItems;\n return Object.assign(document.createElement('div'), {\n className: \"\".concat(list, \" \").concat(isSelectOneElement ? listSingle : listItems)\n });\n },\n placeholder: function (_a, value) {\n var _b;\n var allowHTML = _a.allowHTML,\n placeholder = _a.classNames.placeholder;\n return Object.assign(document.createElement('div'), (_b = {\n className: placeholder\n }, _b[allowHTML ? 'innerHTML' : 'innerText'] = value, _b));\n },\n item: function (_a, _b, removeItemButton) {\n var _c, _d;\n var allowHTML = _a.allowHTML,\n _e = _a.classNames,\n item = _e.item,\n button = _e.button,\n highlightedState = _e.highlightedState,\n itemSelectable = _e.itemSelectable,\n placeholder = _e.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n customProperties = _b.customProperties,\n active = _b.active,\n disabled = _b.disabled,\n highlighted = _b.highlighted,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n className: item\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c));\n Object.assign(div.dataset, {\n item: '',\n id: id,\n value: value,\n customProperties: customProperties\n });\n if (active) {\n div.setAttribute('aria-selected', 'true');\n }\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n div.classList.add(highlighted ? highlightedState : itemSelectable);\n if (removeItemButton) {\n if (disabled) {\n div.classList.remove(itemSelectable);\n }\n div.dataset.deletable = '';\n /** @todo This MUST be localizable, not hardcoded! */\n var REMOVE_ITEM_TEXT = 'Remove item';\n var removeButton = Object.assign(document.createElement('button'), (_d = {\n type: 'button',\n className: button\n }, _d[allowHTML ? 'innerHTML' : 'innerText'] = REMOVE_ITEM_TEXT, _d));\n removeButton.setAttribute('aria-label', \"\".concat(REMOVE_ITEM_TEXT, \": '\").concat(value, \"'\"));\n removeButton.dataset.button = '';\n div.appendChild(removeButton);\n }\n return div;\n },\n choiceList: function (_a, isSelectOneElement) {\n var list = _a.classNames.list;\n var div = Object.assign(document.createElement('div'), {\n className: list\n });\n if (!isSelectOneElement) {\n div.setAttribute('aria-multiselectable', 'true');\n }\n div.setAttribute('role', 'listbox');\n return div;\n },\n choiceGroup: function (_a, _b) {\n var _c;\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n group = _d.group,\n groupHeading = _d.groupHeading,\n itemDisabled = _d.itemDisabled;\n var id = _b.id,\n value = _b.value,\n disabled = _b.disabled;\n var div = Object.assign(document.createElement('div'), {\n className: \"\".concat(group, \" \").concat(disabled ? itemDisabled : '')\n });\n div.setAttribute('role', 'group');\n Object.assign(div.dataset, {\n group: '',\n id: id,\n value: value\n });\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n div.appendChild(Object.assign(document.createElement('div'), (_c = {\n className: groupHeading\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = value, _c)));\n return div;\n },\n choice: function (_a, _b, selectText) {\n var _c;\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n item = _d.item,\n itemChoice = _d.itemChoice,\n itemSelectable = _d.itemSelectable,\n selectedState = _d.selectedState,\n itemDisabled = _d.itemDisabled,\n placeholder = _d.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n groupId = _b.groupId,\n elementId = _b.elementId,\n isDisabled = _b.disabled,\n isSelected = _b.selected,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n id: elementId\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c.className = \"\".concat(item, \" \").concat(itemChoice), _c));\n if (isSelected) {\n div.classList.add(selectedState);\n }\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n div.setAttribute('role', groupId && groupId > 0 ? 'treeitem' : 'option');\n Object.assign(div.dataset, {\n choice: '',\n id: id,\n value: value,\n selectText: selectText\n });\n if (isDisabled) {\n div.classList.add(itemDisabled);\n div.dataset.choiceDisabled = '';\n div.setAttribute('aria-disabled', 'true');\n } else {\n div.classList.add(itemSelectable);\n div.dataset.choiceSelectable = '';\n }\n return div;\n },\n input: function (_a, placeholderValue) {\n var _b = _a.classNames,\n input = _b.input,\n inputCloned = _b.inputCloned;\n var inp = Object.assign(document.createElement('input'), {\n type: 'search',\n name: 'search_terms',\n className: \"\".concat(input, \" \").concat(inputCloned),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: false\n });\n inp.setAttribute('role', 'textbox');\n inp.setAttribute('aria-autocomplete', 'list');\n inp.setAttribute('aria-label', placeholderValue);\n return inp;\n },\n dropdown: function (_a) {\n var _b = _a.classNames,\n list = _b.list,\n listDropdown = _b.listDropdown;\n var div = document.createElement('div');\n div.classList.add(list, listDropdown);\n div.setAttribute('aria-expanded', 'false');\n return div;\n },\n notice: function (_a, innerText, type) {\n var _b;\n var allowHTML = _a.allowHTML,\n _c = _a.classNames,\n item = _c.item,\n itemChoice = _c.itemChoice,\n noResults = _c.noResults,\n noChoices = _c.noChoices;\n if (type === void 0) {\n type = '';\n }\n var classes = [item, itemChoice];\n if (type === 'no-choices') {\n classes.push(noChoices);\n } else if (type === 'no-results') {\n classes.push(noResults);\n }\n return Object.assign(document.createElement('div'), (_b = {}, _b[allowHTML ? 'innerHTML' : 'innerText'] = innerText, _b.className = classes.join(' '), _b));\n },\n option: function (_a) {\n var label = _a.label,\n value = _a.value,\n customProperties = _a.customProperties,\n active = _a.active,\n disabled = _a.disabled;\n var opt = new Option(label, value, false, active);\n if (customProperties) {\n opt.dataset.customProperties = \"\".concat(customProperties);\n }\n opt.disabled = !!disabled;\n return opt;\n }\n};\nexports[\"default\"] = templates;\n\n/***/ }),\n\n/***/ 996:\n/***/ (function(module) {\n\n\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n/***/ }),\n\n/***/ 221:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Fuse; }\n/* harmony export */ });\n/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n totalWeight += obj.weight;\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// \u2757Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {}\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\n\n\n\n/***/ }),\n\n/***/ 791:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"__DO_NOT_USE__ActionTypes\": function() { return /* binding */ ActionTypes; },\n \"applyMiddleware\": function() { return /* binding */ applyMiddleware; },\n \"bindActionCreators\": function() { return /* binding */ bindActionCreators; },\n \"combineReducers\": function() { return /* binding */ combineReducers; },\n \"compose\": function() { return /* binding */ compose; },\n \"createStore\": function() { return /* binding */ createStore; },\n \"legacy_createStore\": function() { return /* binding */ legacy_createStore; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\n\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\n;// CONCATENATED MODULE: ./node_modules/redux/es/redux.js\n\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (false) {}\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error( true ? formatProdErrorMessage(0) : 0);\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(1) : 0);\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(2) : 0);\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(3) : 0);\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error( true ? formatProdErrorMessage(4) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(5) : 0);\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(6) : 0);\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing \u201Cwhat changed\u201D. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error( true ? formatProdErrorMessage(7) : 0);\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(8) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(9) : 0);\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(10) : 0);\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error( true ? formatProdErrorMessage(11) : 0);\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(12) : 0);\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(13) : 0);\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (false) {}\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (false) {}\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (false) { var warningMessage; }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error( true ? formatProdErrorMessage(14) : 0);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error( true ? formatProdErrorMessage(16) : 0);\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error( true ? formatProdErrorMessage(15) : 0);\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2(_objectSpread2({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (false) {}\n\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(373);\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_scripts_choices__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _scripts_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(883);\n/* harmony import */ var _scripts_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(789);\n/* harmony import */ var _scripts_templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(686);\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default()));\n\n}();\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});", "/*!\n * Chartkick.js\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * v4.2.0\n * MIT License\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chartkick = factory());\n})(this, (function () { 'use strict';\n\n function isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n }\n\n function isFunction(variable) {\n return variable instanceof Function;\n }\n\n function isPlainObject(variable) {\n // protect against prototype pollution, defense 2\n return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n }\n\n // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n function extend(target, source) {\n var key;\n for (key in source) {\n // protect against prototype pollution, defense 1\n if (key === \"__proto__\") { continue; }\n\n if (isPlainObject(source[key]) || isArray(source[key])) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n extend(target[key], source[key]);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n }\n\n function merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n }\n\n var DATE_PATTERN = /^(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)$/i;\n\n function negativeValues(series) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = series[i].data;\n for (j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n return false;\n }\n\n function toStr(n) {\n return \"\" + n;\n }\n\n function toFloat(n) {\n return parseFloat(n);\n }\n\n function toDate(n) {\n var matches, year, month, day;\n if (typeof n !== \"object\") {\n if (typeof n === \"number\") {\n n = new Date(n * 1000); // ms\n } else {\n n = toStr(n);\n if ((matches = n.match(DATE_PATTERN))) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n return new Date(year, month, day);\n } else {\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n // Date.parse returns milliseconds if valid and NaN if invalid\n n = new Date(Date.parse(str) || n);\n }\n }\n }\n return n;\n }\n\n function toArr(n) {\n if (!isArray(n)) {\n var arr = [], i;\n for (i in n) {\n if (n.hasOwnProperty(i)) {\n arr.push([i, n[i]]);\n }\n }\n n = arr;\n }\n return n;\n }\n\n function jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n return function (chart, opts, chartOptions) {\n var series = chart.data;\n var options = merge({}, defaultOptions);\n options = merge(options, chartOptions || {});\n\n if (chart.singleSeriesFormat || \"legend\" in opts) {\n hideLegend(options, opts.legend, chart.singleSeriesFormat);\n }\n\n if (opts.title) {\n setTitle(options, opts.title);\n }\n\n // min\n if (\"min\" in opts) {\n setMin(options, opts.min);\n } else if (!negativeValues(series)) {\n setMin(options, 0);\n }\n\n // max\n if (opts.max) {\n setMax(options, opts.max);\n }\n\n if (\"stacked\" in opts) {\n setStacked(options, opts.stacked);\n }\n\n if (opts.colors) {\n options.colors = opts.colors;\n }\n\n if (opts.xtitle) {\n setXtitle(options, opts.xtitle);\n }\n\n if (opts.ytitle) {\n setYtitle(options, opts.ytitle);\n }\n\n // merge library last\n options = merge(options, opts.library || {});\n\n return options;\n };\n }\n\n function sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n }\n\n function sortByNumberSeries(a, b) {\n return a[0] - b[0];\n }\n\n function sortByNumber(a, b) {\n return a - b;\n }\n\n function isMinute(d) {\n return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n }\n\n function isHour(d) {\n return isMinute(d) && d.getMinutes() === 0;\n }\n\n function isDay(d) {\n return isHour(d) && d.getHours() === 0;\n }\n\n function isWeek(d, dayOfWeek) {\n return isDay(d) && d.getDay() === dayOfWeek;\n }\n\n function isMonth(d) {\n return isDay(d) && d.getDate() === 1;\n }\n\n function isYear(d) {\n return isMonth(d) && d.getMonth() === 0;\n }\n\n function isDate(obj) {\n return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n }\n\n function isNumber(obj) {\n return typeof obj === \"number\";\n }\n\n var byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\n function formatValue(pre, value, options, axis) {\n pre = pre || \"\";\n if (options.prefix) {\n if (value < 0) {\n value = value * -1;\n pre += \"-\";\n }\n pre += options.prefix;\n }\n\n var suffix = options.suffix || \"\";\n var precision = options.precision;\n var round = options.round;\n\n if (options.byteScale) {\n var suffixIdx;\n var baseValue = axis ? options.byteScale : value;\n\n if (baseValue >= 1152921504606846976) {\n value /= 1152921504606846976;\n suffixIdx = 6;\n } else if (baseValue >= 1125899906842624) {\n value /= 1125899906842624;\n suffixIdx = 5;\n } else if (baseValue >= 1099511627776) {\n value /= 1099511627776;\n suffixIdx = 4;\n } else if (baseValue >= 1073741824) {\n value /= 1073741824;\n suffixIdx = 3;\n } else if (baseValue >= 1048576) {\n value /= 1048576;\n suffixIdx = 2;\n } else if (baseValue >= 1024) {\n value /= 1024;\n suffixIdx = 1;\n } else {\n suffixIdx = 0;\n }\n\n // TODO handle manual precision case\n if (precision === undefined && round === undefined) {\n if (value >= 1023.5) {\n if (suffixIdx < byteSuffixes.length - 1) {\n value = 1.0;\n suffixIdx += 1;\n }\n }\n precision = value >= 1000 ? 4 : 3;\n }\n suffix = \" \" + byteSuffixes[suffixIdx];\n }\n\n if (precision !== undefined && round !== undefined) {\n throw Error(\"Use either round or precision, not both\");\n }\n\n if (!axis) {\n if (precision !== undefined) {\n value = value.toPrecision(precision);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n\n if (round !== undefined) {\n if (round < 0) {\n var num = Math.pow(10, -1 * round);\n value = parseInt((1.0 * value / num).toFixed(0)) * num;\n } else {\n value = value.toFixed(round);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n }\n }\n\n if (options.thousands || options.decimal) {\n value = toStr(value);\n var parts = value.split(\".\");\n value = parts[0];\n if (options.thousands) {\n value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n }\n if (parts.length > 1) {\n value += (options.decimal || \".\") + parts[1];\n }\n }\n\n return pre + value + suffix;\n }\n\n function seriesOption(chart, series, option) {\n if (option in series) {\n return series[option];\n } else if (option in chart.options) {\n return chart.options[option];\n }\n return null;\n }\n\n function allZeros(data) {\n var i, j, d;\n for (i = 0; i < data.length; i++) {\n d = data[i].data;\n for (j = 0; j < d.length; j++) {\n if (d[j][1] != 0) {\n return false;\n }\n }\n }\n return true;\n }\n\n var baseOptions = {\n maintainAspectRatio: false,\n animation: false,\n plugins: {\n legend: {},\n tooltip: {\n displayColors: false,\n callbacks: {}\n },\n title: {\n font: {\n size: 20\n },\n color: \"#333\"\n }\n },\n interaction: {}\n };\n\n var defaultOptions$2 = {\n scales: {\n y: {\n ticks: {\n maxTicksLimit: 4\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n grid: {}\n },\n x: {\n grid: {\n drawOnChartArea: false\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n time: {},\n ticks: {}\n }\n }\n };\n\n // http://there4.io/2012/05/02/google-chart-color-list/\n var defaultColors = [\n \"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\",\n \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\",\n \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"\n ];\n\n var hideLegend$2 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.plugins.legend.display = !!legend;\n if (legend && legend !== true) {\n options.plugins.legend.position = legend;\n }\n } else if (hideLegend) {\n options.plugins.legend.display = false;\n }\n };\n\n var setTitle$2 = function (options, title) {\n options.plugins.title.display = true;\n options.plugins.title.text = title;\n };\n\n var setMin$2 = function (options, min) {\n if (min !== null) {\n options.scales.y.min = toFloat(min);\n }\n };\n\n var setMax$2 = function (options, max) {\n options.scales.y.max = toFloat(max);\n };\n\n var setBarMin$1 = function (options, min) {\n if (min !== null) {\n options.scales.x.min = toFloat(min);\n }\n };\n\n var setBarMax$1 = function (options, max) {\n options.scales.x.max = toFloat(max);\n };\n\n var setStacked$2 = function (options, stacked) {\n options.scales.x.stacked = !!stacked;\n options.scales.y.stacked = !!stacked;\n };\n\n var setXtitle$2 = function (options, title) {\n options.scales.x.title.display = true;\n options.scales.x.title.text = title;\n };\n\n var setYtitle$2 = function (options, title) {\n options.scales.y.title.display = true;\n options.scales.y.title.text = title;\n };\n\n // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n var addOpacity = function (hex, opacity) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n };\n\n // check if not null or undefined\n // https://stackoverflow.com/a/27757708/1177228\n var notnull = function (x) {\n return x != null;\n };\n\n var setLabelSize = function (chart, data, options) {\n var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n if (maxLabelSize > 25) {\n maxLabelSize = 25;\n } else if (maxLabelSize < 10) {\n maxLabelSize = 10;\n }\n if (!options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n value = toStr(this.getLabelForValue(value));\n if (value.length > maxLabelSize) {\n return value.substring(0, maxLabelSize - 2) + \"...\";\n } else {\n return value;\n }\n };\n }\n };\n\n var setFormatOptions$1 = function (chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n if (chart.options.bytes) {\n var series = chart.data;\n if (chartType === \"pie\") {\n series = [{data: series}];\n }\n\n // calculate max\n var max = 0;\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n for (var j = 0; j < s.data.length; j++) {\n if (s.data[j][1] > max) {\n max = s.data[j][1];\n }\n }\n }\n\n // calculate scale\n var scale = 1;\n while (max >= 1024) {\n scale *= 1024;\n max /= 1024;\n }\n\n // set step size\n formatOptions.byteScale = scale;\n }\n\n if (chartType !== \"pie\") {\n var axis = options.scales.y;\n if (chartType === \"bar\") {\n axis = options.scales.x;\n }\n\n if (formatOptions.byteScale) {\n if (!axis.ticks.stepSize) {\n axis.ticks.stepSize = formatOptions.byteScale / 2;\n }\n if (!axis.ticks.maxTicksLimit) {\n axis.ticks.maxTicksLimit = 4;\n }\n }\n\n if (!axis.ticks.callback) {\n axis.ticks.callback = function (value) {\n return formatValue(\"\", value, formatOptions, true);\n };\n }\n }\n\n if (!options.plugins.tooltip.callbacks.label) {\n if (chartType === \"scatter\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return label + '(' + context.label + ', ' + context.formattedValue + ')';\n };\n } else if (chartType === \"bubble\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n var dataPoint = context.raw;\n return label + '(' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.v + ')';\n };\n } else if (chartType === \"pie\") {\n // need to use separate label for pie charts\n options.plugins.tooltip.callbacks.label = function (context) {\n var dataLabel = context.label;\n var value = ': ';\n\n if (isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n\n return formatValue(dataLabel, context.parsed, formatOptions);\n };\n } else {\n var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n options.plugins.tooltip.callbacks.label = function (context) {\n // don't show null values for stacked charts\n if (context.parsed[valueLabel] === null) {\n return;\n }\n\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return formatValue(label, context.parsed[valueLabel], formatOptions);\n };\n }\n }\n };\n\n var jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\n var createDataTable = function (chart, options, chartType) {\n var datasets = [];\n var labels = [];\n\n var colors = chart.options.colors || defaultColors;\n\n var day = true;\n var week = true;\n var dayOfWeek;\n var month = true;\n var year = true;\n var hour = true;\n var minute = true;\n\n var series = chart.data;\n\n var max = 0;\n if (chartType === \"bubble\") {\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n var s$1 = series[i$1];\n for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {\n if (s$1.data[j$1][2] > max) {\n max = s$1.data[j$1][2];\n }\n }\n }\n }\n\n var i, j, s, d, key, rows = [], rows2 = [];\n\n if (chartType === \"bar\" || chartType === \"column\" || (chart.xtype !== \"number\" && chart.xtype !== \"bubble\")) {\n var sortedLabels = [];\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = chart.xtype == \"datetime\" ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n }\n rows[key][i] = toFloat(d[1]);\n if (sortedLabels.indexOf(key) === -1) {\n sortedLabels.push(key);\n }\n }\n }\n\n if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n sortedLabels.sort(sortByNumber);\n }\n\n for (j = 0; j < series.length; j++) {\n rows2.push([]);\n }\n\n var value;\n var k;\n for (k = 0; k < sortedLabels.length; k++) {\n i = sortedLabels[k];\n if (chart.xtype === \"datetime\") {\n value = new Date(toFloat(i));\n // TODO make this efficient\n day = day && isDay(value);\n if (!dayOfWeek) {\n dayOfWeek = value.getDay();\n }\n week = week && isWeek(value, dayOfWeek);\n month = month && isMonth(value);\n year = year && isYear(value);\n hour = hour && isHour(value);\n minute = minute && isMinute(value);\n } else {\n value = i;\n }\n labels.push(value);\n for (j = 0; j < series.length; j++) {\n // Chart.js doesn't like undefined\n rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);\n }\n }\n } else {\n for (var i$2 = 0; i$2 < series.length; i$2++) {\n var s$2 = series[i$2];\n var d$1 = [];\n for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {\n var point = {\n x: toFloat(s$2.data[j$2][0]),\n y: toFloat(s$2.data[j$2][1])\n };\n if (chartType === \"bubble\") {\n point.r = toFloat(s$2.data[j$2][2]) * 20 / max;\n // custom attribute, for tooltip\n point.v = s$2.data[j$2][2];\n }\n d$1.push(point);\n }\n rows2.push(d$1);\n }\n }\n\n var color;\n var backgroundColor;\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n // use colors for each bar for single series format\n if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n color = colors;\n backgroundColor = [];\n for (var j$3 = 0; j$3 < colors.length; j$3++) {\n backgroundColor[j$3] = addOpacity(color[j$3], 0.5);\n }\n } else {\n color = s.color || colors[i];\n backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n }\n\n var dataset = {\n label: s.name || \"\",\n data: rows2[i],\n fill: chartType === \"area\",\n borderColor: color,\n backgroundColor: backgroundColor,\n borderWidth: 2\n };\n\n var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n if (pointChart) {\n dataset.pointBackgroundColor = color;\n dataset.pointHoverBackgroundColor = color;\n dataset.pointHitRadius = 50;\n }\n\n if (chartType === \"bubble\") {\n dataset.pointBackgroundColor = backgroundColor;\n dataset.pointHoverBackgroundColor = backgroundColor;\n dataset.pointHoverBorderWidth = 2;\n }\n\n if (s.stack) {\n dataset.stack = s.stack;\n }\n\n var curve = seriesOption(chart, s, \"curve\");\n if (curve === false) {\n dataset.tension = 0;\n } else if (pointChart) {\n dataset.tension = 0.4;\n }\n\n var points = seriesOption(chart, s, \"points\");\n if (points === false) {\n dataset.pointRadius = 0;\n dataset.pointHoverRadius = 0;\n }\n\n dataset = merge(dataset, chart.options.dataset || {});\n dataset = merge(dataset, s.library || {});\n dataset = merge(dataset, s.dataset || {});\n\n datasets.push(dataset);\n }\n\n var xmin = chart.options.xmin;\n var xmax = chart.options.xmax;\n\n if (chart.xtype === \"datetime\") {\n if (notnull(xmin)) {\n options.scales.x.min = toDate(xmin).getTime();\n }\n if (notnull(xmax)) {\n options.scales.x.max = toDate(xmax).getTime();\n }\n } else if (chart.xtype === \"number\") {\n if (notnull(xmin)) {\n options.scales.x.min = xmin;\n }\n if (notnull(xmax)) {\n options.scales.x.max = xmax;\n }\n }\n\n // for empty datetime chart\n if (chart.xtype === \"datetime\" && labels.length === 0) {\n if (notnull(xmin)) {\n labels.push(toDate(xmin));\n }\n if (notnull(xmax)) {\n labels.push(toDate(xmax));\n }\n day = false;\n week = false;\n month = false;\n year = false;\n hour = false;\n minute = false;\n }\n\n if (chart.xtype === \"datetime\" && labels.length > 0) {\n var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n for (i = 1; i < labels.length; i++) {\n var value$1 = labels[i].getTime();\n if (value$1 < minTime) {\n minTime = value$1;\n }\n if (value$1 > maxTime) {\n maxTime = value$1;\n }\n }\n\n var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n if (!options.scales.x.time.unit) {\n var step;\n if (year || timeDiff > 365 * 10) {\n options.scales.x.time.unit = \"year\";\n step = 365;\n } else if (month || timeDiff > 30 * 10) {\n options.scales.x.time.unit = \"month\";\n step = 30;\n } else if (day || timeDiff > 10) {\n options.scales.x.time.unit = \"day\";\n step = 1;\n } else if (hour || timeDiff > 0.5) {\n options.scales.x.time.displayFormats = {hour: \"MMM d, h a\"};\n options.scales.x.time.unit = \"hour\";\n step = 1 / 24.0;\n } else if (minute) {\n options.scales.x.time.displayFormats = {minute: \"h:mm a\"};\n options.scales.x.time.unit = \"minute\";\n step = 1 / 24.0 / 60.0;\n }\n\n if (step && timeDiff > 0) {\n // width not available for hidden elements\n var width = chart.element.offsetWidth;\n if (width > 0) {\n var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n if (week && step === 1) {\n unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n }\n options.scales.x.time.stepSize = unitStepSize;\n }\n }\n }\n\n if (!options.scales.x.time.tooltipFormat) {\n if (day) {\n options.scales.x.time.tooltipFormat = \"PP\";\n } else if (hour) {\n options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n } else if (minute) {\n options.scales.x.time.tooltipFormat = \"h:mm a\";\n }\n }\n }\n\n var data = {\n labels: labels,\n datasets: datasets\n };\n\n return data;\n };\n\n var defaultExport$2 = function defaultExport(library) {\n this.name = \"chartjs\";\n this.library = library;\n };\n\n defaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n var chartOptions = {};\n // fix for https://github.com/chartjs/Chart.js/issues/2441\n if (!chart.options.max && allZeros(chart.data)) {\n chartOptions.max = 1;\n }\n\n var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n setFormatOptions$1(chart, options, chartType);\n\n var data = createDataTable(chart, options, chartType || \"line\");\n\n if (chart.xtype === \"number\") {\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position ||\"bottom\";\n } else {\n options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n }\n\n this.drawChart(chart, \"line\", data, options);\n };\n\n defaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {\n var options = merge({}, baseOptions);\n if (chart.options.donut) {\n options.cutout = \"50%\";\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$2(options, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$2(options, chart.options.title);\n }\n\n options = merge(options, chart.options.library || {});\n setFormatOptions$1(chart, options, \"pie\");\n\n var labels = [];\n var values = [];\n for (var i = 0; i < chart.data.length; i++) {\n var point = chart.data[i];\n labels.push(point[0]);\n values.push(point[1]);\n }\n\n var dataset = {\n data: values,\n backgroundColor: chart.options.colors || defaultColors\n };\n dataset = merge(dataset, chart.options.dataset || {});\n\n var data = {\n labels: labels,\n datasets: [dataset]\n };\n\n this.drawChart(chart, \"pie\", data, options);\n };\n\n defaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n var options;\n if (chartType === \"bar\") {\n var barOptions = merge(baseOptions, defaultOptions$2);\n barOptions.indexAxis = \"y\";\n\n // ensure gridlines have proper orientation\n barOptions.scales.x.grid.drawOnChartArea = true;\n barOptions.scales.y.grid.drawOnChartArea = false;\n delete barOptions.scales.y.ticks.maxTicksLimit;\n\n options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n } else {\n options = jsOptions$2(chart, chart.options);\n }\n setFormatOptions$1(chart, options, chartType);\n var data = createDataTable(chart, options, \"column\");\n if (chartType !== \"bar\") {\n setLabelSize(chart, data, options);\n }\n this.drawChart(chart, \"bar\", data, options);\n };\n\n defaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"area\");\n };\n\n defaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {\n chartType = chartType || \"scatter\";\n\n var options = jsOptions$2(chart, chart.options);\n setFormatOptions$1(chart, options, chartType);\n\n if (!(\"showLine\" in options)) {\n options.showLine = false;\n }\n\n var data = createDataTable(chart, options, chartType);\n\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position || \"bottom\";\n\n // prevent grouping hover and tooltips\n if (!(\"mode\" in options.interaction)) {\n options.interaction.mode = \"nearest\";\n }\n\n this.drawChart(chart, chartType, data, options);\n };\n\n defaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n this.renderScatterChart(chart, \"bubble\");\n };\n\n defaultExport$2.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n var chartOptions = {\n type: type,\n data: data,\n options: options\n };\n\n if (chart.options.code) {\n window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n }\n\n chart.element.innerHTML = \"\";\n var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n chart.chart = new this.library(ctx, chartOptions);\n };\n\n var defaultOptions$1 = {\n chart: {},\n xAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n legend: {\n borderWidth: 0\n },\n tooltip: {\n style: {\n fontSize: \"12px\"\n }\n },\n plotOptions: {\n areaspline: {},\n area: {},\n series: {\n marker: {}\n }\n },\n time: {\n useUTC: false\n }\n };\n\n var hideLegend$1 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.legend.enabled = !!legend;\n if (legend && legend !== true) {\n if (legend === \"top\" || legend === \"bottom\") {\n options.legend.verticalAlign = legend;\n } else {\n options.legend.layout = \"vertical\";\n options.legend.verticalAlign = \"middle\";\n options.legend.align = legend;\n }\n }\n } else if (hideLegend) {\n options.legend.enabled = false;\n }\n };\n\n var setTitle$1 = function (options, title) {\n options.title.text = title;\n };\n\n var setMin$1 = function (options, min) {\n options.yAxis.min = min;\n };\n\n var setMax$1 = function (options, max) {\n options.yAxis.max = max;\n };\n\n var setStacked$1 = function (options, stacked) {\n var stackedValue = stacked ? (stacked === true ? \"normal\" : stacked) : null;\n options.plotOptions.series.stacking = stackedValue;\n options.plotOptions.area.stacking = stackedValue;\n options.plotOptions.areaspline.stacking = stackedValue;\n };\n\n var setXtitle$1 = function (options, title) {\n options.xAxis.title.text = title;\n };\n\n var setYtitle$1 = function (options, title) {\n options.yAxis.title.text = title;\n };\n\n var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\n var setFormatOptions = function(chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n // skip when axis is an array (like with min/max)\n if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n options.yAxis.labels.formatter = function () {\n return formatValue(\"\", this.value, formatOptions);\n };\n }\n\n if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n options.tooltip.pointFormatter = function () {\n return '\\u25CF ' + formatValue(this.series.name + ': ', this.y, formatOptions) + '
';\n };\n }\n };\n\n var defaultExport$1 = function defaultExport(library) {\n this.name = \"highcharts\";\n this.library = library;\n };\n\n defaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n chartType = chartType || \"spline\";\n var chartOptions = {};\n if (chartType === \"areaspline\") {\n chartOptions = {\n plotOptions: {\n areaspline: {\n stacking: \"normal\"\n },\n area: {\n stacking: \"normal\"\n },\n series: {\n marker: {\n enabled: false\n }\n }\n }\n };\n }\n\n if (chart.options.curve === false) {\n if (chartType === \"areaspline\") {\n chartType = \"area\";\n } else if (chartType === \"spline\") {\n chartType = \"line\";\n }\n }\n\n var options = jsOptions$1(chart, chart.options, chartOptions), data, i, j;\n if (chart.xtype === \"number\") {\n options.xAxis.type = options.xAxis.type || \"linear\";\n } else {\n options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n }\n if (!options.chart.type) {\n options.chart.type = chartType;\n }\n setFormatOptions(chart, options, chartType);\n\n var series = chart.data;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n data = series[i].data;\n if (chart.xtype === \"datetime\") {\n for (j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\n }\n series[i].marker = {symbol: \"circle\"};\n if (chart.options.points === false) {\n series[i].marker.enabled = false;\n }\n }\n\n this.drawChart(chart, series, options);\n };\n\n defaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {\n var options = jsOptions$1(chart, chart.options, {});\n options.chart.type = \"scatter\";\n this.drawChart(chart, chart.data, options);\n };\n\n defaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {\n var chartOptions = merge(defaultOptions$1, {});\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.plotOptions = {pie: {innerSize: \"50%\"}};\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$1(chartOptions, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$1(chartOptions, chart.options.title);\n }\n\n var options = merge(chartOptions, chart.options.library || {});\n setFormatOptions(chart, options, \"pie\");\n var series = [{\n type: \"pie\",\n name: chart.options.label || \"Value\",\n data: chart.data\n }];\n\n this.drawChart(chart, series, options);\n };\n\n defaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n chartType = chartType || \"column\";\n var series = chart.data;\n var options = jsOptions$1(chart, chart.options), i, j, s, d, rows = [], categories = [];\n options.chart.type = chartType;\n setFormatOptions(chart, options, chartType);\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n if (!rows[d[0]]) {\n rows[d[0]] = new Array(series.length);\n categories.push(d[0]);\n }\n rows[d[0]][i] = d[1];\n }\n }\n\n if (chart.xtype === \"number\") {\n categories.sort(sortByNumber);\n }\n\n options.xAxis.categories = categories;\n\n var newSeries = [], d2;\n for (i = 0; i < series.length; i++) {\n d = [];\n for (j = 0; j < categories.length; j++) {\n d.push(rows[categories[j]][i] || 0);\n }\n\n d2 = {\n name: series[i].name || \"Value\",\n data: d\n };\n if (series[i].stack) {\n d2.stack = series[i].stack;\n }\n\n newSeries.push(d2);\n }\n\n this.drawChart(chart, newSeries, options);\n };\n\n defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"areaspline\");\n };\n\n defaultExport$1.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n options.chart.renderTo = chart.element.id;\n options.series = data;\n\n if (chart.options.code) {\n window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.Chart(options);\n };\n\n var loaded = {};\n var callbacks = [];\n\n // Set chart options\n var defaultOptions = {\n chartArea: {},\n fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n pointSize: 6,\n legend: {\n textStyle: {\n fontSize: 12,\n color: \"#444\"\n },\n alignment: \"center\",\n position: \"right\"\n },\n curveType: \"function\",\n hAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n gridlines: {\n color: \"transparent\"\n },\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n vAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n tooltip: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n }\n }\n };\n\n var hideLegend = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n var position;\n if (!legend) {\n position = \"none\";\n } else if (legend === true) {\n position = \"right\";\n } else {\n position = legend;\n }\n options.legend.position = position;\n } else if (hideLegend) {\n options.legend.position = \"none\";\n }\n };\n\n var setTitle = function (options, title) {\n options.title = title;\n options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n };\n\n var setMin = function (options, min) {\n options.vAxis.viewWindow.min = min;\n };\n\n var setMax = function (options, max) {\n options.vAxis.viewWindow.max = max;\n };\n\n var setBarMin = function (options, min) {\n options.hAxis.viewWindow.min = min;\n };\n\n var setBarMax = function (options, max) {\n options.hAxis.viewWindow.max = max;\n };\n\n var setStacked = function (options, stacked) {\n options.isStacked = stacked ? stacked : false;\n };\n\n var setXtitle = function (options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n };\n\n var setYtitle = function (options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n };\n\n var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\n var resize = function (callback) {\n if (window.attachEvent) {\n window.attachEvent(\"onresize\", callback);\n } else if (window.addEventListener) {\n window.addEventListener(\"resize\", callback, true);\n }\n callback();\n };\n\n var defaultExport = function defaultExport(library) {\n this.name = \"google\";\n this.library = library;\n };\n\n defaultExport.prototype.renderLineChart = function renderLineChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n\n if (chart.options.curve === false) {\n chartOptions.curveType = \"none\";\n }\n\n if (chart.options.points === false) {\n chartOptions.pointSize = 0;\n }\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"LineChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderPieChart = function renderPieChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n chartArea: {\n top: \"10%\",\n height: \"80%\"\n },\n legend: {}\n };\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.pieHole = 0.5;\n }\n if (\"legend\" in chart.options) {\n hideLegend(chartOptions, chart.options.legend);\n }\n if (chart.options.title) {\n setTitle(chartOptions, chart.options.title);\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"PieChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var options = jsOptions(chart, chart.options);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderBarChart = function renderBarChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n hAxis: {\n gridlines: {\n color: \"#ccc\"\n }\n }\n };\n var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"BarChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n isStacked: true,\n pointSize: 0,\n areaOpacity: 0.5\n };\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"AreaChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"geochart\", function () {\n var chartOptions = {\n legend: \"none\",\n colorAxis: {\n colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n }\n };\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", chart.options.label || \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"GeoChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n var options = jsOptions(chart, chart.options, chartOptions);\n\n var series = chart.data, rows2 = [], i, j, data, d;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n d = series[i].data;\n for (j = 0; j < d.length; j++) {\n var row = new Array(series.length + 1);\n row[0] = d[j][0];\n row[i + 1] = d[j][1];\n rows2.push(row);\n }\n }\n\n data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"number\", \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n\n this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderTimeline = function renderTimeline (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"timeline\", function () {\n var chartOptions = {\n legend: \"none\"\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn({type: \"string\", id: \"Name\"});\n data.addColumn({type: \"date\", id: \"Start\"});\n data.addColumn({type: \"date\", id: \"End\"});\n data.addRows(chart.data);\n\n chart.element.style.lineHeight = \"normal\";\n\n this$1$1.drawChart(chart, \"Timeline\", data, options);\n });\n };\n\n // TODO remove resize events\n defaultExport.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.clearChart();\n }\n };\n\n defaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n if (chart.options.code) {\n window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.visualization[type](chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n };\n\n defaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {\n var this$1$1 = this;\n\n if (!callback) {\n callback = pack;\n pack = \"corechart\";\n }\n\n callbacks.push({pack: pack, callback: callback});\n\n if (loaded[pack]) {\n this.runCallbacks();\n } else {\n loaded[pack] = true;\n\n // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n var loadOptions = {\n packages: [pack],\n callback: function () { this$1$1.runCallbacks(); }\n };\n var config = chart.__config();\n if (config.language) {\n loadOptions.language = config.language;\n }\n if (pack === \"geochart\" && config.mapsApiKey) {\n loadOptions.mapsApiKey = config.mapsApiKey;\n }\n\n this.library.charts.load(\"current\", loadOptions);\n }\n };\n\n defaultExport.prototype.runCallbacks = function runCallbacks () {\n var cb, call;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n call = this.library.visualization && ((cb.pack === \"corechart\" && this.library.visualization.LineChart) || (cb.pack === \"timeline\" && this.library.visualization.Timeline) || (cb.pack === \"geochart\" && this.library.visualization.GeoChart));\n if (call) {\n cb.callback();\n callbacks.splice(i, 1);\n i--;\n }\n }\n };\n\n // cant use object as key\n defaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n var i, j, s, d, key, rows = [], sortedLabels = [];\n for (i = 0; i < series.length; i++) {\n s = series[i];\n series[i].name = series[i].name || \"Value\";\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = (columnType === \"datetime\") ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n sortedLabels.push(key);\n }\n rows[key][i] = toFloat(d[1]);\n }\n }\n\n var rows2 = [];\n var day = true;\n var value;\n for (j = 0; j < sortedLabels.length; j++) {\n i = sortedLabels[j];\n if (columnType === \"datetime\") {\n value = new Date(toFloat(i));\n day = day && isDay(value);\n } else if (columnType === \"number\") {\n value = toFloat(i);\n } else {\n value = i;\n }\n rows2.push([value].concat(rows[i]));\n }\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n } else if (columnType === \"number\") {\n rows2.sort(sortByNumberSeries);\n\n for (i = 0; i < rows2.length; i++) {\n rows2[i][0] = toStr(rows2[i][0]);\n }\n\n columnType = \"string\";\n }\n\n // create datatable\n var data = new this.library.visualization.DataTable();\n columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n data.addColumn(columnType, \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n\n return data;\n };\n\n function formatSeriesData(data, keyType) {\n var r = [], j, keyFunc;\n\n if (keyType === \"number\") {\n keyFunc = toFloat;\n } else if (keyType === \"datetime\") {\n keyFunc = toDate;\n } else {\n keyFunc = toStr;\n }\n\n if (keyType === \"bubble\") {\n for (j = 0; j < data.length; j++) {\n r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);\n }\n } else {\n for (j = 0; j < data.length; j++) {\n r.push([keyFunc(data[j][0]), toFloat(data[j][1])]);\n }\n }\n\n if (keyType === \"datetime\") {\n r.sort(sortByTime);\n } else if (keyType === \"number\") {\n r.sort(sortByNumberSeries);\n }\n\n return r;\n }\n\n function detectXType(series, noDatetime, options) {\n if (dataEmpty(series)) {\n if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n return \"datetime\";\n } else {\n return \"number\";\n }\n } else if (detectXTypeWithFunction(series, isNumber)) {\n return \"number\";\n } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n return \"datetime\";\n } else {\n return \"string\";\n }\n }\n\n function detectXTypeWithFunction(series, func) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = toArr(series[i].data);\n for (j = 0; j < data.length; j++) {\n if (!func(data[j][0])) {\n return false;\n }\n }\n }\n return true;\n }\n\n // creates a shallow copy of each element of the array\n // elements are expected to be objects\n function copySeries(series) {\n var newSeries = [], i, j;\n for (i = 0; i < series.length; i++) {\n var copy = {};\n for (j in series[i]) {\n if (series[i].hasOwnProperty(j)) {\n copy[j] = series[i][j];\n }\n }\n newSeries.push(copy);\n }\n return newSeries;\n }\n\n function processSeries(chart, keyType, noDatetime) {\n var i;\n\n var opts = chart.options;\n var series = chart.rawData;\n\n // see if one series or multiple\n chart.singleSeriesFormat = (!isArray(series) || typeof series[0] !== \"object\" || isArray(series[0]));\n if (chart.singleSeriesFormat) {\n series = [{name: opts.label, data: series}];\n }\n\n // convert to array\n // must come before dataEmpty check\n series = copySeries(series);\n for (i = 0; i < series.length; i++) {\n series[i].data = toArr(series[i].data);\n }\n\n chart.xtype = keyType ? keyType : (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n // right format\n for (i = 0; i < series.length; i++) {\n series[i].data = formatSeriesData(series[i].data, chart.xtype);\n }\n\n return series;\n }\n\n function processSimple(chart) {\n var perfectData = toArr(chart.rawData), i;\n for (i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n return perfectData;\n }\n\n function dataEmpty(data, chartType) {\n if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n return data.length === 0;\n } else {\n for (var i = 0; i < data.length; i++) {\n if (data[i].data.length > 0) {\n return false;\n }\n }\n return true;\n }\n }\n\n function addDownloadButton(chart) {\n var element = chart.element;\n var link = document.createElement(\"a\");\n\n var download = chart.options.download;\n if (download === true) {\n download = {};\n } else if (typeof download === \"string\") {\n download = {filename: download};\n }\n link.download = download.filename || \"chart.png\"; // https://caniuse.com/download\n\n link.style.position = \"absolute\";\n link.style.top = \"20px\";\n link.style.right = \"20px\";\n link.style.zIndex = 1000;\n link.style.lineHeight = \"20px\";\n link.target = \"_blank\"; // for safari\n var image = document.createElement(\"img\");\n image.alt = \"Download\";\n image.style.border = \"none\";\n // icon from font-awesome\n // http://fa2png.io/\n image.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==\";\n link.appendChild(image);\n element.style.position = \"relative\";\n\n chart.__downloadAttached = true;\n\n // mouseenter\n chart.__enterEvent = addEvent(element, \"mouseover\", function(e) {\n var related = e.relatedTarget;\n // check download option again to ensure it wasn't changed\n if ((!related || (related !== this && !childOf(this, related))) && chart.options.download) {\n link.href = chart.toImage(download);\n element.appendChild(link);\n }\n });\n\n // mouseleave\n chart.__leaveEvent = addEvent(element, \"mouseout\", function(e) {\n var related = e.relatedTarget;\n if (!related || (related !== this && !childOf(this, related))) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n }\n });\n }\n\n // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser\n function addEvent(elem, event, fn) {\n if (elem.addEventListener) {\n elem.addEventListener(event, fn, false);\n return fn;\n } else {\n var fn2 = function() {\n // set the this pointer same as addEventListener when fn is called\n return(fn.call(elem, window.event));\n };\n elem.attachEvent(\"on\" + event, fn2);\n return fn2;\n }\n }\n\n function removeEvent(elem, event, fn) {\n if (elem.removeEventListener) {\n elem.removeEventListener(event, fn, false);\n } else {\n elem.detachEvent(\"on\" + event, fn);\n }\n }\n\n // https://gist.github.com/shawnbot/4166283\n function childOf(p, c) {\n if (p === c) { return false; }\n while (c && c !== p) { c = c.parentNode; }\n return c === p;\n }\n\n var pendingRequests = [], runningRequests = 0, maxRequests = 4;\n\n function pushRequest(url, success, error) {\n pendingRequests.push([url, success, error]);\n runNext();\n }\n\n function runNext() {\n if (runningRequests < maxRequests) {\n var request = pendingRequests.shift();\n if (request) {\n runningRequests++;\n getJSON(request[0], request[1], request[2]);\n runNext();\n }\n }\n }\n\n function requestComplete() {\n runningRequests--;\n runNext();\n }\n\n function getJSON(url, success, error) {\n ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {\n var message = (typeof errorThrown === \"string\") ? errorThrown : errorThrown.message;\n error(message);\n });\n }\n\n function ajaxCall(url, success, error) {\n var $ = window.jQuery || window.Zepto || window.$;\n\n if ($ && $.ajax) {\n $.ajax({\n dataType: \"json\",\n url: url,\n success: success,\n error: error,\n complete: requestComplete\n });\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = function () {\n requestComplete();\n if (xhr.status === 200) {\n success(JSON.parse(xhr.responseText), xhr.statusText, xhr);\n } else {\n error(xhr, \"error\", xhr.statusText);\n }\n };\n xhr.send();\n }\n }\n\n var config = {};\n var adapters = [];\n\n // helpers\n\n function setText(element, text) {\n if (document.body.innerText) {\n element.innerText = text;\n } else {\n element.textContent = text;\n }\n }\n\n // TODO remove prefix for all messages\n function chartError(element, message, noPrefix) {\n if (!noPrefix) {\n message = \"Error Loading Chart: \" + message;\n }\n setText(element, message);\n element.style.color = \"#ff0000\";\n }\n\n function errorCatcher(chart) {\n try {\n chart.__render();\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n }\n\n function fetchDataSource(chart, dataSource, showLoading) {\n // only show loading message for urls and callbacks\n if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n setText(chart.element, chart.options.loading);\n }\n\n if (typeof dataSource === \"string\") {\n pushRequest(dataSource, function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message);\n });\n } else if (typeof dataSource === \"function\") {\n try {\n dataSource(function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message, true);\n });\n } catch (err) {\n chartError(chart.element, err, true);\n }\n } else {\n chart.rawData = dataSource;\n errorCatcher(chart);\n }\n }\n\n function getAdapterType(library) {\n if (library) {\n if (library.product === \"Highcharts\") {\n return defaultExport$1;\n } else if (library.charts) {\n return defaultExport;\n } else if (isFunction(library)) {\n return defaultExport$2;\n }\n }\n throw new Error(\"Unknown adapter\");\n }\n\n function addAdapter(library) {\n var adapterType = getAdapterType(library);\n var adapter = new adapterType(library);\n\n if (adapters.indexOf(adapter) === -1) {\n adapters.push(adapter);\n }\n }\n\n function loadAdapters() {\n if (\"Chart\" in window) {\n addAdapter(window.Chart);\n }\n\n if (\"Highcharts\" in window) {\n addAdapter(window.Highcharts);\n }\n\n if (window.google && window.google.charts) {\n addAdapter(window.google);\n }\n }\n\n function renderChart(chartType, chart) {\n if (dataEmpty(chart.data, chartType)) {\n var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || \"No data\";\n setText(chart.element, message);\n } else {\n callAdapter(chartType, chart);\n if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n addDownloadButton(chart);\n }\n }\n }\n\n // TODO remove chartType if cross-browser way\n // to get the name of the chart class\n function callAdapter(chartType, chart) {\n var i, adapter, fnName, adapterName;\n fnName = \"render\" + chartType;\n adapterName = chart.options.adapter;\n\n loadAdapters();\n\n for (i = 0; i < adapters.length; i++) {\n adapter = adapters[i];\n if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n chart.adapter = adapter.name;\n chart.__adapterObject = adapter;\n return adapter[fnName](chart);\n }\n }\n\n if (adapters.length > 0) {\n throw new Error(\"No charting library found for \" + chartType);\n } else {\n throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n }\n }\n\n // define classes\n\n var Chart = function Chart(element, dataSource, options) {\n var elementId;\n if (typeof element === \"string\") {\n elementId = element;\n element = document.getElementById(element);\n if (!element) {\n throw new Error(\"No element with id \" + elementId);\n }\n }\n this.element = element;\n this.options = merge(Chartkick.options, options || {});\n this.dataSource = dataSource;\n\n Chartkick.charts[element.id] = this;\n\n fetchDataSource(this, dataSource, true);\n\n if (this.options.refresh) {\n this.startRefresh();\n }\n };\n\n Chart.prototype.getElement = function getElement () {\n return this.element;\n };\n\n Chart.prototype.getDataSource = function getDataSource () {\n return this.dataSource;\n };\n\n Chart.prototype.getData = function getData () {\n return this.data;\n };\n\n Chart.prototype.getOptions = function getOptions () {\n return this.options;\n };\n\n Chart.prototype.getChartObject = function getChartObject () {\n return this.chart;\n };\n\n Chart.prototype.getAdapter = function getAdapter () {\n return this.adapter;\n };\n\n Chart.prototype.updateData = function updateData (dataSource, options) {\n this.dataSource = dataSource;\n if (options) {\n this.__updateOptions(options);\n }\n fetchDataSource(this, dataSource, true);\n };\n\n Chart.prototype.setOptions = function setOptions (options) {\n this.__updateOptions(options);\n this.redraw();\n };\n\n Chart.prototype.redraw = function redraw () {\n fetchDataSource(this, this.rawData);\n };\n\n Chart.prototype.refreshData = function refreshData () {\n if (typeof this.dataSource === \"string\") {\n // prevent browser from caching\n var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var url = this.dataSource + sep + \"_=\" + (new Date()).getTime();\n fetchDataSource(this, url);\n } else if (typeof this.dataSource === \"function\") {\n fetchDataSource(this, this.dataSource);\n }\n };\n\n Chart.prototype.startRefresh = function startRefresh () {\n var this$1$1 = this;\n\n var refresh = this.options.refresh;\n\n if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n throw new Error(\"Data source must be a URL or callback for refresh\");\n }\n\n if (!this.intervalId) {\n if (refresh) {\n this.intervalId = setInterval( function () {\n this$1$1.refreshData();\n }, refresh * 1000);\n } else {\n throw new Error(\"No refresh interval\");\n }\n }\n };\n\n Chart.prototype.stopRefresh = function stopRefresh () {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n };\n\n Chart.prototype.toImage = function toImage (download) {\n if (this.adapter === \"chartjs\") {\n if (download && download.background && download.background !== \"transparent\") {\n // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n var canvas = this.chart.canvas;\n var ctx = this.chart.ctx;\n var tmpCanvas = document.createElement(\"canvas\");\n var tmpCtx = tmpCanvas.getContext(\"2d\");\n tmpCanvas.width = ctx.canvas.width;\n tmpCanvas.height = ctx.canvas.height;\n tmpCtx.fillStyle = download.background;\n tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n tmpCtx.drawImage(canvas, 0, 0);\n return tmpCanvas.toDataURL(\"image/png\");\n } else {\n return this.chart.toBase64Image();\n }\n } else {\n throw new Error(\"Feature only available for Chart.js\");\n }\n };\n\n Chart.prototype.destroy = function destroy () {\n this.destroyed = true;\n this.stopRefresh();\n\n if (this.__adapterObject) {\n this.__adapterObject.destroy(this);\n }\n\n if (this.__enterEvent) {\n removeEvent(this.element, \"mouseover\", this.__enterEvent);\n }\n\n if (this.__leaveEvent) {\n removeEvent(this.element, \"mouseout\", this.__leaveEvent);\n }\n };\n\n Chart.prototype.__updateOptions = function __updateOptions (options) {\n var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n this.options = merge(Chartkick.options, options);\n if (updateRefresh) {\n this.stopRefresh();\n this.startRefresh();\n }\n };\n\n Chart.prototype.__render = function __render () {\n this.data = this.__processData();\n renderChart(this.__chartName(), this);\n };\n\n Chart.prototype.__config = function __config () {\n return config;\n };\n\n var LineChart = /*@__PURE__*/(function (Chart) {\n function LineChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) LineChart.__proto__ = Chart;\n LineChart.prototype = Object.create( Chart && Chart.prototype );\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n LineChart.prototype.__chartName = function __chartName () {\n return \"LineChart\";\n };\n\n return LineChart;\n }(Chart));\n\n var PieChart = /*@__PURE__*/(function (Chart) {\n function PieChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) PieChart.__proto__ = Chart;\n PieChart.prototype = Object.create( Chart && Chart.prototype );\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n PieChart.prototype.__chartName = function __chartName () {\n return \"PieChart\";\n };\n\n return PieChart;\n }(Chart));\n\n var ColumnChart = /*@__PURE__*/(function (Chart) {\n function ColumnChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ColumnChart.__proto__ = Chart;\n ColumnChart.prototype = Object.create( Chart && Chart.prototype );\n ColumnChart.prototype.constructor = ColumnChart;\n\n ColumnChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n ColumnChart.prototype.__chartName = function __chartName () {\n return \"ColumnChart\";\n };\n\n return ColumnChart;\n }(Chart));\n\n var BarChart = /*@__PURE__*/(function (Chart) {\n function BarChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BarChart.__proto__ = Chart;\n BarChart.prototype = Object.create( Chart && Chart.prototype );\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n BarChart.prototype.__chartName = function __chartName () {\n return \"BarChart\";\n };\n\n return BarChart;\n }(Chart));\n\n var AreaChart = /*@__PURE__*/(function (Chart) {\n function AreaChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) AreaChart.__proto__ = Chart;\n AreaChart.prototype = Object.create( Chart && Chart.prototype );\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n AreaChart.prototype.__chartName = function __chartName () {\n return \"AreaChart\";\n };\n\n return AreaChart;\n }(Chart));\n\n var GeoChart = /*@__PURE__*/(function (Chart) {\n function GeoChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) GeoChart.__proto__ = Chart;\n GeoChart.prototype = Object.create( Chart && Chart.prototype );\n GeoChart.prototype.constructor = GeoChart;\n\n GeoChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n GeoChart.prototype.__chartName = function __chartName () {\n return \"GeoChart\";\n };\n\n return GeoChart;\n }(Chart));\n\n var ScatterChart = /*@__PURE__*/(function (Chart) {\n function ScatterChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ScatterChart.__proto__ = Chart;\n ScatterChart.prototype = Object.create( Chart && Chart.prototype );\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype.__processData = function __processData () {\n return processSeries(this, \"number\");\n };\n\n ScatterChart.prototype.__chartName = function __chartName () {\n return \"ScatterChart\";\n };\n\n return ScatterChart;\n }(Chart));\n\n var BubbleChart = /*@__PURE__*/(function (Chart) {\n function BubbleChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BubbleChart.__proto__ = Chart;\n BubbleChart.prototype = Object.create( Chart && Chart.prototype );\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype.__processData = function __processData () {\n return processSeries(this, \"bubble\");\n };\n\n BubbleChart.prototype.__chartName = function __chartName () {\n return \"BubbleChart\";\n };\n\n return BubbleChart;\n }(Chart));\n\n var Timeline = /*@__PURE__*/(function (Chart) {\n function Timeline () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) Timeline.__proto__ = Chart;\n Timeline.prototype = Object.create( Chart && Chart.prototype );\n Timeline.prototype.constructor = Timeline;\n\n Timeline.prototype.__processData = function __processData () {\n var i, data = this.rawData;\n for (i = 0; i < data.length; i++) {\n data[i][1] = toDate(data[i][1]);\n data[i][2] = toDate(data[i][2]);\n }\n return data;\n };\n\n Timeline.prototype.__chartName = function __chartName () {\n return \"Timeline\";\n };\n\n return Timeline;\n }(Chart));\n\n var Chartkick = {\n LineChart: LineChart,\n PieChart: PieChart,\n ColumnChart: ColumnChart,\n BarChart: BarChart,\n AreaChart: AreaChart,\n GeoChart: GeoChart,\n ScatterChart: ScatterChart,\n BubbleChart: BubbleChart,\n Timeline: Timeline,\n charts: {},\n configure: function (options) {\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n config[key] = options[key];\n }\n }\n },\n setDefaultOptions: function (opts) {\n Chartkick.options = opts;\n },\n eachChart: function (callback) {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n callback(Chartkick.charts[chartId]);\n }\n }\n },\n destroyAll: function() {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n Chartkick.charts[chartId].destroy();\n delete Chartkick.charts[chartId];\n }\n }\n },\n config: config,\n options: {},\n adapters: adapters,\n addAdapter: addAdapter,\n use: function(adapter) {\n addAdapter(adapter);\n return Chartkick;\n }\n };\n\n // not ideal, but allows for simpler integration\n if (typeof window !== \"undefined\" && !window.Chartkick) {\n window.Chartkick = Chartkick;\n\n // clean up previous charts before Turbolinks loads new page\n document.addEventListener(\"turbolinks:before-render\", function() {\n if (config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n document.addEventListener(\"turbo:before-render\", function() {\n if (config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n\n // use setTimeout so charting library can come later in same JS file\n setTimeout(function() {\n window.dispatchEvent(new Event(\"chartkick:load\"));\n }, 0);\n }\n\n // backwards compatibility for esm require\n Chartkick.default = Chartkick;\n\n return Chartkick;\n\n}));\n", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "/*\r\n * big.js v6.2.2\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2024 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n;(function (GLOBAL) {\r\n 'use strict';\r\n var Big,\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\n DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n /*\r\n * Create and return a Big constructor.\r\n */\r\n function _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n }\r\n\r\n\r\n /*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\n function parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\n function round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\n function stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n }\r\n\r\n\r\n // Prototype/instance methods\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\n P.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\n P.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\n P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\n P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\n P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\n P.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\n P.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n };\r\n \r\n \r\n /*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\n P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\n P.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\n P.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(+stringify(x, true, true));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\n P.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\n P.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Big as a primitve number.\r\n */\r\n P.toNumber = function () {\r\n var n = +stringify(this, true, true);\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\n P.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n };\r\n\r\n\r\n // Export\r\n\r\n\r\n Big = _Big_();\r\n\r\n Big['default'] = Big.Big = Big;\r\n\r\n //AMD.\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () { return Big; });\r\n\r\n // Node and other CommonJS-like environments that support module.exports.\r\n } else if (typeof module !== 'undefined' && module.exports) {\r\n module.exports = Big;\r\n\r\n //Browser.\r\n } else {\r\n GLOBAL.Big = Big;\r\n }\r\n})(this);\r\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\nconst linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\n\nconst buttonClickSelector = {\n selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n exclude: \"form button\"\n};\n\nconst inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\n\nconst formSubmitSelector = \"form:not([data-turbo=true])\";\n\nconst formInputClickSelector = \"form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])\";\n\nconst formDisableSelector = \"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled\";\n\nconst formEnableSelector = \"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled\";\n\nconst fileInputSelector = \"input[name][type=file]:not([disabled])\";\n\nconst linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\n\nconst buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\n\nlet nonce = null;\n\nconst loadCSPNonce = () => {\n const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n return nonce = metaTag && metaTag.content;\n};\n\nconst cspNonce = () => nonce || loadCSPNonce();\n\nconst m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nconst matches = function(element, selector) {\n if (selector.exclude) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n};\n\nconst EXPANDO = \"_ujsData\";\n\nconst getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n\nconst setData = function(element, key, value) {\n if (!element[EXPANDO]) {\n element[EXPANDO] = {};\n }\n return element[EXPANDO][key] = value;\n};\n\nconst $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n\nconst isContentEditable = function(element) {\n var isEditable = false;\n do {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n } while (element);\n return isEditable;\n};\n\nconst csrfToken = () => {\n const meta = document.querySelector(\"meta[name=csrf-token]\");\n return meta && meta.content;\n};\n\nconst csrfParam = () => {\n const meta = document.querySelector(\"meta[name=csrf-param]\");\n return meta && meta.content;\n};\n\nconst CSRFProtection = xhr => {\n const token = csrfToken();\n if (token) {\n return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n }\n};\n\nconst refreshCSRFTokens = () => {\n const token = csrfToken();\n const param = csrfParam();\n if (token && param) {\n return $('form input[name=\"' + param + '\"]').forEach((input => input.value = token));\n }\n};\n\nconst AcceptHeaders = {\n \"*\": \"*/*\",\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\",\n script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n};\n\nconst ajax = options => {\n options = prepareOptions(options);\n var xhr = createXHR(options, (function() {\n const response = processResponse(xhr.response != null ? xhr.response : xhr.responseText, xhr.getResponseHeader(\"Content-Type\"));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : undefined;\n }));\n if (options.beforeSend && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n};\n\nvar prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === \"GET\" && options.data) {\n if (options.url.indexOf(\"?\") < 0) {\n options.url += \"?\" + options.data;\n } else {\n options.url += \"&\" + options.data;\n }\n }\n if (!(options.dataType in AcceptHeaders)) {\n options.dataType = \"*\";\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== \"*\") {\n options.accept += \", */*; q=0.01\";\n }\n return options;\n};\n\nvar createXHR = function(options, done) {\n const xhr = new XMLHttpRequest;\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader(\"Accept\", options.accept);\n if (typeof options.data === \"string\") {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n};\n\nvar processResponse = function(response, type) {\n if (typeof response === \"string\" && typeof type === \"string\") {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"nonce\", cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n const parser = new DOMParser;\n type = type.replace(/;.+/, \"\");\n try {\n response = parser.parseFromString(response, type);\n } catch (error1) {}\n }\n }\n return response;\n};\n\nconst href = element => element.href;\n\nconst isCrossDomain = function(url) {\n const originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n const urlAnchor = document.createElement(\"a\");\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === \":\") && !urlAnchor.host || originAnchor.protocol + \"//\" + originAnchor.host === urlAnchor.protocol + \"//\" + urlAnchor.host);\n } catch (e) {\n return true;\n }\n};\n\nlet preventDefault;\n\nlet {CustomEvent: CustomEvent} = window;\n\nif (typeof CustomEvent !== \"function\") {\n CustomEvent = function(event, params) {\n const evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n ({preventDefault: preventDefault} = CustomEvent.prototype);\n CustomEvent.prototype.preventDefault = function() {\n const result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, \"defaultPrevented\", {\n get() {\n return true;\n }\n });\n }\n return result;\n };\n}\n\nconst fire = (obj, name, data) => {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n};\n\nconst stopEverything = e => {\n fire(e.target, \"ujs:everythingStopped\");\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\n\nconst delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, (function(e) {\n let {target: target} = e;\n while (!!(target instanceof Element) && !matches(target, selector)) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n}));\n\nconst toArray = e => Array.prototype.slice.call(e);\n\nconst serializeElement = (element, additionalParam) => {\n let inputs = [ element ];\n if (matches(element, \"form\")) {\n inputs = toArray(element.elements);\n }\n const params = [];\n inputs.forEach((function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, \"fieldset[disabled] *\")) {\n return;\n }\n if (matches(input, \"select\")) {\n toArray(input.options).forEach((function(option) {\n if (option.selected) {\n params.push({\n name: input.name,\n value: option.value\n });\n }\n }));\n } else if (input.checked || [ \"radio\", \"checkbox\", \"submit\" ].indexOf(input.type) === -1) {\n params.push({\n name: input.name,\n value: input.value\n });\n }\n }));\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map((function(param) {\n if (param.name) {\n return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n } else {\n return param;\n }\n })).join(\"&\");\n};\n\nconst formElements = (form, selector) => {\n if (matches(form, \"form\")) {\n return toArray(form.elements).filter((el => matches(el, selector)));\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n};\n\nconst handleConfirmWithRails = rails => function(e) {\n if (!allowAction(this, rails)) {\n stopEverything(e);\n }\n};\n\nconst confirm = (message, element) => window.confirm(message);\n\nvar allowAction = function(element, rails) {\n let callback;\n const message = element.getAttribute(\"data-confirm\");\n if (!message) {\n return true;\n }\n let answer = false;\n if (fire(element, \"confirm\")) {\n try {\n answer = rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, \"confirm:complete\", [ answer ]);\n }\n return answer && callback;\n};\n\nconst handleDisabledElement = function(e) {\n const element = this;\n if (element.disabled) {\n stopEverything(e);\n }\n};\n\nconst enableElement = e => {\n let element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return enableFormElements(element);\n }\n};\n\nconst disableElement = e => {\n const element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return disableFormElements(element);\n }\n};\n\nvar disableLinkElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableLinkElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, \"ujs:enable-with\", null);\n }\n element.removeEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n\nvar disableFormElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n if (matches(element, \"button\")) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, \"ujs:enable-with\", element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableFormElements = form => formElements(form, formEnableSelector).forEach((element => enableFormElement(element)));\n\nvar enableFormElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n if (matches(element, \"button\")) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, \"ujs:enable-with\", null);\n }\n element.disabled = false;\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar isXhrRedirect = function(event) {\n const xhr = event.detail ? event.detail[0] : undefined;\n return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n};\n\nconst handleMethodWithRails = rails => function(e) {\n const link = this;\n const method = link.getAttribute(\"data-method\");\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n const href = rails.href(link);\n const csrfToken$1 = csrfToken();\n const csrfParam$1 = csrfParam();\n const form = document.createElement(\"form\");\n let formContent = ``;\n if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n formContent += ``;\n }\n formContent += '';\n form.method = \"post\";\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = \"none\";\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n stopEverything(e);\n};\n\nconst isRemote = function(element) {\n const value = element.getAttribute(\"data-remote\");\n return value != null && value !== \"false\";\n};\n\nconst handleRemoteWithRails = rails => function(e) {\n let data, method, url;\n const element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, \"ajax:before\")) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n const withCredentials = element.getAttribute(\"data-with-credentials\");\n const dataType = element.getAttribute(\"data-type\") || \"script\";\n if (matches(element, formSubmitSelector)) {\n const button = getData(element, \"ujs:submit-button\");\n method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\n url = getData(element, \"ujs:submit-button-formaction\") || element.getAttribute(\"action\") || location.href;\n if (method.toUpperCase() === \"GET\") {\n url = url.replace(/\\?.*$/, \"\");\n }\n if (element.enctype === \"multipart/form-data\") {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, \"ujs:submit-button\", null);\n setData(element, \"ujs:submit-button-formmethod\", null);\n setData(element, \"ujs:submit-button-formaction\", null);\n } else if (matches(element, buttonClickSelector) || matches(element, inputChangeSelector)) {\n method = element.getAttribute(\"data-method\");\n url = element.getAttribute(\"data-url\");\n data = serializeElement(element, element.getAttribute(\"data-params\"));\n } else {\n method = element.getAttribute(\"data-method\");\n url = rails.href(element);\n data = element.getAttribute(\"data-params\");\n }\n ajax({\n type: method || \"GET\",\n url: url,\n data: data,\n dataType: dataType,\n beforeSend(xhr, options) {\n if (fire(element, \"ajax:beforeSend\", [ xhr, options ])) {\n return fire(element, \"ajax:send\", [ xhr ]);\n } else {\n fire(element, \"ajax:stopped\");\n return false;\n }\n },\n success(...args) {\n return fire(element, \"ajax:success\", args);\n },\n error(...args) {\n return fire(element, \"ajax:error\", args);\n },\n complete(...args) {\n return fire(element, \"ajax:complete\", args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== \"false\"\n });\n stopEverything(e);\n};\n\nconst formSubmitButtonClick = function(e) {\n const button = this;\n const {form: form} = button;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, \"ujs:submit-button\", {\n name: button.name,\n value: button.value\n });\n }\n setData(form, \"ujs:formnovalidate-button\", button.formNoValidate);\n setData(form, \"ujs:submit-button-formaction\", button.getAttribute(\"formaction\"));\n return setData(form, \"ujs:submit-button-formmethod\", button.getAttribute(\"formmethod\"));\n};\n\nconst preventInsignificantClick = function(e) {\n const link = this;\n const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n const data = link.getAttribute(\"data-params\");\n const metaClick = e.metaKey || e.ctrlKey;\n const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n e.stopImmediatePropagation();\n }\n};\n\nconst Rails = {\n $: $,\n ajax: ajax,\n buttonClickSelector: buttonClickSelector,\n buttonDisableSelector: buttonDisableSelector,\n confirm: confirm,\n cspNonce: cspNonce,\n csrfToken: csrfToken,\n csrfParam: csrfParam,\n CSRFProtection: CSRFProtection,\n delegate: delegate,\n disableElement: disableElement,\n enableElement: enableElement,\n fileInputSelector: fileInputSelector,\n fire: fire,\n formElements: formElements,\n formEnableSelector: formEnableSelector,\n formDisableSelector: formDisableSelector,\n formInputClickSelector: formInputClickSelector,\n formSubmitButtonClick: formSubmitButtonClick,\n formSubmitSelector: formSubmitSelector,\n getData: getData,\n handleDisabledElement: handleDisabledElement,\n href: href,\n inputChangeSelector: inputChangeSelector,\n isCrossDomain: isCrossDomain,\n linkClickSelector: linkClickSelector,\n linkDisableSelector: linkDisableSelector,\n loadCSPNonce: loadCSPNonce,\n matches: matches,\n preventInsignificantClick: preventInsignificantClick,\n refreshCSRFTokens: refreshCSRFTokens,\n serializeElement: serializeElement,\n setData: setData,\n stopEverything: stopEverything\n};\n\nconst handleConfirm = handleConfirmWithRails(Rails);\n\nRails.handleConfirm = handleConfirm;\n\nconst handleMethod = handleMethodWithRails(Rails);\n\nRails.handleMethod = handleMethod;\n\nconst handleRemote = handleRemoteWithRails(Rails);\n\nRails.handleRemote = handleRemote;\n\nconst start = function() {\n if (window._rails_loaded) {\n throw new Error(\"rails-ujs has already been loaded!\");\n }\n window.addEventListener(\"pageshow\", (function() {\n $(formEnableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n $(linkDisableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n }));\n delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n delegate(document, linkClickSelector, \"click\", handleConfirm);\n delegate(document, linkClickSelector, \"click\", disableElement);\n delegate(document, linkClickSelector, \"click\", handleRemote);\n delegate(document, linkClickSelector, \"click\", handleMethod);\n delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n delegate(document, buttonClickSelector, \"click\", handleConfirm);\n delegate(document, buttonClickSelector, \"click\", disableElement);\n delegate(document, buttonClickSelector, \"click\", handleRemote);\n delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n delegate(document, inputChangeSelector, \"change\", handleConfirm);\n delegate(document, inputChangeSelector, \"change\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n delegate(document, formSubmitSelector, \"submit\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", (e => setTimeout((() => disableElement(e)), 13)));\n delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n delegate(document, formInputClickSelector, \"click\", handleConfirm);\n delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n return window._rails_loaded = true;\n};\n\nRails.start = start;\n\nif (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\n if (jQuery.rails) {\n throw new Error(\"If you load both jquery_ujs and rails-ujs, use rails-ujs only.\");\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter((function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n }));\n}\n\nexport { Rails as default };\n", "export const attachmentSelector = \"[data-trix-attachment]\"\n\nconst attachments = {\n preview: {\n presentation: \"gallery\",\n caption: {\n name: true,\n size: true,\n },\n },\n file: {\n caption: {\n size: true,\n },\n },\n}\nexport default attachments\n", "const attributes = {\n default: {\n tagName: \"div\",\n parse: false,\n },\n quote: {\n tagName: \"blockquote\",\n nestable: true,\n },\n heading1: {\n tagName: \"h1\",\n terminal: true,\n breakOnReturn: true,\n group: false,\n },\n code: {\n tagName: \"pre\",\n terminal: true,\n htmlAttributes: [ \"language\" ],\n text: {\n plaintext: true,\n },\n },\n bulletList: {\n tagName: \"ul\",\n parse: false,\n },\n bullet: {\n tagName: \"li\",\n listAttribute: \"bulletList\",\n group: false,\n nestable: true,\n test(element) {\n return tagName(element.parentNode) === attributes[this.listAttribute].tagName\n },\n },\n numberList: {\n tagName: \"ol\",\n parse: false,\n },\n number: {\n tagName: \"li\",\n listAttribute: \"numberList\",\n group: false,\n nestable: true,\n test(element) {\n return tagName(element.parentNode) === attributes[this.listAttribute].tagName\n },\n },\n attachmentGallery: {\n tagName: \"div\",\n exclusive: true,\n terminal: true,\n parse: false,\n group: false,\n },\n}\n\nconst tagName = (element) => element?.tagName?.toLowerCase()\n\nexport default attributes\n", "const androidVersionMatch = navigator.userAgent.match(/android\\s([0-9]+.*Chrome)/i)\nconst androidVersion = androidVersionMatch && parseInt(androidVersionMatch[1])\n\nexport default {\n // Android emits composition events when moving the cursor through existing text\n // Introduced in Chrome 65: https://bugs.chromium.org/p/chromium/issues/detail?id=764439#c9\n composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n\n // Android 13, especially on Samsung keyboards, emits extra compositionend and beforeinput events\n // that can make the input handler lose the current selection or enter an infinite input -> render -> input\n // loop.\n recentAndroid: androidVersion && androidVersion > 12,\n samsungAndroid: androidVersion && navigator.userAgent.match(/Android.*SM-/),\n\n // IE 11 activates resizing handles on editable elements that have \"layout\"\n forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n // https://www.w3.org/TR/input-events-1/ + https://www.w3.org/TR/input-events-2/\n supportsInputEvents: typeof InputEvent !== \"undefined\" &&\n [ \"data\", \"getTargetRanges\", \"inputType\" ].every(prop => prop in InputEvent.prototype),\n}\n", "export default {\n ADD_ATTR: [ \"language\" ],\n SAFE_FOR_XML: false,\n RETURN_DOM: true\n}\n", "export default {\n attachFiles: \"Attach Files\",\n bold: \"Bold\",\n bullets: \"Bullets\",\n byte: \"Byte\",\n bytes: \"Bytes\",\n captionPlaceholder: \"Add a caption…\",\n code: \"Code\",\n heading1: \"Heading\",\n indent: \"Increase Level\",\n italic: \"Italic\",\n link: \"Link\",\n numbers: \"Numbers\",\n outdent: \"Decrease Level\",\n quote: \"Quote\",\n redo: \"Redo\",\n remove: \"Remove\",\n strike: \"Strikethrough\",\n undo: \"Undo\",\n unlink: \"Unlink\",\n url: \"URL\",\n urlPlaceholder: \"Enter a URL…\",\n GB: \"GB\",\n KB: \"KB\",\n MB: \"MB\",\n PB: \"PB\",\n TB: \"TB\",\n}\n", "/* eslint-disable\n no-case-declarations,\n*/\nimport lang from \"trix/config/lang\"\n\nconst sizes = [ lang.bytes, lang.KB, lang.MB, lang.GB, lang.TB, lang.PB ]\n\nexport default {\n prefix: \"IEC\",\n precision: 2,\n\n formatter(number) {\n switch (number) {\n case 0:\n return `0 ${lang.bytes}`\n case 1:\n return `1 ${lang.byte}`\n default:\n let base\n\n if (this.prefix === \"SI\") {\n base = 1000\n } else if (this.prefix === \"IEC\") {\n base = 1024\n }\n\n const exp = Math.floor(Math.log(number) / Math.log(base))\n const humanSize = number / Math.pow(base, exp)\n const string = humanSize.toFixed(this.precision)\n const withoutInsignificantZeros = string.replace(/0*$/, \"\").replace(/\\.$/, \"\")\n return `${withoutInsignificantZeros} ${sizes[exp]}`\n }\n },\n}\n", "export const ZERO_WIDTH_SPACE = \"\\uFEFF\"\nexport const NON_BREAKING_SPACE = \"\\u00A0\"\nexport const OBJECT_REPLACEMENT_CHARACTER = \"\\uFFFC\"\n", "export const extend = function(properties) {\n for (const key in properties) {\n const value = properties[key]\n this[key] = value\n }\n return this\n}\n", "import blockAttributes from \"trix/config/block_attributes\"\nimport { ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport { extend } from \"./extend\"\nimport { attachmentSelector } from \"trix/config/attachments\"\n\nconst html = document.documentElement\nconst match = html.matches\n\nexport const handleEvent = function(eventName, { onElement, matchingSelector, withCallback, inPhase, preventDefault, times } = {}) {\n const element = onElement ? onElement : html\n const selector = matchingSelector\n const useCapture = inPhase === \"capturing\"\n\n const handler = function(event) {\n if (times != null && --times === 0) {\n handler.destroy()\n }\n const target = findClosestElementFromNode(event.target, { matchingSelector: selector })\n if (target != null) {\n withCallback?.call(target, event, target)\n if (preventDefault) {\n event.preventDefault()\n }\n }\n }\n\n handler.destroy = () => element.removeEventListener(eventName, handler, useCapture)\n\n element.addEventListener(eventName, handler, useCapture)\n return handler\n}\n\nexport const handleEventOnce = function(eventName, options = {}) {\n options.times = 1\n return handleEvent(eventName, options)\n}\n\nexport const triggerEvent = function(eventName, { onElement, bubbles, cancelable, attributes } = {}) {\n const element = onElement != null ? onElement : html\n bubbles = bubbles !== false\n cancelable = cancelable !== false\n\n const event = document.createEvent(\"Events\")\n event.initEvent(eventName, bubbles, cancelable)\n if (attributes != null) {\n extend.call(event, attributes)\n }\n return element.dispatchEvent(event)\n}\n\nexport const elementMatchesSelector = function(element, selector) {\n if (element?.nodeType === 1) {\n return match.call(element, selector)\n }\n}\n\nexport const findClosestElementFromNode = function(node, { matchingSelector, untilNode } = {}) {\n while (node && node.nodeType !== Node.ELEMENT_NODE) {\n node = node.parentNode\n }\n if (node == null) {\n return\n }\n\n if (matchingSelector != null) {\n if (node.closest && untilNode == null) {\n return node.closest(matchingSelector)\n } else {\n while (node && node !== untilNode) {\n if (elementMatchesSelector(node, matchingSelector)) {\n return node\n }\n node = node.parentNode\n }\n }\n } else {\n return node\n }\n}\n\nexport const findInnerElement = function(element) {\n while (element?.firstElementChild) {\n element = element.firstElementChild\n }\n return element\n}\n\nexport const innerElementIsActive = (element) =>\n document.activeElement !== element && elementContainsNode(element, document.activeElement)\n\nexport const elementContainsNode = function(element, node) {\n if (!element || !node) {\n return\n }\n while (node) {\n if (node === element) {\n return true\n }\n node = node.parentNode\n }\n}\n\nexport const findNodeFromContainerAndOffset = function(container, offset) {\n if (!container) {\n return\n }\n if (container.nodeType === Node.TEXT_NODE) {\n return container\n } else if (offset === 0) {\n return container.firstChild != null ? container.firstChild : container\n } else {\n return container.childNodes.item(offset - 1)\n }\n}\n\nexport const findElementFromContainerAndOffset = function(container, offset) {\n const node = findNodeFromContainerAndOffset(container, offset)\n return findClosestElementFromNode(node)\n}\n\nexport const findChildIndexOfNode = function(node) {\n if (!node?.parentNode) {\n return\n }\n let childIndex = 0\n node = node.previousSibling\n while (node) {\n childIndex++\n node = node.previousSibling\n }\n return childIndex\n}\n\nexport const removeNode = (node) => node?.parentNode?.removeChild(node)\n\nexport const walkTree = function(tree, { onlyNodesOfType, usingFilter, expandEntityReferences } = {}) {\n const whatToShow = (() => {\n switch (onlyNodesOfType) {\n case \"element\":\n return NodeFilter.SHOW_ELEMENT\n case \"text\":\n return NodeFilter.SHOW_TEXT\n case \"comment\":\n return NodeFilter.SHOW_COMMENT\n default:\n return NodeFilter.SHOW_ALL\n }\n })()\n\n return document.createTreeWalker(\n tree,\n whatToShow,\n usingFilter != null ? usingFilter : null,\n expandEntityReferences === true\n )\n}\n\nexport const tagName = (element) => element?.tagName?.toLowerCase()\n\nexport const makeElement = function(tag, options = {}) {\n let key, value\n if (typeof tag === \"object\") {\n options = tag\n tag = options.tagName\n } else {\n options = { attributes: options }\n }\n\n const element = document.createElement(tag)\n\n if (options.editable != null) {\n if (options.attributes == null) {\n options.attributes = {}\n }\n options.attributes.contenteditable = options.editable\n }\n\n if (options.attributes) {\n for (key in options.attributes) {\n value = options.attributes[key]\n element.setAttribute(key, value)\n }\n }\n\n if (options.style) {\n for (key in options.style) {\n value = options.style[key]\n element.style[key] = value\n }\n }\n\n if (options.data) {\n for (key in options.data) {\n value = options.data[key]\n element.dataset[key] = value\n }\n }\n\n if (options.className) {\n options.className.split(\" \").forEach((className) => {\n element.classList.add(className)\n })\n }\n\n if (options.textContent) {\n element.textContent = options.textContent\n }\n\n if (options.childNodes) {\n [].concat(options.childNodes).forEach((childNode) => {\n element.appendChild(childNode)\n })\n }\n\n return element\n}\n\nlet blockTagNames = undefined\n\nexport const getBlockTagNames = function() {\n if (blockTagNames != null) {\n return blockTagNames\n }\n\n blockTagNames = []\n for (const key in blockAttributes) {\n const attributes = blockAttributes[key]\n if (attributes.tagName) {\n blockTagNames.push(attributes.tagName)\n }\n }\n\n return blockTagNames\n}\n\nexport const nodeIsBlockContainer = (node) => nodeIsBlockStartComment(node?.firstChild)\n\nexport const nodeProbablyIsBlockContainer = function(node) {\n return getBlockTagNames().includes(tagName(node)) && !getBlockTagNames().includes(tagName(node.firstChild))\n}\n\nexport const nodeIsBlockStart = function(node, { strict } = { strict: true }) {\n if (strict) {\n return nodeIsBlockStartComment(node)\n } else {\n return (\n nodeIsBlockStartComment(node) || !nodeIsBlockStartComment(node.firstChild) && nodeProbablyIsBlockContainer(node)\n )\n }\n}\n\nexport const nodeIsBlockStartComment = (node) => nodeIsCommentNode(node) && node?.data === \"block\"\n\nexport const nodeIsCommentNode = (node) => node?.nodeType === Node.COMMENT_NODE\n\nexport const nodeIsCursorTarget = function(node, { name } = {}) {\n if (!node) {\n return\n }\n if (nodeIsTextNode(node)) {\n if (node.data === ZERO_WIDTH_SPACE) {\n if (name) {\n return node.parentNode.dataset.trixCursorTarget === name\n } else {\n return true\n }\n }\n } else {\n return nodeIsCursorTarget(node.firstChild)\n }\n}\n\nexport const nodeIsAttachmentElement = (node) => elementMatchesSelector(node, attachmentSelector)\n\nexport const nodeIsEmptyTextNode = (node) => nodeIsTextNode(node) && node?.data === \"\"\n\nexport const nodeIsTextNode = (node) => node?.nodeType === Node.TEXT_NODE\n", "import browser from \"trix/config/browser\"\nimport { makeElement, removeNode } from \"trix/core/helpers/dom\"\n\nconst input = {\n level2Enabled: true,\n\n getLevel() {\n if (this.level2Enabled && browser.supportsInputEvents) {\n return 2\n } else {\n return 0\n }\n },\n pickFiles(callback) {\n const input = makeElement(\"input\", { type: \"file\", multiple: true, hidden: true, id: this.fileInputId })\n\n input.addEventListener(\"change\", () => {\n callback(input.files)\n removeNode(input)\n })\n\n removeNode(document.getElementById(this.fileInputId))\n document.body.appendChild(input)\n input.click()\n }\n}\n\nexport default input\n", "export default {\n 8: \"backspace\",\n 9: \"tab\",\n 13: \"return\",\n 27: \"escape\",\n 37: \"left\",\n 39: \"right\",\n 46: \"delete\",\n 68: \"d\",\n 72: \"h\",\n 79: \"o\",\n}\n", "export default {\n removeBlankTableCells: false,\n tableCellSeparator: \" | \",\n tableRowSeparator: \"\\n\",\n}\n", "import { attachmentSelector } from \"trix/config/attachments\"\n\nexport default {\n bold: {\n tagName: \"strong\",\n inheritable: true,\n parser(element) {\n const style = window.getComputedStyle(element)\n return style.fontWeight === \"bold\" || style.fontWeight >= 600\n },\n },\n italic: {\n tagName: \"em\",\n inheritable: true,\n parser(element) {\n const style = window.getComputedStyle(element)\n return style.fontStyle === \"italic\"\n },\n },\n href: {\n groupTagName: \"a\",\n parser(element) {\n const matchingSelector = `a:not(${attachmentSelector})`\n const link = element.closest(matchingSelector)\n if (link) {\n return link.getAttribute(\"href\")\n }\n },\n },\n strike: {\n tagName: \"del\",\n inheritable: true,\n },\n frozen: {\n style: { backgroundColor: \"highlight\" },\n },\n}\n", "import lang from \"trix/config/lang\"\n\nexport default {\n getDefaultHTML() {\n return `
\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n\n \n \n \n \n
\n\n
\n
\n \n
\n
`\n },\n}\n", "const undo = { interval: 5000 }\nexport default undo\n", "export default {\n attachment: \"attachment\",\n attachmentCaption: \"attachment__caption\",\n attachmentCaptionEditor: \"attachment__caption-editor\",\n attachmentMetadata: \"attachment__metadata\",\n attachmentMetadataContainer: \"attachment__metadata-container\",\n attachmentName: \"attachment__name\",\n attachmentProgress: \"attachment__progress\",\n attachmentSize: \"attachment__size\",\n attachmentToolbar: \"attachment__toolbar\",\n attachmentGallery: \"attachment-gallery\",\n}\n", "export default class BasicObject {\n static proxyMethod(expression) {\n const { name, toMethod, toProperty, optional } = parseProxyMethodExpression(expression)\n\n this.prototype[name] = function() {\n let subject\n let object\n\n if (toMethod) {\n if (optional) {\n object = this[toMethod]?.()\n } else {\n object = this[toMethod]()\n }\n } else if (toProperty) {\n object = this[toProperty]\n }\n\n if (optional) {\n subject = object?.[name]\n if (subject) {\n return apply.call(subject, object, arguments)\n }\n } else {\n subject = object[name]\n return apply.call(subject, object, arguments)\n }\n }\n }\n}\n\nconst parseProxyMethodExpression = function(expression) {\n const match = expression.match(proxyMethodExpressionPattern)\n if (!match) {\n throw new Error(`can't parse @proxyMethod expression: ${expression}`)\n }\n\n const args = { name: match[4] }\n\n if (match[2] != null) {\n args.toMethod = match[1]\n } else {\n args.toProperty = match[1]\n }\n\n if (match[3] != null) {\n args.optional = true\n }\n\n return args\n}\n\nconst { apply } = Function.prototype\n\nconst proxyMethodExpressionPattern = new RegExp(\"\\\n^\\\n(.+?)\\\n(\\\\(\\\\))?\\\n(\\\\?)?\\\n\\\\.\\\n(.+?)\\\n$\\\n\")\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class UTF16String extends BasicObject {\n static box(value = \"\") {\n if (value instanceof this) {\n return value\n } else {\n return this.fromUCS2String(value?.toString())\n }\n }\n\n static fromUCS2String(ucs2String) {\n return new this(ucs2String, ucs2decode(ucs2String))\n }\n\n static fromCodepoints(codepoints) {\n return new this(ucs2encode(codepoints), codepoints)\n }\n\n constructor(ucs2String, codepoints) {\n super(...arguments)\n this.ucs2String = ucs2String\n this.codepoints = codepoints\n this.length = this.codepoints.length\n this.ucs2Length = this.ucs2String.length\n }\n\n offsetToUCS2Offset(offset) {\n return ucs2encode(this.codepoints.slice(0, Math.max(0, offset))).length\n }\n\n offsetFromUCS2Offset(ucs2Offset) {\n return ucs2decode(this.ucs2String.slice(0, Math.max(0, ucs2Offset))).length\n }\n\n slice() {\n return this.constructor.fromCodepoints(this.codepoints.slice(...arguments))\n }\n\n charAt(offset) {\n return this.slice(offset, offset + 1)\n }\n\n isEqualTo(value) {\n return this.constructor.box(value).ucs2String === this.ucs2String\n }\n\n toJSON() {\n return this.ucs2String\n }\n\n getCacheKey() {\n return this.ucs2String\n }\n\n toString() {\n return this.ucs2String\n }\n}\n\nconst hasArrayFrom = Array.from?.(\"\\ud83d\\udc7c\").length === 1\nconst hasStringCodePointAt = \" \".codePointAt?.(0) != null\nconst hasStringFromCodePoint = String.fromCodePoint?.(32, 128124) === \" \\ud83d\\udc7c\"\n\n// UCS-2 conversion helpers ported from Mathias Bynens' Punycode.js:\n// https://github.com/bestiejs/punycode.js#punycodeucs2\n\nlet ucs2decode, ucs2encode\n\n// Creates an array containing the numeric code points of each Unicode\n// character in the string. While JavaScript uses UCS-2 internally,\n// this function will convert a pair of surrogate halves (each of which\n// UCS-2 exposes as separate characters) into a single code point,\n// matching UTF-16.\nif (hasArrayFrom && hasStringCodePointAt) {\n ucs2decode = (string) => Array.from(string).map((char) => char.codePointAt(0))\n} else {\n ucs2decode = function(string) {\n const output = []\n let counter = 0\n const { length } = string\n\n while (counter < length) {\n let value = string.charCodeAt(counter++)\n if (0xd800 <= value && value <= 0xdbff && counter < length) {\n // high surrogate, and there is a next character\n const extra = string.charCodeAt(counter++)\n if ((extra & 0xfc00) === 0xdc00) {\n // low surrogate\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000\n } else {\n // unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair\n counter--\n }\n }\n output.push(value)\n }\n\n return output\n }\n}\n\n// Creates a string based on an array of numeric code points.\nif (hasStringFromCodePoint) {\n ucs2encode = (array) => String.fromCodePoint(...Array.from(array || []))\n} else {\n ucs2encode = function(array) {\n const characters = (() => {\n const result = []\n\n Array.from(array).forEach((value) => {\n let output = \"\"\n if (value > 0xffff) {\n value -= 0x10000\n output += String.fromCharCode(value >>> 10 & 0x3ff | 0xd800)\n value = 0xdc00 | value & 0x3ff\n }\n result.push(output + String.fromCharCode(value))\n })\n\n return result\n })()\n\n return characters.join(\"\")\n }\n}\n", "import BasicObject from \"trix/core/basic_object\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\n\nlet id = 0\n\nexport default class TrixObject extends BasicObject {\n static fromJSONString(jsonString) {\n return this.fromJSON(JSON.parse(jsonString))\n }\n\n constructor() {\n super(...arguments)\n this.id = ++id\n }\n\n hasSameConstructorAs(object) {\n return this.constructor === object?.constructor\n }\n\n isEqualTo(object) {\n return this === object\n }\n\n inspect() {\n const parts = []\n const contents = this.contentsForInspection() || {}\n\n for (const key in contents) {\n const value = contents[key]\n parts.push(`${key}=${value}`)\n }\n\n return `#<${this.constructor.name}:${this.id}${parts.length ? ` ${parts.join(\", \")}` : \"\"}>`\n }\n\n contentsForInspection() {}\n\n toJSONString() {\n return JSON.stringify(this)\n }\n\n toUTF16String() {\n return UTF16String.box(this)\n }\n\n getCacheKey() {\n return this.id.toString()\n }\n}\n", "/* eslint-disable\n id-length,\n*/\nexport const arraysAreEqual = function(a = [], b = []) {\n if (a.length !== b.length) {\n return false\n }\n for (let index = 0; index < a.length; index++) {\n const value = a[index]\n if (value !== b[index]) {\n return false\n }\n }\n return true\n}\n\nexport const arrayStartsWith = (a = [], b = []) => arraysAreEqual(a.slice(0, b.length), b)\n\nexport const spliceArray = function(array, ...args) {\n const result = array.slice(0)\n result.splice(...args)\n return result\n}\n\nexport const summarizeArrayChange = function(oldArray = [], newArray = []) {\n const added = []\n const removed = []\n\n const existingValues = new Set()\n\n oldArray.forEach((value) => {\n existingValues.add(value)\n })\n\n const currentValues = new Set()\n\n newArray.forEach((value) => {\n currentValues.add(value)\n if (!existingValues.has(value)) {\n added.push(value)\n }\n })\n\n oldArray.forEach((value) => {\n if (!currentValues.has(value)) {\n removed.push(value)\n }\n })\n\n return { added, removed }\n}\n", "import { makeElement } from \"trix/core/helpers/dom\"\n\n// https://github.com/mathiasbynens/unicode-2.1.8/blob/master/Bidi_Class/Right_To_Left/regex.js\nconst RTL_PATTERN =\n /[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/\n\nexport const getDirection = (function() {\n const input = makeElement(\"input\", { dir: \"auto\", name: \"x\", dirName: \"x.dir\" })\n const textArea = makeElement(\"textarea\", { dir: \"auto\", name: \"y\", dirName: \"y.dir\" })\n const form = makeElement(\"form\")\n form.appendChild(input)\n form.appendChild(textArea)\n\n const supportsDirName = (function() {\n try {\n return new FormData(form).has(textArea.dirName)\n } catch (error) {\n return false\n }\n })()\n\n const supportsDirSelector = (function() {\n try {\n return input.matches(\":dir(ltr),:dir(rtl)\")\n } catch (error) {\n return false\n }\n })()\n\n if (supportsDirName) {\n return function(string) {\n textArea.value = string\n return new FormData(form).get(textArea.dirName)\n }\n } else if (supportsDirSelector) {\n return function(string) {\n input.value = string\n if (input.matches(\":dir(rtl)\")) {\n return \"rtl\"\n } else {\n return \"ltr\"\n }\n }\n } else {\n return function(string) {\n const char = string.trim().charAt(0)\n if (RTL_PATTERN.test(char)) {\n return \"rtl\"\n } else {\n return \"ltr\"\n }\n }\n }\n})()\n", "import * as config from \"trix/config\"\n\nlet allAttributeNames = null\nlet blockAttributeNames = null\nlet textAttributeNames = null\nlet listAttributeNames = null\n\nexport const getAllAttributeNames = () => {\n if (!allAttributeNames) {\n allAttributeNames = getTextAttributeNames().concat(getBlockAttributeNames())\n }\n return allAttributeNames\n}\n\nexport const getBlockConfig = (attributeName) => config.blockAttributes[attributeName]\n\nexport const getBlockAttributeNames = () => {\n if (!blockAttributeNames) {\n blockAttributeNames = Object.keys(config.blockAttributes)\n }\n return blockAttributeNames\n}\n\nexport const getTextConfig = (attributeName) => config.textAttributes[attributeName]\n\nexport const getTextAttributeNames = () => {\n if (!textAttributeNames) {\n textAttributeNames = Object.keys(config.textAttributes)\n }\n return textAttributeNames\n}\n\nexport const getListAttributeNames = () => {\n if (!listAttributeNames) {\n listAttributeNames = []\n for (const key in config.blockAttributes) {\n const { listAttribute } = config.blockAttributes[key]\n if (listAttribute != null) {\n listAttributeNames.push(listAttribute)\n }\n }\n }\n return listAttributeNames\n}\n", "/* eslint-disable\n*/\nexport const installDefaultCSSForTagName = function(tagName, defaultCSS) {\n const styleElement = insertStyleElementForTagName(tagName)\n styleElement.textContent = defaultCSS.replace(/%t/g, tagName)\n}\n\nconst insertStyleElementForTagName = function(tagName) {\n const element = document.createElement(\"style\")\n element.setAttribute(\"type\", \"text/css\")\n element.setAttribute(\"data-tag-name\", tagName.toLowerCase())\n const nonce = getCSPNonce()\n if (nonce) {\n element.setAttribute(\"nonce\", nonce)\n }\n document.head.insertBefore(element, document.head.firstChild)\n return element\n}\n\nconst getCSPNonce = function() {\n const element = getMetaElement(\"trix-csp-nonce\") || getMetaElement(\"csp-nonce\")\n if (element) {\n const { nonce, content } = element\n return nonce == \"\" ? content : nonce\n }\n}\n\nconst getMetaElement = (name) => document.head.querySelector(`meta[name=${name}]`)\n", "const testTransferData = { \"application/x-trix-feature-detection\": \"test\" }\n\nexport const dataTransferIsPlainText = function(dataTransfer) {\n const text = dataTransfer.getData(\"text/plain\")\n const html = dataTransfer.getData(\"text/html\")\n\n if (text && html) {\n const { body } = new DOMParser().parseFromString(html, \"text/html\")\n if (body.textContent === text) {\n return !body.querySelector(\"*\")\n }\n } else {\n return text?.length\n }\n}\n\nexport const dataTransferIsMsOfficePaste = ({ dataTransfer }) => {\n return dataTransfer.types.includes(\"Files\") &&\n dataTransfer.types.includes(\"text/html\") &&\n dataTransfer.getData(\"text/html\").includes(\"urn:schemas-microsoft-com:office:office\")\n}\n\nexport const dataTransferIsWritable = function(dataTransfer) {\n if (!dataTransfer?.setData) return false\n\n for (const key in testTransferData) {\n const value = testTransferData[key]\n\n try {\n dataTransfer.setData(key, value)\n if (!dataTransfer.getData(key) === value) return false\n } catch (error) {\n return false\n }\n }\n return true\n}\n\nexport const keyEventIsKeyboardCommand = (function() {\n if (/Mac|^iP/.test(navigator.platform)) {\n return (event) => event.metaKey\n } else {\n return (event) => event.ctrlKey\n }\n})()\n\nexport function shouldRenderInmmediatelyToDealWithIOSDictation(inputEvent) {\n if (/iPhone|iPad/.test(navigator.userAgent)) {\n // Handle garbled content and duplicated newlines when using dictation on iOS 18+. Upon dictation completion, iOS sends\n // the list of insertText / insertParagraph events in a quick sequence. If we don't render\n // the editor synchronously, the internal range fails to update and results in garbled content or duplicated newlines.\n //\n // This workaround is necessary because iOS doesn't send composing events as expected while dictating:\n // https://bugs.webkit.org/show_bug.cgi?id=261764\n return !inputEvent.inputType || inputEvent.inputType === \"insertParagraph\"\n } else {\n return false\n }\n}\n", "export const defer = (fn) => setTimeout(fn, 1)\n", "/* eslint-disable\n id-length,\n*/\nexport const copyObject = function(object = {}) {\n const result = {}\n for (const key in object) {\n const value = object[key]\n result[key] = value\n }\n return result\n}\n\nexport const objectsAreEqual = function(a = {}, b = {}) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n for (const key in a) {\n const value = a[key]\n if (value !== b[key]) {\n return false\n }\n }\n return true\n}\n", "import { copyObject, objectsAreEqual } from \"trix/core/helpers/objects\"\n\nexport const normalizeRange = function(range) {\n if (range == null) return\n\n if (!Array.isArray(range)) {\n range = [ range, range ]\n }\n return [ copyValue(range[0]), copyValue(range[1] != null ? range[1] : range[0]) ]\n}\n\nexport const rangeIsCollapsed = function(range) {\n if (range == null) return\n\n const [ start, end ] = normalizeRange(range)\n return rangeValuesAreEqual(start, end)\n}\n\nexport const rangesAreEqual = function(leftRange, rightRange) {\n if (leftRange == null || rightRange == null) return\n\n const [ leftStart, leftEnd ] = normalizeRange(leftRange)\n const [ rightStart, rightEnd ] = normalizeRange(rightRange)\n return rangeValuesAreEqual(leftStart, rightStart) && rangeValuesAreEqual(leftEnd, rightEnd)\n}\n\nconst copyValue = function(value) {\n if (typeof value === \"number\") {\n return value\n } else {\n return copyObject(value)\n }\n}\n\nconst rangeValuesAreEqual = function(left, right) {\n if (typeof left === \"number\") {\n return left === right\n } else {\n return objectsAreEqual(left, right)\n }\n}\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class SelectionChangeObserver extends BasicObject {\n constructor() {\n super(...arguments)\n this.update = this.update.bind(this)\n this.selectionManagers = []\n }\n\n start() {\n if (!this.started) {\n this.started = true\n document.addEventListener(\"selectionchange\", this.update, true)\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false\n return document.removeEventListener(\"selectionchange\", this.update, true)\n }\n }\n\n registerSelectionManager(selectionManager) {\n if (!this.selectionManagers.includes(selectionManager)) {\n this.selectionManagers.push(selectionManager)\n return this.start()\n }\n }\n\n unregisterSelectionManager(selectionManager) {\n this.selectionManagers = this.selectionManagers.filter((sm) => sm !== selectionManager)\n if (this.selectionManagers.length === 0) {\n return this.stop()\n }\n }\n\n notifySelectionManagersOfSelectionChange() {\n return this.selectionManagers.map((selectionManager) => selectionManager.selectionDidChange())\n }\n\n update() {\n this.notifySelectionManagersOfSelectionChange()\n }\n\n reset() {\n this.update()\n }\n}\n\nexport const selectionChangeObserver = new SelectionChangeObserver()\n\nexport const getDOMSelection = function() {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n return selection\n }\n}\n\nexport const getDOMRange = function() {\n const domRange = getDOMSelection()?.getRangeAt(0)\n if (domRange) {\n if (!domRangeIsPrivate(domRange)) {\n return domRange\n }\n }\n}\n\nexport const setDOMRange = function(domRange) {\n const selection = window.getSelection()\n selection.removeAllRanges()\n selection.addRange(domRange)\n return selectionChangeObserver.update()\n}\n\n// In Firefox, clicking certain elements changes the selection to a\n// private element used to draw its UI. Attempting to access properties of those\n// elements throws an error.\n// https://bugzilla.mozilla.org/show_bug.cgi?id=208427\nconst domRangeIsPrivate = (domRange) => nodeIsPrivate(domRange.startContainer) || nodeIsPrivate(domRange.endContainer)\n\nconst nodeIsPrivate = (node) => !Object.getPrototypeOf(node)\n", "/* eslint-disable\n id-length,\n no-useless-escape,\n*/\nimport { NON_BREAKING_SPACE, ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\n\nexport const normalizeSpaces = (string) =>\n string.replace(new RegExp(`${ZERO_WIDTH_SPACE}`, \"g\"), \"\").replace(new RegExp(`${NON_BREAKING_SPACE}`, \"g\"), \" \")\n\nexport const normalizeNewlines = (string) => string.replace(/\\r\\n?/g, \"\\n\")\n\nexport const breakableWhitespacePattern = new RegExp(`[^\\\\S${NON_BREAKING_SPACE}]`)\n\nexport const squishBreakableWhitespace = (string) =>\n string\n // Replace all breakable whitespace characters with a space\n .replace(new RegExp(`${breakableWhitespacePattern.source}`, \"g\"), \" \")\n // Replace two or more spaces with a single space\n .replace(/\\ {2,}/g, \" \")\n\nexport const summarizeStringChange = function(oldString, newString) {\n let added, removed\n oldString = UTF16String.box(oldString)\n newString = UTF16String.box(newString)\n\n if (newString.length < oldString.length) {\n [ removed, added ] = utf16StringDifferences(oldString, newString)\n } else {\n [ added, removed ] = utf16StringDifferences(newString, oldString)\n }\n\n return { added, removed }\n}\n\nconst utf16StringDifferences = function(a, b) {\n if (a.isEqualTo(b)) {\n return [ \"\", \"\" ]\n }\n\n const diffA = utf16StringDifference(a, b)\n const { length } = diffA.utf16String\n\n let diffB\n\n if (length) {\n const { offset } = diffA\n const codepoints = a.codepoints.slice(0, offset).concat(a.codepoints.slice(offset + length))\n diffB = utf16StringDifference(b, UTF16String.fromCodepoints(codepoints))\n } else {\n diffB = utf16StringDifference(b, a)\n }\n\n return [ diffA.utf16String.toString(), diffB.utf16String.toString() ]\n}\n\nconst utf16StringDifference = function(a, b) {\n let leftIndex = 0\n let rightIndexA = a.length\n let rightIndexB = b.length\n\n while (leftIndex < rightIndexA && a.charAt(leftIndex).isEqualTo(b.charAt(leftIndex))) {\n leftIndex++\n }\n\n while (rightIndexA > leftIndex + 1 && a.charAt(rightIndexA - 1).isEqualTo(b.charAt(rightIndexB - 1))) {\n rightIndexA--\n rightIndexB--\n }\n\n return {\n utf16String: a.slice(leftIndex, rightIndexA),\n offset: leftIndex,\n }\n}\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport { arraysAreEqual } from \"trix/core/helpers\"\n\nexport default class Hash extends TrixObject {\n static fromCommonAttributesOfObjects(objects = []) {\n if (!objects.length) {\n return new this()\n }\n let hash = box(objects[0])\n let keys = hash.getKeys()\n\n objects.slice(1).forEach((object) => {\n keys = hash.getKeysCommonToHash(box(object))\n hash = hash.slice(keys)\n })\n\n return hash\n }\n\n static box(values) {\n return box(values)\n }\n\n constructor(values = {}) {\n super(...arguments)\n this.values = copy(values)\n }\n\n add(key, value) {\n return this.merge(object(key, value))\n }\n\n remove(key) {\n return new Hash(copy(this.values, key))\n }\n\n get(key) {\n return this.values[key]\n }\n\n has(key) {\n return key in this.values\n }\n\n merge(values) {\n return new Hash(merge(this.values, unbox(values)))\n }\n\n slice(keys) {\n const values = {}\n\n Array.from(keys).forEach((key) => {\n if (this.has(key)) {\n values[key] = this.values[key]\n }\n })\n\n return new Hash(values)\n }\n\n getKeys() {\n return Object.keys(this.values)\n }\n\n getKeysCommonToHash(hash) {\n hash = box(hash)\n return this.getKeys().filter((key) => this.values[key] === hash.values[key])\n }\n\n isEqualTo(values) {\n return arraysAreEqual(this.toArray(), box(values).toArray())\n }\n\n isEmpty() {\n return this.getKeys().length === 0\n }\n\n toArray() {\n if (!this.array) {\n const result = []\n for (const key in this.values) {\n const value = this.values[key]\n result.push(result.push(key, value))\n }\n this.array = result.slice(0)\n }\n\n return this.array\n }\n\n toObject() {\n return copy(this.values)\n }\n\n toJSON() {\n return this.toObject()\n }\n\n contentsForInspection() {\n return { values: JSON.stringify(this.values) }\n }\n}\n\nconst object = function(key, value) {\n const result = {}\n result[key] = value\n return result\n}\n\nconst merge = function(object, values) {\n const result = copy(object)\n for (const key in values) {\n const value = values[key]\n result[key] = value\n }\n return result\n}\n\nconst copy = function(object, keyToRemove) {\n const result = {}\n const sortedKeys = Object.keys(object).sort()\n\n sortedKeys.forEach((key) => {\n if (key !== keyToRemove) {\n result[key] = object[key]\n }\n })\n\n return result\n}\n\nconst box = function(object) {\n if (object instanceof Hash) {\n return object\n } else {\n return new Hash(object)\n }\n}\n\nconst unbox = function(object) {\n if (object instanceof Hash) {\n return object.values\n } else {\n return object\n }\n}\n", "export default class ObjectGroup {\n static groupObjects(ungroupedObjects = [], { depth, asTree } = {}) {\n let group\n if (asTree) {\n if (depth == null) {\n depth = 0\n }\n }\n const objects = []\n\n Array.from(ungroupedObjects).forEach((object) => {\n if (group) {\n if (object.canBeGrouped?.(depth) && group[group.length - 1].canBeGroupedWith?.(object, depth)) {\n group.push(object)\n return\n } else {\n objects.push(new this(group, { depth, asTree }))\n group = null\n }\n }\n\n if (object.canBeGrouped?.(depth)) {\n group = [ object ]\n } else {\n objects.push(object)\n }\n })\n\n if (group) {\n objects.push(new this(group, { depth, asTree }))\n }\n return objects\n }\n\n constructor(objects = [], { depth, asTree }) {\n this.objects = objects\n if (asTree) {\n this.depth = depth\n this.objects = this.constructor.groupObjects(this.objects, { asTree, depth: this.depth + 1 })\n }\n }\n\n getObjects() {\n return this.objects\n }\n\n getDepth() {\n return this.depth\n }\n\n getCacheKey() {\n const keys = [ \"objectGroup\" ]\n Array.from(this.getObjects()).forEach((object) => {\n keys.push(object.getCacheKey())\n })\n return keys.join(\"/\")\n }\n}\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class ObjectMap extends BasicObject {\n constructor(objects = []) {\n super(...arguments)\n this.objects = {}\n\n Array.from(objects).forEach((object) => {\n const hash = JSON.stringify(object)\n if (this.objects[hash] == null) {\n this.objects[hash] = object\n }\n })\n }\n\n find(object) {\n const hash = JSON.stringify(object)\n return this.objects[hash]\n }\n}\n", "export default class ElementStore {\n constructor(elements) {\n this.reset(elements)\n }\n\n add(element) {\n const key = getKey(element)\n this.elements[key] = element\n }\n\n remove(element) {\n const key = getKey(element)\n const value = this.elements[key]\n if (value) {\n delete this.elements[key]\n return value\n }\n }\n\n reset(elements = []) {\n this.elements = {}\n Array.from(elements).forEach((element) => {\n this.add(element)\n })\n return elements\n }\n}\n\nconst getKey = (element) => element.dataset.trixStoreKey\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class Operation extends BasicObject {\n isPerforming() {\n return this.performing === true\n }\n\n hasPerformed() {\n return this.performed === true\n }\n\n hasSucceeded() {\n return this.performed && this.succeeded\n }\n\n hasFailed() {\n return this.performed && !this.succeeded\n }\n\n getPromise() {\n if (!this.promise) {\n this.promise = new Promise((resolve, reject) => {\n this.performing = true\n return this.perform((succeeded, result) => {\n this.succeeded = succeeded\n this.performing = false\n this.performed = true\n\n if (this.succeeded) {\n resolve(result)\n } else {\n reject(result)\n }\n })\n })\n }\n\n return this.promise\n }\n\n perform(callback) {\n return callback(false)\n }\n\n release() {\n this.promise?.cancel?.()\n this.promise = null\n this.performing = null\n this.performed = null\n this.succeeded = null\n }\n}\n\nOperation.proxyMethod(\"getPromise().then\")\nOperation.proxyMethod(\"getPromise().catch\")\n", "import BasicObject from \"trix/core/basic_object\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\n\nexport default class ObjectView extends BasicObject {\n constructor(object, options = {}) {\n super(...arguments)\n this.object = object\n this.options = options\n this.childViews = []\n this.rootView = this\n }\n\n getNodes() {\n if (!this.nodes) { this.nodes = this.createNodes() }\n return this.nodes.map((node) => node.cloneNode(true))\n }\n\n invalidate() {\n this.nodes = null\n this.childViews = []\n return this.parentView?.invalidate()\n }\n\n invalidateViewForObject(object) {\n return this.findViewForObject(object)?.invalidate()\n }\n\n findOrCreateCachedChildView(viewClass, object, options) {\n let view = this.getCachedViewForObject(object)\n if (view) {\n this.recordChildView(view)\n } else {\n view = this.createChildView(...arguments)\n this.cacheViewForObject(view, object)\n }\n return view\n }\n\n createChildView(viewClass, object, options = {}) {\n if (object instanceof ObjectGroup) {\n options.viewClass = viewClass\n viewClass = ObjectGroupView\n }\n\n const view = new viewClass(object, options)\n return this.recordChildView(view)\n }\n\n recordChildView(view) {\n view.parentView = this\n view.rootView = this.rootView\n this.childViews.push(view)\n return view\n }\n\n getAllChildViews() {\n let views = []\n\n this.childViews.forEach((childView) => {\n views.push(childView)\n views = views.concat(childView.getAllChildViews())\n })\n\n return views\n }\n\n findElement() {\n return this.findElementForObject(this.object)\n }\n\n findElementForObject(object) {\n const id = object?.id\n if (id) {\n return this.rootView.element.querySelector(`[data-trix-id='${id}']`)\n }\n }\n\n findViewForObject(object) {\n for (const view of this.getAllChildViews()) {\n if (view.object === object) {\n return view\n }\n }\n }\n\n getViewCache() {\n if (this.rootView === this) {\n if (this.isViewCachingEnabled()) {\n if (!this.viewCache) { this.viewCache = {} }\n return this.viewCache\n }\n } else {\n return this.rootView.getViewCache()\n }\n }\n\n isViewCachingEnabled() {\n return this.shouldCacheViews !== false\n }\n\n enableViewCaching() {\n this.shouldCacheViews = true\n }\n\n disableViewCaching() {\n this.shouldCacheViews = false\n }\n\n getCachedViewForObject(object) {\n return this.getViewCache()?.[object.getCacheKey()]\n }\n\n cacheViewForObject(view, object) {\n const cache = this.getViewCache()\n if (cache) {\n cache[object.getCacheKey()] = view\n }\n }\n\n garbageCollectCachedViews() {\n const cache = this.getViewCache()\n if (cache) {\n const views = this.getAllChildViews().concat(this)\n const objectKeys = views.map((view) => view.object.getCacheKey())\n for (const key in cache) {\n if (!objectKeys.includes(key)) {\n delete cache[key]\n }\n }\n }\n }\n}\n\nexport class ObjectGroupView extends ObjectView {\n constructor() {\n super(...arguments)\n this.objectGroup = this.object\n this.viewClass = this.options.viewClass\n delete this.options.viewClass\n }\n\n getChildViews() {\n if (!this.childViews.length) {\n Array.from(this.objectGroup.getObjects()).forEach((object) => {\n this.findOrCreateCachedChildView(this.viewClass, object, this.options)\n })\n }\n return this.childViews\n }\n\n createNodes() {\n const element = this.createContainerElement()\n\n this.getChildViews().forEach((view) => {\n Array.from(view.getNodes()).forEach((node) => {\n element.appendChild(node)\n })\n })\n\n return [ element ]\n }\n\n createContainerElement(depth = this.objectGroup.getDepth()) {\n return this.getChildViews()[0].createContainerElement(depth)\n }\n}\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport { nodeIsAttachmentElement, removeNode, tagName, walkTree } from \"trix/core/helpers\"\nimport DOMPurify from \"dompurify\"\nimport * as config from \"trix/config\"\n\nDOMPurify.addHook(\"uponSanitizeAttribute\", function (node, data) {\n const allowedAttributePattern = /^data-trix-/\n if (allowedAttributePattern.test(data.attrName)) {\n data.forceKeepAttr = true\n }\n})\n\nconst DEFAULT_ALLOWED_ATTRIBUTES = \"style href src width height language class\".split(\" \")\nconst DEFAULT_FORBIDDEN_PROTOCOLS = \"javascript:\".split(\" \")\nconst DEFAULT_FORBIDDEN_ELEMENTS = \"script iframe form noscript\".split(\" \")\n\nexport default class HTMLSanitizer extends BasicObject {\n static setHTML(element, html) {\n const sanitizedElement = new this(html).sanitize()\n const sanitizedHtml = sanitizedElement.getHTML ? sanitizedElement.getHTML() : sanitizedElement.outerHTML\n element.innerHTML = sanitizedHtml\n }\n\n static sanitize(html, options) {\n const sanitizer = new this(html, options)\n sanitizer.sanitize()\n return sanitizer\n }\n\n constructor(html, { allowedAttributes, forbiddenProtocols, forbiddenElements } = {}) {\n super(...arguments)\n this.allowedAttributes = allowedAttributes || DEFAULT_ALLOWED_ATTRIBUTES\n this.forbiddenProtocols = forbiddenProtocols || DEFAULT_FORBIDDEN_PROTOCOLS\n this.forbiddenElements = forbiddenElements || DEFAULT_FORBIDDEN_ELEMENTS\n this.body = createBodyElementForHTML(html)\n }\n\n sanitize() {\n this.sanitizeElements()\n this.normalizeListElementNesting()\n DOMPurify.setConfig(config.dompurify)\n this.body = DOMPurify.sanitize(this.body)\n\n return this.body\n }\n\n getHTML() {\n return this.body.innerHTML\n }\n\n getBody() {\n return this.body\n }\n\n // Private\n\n sanitizeElements() {\n const walker = walkTree(this.body)\n const nodesToRemove = []\n\n while (walker.nextNode()) {\n const node = walker.currentNode\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n if (this.elementIsRemovable(node)) {\n nodesToRemove.push(node)\n } else {\n this.sanitizeElement(node)\n }\n break\n case Node.COMMENT_NODE:\n nodesToRemove.push(node)\n break\n }\n }\n\n nodesToRemove.forEach((node) => removeNode(node))\n\n return this.body\n }\n\n sanitizeElement(element) {\n if (element.hasAttribute(\"href\")) {\n if (this.forbiddenProtocols.includes(element.protocol)) {\n element.removeAttribute(\"href\")\n }\n }\n\n Array.from(element.attributes).forEach(({ name }) => {\n if (!this.allowedAttributes.includes(name) && name.indexOf(\"data-trix\") !== 0) {\n element.removeAttribute(name)\n }\n })\n\n return element\n }\n\n normalizeListElementNesting() {\n Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach((listElement) => {\n const previousElement = listElement.previousElementSibling\n if (previousElement) {\n if (tagName(previousElement) === \"li\") {\n previousElement.appendChild(listElement)\n }\n }\n })\n\n return this.body\n }\n\n elementIsRemovable(element) {\n if (element?.nodeType !== Node.ELEMENT_NODE) return\n return this.elementIsForbidden(element) || this.elementIsntSerializable(element)\n }\n\n elementIsForbidden(element) {\n return this.forbiddenElements.includes(tagName(element))\n }\n\n elementIsntSerializable(element) {\n return element.getAttribute(\"data-trix-serialize\") === \"false\" && !nodeIsAttachmentElement(element)\n }\n}\n\nconst createBodyElementForHTML = function(html = \"\") {\n // Remove everything after \n html = html.replace(/<\\/html[^>]*>[^]*$/i, \"\")\n const doc = document.implementation.createHTMLDocument(\"\")\n doc.documentElement.innerHTML = html\n\n Array.from(doc.head.querySelectorAll(\"style\")).forEach((element) => {\n doc.body.appendChild(element)\n })\n\n return doc.body\n}\n", "import * as config from \"trix/config\"\nimport { ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport { copyObject, makeElement } from \"trix/core/helpers\"\nimport ObjectView from \"trix/views/object_view\"\nimport HTMLSanitizer from \"trix/models/html_sanitizer\"\n\nconst { css } = config\n\nexport default class AttachmentView extends ObjectView {\n constructor() {\n super(...arguments)\n this.attachment = this.object\n this.attachment.uploadProgressDelegate = this\n this.attachmentPiece = this.options.piece\n }\n\n createContentNodes() {\n return []\n }\n\n createNodes() {\n let innerElement\n const figure = innerElement = makeElement({\n tagName: \"figure\",\n className: this.getClassName(),\n data: this.getData(),\n editable: false,\n })\n\n const href = this.getHref()\n if (href) {\n innerElement = makeElement({ tagName: \"a\", editable: false, attributes: { href, tabindex: -1 } })\n figure.appendChild(innerElement)\n }\n\n if (this.attachment.hasContent()) {\n HTMLSanitizer.setHTML(innerElement, this.attachment.getContent())\n } else {\n this.createContentNodes().forEach((node) => {\n innerElement.appendChild(node)\n })\n }\n\n innerElement.appendChild(this.createCaptionElement())\n\n if (this.attachment.isPending()) {\n this.progressElement = makeElement({\n tagName: \"progress\",\n attributes: {\n class: css.attachmentProgress,\n value: this.attachment.getUploadProgress(),\n max: 100,\n },\n data: {\n trixMutable: true,\n trixStoreKey: [ \"progressElement\", this.attachment.id ].join(\"/\"),\n },\n })\n\n figure.appendChild(this.progressElement)\n }\n\n return [ createCursorTarget(\"left\"), figure, createCursorTarget(\"right\") ]\n }\n\n createCaptionElement() {\n const figcaption = makeElement({ tagName: \"figcaption\", className: css.attachmentCaption })\n const caption = this.attachmentPiece.getCaption()\n if (caption) {\n figcaption.classList.add(`${css.attachmentCaption}--edited`)\n figcaption.textContent = caption\n } else {\n let name, size\n const captionConfig = this.getCaptionConfig()\n if (captionConfig.name) {\n name = this.attachment.getFilename()\n }\n if (captionConfig.size) {\n size = this.attachment.getFormattedFilesize()\n }\n\n if (name) {\n const nameElement = makeElement({ tagName: \"span\", className: css.attachmentName, textContent: name })\n figcaption.appendChild(nameElement)\n }\n\n if (size) {\n if (name) {\n figcaption.appendChild(document.createTextNode(\" \"))\n }\n const sizeElement = makeElement({ tagName: \"span\", className: css.attachmentSize, textContent: size })\n figcaption.appendChild(sizeElement)\n }\n }\n\n return figcaption\n }\n\n getClassName() {\n const names = [ css.attachment, `${css.attachment}--${this.attachment.getType()}` ]\n const extension = this.attachment.getExtension()\n if (extension) {\n names.push(`${css.attachment}--${extension}`)\n }\n return names.join(\" \")\n }\n\n getData() {\n const data = {\n trixAttachment: JSON.stringify(this.attachment),\n trixContentType: this.attachment.getContentType(),\n trixId: this.attachment.id,\n }\n\n const { attributes } = this.attachmentPiece\n if (!attributes.isEmpty()) {\n data.trixAttributes = JSON.stringify(attributes)\n }\n\n if (this.attachment.isPending()) {\n data.trixSerialize = false\n }\n\n return data\n }\n\n getHref() {\n if (!htmlContainsTagName(this.attachment.getContent(), \"a\")) {\n return this.attachment.getHref()\n }\n }\n\n getCaptionConfig() {\n const type = this.attachment.getType()\n const captionConfig = copyObject(config.attachments[type]?.caption)\n if (type === \"file\") {\n captionConfig.name = true\n }\n return captionConfig\n }\n\n findProgressElement() {\n return this.findElement()?.querySelector(\"progress\")\n }\n\n // Attachment delegate\n\n attachmentDidChangeUploadProgress() {\n const value = this.attachment.getUploadProgress()\n const progressElement = this.findProgressElement()\n if (progressElement) {\n progressElement.value = value\n }\n }\n}\n\nconst createCursorTarget = (name) =>\n makeElement({\n tagName: \"span\",\n textContent: ZERO_WIDTH_SPACE,\n data: {\n trixCursorTarget: name,\n trixSerialize: false,\n },\n })\n\nconst htmlContainsTagName = function(html, tagName) {\n const div = makeElement(\"div\")\n HTMLSanitizer.setHTML(div, html || \"\")\n return div.querySelector(tagName)\n}\n", "import * as config from \"trix/config\"\nimport { makeElement } from \"trix/core/helpers\"\n\nimport AttachmentView from \"trix/views/attachment_view\"\n\nexport default class PreviewableAttachmentView extends AttachmentView {\n constructor() {\n super(...arguments)\n this.attachment.previewDelegate = this\n }\n\n createContentNodes() {\n this.image = makeElement({\n tagName: \"img\",\n attributes: {\n src: \"\",\n },\n data: {\n trixMutable: true,\n },\n })\n\n this.refresh(this.image)\n return [ this.image ]\n }\n\n createCaptionElement() {\n const figcaption = super.createCaptionElement(...arguments)\n if (!figcaption.textContent) {\n figcaption.setAttribute(\"data-trix-placeholder\", config.lang.captionPlaceholder)\n }\n return figcaption\n }\n\n refresh(image) {\n if (!image) { image = this.findElement()?.querySelector(\"img\") }\n if (image) {\n return this.updateAttributesForImage(image)\n }\n }\n\n updateAttributesForImage(image) {\n const url = this.attachment.getURL()\n const previewURL = this.attachment.getPreviewURL()\n image.src = previewURL || url\n\n if (previewURL === url) {\n image.removeAttribute(\"data-trix-serialized-attributes\")\n } else {\n const serializedAttributes = JSON.stringify({ src: url })\n image.setAttribute(\"data-trix-serialized-attributes\", serializedAttributes)\n }\n\n const width = this.attachment.getWidth()\n const height = this.attachment.getHeight()\n\n if (width != null) {\n image.width = width\n }\n if (height != null) {\n image.height = height\n }\n\n const storeKey = [ \"imageElement\", this.attachment.id, image.src, image.width, image.height ].join(\"/\")\n image.dataset.trixStoreKey = storeKey\n }\n\n // Attachment delegate\n\n attachmentDidChangeAttributes() {\n this.refresh(this.image)\n return this.refresh()\n }\n}\n", "/* eslint-disable\n no-useless-escape,\n no-var,\n*/\nimport { NON_BREAKING_SPACE } from \"trix/constants\"\n\nimport ObjectView from \"trix/views/object_view\"\nimport AttachmentView from \"trix/views/attachment_view\"\nimport PreviewableAttachmentView from \"trix/views/previewable_attachment_view\"\n\nimport { findInnerElement, getTextConfig, makeElement } from \"trix/core/helpers\"\n\nexport default class PieceView extends ObjectView {\n constructor() {\n super(...arguments)\n this.piece = this.object\n this.attributes = this.piece.getAttributes()\n this.textConfig = this.options.textConfig\n this.context = this.options.context\n\n if (this.piece.attachment) {\n this.attachment = this.piece.attachment\n } else {\n this.string = this.piece.toString()\n }\n }\n\n createNodes() {\n let nodes = this.attachment ? this.createAttachmentNodes() : this.createStringNodes()\n const element = this.createElement()\n if (element) {\n const innerElement = findInnerElement(element)\n Array.from(nodes).forEach((node) => {\n innerElement.appendChild(node)\n })\n nodes = [ element ]\n }\n return nodes\n }\n\n createAttachmentNodes() {\n const constructor = this.attachment.isPreviewable() ? PreviewableAttachmentView : AttachmentView\n\n const view = this.createChildView(constructor, this.piece.attachment, { piece: this.piece })\n return view.getNodes()\n }\n\n createStringNodes() {\n if (this.textConfig?.plaintext) {\n return [ document.createTextNode(this.string) ]\n } else {\n const nodes = []\n const iterable = this.string.split(\"\\n\")\n for (let index = 0; index < iterable.length; index++) {\n const substring = iterable[index]\n if (index > 0) {\n const element = makeElement(\"br\")\n nodes.push(element)\n }\n\n if (substring.length) {\n const node = document.createTextNode(this.preserveSpaces(substring))\n nodes.push(node)\n }\n }\n return nodes\n }\n }\n\n createElement() {\n let element, key, value\n const styles = {}\n\n for (key in this.attributes) {\n value = this.attributes[key]\n const config = getTextConfig(key)\n if (config) {\n if (config.tagName) {\n var innerElement\n const pendingElement = makeElement(config.tagName)\n\n if (innerElement) {\n innerElement.appendChild(pendingElement)\n innerElement = pendingElement\n } else {\n element = innerElement = pendingElement\n }\n }\n\n if (config.styleProperty) {\n styles[config.styleProperty] = value\n }\n\n if (config.style) {\n for (key in config.style) {\n value = config.style[key]\n styles[key] = value\n }\n }\n }\n }\n\n if (Object.keys(styles).length) {\n if (!element) { element = makeElement(\"span\") }\n for (key in styles) {\n value = styles[key]\n element.style[key] = value\n }\n }\n return element\n }\n\n createContainerElement() {\n for (const key in this.attributes) {\n const value = this.attributes[key]\n const config = getTextConfig(key)\n if (config) {\n if (config.groupTagName) {\n const attributes = {}\n attributes[key] = value\n return makeElement(config.groupTagName, attributes)\n }\n }\n }\n }\n\n preserveSpaces(string) {\n if (this.context.isLast) {\n string = string.replace(/\\ $/, NON_BREAKING_SPACE)\n }\n\n string = string\n .replace(/(\\S)\\ {3}(\\S)/g, `$1 ${NON_BREAKING_SPACE} $2`)\n .replace(/\\ {2}/g, `${NON_BREAKING_SPACE} `)\n .replace(/\\ {2}/g, ` ${NON_BREAKING_SPACE}`)\n\n if (this.context.isFirst || this.context.followsWhitespace) {\n string = string.replace(/^\\ /, NON_BREAKING_SPACE)\n }\n\n return string\n }\n}\n", "/* eslint-disable\n no-var,\n*/\nimport ObjectView from \"trix/views/object_view\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\nimport PieceView from \"trix/views/piece_view\"\n\nexport default class TextView extends ObjectView {\n constructor() {\n super(...arguments)\n this.text = this.object\n this.textConfig = this.options.textConfig\n }\n\n createNodes() {\n const nodes = []\n const pieces = ObjectGroup.groupObjects(this.getPieces())\n const lastIndex = pieces.length - 1\n\n for (let index = 0; index < pieces.length; index++) {\n const piece = pieces[index]\n const context = {}\n if (index === 0) {\n context.isFirst = true\n }\n if (index === lastIndex) {\n context.isLast = true\n }\n if (endsWithWhitespace(previousPiece)) {\n context.followsWhitespace = true\n }\n\n const view = this.findOrCreateCachedChildView(PieceView, piece, { textConfig: this.textConfig, context })\n nodes.push(...Array.from(view.getNodes() || []))\n\n var previousPiece = piece\n }\n return nodes\n }\n\n getPieces() {\n return Array.from(this.text.getPieces()).filter((piece) => !piece.hasAttribute(\"blockBreak\"))\n }\n}\n\nconst endsWithWhitespace = (piece) => /\\s$/.test(piece?.toString())\n", "import * as config from \"trix/config\"\nimport ObjectView from \"trix/views/object_view\"\nimport TextView from \"trix/views/text_view\"\n\nimport { getBlockConfig, makeElement } from \"trix/core/helpers\"\nconst { css } = config\n\nexport default class BlockView extends ObjectView {\n constructor() {\n super(...arguments)\n this.block = this.object\n this.attributes = this.block.getAttributes()\n }\n\n createNodes() {\n const comment = document.createComment(\"block\")\n const nodes = [ comment ]\n if (this.block.isEmpty()) {\n nodes.push(makeElement(\"br\"))\n } else {\n const textConfig = getBlockConfig(this.block.getLastAttribute())?.text\n const textView = this.findOrCreateCachedChildView(TextView, this.block.text, { textConfig })\n nodes.push(...Array.from(textView.getNodes() || []))\n if (this.shouldAddExtraNewlineElement()) {\n nodes.push(makeElement(\"br\"))\n }\n }\n\n if (this.attributes.length) {\n return nodes\n } else {\n let attributes\n const { tagName } = config.blockAttributes.default\n if (this.block.isRTL()) {\n attributes = { dir: \"rtl\" }\n }\n\n const element = makeElement({ tagName, attributes })\n nodes.forEach((node) => element.appendChild(node))\n return [ element ]\n }\n }\n\n createContainerElement(depth) {\n const attributes = {}\n let className\n const attributeName = this.attributes[depth]\n\n const { tagName, htmlAttributes = [] } = getBlockConfig(attributeName)\n\n if (depth === 0 && this.block.isRTL()) {\n Object.assign(attributes, { dir: \"rtl\" })\n }\n\n if (attributeName === \"attachmentGallery\") {\n const size = this.block.getBlockBreakPosition()\n className = `${css.attachmentGallery} ${css.attachmentGallery}--${size}`\n }\n\n Object.entries(this.block.htmlAttributes).forEach(([ name, value ]) => {\n if (htmlAttributes.includes(name)) {\n attributes[name] = value\n }\n })\n\n return makeElement({ tagName, className, attributes })\n }\n\n // A single
at the end of a block element has no visual representation\n // so add an extra one.\n shouldAddExtraNewlineElement() {\n return /\\n\\n$/.test(this.block.toString())\n }\n}\n", "import { makeElement } from \"trix/core/helpers\"\n\nimport ElementStore from \"trix/core/collections/element_store\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\nimport ObjectView from \"trix/views/object_view\"\nimport BlockView from \"trix/views/block_view\"\n\nimport { defer } from \"trix/core/helpers\"\n\nexport default class DocumentView extends ObjectView {\n static render(document) {\n const element = makeElement(\"div\")\n const view = new this(document, { element })\n view.render()\n view.sync()\n return element\n }\n\n constructor() {\n super(...arguments)\n this.element = this.options.element\n this.elementStore = new ElementStore()\n this.setDocument(this.object)\n }\n\n setDocument(document) {\n if (!document.isEqualTo(this.document)) {\n this.document = this.object = document\n }\n }\n\n render() {\n this.childViews = []\n\n this.shadowElement = makeElement(\"div\")\n\n if (!this.document.isEmpty()) {\n const objects = ObjectGroup.groupObjects(this.document.getBlocks(), { asTree: true })\n\n Array.from(objects).forEach((object) => {\n const view = this.findOrCreateCachedChildView(BlockView, object)\n Array.from(view.getNodes()).map((node) => this.shadowElement.appendChild(node))\n })\n }\n }\n\n isSynced() {\n return elementsHaveEqualHTML(this.shadowElement, this.element)\n }\n\n sync() {\n const fragment = this.createDocumentFragmentForSync()\n while (this.element.lastChild) {\n this.element.removeChild(this.element.lastChild)\n }\n this.element.appendChild(fragment)\n return this.didSync()\n }\n\n // Private\n\n didSync() {\n this.elementStore.reset(findStoredElements(this.element))\n return defer(() => this.garbageCollectCachedViews())\n }\n\n createDocumentFragmentForSync() {\n const fragment = document.createDocumentFragment()\n\n Array.from(this.shadowElement.childNodes).forEach((node) => {\n fragment.appendChild(node.cloneNode(true))\n })\n\n Array.from(findStoredElements(fragment)).forEach((element) => {\n const storedElement = this.elementStore.remove(element)\n if (storedElement) {\n element.parentNode.replaceChild(storedElement, element)\n }\n })\n\n return fragment\n }\n}\n\nconst findStoredElements = (element) => element.querySelectorAll(\"[data-trix-store-key]\")\n\nconst elementsHaveEqualHTML = (element, otherElement) =>\n ignoreSpaces(element.innerHTML) === ignoreSpaces(otherElement.innerHTML)\n\nconst ignoreSpaces = (html) => html.replace(/ /g, \" \")\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Hash from \"trix/core/collections/hash\"\n\nexport default class Piece extends TrixObject {\n static types = {}\n\n static registerType(type, constructor) {\n constructor.type = type\n this.types[type] = constructor\n }\n\n static fromJSON(pieceJSON) {\n const constructor = this.types[pieceJSON.type]\n if (constructor) {\n return constructor.fromJSON(pieceJSON)\n }\n }\n\n constructor(value, attributes = {}) {\n super(...arguments)\n this.attributes = Hash.box(attributes)\n }\n\n copyWithAttributes(attributes) {\n return new this.constructor(this.getValue(), attributes)\n }\n\n copyWithAdditionalAttributes(attributes) {\n return this.copyWithAttributes(this.attributes.merge(attributes))\n }\n\n copyWithoutAttribute(attribute) {\n return this.copyWithAttributes(this.attributes.remove(attribute))\n }\n\n copy() {\n return this.copyWithAttributes(this.attributes)\n }\n\n getAttribute(attribute) {\n return this.attributes.get(attribute)\n }\n\n getAttributesHash() {\n return this.attributes\n }\n\n getAttributes() {\n return this.attributes.toObject()\n }\n\n hasAttribute(attribute) {\n return this.attributes.has(attribute)\n }\n\n hasSameStringValueAsPiece(piece) {\n return piece && this.toString() === piece.toString()\n }\n\n hasSameAttributesAsPiece(piece) {\n return piece && (this.attributes === piece.attributes || this.attributes.isEqualTo(piece.attributes))\n }\n\n isBlockBreak() {\n return false\n }\n\n isEqualTo(piece) {\n return (\n super.isEqualTo(...arguments) ||\n this.hasSameConstructorAs(piece) &&\n this.hasSameStringValueAsPiece(piece) &&\n this.hasSameAttributesAsPiece(piece)\n )\n }\n\n isEmpty() {\n return this.length === 0\n }\n\n isSerializable() {\n return true\n }\n\n toJSON() {\n return {\n type: this.constructor.type,\n attributes: this.getAttributes(),\n }\n }\n\n contentsForInspection() {\n return {\n type: this.constructor.type,\n attributes: this.attributes.inspect(),\n }\n }\n\n // Grouping\n\n canBeGrouped() {\n return this.hasAttribute(\"href\")\n }\n\n canBeGroupedWith(piece) {\n return this.getAttribute(\"href\") === piece.getAttribute(\"href\")\n }\n\n // Splittable\n\n getLength() {\n return this.length\n }\n\n canBeConsolidatedWith(piece) {\n return false\n }\n}\n", "import Operation from \"trix/core/utilities/operation\"\n\nexport default class ImagePreloadOperation extends Operation {\n constructor(url) {\n super(...arguments)\n this.url = url\n }\n\n perform(callback) {\n const image = new Image()\n\n image.onload = () => {\n image.width = this.width = image.naturalWidth\n image.height = this.height = image.naturalHeight\n return callback(true, image)\n }\n\n image.onerror = () => callback(false)\n\n image.src = this.url\n }\n}\n", "import * as config from \"trix/config\"\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Hash from \"trix/core/collections/hash\"\nimport ImagePreloadOperation from \"trix/operations/image_preload_operation\"\n\nexport default class Attachment extends TrixObject {\n static previewablePattern = /^image(\\/(gif|png|webp|jpe?g)|$)/\n\n static attachmentForFile(file) {\n const attributes = this.attributesForFile(file)\n const attachment = new this(attributes)\n attachment.setFile(file)\n return attachment\n }\n\n static attributesForFile(file) {\n return new Hash({\n filename: file.name,\n filesize: file.size,\n contentType: file.type,\n })\n }\n\n static fromJSON(attachmentJSON) {\n return new this(attachmentJSON)\n }\n\n constructor(attributes = {}) {\n super(attributes)\n this.releaseFile = this.releaseFile.bind(this)\n this.attributes = Hash.box(attributes)\n this.didChangeAttributes()\n }\n\n getAttribute(attribute) {\n return this.attributes.get(attribute)\n }\n\n hasAttribute(attribute) {\n return this.attributes.has(attribute)\n }\n\n getAttributes() {\n return this.attributes.toObject()\n }\n\n setAttributes(attributes = {}) {\n const newAttributes = this.attributes.merge(attributes)\n if (!this.attributes.isEqualTo(newAttributes)) {\n this.attributes = newAttributes\n this.didChangeAttributes()\n this.previewDelegate?.attachmentDidChangeAttributes?.(this)\n return this.delegate?.attachmentDidChangeAttributes?.(this)\n }\n }\n\n didChangeAttributes() {\n if (this.isPreviewable()) {\n return this.preloadURL()\n }\n }\n\n isPending() {\n return this.file != null && !(this.getURL() || this.getHref())\n }\n\n isPreviewable() {\n if (this.attributes.has(\"previewable\")) {\n return this.attributes.get(\"previewable\")\n } else {\n return Attachment.previewablePattern.test(this.getContentType())\n }\n }\n\n getType() {\n if (this.hasContent()) {\n return \"content\"\n } else if (this.isPreviewable()) {\n return \"preview\"\n } else {\n return \"file\"\n }\n }\n\n getURL() {\n return this.attributes.get(\"url\")\n }\n\n getHref() {\n return this.attributes.get(\"href\")\n }\n\n getFilename() {\n return this.attributes.get(\"filename\") || \"\"\n }\n\n getFilesize() {\n return this.attributes.get(\"filesize\")\n }\n\n getFormattedFilesize() {\n const filesize = this.attributes.get(\"filesize\")\n if (typeof filesize === \"number\") {\n return config.fileSize.formatter(filesize)\n } else {\n return \"\"\n }\n }\n\n getExtension() {\n return this.getFilename()\n .match(/\\.(\\w+)$/)?.[1]\n .toLowerCase()\n }\n\n getContentType() {\n return this.attributes.get(\"contentType\")\n }\n\n hasContent() {\n return this.attributes.has(\"content\")\n }\n\n getContent() {\n return this.attributes.get(\"content\")\n }\n\n getWidth() {\n return this.attributes.get(\"width\")\n }\n\n getHeight() {\n return this.attributes.get(\"height\")\n }\n\n getFile() {\n return this.file\n }\n\n setFile(file) {\n this.file = file\n if (this.isPreviewable()) {\n return this.preloadFile()\n }\n }\n\n releaseFile() {\n this.releasePreloadedFile()\n this.file = null\n }\n\n getUploadProgress() {\n return this.uploadProgress != null ? this.uploadProgress : 0\n }\n\n setUploadProgress(value) {\n if (this.uploadProgress !== value) {\n this.uploadProgress = value\n return this.uploadProgressDelegate?.attachmentDidChangeUploadProgress?.(this)\n }\n }\n\n toJSON() {\n return this.getAttributes()\n }\n\n getCacheKey() {\n return [ super.getCacheKey(...arguments), this.attributes.getCacheKey(), this.getPreviewURL() ].join(\"/\")\n }\n\n // Previewable\n\n getPreviewURL() {\n return this.previewURL || this.preloadingURL\n }\n\n setPreviewURL(url) {\n if (url !== this.getPreviewURL()) {\n this.previewURL = url\n this.previewDelegate?.attachmentDidChangeAttributes?.(this)\n return this.delegate?.attachmentDidChangePreviewURL?.(this)\n }\n }\n\n preloadURL() {\n return this.preload(this.getURL(), this.releaseFile)\n }\n\n preloadFile() {\n if (this.file) {\n this.fileObjectURL = URL.createObjectURL(this.file)\n return this.preload(this.fileObjectURL)\n }\n }\n\n releasePreloadedFile() {\n if (this.fileObjectURL) {\n URL.revokeObjectURL(this.fileObjectURL)\n this.fileObjectURL = null\n }\n }\n\n preload(url, callback) {\n if (url && url !== this.getPreviewURL()) {\n this.preloadingURL = url\n const operation = new ImagePreloadOperation(url)\n return operation\n .then(({ width, height }) => {\n if (!this.getWidth() || !this.getHeight()) {\n this.setAttributes({ width, height })\n }\n this.preloadingURL = null\n this.setPreviewURL(url)\n return callback?.()\n })\n .catch(() => {\n this.preloadingURL = null\n return callback?.()\n })\n }\n }\n}\n", "import { OBJECT_REPLACEMENT_CHARACTER } from \"trix/constants\"\n\nimport Attachment from \"trix/models/attachment\"\nimport Piece from \"trix/models/piece\"\n\nexport default class AttachmentPiece extends Piece {\n static permittedAttributes = [ \"caption\", \"presentation\" ]\n\n static fromJSON(pieceJSON) {\n return new this(Attachment.fromJSON(pieceJSON.attachment), pieceJSON.attributes)\n }\n\n constructor(attachment) {\n super(...arguments)\n this.attachment = attachment\n this.length = 1\n this.ensureAttachmentExclusivelyHasAttribute(\"href\")\n if (!this.attachment.hasContent()) {\n this.removeProhibitedAttributes()\n }\n }\n\n ensureAttachmentExclusivelyHasAttribute(attribute) {\n if (this.hasAttribute(attribute)) {\n if (!this.attachment.hasAttribute(attribute)) {\n this.attachment.setAttributes(this.attributes.slice([ attribute ]))\n }\n this.attributes = this.attributes.remove(attribute)\n }\n }\n\n removeProhibitedAttributes() {\n const attributes = this.attributes.slice(AttachmentPiece.permittedAttributes)\n if (!attributes.isEqualTo(this.attributes)) {\n this.attributes = attributes\n }\n }\n\n getValue() {\n return this.attachment\n }\n\n isSerializable() {\n return !this.attachment.isPending()\n }\n\n getCaption() {\n return this.attributes.get(\"caption\") || \"\"\n }\n\n isEqualTo(piece) {\n return super.isEqualTo(piece) && this.attachment.id === piece?.attachment?.id\n }\n\n toString() {\n return OBJECT_REPLACEMENT_CHARACTER\n }\n\n toJSON() {\n const json = super.toJSON(...arguments)\n json.attachment = this.attachment\n return json\n }\n\n getCacheKey() {\n return [ super.getCacheKey(...arguments), this.attachment.getCacheKey() ].join(\"/\")\n }\n\n toConsole() {\n return JSON.stringify(this.toString())\n }\n}\n\nPiece.registerType(\"attachment\", AttachmentPiece)\n", "import Piece from \"trix/models/piece\"\n\nimport { normalizeNewlines } from \"trix/core/helpers\"\n\nexport default class StringPiece extends Piece {\n static fromJSON(pieceJSON) {\n return new this(pieceJSON.string, pieceJSON.attributes)\n }\n\n constructor(string) {\n super(...arguments)\n this.string = normalizeNewlines(string)\n this.length = this.string.length\n }\n\n getValue() {\n return this.string\n }\n\n toString() {\n return this.string.toString()\n }\n\n isBlockBreak() {\n return this.toString() === \"\\n\" && this.getAttribute(\"blockBreak\") === true\n }\n\n toJSON() {\n const result = super.toJSON(...arguments)\n result.string = this.string\n return result\n }\n\n // Splittable\n\n canBeConsolidatedWith(piece) {\n return piece && this.hasSameConstructorAs(piece) && this.hasSameAttributesAsPiece(piece)\n }\n\n consolidateWith(piece) {\n return new this.constructor(this.toString() + piece.toString(), this.attributes)\n }\n\n splitAtOffset(offset) {\n let left, right\n if (offset === 0) {\n left = null\n right = this\n } else if (offset === this.length) {\n left = this\n right = null\n } else {\n left = new this.constructor(this.string.slice(0, offset), this.attributes)\n right = new this.constructor(this.string.slice(offset), this.attributes)\n }\n return [ left, right ]\n }\n\n toConsole() {\n let { string } = this\n if (string.length > 15) {\n string = string.slice(0, 14) + \"…\"\n }\n return JSON.stringify(string.toString())\n }\n}\n\nPiece.registerType(\"string\", StringPiece)\n", "/* eslint-disable\n prefer-const,\n*/\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport { spliceArray } from \"trix/core/helpers\"\n\nexport default class SplittableList extends TrixObject {\n static box(objects) {\n if (objects instanceof this) {\n return objects\n } else {\n return new this(objects)\n }\n }\n\n constructor(objects = []) {\n super(...arguments)\n this.objects = objects.slice(0)\n this.length = this.objects.length\n }\n\n indexOf(object) {\n return this.objects.indexOf(object)\n }\n\n splice(...args) {\n return new this.constructor(spliceArray(this.objects, ...args))\n }\n\n eachObject(callback) {\n return this.objects.map((object, index) => callback(object, index))\n }\n\n insertObjectAtIndex(object, index) {\n return this.splice(index, 0, object)\n }\n\n insertSplittableListAtIndex(splittableList, index) {\n return this.splice(index, 0, ...splittableList.objects)\n }\n\n insertSplittableListAtPosition(splittableList, position) {\n const [ objects, index ] = this.splitObjectAtPosition(position)\n return new this.constructor(objects).insertSplittableListAtIndex(splittableList, index)\n }\n\n editObjectAtIndex(index, callback) {\n return this.replaceObjectAtIndex(callback(this.objects[index]), index)\n }\n\n replaceObjectAtIndex(object, index) {\n return this.splice(index, 1, object)\n }\n\n removeObjectAtIndex(index) {\n return this.splice(index, 1)\n }\n\n getObjectAtIndex(index) {\n return this.objects[index]\n }\n\n getSplittableListInRange(range) {\n const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n return new this.constructor(objects.slice(leftIndex, rightIndex + 1))\n }\n\n selectSplittableList(test) {\n const objects = this.objects.filter((object) => test(object))\n return new this.constructor(objects)\n }\n\n removeObjectsInRange(range) {\n const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n return new this.constructor(objects).splice(leftIndex, rightIndex - leftIndex + 1)\n }\n\n transformObjectsInRange(range, transform) {\n const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n const transformedObjects = objects.map((object, index) =>\n leftIndex <= index && index <= rightIndex ? transform(object) : object\n )\n return new this.constructor(transformedObjects)\n }\n\n splitObjectsAtRange(range) {\n let rightOuterIndex\n let [ objects, leftInnerIndex, offset ] = this.splitObjectAtPosition(startOfRange(range))\n ;[ objects, rightOuterIndex ] = new this.constructor(objects).splitObjectAtPosition(endOfRange(range) + offset)\n\n return [ objects, leftInnerIndex, rightOuterIndex - 1 ]\n }\n\n getObjectAtPosition(position) {\n const { index } = this.findIndexAndOffsetAtPosition(position)\n return this.objects[index]\n }\n\n splitObjectAtPosition(position) {\n let splitIndex, splitOffset\n const { index, offset } = this.findIndexAndOffsetAtPosition(position)\n const objects = this.objects.slice(0)\n if (index != null) {\n if (offset === 0) {\n splitIndex = index\n splitOffset = 0\n } else {\n const object = this.getObjectAtIndex(index)\n const [ leftObject, rightObject ] = object.splitAtOffset(offset)\n objects.splice(index, 1, leftObject, rightObject)\n splitIndex = index + 1\n splitOffset = leftObject.getLength() - offset\n }\n } else {\n splitIndex = objects.length\n splitOffset = 0\n }\n\n return [ objects, splitIndex, splitOffset ]\n }\n\n consolidate() {\n const objects = []\n let pendingObject = this.objects[0]\n\n this.objects.slice(1).forEach((object) => {\n if (pendingObject.canBeConsolidatedWith?.(object)) {\n pendingObject = pendingObject.consolidateWith(object)\n } else {\n objects.push(pendingObject)\n pendingObject = object\n }\n })\n\n if (pendingObject) {\n objects.push(pendingObject)\n }\n\n return new this.constructor(objects)\n }\n\n consolidateFromIndexToIndex(startIndex, endIndex) {\n const objects = this.objects.slice(0)\n const objectsInRange = objects.slice(startIndex, endIndex + 1)\n const consolidatedInRange = new this.constructor(objectsInRange).consolidate().toArray()\n return this.splice(startIndex, objectsInRange.length, ...consolidatedInRange)\n }\n\n findIndexAndOffsetAtPosition(position) {\n let index\n let currentPosition = 0\n for (index = 0; index < this.objects.length; index++) {\n const object = this.objects[index]\n const nextPosition = currentPosition + object.getLength()\n if (currentPosition <= position && position < nextPosition) {\n return { index, offset: position - currentPosition }\n }\n currentPosition = nextPosition\n }\n return { index: null, offset: null }\n }\n\n findPositionAtIndexAndOffset(index, offset) {\n let position = 0\n for (let currentIndex = 0; currentIndex < this.objects.length; currentIndex++) {\n const object = this.objects[currentIndex]\n if (currentIndex < index) {\n position += object.getLength()\n } else if (currentIndex === index) {\n position += offset\n break\n }\n }\n return position\n }\n\n getEndPosition() {\n if (this.endPosition == null) {\n this.endPosition = 0\n this.objects.forEach((object) => this.endPosition += object.getLength())\n }\n\n return this.endPosition\n }\n\n toString() {\n return this.objects.join(\"\")\n }\n\n toArray() {\n return this.objects.slice(0)\n }\n\n toJSON() {\n return this.toArray()\n }\n\n isEqualTo(splittableList) {\n return super.isEqualTo(...arguments) || objectArraysAreEqual(this.objects, splittableList?.objects)\n }\n\n contentsForInspection() {\n return {\n objects: `[${this.objects.map((object) => object.inspect()).join(\", \")}]`,\n }\n }\n}\n\nconst objectArraysAreEqual = function(left, right = []) {\n if (left.length !== right.length) {\n return false\n }\n let result = true\n for (let index = 0; index < left.length; index++) {\n const object = left[index]\n if (result && !object.isEqualTo(right[index])) {\n result = false\n }\n }\n return result\n}\n\nconst startOfRange = (range) => range[0]\n\nconst endOfRange = (range) => range[1]\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport { getDirection } from \"trix/core/helpers\"\n\nimport Piece from \"trix/models/piece\"\nimport AttachmentPiece from \"trix/models/attachment_piece\"\nimport StringPiece from \"trix/models/string_piece\"\nimport SplittableList from \"trix/models/splittable_list\"\n\nimport Hash from \"trix/core/collections/hash\"\n\nexport default class Text extends TrixObject {\n static textForAttachmentWithAttributes(attachment, attributes) {\n const piece = new AttachmentPiece(attachment, attributes)\n return new this([ piece ])\n }\n\n static textForStringWithAttributes(string, attributes) {\n const piece = new StringPiece(string, attributes)\n return new this([ piece ])\n }\n\n static fromJSON(textJSON) {\n const pieces = Array.from(textJSON).map((pieceJSON) => Piece.fromJSON(pieceJSON))\n return new this(pieces)\n }\n\n constructor(pieces = []) {\n super(...arguments)\n const notEmpty = pieces.filter((piece) => !piece.isEmpty())\n this.pieceList = new SplittableList(notEmpty)\n }\n\n copy() {\n return this.copyWithPieceList(this.pieceList)\n }\n\n copyWithPieceList(pieceList) {\n return new this.constructor(pieceList.consolidate().toArray())\n }\n\n copyUsingObjectMap(objectMap) {\n const pieces = this.getPieces().map((piece) => objectMap.find(piece) || piece)\n return new this.constructor(pieces)\n }\n\n appendText(text) {\n return this.insertTextAtPosition(text, this.getLength())\n }\n\n insertTextAtPosition(text, position) {\n return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(text.pieceList, position))\n }\n\n removeTextAtRange(range) {\n return this.copyWithPieceList(this.pieceList.removeObjectsInRange(range))\n }\n\n replaceTextAtRange(text, range) {\n return this.removeTextAtRange(range).insertTextAtPosition(text, range[0])\n }\n\n moveTextFromRangeToPosition(range, position) {\n if (range[0] <= position && position <= range[1]) return\n const text = this.getTextAtRange(range)\n const length = text.getLength()\n if (range[0] < position) {\n position -= length\n }\n return this.removeTextAtRange(range).insertTextAtPosition(text, position)\n }\n\n addAttributeAtRange(attribute, value, range) {\n const attributes = {}\n attributes[attribute] = value\n return this.addAttributesAtRange(attributes, range)\n }\n\n addAttributesAtRange(attributes, range) {\n return this.copyWithPieceList(\n this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithAdditionalAttributes(attributes))\n )\n }\n\n removeAttributeAtRange(attribute, range) {\n return this.copyWithPieceList(\n this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithoutAttribute(attribute))\n )\n }\n\n setAttributesAtRange(attributes, range) {\n return this.copyWithPieceList(\n this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithAttributes(attributes))\n )\n }\n\n getAttributesAtPosition(position) {\n return this.pieceList.getObjectAtPosition(position)?.getAttributes() || {}\n }\n\n getCommonAttributes() {\n const objects = Array.from(this.pieceList.toArray()).map((piece) => piece.getAttributes())\n return Hash.fromCommonAttributesOfObjects(objects).toObject()\n }\n\n getCommonAttributesAtRange(range) {\n return this.getTextAtRange(range).getCommonAttributes() || {}\n }\n\n getExpandedRangeForAttributeAtOffset(attributeName, offset) {\n let right\n let left = right = offset\n const length = this.getLength()\n\n while (left > 0 && this.getCommonAttributesAtRange([ left - 1, right ])[attributeName]) {\n left--\n }\n while (right < length && this.getCommonAttributesAtRange([ offset, right + 1 ])[attributeName]) {\n right++\n }\n\n return [ left, right ]\n }\n\n getTextAtRange(range) {\n return this.copyWithPieceList(this.pieceList.getSplittableListInRange(range))\n }\n\n getStringAtRange(range) {\n return this.pieceList.getSplittableListInRange(range).toString()\n }\n\n getStringAtPosition(position) {\n return this.getStringAtRange([ position, position + 1 ])\n }\n\n startsWithString(string) {\n return this.getStringAtRange([ 0, string.length ]) === string\n }\n\n endsWithString(string) {\n const length = this.getLength()\n return this.getStringAtRange([ length - string.length, length ]) === string\n }\n\n getAttachmentPieces() {\n return this.pieceList.toArray().filter((piece) => !!piece.attachment)\n }\n\n getAttachments() {\n return this.getAttachmentPieces().map((piece) => piece.attachment)\n }\n\n getAttachmentAndPositionById(attachmentId) {\n let position = 0\n for (const piece of this.pieceList.toArray()) {\n if (piece.attachment?.id === attachmentId) {\n return { attachment: piece.attachment, position }\n }\n position += piece.length\n }\n return { attachment: null, position: null }\n }\n\n getAttachmentById(attachmentId) {\n const { attachment } = this.getAttachmentAndPositionById(attachmentId)\n return attachment\n }\n\n getRangeOfAttachment(attachment) {\n const attachmentAndPosition = this.getAttachmentAndPositionById(attachment.id)\n const position = attachmentAndPosition.position\n attachment = attachmentAndPosition.attachment\n if (attachment) {\n return [ position, position + 1 ]\n }\n }\n\n updateAttributesForAttachment(attributes, attachment) {\n const range = this.getRangeOfAttachment(attachment)\n if (range) {\n return this.addAttributesAtRange(attributes, range)\n } else {\n return this\n }\n }\n\n getLength() {\n return this.pieceList.getEndPosition()\n }\n\n isEmpty() {\n return this.getLength() === 0\n }\n\n isEqualTo(text) {\n return super.isEqualTo(text) || text?.pieceList?.isEqualTo(this.pieceList)\n }\n\n isBlockBreak() {\n return this.getLength() === 1 && this.pieceList.getObjectAtIndex(0).isBlockBreak()\n }\n\n eachPiece(callback) {\n return this.pieceList.eachObject(callback)\n }\n\n getPieces() {\n return this.pieceList.toArray()\n }\n\n getPieceAtPosition(position) {\n return this.pieceList.getObjectAtPosition(position)\n }\n\n contentsForInspection() {\n return { pieceList: this.pieceList.inspect() }\n }\n\n toSerializableText() {\n const pieceList = this.pieceList.selectSplittableList((piece) => piece.isSerializable())\n return this.copyWithPieceList(pieceList)\n }\n\n toString() {\n return this.pieceList.toString()\n }\n\n toJSON() {\n return this.pieceList.toJSON()\n }\n\n toConsole() {\n return JSON.stringify(this.pieceList.toArray().map((piece) => JSON.parse(piece.toConsole())))\n }\n\n // BIDI\n\n getDirection() {\n return getDirection(this.toString())\n }\n\n isRTL() {\n return this.getDirection() === \"rtl\"\n }\n}\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Text from \"trix/models/text\"\n\nimport {\n arraysAreEqual,\n getBlockConfig,\n getListAttributeNames,\n objectsAreEqual,\n spliceArray,\n} from \"trix/core/helpers\"\n\nexport default class Block extends TrixObject {\n static fromJSON(blockJSON) {\n const text = Text.fromJSON(blockJSON.text)\n return new this(text, blockJSON.attributes, blockJSON.htmlAttributes)\n }\n\n constructor(text, attributes, htmlAttributes) {\n super(...arguments)\n this.text = applyBlockBreakToText(text || new Text())\n this.attributes = attributes || []\n this.htmlAttributes = htmlAttributes || {}\n }\n\n isEmpty() {\n return this.text.isBlockBreak()\n }\n\n isEqualTo(block) {\n if (super.isEqualTo(block)) return true\n\n return this.text.isEqualTo(block?.text) && arraysAreEqual(this.attributes, block?.attributes) && objectsAreEqual(this.htmlAttributes, block?.htmlAttributes)\n }\n\n copyWithText(text) {\n return new Block(text, this.attributes, this.htmlAttributes)\n }\n\n copyWithoutText() {\n return this.copyWithText(null)\n }\n\n copyWithAttributes(attributes) {\n return new Block(this.text, attributes, this.htmlAttributes)\n }\n\n copyWithoutAttributes() {\n return this.copyWithAttributes(null)\n }\n\n copyUsingObjectMap(objectMap) {\n const mappedText = objectMap.find(this.text)\n if (mappedText) {\n return this.copyWithText(mappedText)\n } else {\n return this.copyWithText(this.text.copyUsingObjectMap(objectMap))\n }\n }\n\n addAttribute(attribute) {\n const attributes = this.attributes.concat(expandAttribute(attribute))\n return this.copyWithAttributes(attributes)\n }\n\n addHTMLAttribute(attribute, value) {\n const htmlAttributes = Object.assign({}, this.htmlAttributes, { [attribute]: value })\n return new Block(this.text, this.attributes, htmlAttributes)\n }\n\n removeAttribute(attribute) {\n const { listAttribute } = getBlockConfig(attribute)\n const attributes = removeLastValue(removeLastValue(this.attributes, attribute), listAttribute)\n return this.copyWithAttributes(attributes)\n }\n\n removeLastAttribute() {\n return this.removeAttribute(this.getLastAttribute())\n }\n\n getLastAttribute() {\n return getLastElement(this.attributes)\n }\n\n getAttributes() {\n return this.attributes.slice(0)\n }\n\n getAttributeLevel() {\n return this.attributes.length\n }\n\n getAttributeAtLevel(level) {\n return this.attributes[level - 1]\n }\n\n hasAttribute(attributeName) {\n return this.attributes.includes(attributeName)\n }\n\n hasAttributes() {\n return this.getAttributeLevel() > 0\n }\n\n getLastNestableAttribute() {\n return getLastElement(this.getNestableAttributes())\n }\n\n getNestableAttributes() {\n return this.attributes.filter((attribute) => getBlockConfig(attribute).nestable)\n }\n\n getNestingLevel() {\n return this.getNestableAttributes().length\n }\n\n decreaseNestingLevel() {\n const attribute = this.getLastNestableAttribute()\n if (attribute) {\n return this.removeAttribute(attribute)\n } else {\n return this\n }\n }\n\n increaseNestingLevel() {\n const attribute = this.getLastNestableAttribute()\n if (attribute) {\n const index = this.attributes.lastIndexOf(attribute)\n const attributes = spliceArray(this.attributes, index + 1, 0, ...expandAttribute(attribute))\n return this.copyWithAttributes(attributes)\n } else {\n return this\n }\n }\n\n getListItemAttributes() {\n return this.attributes.filter((attribute) => getBlockConfig(attribute).listAttribute)\n }\n\n isListItem() {\n return getBlockConfig(this.getLastAttribute())?.listAttribute\n }\n\n isTerminalBlock() {\n return getBlockConfig(this.getLastAttribute())?.terminal\n }\n\n breaksOnReturn() {\n return getBlockConfig(this.getLastAttribute())?.breakOnReturn\n }\n\n findLineBreakInDirectionFromPosition(direction, position) {\n const string = this.toString()\n let result\n switch (direction) {\n case \"forward\":\n result = string.indexOf(\"\\n\", position)\n break\n case \"backward\":\n result = string.slice(0, position).lastIndexOf(\"\\n\")\n }\n\n if (result !== -1) {\n return result\n }\n }\n\n contentsForInspection() {\n return {\n text: this.text.inspect(),\n attributes: this.attributes,\n }\n }\n\n toString() {\n return this.text.toString()\n }\n\n toJSON() {\n return {\n text: this.text,\n attributes: this.attributes,\n htmlAttributes: this.htmlAttributes,\n }\n }\n\n // BIDI\n\n getDirection() {\n return this.text.getDirection()\n }\n\n isRTL() {\n return this.text.isRTL()\n }\n\n // Splittable\n\n getLength() {\n return this.text.getLength()\n }\n\n canBeConsolidatedWith(block) {\n return !this.hasAttributes() && !block.hasAttributes() && this.getDirection() === block.getDirection()\n }\n\n consolidateWith(block) {\n const newlineText = Text.textForStringWithAttributes(\"\\n\")\n const text = this.getTextWithoutBlockBreak().appendText(newlineText)\n return this.copyWithText(text.appendText(block.text))\n }\n\n splitAtOffset(offset) {\n let left, right\n if (offset === 0) {\n left = null\n right = this\n } else if (offset === this.getLength()) {\n left = this\n right = null\n } else {\n left = this.copyWithText(this.text.getTextAtRange([ 0, offset ]))\n right = this.copyWithText(this.text.getTextAtRange([ offset, this.getLength() ]))\n }\n return [ left, right ]\n }\n\n getBlockBreakPosition() {\n return this.text.getLength() - 1\n }\n\n getTextWithoutBlockBreak() {\n if (textEndsInBlockBreak(this.text)) {\n return this.text.getTextAtRange([ 0, this.getBlockBreakPosition() ])\n } else {\n return this.text.copy()\n }\n }\n\n // Grouping\n\n canBeGrouped(depth) {\n return this.attributes[depth]\n }\n\n canBeGroupedWith(otherBlock, depth) {\n const otherAttributes = otherBlock.getAttributes()\n const otherAttribute = otherAttributes[depth]\n const attribute = this.attributes[depth]\n\n return (\n attribute === otherAttribute &&\n !(getBlockConfig(attribute).group === false && !getListAttributeNames().includes(otherAttributes[depth + 1])) &&\n (this.getDirection() === otherBlock.getDirection() || otherBlock.isEmpty())\n )\n }\n}\n\n// Block breaks\n\nconst applyBlockBreakToText = function(text) {\n text = unmarkExistingInnerBlockBreaksInText(text)\n text = addBlockBreakToText(text)\n return text\n}\n\nconst unmarkExistingInnerBlockBreaksInText = function(text) {\n let modified = false\n const pieces = text.getPieces()\n\n let innerPieces = pieces.slice(0, pieces.length - 1)\n const lastPiece = pieces[pieces.length - 1]\n\n if (!lastPiece) return text\n\n innerPieces = innerPieces.map((piece) => {\n if (piece.isBlockBreak()) {\n modified = true\n return unmarkBlockBreakPiece(piece)\n } else {\n return piece\n }\n })\n\n if (modified) {\n return new Text([ ...innerPieces, lastPiece ])\n } else {\n return text\n }\n}\n\nconst blockBreakText = Text.textForStringWithAttributes(\"\\n\", { blockBreak: true })\n\nconst addBlockBreakToText = function(text) {\n if (textEndsInBlockBreak(text)) {\n return text\n } else {\n return text.appendText(blockBreakText)\n }\n}\n\nconst textEndsInBlockBreak = function(text) {\n const length = text.getLength()\n if (length === 0) {\n return false\n }\n const endText = text.getTextAtRange([ length - 1, length ])\n return endText.isBlockBreak()\n}\n\nconst unmarkBlockBreakPiece = (piece) => piece.copyWithoutAttribute(\"blockBreak\")\n\n// Attributes\n\nconst expandAttribute = function(attribute) {\n const { listAttribute } = getBlockConfig(attribute)\n if (listAttribute) {\n return [ listAttribute, attribute ]\n } else {\n return [ attribute ]\n }\n}\n\n// Array helpers\n\nconst getLastElement = (array) => array.slice(-1)[0]\n\nconst removeLastValue = function(array, value) {\n const index = array.lastIndexOf(value)\n if (index === -1) {\n return array\n } else {\n return spliceArray(array, index, 1)\n }\n}\n", "import * as config from \"trix/config\"\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport Text from \"trix/models/text\"\nimport Block from \"trix/models/block\"\nimport SplittableList from \"trix/models/splittable_list\"\nimport Hash from \"trix/core/collections/hash\"\nimport ObjectMap from \"trix/core/collections/object_map\"\n\nimport { arraysAreEqual, getBlockConfig, normalizeRange, rangeIsCollapsed } from \"trix/core/helpers\"\n\nexport default class Document extends TrixObject {\n static fromJSON(documentJSON) {\n const blocks = Array.from(documentJSON).map((blockJSON) => Block.fromJSON(blockJSON))\n return new this(blocks)\n }\n\n static fromString(string, textAttributes) {\n const text = Text.textForStringWithAttributes(string, textAttributes)\n return new this([ new Block(text) ])\n }\n\n constructor(blocks = []) {\n super(...arguments)\n if (blocks.length === 0) {\n blocks = [ new Block() ]\n }\n this.blockList = SplittableList.box(blocks)\n }\n\n isEmpty() {\n const block = this.getBlockAtIndex(0)\n return this.blockList.length === 1 && block.isEmpty() && !block.hasAttributes()\n }\n\n copy(options = {}) {\n const blocks = options.consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray()\n\n return new this.constructor(blocks)\n }\n\n copyUsingObjectsFromDocument(sourceDocument) {\n const objectMap = new ObjectMap(sourceDocument.getObjects())\n return this.copyUsingObjectMap(objectMap)\n }\n\n copyUsingObjectMap(objectMap) {\n const blocks = this.getBlocks().map((block) => {\n const mappedBlock = objectMap.find(block)\n return mappedBlock || block.copyUsingObjectMap(objectMap)\n })\n return new this.constructor(blocks)\n }\n\n copyWithBaseBlockAttributes(blockAttributes = []) {\n const blocks = this.getBlocks().map((block) => {\n const attributes = blockAttributes.concat(block.getAttributes())\n return block.copyWithAttributes(attributes)\n })\n\n return new this.constructor(blocks)\n }\n\n replaceBlock(oldBlock, newBlock) {\n const index = this.blockList.indexOf(oldBlock)\n if (index === -1) {\n return this\n }\n return new this.constructor(this.blockList.replaceObjectAtIndex(newBlock, index))\n }\n\n insertDocumentAtRange(document, range) {\n const { blockList } = document\n range = normalizeRange(range)\n let [ position ] = range\n const { index, offset } = this.locationFromPosition(position)\n\n let result = this\n const block = this.getBlockAtPosition(position)\n\n if (rangeIsCollapsed(range) && block.isEmpty() && !block.hasAttributes()) {\n result = new this.constructor(result.blockList.removeObjectAtIndex(index))\n } else if (block.getBlockBreakPosition() === offset) {\n position++\n }\n\n result = result.removeTextAtRange(range)\n return new this.constructor(result.blockList.insertSplittableListAtPosition(blockList, position))\n }\n\n mergeDocumentAtRange(document, range) {\n let formattedDocument, result\n range = normalizeRange(range)\n const [ startPosition ] = range\n const startLocation = this.locationFromPosition(startPosition)\n const blockAttributes = this.getBlockAtIndex(startLocation.index).getAttributes()\n const baseBlockAttributes = document.getBaseBlockAttributes()\n const trailingBlockAttributes = blockAttributes.slice(-baseBlockAttributes.length)\n\n if (arraysAreEqual(baseBlockAttributes, trailingBlockAttributes)) {\n const leadingBlockAttributes = blockAttributes.slice(0, -baseBlockAttributes.length)\n formattedDocument = document.copyWithBaseBlockAttributes(leadingBlockAttributes)\n } else {\n formattedDocument = document.copy({ consolidateBlocks: true }).copyWithBaseBlockAttributes(blockAttributes)\n }\n\n const blockCount = formattedDocument.getBlockCount()\n const firstBlock = formattedDocument.getBlockAtIndex(0)\n\n if (arraysAreEqual(blockAttributes, firstBlock.getAttributes())) {\n const firstText = firstBlock.getTextWithoutBlockBreak()\n result = this.insertTextAtRange(firstText, range)\n\n if (blockCount > 1) {\n formattedDocument = new this.constructor(formattedDocument.getBlocks().slice(1))\n const position = startPosition + firstText.getLength()\n result = result.insertDocumentAtRange(formattedDocument, position)\n }\n } else {\n result = this.insertDocumentAtRange(formattedDocument, range)\n }\n\n return result\n }\n\n insertTextAtRange(text, range) {\n range = normalizeRange(range)\n const [ startPosition ] = range\n const { index, offset } = this.locationFromPosition(startPosition)\n\n const document = this.removeTextAtRange(range)\n return new this.constructor(\n document.blockList.editObjectAtIndex(index, (block) =>\n block.copyWithText(block.text.insertTextAtPosition(text, offset))\n )\n )\n }\n\n removeTextAtRange(range) {\n let blocks\n range = normalizeRange(range)\n const [ leftPosition, rightPosition ] = range\n if (rangeIsCollapsed(range)) {\n return this\n }\n const [ leftLocation, rightLocation ] = Array.from(this.locationRangeFromRange(range))\n\n const leftIndex = leftLocation.index\n const leftOffset = leftLocation.offset\n const leftBlock = this.getBlockAtIndex(leftIndex)\n\n const rightIndex = rightLocation.index\n const rightOffset = rightLocation.offset\n const rightBlock = this.getBlockAtIndex(rightIndex)\n\n const removeRightNewline =\n rightPosition - leftPosition === 1 &&\n leftBlock.getBlockBreakPosition() === leftOffset &&\n rightBlock.getBlockBreakPosition() !== rightOffset &&\n rightBlock.text.getStringAtPosition(rightOffset) === \"\\n\"\n\n if (removeRightNewline) {\n blocks = this.blockList.editObjectAtIndex(rightIndex, (block) =>\n block.copyWithText(block.text.removeTextAtRange([ rightOffset, rightOffset + 1 ]))\n )\n } else {\n let block\n const leftText = leftBlock.text.getTextAtRange([ 0, leftOffset ])\n const rightText = rightBlock.text.getTextAtRange([ rightOffset, rightBlock.getLength() ])\n const text = leftText.appendText(rightText)\n\n const removingLeftBlock = leftIndex !== rightIndex && leftOffset === 0\n const useRightBlock = removingLeftBlock && leftBlock.getAttributeLevel() >= rightBlock.getAttributeLevel()\n\n if (useRightBlock) {\n block = rightBlock.copyWithText(text)\n } else {\n block = leftBlock.copyWithText(text)\n }\n\n const affectedBlockCount = rightIndex + 1 - leftIndex\n blocks = this.blockList.splice(leftIndex, affectedBlockCount, block)\n }\n\n return new this.constructor(blocks)\n }\n\n moveTextFromRangeToPosition(range, position) {\n let text\n range = normalizeRange(range)\n const [ startPosition, endPosition ] = range\n if (startPosition <= position && position <= endPosition) {\n return this\n }\n\n let document = this.getDocumentAtRange(range)\n let result = this.removeTextAtRange(range)\n\n const movingRightward = startPosition < position\n if (movingRightward) {\n position -= document.getLength()\n }\n\n const [ firstBlock, ...blocks ] = document.getBlocks()\n if (blocks.length === 0) {\n text = firstBlock.getTextWithoutBlockBreak()\n if (movingRightward) {\n position += 1\n }\n } else {\n text = firstBlock.text\n }\n\n result = result.insertTextAtRange(text, position)\n if (blocks.length === 0) {\n return result\n }\n\n document = new this.constructor(blocks)\n position += text.getLength()\n\n return result.insertDocumentAtRange(document, position)\n }\n\n addAttributeAtRange(attribute, value, range) {\n let { blockList } = this\n this.eachBlockAtRange(\n range,\n (block, textRange, index) =>\n blockList = blockList.editObjectAtIndex(index, function() {\n if (getBlockConfig(attribute)) {\n return block.addAttribute(attribute, value)\n } else {\n if (textRange[0] === textRange[1]) {\n return block\n } else {\n return block.copyWithText(block.text.addAttributeAtRange(attribute, value, textRange))\n }\n }\n })\n )\n return new this.constructor(blockList)\n }\n\n addAttribute(attribute, value) {\n let { blockList } = this\n this.eachBlock(\n (block, index) => blockList = blockList.editObjectAtIndex(index, () => block.addAttribute(attribute, value))\n )\n return new this.constructor(blockList)\n }\n\n removeAttributeAtRange(attribute, range) {\n let { blockList } = this\n this.eachBlockAtRange(range, function(block, textRange, index) {\n if (getBlockConfig(attribute)) {\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(attribute))\n } else if (textRange[0] !== textRange[1]) {\n blockList = blockList.editObjectAtIndex(index, () =>\n block.copyWithText(block.text.removeAttributeAtRange(attribute, textRange))\n )\n }\n })\n return new this.constructor(blockList)\n }\n\n updateAttributesForAttachment(attributes, attachment) {\n const range = this.getRangeOfAttachment(attachment)\n const [ startPosition ] = Array.from(range)\n const { index } = this.locationFromPosition(startPosition)\n const text = this.getTextAtIndex(index)\n\n return new this.constructor(\n this.blockList.editObjectAtIndex(index, (block) =>\n block.copyWithText(text.updateAttributesForAttachment(attributes, attachment))\n )\n )\n }\n\n removeAttributeForAttachment(attribute, attachment) {\n const range = this.getRangeOfAttachment(attachment)\n return this.removeAttributeAtRange(attribute, range)\n }\n\n setHTMLAttributeAtPosition(position, name, value) {\n const block = this.getBlockAtPosition(position)\n const updatedBlock = block.addHTMLAttribute(name, value)\n return this.replaceBlock(block, updatedBlock)\n }\n\n insertBlockBreakAtRange(range) {\n let blocks\n range = normalizeRange(range)\n const [ startPosition ] = range\n const { offset } = this.locationFromPosition(startPosition)\n\n const document = this.removeTextAtRange(range)\n if (offset === 0) {\n blocks = [ new Block() ]\n }\n return new this.constructor(\n document.blockList.insertSplittableListAtPosition(new SplittableList(blocks), startPosition)\n )\n }\n\n applyBlockAttributeAtRange(attributeName, value, range) {\n const expanded = this.expandRangeToLineBreaksAndSplitBlocks(range)\n let document = expanded.document\n range = expanded.range\n const blockConfig = getBlockConfig(attributeName)\n\n if (blockConfig.listAttribute) {\n document = document.removeLastListAttributeAtRange(range, { exceptAttributeName: attributeName })\n const converted = document.convertLineBreaksToBlockBreaksInRange(range)\n document = converted.document\n range = converted.range\n } else if (blockConfig.exclusive) {\n document = document.removeBlockAttributesAtRange(range)\n } else if (blockConfig.terminal) {\n document = document.removeLastTerminalAttributeAtRange(range)\n } else {\n document = document.consolidateBlocksAtRange(range)\n }\n\n return document.addAttributeAtRange(attributeName, value, range)\n }\n\n removeLastListAttributeAtRange(range, options = {}) {\n let { blockList } = this\n this.eachBlockAtRange(range, function(block, textRange, index) {\n const lastAttributeName = block.getLastAttribute()\n if (!lastAttributeName) {\n return\n }\n if (!getBlockConfig(lastAttributeName).listAttribute) {\n return\n }\n if (lastAttributeName === options.exceptAttributeName) {\n return\n }\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName))\n })\n return new this.constructor(blockList)\n }\n\n removeLastTerminalAttributeAtRange(range) {\n let { blockList } = this\n this.eachBlockAtRange(range, function(block, textRange, index) {\n const lastAttributeName = block.getLastAttribute()\n if (!lastAttributeName) {\n return\n }\n if (!getBlockConfig(lastAttributeName).terminal) {\n return\n }\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName))\n })\n return new this.constructor(blockList)\n }\n\n removeBlockAttributesAtRange(range) {\n let { blockList } = this\n this.eachBlockAtRange(range, function(block, textRange, index) {\n if (block.hasAttributes()) {\n blockList = blockList.editObjectAtIndex(index, () => block.copyWithoutAttributes())\n }\n })\n return new this.constructor(blockList)\n }\n\n expandRangeToLineBreaksAndSplitBlocks(range) {\n let position\n range = normalizeRange(range)\n let [ startPosition, endPosition ] = range\n const startLocation = this.locationFromPosition(startPosition)\n const endLocation = this.locationFromPosition(endPosition)\n let document = this\n\n const startBlock = document.getBlockAtIndex(startLocation.index)\n startLocation.offset = startBlock.findLineBreakInDirectionFromPosition(\"backward\", startLocation.offset)\n if (startLocation.offset != null) {\n position = document.positionFromLocation(startLocation)\n document = document.insertBlockBreakAtRange([ position, position + 1 ])\n endLocation.index += 1\n endLocation.offset -= document.getBlockAtIndex(startLocation.index).getLength()\n startLocation.index += 1\n }\n startLocation.offset = 0\n\n if (endLocation.offset === 0 && endLocation.index > startLocation.index) {\n endLocation.index -= 1\n endLocation.offset = document.getBlockAtIndex(endLocation.index).getBlockBreakPosition()\n } else {\n const endBlock = document.getBlockAtIndex(endLocation.index)\n if (endBlock.text.getStringAtRange([ endLocation.offset - 1, endLocation.offset ]) === \"\\n\") {\n endLocation.offset -= 1\n } else {\n endLocation.offset = endBlock.findLineBreakInDirectionFromPosition(\"forward\", endLocation.offset)\n }\n if (endLocation.offset !== endBlock.getBlockBreakPosition()) {\n position = document.positionFromLocation(endLocation)\n document = document.insertBlockBreakAtRange([ position, position + 1 ])\n }\n }\n\n startPosition = document.positionFromLocation(startLocation)\n endPosition = document.positionFromLocation(endLocation)\n range = normalizeRange([ startPosition, endPosition ])\n\n return { document, range }\n }\n\n convertLineBreaksToBlockBreaksInRange(range) {\n range = normalizeRange(range)\n let [ position ] = range\n const string = this.getStringAtRange(range).slice(0, -1)\n let document = this\n\n string.replace(/.*?\\n/g, function(match) {\n position += match.length\n document = document.insertBlockBreakAtRange([ position - 1, position ])\n })\n\n return { document, range }\n }\n\n consolidateBlocksAtRange(range) {\n range = normalizeRange(range)\n const [ startPosition, endPosition ] = range\n const startIndex = this.locationFromPosition(startPosition).index\n const endIndex = this.locationFromPosition(endPosition).index\n return new this.constructor(this.blockList.consolidateFromIndexToIndex(startIndex, endIndex))\n }\n\n getDocumentAtRange(range) {\n range = normalizeRange(range)\n const blocks = this.blockList.getSplittableListInRange(range).toArray()\n return new this.constructor(blocks)\n }\n\n getStringAtRange(range) {\n let endIndex\n const array = range = normalizeRange(range),\n endPosition = array[array.length - 1]\n if (endPosition !== this.getLength()) {\n endIndex = -1\n }\n return this.getDocumentAtRange(range).toString().slice(0, endIndex)\n }\n\n getBlockAtIndex(index) {\n return this.blockList.getObjectAtIndex(index)\n }\n\n getBlockAtPosition(position) {\n const { index } = this.locationFromPosition(position)\n return this.getBlockAtIndex(index)\n }\n\n getTextAtIndex(index) {\n return this.getBlockAtIndex(index)?.text\n }\n\n getTextAtPosition(position) {\n const { index } = this.locationFromPosition(position)\n return this.getTextAtIndex(index)\n }\n\n getPieceAtPosition(position) {\n const { index, offset } = this.locationFromPosition(position)\n return this.getTextAtIndex(index).getPieceAtPosition(offset)\n }\n\n getCharacterAtPosition(position) {\n const { index, offset } = this.locationFromPosition(position)\n return this.getTextAtIndex(index).getStringAtRange([ offset, offset + 1 ])\n }\n\n getLength() {\n return this.blockList.getEndPosition()\n }\n\n getBlocks() {\n return this.blockList.toArray()\n }\n\n getBlockCount() {\n return this.blockList.length\n }\n\n getEditCount() {\n return this.editCount\n }\n\n eachBlock(callback) {\n return this.blockList.eachObject(callback)\n }\n\n eachBlockAtRange(range, callback) {\n let block, textRange\n range = normalizeRange(range)\n const [ startPosition, endPosition ] = range\n const startLocation = this.locationFromPosition(startPosition)\n const endLocation = this.locationFromPosition(endPosition)\n\n if (startLocation.index === endLocation.index) {\n block = this.getBlockAtIndex(startLocation.index)\n textRange = [ startLocation.offset, endLocation.offset ]\n return callback(block, textRange, startLocation.index)\n } else {\n for (let index = startLocation.index; index <= endLocation.index; index++) {\n block = this.getBlockAtIndex(index)\n if (block) {\n switch (index) {\n case startLocation.index:\n textRange = [ startLocation.offset, block.text.getLength() ]\n break\n case endLocation.index:\n textRange = [ 0, endLocation.offset ]\n break\n default:\n textRange = [ 0, block.text.getLength() ]\n }\n callback(block, textRange, index)\n }\n }\n }\n }\n\n getCommonAttributesAtRange(range) {\n range = normalizeRange(range)\n const [ startPosition ] = range\n if (rangeIsCollapsed(range)) {\n return this.getCommonAttributesAtPosition(startPosition)\n } else {\n const textAttributes = []\n const blockAttributes = []\n\n this.eachBlockAtRange(range, function(block, textRange) {\n if (textRange[0] !== textRange[1]) {\n textAttributes.push(block.text.getCommonAttributesAtRange(textRange))\n return blockAttributes.push(attributesForBlock(block))\n }\n })\n\n return Hash.fromCommonAttributesOfObjects(textAttributes)\n .merge(Hash.fromCommonAttributesOfObjects(blockAttributes))\n .toObject()\n }\n }\n\n getCommonAttributesAtPosition(position) {\n let key, value\n const { index, offset } = this.locationFromPosition(position)\n const block = this.getBlockAtIndex(index)\n if (!block) {\n return {}\n }\n\n const commonAttributes = attributesForBlock(block)\n const attributes = block.text.getAttributesAtPosition(offset)\n const attributesLeft = block.text.getAttributesAtPosition(offset - 1)\n const inheritableAttributes = Object.keys(config.textAttributes).filter((key) => {\n return config.textAttributes[key].inheritable\n })\n\n for (key in attributesLeft) {\n value = attributesLeft[key]\n if (value === attributes[key] || inheritableAttributes.includes(key)) {\n commonAttributes[key] = value\n }\n }\n\n return commonAttributes\n }\n\n getRangeOfCommonAttributeAtPosition(attributeName, position) {\n const { index, offset } = this.locationFromPosition(position)\n const text = this.getTextAtIndex(index)\n const [ startOffset, endOffset ] = Array.from(text.getExpandedRangeForAttributeAtOffset(attributeName, offset))\n\n const start = this.positionFromLocation({ index, offset: startOffset })\n const end = this.positionFromLocation({ index, offset: endOffset })\n return normalizeRange([ start, end ])\n }\n\n getBaseBlockAttributes() {\n let baseBlockAttributes = this.getBlockAtIndex(0).getAttributes()\n\n for (let blockIndex = 1; blockIndex < this.getBlockCount(); blockIndex++) {\n const blockAttributes = this.getBlockAtIndex(blockIndex).getAttributes()\n const lastAttributeIndex = Math.min(baseBlockAttributes.length, blockAttributes.length)\n\n baseBlockAttributes = (() => {\n const result = []\n for (let index = 0; index < lastAttributeIndex; index++) {\n if (blockAttributes[index] !== baseBlockAttributes[index]) {\n break\n }\n result.push(blockAttributes[index])\n }\n return result\n })()\n }\n\n return baseBlockAttributes\n }\n\n getAttachmentById(attachmentId) {\n for (const attachment of this.getAttachments()) {\n if (attachment.id === attachmentId) {\n return attachment\n }\n }\n }\n\n getAttachmentPieces() {\n let attachmentPieces = []\n this.blockList.eachObject(({ text }) => attachmentPieces = attachmentPieces.concat(text.getAttachmentPieces()))\n return attachmentPieces\n }\n\n getAttachments() {\n return this.getAttachmentPieces().map((piece) => piece.attachment)\n }\n\n getRangeOfAttachment(attachment) {\n let position = 0\n const iterable = this.blockList.toArray()\n for (let index = 0; index < iterable.length; index++) {\n const { text } = iterable[index]\n const textRange = text.getRangeOfAttachment(attachment)\n if (textRange) {\n return normalizeRange([ position + textRange[0], position + textRange[1] ])\n }\n position += text.getLength()\n }\n }\n\n getLocationRangeOfAttachment(attachment) {\n const range = this.getRangeOfAttachment(attachment)\n return this.locationRangeFromRange(range)\n }\n\n getAttachmentPieceForAttachment(attachment) {\n for (const piece of this.getAttachmentPieces()) {\n if (piece.attachment === attachment) {\n return piece\n }\n }\n }\n\n findRangesForBlockAttribute(attributeName) {\n let position = 0\n const ranges = []\n\n this.getBlocks().forEach((block) => {\n const length = block.getLength()\n if (block.hasAttribute(attributeName)) {\n ranges.push([ position, position + length ])\n }\n position += length\n })\n\n return ranges\n }\n\n findRangesForTextAttribute(attributeName, { withValue } = {}) {\n let position = 0\n let range = []\n const ranges = []\n\n const match = function(piece) {\n if (withValue) {\n return piece.getAttribute(attributeName) === withValue\n } else {\n return piece.hasAttribute(attributeName)\n }\n }\n\n this.getPieces().forEach((piece) => {\n const length = piece.getLength()\n if (match(piece)) {\n if (range[1] === position) {\n range[1] = position + length\n } else {\n ranges.push(range = [ position, position + length ])\n }\n }\n position += length\n })\n\n return ranges\n }\n\n locationFromPosition(position) {\n const location = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, position))\n if (location.index != null) {\n return location\n } else {\n const blocks = this.getBlocks()\n return { index: blocks.length - 1, offset: blocks[blocks.length - 1].getLength() }\n }\n }\n\n positionFromLocation(location) {\n return this.blockList.findPositionAtIndexAndOffset(location.index, location.offset)\n }\n\n locationRangeFromPosition(position) {\n return normalizeRange(this.locationFromPosition(position))\n }\n\n locationRangeFromRange(range) {\n range = normalizeRange(range)\n if (!range) return\n\n const [ startPosition, endPosition ] = Array.from(range)\n const startLocation = this.locationFromPosition(startPosition)\n const endLocation = this.locationFromPosition(endPosition)\n return normalizeRange([ startLocation, endLocation ])\n }\n\n rangeFromLocationRange(locationRange) {\n let rightPosition\n locationRange = normalizeRange(locationRange)\n const leftPosition = this.positionFromLocation(locationRange[0])\n if (!rangeIsCollapsed(locationRange)) {\n rightPosition = this.positionFromLocation(locationRange[1])\n }\n return normalizeRange([ leftPosition, rightPosition ])\n }\n\n isEqualTo(document) {\n return this.blockList.isEqualTo(document?.blockList)\n }\n\n getTexts() {\n return this.getBlocks().map((block) => block.text)\n }\n\n getPieces() {\n const pieces = []\n\n Array.from(this.getTexts()).forEach((text) => {\n pieces.push(...Array.from(text.getPieces() || []))\n })\n\n return pieces\n }\n\n getObjects() {\n return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())\n }\n\n toSerializableDocument() {\n const blocks = []\n this.blockList.eachObject((block) => blocks.push(block.copyWithText(block.text.toSerializableText())))\n return new this.constructor(blocks)\n }\n\n toString() {\n return this.blockList.toString()\n }\n\n toJSON() {\n return this.blockList.toJSON()\n }\n\n toConsole() {\n return JSON.stringify(this.blockList.toArray().map((block) => JSON.parse(block.text.toConsole())))\n }\n}\n\nconst attributesForBlock = function(block) {\n const attributes = {}\n const attributeName = block.getLastAttribute()\n if (attributeName) {\n attributes[attributeName] = true\n }\n return attributes\n}\n", "/* eslint-disable\n no-case-declarations,\n no-irregular-whitespace,\n*/\nimport * as config from \"trix/config\"\nimport BasicObject from \"trix/core/basic_object\"\nimport Document from \"trix/models/document\"\nimport HTMLSanitizer from \"trix/models/html_sanitizer\"\n\nimport {\n arraysAreEqual,\n breakableWhitespacePattern,\n elementContainsNode,\n findClosestElementFromNode,\n getBlockTagNames,\n makeElement,\n nodeIsAttachmentElement,\n normalizeSpaces,\n removeNode,\n squishBreakableWhitespace,\n tagName,\n walkTree,\n} from \"trix/core/helpers\"\n\nconst pieceForString = (string, attributes = {}) => {\n const type = \"string\"\n string = normalizeSpaces(string)\n return { string, attributes, type }\n}\n\nconst pieceForAttachment = (attachment, attributes = {}) => {\n const type = \"attachment\"\n return { attachment, attributes, type }\n}\n\nconst blockForAttributes = (attributes = {}, htmlAttributes = {}) => {\n const text = []\n return { text, attributes, htmlAttributes }\n}\n\nconst parseTrixDataAttribute = (element, name) => {\n try {\n return JSON.parse(element.getAttribute(`data-trix-${name}`))\n } catch (error) {\n return {}\n }\n}\n\nconst getImageDimensions = (element) => {\n const width = element.getAttribute(\"width\")\n const height = element.getAttribute(\"height\")\n const dimensions = {}\n if (width) {\n dimensions.width = parseInt(width, 10)\n }\n if (height) {\n dimensions.height = parseInt(height, 10)\n }\n return dimensions\n}\n\nexport default class HTMLParser extends BasicObject {\n static parse(html, options) {\n const parser = new this(html, options)\n parser.parse()\n return parser\n }\n\n constructor(html, { referenceElement } = {}) {\n super(...arguments)\n this.html = html\n this.referenceElement = referenceElement\n this.blocks = []\n this.blockElements = []\n this.processedElements = []\n }\n\n getDocument() {\n return Document.fromJSON(this.blocks)\n }\n\n // HTML parsing\n\n parse() {\n try {\n this.createHiddenContainer()\n HTMLSanitizer.setHTML(this.containerElement, this.html)\n const walker = walkTree(this.containerElement, { usingFilter: nodeFilter })\n while (walker.nextNode()) {\n this.processNode(walker.currentNode)\n }\n return this.translateBlockElementMarginsToNewlines()\n } finally {\n this.removeHiddenContainer()\n }\n }\n\n createHiddenContainer() {\n if (this.referenceElement) {\n this.containerElement = this.referenceElement.cloneNode(false)\n this.containerElement.removeAttribute(\"id\")\n this.containerElement.setAttribute(\"data-trix-internal\", \"\")\n this.containerElement.style.display = \"none\"\n return this.referenceElement.parentNode.insertBefore(this.containerElement, this.referenceElement.nextSibling)\n } else {\n this.containerElement = makeElement({ tagName: \"div\", style: { display: \"none\" } })\n return document.body.appendChild(this.containerElement)\n }\n }\n\n removeHiddenContainer() {\n return removeNode(this.containerElement)\n }\n\n processNode(node) {\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n if (!this.isInsignificantTextNode(node)) {\n this.appendBlockForTextNode(node)\n return this.processTextNode(node)\n }\n break\n case Node.ELEMENT_NODE:\n this.appendBlockForElement(node)\n return this.processElement(node)\n }\n }\n\n appendBlockForTextNode(node) {\n const element = node.parentNode\n if (element === this.currentBlockElement && this.isBlockElement(node.previousSibling)) {\n return this.appendStringWithAttributes(\"\\n\")\n } else if (element === this.containerElement || this.isBlockElement(element)) {\n const attributes = this.getBlockAttributes(element)\n const htmlAttributes = this.getBlockHTMLAttributes(element)\n if (!arraysAreEqual(attributes, this.currentBlock?.attributes)) {\n this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element, htmlAttributes)\n this.currentBlockElement = element\n }\n }\n }\n\n appendBlockForElement(element) {\n const elementIsBlockElement = this.isBlockElement(element)\n const currentBlockContainsElement = elementContainsNode(this.currentBlockElement, element)\n\n if (elementIsBlockElement && !this.isBlockElement(element.firstChild)) {\n if (!this.isInsignificantTextNode(element.firstChild) || !this.isBlockElement(element.firstElementChild)) {\n const attributes = this.getBlockAttributes(element)\n const htmlAttributes = this.getBlockHTMLAttributes(element)\n if (element.firstChild) {\n if (!(currentBlockContainsElement && arraysAreEqual(attributes, this.currentBlock.attributes))) {\n this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element, htmlAttributes)\n this.currentBlockElement = element\n } else {\n return this.appendStringWithAttributes(\"\\n\")\n }\n }\n }\n } else if (this.currentBlockElement && !currentBlockContainsElement && !elementIsBlockElement) {\n const parentBlockElement = this.findParentBlockElement(element)\n if (parentBlockElement) {\n return this.appendBlockForElement(parentBlockElement)\n } else {\n this.currentBlock = this.appendEmptyBlock()\n this.currentBlockElement = null\n }\n }\n }\n\n findParentBlockElement(element) {\n let { parentElement } = element\n while (parentElement && parentElement !== this.containerElement) {\n if (this.isBlockElement(parentElement) && this.blockElements.includes(parentElement)) {\n return parentElement\n } else {\n parentElement = parentElement.parentElement\n }\n }\n return null\n }\n\n processTextNode(node) {\n let string = node.data\n if (!elementCanDisplayPreformattedText(node.parentNode)) {\n string = squishBreakableWhitespace(string)\n if (stringEndsWithWhitespace(node.previousSibling?.textContent)) {\n string = leftTrimBreakableWhitespace(string)\n }\n }\n return this.appendStringWithAttributes(string, this.getTextAttributes(node.parentNode))\n }\n\n processElement(element) {\n let attributes\n if (nodeIsAttachmentElement(element)) {\n attributes = parseTrixDataAttribute(element, \"attachment\")\n if (Object.keys(attributes).length) {\n const textAttributes = this.getTextAttributes(element)\n this.appendAttachmentWithAttributes(attributes, textAttributes)\n // We have everything we need so avoid processing inner nodes\n element.innerHTML = \"\"\n }\n return this.processedElements.push(element)\n } else {\n switch (tagName(element)) {\n case \"br\":\n if (!this.isExtraBR(element) && !this.isBlockElement(element.nextSibling)) {\n this.appendStringWithAttributes(\"\\n\", this.getTextAttributes(element))\n }\n return this.processedElements.push(element)\n case \"img\":\n attributes = { url: element.getAttribute(\"src\"), contentType: \"image\" }\n const object = getImageDimensions(element)\n for (const key in object) {\n const value = object[key]\n attributes[key] = value\n }\n this.appendAttachmentWithAttributes(attributes, this.getTextAttributes(element))\n return this.processedElements.push(element)\n case \"tr\":\n if (this.needsTableSeparator(element)) {\n return this.appendStringWithAttributes(config.parser.tableRowSeparator)\n }\n break\n case \"td\":\n if (this.needsTableSeparator(element)) {\n return this.appendStringWithAttributes(config.parser.tableCellSeparator)\n }\n break\n }\n }\n }\n\n // Document construction\n\n appendBlockForAttributesWithElement(attributes, element, htmlAttributes = {}) {\n this.blockElements.push(element)\n const block = blockForAttributes(attributes, htmlAttributes)\n this.blocks.push(block)\n return block\n }\n\n appendEmptyBlock() {\n return this.appendBlockForAttributesWithElement([], null)\n }\n\n appendStringWithAttributes(string, attributes) {\n return this.appendPiece(pieceForString(string, attributes))\n }\n\n appendAttachmentWithAttributes(attachment, attributes) {\n return this.appendPiece(pieceForAttachment(attachment, attributes))\n }\n\n appendPiece(piece) {\n if (this.blocks.length === 0) {\n this.appendEmptyBlock()\n }\n return this.blocks[this.blocks.length - 1].text.push(piece)\n }\n\n appendStringToTextAtIndex(string, index) {\n const { text } = this.blocks[index]\n const piece = text[text.length - 1]\n\n if (piece?.type === \"string\") {\n piece.string += string\n } else {\n return text.push(pieceForString(string))\n }\n }\n\n prependStringToTextAtIndex(string, index) {\n const { text } = this.blocks[index]\n const piece = text[0]\n\n if (piece?.type === \"string\") {\n piece.string = string + piece.string\n } else {\n return text.unshift(pieceForString(string))\n }\n }\n\n // Attribute parsing\n\n getTextAttributes(element) {\n let value\n const attributes = {}\n for (const attribute in config.textAttributes) {\n const configAttr = config.textAttributes[attribute]\n if (\n configAttr.tagName &&\n findClosestElementFromNode(element, {\n matchingSelector: configAttr.tagName,\n untilNode: this.containerElement,\n })\n ) {\n attributes[attribute] = true\n } else if (configAttr.parser) {\n value = configAttr.parser(element)\n if (value) {\n let attributeInheritedFromBlock = false\n for (const blockElement of this.findBlockElementAncestors(element)) {\n if (configAttr.parser(blockElement) === value) {\n attributeInheritedFromBlock = true\n break\n }\n }\n if (!attributeInheritedFromBlock) {\n attributes[attribute] = value\n }\n }\n } else if (configAttr.styleProperty) {\n value = element.style[configAttr.styleProperty]\n if (value) {\n attributes[attribute] = value\n }\n }\n }\n\n if (nodeIsAttachmentElement(element)) {\n const object = parseTrixDataAttribute(element, \"attributes\")\n for (const key in object) {\n value = object[key]\n attributes[key] = value\n }\n }\n\n return attributes\n }\n\n getBlockAttributes(element) {\n const attributes = []\n while (element && element !== this.containerElement) {\n for (const attribute in config.blockAttributes) {\n const attrConfig = config.blockAttributes[attribute]\n if (attrConfig.parse !== false) {\n if (tagName(element) === attrConfig.tagName) {\n if (attrConfig.test?.(element) || !attrConfig.test) {\n attributes.push(attribute)\n if (attrConfig.listAttribute) {\n attributes.push(attrConfig.listAttribute)\n }\n }\n }\n }\n }\n element = element.parentNode\n }\n return attributes.reverse()\n }\n\n getBlockHTMLAttributes(element) {\n const attributes = {}\n const blockConfig = Object.values(config.blockAttributes).find(settings => settings.tagName === tagName(element))\n const allowedAttributes = blockConfig?.htmlAttributes || []\n\n allowedAttributes.forEach((attribute) => {\n if (element.hasAttribute(attribute)) {\n attributes[attribute] = element.getAttribute(attribute)\n }\n })\n\n return attributes\n }\n\n findBlockElementAncestors(element) {\n const ancestors = []\n while (element && element !== this.containerElement) {\n const tag = tagName(element)\n if (getBlockTagNames().includes(tag)) {\n ancestors.push(element)\n }\n element = element.parentNode\n }\n return ancestors\n }\n\n // Element inspection\n\n isBlockElement(element) {\n if (element?.nodeType !== Node.ELEMENT_NODE) return\n if (nodeIsAttachmentElement(element)) return\n if (findClosestElementFromNode(element, { matchingSelector: \"td\", untilNode: this.containerElement })) return\n\n return getBlockTagNames().includes(tagName(element)) ||\n window.getComputedStyle(element).display === \"block\"\n }\n\n isInsignificantTextNode(node) {\n if (node?.nodeType !== Node.TEXT_NODE) return\n if (!stringIsAllBreakableWhitespace(node.data)) return\n const { parentNode, previousSibling, nextSibling } = node\n if (nodeEndsWithNonWhitespace(parentNode.previousSibling) && !this.isBlockElement(parentNode.previousSibling)) return\n if (elementCanDisplayPreformattedText(parentNode)) return\n return !previousSibling || this.isBlockElement(previousSibling) || !nextSibling || this.isBlockElement(nextSibling)\n }\n\n isExtraBR(element) {\n return tagName(element) === \"br\" && this.isBlockElement(element.parentNode) && element.parentNode.lastChild === element\n }\n\n needsTableSeparator(element) {\n if (config.parser.removeBlankTableCells) {\n const content = element.previousSibling?.textContent\n return content && /\\S/.test(content)\n } else {\n return element.previousSibling\n }\n }\n\n // Margin translation\n\n translateBlockElementMarginsToNewlines() {\n const defaultMargin = this.getMarginOfDefaultBlockElement()\n\n for (let index = 0; index < this.blocks.length; index++) {\n const margin = this.getMarginOfBlockElementAtIndex(index)\n if (margin) {\n if (margin.top > defaultMargin.top * 2) {\n this.prependStringToTextAtIndex(\"\\n\", index)\n }\n\n if (margin.bottom > defaultMargin.bottom * 2) {\n this.appendStringToTextAtIndex(\"\\n\", index)\n }\n }\n }\n }\n\n getMarginOfBlockElementAtIndex(index) {\n const element = this.blockElements[index]\n if (element) {\n if (element.textContent) {\n if (!getBlockTagNames().includes(tagName(element)) && !this.processedElements.includes(element)) {\n return getBlockElementMargin(element)\n }\n }\n }\n }\n\n getMarginOfDefaultBlockElement() {\n const element = makeElement(config.blockAttributes.default.tagName)\n this.containerElement.appendChild(element)\n return getBlockElementMargin(element)\n }\n}\n\n// Helpers\n\nconst elementCanDisplayPreformattedText = function(element) {\n const { whiteSpace } = window.getComputedStyle(element)\n return [ \"pre\", \"pre-wrap\", \"pre-line\" ].includes(whiteSpace)\n}\n\nconst nodeEndsWithNonWhitespace = (node) => node && !stringEndsWithWhitespace(node.textContent)\n\nconst getBlockElementMargin = function(element) {\n const style = window.getComputedStyle(element)\n if (style.display === \"block\") {\n return { top: parseInt(style.marginTop), bottom: parseInt(style.marginBottom) }\n }\n}\n\nconst nodeFilter = function(node) {\n if (tagName(node) === \"style\") {\n return NodeFilter.FILTER_REJECT\n } else {\n return NodeFilter.FILTER_ACCEPT\n }\n}\n\n// Whitespace\n\nconst leftTrimBreakableWhitespace = (string) => string.replace(new RegExp(`^${breakableWhitespacePattern.source}+`), \"\")\n\nconst stringIsAllBreakableWhitespace = (string) => new RegExp(`^${breakableWhitespacePattern.source}*$`).test(string)\n\nconst stringEndsWithWhitespace = (string) => /\\s$/.test(string)\n", "/* eslint-disable\n no-empty,\n*/\nimport { removeNode } from \"trix/core/helpers\"\n\nimport DocumentView from \"trix/views/document_view\"\nimport Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\n\nconst unserializableElementSelector = \"[data-trix-serialize=false]\"\nconst unserializableAttributeNames = [\n \"contenteditable\",\n \"data-trix-id\",\n \"data-trix-store-key\",\n \"data-trix-mutable\",\n \"data-trix-placeholder\",\n \"tabindex\",\n]\nconst serializedAttributesAttribute = \"data-trix-serialized-attributes\"\nconst serializedAttributesSelector = `[${serializedAttributesAttribute}]`\n\nconst blockCommentPattern = new RegExp(\"\", \"g\")\n\nconst serializers = {\n \"application/json\": function(serializable) {\n let document\n if (serializable instanceof Document) {\n document = serializable\n } else if (serializable instanceof HTMLElement) {\n document = HTMLParser.parse(serializable.innerHTML).getDocument()\n } else {\n throw new Error(\"unserializable object\")\n }\n\n return document.toSerializableDocument().toJSONString()\n },\n\n \"text/html\": function(serializable) {\n let element\n if (serializable instanceof Document) {\n element = DocumentView.render(serializable)\n } else if (serializable instanceof HTMLElement) {\n element = serializable.cloneNode(true)\n } else {\n throw new Error(\"unserializable object\")\n }\n\n // Remove unserializable elements\n Array.from(element.querySelectorAll(unserializableElementSelector)).forEach((el) => {\n removeNode(el)\n })\n\n // Remove unserializable attributes\n unserializableAttributeNames.forEach((attribute) => {\n Array.from(element.querySelectorAll(`[${attribute}]`)).forEach((el) => {\n el.removeAttribute(attribute)\n })\n })\n\n // Rewrite elements with serialized attribute overrides\n Array.from(element.querySelectorAll(serializedAttributesSelector)).forEach((el) => {\n try {\n const attributes = JSON.parse(el.getAttribute(serializedAttributesAttribute))\n el.removeAttribute(serializedAttributesAttribute)\n for (const name in attributes) {\n const value = attributes[name]\n el.setAttribute(name, value)\n }\n } catch (error) {}\n })\n\n return element.innerHTML.replace(blockCommentPattern, \"\")\n },\n}\n\nconst deserializers = {\n \"application/json\": function(string) {\n return Document.fromJSONString(string)\n },\n\n \"text/html\": function(string) {\n return HTMLParser.parse(string).getDocument()\n },\n}\n\nexport const serializeToContentType = function(serializable, contentType) {\n const serializer = serializers[contentType]\n if (serializer) {\n return serializer(serializable)\n } else {\n throw new Error(`unknown content type: ${contentType}`)\n }\n}\n\nexport const deserializeFromContentType = function(string, contentType) {\n const deserializer = deserializers[contentType]\n if (deserializer) {\n return deserializer(string)\n } else {\n throw new Error(`unknown content type: ${contentType}`)\n }\n}\n", "import \"trix/models/attachment\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class ManagedAttachment extends BasicObject {\n constructor(attachmentManager, attachment) {\n super(...arguments)\n this.attachmentManager = attachmentManager\n this.attachment = attachment\n this.id = this.attachment.id\n this.file = this.attachment.file\n }\n\n remove() {\n return this.attachmentManager.requestRemovalOfAttachment(this.attachment)\n }\n}\n\nManagedAttachment.proxyMethod(\"attachment.getAttribute\")\nManagedAttachment.proxyMethod(\"attachment.hasAttribute\")\nManagedAttachment.proxyMethod(\"attachment.setAttribute\")\nManagedAttachment.proxyMethod(\"attachment.getAttributes\")\nManagedAttachment.proxyMethod(\"attachment.setAttributes\")\nManagedAttachment.proxyMethod(\"attachment.isPending\")\nManagedAttachment.proxyMethod(\"attachment.isPreviewable\")\nManagedAttachment.proxyMethod(\"attachment.getURL\")\nManagedAttachment.proxyMethod(\"attachment.getHref\")\nManagedAttachment.proxyMethod(\"attachment.getFilename\")\nManagedAttachment.proxyMethod(\"attachment.getFilesize\")\nManagedAttachment.proxyMethod(\"attachment.getFormattedFilesize\")\nManagedAttachment.proxyMethod(\"attachment.getExtension\")\nManagedAttachment.proxyMethod(\"attachment.getContentType\")\nManagedAttachment.proxyMethod(\"attachment.getFile\")\nManagedAttachment.proxyMethod(\"attachment.setFile\")\nManagedAttachment.proxyMethod(\"attachment.releaseFile\")\nManagedAttachment.proxyMethod(\"attachment.getUploadProgress\")\nManagedAttachment.proxyMethod(\"attachment.setUploadProgress\")\n\n", "import ManagedAttachment from \"trix/models/managed_attachment\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class AttachmentManager extends BasicObject {\n constructor(attachments = []) {\n super(...arguments)\n this.managedAttachments = {}\n Array.from(attachments).forEach((attachment) => {\n this.manageAttachment(attachment)\n })\n }\n\n getAttachments() {\n const result = []\n for (const id in this.managedAttachments) {\n const attachment = this.managedAttachments[id]\n result.push(attachment)\n }\n return result\n }\n\n manageAttachment(attachment) {\n if (!this.managedAttachments[attachment.id]) {\n this.managedAttachments[attachment.id] = new ManagedAttachment(this, attachment)\n }\n return this.managedAttachments[attachment.id]\n }\n\n attachmentIsManaged(attachment) {\n return attachment.id in this.managedAttachments\n }\n\n requestRemovalOfAttachment(attachment) {\n if (this.attachmentIsManaged(attachment)) {\n return this.delegate?.attachmentManagerDidRequestRemovalOfAttachment?.(attachment)\n }\n }\n\n unmanageAttachment(attachment) {\n const managedAttachment = this.managedAttachments[attachment.id]\n delete this.managedAttachments[attachment.id]\n return managedAttachment\n }\n}\n", "export default class LineBreakInsertion {\n constructor(composition) {\n this.composition = composition\n this.document = this.composition.document\n const selectedRange = this.composition.getSelectedRange()\n this.startPosition = selectedRange[0]\n this.endPosition = selectedRange[1]\n\n this.startLocation = this.document.locationFromPosition(this.startPosition)\n this.endLocation = this.document.locationFromPosition(this.endPosition)\n\n this.block = this.document.getBlockAtIndex(this.endLocation.index)\n this.breaksOnReturn = this.block.breaksOnReturn()\n this.previousCharacter = this.block.text.getStringAtPosition(this.endLocation.offset - 1)\n this.nextCharacter = this.block.text.getStringAtPosition(this.endLocation.offset)\n }\n\n shouldInsertBlockBreak() {\n if (this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty()) {\n return this.startLocation.offset !== 0\n } else {\n return this.breaksOnReturn && this.nextCharacter !== \"\\n\"\n }\n }\n\n shouldBreakFormattedBlock() {\n return (\n this.block.hasAttributes() &&\n !this.block.isListItem() &&\n (this.breaksOnReturn && this.nextCharacter === \"\\n\" || this.previousCharacter === \"\\n\")\n )\n }\n\n shouldDecreaseListLevel() {\n return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty()\n }\n\n shouldPrependListItem() {\n return this.block.isListItem() && this.startLocation.offset === 0 && !this.block.isEmpty()\n }\n\n shouldRemoveLastBlockAttribute() {\n return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty()\n }\n}\n", "import * as config from \"trix/config\"\nimport { OBJECT_REPLACEMENT_CHARACTER } from \"trix/constants\"\n\nimport BasicObject from \"trix/core/basic_object\"\nimport Text from \"trix/models/text\"\nimport Block from \"trix/models/block\"\nimport Attachment from \"trix/models/attachment\"\nimport Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\nimport LineBreakInsertion from \"trix/models/line_break_insertion\"\n\nimport {\n arrayStartsWith,\n extend,\n getAllAttributeNames,\n getBlockConfig,\n getTextConfig,\n normalizeRange,\n objectsAreEqual,\n rangeIsCollapsed,\n rangesAreEqual,\n summarizeArrayChange,\n} from \"trix/core/helpers\"\n\nconst PLACEHOLDER = \" \"\n\nexport default class Composition extends BasicObject {\n constructor() {\n super(...arguments)\n this.document = new Document()\n this.attachments = []\n this.currentAttributes = {}\n this.revision = 0\n }\n\n setDocument(document) {\n if (!document.isEqualTo(this.document)) {\n this.document = document\n this.refreshAttachments()\n this.revision++\n return this.delegate?.compositionDidChangeDocument?.(document)\n }\n }\n\n // Snapshots\n\n getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.getSelectedRange(),\n }\n }\n\n loadSnapshot({ document, selectedRange }) {\n this.delegate?.compositionWillLoadSnapshot?.()\n this.setDocument(document != null ? document : new Document())\n this.setSelection(selectedRange != null ? selectedRange : [ 0, 0 ])\n return this.delegate?.compositionDidLoadSnapshot?.()\n }\n\n // Responder protocol\n\n insertText(text, { updatePosition } = { updatePosition: true }) {\n const selectedRange = this.getSelectedRange()\n this.setDocument(this.document.insertTextAtRange(text, selectedRange))\n\n const startPosition = selectedRange[0]\n const endPosition = startPosition + text.getLength()\n\n if (updatePosition) {\n this.setSelection(endPosition)\n }\n return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n }\n\n insertBlock(block = new Block()) {\n const document = new Document([ block ])\n return this.insertDocument(document)\n }\n\n insertDocument(document = new Document()) {\n const selectedRange = this.getSelectedRange()\n this.setDocument(this.document.insertDocumentAtRange(document, selectedRange))\n\n const startPosition = selectedRange[0]\n const endPosition = startPosition + document.getLength()\n\n this.setSelection(endPosition)\n return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n }\n\n insertString(string, options) {\n const attributes = this.getCurrentTextAttributes()\n const text = Text.textForStringWithAttributes(string, attributes)\n return this.insertText(text, options)\n }\n\n insertBlockBreak() {\n const selectedRange = this.getSelectedRange()\n this.setDocument(this.document.insertBlockBreakAtRange(selectedRange))\n\n const startPosition = selectedRange[0]\n const endPosition = startPosition + 1\n\n this.setSelection(endPosition)\n return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n }\n\n insertLineBreak() {\n const insertion = new LineBreakInsertion(this)\n\n if (insertion.shouldDecreaseListLevel()) {\n this.decreaseListLevel()\n return this.setSelection(insertion.startPosition)\n } else if (insertion.shouldPrependListItem()) {\n const document = new Document([ insertion.block.copyWithoutText() ])\n return this.insertDocument(document)\n } else if (insertion.shouldInsertBlockBreak()) {\n return this.insertBlockBreak()\n } else if (insertion.shouldRemoveLastBlockAttribute()) {\n return this.removeLastBlockAttribute()\n } else if (insertion.shouldBreakFormattedBlock()) {\n return this.breakFormattedBlock(insertion)\n } else {\n return this.insertString(\"\\n\")\n }\n }\n\n insertHTML(html) {\n const document = HTMLParser.parse(html).getDocument()\n const selectedRange = this.getSelectedRange()\n\n this.setDocument(this.document.mergeDocumentAtRange(document, selectedRange))\n\n const startPosition = selectedRange[0]\n const endPosition = startPosition + document.getLength() - 1\n\n this.setSelection(endPosition)\n return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n }\n\n replaceHTML(html) {\n const document = HTMLParser.parse(html).getDocument().copyUsingObjectsFromDocument(this.document)\n const locationRange = this.getLocationRange({ strict: false })\n const selectedRange = this.document.rangeFromLocationRange(locationRange)\n this.setDocument(document)\n return this.setSelection(selectedRange)\n }\n\n insertFile(file) {\n return this.insertFiles([ file ])\n }\n\n insertFiles(files) {\n const attachments = []\n\n Array.from(files).forEach((file) => {\n if (this.delegate?.compositionShouldAcceptFile(file)) {\n const attachment = Attachment.attachmentForFile(file)\n attachments.push(attachment)\n }\n })\n\n return this.insertAttachments(attachments)\n }\n\n insertAttachment(attachment) {\n return this.insertAttachments([ attachment ])\n }\n\n insertAttachments(attachments) {\n let text = new Text()\n\n Array.from(attachments).forEach((attachment) => {\n const type = attachment.getType()\n const presentation = config.attachments[type]?.presentation\n\n const attributes = this.getCurrentTextAttributes()\n if (presentation) {\n attributes.presentation = presentation\n }\n\n const attachmentText = Text.textForAttachmentWithAttributes(attachment, attributes)\n text = text.appendText(attachmentText)\n })\n\n return this.insertText(text)\n }\n\n shouldManageDeletingInDirection(direction) {\n const locationRange = this.getLocationRange()\n if (rangeIsCollapsed(locationRange)) {\n if (direction === \"backward\" && locationRange[0].offset === 0) {\n return true\n }\n if (this.shouldManageMovingCursorInDirection(direction)) {\n return true\n }\n } else {\n if (locationRange[0].index !== locationRange[1].index) {\n return true\n }\n }\n return false\n }\n\n deleteInDirection(direction, { length } = {}) {\n let attachment, deletingIntoPreviousBlock, selectionSpansBlocks\n const locationRange = this.getLocationRange()\n let range = this.getSelectedRange()\n const selectionIsCollapsed = rangeIsCollapsed(range)\n\n if (selectionIsCollapsed) {\n deletingIntoPreviousBlock = direction === \"backward\" && locationRange[0].offset === 0\n } else {\n selectionSpansBlocks = locationRange[0].index !== locationRange[1].index\n }\n\n if (deletingIntoPreviousBlock) {\n if (this.canDecreaseBlockAttributeLevel()) {\n const block = this.getBlock()\n\n if (block.isListItem()) {\n this.decreaseListLevel()\n } else {\n this.decreaseBlockAttributeLevel()\n }\n\n this.setSelection(range[0])\n if (block.isEmpty()) {\n return false\n }\n }\n }\n\n if (selectionIsCollapsed) {\n range = this.getExpandedRangeInDirection(direction, { length })\n if (direction === \"backward\") {\n attachment = this.getAttachmentAtRange(range)\n }\n }\n\n if (attachment) {\n this.editAttachment(attachment)\n return false\n } else {\n this.setDocument(this.document.removeTextAtRange(range))\n this.setSelection(range[0])\n if (deletingIntoPreviousBlock || selectionSpansBlocks) {\n return false\n }\n }\n }\n\n moveTextFromRange(range) {\n const [ position ] = Array.from(this.getSelectedRange())\n this.setDocument(this.document.moveTextFromRangeToPosition(range, position))\n return this.setSelection(position)\n }\n\n removeAttachment(attachment) {\n const range = this.document.getRangeOfAttachment(attachment)\n if (range) {\n this.stopEditingAttachment()\n this.setDocument(this.document.removeTextAtRange(range))\n return this.setSelection(range[0])\n }\n }\n\n removeLastBlockAttribute() {\n const [ startPosition, endPosition ] = Array.from(this.getSelectedRange())\n const block = this.document.getBlockAtPosition(endPosition)\n this.removeCurrentAttribute(block.getLastAttribute())\n return this.setSelection(startPosition)\n }\n\n insertPlaceholder() {\n this.placeholderPosition = this.getPosition()\n return this.insertString(PLACEHOLDER)\n }\n\n selectPlaceholder() {\n if (this.placeholderPosition != null) {\n this.setSelectedRange([ this.placeholderPosition, this.placeholderPosition + PLACEHOLDER.length ])\n return this.getSelectedRange()\n }\n }\n\n forgetPlaceholder() {\n this.placeholderPosition = null\n }\n\n // Current attributes\n\n hasCurrentAttribute(attributeName) {\n const value = this.currentAttributes[attributeName]\n return value != null && value !== false\n }\n\n toggleCurrentAttribute(attributeName) {\n const value = !this.currentAttributes[attributeName]\n if (value) {\n return this.setCurrentAttribute(attributeName, value)\n } else {\n return this.removeCurrentAttribute(attributeName)\n }\n }\n\n canSetCurrentAttribute(attributeName) {\n if (getBlockConfig(attributeName)) {\n return this.canSetCurrentBlockAttribute(attributeName)\n } else {\n return this.canSetCurrentTextAttribute(attributeName)\n }\n }\n\n canSetCurrentTextAttribute(attributeName) {\n const document = this.getSelectedDocument()\n if (!document) return\n for (const attachment of Array.from(document.getAttachments())) {\n if (!attachment.hasContent()) {\n return false\n }\n }\n return true\n }\n\n canSetCurrentBlockAttribute(attributeName) {\n const block = this.getBlock()\n if (!block) return\n return !block.isTerminalBlock()\n }\n\n setCurrentAttribute(attributeName, value) {\n if (getBlockConfig(attributeName)) {\n return this.setBlockAttribute(attributeName, value)\n } else {\n this.setTextAttribute(attributeName, value)\n this.currentAttributes[attributeName] = value\n return this.notifyDelegateOfCurrentAttributesChange()\n }\n }\n\n setHTMLAtributeAtPosition(position, attributeName, value) {\n const block = this.document.getBlockAtPosition(position)\n const allowedHTMLAttributes = getBlockConfig(block.getLastAttribute())?.htmlAttributes\n\n if (block && allowedHTMLAttributes?.includes(attributeName)) {\n const newDocument = this.document.setHTMLAttributeAtPosition(position, attributeName, value)\n this.setDocument(newDocument)\n }\n }\n\n setTextAttribute(attributeName, value) {\n const selectedRange = this.getSelectedRange()\n if (!selectedRange) return\n\n const [ startPosition, endPosition ] = Array.from(selectedRange)\n if (startPosition === endPosition) {\n if (attributeName === \"href\") {\n const text = Text.textForStringWithAttributes(value, { href: value })\n return this.insertText(text)\n }\n } else {\n return this.setDocument(this.document.addAttributeAtRange(attributeName, value, selectedRange))\n }\n }\n\n setBlockAttribute(attributeName, value) {\n const selectedRange = this.getSelectedRange()\n if (this.canSetCurrentAttribute(attributeName)) {\n this.setDocument(this.document.applyBlockAttributeAtRange(attributeName, value, selectedRange))\n return this.setSelection(selectedRange)\n }\n }\n\n removeCurrentAttribute(attributeName) {\n if (getBlockConfig(attributeName)) {\n this.removeBlockAttribute(attributeName)\n return this.updateCurrentAttributes()\n } else {\n this.removeTextAttribute(attributeName)\n delete this.currentAttributes[attributeName]\n return this.notifyDelegateOfCurrentAttributesChange()\n }\n }\n\n removeTextAttribute(attributeName) {\n const selectedRange = this.getSelectedRange()\n if (!selectedRange) return\n return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange))\n }\n\n removeBlockAttribute(attributeName) {\n const selectedRange = this.getSelectedRange()\n if (!selectedRange) return\n return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange))\n }\n\n canDecreaseNestingLevel() {\n return this.getBlock()?.getNestingLevel() > 0\n }\n\n canIncreaseNestingLevel() {\n const block = this.getBlock()\n if (!block) return\n if (getBlockConfig(block.getLastNestableAttribute())?.listAttribute) {\n const previousBlock = this.getPreviousBlock()\n if (previousBlock) {\n return arrayStartsWith(previousBlock.getListItemAttributes(), block.getListItemAttributes())\n }\n } else {\n return block.getNestingLevel() > 0\n }\n }\n\n decreaseNestingLevel() {\n const block = this.getBlock()\n if (!block) return\n return this.setDocument(this.document.replaceBlock(block, block.decreaseNestingLevel()))\n }\n\n increaseNestingLevel() {\n const block = this.getBlock()\n if (!block) return\n return this.setDocument(this.document.replaceBlock(block, block.increaseNestingLevel()))\n }\n\n canDecreaseBlockAttributeLevel() {\n return this.getBlock()?.getAttributeLevel() > 0\n }\n\n decreaseBlockAttributeLevel() {\n const attribute = this.getBlock()?.getLastAttribute()\n if (attribute) {\n return this.removeCurrentAttribute(attribute)\n }\n }\n\n decreaseListLevel() {\n let [ startPosition ] = Array.from(this.getSelectedRange())\n const { index } = this.document.locationFromPosition(startPosition)\n let endIndex = index\n const attributeLevel = this.getBlock().getAttributeLevel()\n\n let block = this.document.getBlockAtIndex(endIndex + 1)\n while (block) {\n if (!block.isListItem() || block.getAttributeLevel() <= attributeLevel) {\n break\n }\n endIndex++\n block = this.document.getBlockAtIndex(endIndex + 1)\n }\n\n startPosition = this.document.positionFromLocation({ index, offset: 0 })\n const endPosition = this.document.positionFromLocation({ index: endIndex, offset: 0 })\n return this.setDocument(this.document.removeLastListAttributeAtRange([ startPosition, endPosition ]))\n }\n\n updateCurrentAttributes() {\n const selectedRange = this.getSelectedRange({ ignoreLock: true })\n if (selectedRange) {\n const currentAttributes = this.document.getCommonAttributesAtRange(selectedRange)\n\n Array.from(getAllAttributeNames()).forEach((attributeName) => {\n if (!currentAttributes[attributeName]) {\n if (!this.canSetCurrentAttribute(attributeName)) {\n currentAttributes[attributeName] = false\n }\n }\n })\n\n if (!objectsAreEqual(currentAttributes, this.currentAttributes)) {\n this.currentAttributes = currentAttributes\n return this.notifyDelegateOfCurrentAttributesChange()\n }\n }\n }\n\n getCurrentAttributes() {\n return extend.call({}, this.currentAttributes)\n }\n\n getCurrentTextAttributes() {\n const attributes = {}\n for (const key in this.currentAttributes) {\n const value = this.currentAttributes[key]\n if (value !== false) {\n if (getTextConfig(key)) {\n attributes[key] = value\n }\n }\n }\n return attributes\n }\n\n // Selection freezing\n\n freezeSelection() {\n return this.setCurrentAttribute(\"frozen\", true)\n }\n\n thawSelection() {\n return this.removeCurrentAttribute(\"frozen\")\n }\n\n hasFrozenSelection() {\n return this.hasCurrentAttribute(\"frozen\")\n }\n\n setSelection(selectedRange) {\n const locationRange = this.document.locationRangeFromRange(selectedRange)\n return this.delegate?.compositionDidRequestChangingSelectionToLocationRange(locationRange)\n }\n\n getSelectedRange() {\n const locationRange = this.getLocationRange()\n if (locationRange) {\n return this.document.rangeFromLocationRange(locationRange)\n }\n }\n\n setSelectedRange(selectedRange) {\n const locationRange = this.document.locationRangeFromRange(selectedRange)\n return this.getSelectionManager().setLocationRange(locationRange)\n }\n\n getPosition() {\n const locationRange = this.getLocationRange()\n if (locationRange) {\n return this.document.positionFromLocation(locationRange[0])\n }\n }\n\n getLocationRange(options) {\n if (this.targetLocationRange) {\n return this.targetLocationRange\n } else {\n return this.getSelectionManager().getLocationRange(options) || normalizeRange({ index: 0, offset: 0 })\n }\n }\n\n withTargetLocationRange(locationRange, fn) {\n let result\n this.targetLocationRange = locationRange\n try {\n result = fn()\n } finally {\n this.targetLocationRange = null\n }\n return result\n }\n\n withTargetRange(range, fn) {\n const locationRange = this.document.locationRangeFromRange(range)\n return this.withTargetLocationRange(locationRange, fn)\n }\n\n withTargetDOMRange(domRange, fn) {\n const locationRange = this.createLocationRangeFromDOMRange(domRange, { strict: false })\n return this.withTargetLocationRange(locationRange, fn)\n }\n\n getExpandedRangeInDirection(direction, { length } = {}) {\n let [ startPosition, endPosition ] = Array.from(this.getSelectedRange())\n if (direction === \"backward\") {\n if (length) {\n startPosition -= length\n } else {\n startPosition = this.translateUTF16PositionFromOffset(startPosition, -1)\n }\n } else {\n if (length) {\n endPosition += length\n } else {\n endPosition = this.translateUTF16PositionFromOffset(endPosition, 1)\n }\n }\n return normalizeRange([ startPosition, endPosition ])\n }\n\n shouldManageMovingCursorInDirection(direction) {\n if (this.editingAttachment) {\n return true\n }\n const range = this.getExpandedRangeInDirection(direction)\n return this.getAttachmentAtRange(range) != null\n }\n\n moveCursorInDirection(direction) {\n let canEditAttachment, range\n if (this.editingAttachment) {\n range = this.document.getRangeOfAttachment(this.editingAttachment)\n } else {\n const selectedRange = this.getSelectedRange()\n range = this.getExpandedRangeInDirection(direction)\n canEditAttachment = !rangesAreEqual(selectedRange, range)\n }\n\n if (direction === \"backward\") {\n this.setSelectedRange(range[0])\n } else {\n this.setSelectedRange(range[1])\n }\n\n if (canEditAttachment) {\n const attachment = this.getAttachmentAtRange(range)\n if (attachment) {\n return this.editAttachment(attachment)\n }\n }\n }\n\n expandSelectionInDirection(direction, { length } = {}) {\n const range = this.getExpandedRangeInDirection(direction, { length })\n return this.setSelectedRange(range)\n }\n\n expandSelectionForEditing() {\n if (this.hasCurrentAttribute(\"href\")) {\n return this.expandSelectionAroundCommonAttribute(\"href\")\n }\n }\n\n expandSelectionAroundCommonAttribute(attributeName) {\n const position = this.getPosition()\n const range = this.document.getRangeOfCommonAttributeAtPosition(attributeName, position)\n return this.setSelectedRange(range)\n }\n\n selectionContainsAttachments() {\n return this.getSelectedAttachments()?.length > 0\n }\n\n selectionIsInCursorTarget() {\n return this.editingAttachment || this.positionIsCursorTarget(this.getPosition())\n }\n\n positionIsCursorTarget(position) {\n const location = this.document.locationFromPosition(position)\n if (location) {\n return this.locationIsCursorTarget(location)\n }\n }\n\n positionIsBlockBreak(position) {\n return this.document.getPieceAtPosition(position)?.isBlockBreak()\n }\n\n getSelectedDocument() {\n const selectedRange = this.getSelectedRange()\n if (selectedRange) {\n return this.document.getDocumentAtRange(selectedRange)\n }\n }\n\n getSelectedAttachments() {\n return this.getSelectedDocument()?.getAttachments()\n }\n\n // Attachments\n\n getAttachments() {\n return this.attachments.slice(0)\n }\n\n refreshAttachments() {\n const attachments = this.document.getAttachments()\n const { added, removed } = summarizeArrayChange(this.attachments, attachments)\n this.attachments = attachments\n\n Array.from(removed).forEach((attachment) => {\n attachment.delegate = null\n this.delegate?.compositionDidRemoveAttachment?.(attachment)\n })\n\n return (() => {\n const result = []\n\n Array.from(added).forEach((attachment) => {\n attachment.delegate = this\n result.push(this.delegate?.compositionDidAddAttachment?.(attachment))\n })\n\n return result\n })()\n }\n\n // Attachment delegate\n\n attachmentDidChangeAttributes(attachment) {\n this.revision++\n return this.delegate?.compositionDidEditAttachment?.(attachment)\n }\n\n attachmentDidChangePreviewURL(attachment) {\n this.revision++\n return this.delegate?.compositionDidChangeAttachmentPreviewURL?.(attachment)\n }\n\n // Attachment editing\n\n editAttachment(attachment, options) {\n if (attachment === this.editingAttachment) return\n this.stopEditingAttachment()\n this.editingAttachment = attachment\n return this.delegate?.compositionDidStartEditingAttachment?.(this.editingAttachment, options)\n }\n\n stopEditingAttachment() {\n if (!this.editingAttachment) return\n this.delegate?.compositionDidStopEditingAttachment?.(this.editingAttachment)\n this.editingAttachment = null\n }\n\n updateAttributesForAttachment(attributes, attachment) {\n return this.setDocument(this.document.updateAttributesForAttachment(attributes, attachment))\n }\n\n removeAttributeForAttachment(attribute, attachment) {\n return this.setDocument(this.document.removeAttributeForAttachment(attribute, attachment))\n }\n\n // Private\n\n breakFormattedBlock(insertion) {\n let { document } = insertion\n const { block } = insertion\n let position = insertion.startPosition\n let range = [ position - 1, position ]\n\n if (block.getBlockBreakPosition() === insertion.startLocation.offset) {\n if (block.breaksOnReturn() && insertion.nextCharacter === \"\\n\") {\n position += 1\n } else {\n document = document.removeTextAtRange(range)\n }\n range = [ position, position ]\n } else if (insertion.nextCharacter === \"\\n\") {\n if (insertion.previousCharacter === \"\\n\") {\n range = [ position - 1, position + 1 ]\n } else {\n range = [ position, position + 1 ]\n position += 1\n }\n } else if (insertion.startLocation.offset - 1 !== 0) {\n position += 1\n }\n\n const newDocument = new Document([ block.removeLastAttribute().copyWithoutText() ])\n this.setDocument(document.insertDocumentAtRange(newDocument, range))\n return this.setSelection(position)\n }\n\n getPreviousBlock() {\n const locationRange = this.getLocationRange()\n if (locationRange) {\n const { index } = locationRange[0]\n if (index > 0) {\n return this.document.getBlockAtIndex(index - 1)\n }\n }\n }\n\n getBlock() {\n const locationRange = this.getLocationRange()\n if (locationRange) {\n return this.document.getBlockAtIndex(locationRange[0].index)\n }\n }\n\n getAttachmentAtRange(range) {\n const document = this.document.getDocumentAtRange(range)\n if (document.toString() === `${OBJECT_REPLACEMENT_CHARACTER}\\n`) {\n return document.getAttachments()[0]\n }\n }\n\n notifyDelegateOfCurrentAttributesChange() {\n return this.delegate?.compositionDidChangeCurrentAttributes?.(this.currentAttributes)\n }\n\n notifyDelegateOfInsertionAtRange(range) {\n return this.delegate?.compositionDidPerformInsertionAtRange?.(range)\n }\n\n translateUTF16PositionFromOffset(position, offset) {\n const utf16string = this.document.toUTF16String()\n const utf16position = utf16string.offsetFromUCS2Offset(position)\n return utf16string.offsetToUCS2Offset(utf16position + offset)\n }\n}\n\nComposition.proxyMethod(\"getSelectionManager().getPointRange\")\nComposition.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\")\nComposition.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\")\nComposition.proxyMethod(\"getSelectionManager().locationIsCursorTarget\")\nComposition.proxyMethod(\"getSelectionManager().selectionIsExpanded\")\nComposition.proxyMethod(\"delegate?.getSelectionManager\")\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class UndoManager extends BasicObject {\n constructor(composition) {\n super(...arguments)\n this.composition = composition\n this.undoEntries = []\n this.redoEntries = []\n }\n\n recordUndoEntry(description, { context, consolidatable } = {}) {\n const previousEntry = this.undoEntries.slice(-1)[0]\n\n if (!consolidatable || !entryHasDescriptionAndContext(previousEntry, description, context)) {\n const undoEntry = this.createEntry({ description, context })\n this.undoEntries.push(undoEntry)\n this.redoEntries = []\n }\n }\n\n undo() {\n const undoEntry = this.undoEntries.pop()\n if (undoEntry) {\n const redoEntry = this.createEntry(undoEntry)\n this.redoEntries.push(redoEntry)\n return this.composition.loadSnapshot(undoEntry.snapshot)\n }\n }\n\n redo() {\n const redoEntry = this.redoEntries.pop()\n if (redoEntry) {\n const undoEntry = this.createEntry(redoEntry)\n this.undoEntries.push(undoEntry)\n return this.composition.loadSnapshot(redoEntry.snapshot)\n }\n }\n\n canUndo() {\n return this.undoEntries.length > 0\n }\n\n canRedo() {\n return this.redoEntries.length > 0\n }\n\n // Private\n\n createEntry({ description, context } = {}) {\n return {\n description: description?.toString(),\n context: JSON.stringify(context),\n snapshot: this.composition.getSnapshot(),\n }\n }\n}\n\nconst entryHasDescriptionAndContext = (entry, description, context) =>\n entry?.description === description?.toString() && entry?.context === JSON.stringify(context)\n", "const BLOCK_ATTRIBUTE_NAME = \"attachmentGallery\"\nconst TEXT_ATTRIBUTE_NAME = \"presentation\"\nconst TEXT_ATTRIBUTE_VALUE = \"gallery\"\n\nexport default class Filter {\n constructor(snapshot) {\n this.document = snapshot.document\n this.selectedRange = snapshot.selectedRange\n }\n\n perform() {\n this.removeBlockAttribute()\n return this.applyBlockAttribute()\n }\n\n getSnapshot() {\n return { document: this.document, selectedRange: this.selectedRange }\n }\n\n // Private\n\n removeBlockAttribute() {\n return this.findRangesOfBlocks().map((range) => this.document = this.document.removeAttributeAtRange(BLOCK_ATTRIBUTE_NAME, range))\n }\n\n applyBlockAttribute() {\n let offset = 0\n\n this.findRangesOfPieces().forEach((range) => {\n if (range[1] - range[0] > 1) {\n range[0] += offset\n range[1] += offset\n\n if (this.document.getCharacterAtPosition(range[1]) !== \"\\n\") {\n this.document = this.document.insertBlockBreakAtRange(range[1])\n if (range[1] < this.selectedRange[1]) {\n this.moveSelectedRangeForward()\n }\n range[1]++\n offset++\n }\n\n if (range[0] !== 0) {\n if (this.document.getCharacterAtPosition(range[0] - 1) !== \"\\n\") {\n this.document = this.document.insertBlockBreakAtRange(range[0])\n if (range[0] < this.selectedRange[0]) {\n this.moveSelectedRangeForward()\n }\n range[0]++\n offset++\n }\n }\n\n this.document = this.document.applyBlockAttributeAtRange(BLOCK_ATTRIBUTE_NAME, true, range)\n }\n })\n }\n\n findRangesOfBlocks() {\n return this.document.findRangesForBlockAttribute(BLOCK_ATTRIBUTE_NAME)\n }\n\n findRangesOfPieces() {\n return this.document.findRangesForTextAttribute(TEXT_ATTRIBUTE_NAME, { withValue: TEXT_ATTRIBUTE_VALUE })\n }\n\n moveSelectedRangeForward() {\n this.selectedRange[0] += 1\n this.selectedRange[1] += 1\n }\n}\n", "import Filter from \"./filter\"\n\nexport const attachmentGalleryFilter = function(snapshot) {\n const filter = new Filter(snapshot)\n filter.perform()\n return filter.getSnapshot()\n}\n\n", "import Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\n\nimport UndoManager from \"trix/models/undo_manager\"\nimport { attachmentGalleryFilter } from \"trix/filters/attachment_gallery_filter\"\nconst DEFAULT_FILTERS = [ attachmentGalleryFilter ]\n\nexport default class Editor {\n constructor(composition, selectionManager, element) {\n this.insertFiles = this.insertFiles.bind(this)\n this.composition = composition\n this.selectionManager = selectionManager\n this.element = element\n this.undoManager = new UndoManager(this.composition)\n this.filters = DEFAULT_FILTERS.slice(0)\n }\n\n loadDocument(document) {\n return this.loadSnapshot({ document, selectedRange: [ 0, 0 ] })\n }\n\n loadHTML(html = \"\") {\n const document = HTMLParser.parse(html, { referenceElement: this.element }).getDocument()\n return this.loadDocument(document)\n }\n\n loadJSON({ document, selectedRange }) {\n document = Document.fromJSON(document)\n return this.loadSnapshot({ document, selectedRange })\n }\n\n loadSnapshot(snapshot) {\n this.undoManager = new UndoManager(this.composition)\n return this.composition.loadSnapshot(snapshot)\n }\n\n getDocument() {\n return this.composition.document\n }\n\n getSelectedDocument() {\n return this.composition.getSelectedDocument()\n }\n\n getSnapshot() {\n return this.composition.getSnapshot()\n }\n\n toJSON() {\n return this.getSnapshot()\n }\n\n // Document manipulation\n\n deleteInDirection(direction) {\n return this.composition.deleteInDirection(direction)\n }\n\n insertAttachment(attachment) {\n return this.composition.insertAttachment(attachment)\n }\n\n insertAttachments(attachments) {\n return this.composition.insertAttachments(attachments)\n }\n\n insertDocument(document) {\n return this.composition.insertDocument(document)\n }\n\n insertFile(file) {\n return this.composition.insertFile(file)\n }\n\n insertFiles(files) {\n return this.composition.insertFiles(files)\n }\n\n insertHTML(html) {\n return this.composition.insertHTML(html)\n }\n\n insertString(string) {\n return this.composition.insertString(string)\n }\n\n insertText(text) {\n return this.composition.insertText(text)\n }\n\n insertLineBreak() {\n return this.composition.insertLineBreak()\n }\n\n // Selection\n\n getSelectedRange() {\n return this.composition.getSelectedRange()\n }\n\n getPosition() {\n return this.composition.getPosition()\n }\n\n getClientRectAtPosition(position) {\n const locationRange = this.getDocument().locationRangeFromRange([ position, position + 1 ])\n return this.selectionManager.getClientRectAtLocationRange(locationRange)\n }\n\n expandSelectionInDirection(direction) {\n return this.composition.expandSelectionInDirection(direction)\n }\n\n moveCursorInDirection(direction) {\n return this.composition.moveCursorInDirection(direction)\n }\n\n setSelectedRange(selectedRange) {\n return this.composition.setSelectedRange(selectedRange)\n }\n\n // Attributes\n\n activateAttribute(name, value = true) {\n return this.composition.setCurrentAttribute(name, value)\n }\n\n attributeIsActive(name) {\n return this.composition.hasCurrentAttribute(name)\n }\n\n canActivateAttribute(name) {\n return this.composition.canSetCurrentAttribute(name)\n }\n\n deactivateAttribute(name) {\n return this.composition.removeCurrentAttribute(name)\n }\n\n // HTML attributes\n setHTMLAtributeAtPosition(position, name, value) {\n this.composition.setHTMLAtributeAtPosition(position, name, value)\n }\n\n // Nesting level\n\n canDecreaseNestingLevel() {\n return this.composition.canDecreaseNestingLevel()\n }\n\n canIncreaseNestingLevel() {\n return this.composition.canIncreaseNestingLevel()\n }\n\n decreaseNestingLevel() {\n if (this.canDecreaseNestingLevel()) {\n return this.composition.decreaseNestingLevel()\n }\n }\n\n increaseNestingLevel() {\n if (this.canIncreaseNestingLevel()) {\n return this.composition.increaseNestingLevel()\n }\n }\n\n // Undo/redo\n\n canRedo() {\n return this.undoManager.canRedo()\n }\n\n canUndo() {\n return this.undoManager.canUndo()\n }\n\n recordUndoEntry(description, { context, consolidatable } = {}) {\n return this.undoManager.recordUndoEntry(description, { context, consolidatable })\n }\n\n redo() {\n if (this.canRedo()) {\n return this.undoManager.redo()\n }\n }\n\n undo() {\n if (this.canUndo()) {\n return this.undoManager.undo()\n }\n }\n}\n", "/* eslint-disable\n no-var,\n prefer-const,\n*/\nimport {\n elementContainsNode,\n findChildIndexOfNode,\n nodeIsAttachmentElement,\n nodeIsBlockContainer,\n nodeIsBlockStart,\n nodeIsBlockStartComment,\n nodeIsCursorTarget,\n nodeIsEmptyTextNode,\n nodeIsTextNode,\n tagName,\n walkTree,\n} from \"trix/core/helpers\"\n\nexport default class LocationMapper {\n constructor(element) {\n this.element = element\n }\n\n findLocationFromContainerAndOffset(container, offset, { strict } = { strict: true }) {\n let childIndex = 0\n let foundBlock = false\n const location = { index: 0, offset: 0 }\n const attachmentElement = this.findAttachmentElementParentForNode(container)\n\n if (attachmentElement) {\n container = attachmentElement.parentNode\n offset = findChildIndexOfNode(attachmentElement)\n }\n\n const walker = walkTree(this.element, { usingFilter: rejectAttachmentContents })\n\n while (walker.nextNode()) {\n const node = walker.currentNode\n\n if (node === container && nodeIsTextNode(container)) {\n if (!nodeIsCursorTarget(node)) {\n location.offset += offset\n }\n break\n } else {\n if (node.parentNode === container) {\n if (childIndex++ === offset) {\n break\n }\n } else if (!elementContainsNode(container, node)) {\n if (childIndex > 0) {\n break\n }\n }\n\n if (nodeIsBlockStart(node, { strict })) {\n if (foundBlock) {\n location.index++\n }\n location.offset = 0\n foundBlock = true\n } else {\n location.offset += nodeLength(node)\n }\n }\n }\n\n return location\n }\n\n findContainerAndOffsetFromLocation(location) {\n let container, offset\n if (location.index === 0 && location.offset === 0) {\n container = this.element\n offset = 0\n\n while (container.firstChild) {\n container = container.firstChild\n if (nodeIsBlockContainer(container)) {\n offset = 1\n break\n }\n }\n\n return [ container, offset ]\n }\n\n let [ node, nodeOffset ] = this.findNodeAndOffsetFromLocation(location)\n if (!node) return\n\n if (nodeIsTextNode(node)) {\n if (nodeLength(node) === 0) {\n container = node.parentNode.parentNode\n offset = findChildIndexOfNode(node.parentNode)\n if (nodeIsCursorTarget(node, { name: \"right\" })) {\n offset++\n }\n } else {\n container = node\n offset = location.offset - nodeOffset\n }\n } else {\n container = node.parentNode\n\n if (!nodeIsBlockStart(node.previousSibling)) {\n if (!nodeIsBlockContainer(container)) {\n while (node === container.lastChild) {\n node = container\n container = container.parentNode\n if (nodeIsBlockContainer(container)) {\n break\n }\n }\n }\n }\n\n offset = findChildIndexOfNode(node)\n if (location.offset !== 0) {\n offset++\n }\n }\n\n return [ container, offset ]\n }\n\n findNodeAndOffsetFromLocation(location) {\n let node, nodeOffset\n let offset = 0\n\n for (const currentNode of this.getSignificantNodesForIndex(location.index)) {\n const length = nodeLength(currentNode)\n\n if (location.offset <= offset + length) {\n if (nodeIsTextNode(currentNode)) {\n node = currentNode\n nodeOffset = offset\n if (location.offset === nodeOffset && nodeIsCursorTarget(node)) {\n break\n }\n } else if (!node) {\n node = currentNode\n nodeOffset = offset\n }\n }\n\n offset += length\n if (offset > location.offset) {\n break\n }\n }\n\n return [ node, nodeOffset ]\n }\n\n // Private\n\n findAttachmentElementParentForNode(node) {\n while (node && node !== this.element) {\n if (nodeIsAttachmentElement(node)) {\n return node\n }\n node = node.parentNode\n }\n }\n\n getSignificantNodesForIndex(index) {\n const nodes = []\n const walker = walkTree(this.element, { usingFilter: acceptSignificantNodes })\n let recordingNodes = false\n\n while (walker.nextNode()) {\n const node = walker.currentNode\n if (nodeIsBlockStartComment(node)) {\n var blockIndex\n if (blockIndex != null) {\n blockIndex++\n } else {\n blockIndex = 0\n }\n\n if (blockIndex === index) {\n recordingNodes = true\n } else if (recordingNodes) {\n break\n }\n } else if (recordingNodes) {\n nodes.push(node)\n }\n }\n\n return nodes\n }\n}\n\nconst nodeLength = function(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n if (nodeIsCursorTarget(node)) {\n return 0\n } else {\n const string = node.textContent\n return string.length\n }\n } else if (tagName(node) === \"br\" || nodeIsAttachmentElement(node)) {\n return 1\n } else {\n return 0\n }\n}\n\nconst acceptSignificantNodes = function(node) {\n if (rejectEmptyTextNodes(node) === NodeFilter.FILTER_ACCEPT) {\n return rejectAttachmentContents(node)\n } else {\n return NodeFilter.FILTER_REJECT\n }\n}\n\nconst rejectEmptyTextNodes = function(node) {\n if (nodeIsEmptyTextNode(node)) {\n return NodeFilter.FILTER_REJECT\n } else {\n return NodeFilter.FILTER_ACCEPT\n }\n}\n\nconst rejectAttachmentContents = function(node) {\n if (nodeIsAttachmentElement(node.parentNode)) {\n return NodeFilter.FILTER_REJECT\n } else {\n return NodeFilter.FILTER_ACCEPT\n }\n}\n", "/* eslint-disable\n id-length,\n no-empty,\n*/\nimport { getDOMRange, setDOMRange } from \"trix/core/helpers\"\n\nexport default class PointMapper {\n createDOMRangeFromPoint({ x, y }) {\n let domRange\n if (document.caretPositionFromPoint) {\n const { offsetNode, offset } = document.caretPositionFromPoint(x, y)\n domRange = document.createRange()\n domRange.setStart(offsetNode, offset)\n return domRange\n } else if (document.caretRangeFromPoint) {\n return document.caretRangeFromPoint(x, y)\n } else if (document.body.createTextRange) {\n const originalDOMRange = getDOMRange()\n try {\n // IE 11 throws \"Unspecified error\" when using moveToPoint\n // during a drag-and-drop operation.\n const textRange = document.body.createTextRange()\n textRange.moveToPoint(x, y)\n textRange.select()\n } catch (error) {}\n domRange = getDOMRange()\n setDOMRange(originalDOMRange)\n return domRange\n }\n }\n\n getClientRectsForDOMRange(domRange) {\n const array = Array.from(domRange.getClientRects())\n const start = array[0]\n const end = array[array.length - 1]\n\n return [ start, end ]\n }\n}\n", "/* eslint-disable\n*/\nimport BasicObject from \"trix/core/basic_object\"\n\nimport LocationMapper from \"trix/models/location_mapper\"\nimport PointMapper from \"trix/models/point_mapper\"\n\nimport {\n elementContainsNode,\n getDOMRange,\n getDOMSelection,\n handleEvent,\n innerElementIsActive,\n nodeIsCursorTarget,\n normalizeRange,\n rangeIsCollapsed,\n rangesAreEqual,\n setDOMRange,\n} from \"trix/core/helpers\"\n\nexport default class SelectionManager extends BasicObject {\n constructor(element) {\n super(...arguments)\n this.didMouseDown = this.didMouseDown.bind(this)\n this.selectionDidChange = this.selectionDidChange.bind(this)\n this.element = element\n this.locationMapper = new LocationMapper(this.element)\n this.pointMapper = new PointMapper()\n this.lockCount = 0\n handleEvent(\"mousedown\", { onElement: this.element, withCallback: this.didMouseDown })\n }\n\n getLocationRange(options = {}) {\n if (options.strict === false) {\n return this.createLocationRangeFromDOMRange(getDOMRange())\n } else if (options.ignoreLock) {\n return this.currentLocationRange\n } else if (this.lockedLocationRange) {\n return this.lockedLocationRange\n } else {\n return this.currentLocationRange\n }\n }\n\n setLocationRange(locationRange) {\n if (this.lockedLocationRange) return\n locationRange = normalizeRange(locationRange)\n\n const domRange = this.createDOMRangeFromLocationRange(locationRange)\n if (domRange) {\n setDOMRange(domRange)\n this.updateCurrentLocationRange(locationRange)\n }\n }\n\n setLocationRangeFromPointRange(pointRange) {\n pointRange = normalizeRange(pointRange)\n const startLocation = this.getLocationAtPoint(pointRange[0])\n const endLocation = this.getLocationAtPoint(pointRange[1])\n this.setLocationRange([ startLocation, endLocation ])\n }\n\n getClientRectAtLocationRange(locationRange) {\n const domRange = this.createDOMRangeFromLocationRange(locationRange)\n if (domRange) {\n return this.getClientRectsForDOMRange(domRange)[1]\n }\n }\n\n locationIsCursorTarget(location) {\n const node = Array.from(this.findNodeAndOffsetFromLocation(location))[0]\n return nodeIsCursorTarget(node)\n }\n\n lock() {\n if (this.lockCount++ === 0) {\n this.updateCurrentLocationRange()\n this.lockedLocationRange = this.getLocationRange()\n }\n }\n\n unlock() {\n if (--this.lockCount === 0) {\n const { lockedLocationRange } = this\n this.lockedLocationRange = null\n if (lockedLocationRange != null) {\n return this.setLocationRange(lockedLocationRange)\n }\n }\n }\n\n clearSelection() {\n return getDOMSelection()?.removeAllRanges()\n }\n\n selectionIsCollapsed() {\n return getDOMRange()?.collapsed === true\n }\n\n selectionIsExpanded() {\n return !this.selectionIsCollapsed()\n }\n\n createLocationRangeFromDOMRange(domRange, options) {\n if (domRange == null || !this.domRangeWithinElement(domRange)) return\n\n const start = this.findLocationFromContainerAndOffset(domRange.startContainer, domRange.startOffset, options)\n if (!start) return\n\n const end = domRange.collapsed\n ? undefined\n : this.findLocationFromContainerAndOffset(domRange.endContainer, domRange.endOffset, options)\n\n return normalizeRange([ start, end ])\n }\n\n didMouseDown() {\n return this.pauseTemporarily()\n }\n\n pauseTemporarily() {\n let resumeHandlers\n this.paused = true\n\n const resume = () => {\n this.paused = false\n clearTimeout(resumeTimeout)\n\n Array.from(resumeHandlers).forEach((handler) => {\n handler.destroy()\n })\n\n if (elementContainsNode(document, this.element)) {\n return this.selectionDidChange()\n }\n }\n\n const resumeTimeout = setTimeout(resume, 200)\n\n resumeHandlers = [ \"mousemove\", \"keydown\" ].map((eventName) =>\n handleEvent(eventName, { onElement: document, withCallback: resume })\n )\n }\n\n selectionDidChange() {\n if (!this.paused && !innerElementIsActive(this.element)) {\n return this.updateCurrentLocationRange()\n }\n }\n\n updateCurrentLocationRange(locationRange) {\n if (locationRange != null ? locationRange : locationRange = this.createLocationRangeFromDOMRange(getDOMRange())) {\n if (!rangesAreEqual(locationRange, this.currentLocationRange)) {\n this.currentLocationRange = locationRange\n return this.delegate?.locationRangeDidChange?.(this.currentLocationRange.slice(0))\n }\n }\n }\n\n createDOMRangeFromLocationRange(locationRange) {\n const rangeStart = this.findContainerAndOffsetFromLocation(locationRange[0])\n const rangeEnd = rangeIsCollapsed(locationRange)\n ? rangeStart\n : this.findContainerAndOffsetFromLocation(locationRange[1]) || rangeStart\n\n if (rangeStart != null && rangeEnd != null) {\n const domRange = document.createRange()\n domRange.setStart(...Array.from(rangeStart || []))\n domRange.setEnd(...Array.from(rangeEnd || []))\n return domRange\n }\n }\n\n getLocationAtPoint(point) {\n const domRange = this.createDOMRangeFromPoint(point)\n if (domRange) {\n return this.createLocationRangeFromDOMRange(domRange)?.[0]\n }\n }\n\n domRangeWithinElement(domRange) {\n if (domRange.collapsed) {\n return elementContainsNode(this.element, domRange.startContainer)\n } else {\n return (\n elementContainsNode(this.element, domRange.startContainer) &&\n elementContainsNode(this.element, domRange.endContainer)\n )\n }\n }\n}\n\nSelectionManager.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\")\nSelectionManager.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\")\nSelectionManager.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\")\nSelectionManager.proxyMethod(\"pointMapper.createDOMRangeFromPoint\")\nSelectionManager.proxyMethod(\"pointMapper.getClientRectsForDOMRange\")\n\n", "import { removeNode } from \"trix/core/helpers\"\n\nimport * as config from \"trix/config\"\nimport BasicObject from \"trix/core/basic_object\"\n\nimport { defer, handleEvent, makeElement, tagName, triggerEvent } from \"trix/core/helpers\"\nconst { lang, css, keyNames } = config\n\nconst undoable = function(fn) {\n return function() {\n const commands = fn.apply(this, arguments)\n commands.do()\n if (!this.undos) {\n this.undos = []\n }\n this.undos.push(commands.undo)\n }\n}\n\nexport default class AttachmentEditorController extends BasicObject {\n constructor(attachmentPiece, element, container, options = {}) {\n super(...arguments)\n this.didClickToolbar = this.didClickToolbar.bind(this)\n this.didClickActionButton = this.didClickActionButton.bind(this)\n this.didKeyDownCaption = this.didKeyDownCaption.bind(this)\n this.didInputCaption = this.didInputCaption.bind(this)\n this.didChangeCaption = this.didChangeCaption.bind(this)\n this.didBlurCaption = this.didBlurCaption.bind(this)\n this.attachmentPiece = attachmentPiece\n this.element = element\n this.container = container\n this.options = options\n this.attachment = this.attachmentPiece.attachment\n if (tagName(this.element) === \"a\") {\n this.element = this.element.firstChild\n }\n this.install()\n }\n\n install() {\n this.makeElementMutable()\n this.addToolbar()\n if (this.attachment.isPreviewable()) {\n this.installCaptionEditor()\n }\n }\n\n uninstall() {\n let undo = this.undos.pop()\n this.savePendingCaption()\n while (undo) {\n undo()\n undo = this.undos.pop()\n }\n this.delegate?.didUninstallAttachmentEditor(this)\n }\n\n // Private\n\n savePendingCaption() {\n if (this.pendingCaption != null) {\n const caption = this.pendingCaption\n this.pendingCaption = null\n if (caption) {\n this.delegate?.attachmentEditorDidRequestUpdatingAttributesForAttachment?.({ caption }, this.attachment)\n } else {\n this.delegate?.attachmentEditorDidRequestRemovingAttributeForAttachment?.(\"caption\", this.attachment)\n }\n }\n }\n\n // Installing and uninstalling\n\n makeElementMutable = undoable(() => {\n return {\n do: () => {\n this.element.dataset.trixMutable = true\n },\n undo: () => delete this.element.dataset.trixMutable,\n }\n })\n\n addToolbar = undoable(() => {\n //
\n //
\n // \n // \n // \n //
\n //
\n const element = makeElement({\n tagName: \"div\",\n className: css.attachmentToolbar,\n data: { trixMutable: true },\n childNodes: makeElement({\n tagName: \"div\",\n className: \"trix-button-row\",\n childNodes: makeElement({\n tagName: \"span\",\n className: \"trix-button-group trix-button-group--actions\",\n childNodes: makeElement({\n tagName: \"button\",\n className: \"trix-button trix-button--remove\",\n textContent: lang.remove,\n attributes: { title: lang.remove },\n data: { trixAction: \"remove\" },\n }),\n }),\n }),\n })\n\n if (this.attachment.isPreviewable()) {\n //
\n // \n // #{name}\n // #{size}\n // \n //
\n element.appendChild(\n makeElement({\n tagName: \"div\",\n className: css.attachmentMetadataContainer,\n childNodes: makeElement({\n tagName: \"span\",\n className: css.attachmentMetadata,\n childNodes: [\n makeElement({\n tagName: \"span\",\n className: css.attachmentName,\n textContent: this.attachment.getFilename(),\n attributes: { title: this.attachment.getFilename() },\n }),\n makeElement({\n tagName: \"span\",\n className: css.attachmentSize,\n textContent: this.attachment.getFormattedFilesize(),\n }),\n ],\n }),\n })\n )\n }\n\n handleEvent(\"click\", { onElement: element, withCallback: this.didClickToolbar })\n handleEvent(\"click\", {\n onElement: element,\n matchingSelector: \"[data-trix-action]\",\n withCallback: this.didClickActionButton,\n })\n\n triggerEvent(\"trix-attachment-before-toolbar\", { onElement: this.element, attributes: { toolbar: element, attachment: this.attachment } })\n\n return {\n do: () => this.element.appendChild(element),\n undo: () => removeNode(element),\n }\n })\n\n installCaptionEditor = undoable(() => {\n const textarea = makeElement({\n tagName: \"textarea\",\n className: css.attachmentCaptionEditor,\n attributes: { placeholder: lang.captionPlaceholder },\n data: { trixMutable: true },\n })\n textarea.value = this.attachmentPiece.getCaption()\n\n const textareaClone = textarea.cloneNode()\n textareaClone.classList.add(\"trix-autoresize-clone\")\n textareaClone.tabIndex = -1\n\n const autoresize = function() {\n textareaClone.value = textarea.value\n textarea.style.height = textareaClone.scrollHeight + \"px\"\n }\n\n handleEvent(\"input\", { onElement: textarea, withCallback: autoresize })\n handleEvent(\"input\", { onElement: textarea, withCallback: this.didInputCaption })\n handleEvent(\"keydown\", { onElement: textarea, withCallback: this.didKeyDownCaption })\n handleEvent(\"change\", { onElement: textarea, withCallback: this.didChangeCaption })\n handleEvent(\"blur\", { onElement: textarea, withCallback: this.didBlurCaption })\n\n const figcaption = this.element.querySelector(\"figcaption\")\n const editingFigcaption = figcaption.cloneNode()\n\n return {\n do: () => {\n figcaption.style.display = \"none\"\n editingFigcaption.appendChild(textarea)\n editingFigcaption.appendChild(textareaClone)\n editingFigcaption.classList.add(`${css.attachmentCaption}--editing`)\n figcaption.parentElement.insertBefore(editingFigcaption, figcaption)\n autoresize()\n if (this.options.editCaption) {\n return defer(() => textarea.focus())\n }\n },\n undo() {\n removeNode(editingFigcaption)\n figcaption.style.display = null\n },\n }\n })\n\n // Event handlers\n\n didClickToolbar(event) {\n event.preventDefault()\n return event.stopPropagation()\n }\n\n didClickActionButton(event) {\n const action = event.target.getAttribute(\"data-trix-action\")\n switch (action) {\n case \"remove\":\n return this.delegate?.attachmentEditorDidRequestRemovalOfAttachment(this.attachment)\n }\n }\n\n didKeyDownCaption(event) {\n if (keyNames[event.keyCode] === \"return\") {\n event.preventDefault()\n this.savePendingCaption()\n return this.delegate?.attachmentEditorDidRequestDeselectingAttachment?.(this.attachment)\n }\n }\n\n didInputCaption(event) {\n this.pendingCaption = event.target.value.replace(/\\s/g, \" \").trim()\n }\n\n didChangeCaption(event) {\n return this.savePendingCaption()\n }\n\n didBlurCaption(event) {\n return this.savePendingCaption()\n }\n}\n", "import BasicObject from \"trix/core/basic_object\"\nimport DocumentView from \"trix/views/document_view\"\nimport AttachmentEditorController from \"trix/controllers/attachment_editor_controller\"\n\nimport { defer, findClosestElementFromNode, handleEvent, innerElementIsActive } from \"trix/core/helpers\"\nimport { attachmentSelector } from \"trix/config/attachments\"\n\nexport default class CompositionController extends BasicObject {\n constructor(element, composition) {\n super(...arguments)\n this.didFocus = this.didFocus.bind(this)\n this.didBlur = this.didBlur.bind(this)\n this.didClickAttachment = this.didClickAttachment.bind(this)\n\n this.element = element\n this.composition = composition\n this.documentView = new DocumentView(this.composition.document, { element: this.element })\n\n handleEvent(\"focus\", { onElement: this.element, withCallback: this.didFocus })\n handleEvent(\"blur\", { onElement: this.element, withCallback: this.didBlur })\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: \"a[contenteditable=false]\",\n preventDefault: true,\n })\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: attachmentSelector,\n withCallback: this.didClickAttachment,\n })\n handleEvent(\"click\", { onElement: this.element, matchingSelector: `a${attachmentSelector}`, preventDefault: true })\n }\n\n didFocus(event) {\n const perform = () => {\n if (!this.focused) {\n this.focused = true\n return this.delegate?.compositionControllerDidFocus?.()\n }\n }\n\n return this.blurPromise?.then(perform) || perform()\n }\n\n didBlur(event) {\n this.blurPromise = new Promise((resolve) => {\n return defer(() => {\n if (!innerElementIsActive(this.element)) {\n this.focused = null\n this.delegate?.compositionControllerDidBlur?.()\n }\n this.blurPromise = null\n return resolve()\n })\n })\n }\n\n didClickAttachment(event, target) {\n const attachment = this.findAttachmentForElement(target)\n const editCaption = !!findClosestElementFromNode(event.target, { matchingSelector: \"figcaption\" })\n return this.delegate?.compositionControllerDidSelectAttachment?.(attachment, { editCaption })\n }\n\n getSerializableElement() {\n if (this.isEditingAttachment()) {\n return this.documentView.shadowElement\n } else {\n return this.element\n }\n }\n\n render() {\n if (this.revision !== this.composition.revision) {\n this.documentView.setDocument(this.composition.document)\n this.documentView.render()\n this.revision = this.composition.revision\n }\n\n if (this.canSyncDocumentView() && !this.documentView.isSynced()) {\n this.delegate?.compositionControllerWillSyncDocumentView?.()\n this.documentView.sync()\n this.delegate?.compositionControllerDidSyncDocumentView?.()\n }\n\n return this.delegate?.compositionControllerDidRender?.()\n }\n\n rerenderViewForObject(object) {\n this.invalidateViewForObject(object)\n return this.render()\n }\n\n invalidateViewForObject(object) {\n return this.documentView.invalidateViewForObject(object)\n }\n\n isViewCachingEnabled() {\n return this.documentView.isViewCachingEnabled()\n }\n\n enableViewCaching() {\n return this.documentView.enableViewCaching()\n }\n\n disableViewCaching() {\n return this.documentView.disableViewCaching()\n }\n\n refreshViewCache() {\n return this.documentView.garbageCollectCachedViews()\n }\n\n // Attachment editor management\n\n isEditingAttachment() {\n return !!this.attachmentEditor\n }\n\n installAttachmentEditorForAttachment(attachment, options) {\n if (this.attachmentEditor?.attachment === attachment) return\n const element = this.documentView.findElementForObject(attachment)\n if (!element) return\n\n this.uninstallAttachmentEditor()\n const attachmentPiece = this.composition.document.getAttachmentPieceForAttachment(attachment)\n this.attachmentEditor = new AttachmentEditorController(attachmentPiece, element, this.element, options)\n this.attachmentEditor.delegate = this\n }\n\n uninstallAttachmentEditor() {\n return this.attachmentEditor?.uninstall()\n }\n\n // Attachment controller delegate\n\n didUninstallAttachmentEditor() {\n this.attachmentEditor = null\n return this.render()\n }\n\n attachmentEditorDidRequestUpdatingAttributesForAttachment(attributes, attachment) {\n this.delegate?.compositionControllerWillUpdateAttachment?.(attachment)\n return this.composition.updateAttributesForAttachment(attributes, attachment)\n }\n\n attachmentEditorDidRequestRemovingAttributeForAttachment(attribute, attachment) {\n this.delegate?.compositionControllerWillUpdateAttachment?.(attachment)\n return this.composition.removeAttributeForAttachment(attribute, attachment)\n }\n\n attachmentEditorDidRequestRemovalOfAttachment(attachment) {\n return this.delegate?.compositionControllerDidRequestRemovalOfAttachment?.(attachment)\n }\n\n attachmentEditorDidRequestDeselectingAttachment(attachment) {\n return this.delegate?.compositionControllerDidRequestDeselectingAttachment?.(attachment)\n }\n\n // Private\n\n canSyncDocumentView() {\n return !this.isEditingAttachment()\n }\n\n findAttachmentForElement(element) {\n return this.composition.document.getAttachmentById(parseInt(element.dataset.trixId, 10))\n }\n}\n", "import \"trix/views/object_view\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class Controller extends BasicObject {}\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport {\n findClosestElementFromNode,\n nodeIsBlockStartComment,\n nodeIsEmptyTextNode,\n normalizeSpaces,\n summarizeStringChange,\n tagName,\n} from \"trix/core/helpers\"\n\nconst mutableAttributeName = \"data-trix-mutable\"\nconst mutableSelector = `[${mutableAttributeName}]`\n\nconst options = {\n attributes: true,\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n subtree: true,\n}\n\nexport default class MutationObserver extends BasicObject {\n constructor(element) {\n super(element)\n this.didMutate = this.didMutate.bind(this)\n this.element = element\n this.observer = new window.MutationObserver(this.didMutate)\n this.start()\n }\n\n start() {\n this.reset()\n return this.observer.observe(this.element, options)\n }\n\n stop() {\n return this.observer.disconnect()\n }\n\n didMutate(mutations) {\n this.mutations.push(...Array.from(this.findSignificantMutations(mutations) || []))\n\n if (this.mutations.length) {\n this.delegate?.elementDidMutate?.(this.getMutationSummary())\n return this.reset()\n }\n }\n\n // Private\n\n reset() {\n this.mutations = []\n }\n\n findSignificantMutations(mutations) {\n return mutations.filter((mutation) => {\n return this.mutationIsSignificant(mutation)\n })\n }\n\n mutationIsSignificant(mutation) {\n if (this.nodeIsMutable(mutation.target)) {\n return false\n }\n for (const node of Array.from(this.nodesModifiedByMutation(mutation))) {\n if (this.nodeIsSignificant(node)) return true\n }\n return false\n }\n\n nodeIsSignificant(node) {\n return node !== this.element && !this.nodeIsMutable(node) && !nodeIsEmptyTextNode(node)\n }\n\n nodeIsMutable(node) {\n return findClosestElementFromNode(node, { matchingSelector: mutableSelector })\n }\n\n nodesModifiedByMutation(mutation) {\n const nodes = []\n switch (mutation.type) {\n case \"attributes\":\n if (mutation.attributeName !== mutableAttributeName) {\n nodes.push(mutation.target)\n }\n break\n case \"characterData\":\n // Changes to text nodes should consider the parent element\n nodes.push(mutation.target.parentNode)\n nodes.push(mutation.target)\n break\n case \"childList\":\n // Consider each added or removed node\n nodes.push(...Array.from(mutation.addedNodes || []))\n nodes.push(...Array.from(mutation.removedNodes || []))\n break\n }\n return nodes\n }\n\n getMutationSummary() {\n return this.getTextMutationSummary()\n }\n\n getTextMutationSummary() {\n const { additions, deletions } = this.getTextChangesFromCharacterData()\n const textChanges = this.getTextChangesFromChildList()\n\n Array.from(textChanges.additions).forEach((addition) => {\n if (!Array.from(additions).includes(addition)) {\n additions.push(addition)\n }\n })\n\n deletions.push(...Array.from(textChanges.deletions || []))\n\n const summary = {}\n\n const added = additions.join(\"\")\n if (added) {\n summary.textAdded = added\n }\n\n const deleted = deletions.join(\"\")\n if (deleted) {\n summary.textDeleted = deleted\n }\n\n return summary\n }\n\n getMutationsByType(type) {\n return Array.from(this.mutations).filter((mutation) => mutation.type === type)\n }\n\n getTextChangesFromChildList() {\n let textAdded, textRemoved\n const addedNodes = []\n const removedNodes = []\n\n Array.from(this.getMutationsByType(\"childList\")).forEach((mutation) => {\n addedNodes.push(...Array.from(mutation.addedNodes || []))\n removedNodes.push(...Array.from(mutation.removedNodes || []))\n })\n\n const singleBlockCommentRemoved =\n addedNodes.length === 0 && removedNodes.length === 1 && nodeIsBlockStartComment(removedNodes[0])\n\n if (singleBlockCommentRemoved) {\n textAdded = []\n textRemoved = [ \"\\n\" ]\n } else {\n textAdded = getTextForNodes(addedNodes)\n textRemoved = getTextForNodes(removedNodes)\n }\n\n const additions = textAdded.filter((text, index) => text !== textRemoved[index]).map(normalizeSpaces)\n const deletions = textRemoved.filter((text, index) => text !== textAdded[index]).map(normalizeSpaces)\n\n return { additions, deletions }\n }\n\n getTextChangesFromCharacterData() {\n let added, removed\n const characterMutations = this.getMutationsByType(\"characterData\")\n\n if (characterMutations.length) {\n const startMutation = characterMutations[0],\n endMutation = characterMutations[characterMutations.length - 1]\n\n const oldString = normalizeSpaces(startMutation.oldValue)\n const newString = normalizeSpaces(endMutation.target.data)\n const summarized = summarizeStringChange(oldString, newString)\n added = summarized.added\n removed = summarized.removed\n }\n\n return {\n additions: added ? [ added ] : [],\n deletions: removed ? [ removed ] : [],\n }\n }\n}\n\nconst getTextForNodes = function(nodes = []) {\n const text = []\n for (const node of Array.from(nodes)) {\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n text.push(node.data)\n break\n case Node.ELEMENT_NODE:\n if (tagName(node) === \"br\") {\n text.push(\"\\n\")\n } else {\n text.push(...Array.from(getTextForNodes(node.childNodes) || []))\n }\n break\n }\n }\n return text\n}\n", "/* eslint-disable\n no-empty,\n*/\nimport Operation from \"trix/core/utilities/operation\"\n\nexport default class FileVerificationOperation extends Operation {\n constructor(file) {\n super(...arguments)\n this.file = file\n }\n\n perform(callback) {\n const reader = new FileReader()\n\n reader.onerror = () => callback(false)\n\n reader.onload = () => {\n reader.onerror = null\n try {\n reader.abort()\n } catch (error) {}\n return callback(true, this.file)\n }\n\n return reader.readAsArrayBuffer(this.file)\n }\n}\n", "import * as config from \"trix/config\"\nimport { NON_BREAKING_SPACE, OBJECT_REPLACEMENT_CHARACTER, ZERO_WIDTH_SPACE } from \"trix/constants\"\n\n// Each software keyboard on Android emits its own set of events and some of them can be buggy.\n// This class detects when some buggy events are being emitted and lets know the input controller\n// that they should be ignored.\nexport default class FlakyAndroidKeyboardDetector {\n constructor(element) {\n this.element = element\n }\n\n shouldIgnore(event) {\n if (!config.browser.samsungAndroid) return false\n\n this.previousEvent = this.event\n this.event = event\n\n this.checkSamsungKeyboardBuggyModeStart()\n this.checkSamsungKeyboardBuggyModeEnd()\n\n return this.buggyMode\n }\n\n // private\n\n // The Samsung keyboard on Android can enter a buggy state in which it emits a flurry of confused events that,\n // if processed, corrupts the editor. The buggy mode always starts with an insertText event, right after a\n // keydown event with for an \"Unidentified\" key, with the same text as the editor element, except for a few\n // extra whitespace, or exotic utf8, characters.\n checkSamsungKeyboardBuggyModeStart() {\n if (this.insertingLongTextAfterUnidentifiedChar() && differsInWhitespace(this.element.innerText, this.event.data)) {\n this.buggyMode = true\n this.event.preventDefault()\n }\n }\n\n // The flurry of buggy events are always insertText. If we see any other type, it means it's over.\n checkSamsungKeyboardBuggyModeEnd() {\n if (this.buggyMode && this.event.inputType !== \"insertText\") {\n this.buggyMode = false\n }\n }\n\n insertingLongTextAfterUnidentifiedChar() {\n return this.isBeforeInputInsertText() && this.previousEventWasUnidentifiedKeydown() && this.event.data?.length > 50\n }\n\n isBeforeInputInsertText() {\n return this.event.type === \"beforeinput\" && this.event.inputType === \"insertText\"\n }\n\n previousEventWasUnidentifiedKeydown() {\n return this.previousEvent?.type === \"keydown\" && this.previousEvent?.key === \"Unidentified\"\n }\n}\n\nconst differsInWhitespace = (text1, text2) => {\n return normalize(text1) === normalize(text2)\n}\n\nconst whiteSpaceNormalizerRegexp = new RegExp(`(${OBJECT_REPLACEMENT_CHARACTER}|${ZERO_WIDTH_SPACE}|${NON_BREAKING_SPACE}|\\\\s)+`, \"g\")\nconst normalize = (text) => text.replace(whiteSpaceNormalizerRegexp, \" \").trim()\n", "import BasicObject from \"trix/core/basic_object\"\nimport MutationObserver from \"trix/observers/mutation_observer\"\nimport FileVerificationOperation from \"trix/operations/file_verification_operation\"\nimport FlakyAndroidKeyboardDetector from \"../models/flaky_android_keyboard_detector\"\n\nimport { handleEvent, innerElementIsActive } from \"trix/core/helpers\"\n\nexport default class InputController extends BasicObject {\n\n static events = {}\n\n constructor(element) {\n super(...arguments)\n this.element = element\n this.mutationObserver = new MutationObserver(this.element)\n this.mutationObserver.delegate = this\n this.flakyKeyboardDetector = new FlakyAndroidKeyboardDetector(this.element)\n for (const eventName in this.constructor.events) {\n handleEvent(eventName, { onElement: this.element, withCallback: this.handlerFor(eventName) })\n }\n }\n\n elementDidMutate(mutationSummary) {}\n\n editorWillSyncDocumentView() {\n return this.mutationObserver.stop()\n }\n\n editorDidSyncDocumentView() {\n return this.mutationObserver.start()\n }\n\n requestRender() {\n return this.delegate?.inputControllerDidRequestRender?.()\n }\n\n requestReparse() {\n this.delegate?.inputControllerDidRequestReparse?.()\n return this.requestRender()\n }\n\n attachFiles(files) {\n const operations = Array.from(files).map((file) => new FileVerificationOperation(file))\n return Promise.all(operations).then((files) => {\n this.handleInput(function() {\n this.delegate?.inputControllerWillAttachFiles()\n this.responder?.insertFiles(files)\n return this.requestRender()\n })\n })\n }\n\n // Private\n\n handlerFor(eventName) {\n return (event) => {\n if (!event.defaultPrevented) {\n this.handleInput(() => {\n if (!innerElementIsActive(this.element)) {\n if (this.flakyKeyboardDetector.shouldIgnore(event)) return\n\n this.eventName = eventName\n this.constructor.events[eventName].call(this, event)\n }\n })\n }\n }\n }\n\n handleInput(callback) {\n try {\n this.delegate?.inputControllerWillHandleInput()\n callback.call(this)\n } finally {\n this.delegate?.inputControllerDidHandleInput()\n }\n }\n\n createLinkHTML(href, text) {\n const link = document.createElement(\"a\")\n link.href = href\n link.textContent = text ? text : href\n return link.outerHTML\n }\n}\n\n", "import * as config from \"trix/config\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\nimport BasicObject from \"trix/core/basic_object\"\nimport InputController from \"trix/controllers/input_controller\"\nimport DocumentView from \"trix/views/document_view\"\nimport Document from \"trix/models/document\"\n\nimport {\n dataTransferIsPlainText,\n dataTransferIsWritable,\n keyEventIsKeyboardCommand,\n makeElement,\n objectsAreEqual,\n removeNode,\n squishBreakableWhitespace,\n} from \"trix/core/helpers\"\n\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nconst { browser, keyNames } = config\nlet pastedFileCount = 0\n\nexport default class Level0InputController extends InputController {\n\n static events = {\n keydown(event) {\n if (!this.isComposing()) {\n this.resetInputSummary()\n }\n this.inputSummary.didInput = true\n\n const keyName = keyNames[event.keyCode]\n if (keyName) {\n let context = this.keys\n\n ;[ \"ctrl\", \"alt\", \"shift\", \"meta\" ].forEach((modifier) => {\n if (event[`${modifier}Key`]) {\n if (modifier === \"ctrl\") {\n modifier = \"control\"\n }\n context = context?.[modifier]\n }\n })\n\n if (context?.[keyName] != null) {\n this.setInputSummary({ keyName })\n selectionChangeObserver.reset()\n context[keyName].call(this, event)\n }\n }\n\n if (keyEventIsKeyboardCommand(event)) {\n const character = String.fromCharCode(event.keyCode).toLowerCase()\n if (character) {\n const keys = [ \"alt\", \"shift\" ].map((modifier) => {\n if (event[`${modifier}Key`]) {\n return modifier\n }\n }).filter(key => key)\n keys.push(character)\n if (this.delegate?.inputControllerDidReceiveKeyboardCommand(keys)) {\n event.preventDefault()\n }\n }\n }\n },\n\n keypress(event) {\n if (this.inputSummary.eventName != null) return\n if (event.metaKey) return\n if (event.ctrlKey && !event.altKey) return\n\n const string = stringFromKeyEvent(event)\n if (string) {\n this.delegate?.inputControllerWillPerformTyping()\n this.responder?.insertString(string)\n return this.setInputSummary({ textAdded: string, didDelete: this.selectionIsExpanded() })\n }\n },\n\n textInput(event) {\n // Handle autocapitalization\n const { data } = event\n const { textAdded } = this.inputSummary\n if (textAdded && textAdded !== data && textAdded.toUpperCase() === data) {\n const range = this.getSelectedRange()\n this.setSelectedRange([ range[0], range[1] + textAdded.length ])\n this.responder?.insertString(data)\n this.setInputSummary({ textAdded: data })\n return this.setSelectedRange(range)\n }\n },\n\n dragenter(event) {\n event.preventDefault()\n },\n\n dragstart(event) {\n this.serializeSelectionToDataTransfer(event.dataTransfer)\n this.draggedRange = this.getSelectedRange()\n return this.delegate?.inputControllerDidStartDrag?.()\n },\n\n dragover(event) {\n if (this.draggedRange || this.canAcceptDataTransfer(event.dataTransfer)) {\n event.preventDefault()\n const draggingPoint = { x: event.clientX, y: event.clientY }\n if (!objectsAreEqual(draggingPoint, this.draggingPoint)) {\n this.draggingPoint = draggingPoint\n return this.delegate?.inputControllerDidReceiveDragOverPoint?.(this.draggingPoint)\n }\n }\n },\n\n dragend(event) {\n this.delegate?.inputControllerDidCancelDrag?.()\n this.draggedRange = null\n this.draggingPoint = null\n },\n\n drop(event) {\n event.preventDefault()\n const files = event.dataTransfer?.files\n const documentJSON = event.dataTransfer.getData(\"application/x-trix-document\")\n\n const point = { x: event.clientX, y: event.clientY }\n this.responder?.setLocationRangeFromPointRange(point)\n\n if (files?.length) {\n this.attachFiles(files)\n } else if (this.draggedRange) {\n this.delegate?.inputControllerWillMoveText()\n this.responder?.moveTextFromRange(this.draggedRange)\n this.draggedRange = null\n this.requestRender()\n } else if (documentJSON) {\n const document = Document.fromJSONString(documentJSON)\n this.responder?.insertDocument(document)\n this.requestRender()\n }\n\n this.draggedRange = null\n this.draggingPoint = null\n },\n\n cut(event) {\n if (this.responder?.selectionIsExpanded()) {\n if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n event.preventDefault()\n }\n\n this.delegate?.inputControllerWillCutText()\n this.deleteInDirection(\"backward\")\n if (event.defaultPrevented) {\n return this.requestRender()\n }\n }\n },\n\n copy(event) {\n if (this.responder?.selectionIsExpanded()) {\n if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n event.preventDefault()\n }\n }\n },\n\n paste(event) {\n const clipboard = event.clipboardData || event.testClipboardData\n const paste = { clipboard }\n\n if (!clipboard || pasteEventIsCrippledSafariHTMLPaste(event)) {\n this.getPastedHTMLUsingHiddenElement((html) => {\n paste.type = \"text/html\"\n paste.html = html\n this.delegate?.inputControllerWillPaste(paste)\n this.responder?.insertHTML(paste.html)\n this.requestRender()\n return this.delegate?.inputControllerDidPaste(paste)\n })\n return\n }\n\n const href = clipboard.getData(\"URL\")\n const html = clipboard.getData(\"text/html\")\n const name = clipboard.getData(\"public.url-name\")\n\n if (href) {\n let string\n paste.type = \"text/html\"\n if (name) {\n string = squishBreakableWhitespace(name).trim()\n } else {\n string = href\n }\n paste.html = this.createLinkHTML(href, string)\n this.delegate?.inputControllerWillPaste(paste)\n this.setInputSummary({ textAdded: string, didDelete: this.selectionIsExpanded() })\n this.responder?.insertHTML(paste.html)\n this.requestRender()\n this.delegate?.inputControllerDidPaste(paste)\n } else if (dataTransferIsPlainText(clipboard)) {\n paste.type = \"text/plain\"\n paste.string = clipboard.getData(\"text/plain\")\n this.delegate?.inputControllerWillPaste(paste)\n this.setInputSummary({ textAdded: paste.string, didDelete: this.selectionIsExpanded() })\n this.responder?.insertString(paste.string)\n this.requestRender()\n this.delegate?.inputControllerDidPaste(paste)\n } else if (html) {\n paste.type = \"text/html\"\n paste.html = html\n this.delegate?.inputControllerWillPaste(paste)\n this.responder?.insertHTML(paste.html)\n this.requestRender()\n this.delegate?.inputControllerDidPaste(paste)\n } else if (Array.from(clipboard.types).includes(\"Files\")) {\n const file = clipboard.items?.[0]?.getAsFile?.()\n if (file) {\n const extension = extensionForFile(file)\n if (!file.name && extension) {\n file.name = `pasted-file-${++pastedFileCount}.${extension}`\n }\n paste.type = \"File\"\n paste.file = file\n this.delegate?.inputControllerWillAttachFiles()\n this.responder?.insertFile(paste.file)\n this.requestRender()\n this.delegate?.inputControllerDidPaste(paste)\n }\n }\n\n event.preventDefault()\n },\n\n compositionstart(event) {\n return this.getCompositionInput().start(event.data)\n },\n\n compositionupdate(event) {\n return this.getCompositionInput().update(event.data)\n },\n\n compositionend(event) {\n return this.getCompositionInput().end(event.data)\n },\n\n beforeinput(event) {\n this.inputSummary.didInput = true\n },\n\n input(event) {\n this.inputSummary.didInput = true\n return event.stopPropagation()\n },\n }\n\n static keys = {\n backspace(event) {\n this.delegate?.inputControllerWillPerformTyping()\n return this.deleteInDirection(\"backward\", event)\n },\n\n delete(event) {\n this.delegate?.inputControllerWillPerformTyping()\n return this.deleteInDirection(\"forward\", event)\n },\n\n return(event) {\n this.setInputSummary({ preferDocument: true })\n this.delegate?.inputControllerWillPerformTyping()\n return this.responder?.insertLineBreak()\n },\n\n tab(event) {\n if (this.responder?.canIncreaseNestingLevel()) {\n this.responder?.increaseNestingLevel()\n this.requestRender()\n event.preventDefault()\n }\n },\n\n left(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault()\n return this.responder?.moveCursorInDirection(\"backward\")\n }\n },\n\n right(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault()\n return this.responder?.moveCursorInDirection(\"forward\")\n }\n },\n\n control: {\n d(event) {\n this.delegate?.inputControllerWillPerformTyping()\n return this.deleteInDirection(\"forward\", event)\n },\n\n h(event) {\n this.delegate?.inputControllerWillPerformTyping()\n return this.deleteInDirection(\"backward\", event)\n },\n\n o(event) {\n event.preventDefault()\n this.delegate?.inputControllerWillPerformTyping()\n this.responder?.insertString(\"\\n\", { updatePosition: false })\n return this.requestRender()\n },\n },\n\n shift: {\n return(event) {\n this.delegate?.inputControllerWillPerformTyping()\n this.responder?.insertString(\"\\n\")\n this.requestRender()\n event.preventDefault()\n },\n\n tab(event) {\n if (this.responder?.canDecreaseNestingLevel()) {\n this.responder?.decreaseNestingLevel()\n this.requestRender()\n event.preventDefault()\n }\n },\n\n left(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault()\n return this.expandSelectionInDirection(\"backward\")\n }\n },\n\n right(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault()\n return this.expandSelectionInDirection(\"forward\")\n }\n },\n },\n\n alt: {\n backspace(event) {\n this.setInputSummary({ preferDocument: false })\n return this.delegate?.inputControllerWillPerformTyping()\n },\n },\n\n meta: {\n backspace(event) {\n this.setInputSummary({ preferDocument: false })\n return this.delegate?.inputControllerWillPerformTyping()\n },\n },\n }\n\n constructor() {\n super(...arguments)\n this.resetInputSummary()\n }\n\n setInputSummary(summary = {}) {\n this.inputSummary.eventName = this.eventName\n for (const key in summary) {\n const value = summary[key]\n this.inputSummary[key] = value\n }\n return this.inputSummary\n }\n\n resetInputSummary() {\n this.inputSummary = {}\n }\n\n reset() {\n this.resetInputSummary()\n return selectionChangeObserver.reset()\n }\n\n // Mutation observer delegate\n\n elementDidMutate(mutationSummary) {\n if (this.isComposing()) {\n return this.delegate?.inputControllerDidAllowUnhandledInput?.()\n } else {\n return this.handleInput(function() {\n if (this.mutationIsSignificant(mutationSummary)) {\n if (this.mutationIsExpected(mutationSummary)) {\n this.requestRender()\n } else {\n this.requestReparse()\n }\n }\n return this.reset()\n })\n }\n }\n\n mutationIsExpected({ textAdded, textDeleted }) {\n if (this.inputSummary.preferDocument) {\n return true\n }\n\n const mutationAdditionMatchesSummary =\n textAdded != null ? textAdded === this.inputSummary.textAdded : !this.inputSummary.textAdded\n const mutationDeletionMatchesSummary =\n textDeleted != null ? this.inputSummary.didDelete : !this.inputSummary.didDelete\n\n const unexpectedNewlineAddition = [ \"\\n\", \" \\n\" ].includes(textAdded) && !mutationAdditionMatchesSummary\n const unexpectedNewlineDeletion = textDeleted === \"\\n\" && !mutationDeletionMatchesSummary\n const singleUnexpectedNewline =\n unexpectedNewlineAddition && !unexpectedNewlineDeletion ||\n unexpectedNewlineDeletion && !unexpectedNewlineAddition\n\n if (singleUnexpectedNewline) {\n const range = this.getSelectedRange()\n if (range) {\n const offset = unexpectedNewlineAddition ? textAdded.replace(/\\n$/, \"\").length || -1 : textAdded?.length || 1\n if (this.responder?.positionIsBlockBreak(range[1] + offset)) {\n return true\n }\n }\n }\n\n return mutationAdditionMatchesSummary && mutationDeletionMatchesSummary\n }\n\n mutationIsSignificant(mutationSummary) {\n const textChanged = Object.keys(mutationSummary).length > 0\n const composedEmptyString = this.compositionInput?.getEndData() === \"\"\n return textChanged || !composedEmptyString\n }\n\n // Private\n\n getCompositionInput() {\n if (this.isComposing()) {\n return this.compositionInput\n } else {\n this.compositionInput = new CompositionInput(this)\n }\n }\n\n isComposing() {\n return this.compositionInput && !this.compositionInput.isEnded()\n }\n\n deleteInDirection(direction, event) {\n if (this.responder?.deleteInDirection(direction) === false) {\n if (event) {\n event.preventDefault()\n return this.requestRender()\n }\n } else {\n return this.setInputSummary({ didDelete: true })\n }\n }\n\n serializeSelectionToDataTransfer(dataTransfer) {\n if (!dataTransferIsWritable(dataTransfer)) return\n const document = this.responder?.getSelectedDocument().toSerializableDocument()\n\n dataTransfer.setData(\"application/x-trix-document\", JSON.stringify(document))\n dataTransfer.setData(\"text/html\", DocumentView.render(document).innerHTML)\n dataTransfer.setData(\"text/plain\", document.toString().replace(/\\n$/, \"\"))\n return true\n }\n\n canAcceptDataTransfer(dataTransfer) {\n const types = {}\n Array.from(dataTransfer?.types || []).forEach((type) => {\n types[type] = true\n })\n return types.Files || types[\"application/x-trix-document\"] || types[\"text/html\"] || types[\"text/plain\"]\n }\n\n getPastedHTMLUsingHiddenElement(callback) {\n const selectedRange = this.getSelectedRange()\n\n const style = {\n position: \"absolute\",\n left: `${window.pageXOffset}px`,\n top: `${window.pageYOffset}px`,\n opacity: 0,\n }\n\n const element = makeElement({ style, tagName: \"div\", editable: true })\n document.body.appendChild(element)\n element.focus()\n\n return requestAnimationFrame(() => {\n const html = element.innerHTML\n removeNode(element)\n this.setSelectedRange(selectedRange)\n return callback(html)\n })\n }\n}\n\nLevel0InputController.proxyMethod(\"responder?.getSelectedRange\")\nLevel0InputController.proxyMethod(\"responder?.setSelectedRange\")\nLevel0InputController.proxyMethod(\"responder?.expandSelectionInDirection\")\nLevel0InputController.proxyMethod(\"responder?.selectionIsInCursorTarget\")\nLevel0InputController.proxyMethod(\"responder?.selectionIsExpanded\")\n\nconst extensionForFile = (file) => file.type?.match(/\\/(\\w+)$/)?.[1]\n\nconst hasStringCodePointAt = !!\" \".codePointAt?.(0)\n\nconst stringFromKeyEvent = function(event) {\n if (event.key && hasStringCodePointAt && event.key.codePointAt(0) === event.keyCode) {\n return event.key\n } else {\n let code\n if (event.which === null) {\n code = event.keyCode\n } else if (event.which !== 0 && event.charCode !== 0) {\n code = event.charCode\n }\n\n if (code != null && keyNames[code] !== \"escape\") {\n return UTF16String.fromCodepoints([ code ]).toString()\n }\n }\n}\n\nconst pasteEventIsCrippledSafariHTMLPaste = function(event) {\n const paste = event.clipboardData\n if (paste) {\n if (paste.types.includes(\"text/html\")) {\n // Answer is yes if there's any possibility of Paste and Match Style in Safari,\n // which is nearly impossible to detect confidently: https://bugs.webkit.org/show_bug.cgi?id=174165\n for (const type of paste.types) {\n const hasPasteboardFlavor = /^CorePasteboardFlavorType/.test(type)\n const hasReadableDynamicData = /^dyn\\./.test(type) && paste.getData(type)\n const mightBePasteAndMatchStyle = hasPasteboardFlavor || hasReadableDynamicData\n if (mightBePasteAndMatchStyle) {\n return true\n }\n }\n return false\n } else {\n const isExternalHTMLPaste = paste.types.includes(\"com.apple.webarchive\")\n const isExternalRichTextPaste = paste.types.includes(\"com.apple.flat-rtfd\")\n return isExternalHTMLPaste || isExternalRichTextPaste\n }\n }\n}\n\nclass CompositionInput extends BasicObject {\n constructor(inputController) {\n super(...arguments)\n this.inputController = inputController\n this.responder = this.inputController.responder\n this.delegate = this.inputController.delegate\n this.inputSummary = this.inputController.inputSummary\n this.data = {}\n }\n\n start(data) {\n this.data.start = data\n\n if (this.isSignificant()) {\n if (this.inputSummary.eventName === \"keypress\" && this.inputSummary.textAdded) {\n this.responder?.deleteInDirection(\"left\")\n }\n\n if (!this.selectionIsExpanded()) {\n this.insertPlaceholder()\n this.requestRender()\n }\n\n this.range = this.responder?.getSelectedRange()\n }\n }\n\n update(data) {\n this.data.update = data\n\n if (this.isSignificant()) {\n const range = this.selectPlaceholder()\n if (range) {\n this.forgetPlaceholder()\n this.range = range\n }\n }\n }\n\n end(data) {\n this.data.end = data\n\n if (this.isSignificant()) {\n this.forgetPlaceholder()\n\n if (this.canApplyToDocument()) {\n this.setInputSummary({ preferDocument: true, didInput: false })\n this.delegate?.inputControllerWillPerformTyping()\n this.responder?.setSelectedRange(this.range)\n this.responder?.insertString(this.data.end)\n return this.responder?.setSelectedRange(this.range[0] + this.data.end.length)\n } else if (this.data.start != null || this.data.update != null) {\n this.requestReparse()\n return this.inputController.reset()\n }\n } else {\n return this.inputController.reset()\n }\n }\n\n getEndData() {\n return this.data.end\n }\n\n isEnded() {\n return this.getEndData() != null\n }\n\n isSignificant() {\n if (browser.composesExistingText) {\n return this.inputSummary.didInput\n } else {\n return true\n }\n }\n\n // Private\n\n canApplyToDocument() {\n return this.data.start?.length === 0 && this.data.end?.length > 0 && this.range\n }\n}\n\nCompositionInput.proxyMethod(\"inputController.setInputSummary\")\nCompositionInput.proxyMethod(\"inputController.requestRender\")\nCompositionInput.proxyMethod(\"inputController.requestReparse\")\nCompositionInput.proxyMethod(\"responder?.selectionIsExpanded\")\nCompositionInput.proxyMethod(\"responder?.insertPlaceholder\")\nCompositionInput.proxyMethod(\"responder?.selectPlaceholder\")\nCompositionInput.proxyMethod(\"responder?.forgetPlaceholder\")\n", "import { getAllAttributeNames, shouldRenderInmmediatelyToDealWithIOSDictation, squishBreakableWhitespace } from \"trix/core/helpers\"\nimport InputController from \"trix/controllers/input_controller\"\nimport * as config from \"trix/config\"\n\nimport { dataTransferIsMsOfficePaste, dataTransferIsPlainText, keyEventIsKeyboardCommand, objectsAreEqual } from \"trix/core/helpers\"\n\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nexport default class Level2InputController extends InputController {\n constructor(...args) {\n super(...args)\n this.render = this.render.bind(this)\n }\n\n static events = {\n keydown(event) {\n if (keyEventIsKeyboardCommand(event)) {\n const command = keyboardCommandFromKeyEvent(event)\n if (this.delegate?.inputControllerDidReceiveKeyboardCommand(command)) {\n event.preventDefault()\n }\n } else {\n let name = event.key\n if (event.altKey) {\n name += \"+Alt\"\n }\n if (event.shiftKey) {\n name += \"+Shift\"\n }\n const handler = this.constructor.keys[name]\n if (handler) {\n return this.withEvent(event, handler)\n }\n }\n },\n\n // Handle paste event to work around beforeinput.insertFromPaste browser bugs.\n // Safe to remove each condition once fixed upstream.\n paste(event) {\n // https://bugs.webkit.org/show_bug.cgi?id=194921\n let paste\n const href = event.clipboardData?.getData(\"URL\")\n if (pasteEventHasFilesOnly(event)) {\n event.preventDefault()\n return this.attachFiles(event.clipboardData.files)\n\n // https://bugs.chromium.org/p/chromium/issues/detail?id=934448\n } else if (pasteEventHasPlainTextOnly(event)) {\n event.preventDefault()\n paste = {\n type: \"text/plain\",\n string: event.clipboardData.getData(\"text/plain\"),\n }\n this.delegate?.inputControllerWillPaste(paste)\n this.responder?.insertString(paste.string)\n this.render()\n return this.delegate?.inputControllerDidPaste(paste)\n\n // https://bugs.webkit.org/show_bug.cgi?id=196702\n } else if (href) {\n event.preventDefault()\n paste = {\n type: \"text/html\",\n html: this.createLinkHTML(href),\n }\n this.delegate?.inputControllerWillPaste(paste)\n this.responder?.insertHTML(paste.html)\n this.render()\n return this.delegate?.inputControllerDidPaste(paste)\n }\n },\n\n beforeinput(event) {\n const handler = this.constructor.inputTypes[event.inputType]\n\n const immmediateRender = shouldRenderInmmediatelyToDealWithIOSDictation(event)\n\n if (handler) {\n this.withEvent(event, handler)\n\n if (!immmediateRender) {\n this.scheduleRender()\n }\n }\n\n if (immmediateRender) {\n this.render()\n }\n },\n\n input(event) {\n selectionChangeObserver.reset()\n },\n\n dragstart(event) {\n if (this.responder?.selectionContainsAttachments()) {\n event.dataTransfer.setData(\"application/x-trix-dragging\", true)\n\n this.dragging = {\n range: this.responder?.getSelectedRange(),\n point: pointFromEvent(event),\n }\n }\n },\n\n dragenter(event) {\n if (dragEventHasFiles(event)) {\n event.preventDefault()\n }\n },\n\n dragover(event) {\n if (this.dragging) {\n event.preventDefault()\n const point = pointFromEvent(event)\n if (!objectsAreEqual(point, this.dragging.point)) {\n this.dragging.point = point\n return this.responder?.setLocationRangeFromPointRange(point)\n }\n } else if (dragEventHasFiles(event)) {\n event.preventDefault()\n }\n },\n\n drop(event) {\n if (this.dragging) {\n event.preventDefault()\n this.delegate?.inputControllerWillMoveText()\n this.responder?.moveTextFromRange(this.dragging.range)\n this.dragging = null\n return this.scheduleRender()\n } else if (dragEventHasFiles(event)) {\n event.preventDefault()\n const point = pointFromEvent(event)\n this.responder?.setLocationRangeFromPointRange(point)\n return this.attachFiles(event.dataTransfer.files)\n }\n },\n\n dragend() {\n if (this.dragging) {\n this.responder?.setSelectedRange(this.dragging.range)\n this.dragging = null\n }\n },\n\n compositionend(event) {\n if (this.composing) {\n this.composing = false\n if (!config.browser.recentAndroid) this.scheduleRender()\n }\n },\n }\n\n static keys = {\n ArrowLeft() {\n if (this.responder?.shouldManageMovingCursorInDirection(\"backward\")) {\n this.event.preventDefault()\n return this.responder?.moveCursorInDirection(\"backward\")\n }\n },\n\n ArrowRight() {\n if (this.responder?.shouldManageMovingCursorInDirection(\"forward\")) {\n this.event.preventDefault()\n return this.responder?.moveCursorInDirection(\"forward\")\n }\n },\n\n Backspace() {\n if (this.responder?.shouldManageDeletingInDirection(\"backward\")) {\n this.event.preventDefault()\n this.delegate?.inputControllerWillPerformTyping()\n this.responder?.deleteInDirection(\"backward\")\n return this.render()\n }\n },\n\n Tab() {\n if (this.responder?.canIncreaseNestingLevel()) {\n this.event.preventDefault()\n this.responder?.increaseNestingLevel()\n return this.render()\n }\n },\n\n \"Tab+Shift\"() {\n if (this.responder?.canDecreaseNestingLevel()) {\n this.event.preventDefault()\n this.responder?.decreaseNestingLevel()\n return this.render()\n }\n },\n }\n\n static inputTypes = {\n deleteByComposition() {\n return this.deleteInDirection(\"backward\", { recordUndoEntry: false })\n },\n\n deleteByCut() {\n return this.deleteInDirection(\"backward\")\n },\n\n deleteByDrag() {\n this.event.preventDefault()\n return this.withTargetDOMRange(function() {\n this.deleteByDragRange = this.responder?.getSelectedRange()\n })\n },\n\n deleteCompositionText() {\n return this.deleteInDirection(\"backward\", { recordUndoEntry: false })\n },\n\n deleteContent() {\n return this.deleteInDirection(\"backward\")\n },\n\n deleteContentBackward() {\n return this.deleteInDirection(\"backward\")\n },\n\n deleteContentForward() {\n return this.deleteInDirection(\"forward\")\n },\n\n deleteEntireSoftLine() {\n return this.deleteInDirection(\"forward\")\n },\n\n deleteHardLineBackward() {\n return this.deleteInDirection(\"backward\")\n },\n\n deleteHardLineForward() {\n return this.deleteInDirection(\"forward\")\n },\n\n deleteSoftLineBackward() {\n return this.deleteInDirection(\"backward\")\n },\n\n deleteSoftLineForward() {\n return this.deleteInDirection(\"forward\")\n },\n\n deleteWordBackward() {\n return this.deleteInDirection(\"backward\")\n },\n\n deleteWordForward() {\n return this.deleteInDirection(\"forward\")\n },\n\n formatBackColor() {\n return this.activateAttributeIfSupported(\"backgroundColor\", this.event.data)\n },\n\n formatBold() {\n return this.toggleAttributeIfSupported(\"bold\")\n },\n\n formatFontColor() {\n return this.activateAttributeIfSupported(\"color\", this.event.data)\n },\n\n formatFontName() {\n return this.activateAttributeIfSupported(\"font\", this.event.data)\n },\n\n formatIndent() {\n if (this.responder?.canIncreaseNestingLevel()) {\n return this.withTargetDOMRange(function() {\n return this.responder?.increaseNestingLevel()\n })\n }\n },\n\n formatItalic() {\n return this.toggleAttributeIfSupported(\"italic\")\n },\n\n formatJustifyCenter() {\n return this.toggleAttributeIfSupported(\"justifyCenter\")\n },\n\n formatJustifyFull() {\n return this.toggleAttributeIfSupported(\"justifyFull\")\n },\n\n formatJustifyLeft() {\n return this.toggleAttributeIfSupported(\"justifyLeft\")\n },\n\n formatJustifyRight() {\n return this.toggleAttributeIfSupported(\"justifyRight\")\n },\n\n formatOutdent() {\n if (this.responder?.canDecreaseNestingLevel()) {\n return this.withTargetDOMRange(function() {\n return this.responder?.decreaseNestingLevel()\n })\n }\n },\n\n formatRemove() {\n this.withTargetDOMRange(function() {\n for (const attributeName in this.responder?.getCurrentAttributes()) {\n this.responder?.removeCurrentAttribute(attributeName)\n }\n })\n },\n\n formatSetBlockTextDirection() {\n return this.activateAttributeIfSupported(\"blockDir\", this.event.data)\n },\n\n formatSetInlineTextDirection() {\n return this.activateAttributeIfSupported(\"textDir\", this.event.data)\n },\n\n formatStrikeThrough() {\n return this.toggleAttributeIfSupported(\"strike\")\n },\n\n formatSubscript() {\n return this.toggleAttributeIfSupported(\"sub\")\n },\n\n formatSuperscript() {\n return this.toggleAttributeIfSupported(\"sup\")\n },\n\n formatUnderline() {\n return this.toggleAttributeIfSupported(\"underline\")\n },\n\n historyRedo() {\n return this.delegate?.inputControllerWillPerformRedo()\n },\n\n historyUndo() {\n return this.delegate?.inputControllerWillPerformUndo()\n },\n\n insertCompositionText() {\n this.composing = true\n return this.insertString(this.event.data)\n },\n\n insertFromComposition() {\n this.composing = false\n return this.insertString(this.event.data)\n },\n\n insertFromDrop() {\n const range = this.deleteByDragRange\n if (range) {\n this.deleteByDragRange = null\n this.delegate?.inputControllerWillMoveText()\n return this.withTargetDOMRange(function() {\n return this.responder?.moveTextFromRange(range)\n })\n }\n },\n\n insertFromPaste() {\n const { dataTransfer } = this.event\n const paste = { dataTransfer }\n\n const href = dataTransfer.getData(\"URL\")\n const html = dataTransfer.getData(\"text/html\")\n\n if (href) {\n let string\n this.event.preventDefault()\n paste.type = \"text/html\"\n const name = dataTransfer.getData(\"public.url-name\")\n if (name) {\n string = squishBreakableWhitespace(name).trim()\n } else {\n string = href\n }\n paste.html = this.createLinkHTML(href, string)\n this.delegate?.inputControllerWillPaste(paste)\n this.withTargetDOMRange(function() {\n return this.responder?.insertHTML(paste.html)\n })\n this.afterRender = () => {\n return this.delegate?.inputControllerDidPaste(paste)\n }\n } else if (dataTransferIsPlainText(dataTransfer)) {\n paste.type = \"text/plain\"\n paste.string = dataTransfer.getData(\"text/plain\")\n this.delegate?.inputControllerWillPaste(paste)\n this.withTargetDOMRange(function() {\n return this.responder?.insertString(paste.string)\n })\n\n this.afterRender = () => {\n return this.delegate?.inputControllerDidPaste(paste)\n }\n } else if (processableFilePaste(this.event)) {\n paste.type = \"File\"\n paste.file = dataTransfer.files[0]\n this.delegate?.inputControllerWillPaste(paste)\n this.withTargetDOMRange(function() {\n return this.responder?.insertFile(paste.file)\n })\n\n this.afterRender = () => {\n return this.delegate?.inputControllerDidPaste(paste)\n }\n } else if (html) {\n this.event.preventDefault()\n paste.type = \"text/html\"\n paste.html = html\n this.delegate?.inputControllerWillPaste(paste)\n this.withTargetDOMRange(function() {\n return this.responder?.insertHTML(paste.html)\n })\n this.afterRender = () => {\n return this.delegate?.inputControllerDidPaste(paste)\n }\n }\n },\n\n insertFromYank() {\n return this.insertString(this.event.data)\n },\n\n insertLineBreak() {\n return this.insertString(\"\\n\")\n },\n\n insertLink() {\n return this.activateAttributeIfSupported(\"href\", this.event.data)\n },\n\n insertOrderedList() {\n return this.toggleAttributeIfSupported(\"number\")\n },\n\n insertParagraph() {\n this.delegate?.inputControllerWillPerformTyping()\n return this.withTargetDOMRange(function() {\n return this.responder?.insertLineBreak()\n })\n },\n\n insertReplacementText() {\n const replacement = this.event.dataTransfer.getData(\"text/plain\")\n const domRange = this.event.getTargetRanges()[0]\n\n this.withTargetDOMRange(domRange, () => {\n this.insertString(replacement, { updatePosition: false })\n })\n },\n\n insertText() {\n return this.insertString(this.event.data || this.event.dataTransfer?.getData(\"text/plain\"))\n },\n\n insertTranspose() {\n return this.insertString(this.event.data)\n },\n\n insertUnorderedList() {\n return this.toggleAttributeIfSupported(\"bullet\")\n },\n }\n\n elementDidMutate() {\n if (this.scheduledRender) {\n if (this.composing) {\n return this.delegate?.inputControllerDidAllowUnhandledInput?.()\n }\n } else {\n return this.reparse()\n }\n }\n\n scheduleRender() {\n return this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render)\n }\n\n render() {\n cancelAnimationFrame(this.scheduledRender)\n this.scheduledRender = null\n if (!this.composing) {\n this.delegate?.render()\n }\n this.afterRender?.()\n this.afterRender = null\n }\n\n reparse() {\n return this.delegate?.reparse()\n }\n\n // Responder helpers\n\n insertString(string = \"\", options) {\n this.delegate?.inputControllerWillPerformTyping()\n return this.withTargetDOMRange(function() {\n return this.responder?.insertString(string, options)\n })\n }\n\n toggleAttributeIfSupported(attributeName) {\n if (getAllAttributeNames().includes(attributeName)) {\n this.delegate?.inputControllerWillPerformFormatting(attributeName)\n return this.withTargetDOMRange(function() {\n return this.responder?.toggleCurrentAttribute(attributeName)\n })\n }\n }\n\n activateAttributeIfSupported(attributeName, value) {\n if (getAllAttributeNames().includes(attributeName)) {\n this.delegate?.inputControllerWillPerformFormatting(attributeName)\n return this.withTargetDOMRange(function() {\n return this.responder?.setCurrentAttribute(attributeName, value)\n })\n }\n }\n\n deleteInDirection(direction, { recordUndoEntry } = { recordUndoEntry: true }) {\n if (recordUndoEntry) {\n this.delegate?.inputControllerWillPerformTyping()\n }\n const perform = () => this.responder?.deleteInDirection(direction)\n const domRange = this.getTargetDOMRange({ minLength: this.composing ? 1 : 2 })\n if (domRange) {\n return this.withTargetDOMRange(domRange, perform)\n } else {\n return perform()\n }\n }\n\n // Selection helpers\n\n withTargetDOMRange(domRange, fn) {\n if (typeof domRange === \"function\") {\n fn = domRange\n domRange = this.getTargetDOMRange()\n }\n if (domRange) {\n return this.responder?.withTargetDOMRange(domRange, fn.bind(this))\n } else {\n selectionChangeObserver.reset()\n return fn.call(this)\n }\n }\n\n getTargetDOMRange({ minLength } = { minLength: 0 }) {\n const targetRanges = this.event.getTargetRanges?.()\n if (targetRanges) {\n if (targetRanges.length) {\n const domRange = staticRangeToRange(targetRanges[0])\n if (minLength === 0 || domRange.toString().length >= minLength) {\n return domRange\n }\n }\n }\n }\n\n withEvent(event, fn) {\n let result\n this.event = event\n try {\n result = fn.call(this)\n } finally {\n this.event = null\n }\n return result\n }\n}\n\nconst staticRangeToRange = function(staticRange) {\n const range = document.createRange()\n range.setStart(staticRange.startContainer, staticRange.startOffset)\n range.setEnd(staticRange.endContainer, staticRange.endOffset)\n return range\n}\n\n// Event helpers\n\nconst dragEventHasFiles = (event) => Array.from(event.dataTransfer?.types || []).includes(\"Files\")\n\nconst processableFilePaste = (event) => {\n // Paste events that only have files are handled by the paste event handler,\n // to work around Safari not supporting beforeinput.insertFromPaste for files.\n\n // MS Office text pastes include a file with a screenshot of the text, but we should\n // handle them as text pastes.\n return event.dataTransfer.files?.[0] && !pasteEventHasFilesOnly(event) && !dataTransferIsMsOfficePaste(event)\n}\n\nconst pasteEventHasFilesOnly = function(event) {\n const clipboard = event.clipboardData\n if (clipboard) {\n const fileTypes = Array.from(clipboard.types).filter((type) => type.match(/file/i)) // \"Files\", \"application/x-moz-file\"\n return fileTypes.length === clipboard.types.length && clipboard.files.length >= 1\n }\n}\n\nconst pasteEventHasPlainTextOnly = function(event) {\n const clipboard = event.clipboardData\n if (clipboard) {\n return clipboard.types.includes(\"text/plain\") && clipboard.types.length === 1\n }\n}\n\nconst keyboardCommandFromKeyEvent = function(event) {\n const command = []\n if (event.altKey) {\n command.push(\"alt\")\n }\n if (event.shiftKey) {\n command.push(\"shift\")\n }\n command.push(event.key)\n return command\n}\n\nconst pointFromEvent = (event) => ({\n x: event.clientX,\n y: event.clientY,\n})\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport { findClosestElementFromNode, handleEvent, triggerEvent } from \"trix/core/helpers\"\n\nimport DOMPurify from \"dompurify\"\n\nconst attributeButtonSelector = \"[data-trix-attribute]\"\nconst actionButtonSelector = \"[data-trix-action]\"\nconst toolbarButtonSelector = `${attributeButtonSelector}, ${actionButtonSelector}`\nconst dialogSelector = \"[data-trix-dialog]\"\nconst activeDialogSelector = `${dialogSelector}[data-trix-active]`\nconst dialogButtonSelector = `${dialogSelector} [data-trix-method]`\nconst dialogInputSelector = `${dialogSelector} [data-trix-input]`\nconst getInputForDialog = (element, attributeName) => {\n if (!attributeName) { attributeName = getAttributeName(element) }\n return element.querySelector(`[data-trix-input][name='${attributeName}']`)\n}\nconst getActionName = (element) => element.getAttribute(\"data-trix-action\")\nconst getAttributeName = (element) => {\n return element.getAttribute(\"data-trix-attribute\") || element.getAttribute(\"data-trix-dialog-attribute\")\n}\nconst getDialogName = (element) => element.getAttribute(\"data-trix-dialog\")\n\nexport default class ToolbarController extends BasicObject {\n constructor(element) {\n super(element)\n this.didClickActionButton = this.didClickActionButton.bind(this)\n this.didClickAttributeButton = this.didClickAttributeButton.bind(this)\n this.didClickDialogButton = this.didClickDialogButton.bind(this)\n this.didKeyDownDialogInput = this.didKeyDownDialogInput.bind(this)\n this.element = element\n this.attributes = {}\n this.actions = {}\n this.resetDialogInputs()\n\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: actionButtonSelector,\n withCallback: this.didClickActionButton,\n })\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: attributeButtonSelector,\n withCallback: this.didClickAttributeButton,\n })\n handleEvent(\"click\", { onElement: this.element, matchingSelector: toolbarButtonSelector, preventDefault: true })\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: dialogButtonSelector,\n withCallback: this.didClickDialogButton,\n })\n handleEvent(\"keydown\", {\n onElement: this.element,\n matchingSelector: dialogInputSelector,\n withCallback: this.didKeyDownDialogInput,\n })\n }\n\n // Event handlers\n\n didClickActionButton(event, element) {\n this.delegate?.toolbarDidClickButton()\n event.preventDefault()\n const actionName = getActionName(element)\n\n if (this.getDialog(actionName)) {\n return this.toggleDialog(actionName)\n } else {\n return this.delegate?.toolbarDidInvokeAction(actionName, element)\n }\n }\n\n didClickAttributeButton(event, element) {\n this.delegate?.toolbarDidClickButton()\n event.preventDefault()\n const attributeName = getAttributeName(element)\n\n if (this.getDialog(attributeName)) {\n this.toggleDialog(attributeName)\n } else {\n this.delegate?.toolbarDidToggleAttribute(attributeName)\n }\n\n return this.refreshAttributeButtons()\n }\n\n didClickDialogButton(event, element) {\n const dialogElement = findClosestElementFromNode(element, { matchingSelector: dialogSelector })\n const method = element.getAttribute(\"data-trix-method\")\n return this[method].call(this, dialogElement)\n }\n\n didKeyDownDialogInput(event, element) {\n if (event.keyCode === 13) {\n // Enter key\n event.preventDefault()\n const attribute = element.getAttribute(\"name\")\n const dialog = this.getDialog(attribute)\n this.setAttribute(dialog)\n }\n if (event.keyCode === 27) {\n // Escape key\n event.preventDefault()\n return this.hideDialog()\n }\n }\n\n // Action buttons\n\n updateActions(actions) {\n this.actions = actions\n return this.refreshActionButtons()\n }\n\n refreshActionButtons() {\n return this.eachActionButton((element, actionName) => {\n element.disabled = this.actions[actionName] === false\n })\n }\n\n eachActionButton(callback) {\n return Array.from(this.element.querySelectorAll(actionButtonSelector)).map((element) =>\n callback(element, getActionName(element))\n )\n }\n\n // Attribute buttons\n\n updateAttributes(attributes) {\n this.attributes = attributes\n return this.refreshAttributeButtons()\n }\n\n refreshAttributeButtons() {\n return this.eachAttributeButton((element, attributeName) => {\n element.disabled = this.attributes[attributeName] === false\n if (this.attributes[attributeName] || this.dialogIsVisible(attributeName)) {\n element.setAttribute(\"data-trix-active\", \"\")\n return element.classList.add(\"trix-active\")\n } else {\n element.removeAttribute(\"data-trix-active\")\n return element.classList.remove(\"trix-active\")\n }\n })\n }\n\n eachAttributeButton(callback) {\n return Array.from(this.element.querySelectorAll(attributeButtonSelector)).map((element) =>\n callback(element, getAttributeName(element))\n )\n }\n\n applyKeyboardCommand(keys) {\n const keyString = JSON.stringify(keys.sort())\n for (const button of Array.from(this.element.querySelectorAll(\"[data-trix-key]\"))) {\n const buttonKeys = button.getAttribute(\"data-trix-key\").split(\"+\")\n const buttonKeyString = JSON.stringify(buttonKeys.sort())\n if (buttonKeyString === keyString) {\n triggerEvent(\"mousedown\", { onElement: button })\n return true\n }\n }\n return false\n }\n\n // Dialogs\n\n dialogIsVisible(dialogName) {\n const element = this.getDialog(dialogName)\n if (element) {\n return element.hasAttribute(\"data-trix-active\")\n }\n }\n\n toggleDialog(dialogName) {\n if (this.dialogIsVisible(dialogName)) {\n return this.hideDialog()\n } else {\n return this.showDialog(dialogName)\n }\n }\n\n showDialog(dialogName) {\n this.hideDialog()\n this.delegate?.toolbarWillShowDialog()\n\n const element = this.getDialog(dialogName)\n element.setAttribute(\"data-trix-active\", \"\")\n element.classList.add(\"trix-active\")\n\n Array.from(element.querySelectorAll(\"input[disabled]\")).forEach((disabledInput) => {\n disabledInput.removeAttribute(\"disabled\")\n })\n\n const attributeName = getAttributeName(element)\n if (attributeName) {\n const input = getInputForDialog(element, dialogName)\n if (input) {\n input.value = this.attributes[attributeName] || \"\"\n input.select()\n }\n }\n\n return this.delegate?.toolbarDidShowDialog(dialogName)\n }\n\n setAttribute(dialogElement) {\n const attributeName = getAttributeName(dialogElement)\n const input = getInputForDialog(dialogElement, attributeName)\n\n if (input.willValidate) {\n input.setCustomValidity(\"\")\n if (!input.checkValidity() || !this.isSafeAttribute(input)) {\n input.setCustomValidity(\"Invalid value\")\n input.setAttribute(\"data-trix-validate\", \"\")\n input.classList.add(\"trix-validate\")\n return input.focus()\n }\n }\n this.delegate?.toolbarDidUpdateAttribute(attributeName, input.value)\n return this.hideDialog()\n }\n\n isSafeAttribute(input) {\n if (input.hasAttribute(\"data-trix-validate-href\")) {\n return DOMPurify.isValidAttribute(\"a\", \"href\", input.value)\n } else {\n return true\n }\n }\n\n removeAttribute(dialogElement) {\n const attributeName = getAttributeName(dialogElement)\n this.delegate?.toolbarDidRemoveAttribute(attributeName)\n return this.hideDialog()\n }\n\n hideDialog() {\n const element = this.element.querySelector(activeDialogSelector)\n if (element) {\n element.removeAttribute(\"data-trix-active\")\n element.classList.remove(\"trix-active\")\n this.resetDialogInputs()\n return this.delegate?.toolbarDidHideDialog(getDialogName(element))\n }\n }\n\n resetDialogInputs() {\n Array.from(this.element.querySelectorAll(dialogInputSelector)).forEach((input) => {\n input.setAttribute(\"disabled\", \"disabled\")\n input.removeAttribute(\"data-trix-validate\")\n input.classList.remove(\"trix-validate\")\n })\n }\n\n getDialog(dialogName) {\n return this.element.querySelector(`[data-trix-dialog=${dialogName}]`)\n }\n}\n", "/* eslint-disable\n id-length,\n*/\nimport * as config from \"trix/config\"\n\nimport { serializeToContentType } from \"trix/core/serialization\"\n\nimport Controller from \"trix/controllers/controller\"\nimport Level0InputController from \"trix/controllers/level_0_input_controller\"\nimport Level2InputController from \"trix/controllers/level_2_input_controller\"\nimport CompositionController from \"trix/controllers/composition_controller\"\nimport ToolbarController from \"trix/controllers/toolbar_controller\"\nimport Composition from \"trix/models/composition\"\nimport Editor from \"trix/models/editor\"\nimport AttachmentManager from \"trix/models/attachment_manager\"\nimport SelectionManager from \"trix/models/selection_manager\"\n\nimport { getBlockConfig, objectsAreEqual, rangeIsCollapsed, rangesAreEqual } from \"trix/core/helpers\"\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nconst snapshotsAreEqual = (a, b) => rangesAreEqual(a.selectedRange, b.selectedRange) && a.document.isEqualTo(b.document)\n\nexport default class EditorController extends Controller {\n static actions = {\n undo: {\n test() {\n return this.editor.canUndo()\n },\n perform() {\n return this.editor.undo()\n },\n },\n redo: {\n test() {\n return this.editor.canRedo()\n },\n perform() {\n return this.editor.redo()\n },\n },\n link: {\n test() {\n return this.editor.canActivateAttribute(\"href\")\n },\n },\n increaseNestingLevel: {\n test() {\n return this.editor.canIncreaseNestingLevel()\n },\n perform() {\n return this.editor.increaseNestingLevel() && this.render()\n },\n },\n decreaseNestingLevel: {\n test() {\n return this.editor.canDecreaseNestingLevel()\n },\n perform() {\n return this.editor.decreaseNestingLevel() && this.render()\n },\n },\n attachFiles: {\n test() {\n return true\n },\n perform() {\n return config.input.pickFiles(this.editor.insertFiles)\n },\n },\n }\n\n constructor({ editorElement, document, html }) {\n super(...arguments)\n this.editorElement = editorElement\n this.selectionManager = new SelectionManager(this.editorElement)\n this.selectionManager.delegate = this\n\n this.composition = new Composition()\n this.composition.delegate = this\n\n this.attachmentManager = new AttachmentManager(this.composition.getAttachments())\n this.attachmentManager.delegate = this\n\n this.inputController =\n config.input.getLevel() === 2\n ? new Level2InputController(this.editorElement)\n : new Level0InputController(this.editorElement)\n\n this.inputController.delegate = this\n this.inputController.responder = this.composition\n\n this.compositionController = new CompositionController(this.editorElement, this.composition)\n this.compositionController.delegate = this\n\n this.toolbarController = new ToolbarController(this.editorElement.toolbarElement)\n this.toolbarController.delegate = this\n\n this.editor = new Editor(this.composition, this.selectionManager, this.editorElement)\n if (document) {\n this.editor.loadDocument(document)\n } else {\n this.editor.loadHTML(html)\n }\n }\n\n registerSelectionManager() {\n return selectionChangeObserver.registerSelectionManager(this.selectionManager)\n }\n\n unregisterSelectionManager() {\n return selectionChangeObserver.unregisterSelectionManager(this.selectionManager)\n }\n\n render() {\n return this.compositionController.render()\n }\n\n reparse() {\n return this.composition.replaceHTML(this.editorElement.innerHTML)\n }\n\n // Composition delegate\n\n compositionDidChangeDocument(document) {\n this.notifyEditorElement(\"document-change\")\n if (!this.handlingInput) {\n return this.render()\n }\n }\n\n compositionDidChangeCurrentAttributes(currentAttributes) {\n this.currentAttributes = currentAttributes\n this.toolbarController.updateAttributes(this.currentAttributes)\n this.updateCurrentActions()\n return this.notifyEditorElement(\"attributes-change\", { attributes: this.currentAttributes })\n }\n\n compositionDidPerformInsertionAtRange(range) {\n if (this.pasting) {\n this.pastedRange = range\n }\n }\n\n compositionShouldAcceptFile(file) {\n return this.notifyEditorElement(\"file-accept\", { file })\n }\n\n compositionDidAddAttachment(attachment) {\n const managedAttachment = this.attachmentManager.manageAttachment(attachment)\n return this.notifyEditorElement(\"attachment-add\", { attachment: managedAttachment })\n }\n\n compositionDidEditAttachment(attachment) {\n this.compositionController.rerenderViewForObject(attachment)\n const managedAttachment = this.attachmentManager.manageAttachment(attachment)\n this.notifyEditorElement(\"attachment-edit\", { attachment: managedAttachment })\n return this.notifyEditorElement(\"change\")\n }\n\n compositionDidChangeAttachmentPreviewURL(attachment) {\n this.compositionController.invalidateViewForObject(attachment)\n return this.notifyEditorElement(\"change\")\n }\n\n compositionDidRemoveAttachment(attachment) {\n const managedAttachment = this.attachmentManager.unmanageAttachment(attachment)\n return this.notifyEditorElement(\"attachment-remove\", { attachment: managedAttachment })\n }\n\n compositionDidStartEditingAttachment(attachment, options) {\n this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(attachment)\n this.compositionController.installAttachmentEditorForAttachment(attachment, options)\n return this.selectionManager.setLocationRange(this.attachmentLocationRange)\n }\n\n compositionDidStopEditingAttachment(attachment) {\n this.compositionController.uninstallAttachmentEditor()\n this.attachmentLocationRange = null\n }\n\n compositionDidRequestChangingSelectionToLocationRange(locationRange) {\n if (this.loadingSnapshot && !this.isFocused()) return\n this.requestedLocationRange = locationRange\n this.compositionRevisionWhenLocationRangeRequested = this.composition.revision\n if (!this.handlingInput) {\n return this.render()\n }\n }\n\n compositionWillLoadSnapshot() {\n this.loadingSnapshot = true\n }\n\n compositionDidLoadSnapshot() {\n this.compositionController.refreshViewCache()\n this.render()\n this.loadingSnapshot = false\n }\n\n getSelectionManager() {\n return this.selectionManager\n }\n\n // Attachment manager delegate\n\n attachmentManagerDidRequestRemovalOfAttachment(attachment) {\n return this.removeAttachment(attachment)\n }\n\n // Document controller delegate\n\n compositionControllerWillSyncDocumentView() {\n this.inputController.editorWillSyncDocumentView()\n this.selectionManager.lock()\n return this.selectionManager.clearSelection()\n }\n\n compositionControllerDidSyncDocumentView() {\n this.inputController.editorDidSyncDocumentView()\n this.selectionManager.unlock()\n this.updateCurrentActions()\n return this.notifyEditorElement(\"sync\")\n }\n\n compositionControllerDidRender() {\n if (this.requestedLocationRange) {\n if (this.compositionRevisionWhenLocationRangeRequested === this.composition.revision) {\n this.selectionManager.setLocationRange(this.requestedLocationRange)\n }\n this.requestedLocationRange = null\n this.compositionRevisionWhenLocationRangeRequested = null\n }\n\n if (this.renderedCompositionRevision !== this.composition.revision) {\n this.runEditorFilters()\n this.composition.updateCurrentAttributes()\n this.notifyEditorElement(\"render\")\n }\n\n this.renderedCompositionRevision = this.composition.revision\n }\n\n compositionControllerDidFocus() {\n if (this.isFocusedInvisibly()) {\n this.setLocationRange({ index: 0, offset: 0 })\n }\n this.toolbarController.hideDialog()\n return this.notifyEditorElement(\"focus\")\n }\n\n compositionControllerDidBlur() {\n return this.notifyEditorElement(\"blur\")\n }\n\n compositionControllerDidSelectAttachment(attachment, options) {\n this.toolbarController.hideDialog()\n return this.composition.editAttachment(attachment, options)\n }\n\n compositionControllerDidRequestDeselectingAttachment(attachment) {\n const locationRange = this.attachmentLocationRange || this.composition.document.getLocationRangeOfAttachment(attachment)\n return this.selectionManager.setLocationRange(locationRange[1])\n }\n\n compositionControllerWillUpdateAttachment(attachment) {\n return this.editor.recordUndoEntry(\"Edit Attachment\", { context: attachment.id, consolidatable: true })\n }\n\n compositionControllerDidRequestRemovalOfAttachment(attachment) {\n return this.removeAttachment(attachment)\n }\n\n // Input controller delegate\n\n inputControllerWillHandleInput() {\n this.handlingInput = true\n this.requestedRender = false\n }\n\n inputControllerDidRequestRender() {\n this.requestedRender = true\n }\n\n inputControllerDidHandleInput() {\n this.handlingInput = false\n if (this.requestedRender) {\n this.requestedRender = false\n return this.render()\n }\n }\n\n inputControllerDidAllowUnhandledInput() {\n return this.notifyEditorElement(\"change\")\n }\n\n inputControllerDidRequestReparse() {\n return this.reparse()\n }\n\n inputControllerWillPerformTyping() {\n return this.recordTypingUndoEntry()\n }\n\n inputControllerWillPerformFormatting(attributeName) {\n return this.recordFormattingUndoEntry(attributeName)\n }\n\n inputControllerWillCutText() {\n return this.editor.recordUndoEntry(\"Cut\")\n }\n\n inputControllerWillPaste(paste) {\n this.editor.recordUndoEntry(\"Paste\")\n this.pasting = true\n return this.notifyEditorElement(\"before-paste\", { paste })\n }\n\n inputControllerDidPaste(paste) {\n paste.range = this.pastedRange\n this.pastedRange = null\n this.pasting = null\n return this.notifyEditorElement(\"paste\", { paste })\n }\n\n inputControllerWillMoveText() {\n return this.editor.recordUndoEntry(\"Move\")\n }\n\n inputControllerWillAttachFiles() {\n return this.editor.recordUndoEntry(\"Drop Files\")\n }\n\n inputControllerWillPerformUndo() {\n return this.editor.undo()\n }\n\n inputControllerWillPerformRedo() {\n return this.editor.redo()\n }\n\n inputControllerDidReceiveKeyboardCommand(keys) {\n return this.toolbarController.applyKeyboardCommand(keys)\n }\n\n inputControllerDidStartDrag() {\n this.locationRangeBeforeDrag = this.selectionManager.getLocationRange()\n }\n\n inputControllerDidReceiveDragOverPoint(point) {\n return this.selectionManager.setLocationRangeFromPointRange(point)\n }\n\n inputControllerDidCancelDrag() {\n this.selectionManager.setLocationRange(this.locationRangeBeforeDrag)\n this.locationRangeBeforeDrag = null\n }\n\n // Selection manager delegate\n\n locationRangeDidChange(locationRange) {\n this.composition.updateCurrentAttributes()\n this.updateCurrentActions()\n if (this.attachmentLocationRange && !rangesAreEqual(this.attachmentLocationRange, locationRange)) {\n this.composition.stopEditingAttachment()\n }\n return this.notifyEditorElement(\"selection-change\")\n }\n\n // Toolbar controller delegate\n\n toolbarDidClickButton() {\n if (!this.getLocationRange()) {\n return this.setLocationRange({ index: 0, offset: 0 })\n }\n }\n\n toolbarDidInvokeAction(actionName, invokingElement) {\n return this.invokeAction(actionName, invokingElement)\n }\n\n toolbarDidToggleAttribute(attributeName) {\n this.recordFormattingUndoEntry(attributeName)\n this.composition.toggleCurrentAttribute(attributeName)\n this.render()\n if (!this.selectionFrozen) {\n return this.editorElement.focus()\n }\n }\n\n toolbarDidUpdateAttribute(attributeName, value) {\n this.recordFormattingUndoEntry(attributeName)\n this.composition.setCurrentAttribute(attributeName, value)\n this.render()\n if (!this.selectionFrozen) {\n return this.editorElement.focus()\n }\n }\n\n toolbarDidRemoveAttribute(attributeName) {\n this.recordFormattingUndoEntry(attributeName)\n this.composition.removeCurrentAttribute(attributeName)\n this.render()\n if (!this.selectionFrozen) {\n return this.editorElement.focus()\n }\n }\n\n toolbarWillShowDialog(dialogElement) {\n this.composition.expandSelectionForEditing()\n return this.freezeSelection()\n }\n\n toolbarDidShowDialog(dialogName) {\n return this.notifyEditorElement(\"toolbar-dialog-show\", { dialogName })\n }\n\n toolbarDidHideDialog(dialogName) {\n this.thawSelection()\n this.editorElement.focus()\n return this.notifyEditorElement(\"toolbar-dialog-hide\", { dialogName })\n }\n\n // Selection\n\n freezeSelection() {\n if (!this.selectionFrozen) {\n this.selectionManager.lock()\n this.composition.freezeSelection()\n this.selectionFrozen = true\n return this.render()\n }\n }\n\n thawSelection() {\n if (this.selectionFrozen) {\n this.composition.thawSelection()\n this.selectionManager.unlock()\n this.selectionFrozen = false\n return this.render()\n }\n }\n\n canInvokeAction(actionName) {\n if (this.actionIsExternal(actionName)) {\n return true\n } else {\n return !!this.actions[actionName]?.test?.call(this)\n }\n }\n\n invokeAction(actionName, invokingElement) {\n if (this.actionIsExternal(actionName)) {\n return this.notifyEditorElement(\"action-invoke\", { actionName, invokingElement })\n } else {\n return this.actions[actionName]?.perform?.call(this)\n }\n }\n\n actionIsExternal(actionName) {\n return /^x-./.test(actionName)\n }\n\n getCurrentActions() {\n const result = {}\n for (const actionName in this.actions) {\n result[actionName] = this.canInvokeAction(actionName)\n }\n return result\n }\n\n updateCurrentActions() {\n const currentActions = this.getCurrentActions()\n if (!objectsAreEqual(currentActions, this.currentActions)) {\n this.currentActions = currentActions\n this.toolbarController.updateActions(this.currentActions)\n return this.notifyEditorElement(\"actions-change\", { actions: this.currentActions })\n }\n }\n\n // Editor filters\n\n runEditorFilters() {\n let snapshot = this.composition.getSnapshot()\n\n Array.from(this.editor.filters).forEach((filter) => {\n const { document, selectedRange } = snapshot\n snapshot = filter.call(this.editor, snapshot) || {}\n if (!snapshot.document) {\n snapshot.document = document\n }\n if (!snapshot.selectedRange) {\n snapshot.selectedRange = selectedRange\n }\n })\n\n if (!snapshotsAreEqual(snapshot, this.composition.getSnapshot())) {\n return this.composition.loadSnapshot(snapshot)\n }\n }\n\n // Private\n\n updateInputElement() {\n const element = this.compositionController.getSerializableElement()\n const value = serializeToContentType(element, \"text/html\")\n return this.editorElement.setFormValue(value)\n }\n\n notifyEditorElement(message, data) {\n switch (message) {\n case \"document-change\":\n this.documentChangedSinceLastRender = true\n break\n case \"render\":\n if (this.documentChangedSinceLastRender) {\n this.documentChangedSinceLastRender = false\n this.notifyEditorElement(\"change\")\n }\n break\n case \"change\":\n case \"attachment-add\":\n case \"attachment-edit\":\n case \"attachment-remove\":\n this.updateInputElement()\n break\n }\n\n return this.editorElement.notify(message, data)\n }\n\n removeAttachment(attachment) {\n this.editor.recordUndoEntry(\"Delete Attachment\")\n this.composition.removeAttachment(attachment)\n return this.render()\n }\n\n recordFormattingUndoEntry(attributeName) {\n const blockConfig = getBlockConfig(attributeName)\n const locationRange = this.selectionManager.getLocationRange()\n if (blockConfig || !rangeIsCollapsed(locationRange)) {\n return this.editor.recordUndoEntry(\"Formatting\", { context: this.getUndoContext(), consolidatable: true })\n }\n }\n\n recordTypingUndoEntry() {\n return this.editor.recordUndoEntry(\"Typing\", {\n context: this.getUndoContext(this.currentAttributes),\n consolidatable: true,\n })\n }\n\n getUndoContext(...context) {\n return [ this.getLocationContext(), this.getTimeContext(), ...Array.from(context) ]\n }\n\n getLocationContext() {\n const locationRange = this.selectionManager.getLocationRange()\n if (rangeIsCollapsed(locationRange)) {\n return locationRange[0].index\n } else {\n return locationRange\n }\n }\n\n getTimeContext() {\n if (config.undo.interval > 0) {\n return Math.floor(new Date().getTime() / config.undo.interval)\n } else {\n return 0\n }\n }\n\n isFocused() {\n return this.editorElement === this.editorElement.ownerDocument?.activeElement\n }\n\n // Detect \"Cursor disappears sporadically\" Firefox bug.\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=226301\n isFocusedInvisibly() {\n return this.isFocused() && !this.getLocationRange()\n }\n\n get actions() {\n return this.constructor.actions\n }\n}\n\nEditorController.proxyMethod(\"getSelectionManager().setLocationRange\")\nEditorController.proxyMethod(\"getSelectionManager().getLocationRange\")\n", "import * as config from \"trix/config\"\n\nimport { installDefaultCSSForTagName } from \"trix/core/helpers\"\n\ninstallDefaultCSSForTagName(\"trix-toolbar\", `\\\n%t {\n display: block;\n}\n\n%t {\n white-space: nowrap;\n}\n\n%t [data-trix-dialog] {\n display: none;\n}\n\n%t [data-trix-dialog][data-trix-active] {\n display: block;\n}\n\n%t [data-trix-dialog] [data-trix-validate]:invalid {\n background-color: #ffdddd;\n}`)\n\nexport default class TrixToolbarElement extends HTMLElement {\n\n // Element lifecycle\n\n connectedCallback() {\n if (this.innerHTML === \"\") {\n this.innerHTML = config.toolbar.getDefaultHTML()\n }\n }\n}\n", "import * as config from \"trix/config\"\n\nimport {\n findClosestElementFromNode,\n handleEvent,\n handleEventOnce,\n installDefaultCSSForTagName,\n makeElement,\n triggerEvent,\n} from \"trix/core/helpers\"\n\nimport { attachmentSelector } from \"trix/config/attachments\"\nimport EditorController from \"trix/controllers/editor_controller\"\nimport \"trix/elements/trix_toolbar_element\"\n\nlet id = 0\n\n// Contenteditable support helpers\n\nconst autofocus = function(element) {\n if (!document.querySelector(\":focus\")) {\n if (element.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === element) {\n return element.focus()\n }\n }\n}\n\nconst makeEditable = function(element) {\n if (element.hasAttribute(\"contenteditable\")) {\n return\n }\n element.setAttribute(\"contenteditable\", \"\")\n return handleEventOnce(\"focus\", {\n onElement: element,\n withCallback() {\n return configureContentEditable(element)\n },\n })\n}\n\nconst configureContentEditable = function(element) {\n disableObjectResizing(element)\n return setDefaultParagraphSeparator(element)\n}\n\nconst disableObjectResizing = function(element) {\n if (document.queryCommandSupported?.(\"enableObjectResizing\")) {\n document.execCommand(\"enableObjectResizing\", false, false)\n return handleEvent(\"mscontrolselect\", { onElement: element, preventDefault: true })\n }\n}\n\nconst setDefaultParagraphSeparator = function(element) {\n if (document.queryCommandSupported?.(\"DefaultParagraphSeparator\")) {\n const { tagName } = config.blockAttributes.default\n if ([ \"div\", \"p\" ].includes(tagName)) {\n return document.execCommand(\"DefaultParagraphSeparator\", false, tagName)\n }\n }\n}\n\n// Accessibility helpers\n\nconst addAccessibilityRole = function(element) {\n if (element.hasAttribute(\"role\")) {\n return\n }\n return element.setAttribute(\"role\", \"textbox\")\n}\n\nconst ensureAriaLabel = function(element) {\n if (element.hasAttribute(\"aria-label\") || element.hasAttribute(\"aria-labelledby\")) {\n return\n }\n\n const update = function() {\n const texts = Array.from(element.labels).map((label) => {\n if (!label.contains(element)) return label.textContent\n }).filter(text => text)\n\n const text = texts.join(\" \")\n if (text) {\n return element.setAttribute(\"aria-label\", text)\n } else {\n return element.removeAttribute(\"aria-label\")\n }\n }\n update()\n return handleEvent(\"focus\", { onElement: element, withCallback: update })\n}\n\n// Style\n\nconst cursorTargetStyles = (function() {\n if (config.browser.forcesObjectResizing) {\n return {\n display: \"inline\",\n width: \"auto\",\n }\n } else {\n return {\n display: \"inline-block\",\n width: \"1px\",\n }\n }\n})()\n\ninstallDefaultCSSForTagName(\"trix-editor\", `\\\n%t {\n display: block;\n}\n\n%t:empty::before {\n content: attr(placeholder);\n color: graytext;\n cursor: text;\n pointer-events: none;\n white-space: pre-line;\n}\n\n%t a[contenteditable=false] {\n cursor: text;\n}\n\n%t img {\n max-width: 100%;\n height: auto;\n}\n\n%t ${attachmentSelector} figcaption textarea {\n resize: none;\n}\n\n%t ${attachmentSelector} figcaption textarea.trix-autoresize-clone {\n position: absolute;\n left: -9999px;\n max-height: 0px;\n}\n\n%t ${attachmentSelector} figcaption[data-trix-placeholder]:empty::before {\n content: attr(data-trix-placeholder);\n color: graytext;\n}\n\n%t [data-trix-cursor-target] {\n display: ${cursorTargetStyles.display} !important;\n width: ${cursorTargetStyles.width} !important;\n padding: 0 !important;\n margin: 0 !important;\n border: none !important;\n}\n\n%t [data-trix-cursor-target=left] {\n vertical-align: top !important;\n margin-left: -1px !important;\n}\n\n%t [data-trix-cursor-target=right] {\n vertical-align: bottom !important;\n margin-right: -1px !important;\n}`)\n\nclass ElementInternalsDelegate {\n #internals\n\n constructor(element) {\n this.element = element\n this.#internals = element.attachInternals()\n }\n\n connectedCallback() {\n this.#validate()\n }\n\n disconnectedCallback() {\n }\n\n get labels() {\n return this.#internals.labels\n }\n\n get disabled() {\n return this.element.inputElement?.disabled\n }\n\n set disabled(value) {\n this.element.toggleAttribute(\"disabled\", value)\n }\n\n get required() {\n return this.element.hasAttribute(\"required\")\n }\n\n set required(value) {\n this.element.toggleAttribute(\"required\", value)\n this.#validate()\n }\n\n get validity() {\n return this.#internals.validity\n }\n\n get validationMessage() {\n return this.#internals.validationMessage\n }\n\n get willValidate() {\n return this.#internals.willValidate\n }\n\n setFormValue(value) {\n this.#validate()\n }\n\n checkValidity() {\n return this.#internals.checkValidity()\n }\n\n reportValidity() {\n return this.#internals.reportValidity()\n }\n\n setCustomValidity(validationMessage) {\n this.#validate(validationMessage)\n }\n\n #validate(customValidationMessage = \"\") {\n const { required, value } = this.element\n const valueMissing = required && !value\n const customError = !!customValidationMessage\n const input = makeElement(\"input\", { required })\n const validationMessage = customValidationMessage || input.validationMessage\n\n this.#internals.setValidity({ valueMissing, customError }, validationMessage)\n }\n}\n\nclass LegacyDelegate {\n #focusHandler\n\n constructor(element) {\n this.element = element\n }\n\n connectedCallback() {\n this.#focusHandler = ensureAriaLabel(this.element)\n window.addEventListener(\"reset\", this.#resetBubbled, false)\n window.addEventListener(\"click\", this.#clickBubbled, false)\n }\n\n disconnectedCallback() {\n this.#focusHandler?.destroy()\n window.removeEventListener(\"reset\", this.#resetBubbled, false)\n window.removeEventListener(\"click\", this.#clickBubbled, false)\n }\n\n get labels() {\n const labels = []\n if (this.element.id && this.element.ownerDocument) {\n labels.push(...Array.from(this.element.ownerDocument.querySelectorAll(`label[for='${this.element.id}']`) || []))\n }\n\n const label = findClosestElementFromNode(this.element, { matchingSelector: \"label\" })\n if (label) {\n if ([ this.element, null ].includes(label.control)) {\n labels.push(label)\n }\n }\n\n return labels\n }\n\n get disabled() {\n console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\")\n\n return false\n }\n\n set disabled(value) {\n console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\")\n }\n\n get required() {\n console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\")\n\n return false\n }\n\n set required(value) {\n console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\")\n }\n\n get validity() {\n console.warn(\"This browser does not support the validity property for trix-editor elements.\")\n return null\n }\n\n get validationMessage() {\n console.warn(\"This browser does not support the validationMessage property for trix-editor elements.\")\n\n return \"\"\n }\n\n get willValidate() {\n console.warn(\"This browser does not support the willValidate property for trix-editor elements.\")\n\n return false\n }\n\n setFormValue(value) {\n }\n\n checkValidity() {\n console.warn(\"This browser does not support checkValidity() for trix-editor elements.\")\n\n return true\n }\n\n reportValidity() {\n console.warn(\"This browser does not support reportValidity() for trix-editor elements.\")\n\n return true\n }\n\n setCustomValidity(validationMessage) {\n console.warn(\"This browser does not support setCustomValidity(validationMessage) for trix-editor elements.\")\n }\n\n #resetBubbled = (event) => {\n if (event.defaultPrevented) return\n if (event.target !== this.element.form) return\n this.element.reset()\n }\n\n #clickBubbled = (event) => {\n if (event.defaultPrevented) return\n if (this.element.contains(event.target)) return\n\n const label = findClosestElementFromNode(event.target, { matchingSelector: \"label\" })\n if (!label) return\n\n if (!Array.from(this.labels).includes(label)) return\n\n this.element.focus()\n }\n}\n\nexport default class TrixEditorElement extends HTMLElement {\n static formAssociated = \"ElementInternals\" in window\n\n #delegate\n\n constructor() {\n super()\n this.#delegate = this.constructor.formAssociated ?\n new ElementInternalsDelegate(this) :\n new LegacyDelegate(this)\n }\n\n // Properties\n\n get trixId() {\n if (this.hasAttribute(\"trix-id\")) {\n return this.getAttribute(\"trix-id\")\n } else {\n this.setAttribute(\"trix-id\", ++id)\n return this.trixId\n }\n }\n\n get labels() {\n return this.#delegate.labels\n }\n\n get disabled() {\n return this.#delegate.disabled\n }\n\n set disabled(value) {\n this.#delegate.disabled = value\n }\n\n get required() {\n return this.#delegate.required\n }\n\n set required(value) {\n this.#delegate.required = value\n }\n\n get validity() {\n return this.#delegate.validity\n }\n\n get validationMessage() {\n return this.#delegate.validationMessage\n }\n\n get willValidate() {\n return this.#delegate.willValidate\n }\n\n get type() {\n return this.localName\n }\n\n get toolbarElement() {\n if (this.hasAttribute(\"toolbar\")) {\n return this.ownerDocument?.getElementById(this.getAttribute(\"toolbar\"))\n } else if (this.parentNode) {\n const toolbarId = `trix-toolbar-${this.trixId}`\n this.setAttribute(\"toolbar\", toolbarId)\n const element = makeElement(\"trix-toolbar\", { id: toolbarId })\n this.parentNode.insertBefore(element, this)\n return element\n } else {\n return undefined\n }\n }\n\n get form() {\n return this.inputElement?.form\n }\n\n get inputElement() {\n if (this.hasAttribute(\"input\")) {\n return this.ownerDocument?.getElementById(this.getAttribute(\"input\"))\n } else if (this.parentNode) {\n const inputId = `trix-input-${this.trixId}`\n this.setAttribute(\"input\", inputId)\n const element = makeElement(\"input\", { type: \"hidden\", id: inputId })\n this.parentNode.insertBefore(element, this.nextElementSibling)\n return element\n } else {\n return undefined\n }\n }\n\n get editor() {\n return this.editorController?.editor\n }\n\n get name() {\n return this.inputElement?.name\n }\n\n get value() {\n return this.inputElement?.value\n }\n\n set value(defaultValue) {\n this.defaultValue = defaultValue\n this.editor?.loadHTML(this.defaultValue)\n }\n\n // Controller delegate methods\n\n notify(message, data) {\n if (this.editorController) {\n return triggerEvent(`trix-${message}`, { onElement: this, attributes: data })\n }\n }\n\n setFormValue(value) {\n if (this.inputElement) {\n this.inputElement.value = value\n this.#delegate.setFormValue(value)\n }\n }\n\n // Element lifecycle\n\n connectedCallback() {\n if (!this.hasAttribute(\"data-trix-internal\")) {\n makeEditable(this)\n addAccessibilityRole(this)\n\n if (!this.editorController) {\n triggerEvent(\"trix-before-initialize\", { onElement: this })\n this.editorController = new EditorController({\n editorElement: this,\n html: this.defaultValue = this.value,\n })\n requestAnimationFrame(() => triggerEvent(\"trix-initialize\", { onElement: this }))\n }\n this.editorController.registerSelectionManager()\n this.#delegate.connectedCallback()\n autofocus(this)\n }\n }\n\n disconnectedCallback() {\n this.editorController?.unregisterSelectionManager()\n this.#delegate.disconnectedCallback()\n }\n\n // Form support\n\n checkValidity() {\n return this.#delegate.checkValidity()\n }\n\n reportValidity() {\n return this.#delegate.reportValidity()\n }\n\n setCustomValidity(validationMessage) {\n this.#delegate.setCustomValidity(validationMessage)\n }\n\n formDisabledCallback(disabled) {\n if (this.inputElement) {\n this.inputElement.disabled = disabled\n }\n this.toggleAttribute(\"contenteditable\", !disabled)\n }\n\n formResetCallback() {\n this.reset()\n }\n\n reset() {\n this.value = this.defaultValue\n }\n}\n", "import { version } from \"../../package.json\"\n\nimport * as config from \"trix/config\"\nimport * as core from \"trix/core\"\nimport * as models from \"trix/models\"\nimport * as views from \"trix/views\"\nimport * as controllers from \"trix/controllers\"\nimport * as observers from \"trix/observers\"\nimport * as operations from \"trix/operations\"\nimport * as elements from \"trix/elements\"\nimport * as filters from \"trix/filters\"\n\nconst Trix = {\n VERSION: version,\n config,\n core,\n models,\n views,\n controllers,\n observers,\n operations,\n elements,\n filters\n}\n\n// Expose models under the Trix constant for compatibility with v1\nObject.assign(Trix, models)\n\nfunction start() {\n if (!customElements.get(\"trix-toolbar\")) {\n customElements.define(\"trix-toolbar\", elements.TrixToolbarElement)\n }\n\n if (!customElements.get(\"trix-editor\")) {\n customElements.define(\"trix-editor\", elements.TrixEditorElement)\n }\n}\n\nwindow.Trix = Trix\nsetTimeout(start, 0)\n\nexport default Trix\n", "var sparkMd5 = {\n exports: {}\n};\n\n(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n}\n\nfunction getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nfunction findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n}\n\nfunction toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n}\n\nclass BlobRecord {\n constructor(file, checksum, url, customHeaders = {}) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n Object.keys(customHeaders).forEach((headerKey => {\n this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n }));\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n}\n\nclass BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n constructor(file, url, delegate, customHeaders = {}) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n this.customHeaders = customHeaders;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n}\n\nfunction notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n}\n\nclass DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n}\n\nfunction didClick(event) {\n const button = event.target.closest(\"button, input\");\n if (button && button.type === \"submit\" && button.form) {\n submitButtonsByForm.set(button.form, button);\n }\n}\n\nfunction didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n}\n\nfunction handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n}\n\nfunction submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n input.disabled = true;\n}\n\nfunction enable(input) {\n input.disabled = false;\n}\n\nfunction autostart() {\n if (window.ActiveStorage) {\n start();\n }\n}\n\nsetTimeout(autostart, 1);\n\nexport { DirectUpload, DirectUploadController, DirectUploadsController, start };\n", "var sparkMd5 = {\n exports: {}\n};\n\n(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n}\n\nfunction getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nfunction findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n}\n\nfunction toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n}\n\nclass BlobRecord {\n constructor(file, checksum, url, customHeaders = {}) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n Object.keys(customHeaders).forEach((headerKey => {\n this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n }));\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n}\n\nclass BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n constructor(file, url, delegate, customHeaders = {}) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n this.customHeaders = customHeaders;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n}\n\nfunction notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n}\n\nclass DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n}\n\nfunction didClick(event) {\n const button = event.target.closest(\"button, input\");\n if (button && button.type === \"submit\" && button.form) {\n submitButtonsByForm.set(button.form, button);\n }\n}\n\nfunction didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n}\n\nfunction handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n}\n\nfunction submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n input.disabled = true;\n}\n\nfunction enable(input) {\n input.disabled = false;\n}\n\nfunction autostart() {\n if (window.ActiveStorage) {\n start();\n }\n}\n\nsetTimeout(autostart, 1);\n\nclass AttachmentUpload {\n constructor(attachment, element) {\n this.attachment = attachment;\n this.element = element;\n this.directUpload = new DirectUpload(attachment.file, this.directUploadUrl, this);\n }\n start() {\n this.directUpload.create(this.directUploadDidComplete.bind(this));\n }\n directUploadWillStoreFileWithXHR(xhr) {\n xhr.upload.addEventListener(\"progress\", (event => {\n const progress = event.loaded / event.total * 100;\n this.attachment.setUploadProgress(progress);\n }));\n }\n directUploadDidComplete(error, attributes) {\n if (error) {\n throw new Error(`Direct upload failed: ${error}`);\n }\n this.attachment.setAttributes({\n sgid: attributes.attachable_sgid,\n url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n });\n }\n createBlobUrl(signedId, filename) {\n return this.blobUrlTemplate.replace(\":signed_id\", signedId).replace(\":filename\", encodeURIComponent(filename));\n }\n get directUploadUrl() {\n return this.element.dataset.directUploadUrl;\n }\n get blobUrlTemplate() {\n return this.element.dataset.blobUrlTemplate;\n }\n}\n\naddEventListener(\"trix-attachment-add\", (event => {\n const {attachment: attachment, target: target} = event;\n if (attachment.file) {\n const upload = new AttachmentUpload(attachment, target);\n upload.start();\n }\n}));\n", "'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n", "// eslint-disable-next-line strict\nexport default null;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n", "'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n", "'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n", "'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n", "import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n", "import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n", "'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n", "'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n", "/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n", "import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n", "import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n", "import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n", "'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && isRelativeUrl || allowAbsoluteUrls == false) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n", "import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n", "import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n", "\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n", "export const VERSION = \"1.8.2\";", "'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n", "'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n", "const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n", "import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n", "import axios from \"axios\";\n\nconst csrfMetaTag = document.head.querySelector('[name=\"csrf-token\"]');\nconst csrfToken = (csrfMetaTag && csrfMetaTag.getAttribute(\"content\")) || \"\";\n\nexport default axios.create({\n headers: {\n \"X-CSRF-TOKEN\": csrfToken,\n },\n});\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Controller, ControllerConstructor } from \"@hotwired/stimulus\";\n\ninterface ControllerConnectionEvent\n extends CustomEvent<{\n identifier: string;\n }> {\n target: Element;\n}\ninterface BaseControllerConstructor {\n identifier: string;\n new (...args: any[]): BaseController;\n}\n\ntype DisconnectorFn = () => void;\ntype ConnectorFn = () => DisconnectorFn | void;\ntype ChildControllerConnectorFn = (controller: BaseController) => void;\n\n// Intentionally an object so that === will compare against this exact reference.\n// We could use a Symbol here, but IE11 will barf and I don't think it merits a full on polyfill.\nconst initializeReceipt = {};\n\nconst CONNECTION_EVENT = \"cnf:controller:connected\";\nconst DISCONNECTION_EVENT = \"cnf:controller:disconnected\";\n\nexport default abstract class BaseController extends Controller {\n private connectors: ConnectorFn[] = [];\n private disconnectors: DisconnectorFn[] = [];\n private connectionDisconnectors: DisconnectorFn[] = [];\n\n private childControllerConnectors: ChildControllerConnectorFn[] = [];\n private childControllerDisconnectors: ChildControllerConnectorFn[] = [];\n\n private childControllers: Set = new Set();\n\n public static identifier: string;\n\n // Set the identifier as a static for the controller\n public static setIdentifier(id: string) {\n this.identifier = id;\n }\n\n /**\n * These lifecycle methods are provided by Stimulus.\n * We won't use these directly, instead we will call helpers which make it easier and safer to hook in to the controller lifecyle.\n */\n public initialize() {\n const receipt = this.onInitialize();\n if (receipt !== initializeReceipt) {\n // If we get here, it means that a subclass did not call `super.onInitialize()`.\n // This guard therefore ensures that every subclass should call `super.onInitialize()`.\n throw new Error(\n `onInitialize was implemented in ${this.identifier} without a call to super.onInitialize.`,\n );\n }\n }\n\n public connect() {\n // Run all connectors. If any return disconnectors, cache them for later use.\n this.connectionDisconnectors = this.connectors.reduce(\n this.runConnector,\n [],\n );\n }\n\n public disconnect() {\n // Run any permanent disconnectors.\n this.disconnectors.forEach(this.runDisconnector);\n\n // Run any disconnectors that were returned from connectors,\n // and clear the cache ready for the next run.\n this.connectionDisconnectors.forEach(this.runDisconnector);\n this.connectionDisconnectors = [];\n\n // Clear out any child controllers.\n this.childControllers.clear();\n }\n\n // Instead of using the lifecycle methods above, we'll use these.\n\n // This is called by `initialize`.\n public onInitialize() {\n this.onConnect(() => {\n // Listen for a connection event from an element further down in the DOM tree.\n this.element.addEventListener(\n CONNECTION_EVENT,\n this.handleControllerConnectedEvent,\n );\n this.element.addEventListener(\n DISCONNECTION_EVENT,\n this.handleControllerDisconnectedEvent,\n );\n\n // Remove the local cache when the child disconnects.\n const disconnector = () => {\n this.emitDisconnectionEvent();\n this.element.removeEventListener(\n CONNECTION_EVENT,\n this.handleControllerConnectedEvent,\n );\n this.element.removeEventListener(\n DISCONNECTION_EVENT,\n this.handleControllerDisconnectedEvent,\n );\n };\n this.emitConnectionEvent();\n return disconnector;\n });\n\n // This receipt is checked by `initialize`.\n // This ensures that any implementing method must call down the prototype chain,\n // so that initializers are not skipped.\n // https://github.com/Microsoft/TypeScript/issues/21388#issuecomment-360214959\n return initializeReceipt;\n }\n\n /**\n * Adds a 'connector' function, which is run when the controller is connected.\n * This connector function can optionally return a 'disconnector' function,\n * which will be run when the controller is disconnected.\n * This couples the connect/disconnect lifecycle together for a particular operation.\n * (Inspired in part by the `useEffect` React hook).\n *\n * @param fn a connector function, when run optionally returns a 'disconnector' function\n */\n public onConnect(fn: ConnectorFn) {\n this.connectors.push(fn);\n }\n\n /**\n * Adds a 'disconnector' function, which is run when the controller is disconnected.\n *\n * @param fn a disconnector function\n */\n public onDisconnect(fn: DisconnectorFn) {\n this.disconnectors.push(fn);\n }\n\n /**\n * Adds a 'connector' function, which is run when a child controller is connected.\n * A child controller is defined as a controller which connects to a child DOM element.\n *\n * @param fn a connector function\n * @deprecated use Stimulus outlet callbacks instead.\n */\n public onChildControllerConnect(fn: ChildControllerConnectorFn) {\n this.childControllerConnectors.push(fn);\n }\n\n /**\n * Adds a 'disconnector' function, which is run when a child controller is disconnected.\n * A child controller is defined as a controller which connects to a child DOM element.\n *\n * @param fn a disconnector function\n * @deprecated use Stimulus outlet callbacks instead.\n */\n public onChildControllerDisconnect(fn: ChildControllerConnectorFn) {\n this.childControllerDisconnectors.push(fn);\n }\n\n /**\n * Finds all child controllers that are instances of the passed class.\n * @param ControllerClass controller class to use to find\n * @deprecated use Stimulus outlets instead\n */\n public getSpecificChildControllers(\n // Need to allow the `| Function` so that abstract classes can be used as the `ControllerClass` argument\n // https://github.com/Microsoft/TypeScript/issues/5843\n // tslint:disable-next-line ban-types\n ControllerClass: ControllerConstructor | Function,\n ): T[] {\n return Array.from(this.childControllers).filter(\n (c) => c instanceof ControllerClass,\n ) as T[];\n }\n\n /**\n * Finds the first child controller that is an instance of the passed class.\n * @param ControllerClass controller class to use to find\n * @deprecated use Stimulus outlets instead\n */\n public getSpecificChildController(\n // Need to allow the `| Function` so that abstract classes can be used as the `ControllerClass` argument\n // https://github.com/Microsoft/TypeScript/issues/5843\n // tslint:disable-next-line ban-types\n ControllerClass: ControllerConstructor | Function,\n ): T | null {\n const result = Array.from(this.childControllers).find(\n (c) => c instanceof ControllerClass,\n );\n return result ? (result as T) : null;\n }\n\n public findParentElementByTagName(el: Element, tagName: string) {\n tagName = tagName.toLowerCase();\n\n while (el && el.parentElement) {\n el = el.parentElement;\n if (el.tagName && el.tagName.toLowerCase() === tagName) {\n return el;\n }\n }\n return null;\n }\n\n public get disabled() {\n return this.element.hasAttribute(\"disabled\");\n }\n\n public set disabled(disabled: boolean) {\n if (disabled) {\n this.element.setAttribute(\"disabled\", \"disabled\");\n } else {\n this.element.removeAttribute(\"disabled\");\n }\n }\n\n // ---\n\n protected findController(\n element: Element,\n identifier: string,\n ): BaseController | null {\n // It would be more performant to pass the whole controller through the custom event,\n // so then it doesn't need to be looked up here every time the event is received.\n // I'm not sure how well a class sends via a DOM event, though!\n const controller = this.application.getControllerForElementAndIdentifier(\n element,\n identifier,\n );\n return controller instanceof BaseController ? controller : null;\n }\n\n public getOptionalDataAttr(key: string): string | undefined {\n const value = this.data.get(key);\n return value === null ? undefined : value;\n }\n\n public getRequiredDataAttr(key: string): string {\n const value = this.data.get(key);\n if (!value) {\n throw new Error(\n `${key} data attribute must be set for controller ${this.identifier}`,\n );\n }\n return value;\n }\n\n public getRequiredDataAttrs(...attrs: string[]): string[] {\n const found: string[] = [];\n const missing: string[] = [];\n\n attrs.forEach((key) => {\n const value = this.data.get(key);\n if (!value) {\n missing.push(key);\n } else {\n found.push(value);\n }\n });\n\n if (missing.length === 1) {\n throw new Error(\n `${missing[0]} data attribute must be set for controller ${this.identifier}`,\n );\n } else if (missing.length > 1) {\n throw new Error(\n `${missing.join(\", \")} data attributes must be set for controller ${\n this.identifier\n }`,\n );\n }\n\n return found;\n }\n\n public getOptionalDataAttrAsJSON(key: string): T | undefined {\n const value = this.data.get(key);\n if (value === null) {\n return undefined;\n }\n try {\n return JSON.parse(value);\n } catch (e: any) {\n throw new Error(\n `${key} data attribute for controller ${this.identifier} was not valid JSON: ${e.message}`,\n );\n }\n }\n\n public getRequiredDataAttrAsJSON(key: string): T {\n const value = this.data.get(key);\n if (!value) {\n throw new Error(\n `${key} data attribute must be set for controller ${this.identifier}`,\n );\n }\n try {\n return JSON.parse(value);\n } catch (e: any) {\n throw new Error(\n `${key} data attribute for controller ${this.identifier} was not valid JSON: ${e.message}`,\n );\n }\n }\n\n protected toggleTargetElementTransitionClasses(\n target: Element,\n state: boolean,\n classesEntering: string[],\n classesEnteringFrom: string[],\n classesEnteringTo: string[],\n classesLeaving: string[],\n classesLeavingFrom: string[],\n classesLeavingTo: string[],\n hideOnLeaveMs: number | null = null,\n delayToSetToMs: number = 0,\n ) {\n this.toggleTargetElementClasses(\n target,\n state,\n classesLeaving,\n classesEntering,\n );\n this.toggleTargetElementClasses(\n target,\n state,\n classesLeavingFrom,\n classesEnteringFrom,\n );\n if (hideOnLeaveMs) {\n if (state) {\n // console.log(\"Remove hidden\");\n this.setTargetElementClasses(target, [\"hidden\"], []);\n } else {\n setTimeout(() => {\n // console.log(\"Add hidden\");\n this.setTargetElementClasses(target, [], [\"hidden\"]);\n }, hideOnLeaveMs);\n }\n }\n // console.log(\"anim start state\", state, target.classList);\n setTimeout(() => {\n // console.log(\"anim next frame\", state, target.classList);\n if (state) {\n this.setTargetElementClasses(\n target,\n classesLeavingFrom.concat(classesLeavingTo),\n [],\n );\n this.toggleTargetElementClasses(\n target,\n state,\n classesEnteringFrom,\n classesEnteringTo,\n );\n } else {\n this.setTargetElementClasses(\n target,\n classesEnteringFrom.concat(classesEnteringTo),\n [],\n );\n this.toggleTargetElementClasses(\n target,\n true,\n classesLeavingFrom,\n classesLeavingTo,\n );\n }\n // console.log(\"anim next frame after\", target.classList);\n }, delayToSetToMs);\n }\n\n protected toggleTargetElementClasses(\n target: Element,\n state: boolean,\n classesOff: string[],\n classesOn: string[],\n ) {\n if (state) {\n this.setTargetElementClasses(target, classesOff, classesOn);\n } else {\n this.setTargetElementClasses(target, classesOn, classesOff);\n }\n }\n\n protected setTargetElementClasses(\n target: Element,\n classesToRemove: string[],\n classesToAdd: string[],\n ) {\n classesToRemove.forEach((className) => target.classList.remove(className));\n classesToAdd.forEach((className) => target.classList.add(className));\n }\n\n protected toggleOnSearch(\n search: string,\n target: Element,\n searchTargets: HTMLElement[],\n classesOnMatch: string[],\n classesOnNoMatch: string[],\n ): boolean {\n const st = search.trim().toLowerCase();\n if (st.length < 2 || st == \"\") {\n this.setTargetElementClasses(target, classesOnNoMatch, classesOnMatch);\n return true;\n }\n const matches =\n searchTargets.filter((searchTarget) =>\n searchTarget.innerText.toLowerCase().includes(st),\n ).length > 0;\n this.toggleTargetElementClasses(\n target,\n matches,\n classesOnNoMatch,\n classesOnMatch,\n );\n return matches;\n }\n\n // Emit an event with a prefix generated by asking the given controller for\n // its event prefix.\n protected emitEvent(\n target: EventTarget,\n ControllerClass: BaseControllerConstructor,\n eventName: string,\n detail: any = undefined,\n bubbles = true,\n cancelable = false,\n ) {\n console.debug(\n `[${this.identifier}] Emitting event ${ControllerClass.identifier}:${eventName}`,\n );\n this.dispatch(eventName, {\n target: target as Element,\n detail,\n prefix: ControllerClass.identifier,\n bubbles,\n cancelable,\n });\n }\n\n // ---\n\n private emitConnectionEvent = () => {\n const evt = new CustomEvent(CONNECTION_EVENT, {\n bubbles: true,\n cancelable: false,\n detail: {\n identifier: this.identifier,\n },\n });\n this.element.dispatchEvent(evt);\n };\n\n private emitDisconnectionEvent = () => {\n const evt = new CustomEvent(DISCONNECTION_EVENT, {\n bubbles: true,\n cancelable: false,\n detail: {\n identifier: this.identifier,\n },\n });\n this.element.dispatchEvent(evt);\n };\n\n private handleControllerConnectedEvent = (evt: Event) => {\n const {\n target,\n detail: { identifier },\n } = evt as ControllerConnectionEvent;\n const controller = this.findController(target, identifier);\n if (controller && controller !== this) {\n console.debug(\n `> [${this.identifier}] Controller connected:`,\n controller.identifier,\n );\n this.childControllers.add(controller);\n this.childControllerConnectors.forEach((cb) => cb(controller));\n }\n };\n\n private handleControllerDisconnectedEvent = (evt: Event) => {\n const {\n target,\n detail: { identifier },\n } = evt as ControllerConnectionEvent;\n const controller = this.findController(target, identifier);\n if (controller && controller !== this) {\n console.debug(\n `> [${this.identifier}] Controller disconnected:`,\n controller.identifier,\n );\n this.childControllers.delete(controller);\n this.childControllerDisconnectors.forEach((cb) => cb(controller));\n }\n };\n\n private runConnector = (\n disconnectors: DisconnectorFn[],\n connector: ConnectorFn,\n ) => {\n const d = connector();\n if (typeof d === \"function\") {\n disconnectors.push(d);\n }\n return disconnectors;\n };\n\n private runDisconnector = (d: DisconnectorFn) => {\n d();\n };\n}\n", "const config: { [key: string]: any } = {};\n\nexport function setAppConfiguration(key: string, value: any) {\n config[key] = value;\n}\n\nexport function getAppConfiguration(key: string) {\n return config[key];\n}\n", "// This file is auto-generated by ./bin/rails update_javascript_i18n\n// Run that command whenever you add to the validation error strings\n// and need them on the FE.\n// This file includes default messages for validations that act as fallbacks\n// for form field validations when no custom messages are provided in the\n// stimulus data attributes.\n\nimport { getAppConfiguration } from \"lib/app_configuration\";\n\nconst i18n: { [key: string]: { [key: string]: string } } = {\n en: {\n invalid: \"is invalid\",\n blank: \"can't be blank\",\n generic_server_error: \"Sorry, an error occurred.\",\n form_invalid_preamble: \"Please review the following:\",\n },\n};\n\nexport function localeMessage(key: string) {\n const locale = getAppConfiguration(\"locale\");\n if (!i18n[locale]) throw new Error(\"Local is not supported yet\");\n return i18n[locale][key] || i18n[\"en\"][key] || key;\n}\n", "export function replaceContentsWithChildren(\n parent: Node,\n children: Node | Node[],\n): Node {\n // Remove the existing children\n emptyNode(parent);\n\n const childrenArray = Array.isArray(children) ? children : [children];\n\n // Create a document fragment to contain all the child nodes\n const fragment = document.createDocumentFragment();\n childrenArray.forEach((child) => {\n fragment.appendChild(child);\n });\n\n // Append all at once (only one DOM touch here)\n parent.appendChild(fragment);\n\n return parent;\n}\n\nfunction emptyNode(node: Node) {\n // https://jsperf.com/innerhtml-vs-removechild/37\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\n", "import { SafeHTMLContent } from \"lib/types\";\n\n/**\n * Explicitly marks HTML content as 'safe'.\n * This attempts to mitigate the possibility of XSS by creating an extra hoop for the developer to jump through when using `innerHTML`.\n *\n * @param html HTML content to mark as safe\n */\nexport function markAsSafeHTML(html: string): SafeHTMLContent {\n return {\n __safe: true,\n content: html,\n };\n}\n\n/**\n * Proxies to the element's `innerHTML` method, ensuring that the content that is being set has previously been marked as 'safe'.\n *\n * @param el element to set innerHTML\n * @param safe safe content to set as innerHTML\n */\nexport function safelySetInnerHTML(\n el: Element,\n { __safe, content }: SafeHTMLContent,\n) {\n // It's temping to modify the Element's prototype here with a new `safelySetInnerHTML` method, but...\n // http://perfectionkills.com/whats-wrong-with-extending-the-dom/\n if (!__safe) {\n throw new Error(\n \"This content could not be displayed as it has not been marked as safe. Content must be explicitly marked as safe to try and reduce the likelihood of a XSS attack.\",\n );\n }\n el.innerHTML = content; // tslint:disable-line no-inner-html\n}\n", "import axios from \"lib/axios\";\nimport BaseController from \"decor/base_controller\";\nimport { localeMessage } from \"lib/i18n\";\nimport { SafeHTMLContent } from \"lib/types\";\nimport { replaceContentsWithChildren } from \"lib/util/replace_with_dom_nodes\";\nimport { markAsSafeHTML, safelySetInnerHTML } from \"lib/util/safe_html\";\n\nexport enum ModalEvents {\n Open = \"decor--modal:open\",\n Opening = \"decor--modal:opening\",\n Loading = \"decor--modal:loading\",\n Loaded = \"decor--modal:loaded\",\n Ready = \"decor--modal:ready\",\n Opened = \"decor--modal:opened\",\n Close = \"decor--modal:close\",\n Closing = \"decor--modal:closing\",\n Closed = \"decor--modal:closed\",\n}\n\nexport interface ModalShowOptions {\n contentHref?: string;\n placeholder?: SafeHTMLContent;\n closeOnOverlayClick?: boolean;\n onClosing?: (evt: ModalLifecycleEvent) => void;\n}\n\nexport interface ModalLifecycleEventDetail {\n shownWith?: ModalShowOptions;\n closeReason?: string;\n action?: string;\n}\n\nexport type ModalLifecycleEvent = CustomEvent;\nexport type ModalShowEvent = CustomEvent;\n\nexport default class ModalController extends BaseController {\n public static targets = [\"overlay\", \"modal\"];\n\n private declare readonly overlayTarget: HTMLDivElement;\n private declare readonly modalTarget: HTMLDivElement;\n\n public static classes = [\n \"overlayEntering\",\n \"overlayEnteringFrom\",\n \"overlayEnteringTo\",\n \"overlayLeaving\",\n \"overlayLeavingFrom\",\n \"overlayLeavingTo\",\n \"modalEntering\",\n \"modalEnteringFrom\",\n \"modalEnteringTo\",\n \"modalLeaving\",\n \"modalLeavingFrom\",\n \"modalLeavingTo\",\n ];\n\n protected declare readonly overlayEnteringClasses: string[];\n protected declare readonly overlayEnteringFromClasses: string[];\n protected declare readonly overlayEnteringToClasses: string[];\n protected declare readonly overlayLeavingClasses: string[];\n protected declare readonly overlayLeavingFromClasses: string[];\n protected declare readonly overlayLeavingToClasses: string[];\n protected declare readonly modalEnteringClasses: string[];\n protected declare readonly modalEnteringFromClasses: string[];\n protected declare readonly modalEnteringToClasses: string[];\n protected declare readonly modalLeavingClasses: string[];\n protected declare readonly modalLeavingFromClasses: string[];\n protected declare readonly modalLeavingToClasses: string[];\n\n private modalVisible = false;\n protected closeOnOverlayClick = false;\n\n public onInitialize() {\n this.onConnect(() => {\n if (this.data.get(\"showInitial\")) {\n this.open({\n contentHref: this.data.get(\"contentHref\"),\n } as ModalShowOptions);\n }\n });\n\n return super.onInitialize();\n }\n\n // Handle click on overlay to optionally close modal\n public overlayClicked() {\n if (\n this.closeOnOverlayClick ||\n this.data.get(\"closeOnOverlayClick\") == \"true\"\n ) {\n this.close();\n }\n }\n\n // Reveal the dialog by triggering event (with stimulus or directly) on window\n // > window.dispatchEvent(new CustomEvent('decor-modal:open', { detail: { message } }));\n public handleCloseEvent(evt: ModalLifecycleEvent) {\n const action = evt.detail?.closeReason || evt.detail?.action;\n this.close(action);\n }\n\n // Reveal the dialog by calling:\n // window.dispatchEvent(new CustomEvent('decor-modal:show', { detail: { message } }));\n public async handleOpenEvent(evt: ModalShowEvent) {\n await this.open(evt.detail);\n }\n\n // Open the modal and load its content if needed\n public async open(showOptions: ModalShowOptions) {\n this.dispatchLifecycleEvent(ModalEvents.Opening, {\n shownWith: showOptions,\n });\n await this.prepareModalAndLoad(showOptions);\n this.dispatchLifecycleEvent(ModalEvents.Opened, { shownWith: showOptions });\n }\n\n // Close the modal\n public close(closeReason?: string) {\n this.dispatchLifecycleEvent(ModalEvents.Closing, { closeReason });\n // TODO: close callback?\n this.hide();\n this.dispatchLifecycleEvent(ModalEvents.Closed, { closeReason });\n }\n\n public get isVisible() {\n return this.modalVisible;\n }\n\n protected async prepareModalAndLoad(shownWith: ModalShowOptions) {\n const { contentHref, placeholder, closeOnOverlayClick } = shownWith;\n if (placeholder) {\n this.setContent(placeholder);\n }\n this.closeOnOverlayClick = !!closeOnOverlayClick;\n if (contentHref) {\n this.getContent(shownWith)\n .then((c) => {\n this.setContent(c);\n })\n .catch((err) => {\n console.error(\n \"Could not fetch content for dropdown\",\n contentHref,\n err,\n );\n const errorMessage = localeMessage(\"generic_server_error\");\n // To prevent user being blocked, make sure they can exit the modal\n this.closeOnOverlayClick = true;\n this.setContent(markAsSafeHTML(errorMessage));\n });\n }\n this.reveal();\n }\n\n protected reveal() {\n this.modalVisible = true;\n this.setClasses();\n }\n\n protected hide() {\n this.modalVisible = false;\n this.setClasses();\n }\n\n private setClasses() {\n if (this.modalVisible) {\n this.setTargetElementClasses(this.element, [\"hidden\"], []);\n } else {\n setTimeout(() => {\n this.setTargetElementClasses(this.element, [], [\"hidden\"]);\n }, 200);\n }\n this.toggleTargetElementTransitionClasses(\n this.overlayTarget,\n this.modalVisible,\n this.overlayEnteringClasses,\n this.overlayEnteringFromClasses,\n this.overlayEnteringToClasses,\n this.overlayLeavingClasses,\n this.overlayLeavingFromClasses,\n this.overlayLeavingToClasses,\n 200,\n );\n this.toggleTargetElementTransitionClasses(\n this.modalTarget,\n this.modalVisible,\n this.modalEnteringClasses,\n this.modalEnteringFromClasses,\n this.modalEnteringToClasses,\n this.modalLeavingClasses,\n this.modalLeavingFromClasses,\n this.modalLeavingToClasses,\n 200,\n );\n }\n\n private setContent(content: SafeHTMLContent) {\n this.replaceContents(this.modalTarget, this.createContent(content));\n }\n\n private createContent(content: SafeHTMLContent) {\n const contentContainer = document.createElement(\"div\");\n contentContainer.id = `${this.element.id}-content`;\n\n // We likely want to allow arbitrary HTML here so that the dialog content can be formatted appropriately, and allow things like other MDC components to be rendered inside.\n // The problem with allowing arbitrary HTML to be rendered is that it opens the possibility of a XSS attack.\n // To try and mitigate this issue, we ask that the developer explicitly wraps the content inside an object with a `__safe` property.\n // Of course, this can't guarantee that a developer is passing safe content, but it at least gets them thinking about the dangers of XSS when pushing content to be displayed.\n // https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)\n safelySetInnerHTML(contentContainer, content);\n\n return contentContainer;\n }\n\n private replaceContents(target: HTMLDivElement, content: HTMLDivElement) {\n replaceContentsWithChildren(target, content);\n }\n\n private async getContent(\n shownWith: ModalShowOptions,\n ): Promise {\n this.dispatchLifecycleEvent(ModalEvents.Loading, { shownWith });\n return axios\n .get(shownWith.contentHref!, {\n headers: {\n \"Content-Type\": \"text/html\",\n },\n })\n .then((response) => {\n this.dispatchLifecycleEvent(ModalEvents.Loaded, { shownWith });\n return markAsSafeHTML(response.data);\n });\n }\n\n protected dispatchLifecycleEvent(\n type: string,\n detail?: ModalLifecycleEventDetail,\n ) {\n const evt = new CustomEvent(type, {\n bubbles: true,\n cancelable: false,\n detail: detail,\n });\n console.debug(`Modal: dispatching ${type} event:`, detail);\n window.dispatchEvent(evt);\n }\n}\n", "import ModalController, { ModalLifecycleEvent } from \"decor/modal_controller\";\nimport { SafeHTMLContent } from \"lib/types\";\nimport { safelySetInnerHTML } from \"lib/util/safe_html\";\n\nexport interface ModalConfirmOptions {\n title?: string;\n message?: string;\n messageHTML?: SafeHTMLContent;\n defaultReason?: string;\n negativeButtonReason?: string;\n negativeButtonLabel?: string;\n positiveButtonReason?: string;\n positiveButtonLabel?: string;\n closeOnOverlayClick?: boolean;\n onClosing?: (evt: ModalLifecycleEvent) => void;\n}\n\nexport enum ModalConfirmEvents {\n Open = \"decor--confirm-modal:open\",\n Opening = \"decor--confirm-modal:opening\",\n Ready = \"decor--confirm-modal:ready\",\n Opened = \"decor--confirm-modal:opened\",\n Close = \"decor--confirm-modal:close\",\n Closing = \"decor--confirm-modal:closing\",\n Closed = \"decor--confirm-modal:closed\",\n}\n\nexport default class ConfirmModalController extends ModalController {\n public static targets = [\n \"overlay\",\n \"modal\",\n \"title\",\n \"message\",\n \"negativeButton\",\n \"positiveButton\",\n ];\n\n private declare readonly titleTarget: HTMLHeadingElement;\n private declare readonly messageTarget: HTMLParagraphElement;\n private declare readonly positiveButtonTarget: HTMLButtonElement;\n private declare readonly negativeButtonTarget: HTMLButtonElement;\n\n public negativeButtonReason: string | undefined;\n public positiveButtonReason: string | undefined;\n\n public negativeButton() {\n this.close(this.negativeButtonReason);\n }\n\n public positiveButton() {\n this.close(this.positiveButtonReason);\n }\n\n // Open the modal and load its content if needed\n public async open(showOptions: ModalConfirmOptions) {\n this.dispatchLifecycleEvent(ModalConfirmEvents.Opening, {\n shownWith: showOptions,\n });\n await this.prepareConfirmModalAndLoad(showOptions);\n this.dispatchLifecycleEvent(ModalConfirmEvents.Opened, {\n shownWith: showOptions,\n });\n }\n\n private prepareConfirmModalAndLoad(showOptions: ModalConfirmOptions) {\n const {\n title,\n message,\n messageHTML,\n defaultReason,\n positiveButtonLabel,\n positiveButtonReason,\n negativeButtonLabel,\n negativeButtonReason,\n } = showOptions;\n // Setup buttons etc\n this.closeOnOverlayClick = !!showOptions.closeOnOverlayClick;\n if (title) {\n this.titleTarget.innerText = title;\n }\n if (messageHTML) {\n safelySetInnerHTML(this.messageTarget, messageHTML);\n } else if (message) {\n this.messageTarget.innerText = message;\n }\n if (positiveButtonLabel) {\n this.positiveButtonTarget.innerText = positiveButtonLabel;\n }\n if (negativeButtonLabel) {\n this.negativeButtonTarget.innerText = negativeButtonLabel;\n }\n this.negativeButtonReason = negativeButtonReason;\n this.positiveButtonReason = positiveButtonReason;\n if (defaultReason) {\n if (defaultReason == this.negativeButtonReason) {\n this.negativeButtonTarget.focus();\n } else if (defaultReason == this.positiveButtonReason) {\n this.positiveButtonTarget.focus();\n }\n }\n this.reveal();\n }\n\n // Close the modal\n public close(closeReason?: string) {\n this.dispatchLifecycleEvent(ModalConfirmEvents.Closing, { closeReason });\n this.hide();\n this.dispatchLifecycleEvent(ModalConfirmEvents.Closed, { closeReason });\n }\n}\n", "import {\n ModalEvents,\n ModalLifecycleEvent,\n ModalLifecycleEventDetail,\n ModalShowOptions,\n} from \"decor/modal_controller\";\nimport {\n ModalConfirmEvents,\n ModalConfirmOptions,\n} from \"decor/confirm_modal_controller\";\n\nexport function showConfirmModal(opts: ModalConfirmOptions) {\n const { onClosing, ...rest } = opts;\n function closingHandler(e: Event) {\n window.removeEventListener(ModalConfirmEvents.Closing, closingHandler);\n if (onClosing) {\n onClosing(e as ModalLifecycleEvent);\n }\n }\n\n window.addEventListener(ModalConfirmEvents.Closing, closingHandler);\n\n const evt = new CustomEvent(ModalConfirmEvents.Open, {\n bubbles: true,\n cancelable: false,\n detail: rest,\n });\n window.dispatchEvent(evt);\n}\n\n// Methods to show and hide the dialog:\n//\n// showModal({\n// contentHref: \"/my_html_fragment\",\n// placeholder: markAsSafeHTML(`

...

...

`),\n// onClosing: () => {}\n// })\nexport function showModal(opts: ModalShowOptions) {\n const { onClosing, ...rest } = opts;\n function closingHandler(e: Event) {\n window.removeEventListener(ModalEvents.Closing, closingHandler);\n if (onClosing) {\n onClosing(e as ModalLifecycleEvent);\n }\n }\n\n window.addEventListener(ModalEvents.Closing, closingHandler);\n\n const evt = new CustomEvent(ModalEvents.Open, {\n bubbles: true,\n cancelable: false,\n detail: rest,\n });\n window.dispatchEvent(evt);\n}\n\nexport function closeModal(opts?: ModalLifecycleEventDetail) {\n const evt = new CustomEvent(ModalEvents.Close, {\n bubbles: true,\n cancelable: false,\n detail: opts,\n });\n window.dispatchEvent(evt);\n}\n", "import Rails from \"@rails/ujs\";\n// import \"@hotwired/turbo-rails\"; // Enable in future to add Turbo support\nimport Trix from \"trix\";\nimport * as ActiveStorage from \"@rails/activestorage\";\nimport \"@rails/actiontext\";\nimport { showConfirmModal } from \"./overlay/modal\";\nimport { ModalLifecycleEvent } from \"decor/modal_controller\";\n\nconst alwaysTrue = () => true;\n\nconst customConfirm = (message: string, element: HTMLElement) => {\n // Listen for the dialog closing event.\n // If the closeReason corresponds to the 'confirm' action, then allow the confirm through.\n function handleDialogClosing({\n detail: { closeReason },\n }: ModalLifecycleEvent) {\n if (closeReason === \"confirm\") {\n // Song and dance to re-submit the original action.\n Rails.confirm = alwaysTrue;\n element.click();\n Rails.confirm = customConfirm;\n }\n }\n\n // Reveal the custom dialog.\n // TODO integrate with i18n module\n const confirmLabel = element.getAttribute(\"data-confirm-yes\") || \"OK\";\n const cancelLabel = element.getAttribute(\"data-confirm-no\") || \"Cancel\";\n showConfirmModal({\n defaultReason: \"cancel\",\n negativeButtonReason: \"cancel\",\n negativeButtonLabel: cancelLabel,\n positiveButtonReason: \"confirm\",\n positiveButtonLabel: confirmLabel,\n message: message,\n onClosing: handleDialogClosing,\n });\n\n // Interaction with dialog happens asynchronously,\n // so we need to initially return false to prevent submission.\n return false;\n};\n\nRails.confirm = customConfirm;\n\n(window as any).Trix = Trix;\n\nconsole.debug(\"[Boot] Prepare Rails client side libraries\");\n// Start Rails client side components\nActiveStorage.start();\n\nexport default Rails;\n", "\"use strict\";\n\nlet counter = 0;\n\nmodule.exports = {\n incr () {\n return ++counter;\n },\n\n decr () {\n return --counter;\n },\n\n curr () {\n return counter;\n }\n};", "\"use strict\";\n\n/**\n * Handle all SVG references correctly, which can be\n * a) via attributes: url(#abc)\n * b) via tags: \n * c) via css: .class { fill: url(#abc) }\n * @param {object} idMap: Map previous id with the new unique id\n * @param {string} attributeValueOrCSS\n * @param {string} attributeName\n * @returns attribute or css value with correct id\n */\nmodule.exports = (idMap, attributeValueOrCSS, attributeName = \"\") => {\n const svgRefRegex = /url\\(['\"]?#([\\w:.-]+)['\"]?\\)/g;\n const urlRefRegex = /#([\\w:.-]+)/g;\n\n // fill=\"url(#abc)\" -> fill=\"url(#abc_2)\"\n // Use the unique IDs created previously\n if (attributeValueOrCSS.match(svgRefRegex)) {\n attributeValueOrCSS = attributeValueOrCSS.replace(svgRefRegex, function (g0, g1) {\n if (!idMap[g1]) {\n return g0;\n }\n return `url(#${idMap[g1]})`;\n });\n }\n\n // {\n const re = new RegExp(\"([^\\r\\n,{}]+)(,(?=[^}]*{)|\\s*{)\", \"g\");\n css = css.replace(re, function (g0, g1, g2) {\n\n if (g1.match(/^\\s*(@media|@.*keyframes|to|from|@font-face|1?[0-9]?[0-9])/)) {\n return g1 + g2;\n }\n\n const idRegex = /#(\\w+)/;\n const match = g1.match(idRegex);\n\n if (match && idMap[match[1]]) {\n g1 = g1.replace(match[0], `#${idMap[match[1]]}`);\n }\n\n g1 = g1.replace(/^(\\s*)/, \"$1\" + prefix + \" \");\n\n return g1 + g2;\n });\n\n return css;\n};", "function promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n keys.forEach((key) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(store, callback) {\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(store.getAllKeys());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(store.getAllKeys()),\n promisifyRequest(store.getAll()),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n const items = [];\n return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))", "// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};", "\"use strict\";\n\nconst { get, set, del, entries } = require(\"idb-keyval\");\nconst cssScope = require(\"./lib/scope-css\");\nconst cssUrlFixer = require(\"./lib/css-url-fixer\");\nconst counter = require(\"./lib/counter\");\n\nconst isCacheAvailable = async (url) => {\n let item;\n\n try {\n item = await get(`loader_${url}`);\n } catch (e) {}\n\n if (!item) {\n try {\n item = localStorage.getItem(`loader_${url}`);\n } catch(e) {}\n }\n\n if (!item) {\n return;\n }\n\n item = JSON.parse(item);\n\n if (Date.now() < item.expiry) {\n return item.data;\n } else {\n del(`loader_${url}`);\n return;\n }\n};\n\nconst setCache = async (url, data, cacheOpt) => {\n const cacheExp = parseInt(cacheOpt, 10);\n const dataToSet = JSON.stringify({\n data,\n expiry: Date.now() + (Number.isNaN(cacheExp) ? 60 * 60 * 1000 * 24 * 30 : cacheExp * 1000)\n });\n\n try {\n await set(`loader_${url}`, dataToSet);\n } catch (e) {\n try {\n localStorage.setItem(`loader_${url}`, dataToSet)\n } catch (e) {\n console.warn(\"Failed to set cache: \", e)\n }\n };\n};\n\nconst DOM_EVENTS = [];\nconst getAllEventNames = () => {\n if (DOM_EVENTS.length) {\n return DOM_EVENTS;\n }\n\n for (const prop in document.body) {\n if (prop.startsWith(\"on\")) {\n DOM_EVENTS.push(prop);\n }\n }\n\n // SVG events\n DOM_EVENTS.push('onbegin', 'onend', 'onrepeat');\n\n // Some non-standard events, just in case the browser is handling them\n DOM_EVENTS.push('onfocusin', 'onfocusout', 'onbounce', 'onfinish', 'onshow');\n\n return DOM_EVENTS;\n};\n\nconst attributesSet = {};\nconst renderBody = (elem, options, body) => {\n const { enableJs, disableUniqueIds, disableCssScoping, spriteIconId } = options;\n\n const isSpriteIcon = !!spriteIconId;\n const parser = new DOMParser();\n const doc = parser.parseFromString(body, \"text/html\");\n const fragment = isSpriteIcon ? doc.getElementById(spriteIconId) : doc.querySelector(\"svg\");\n\n const eventNames = getAllEventNames();\n\n // When svg-loader is loading in the same element, it's\n // important to keep track of original properties.\n const elemAttributesSet = attributesSet[elem.getAttribute(\"data-id\")] || new Set();\n\n const elemUniqueId = elem.getAttribute(\"data-id\") || `svg-loader_${counter.incr()}`;\n\n const idMap = {};\n\n if (!disableUniqueIds) {\n // Append a unique suffix for every ID so elements don't conflict.\n Array.from(fragment.querySelectorAll(\"[id]\")).forEach((elem) => {\n const id = elem.getAttribute(\"id\");\n const newId = `${id}_${counter.incr()}`;\n elem.setAttribute(\"id\", newId);\n\n idMap[id] = newId;\n });\n }\n\n Array.from(fragment.querySelectorAll(\"*\")).concat(fragment).forEach((el) => {\n // Unless explicitly set, remove JS code (default)\n if (el.tagName === \"script\") {\n el.remove();\n if (!enableJs) {\n return;\n } else {\n const scriptEl = document.createElement(\"script\");\n scriptEl.appendChild(el.childNodes[0]);\n elem.appendChild(scriptEl)\n }\n }\n\n const attributesToRemove = []\n for (let i = 0; i < el.attributes.length; i++) {\n const {\n name,\n value\n } = el.attributes[i];\n\n const newValue = cssUrlFixer(idMap, value, name);\n\n if (value !== newValue) {\n el.setAttribute(name, newValue);\n }\n\n // Remove event functions: onmouseover, onclick ... unless specifically enabled\n if (eventNames.includes(name.toLowerCase()) && !enableJs) {\n attributesToRemove.push(name);\n continue;\n }\n\n // Remove \"javascript:...\" unless specifically enabled\n if ([\"href\", \"xlink:href\", \"values\"].includes(name) && value.startsWith(\"javascript\") && !enableJs) {\n attributesToRemove.push(name);\n }\n }\n\n attributesToRemove.forEach((attr) => el.removeAttribute(attr))\n\n // .first -> [data-id=\"svg_loader_341xx\"] .first\n // Makes sure that class names don't conflict with each other.\n if (el.tagName === \"style\" && !disableCssScoping) {\n let newValue = cssScope(el.innerHTML, `[data-id=\"${elemUniqueId}\"]`, idMap);\n newValue = cssUrlFixer(idMap, newValue);\n if (newValue !== el.innerHTML)\n el.innerHTML = newValue;\n }\n });\n \n // For a sprite we want to include the whole DOM of sprite element\n elem.innerHTML = spriteIconId ? fragment.outerHTML : fragment.innerHTML;\n\n // This code block basically merges attributes of the original SVG\n // the SVG element where it is called from. For eg,\n //\n // Let's say the original SVG is this:\n // \n // a.svg = \n // \n // and it is used as with svg-loader as \n // this will create a combined element \n // \n // For sprite icons, we don't need this as we are including the whole outerHTML. \n if (!isSpriteIcon) {\n for (let i = 0; i < fragment.attributes.length; i++) {\n const {\n name,\n value\n } = fragment.attributes[i];\n \n // Don't override the attributes already defined, but override the ones that\n // were in the original element\n if (!elem.getAttribute(name) || elemAttributesSet.has(name)) {\n elemAttributesSet.add(name);\n elem.setAttribute(name, value);\n }\n }\n }\n\n attributesSet[elemUniqueId] = elemAttributesSet;\n\n elem.setAttribute(\"data-id\", elemUniqueId);\n\n const event = new CustomEvent('iconload', {\n bubbles: true\n });\n elem.dispatchEvent(event);\n\n if (elem.getAttribute('oniconload')) {\n // Handling (and executing) event attribute for our event (oniconload)\n // isn't straightforward. Because a) the code is a raw string b) there's\n // no way to specify the context for execution. So, `this` in the attribute\n // will point to `window` instead of the element itself. \n //\n // Here we are recycling a rarely used GlobalEventHandler 'onauxclick'\n // and offloading the execution to the browser. This is a hack, but because\n // the event doesn't bubble, it shouldn't affect anything else in the code. \n elem.setAttribute('onauxclick', elem.getAttribute('oniconload'));\n \n const event = new CustomEvent('auxclick', {\n bubbles: false,\n view: window\n });\n elem.dispatchEvent(event);\n\n elem.removeAttribute('onauxclick');\n }\n};\n\nconst requestsInProgress = {};\nconst memoryCache = {};\n\nconst renderIcon = async (elem) => {\n const url = new URL(elem.getAttribute(\"data-src\"), globalThis.location);\n const src = url.toString().replace(url.hash, \"\");\n const spriteIconId = url.hash.replace(\"#\", \"\");\n \n const cacheOpt = elem.getAttribute(\"data-cache\");\n\n const enableJs = elem.getAttribute(\"data-js\") === \"enabled\";\n const disableUniqueIds = elem.getAttribute(\"data-unique-ids\") === \"disabled\";\n const disableCssScoping = elem.getAttribute(\"data-css-scoping\") === \"disabled\";\n\n const lsCache = await isCacheAvailable(src);\n const isCachingEnabled = cacheOpt !== \"disabled\";\n\n const renderBodyCb = renderBody.bind(self, elem, { enableJs, disableUniqueIds, disableCssScoping, spriteIconId });\n\n // Memory cache optimizes same icon requested multiple\n // times on the page\n if (memoryCache[src] || (isCachingEnabled && lsCache)) {\n const cache = memoryCache[src] || lsCache;\n\n renderBodyCb(cache);\n } else {\n // If the same icon is being requested to rendered\n // avoid firing multiple XHRs\n if (requestsInProgress[src]) {\n setTimeout(() => renderIcon(elem), 20);\n return;\n }\n\n requestsInProgress[src] = true;\n\n fetch(src)\n .then((response) => {\n if (!response.ok) {\n throw Error(`Request for '${src}' returned ${response.status} (${response.statusText})`);\n }\n return response.text();\n })\n .then((body) => {\n const bodyLower = body.toLowerCase().trim();\n\n if (!(bodyLower.startsWith(\" {\n console.error(e);\n const event = new CustomEvent('iconloaderror', {\n bubbles: true,\n detail: e.toString(),\n });\n elem.dispatchEvent(event);\n if(elem.getAttribute('oniconloaderror')){\n // the oniconloaderror inline function will have access to an `error` argument\n const loadErrorFunction = Function(\"error\", elem.getAttribute('oniconloaderror'));\n loadErrorFunction(e);\n }\n })\n .finally(() => {\n delete requestsInProgress[src];\n });\n }\n};\n\nlet intObserver;\nif (globalThis.IntersectionObserver) {\n intObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n renderIcon(entry.target);\n \n // Unobserve as soon as soon the icon is rendered\n intObserver.unobserve(entry.target);\n }\n });\n }, {\n // Keep high root margin because intersection observer \n // can be slow to react\n rootMargin: \"1200px\"\n }\n );\n}\n\n\nconst handled = [];\nfunction renderAllSVGs() {\n Array.from(document.querySelectorAll(\"svg[data-src]:not([data-id])\"))\n .forEach((element) => {\n if (handled.indexOf(element) !== -1) {\n return;\n }\n\n handled.push(element);\n if (element.getAttribute(\"data-loading\") === \"lazy\") {\n intObserver.observe(element);\n } else {\n renderIcon(element);\n }\n });\n}\n\nlet observerAdded = false;\nconst addObservers = () => {\n if (observerAdded) {\n return;\n }\n\n observerAdded = true;\n const observer = new MutationObserver((mutationRecords) => {\n const shouldTriggerRender = mutationRecords.some(\n (record) => Array.from(record.addedNodes).some(\n (elem) => elem.nodeType === Node.ELEMENT_NODE\n && ((elem.getAttribute(\"data-src\") && !elem.getAttribute(\"data-id\")) // Check if the element needs to be rendered\n || elem.querySelector(\"svg[data-src]:not([data-id])\")) // Check if any of the element's children need to be rendered\n )\n );\n\n // If any node is added, render all new nodes because the nodes that have already\n // been rendered won't be rendered again.\n if (shouldTriggerRender) {\n renderAllSVGs();\n }\n\n // If data-src is changed, re-render\n mutationRecords.forEach((record) => {\n if (record.type === \"attributes\") {\n renderIcon(record.target);\n }\n });\n });\n\n observer.observe(\n document.documentElement,\n {\n attributeFilter: [\"data-src\"],\n attributes: true,\n childList: true,\n subtree: true\n }\n );\n};\n\nif (globalThis.addEventListener) {\n // Start rendering SVGs as soon as possible\n const intervalCheck = setInterval(() => {\n renderAllSVGs();\n }, 100);\n\n function init() {\n clearInterval(intervalCheck);\n \n renderAllSVGs();\n addObservers();\n }\n\n if (document.readyState === 'interactive') {\n init();\n } else {\n globalThis.addEventListener(\"DOMContentLoaded\", () => {\n init();\n });\n }\n}\n\nglobalThis.SVGLoader = {}\nglobalThis.SVGLoader.destroyCache = async () => {\n // Handle error, \"mutation operation was attempted on a database\"\n // with try-catch\n try {\n const entriesCache = await entries();\n \n for (const entry of entriesCache) {\n if (entry[0].startsWith('loader_')) {\n await del(entry[0]);\n }\n }\n } catch(e) {}\n\n Object.keys(localStorage).forEach((key) => {\n if (key.startsWith('loader_')) {\n localStorage.removeItem(key);\n }\n });\n}", "// External SVG loader\nimport \"external-svg-loader\";\n\n// Third-party libraries\nimport flatpickr from \"flatpickr\";\n\n// Choices has types but get an error with strict checks enabled...\n// @ts-ignore\nimport Choices from \"choices.js\";\n\ndocument\n .querySelectorAll(\"[data-select-searchable]\")\n .forEach(\n (el) => new Choices(el as HTMLSelectElement, { searchResultLimit: 8 }),\n );\n\ndocument.querySelectorAll(\"[data-select-multiple-tags]\").forEach(\n (el) =>\n new Choices(el as HTMLSelectElement, {\n removeItemButton: true,\n searchResultLimit: 8,\n allowHTML: true,\n }),\n);\n\ndocument.querySelectorAll(\"[data-input-multiple-tags]\").forEach(\n (el) =>\n new Choices(el as HTMLInputElement, {\n delimiter: \",\",\n editItems: true,\n removeItemButton: true,\n }),\n);\n\nimport Chartkick from \"chartkick\";\nimport {\n Chart,\n LineElement,\n LineController,\n BarElement,\n BarController,\n PieController,\n DoughnutController,\n LinearScale,\n TimeScale,\n CategoryScale,\n PointElement,\n Legend,\n Title,\n Tooltip,\n ArcElement,\n Filler,\n} from \"chart.js\";\nimport \"chartjs-adapter-date-fns\";\n\nimport gradient from \"chartjs-plugin-gradient\";\nChart.register(gradient);\n\nChart.register(\n Filler,\n ArcElement,\n LineElement,\n LineController,\n BarElement,\n BarController,\n PieController,\n DoughnutController,\n LinearScale,\n TimeScale,\n CategoryScale,\n PointElement,\n Legend,\n Title,\n Tooltip,\n);\nChartkick.use(Chart);\n\n(window as any).Chartkick = Chartkick;\n\n// Init charts\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\nChart.registry.plugins.unregister(ChartDataLabels);\n\nconst urlParams = new URLSearchParams(window.location.search);\n\nif (urlParams.get(\"datalabels\")) {\n Chart.register(ChartDataLabels);\n Chart.defaults.set(\"plugins.datalabels\", {\n backgroundColor: function (context: any) {\n return context.dataset.backgroundColor;\n },\n borderColor: \"white\",\n borderWidth: 2,\n borderRadius: 4,\n color: \"white\",\n font: { weight: \"bold\" },\n });\n}\n", "/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n", "/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n", "/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n", "import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\n */\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n", "import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n", "let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n", "import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n", "import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n", "import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n", "import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n", "import { millisecondsInMinute } from \"./constants.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMinutes} function options.\n */\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n * @param options - An object with options\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport function addMinutes(date, amount, options) {\n const _date = toDate(date, options?.in);\n _date.setTime(_date.getTime() + amount * millisecondsInMinute);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addMinutes;\n", "import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n", "import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link addSeconds} function options.\n */\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport function addSeconds(date, amount, options) {\n return addMilliseconds(date, amount * 1000, options);\n}\n\n// Fallback for modularized imports:\nexport default addSeconds;\n", "import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n", "import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n", "/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n", "import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\n\n/**\n * The {@link differenceInDays} function options.\n */\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n * //=> 92\n */\nexport function differenceInDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const sign = compareLocalAsc(laterDate_, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarDays(laterDate_, earlierDate_),\n );\n\n laterDate_.setDate(laterDate_.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n const isLastDayNotFull = Number(\n compareLocalAsc(laterDate_, earlierDate_) === -sign,\n );\n\n const result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(laterDate, earlierDate) {\n const diff =\n laterDate.getFullYear() - earlierDate.getFullYear() ||\n laterDate.getMonth() - earlierDate.getMonth() ||\n laterDate.getDate() - earlierDate.getDate() ||\n laterDate.getHours() - earlierDate.getHours() ||\n laterDate.getMinutes() - earlierDate.getMinutes() ||\n laterDate.getSeconds() - earlierDate.getSeconds() ||\n laterDate.getMilliseconds() - earlierDate.getMilliseconds();\n\n if (diff < 0) return -1;\n if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInDays;\n", "export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link differenceInHours} function options.\n */\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport function differenceInHours(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n const diff = (+laterDate_ - +earlierDate_) / millisecondsInHour;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInHours;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { millisecondsInMinute } from \"./constants.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInMinutes} function options.\n */\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport function differenceInMinutes(dateLeft, dateRight, options) {\n const diff =\n differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMinutes;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n", "import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\n\n/**\n * The {@link differenceInQuarters} function options.\n */\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport function differenceInQuarters(laterDate, earlierDate, options) {\n const diff = differenceInMonths(laterDate, earlierDate, options) / 3;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInQuarters;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInDays } from \"./differenceInDays.js\";\n\n/**\n * The {@link differenceInWeeks} function options.\n */\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * @example\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport function differenceInWeeks(laterDate, earlierDate, options) {\n const diff = differenceInDays(laterDate, earlierDate, options) / 7;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInWeeks;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\n\n/**\n * The {@link differenceInYears} function options.\n */\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport function differenceInYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n // -1 if the left date is earlier than the right date\n // 2023-12-31 - 2024-01-01 = -1\n const sign = compareAsc(laterDate_, earlierDate_);\n\n // First calculate the difference in calendar years\n // 2024-01-01 - 2023-12-31 = 1 year\n const diff = Math.abs(differenceInCalendarYears(laterDate_, earlierDate_));\n\n // Now we need to calculate if the difference is full. To do that we set\n // both dates to the same year and check if the both date's month and day\n // form a full year.\n laterDate_.setFullYear(1584);\n earlierDate_.setFullYear(1584);\n\n // For it to be true, when the later date is indeed later than the earlier date\n // (2026-02-01 - 2023-12-10 = 3 years), the difference is full if\n // the normalized later date is also later than the normalized earlier date.\n // In our example, 1584-02-01 is earlier than 1584-12-10, so the difference\n // is partial, hence we need to subtract 1 from the difference 3 - 1 = 2.\n const partial = compareAsc(laterDate_, earlierDate_) === -sign;\n\n const result = sign * (diff - +partial);\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInYears;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfQuarter} function options.\n */\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport function startOfQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const currentMonth = _date.getMonth();\n const month = currentMonth - (currentMonth % 3);\n _date.setMonth(month, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfQuarter;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfYear} function options.\n */\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport function endOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n _date.setFullYear(year + 1, 0, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfYear;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfHour} function options.\n */\n\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of an hour\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport function endOfHour(date, options) {\n const _date = toDate(date, options?.in);\n _date.setMinutes(59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfHour;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMinute} function options.\n */\n\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone or the provided context.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a minute\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport function endOfMinute(date, options) {\n const _date = toDate(date, options?.in);\n _date.setSeconds(59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMinute;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfQuarter} function options.\n */\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const currentMonth = _date.getMonth();\n const month = currentMonth - (currentMonth % 3) + 3;\n _date.setMonth(month, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfQuarter;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfSecond} function options.\n */\n\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone if no `in` option is specified.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a second\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport function endOfSecond(date, options) {\n const _date = toDate(date, options?.in);\n _date.setMilliseconds(999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfSecond;\n", "const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n", "export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n", "import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n", "const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n", "/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n", "import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n", "export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n", "export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n", "import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n", "import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n", "import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n", "export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n", "import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n", "import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n", "const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n", "const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n", "import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n", "import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.js\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISODay} function options.\n */\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date, options) {\n const day = toDate(date, options?.in).getDay();\n return day === 0 ? 7 : day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam InputDate - The input `Date` type derived from the passed argument.\n * @typeParam ResultDate - The result `Date` type derived from the passed constructor.\n *\n * @param date - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(date, constructor) {\n const date_ = isConstructor(constructor)\n ? new constructor(0)\n : constructFrom(constructor, 0);\n date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n date_.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n return date_;\n}\n\nfunction isConstructor(constructor) {\n return (\n typeof constructor === \"function\" &&\n constructor.prototype?.constructor === constructor\n );\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n", "import { constructFrom } from \"../../constructFrom.js\";\nimport { transpose } from \"../../transpose.js\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n subPriority = 0;\n\n validate(_utcDate, _options) {\n return true;\n }\n}\n\nexport class ValueSetter extends Setter {\n constructor(\n value,\n\n validateValue,\n\n setValue,\n\n priority,\n subPriority,\n ) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\n\nexport class DateTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n\n constructor(context, reference) {\n super();\n this.context = context || ((date) => constructFrom(reference, date));\n }\n\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, this.context));\n }\n}\n", "import { ValueSetter } from \"./Setter.js\";\n\nexport class Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority,\n ),\n rest: result.rest,\n };\n }\n\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\n", "import { Parser } from \"../Parser.js\";\n\nexport class EraParser extends Parser {\n priority = 140;\n\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return (\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return (\n match.era(dateString, { width: \"wide\" }) ||\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n }\n }\n\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n", "export const numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n", "import {\n millisecondsInHour,\n millisecondsInMinute,\n millisecondsInSecond,\n} from \"../../constants.js\";\n\nimport { numericPatterns } from \"./constants.js\";\n\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest,\n };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1),\n };\n }\n\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value:\n sign *\n (hours * millisecondsInHour +\n minutes * millisecondsInMinute +\n seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"yy\",\n });\n\n switch (token) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n", "import { getWeekYear } from \"../../../getWeekYear.js\";\n\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"YY\",\n });\n\n switch (token) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate,\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n", "import { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n\n incompatibleTokens = [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\nexport class ExtendedYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class QuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class StandAloneQuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MonthParser extends Parser {\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class StandAloneMonthParser extends Parser {\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { getWeek } from \"./getWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n const date_ = toDate(date, options?.in);\n const diff = getWeek(date_, options) - week;\n date_.setDate(date_.getDate() - diff * 7);\n return toDate(date_, options?.in);\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n", "import { setWeek } from \"../../../setWeek.js\";\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n", "import { getISOWeek } from \"./getISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISOWeek} function options.\n */\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The `Date` type of the context function.\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week, options) {\n const _date = toDate(date, options?.in);\n const diff = getISOWeek(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n", "import { setISOWeek } from \"../../../setISOWeek.js\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.js\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n priority = 90;\n subPriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.js\";\n\nexport class DayOfYearParser extends Parser {\n priority = 90;\n\n subpriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { addDays } from \"./addDays.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const date_ = toDate(date, options?.in);\n const currentDay = date_.getDay();\n\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n\n const delta = 7 - weekStartsOn;\n const diff =\n day < 0 || day > 6\n ? day - ((currentDay + delta) % 7)\n : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n", "import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\n// Day of week\nexport class DayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"EEEE\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n", "import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"e\":\n case \"ee\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"eee\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"eeee\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"c\":\n case \"cc\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"ccc\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return (\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // Tuesday\n case \"cccc\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\",\n ];\n}\n", "import { addDays } from \"./addDays.js\";\nimport { getISODay } from \"./getISODay.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISODay} function options.\n */\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday, etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day, options) {\n const date_ = toDate(date, options?.in);\n const currentDay = getISODay(date_, options);\n const diff = day - currentDay;\n return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n", "import { setISODay } from \"../../../setISODay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n\n switch (token) {\n // 2\n case \"i\":\n case \"ii\": // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue(\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // T\n case \"iiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tu\n case \"iiiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(\n match.day(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMMidnightParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1to12Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0to23Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0To11Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1To24Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MinuteParser extends Parser {\n priority = 60;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class SecondParser extends Parser {\n priority = 50;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\nexport class FractionOfSecondParser extends Parser {\n priority = 30;\n\n parse(dateString, token) {\n const valueCallback = (value) =>\n Math.trunc(value * Math.pow(10, -token.length + 3));\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n", "import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"XXXXX\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n", "import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"xxxxx\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n", "import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampSecondsParser extends Parser {\n priority = 40;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n", "import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampMillisecondsParser extends Parser {\n priority = 20;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n", "import { EraParser } from \"./parsers/EraParser.js\";\nimport { YearParser } from \"./parsers/YearParser.js\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.js\";\nimport { QuarterParser } from \"./parsers/QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./parsers/MonthParser.js\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.js\";\nimport { DateParser } from \"./parsers/DateParser.js\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.js\";\nimport { DayParser } from \"./parsers/DayParser.js\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./parsers/ISODayParser.js\";\nimport { AMPMParser } from \"./parsers/AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.js\";\nimport { MinuteParser } from \"./parsers/MinuteParser.js\";\nimport { SecondParser } from \"./parsers/SecondParser.js\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport const parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser(),\n};\n", "import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getDefaultOptions } from \"./getDefaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\nimport { DateTimezoneSetter } from \"./parse/_lib/Setter.js\";\nimport { parsers } from \"./parse/_lib/parsers.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangeably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n if (!formatStr)\n return dateStr ? invalidDate() : toDate(referenceDate, options?.in);\n\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n // If timezone isn't specified, it will try to use the context or\n // the reference date and fallback to the system time zone.\n const setters = [new DateTimezoneSetter(options?.in, referenceDate)];\n\n const tokens = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp);\n\n const usedTokens = [];\n\n for (let token of tokens) {\n if (\n !options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n if (\n !options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n\n const firstCharacter = token[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) =>\n incompatibleTokens.includes(usedToken.token) ||\n usedToken.token === firstCharacter,\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n );\n }\n\n usedTokens.push({ token: firstCharacter, fullToken: token });\n\n const parseResult = parser.run(\n dateStr,\n token,\n locale.match,\n subFnOptions,\n );\n\n if (!parseResult) {\n return invalidDate();\n }\n\n setters.push(parseResult.setter);\n\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return invalidDate();\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return invalidDate();\n }\n\n const uniquePrioritySetters = setters\n .map((setter) => setter.priority)\n .sort((a, b) => b - a)\n .filter((priority, index, array) => array.indexOf(priority) === index)\n .map((priority) =>\n setters\n .filter((setter) => setter.priority === priority)\n .sort((a, b) => b.subPriority - a.subPriority),\n )\n .map((setterArray) => setterArray[0]);\n\n let date = toDate(referenceDate, options?.in);\n\n if (isNaN(+date)) return invalidDate();\n\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return invalidDate();\n }\n\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n\n return date;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfHour} function options.\n */\n\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an hour\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport function startOfHour(date, options) {\n const _date = toDate(date, options?.in);\n _date.setMinutes(0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfHour;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMinute} function options.\n */\n\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport function startOfMinute(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setSeconds(0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfMinute;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfSecond} function options.\n */\n\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport function startOfSecond(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setMilliseconds(0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfSecond;\n", "import {\n millisecondsInHour,\n millisecondsInMinute,\n} from \"./constants.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const invalidDate = () => constructFrom(options?.in, NaN);\n\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(+date)) return invalidDate();\n\n const timestamp = +date;\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) return invalidDate();\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) return invalidDate();\n } else {\n const tmpDate = new Date(timestamp + time);\n const result = toDate(0, options?.in);\n result.setFullYear(\n tmpDate.getUTCFullYear(),\n tmpDate.getUTCMonth(),\n tmpDate.getUTCDate(),\n );\n result.setHours(\n tmpDate.getUTCHours(),\n tmpDate.getUTCMinutes(),\n tmpDate.getUTCSeconds(),\n tmpDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return toDate(timestamp + time + offset, options?.in);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n", "/*!\n * chartjs-adapter-date-fns v3.0.0\n * https://www.chartjs.org\n * (c) 2022 chartjs-adapter-date-fns Contributors\n * Released under the MIT license\n */\nimport { _adapters } from 'chart.js';\nimport { toDate, parse, parseISO, isValid, format, addYears, addQuarters, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addMilliseconds, differenceInYears, differenceInQuarters, differenceInMonths, differenceInWeeks, differenceInDays, differenceInHours, differenceInMinutes, differenceInSeconds, differenceInMilliseconds, startOfYear, startOfQuarter, startOfMonth, startOfWeek, startOfDay, startOfHour, startOfMinute, startOfSecond, endOfYear, endOfQuarter, endOfMonth, endOfWeek, endOfDay, endOfHour, endOfMinute, endOfSecond } from 'date-fns';\n\nconst FORMATS = {\n datetime: 'MMM d, yyyy, h:mm:ss aaaa',\n millisecond: 'h:mm:ss.SSS aaaa',\n second: 'h:mm:ss aaaa',\n minute: 'h:mm aaaa',\n hour: 'ha',\n day: 'MMM d',\n week: 'PP',\n month: 'MMM yyyy',\n quarter: 'qqq - yyyy',\n year: 'yyyy'\n};\n\n_adapters._date.override({\n _id: 'date-fns', // DEBUG\n\n formats: function() {\n return FORMATS;\n },\n\n parse: function(value, fmt) {\n if (value === null || typeof value === 'undefined') {\n return null;\n }\n const type = typeof value;\n if (type === 'number' || value instanceof Date) {\n value = toDate(value);\n } else if (type === 'string') {\n if (typeof fmt === 'string') {\n value = parse(value, fmt, new Date(), this.options);\n } else {\n value = parseISO(value, this.options);\n }\n }\n return isValid(value) ? value.getTime() : null;\n },\n\n format: function(time, fmt) {\n return format(time, fmt, this.options);\n },\n\n add: function(time, amount, unit) {\n switch (unit) {\n case 'millisecond': return addMilliseconds(time, amount);\n case 'second': return addSeconds(time, amount);\n case 'minute': return addMinutes(time, amount);\n case 'hour': return addHours(time, amount);\n case 'day': return addDays(time, amount);\n case 'week': return addWeeks(time, amount);\n case 'month': return addMonths(time, amount);\n case 'quarter': return addQuarters(time, amount);\n case 'year': return addYears(time, amount);\n default: return time;\n }\n },\n\n diff: function(max, min, unit) {\n switch (unit) {\n case 'millisecond': return differenceInMilliseconds(max, min);\n case 'second': return differenceInSeconds(max, min);\n case 'minute': return differenceInMinutes(max, min);\n case 'hour': return differenceInHours(max, min);\n case 'day': return differenceInDays(max, min);\n case 'week': return differenceInWeeks(max, min);\n case 'month': return differenceInMonths(max, min);\n case 'quarter': return differenceInQuarters(max, min);\n case 'year': return differenceInYears(max, min);\n default: return 0;\n }\n },\n\n startOf: function(time, unit, weekday) {\n switch (unit) {\n case 'second': return startOfSecond(time);\n case 'minute': return startOfMinute(time);\n case 'hour': return startOfHour(time);\n case 'day': return startOfDay(time);\n case 'week': return startOfWeek(time);\n case 'isoWeek': return startOfWeek(time, {weekStartsOn: +weekday});\n case 'month': return startOfMonth(time);\n case 'quarter': return startOfQuarter(time);\n case 'year': return startOfYear(time);\n default: return time;\n }\n },\n\n endOf: function(time, unit) {\n switch (unit) {\n case 'second': return endOfSecond(time);\n case 'minute': return endOfMinute(time);\n case 'hour': return endOfHour(time);\n case 'day': return endOfDay(time);\n case 'week': return endOfWeek(time);\n case 'month': return endOfMonth(time);\n case 'quarter': return endOfQuarter(time);\n case 'year': return endOfYear(time);\n default: return time;\n }\n }\n});\n", "/*!\n * chartjs-plugin-gradient v0.5.1\n * https://github.com/kurkle/chartjs-plugin-gradient#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nimport { isNumber, color, defined } from 'chart.js/helpers';\nimport { Chart } from 'chart.js';\n\nconst isChartV3 = Chart.version;\n\nconst parse = isChartV3\n ? (scale, value) => scale.parse(value)\n : (scale, value) => value;\n\nfunction scaleValue(scale, value) {\n const normValue = isNumber(value) ? parseFloat(value) : parse(scale, value);\n return scale.getPixelForValue(normValue);\n}\n\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import(\"chart.js\").Scale } Scale\n */\n\n/**\n * check if the area is consistent\n * @param {Object} area - area to check\n * @returns {boolean}\n */\nconst areaIsValid = (area) => area && area.right > area.left && area.bottom > area.top;\n\n/**\n * Create a canvas gradient\n * @param {CanvasRenderingContext2D} ctx - chart canvas context\n * @param {string} axis - axis type of scale\n * @param {Object} area - scale instance\n * @returns {CanvasGradient} created gradient\n */\nfunction createGradient(ctx, axis, area) {\n if (axis === 'r') {\n return ctx.createRadialGradient(area.xCenter, area.yCenter, 0, area.xCenter, area.yCenter, area.drawingArea);\n }\n if (axis === 'y') {\n return ctx.createLinearGradient(0, area.bottom, 0, area.top);\n }\n return ctx.createLinearGradient(area.left, 0, area.right, 0);\n}\n\n/**\n * Add color stop to a gradient\n * @param {CanvasGradient} gradient - gradient instance\n * @param {Array} colors - all colors to add\n */\nfunction applyColors(gradient, colors) {\n colors.forEach(function(item) {\n gradient.addColorStop(\n item.stop, item.color.rgbString()\n );\n });\n}\n\n/**\n * Get the gradient plugin configuration from the state for a specific dataset option\n * @param {Object} state - state of the plugin\n * @param {{key: string, legendItemKey: string}} keyOption - option of the dataset where the gradient is applied\n * @param {number} datasetIndex - dataset index\n * @returns {Object|undefined} gradient plugin configuration from the state for a specific dataset option\n */\nfunction getGradientData(state, keyOption, datasetIndex) {\n if (state.options.has(keyOption.key)) {\n const option = state.options.get(keyOption.key);\n const gradientData = option.filter((el) => el.datasetIndex === datasetIndex);\n if (gradientData.length) {\n return gradientData[0];\n }\n }\n}\n\n/**\n * Get the pixel and its percentage on the scale, used for color stop in the gradient, for the passed value\n * @param {Scale} scale - scale used by dataset\n * @param {string|number} value - value to search\n * @returns {{pixel: number, stop: number}} the pixel and its percentage on the scale, used for color stop in the gradient\n */\nfunction getPixelStop(scale, value) {\n if (scale.type === 'radialLinear') {\n const distance = scale.getDistanceFromCenterForValue(value);\n return {pixel: distance, stop: distance / scale.drawingArea};\n }\n const reverse = scale.options.reverse;\n const pixel = scaleValue(scale, value);\n const stop = scale.getDecimalForPixel(pixel);\n return {pixel, stop: reverse ? 1 - stop : stop};\n}\n\n// IEC 61966-2-1:1999\nconst toRGBs = (l) => l <= 0.0031308 ? l * 12.92 : Math.pow(l, 1.0 / 2.4) * 1.055 - 0.055;\n// IEC 61966-2-1:1999\nconst fromRGBs = (srgb) => srgb <= 0.04045 ? srgb / 12.92 : Math.pow((srgb + 0.055) / 1.055, 2.4);\n\nfunction interpolate(percent, startColor, endColor) {\n const start = startColor.color.rgb;\n const startR = fromRGBs(start.r / 255);\n const startG = fromRGBs(start.g / 255);\n const startB = fromRGBs(start.b / 255);\n\n const end = endColor.color.rgb;\n const endR = fromRGBs(end.r / 255);\n const endG = fromRGBs(end.g / 255);\n const endB = fromRGBs(end.b / 255);\n\n return color({\n r: Math.round(toRGBs(startR + percent * (endR - startR)) * 255),\n g: Math.round(toRGBs(startG + percent * (endG - startG)) * 255),\n b: Math.round(toRGBs(startB + percent * (endB - startB)) * 255),\n a: start.a + percent * Math.abs(end.a - start.a)\n });\n}\n\n/**\n * Calculate a color from gradient stop color by a value of the dataset.\n * @param {Object} state - state of the plugin\n * @param {{key: string, legendItemKey: string}} keyOption - option of the dataset where the gradient is applied\n * @param {number} datasetIndex - dataset index\n * @param {number} value - value used for searching the color\n * @returns {Object} calculated color\n */\nfunction getInterpolatedColorByValue(state, keyOption, datasetIndex, value) {\n const data = getGradientData(state, keyOption, datasetIndex);\n if (!data || !data.stopColors.length) {\n return;\n }\n const {stop: percent} = getPixelStop(data.scale, value);\n let startColor, endColor;\n for (const stopColor of data.stopColors) {\n if (stopColor.stop === percent) {\n return stopColor.color;\n }\n if (stopColor.stop < percent) {\n startColor = stopColor;\n } else if (stopColor.stop > percent && !endColor) {\n endColor = stopColor;\n }\n }\n if (!endColor) {\n return startColor;\n }\n return interpolate(percent, startColor, endColor);\n}\n\nconst legendOptions = [\n {key: 'backgroundColor', legendItemKey: 'fillStyle'},\n {key: 'borderColor', legendItemKey: 'strokeStyle'}];\n\nconst legendBoxHeight = (chart, options) => options.labels && options.labels.font && defined(options.labels.font.size)\n ? options.labels.font.size\n : chart.options.font.size;\n\nfunction setLegendItem(state, ctx, keyOption, item, area) {\n const data = getGradientData(state, keyOption, item.datasetIndex);\n if (!data || !data.stopColors.length) {\n return;\n }\n const value = createGradient(ctx, data.axis, area);\n applyColors(value, data.stopColors);\n item[keyOption.legendItemKey] = value;\n}\n\nfunction buildArea(hitBox, {boxWidth, boxHeight}) {\n return {\n top: hitBox.top,\n left: hitBox.left,\n bottom: hitBox.top + boxHeight,\n right: hitBox.left + boxWidth,\n xCenter: hitBox.left + boxWidth / 2,\n yCenter: hitBox.top + boxHeight / 2,\n drawingArea: Math.max(boxWidth, boxHeight) / 2\n };\n}\n\nfunction applyGradientToLegendByDatasetIndex(chart, state, item, boxSize) {\n const hitBox = chart.legend.legendHitBoxes[item.datasetIndex];\n const area = buildArea(hitBox, boxSize);\n if (areaIsValid(area)) {\n legendOptions.forEach(function(keyOption) {\n setLegendItem(state, chart.ctx, keyOption, item, area);\n });\n }\n}\n\nfunction applyGradientToLegendByDataIndex(chart, state, dataset, datasetIndex) {\n for (const item of chart.legend.legendItems) {\n legendOptions.forEach(function(keyOption) {\n const value = dataset.data[item.index];\n const c = getInterpolatedColorByValue(state, keyOption, datasetIndex, value);\n if (c && c.valid) {\n item[keyOption.legendItemKey] = c.rgbString();\n }\n });\n }\n}\n\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n */\n\n/**\n * Udpate the legend items, applying the gradients\n * @param {Chart} chart - chart instance\n * @param {Object} state - state of the plugin\n */\nfunction updateLegendItems(chart, state) {\n const legend = chart.legend;\n const options = legend.options;\n const boxHeight = options.labels.boxHeight\n ? options.labels.boxHeight\n : legendBoxHeight(chart, options);\n const boxWidth = options.labels.boxWidth;\n const datasets = chart.data.datasets;\n for (let i = 0; i < datasets.length; i++) {\n const item = legend.legendItems[i];\n if (item.datasetIndex === i) {\n applyGradientToLegendByDatasetIndex(chart, state, item, {boxWidth, boxHeight});\n } else {\n applyGradientToLegendByDataIndex(chart, state, datasets[i], i);\n }\n }\n}\n\nconst chartStates = new Map();\n\nconst getScale = isChartV3\n ? (meta, axis) => meta[axis + 'Scale']\n : (meta, axis) => meta.controller['_' + axis + 'Scale'];\n\nfunction addColors(scale, colors, stopColors) {\n for (const value of Object.keys(colors)) {\n const {pixel, stop} = getPixelStop(scale, value);\n if (isFinite(pixel) && isFinite(stop)) {\n const colorStop = color(colors[value]);\n if (colorStop && colorStop.valid) {\n stopColors.push({\n stop: Math.max(0, Math.min(1, stop)),\n color: colorStop\n });\n }\n }\n }\n stopColors.sort((a, b) => a.stop - b.stop);\n}\n\nfunction setValue(meta, dataset, key, value) {\n dataset[key] = value;\n if (!meta.dataset) {\n return;\n }\n\n if (meta.dataset.options) {\n meta.dataset.options[key] = value;\n } else {\n meta.dataset[key] = value;\n }\n}\n\nfunction getStateOptions(state, meta, key, datasetIndex) {\n let stateOptions = state.options.get(key);\n if (!stateOptions) {\n stateOptions = [];\n state.options.set(key, stateOptions);\n } else if (!meta.hidden) {\n stateOptions = stateOptions.filter((el) => el.datasetIndex !== datasetIndex);\n state.options.set(key, stateOptions);\n }\n return stateOptions;\n}\n\nfunction updateDataset(chart, state, gradient, dataset, datasetIndex) {\n const ctx = chart.ctx;\n const meta = chart.getDatasetMeta(datasetIndex);\n if (meta.hidden) {\n return;\n }\n for (const [key, options] of Object.entries(gradient)) {\n const {axis, colors} = options;\n if (!colors) {\n continue;\n }\n const scale = getScale(meta, axis);\n if (!scale) {\n console.warn(`Scale not found for '${axis}'-axis in datasets[${datasetIndex}] of chart id ${chart.id}, skipping.`);\n continue;\n }\n const stateOptions = getStateOptions(state, meta, key, datasetIndex);\n const option = {\n datasetIndex,\n axis,\n scale,\n stopColors: []\n };\n stateOptions.push(option);\n const value = createGradient(ctx, axis, scale);\n addColors(scale, colors, option.stopColors);\n if (option.stopColors.length) {\n applyColors(value, option.stopColors);\n setValue(meta, dataset, key, value);\n }\n }\n}\n\nvar index = {\n id: 'gradient',\n\n beforeInit(chart) {\n const state = {};\n state.options = new Map();\n chartStates.set(chart, state);\n },\n\n beforeDatasetsUpdate(chart) {\n const area = chart.chartArea;\n if (!areaIsValid(area)) {\n return;\n }\n const state = chartStates.get(chart);\n const datasets = chart.data.datasets;\n for (let i = 0; i < datasets.length; i++) {\n const dataset = datasets[i];\n const gradient = dataset.gradient;\n if (gradient) {\n updateDataset(chart, state, gradient, dataset, i);\n }\n }\n },\n\n afterUpdate(chart) {\n const state = chartStates.get(chart);\n if (chart.legend && chart.legend.options.display !== false && isChartV3) {\n updateLegendItems(chart, state);\n }\n },\n\n destroy(chart) {\n chartStates.delete(chart);\n }\n};\n\nexport { index as default };\n", "/*!\n * chartjs-plugin-datalabels v2.2.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2022 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nimport { isNullOrUndef, merge, toFont, resolve, toPadding, valueOrDefault, callback, isObject, each } from 'chart.js/helpers';\nimport { defaults as defaults$1, ArcElement, PointElement, BarElement } from 'chart.js';\n\nvar devicePixelRatio = (function() {\n if (typeof window !== 'undefined') {\n if (window.devicePixelRatio) {\n return window.devicePixelRatio;\n }\n\n // devicePixelRatio is undefined on IE10\n // https://stackoverflow.com/a/20204180/8837887\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n var screen = window.screen;\n if (screen) {\n return (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n }\n }\n\n return 1;\n}());\n\nvar utils = {\n // @todo move this in Chart.helpers.toTextLines\n toTextLines: function(inputs) {\n var lines = [];\n var input;\n\n inputs = [].concat(inputs);\n while (inputs.length) {\n input = inputs.pop();\n if (typeof input === 'string') {\n lines.unshift.apply(lines, input.split('\\n'));\n } else if (Array.isArray(input)) {\n inputs.push.apply(inputs, input);\n } else if (!isNullOrUndef(inputs)) {\n lines.unshift('' + input);\n }\n }\n\n return lines;\n },\n\n // @todo move this in Chart.helpers.canvas.textSize\n // @todo cache calls of measureText if font doesn't change?!\n textSize: function(ctx, lines, font) {\n var items = [].concat(lines);\n var ilen = items.length;\n var prev = ctx.font;\n var width = 0;\n var i;\n\n ctx.font = font.string;\n\n for (i = 0; i < ilen; ++i) {\n width = Math.max(ctx.measureText(items[i]).width, width);\n }\n\n ctx.font = prev;\n\n return {\n height: ilen * font.lineHeight,\n width: width\n };\n },\n\n /**\n * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n * @todo move this method in Chart.helpers.bound\n * https://doc.qt.io/qt-5/qtglobal.html#qBound\n */\n bound: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Returns an array of pair [value, state] where state is:\n * * -1: value is only in a0 (removed)\n * * 1: value is only in a1 (added)\n */\n arrayDiff: function(a0, a1) {\n var prev = a0.slice();\n var updates = [];\n var i, j, ilen, v;\n\n for (i = 0, ilen = a1.length; i < ilen; ++i) {\n v = a1[i];\n j = prev.indexOf(v);\n\n if (j === -1) {\n updates.push([v, 1]);\n } else {\n prev.splice(j, 1);\n }\n }\n\n for (i = 0, ilen = prev.length; i < ilen; ++i) {\n updates.push([prev[i], -1]);\n }\n\n return updates;\n },\n\n /**\n * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n */\n rasterize: function(v) {\n return Math.round(v * devicePixelRatio) / devicePixelRatio;\n }\n};\n\nfunction orient(point, origin) {\n var x0 = origin.x;\n var y0 = origin.y;\n\n if (x0 === null) {\n return {x: 0, y: -1};\n }\n if (y0 === null) {\n return {x: 1, y: 0};\n }\n\n var dx = point.x - x0;\n var dy = point.y - y0;\n var ln = Math.sqrt(dx * dx + dy * dy);\n\n return {\n x: ln ? dx / ln : 0,\n y: ln ? dy / ln : -1\n };\n}\n\nfunction aligned(x, y, vx, vy, align) {\n switch (align) {\n case 'center':\n vx = vy = 0;\n break;\n case 'bottom':\n vx = 0;\n vy = 1;\n break;\n case 'right':\n vx = 1;\n vy = 0;\n break;\n case 'left':\n vx = -1;\n vy = 0;\n break;\n case 'top':\n vx = 0;\n vy = -1;\n break;\n case 'start':\n vx = -vx;\n vy = -vy;\n break;\n case 'end':\n // keep natural orientation\n break;\n default:\n // clockwise rotation (in degree)\n align *= (Math.PI / 180);\n vx = Math.cos(align);\n vy = Math.sin(align);\n break;\n }\n\n return {\n x: x,\n y: y,\n vx: vx,\n vy: vy\n };\n}\n\n// Line clipping (Cohen\u2013Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen\u2013Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n var res = R_INSIDE;\n\n if (x < rect.left) {\n res |= R_LEFT;\n } else if (x > rect.right) {\n res |= R_RIGHT;\n }\n if (y < rect.top) {\n res |= R_TOP;\n } else if (y > rect.bottom) {\n res |= R_BOTTOM;\n }\n\n return res;\n}\n\nfunction clipped(segment, area) {\n var x0 = segment.x0;\n var y0 = segment.y0;\n var x1 = segment.x1;\n var y1 = segment.y1;\n var r0 = region(x0, y0, area);\n var r1 = region(x1, y1, area);\n var r, x, y;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!(r0 | r1) || (r0 & r1)) {\n // both points inside or on the same side: no clipping\n break;\n }\n\n // at least one point is outside\n r = r0 || r1;\n\n if (r & R_TOP) {\n x = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n y = area.top;\n } else if (r & R_BOTTOM) {\n x = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n y = area.bottom;\n } else if (r & R_RIGHT) {\n y = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n x = area.right;\n } else if (r & R_LEFT) {\n y = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n x = area.left;\n }\n\n if (r === r0) {\n x0 = x;\n y0 = y;\n r0 = region(x0, y0, area);\n } else {\n x1 = x;\n y1 = y;\n r1 = region(x1, y1, area);\n }\n }\n\n return {\n x0: x0,\n x1: x1,\n y0: y0,\n y1: y1\n };\n}\n\nfunction compute$1(range, config) {\n var anchor = config.anchor;\n var segment = range;\n var x, y;\n\n if (config.clamp) {\n segment = clipped(segment, config.area);\n }\n\n if (anchor === 'start') {\n x = segment.x0;\n y = segment.y0;\n } else if (anchor === 'end') {\n x = segment.x1;\n y = segment.y1;\n } else {\n x = (segment.x0 + segment.x1) / 2;\n y = (segment.y0 + segment.y1) / 2;\n }\n\n return aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n arc: function(el, config) {\n var angle = (el.startAngle + el.endAngle) / 2;\n var vx = Math.cos(angle);\n var vy = Math.sin(angle);\n var r0 = el.innerRadius;\n var r1 = el.outerRadius;\n\n return compute$1({\n x0: el.x + vx * r0,\n y0: el.y + vy * r0,\n x1: el.x + vx * r1,\n y1: el.y + vy * r1,\n vx: vx,\n vy: vy\n }, config);\n },\n\n point: function(el, config) {\n var v = orient(el, config.origin);\n var rx = v.x * el.options.radius;\n var ry = v.y * el.options.radius;\n\n return compute$1({\n x0: el.x - rx,\n y0: el.y - ry,\n x1: el.x + rx,\n y1: el.y + ry,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n bar: function(el, config) {\n var v = orient(el, config.origin);\n var x = el.x;\n var y = el.y;\n var sx = 0;\n var sy = 0;\n\n if (el.horizontal) {\n x = Math.min(el.x, el.base);\n sx = Math.abs(el.base - el.x);\n } else {\n y = Math.min(el.y, el.base);\n sy = Math.abs(el.base - el.y);\n }\n\n return compute$1({\n x0: x,\n y0: y + sy,\n x1: x + sx,\n y1: y,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n fallback: function(el, config) {\n var v = orient(el, config.origin);\n\n return compute$1({\n x0: el.x,\n y0: el.y,\n x1: el.x + (el.width || 0),\n y1: el.y + (el.height || 0),\n vx: v.x,\n vy: v.y\n }, config);\n }\n};\n\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n var borderWidth = model.borderWidth || 0;\n var padding = model.padding;\n var th = model.size.height;\n var tw = model.size.width;\n var tx = -tw / 2;\n var ty = -th / 2;\n\n return {\n frame: {\n x: tx - padding.left - borderWidth,\n y: ty - padding.top - borderWidth,\n w: tw + padding.width + borderWidth * 2,\n h: th + padding.height + borderWidth * 2\n },\n text: {\n x: tx,\n y: ty,\n w: tw,\n h: th\n }\n };\n}\n\nfunction getScaleOrigin(el, context) {\n var scale = context.chart.getDatasetMeta(context.datasetIndex).vScale;\n\n if (!scale) {\n return null;\n }\n\n if (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n return {x: scale.xCenter, y: scale.yCenter};\n }\n\n var pixel = scale.getBasePixel();\n return el.horizontal ?\n {x: pixel, y: null} :\n {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n if (el instanceof ArcElement) {\n return positioners.arc;\n }\n if (el instanceof PointElement) {\n return positioners.point;\n }\n if (el instanceof BarElement) {\n return positioners.bar;\n }\n return positioners.fallback;\n}\n\nfunction drawRoundedRect(ctx, x, y, w, h, radius) {\n var HALF_PI = Math.PI / 2;\n\n if (radius) {\n var r = Math.min(radius, h / 2, w / 2);\n var left = x + r;\n var top = y + r;\n var right = x + w - r;\n var bottom = y + h - r;\n\n ctx.moveTo(x, top);\n if (left < right && top < bottom) {\n ctx.arc(left, top, r, -Math.PI, -HALF_PI);\n ctx.arc(right, top, r, -HALF_PI, 0);\n ctx.arc(right, bottom, r, 0, HALF_PI);\n ctx.arc(left, bottom, r, HALF_PI, Math.PI);\n } else if (left < right) {\n ctx.moveTo(left, y);\n ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n ctx.arc(left, top, r, HALF_PI, Math.PI + HALF_PI);\n } else if (top < bottom) {\n ctx.arc(left, top, r, -Math.PI, 0);\n ctx.arc(left, bottom, r, 0, Math.PI);\n } else {\n ctx.arc(left, top, r, -Math.PI, Math.PI);\n }\n ctx.closePath();\n ctx.moveTo(x, y);\n } else {\n ctx.rect(x, y, w, h);\n }\n}\n\nfunction drawFrame(ctx, rect, model) {\n var bgColor = model.backgroundColor;\n var borderColor = model.borderColor;\n var borderWidth = model.borderWidth;\n\n if (!bgColor && (!borderColor || !borderWidth)) {\n return;\n }\n\n ctx.beginPath();\n\n drawRoundedRect(\n ctx,\n rasterize(rect.x) + borderWidth / 2,\n rasterize(rect.y) + borderWidth / 2,\n rasterize(rect.w) - borderWidth,\n rasterize(rect.h) - borderWidth,\n model.borderRadius);\n\n ctx.closePath();\n\n if (bgColor) {\n ctx.fillStyle = bgColor;\n ctx.fill();\n }\n\n if (borderColor && borderWidth) {\n ctx.strokeStyle = borderColor;\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = 'miter';\n ctx.stroke();\n }\n}\n\nfunction textGeometry(rect, align, font) {\n var h = font.lineHeight;\n var w = rect.w;\n var x = rect.x;\n var y = rect.y + h / 2;\n\n if (align === 'center') {\n x += w / 2;\n } else if (align === 'end' || align === 'right') {\n x += w;\n }\n\n return {\n h: h,\n w: w,\n x: x,\n y: y\n };\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n var shadow = ctx.shadowBlur;\n var stroked = cfg.stroked;\n var x = rasterize(cfg.x);\n var y = rasterize(cfg.y);\n var w = rasterize(cfg.w);\n\n if (stroked) {\n ctx.strokeText(text, x, y, w);\n }\n\n if (cfg.filled) {\n if (shadow && stroked) {\n // Prevent drawing shadow on both the text stroke and fill, so\n // if the text is stroked, remove the shadow for the text fill.\n ctx.shadowBlur = 0;\n }\n\n ctx.fillText(text, x, y, w);\n\n if (shadow && stroked) {\n ctx.shadowBlur = shadow;\n }\n }\n}\n\nfunction drawText(ctx, lines, rect, model) {\n var align = model.textAlign;\n var color = model.color;\n var filled = !!color;\n var font = model.font;\n var ilen = lines.length;\n var strokeColor = model.textStrokeColor;\n var strokeWidth = model.textStrokeWidth;\n var stroked = strokeColor && strokeWidth;\n var i;\n\n if (!ilen || (!filled && !stroked)) {\n return;\n }\n\n // Adjust coordinates based on text alignment and line height\n rect = textGeometry(rect, align, font);\n\n ctx.font = font.string;\n ctx.textAlign = align;\n ctx.textBaseline = 'middle';\n ctx.shadowBlur = model.textShadowBlur;\n ctx.shadowColor = model.textShadowColor;\n\n if (filled) {\n ctx.fillStyle = color;\n }\n if (stroked) {\n ctx.lineJoin = 'round';\n ctx.lineWidth = strokeWidth;\n ctx.strokeStyle = strokeColor;\n }\n\n for (i = 0, ilen = lines.length; i < ilen; ++i) {\n drawTextLine(ctx, lines[i], {\n stroked: stroked,\n filled: filled,\n w: rect.w,\n x: rect.x,\n y: rect.y + rect.h * i\n });\n }\n}\n\nvar Label = function(config, ctx, el, index) {\n var me = this;\n\n me._config = config;\n me._index = index;\n me._model = null;\n me._rects = null;\n me._ctx = ctx;\n me._el = el;\n};\n\nmerge(Label.prototype, {\n /**\n * @private\n */\n _modelize: function(display, lines, config, context) {\n var me = this;\n var index = me._index;\n var font = toFont(resolve([config.font, {}], context, index));\n var color = resolve([config.color, defaults$1.color], context, index);\n\n return {\n align: resolve([config.align, 'center'], context, index),\n anchor: resolve([config.anchor, 'center'], context, index),\n area: context.chart.chartArea,\n backgroundColor: resolve([config.backgroundColor, null], context, index),\n borderColor: resolve([config.borderColor, null], context, index),\n borderRadius: resolve([config.borderRadius, 0], context, index),\n borderWidth: resolve([config.borderWidth, 0], context, index),\n clamp: resolve([config.clamp, false], context, index),\n clip: resolve([config.clip, false], context, index),\n color: color,\n display: display,\n font: font,\n lines: lines,\n offset: resolve([config.offset, 4], context, index),\n opacity: resolve([config.opacity, 1], context, index),\n origin: getScaleOrigin(me._el, context),\n padding: toPadding(resolve([config.padding, 4], context, index)),\n positioner: getPositioner(me._el),\n rotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n size: utils.textSize(me._ctx, lines, font),\n textAlign: resolve([config.textAlign, 'start'], context, index),\n textShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n textShadowColor: resolve([config.textShadowColor, color], context, index),\n textStrokeColor: resolve([config.textStrokeColor, color], context, index),\n textStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n };\n },\n\n update: function(context) {\n var me = this;\n var model = null;\n var rects = null;\n var index = me._index;\n var config = me._config;\n var value, label, lines;\n\n // We first resolve the display option (separately) to avoid computing\n // other options in case the label is hidden (i.e. display: false).\n var display = resolve([config.display, true], context, index);\n\n if (display) {\n value = context.dataset.data[index];\n label = valueOrDefault(callback(config.formatter, [value, context]), value);\n lines = isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n if (lines.length) {\n model = me._modelize(display, lines, config, context);\n rects = boundingRects(model);\n }\n }\n\n me._model = model;\n me._rects = rects;\n },\n\n geometry: function() {\n return this._rects ? this._rects.frame : {};\n },\n\n rotation: function() {\n return this._model ? this._model.rotation : 0;\n },\n\n visible: function() {\n return this._model && this._model.opacity;\n },\n\n model: function() {\n return this._model;\n },\n\n draw: function(chart, center) {\n var me = this;\n var ctx = chart.ctx;\n var model = me._model;\n var rects = me._rects;\n var area;\n\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n if (model.clip) {\n area = model.area;\n ctx.beginPath();\n ctx.rect(\n area.left,\n area.top,\n area.right - area.left,\n area.bottom - area.top);\n ctx.clip();\n }\n\n ctx.globalAlpha = utils.bound(0, model.opacity, 1);\n ctx.translate(rasterize(center.x), rasterize(center.y));\n ctx.rotate(model.rotation);\n\n drawFrame(ctx, rects.frame, model);\n drawText(ctx, model.lines, rects.text, model);\n\n ctx.restore();\n }\n});\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var cx = center.x;\n var cy = center.y;\n\n return {\n x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n };\n}\n\nfunction projected(points, axis) {\n var min = MAX_INTEGER;\n var max = MIN_INTEGER;\n var origin = axis.origin;\n var i, pt, vx, vy, dp;\n\n for (i = 0; i < points.length; ++i) {\n pt = points[i];\n vx = pt.x - origin.x;\n vy = pt.y - origin.y;\n dp = axis.vx * vx + axis.vy * vy;\n min = Math.min(min, dp);\n max = Math.max(max, dp);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction toAxis(p0, p1) {\n var vx = p1.x - p0.x;\n var vy = p1.y - p0.y;\n var ln = Math.sqrt(vx * vx + vy * vy);\n\n return {\n vx: (p1.x - p0.x) / ln,\n vy: (p1.y - p0.y) / ln,\n origin: p0,\n ln: ln\n };\n}\n\nvar HitBox = function() {\n this._rotation = 0;\n this._rect = {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n };\n};\n\nmerge(HitBox.prototype, {\n center: function() {\n var r = this._rect;\n return {\n x: r.x + r.w / 2,\n y: r.y + r.h / 2\n };\n },\n\n update: function(center, rect, rotation) {\n this._rotation = rotation;\n this._rect = {\n x: rect.x + center.x,\n y: rect.y + center.y,\n w: rect.w,\n h: rect.h\n };\n },\n\n contains: function(point) {\n var me = this;\n var margin = 1;\n var rect = me._rect;\n\n point = rotated(point, me.center(), -me._rotation);\n\n return !(point.x < rect.x - margin\n || point.y < rect.y - margin\n || point.x > rect.x + rect.w + margin * 2\n || point.y > rect.y + rect.h + margin * 2);\n },\n\n // Separating Axis Theorem\n // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n intersects: function(other) {\n var r0 = this._points();\n var r1 = other._points();\n var axes = [\n toAxis(r0[0], r0[1]),\n toAxis(r0[0], r0[3])\n ];\n var i, pr0, pr1;\n\n if (this._rotation !== other._rotation) {\n // Only separate with r1 axis if the rotation is different,\n // else it's enough to separate r0 and r1 with r0 axis only!\n axes.push(\n toAxis(r1[0], r1[1]),\n toAxis(r1[0], r1[3])\n );\n }\n\n for (i = 0; i < axes.length; ++i) {\n pr0 = projected(r0, axes[i]);\n pr1 = projected(r1, axes[i]);\n\n if (pr0.max < pr1.min || pr1.max < pr0.min) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * @private\n */\n _points: function() {\n var me = this;\n var rect = me._rect;\n var angle = me._rotation;\n var center = me.center();\n\n return [\n rotated({x: rect.x, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n rotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n ];\n }\n});\n\nfunction coordinates(el, model, geometry) {\n var point = model.positioner(el, model);\n var vx = point.vx;\n var vy = point.vy;\n\n if (!vx && !vy) {\n // if aligned center, we don't want to offset the center point\n return {x: point.x, y: point.y};\n }\n\n var w = geometry.w;\n var h = geometry.h;\n\n // take in account the label rotation\n var rotation = model.rotation;\n var dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n var dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n // scale the unit vector (vx, vy) to get at least dx or dy equal to\n // w or h respectively (else we would calculate the distance to the\n // ellipse inscribed in the bounding rect)\n var vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n dx *= vx * vs;\n dy *= vy * vs;\n\n // finally, include the explicit offset\n dx += model.offset * vx;\n dy += model.offset * vy;\n\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n}\n\nfunction collide(labels, collider) {\n var i, j, s0, s1;\n\n // IMPORTANT Iterate in the reverse order since items at the end of the\n // list have an higher weight/priority and thus should be less impacted\n // by the overlapping strategy.\n\n for (i = labels.length - 1; i >= 0; --i) {\n s0 = labels[i].$layout;\n\n for (j = i - 1; j >= 0 && s0._visible; --j) {\n s1 = labels[j].$layout;\n\n if (s1._visible && s0._box.intersects(s1._box)) {\n collider(s0, s1);\n }\n }\n }\n\n return labels;\n}\n\nfunction compute(labels) {\n var i, ilen, label, state, geometry, center, proxy;\n\n // Initialize labels for overlap detection\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n // Chart.js 3 removed el._model in favor of getProps(), making harder to\n // abstract reading values in positioners. Also, using string arrays to\n // read values (i.e. var {a,b,c} = el.getProps([\"a\",\"b\",\"c\"])) would make\n // positioners inefficient in the normal case (i.e. not the final values)\n // and the code a bit ugly, so let's use a Proxy instead.\n proxy = new Proxy(label._el, {get: (el, p) => el.getProps([p], true)[p]});\n\n geometry = label.geometry();\n center = coordinates(proxy, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n }\n }\n\n // Auto hide overlapping labels\n return collide(labels, function(s0, s1) {\n var h0 = s0._hidable;\n var h1 = s1._hidable;\n\n if ((h0 && h1) || h1) {\n s1._visible = false;\n } else if (h0) {\n s0._visible = false;\n }\n });\n}\n\nvar layout = {\n prepare: function(datasets) {\n var labels = [];\n var i, j, ilen, jlen, label;\n\n for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n for (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n label = datasets[i][j];\n labels.push(label);\n label.$layout = {\n _box: new HitBox(),\n _hidable: false,\n _visible: true,\n _set: i,\n _idx: label._index\n };\n }\n }\n\n // TODO New `z` option: labels with a higher z-index are drawn\n // of top of the ones with a lower index. Lowest z-index labels\n // are also discarded first when hiding overlapping labels.\n labels.sort(function(a, b) {\n var sa = a.$layout;\n var sb = b.$layout;\n\n return sa._idx === sb._idx\n ? sb._set - sa._set\n : sb._idx - sa._idx;\n });\n\n this.update(labels);\n\n return labels;\n },\n\n update: function(labels) {\n var dirty = false;\n var i, ilen, label, model, state;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n model = label.model();\n state = label.$layout;\n state._hidable = model && model.display === 'auto';\n state._visible = label.visible();\n dirty |= state._hidable;\n }\n\n if (dirty) {\n compute(labels);\n }\n },\n\n lookup: function(labels, point) {\n var i, state;\n\n // IMPORTANT Iterate in the reverse order since items at the end of\n // the list have an higher z-index, thus should be picked first.\n\n for (i = labels.length - 1; i >= 0; --i) {\n state = labels[i].$layout;\n\n if (state && state._visible && state._box.contains(point)) {\n return labels[i];\n }\n }\n\n return null;\n },\n\n draw: function(chart, labels) {\n var i, ilen, label, state, geometry, center;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n geometry = label.geometry();\n center = coordinates(label._el, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n label.draw(chart, center);\n }\n }\n }\n};\n\nvar formatter = function(value) {\n if (isNullOrUndef(value)) {\n return null;\n }\n\n var label = value;\n var keys, klen, k;\n if (isObject(value)) {\n if (!isNullOrUndef(value.label)) {\n label = value.label;\n } else if (!isNullOrUndef(value.r)) {\n label = value.r;\n } else {\n label = '';\n keys = Object.keys(value);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n label += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n }\n }\n }\n\n return '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n align: 'center',\n anchor: 'center',\n backgroundColor: null,\n borderColor: null,\n borderRadius: 0,\n borderWidth: 0,\n clamp: false,\n clip: false,\n color: undefined,\n display: true,\n font: {\n family: undefined,\n lineHeight: 1.2,\n size: undefined,\n style: undefined,\n weight: null\n },\n formatter: formatter,\n labels: undefined,\n listeners: {},\n offset: 4,\n opacity: 1,\n padding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n rotation: 0,\n textAlign: 'start',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n textShadowBlur: 0,\n textShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n var override = dataset.datalabels;\n var listeners = {};\n var configs = [];\n var labels, keys;\n\n if (override === false) {\n return null;\n }\n if (override === true) {\n override = {};\n }\n\n options = merge({}, [options, override]);\n labels = options.labels || {};\n keys = Object.keys(labels);\n delete options.labels;\n\n if (keys.length) {\n keys.forEach(function(key) {\n if (labels[key]) {\n configs.push(merge({}, [\n options,\n labels[key],\n {_key: key}\n ]));\n }\n });\n } else {\n // Default label if no \"named\" label defined.\n configs.push(options);\n }\n\n // listeners: {: {: }}\n listeners = configs.reduce(function(target, config) {\n each(config.listeners || {}, function(fn, event) {\n target[event] = target[event] || {};\n target[event][config._key || DEFAULT_KEY] = fn;\n });\n\n delete config.listeners;\n return target;\n }, {});\n\n return {\n labels: configs,\n listeners: listeners\n };\n}\n\nfunction dispatchEvent(chart, listeners, label, event) {\n if (!listeners) {\n return;\n }\n\n var context = label.$context;\n var groups = label.$groups;\n var callback$1;\n\n if (!listeners[groups._set]) {\n return;\n }\n\n callback$1 = listeners[groups._set][groups._key];\n if (!callback$1) {\n return;\n }\n\n if (callback(callback$1, [context, event]) === true) {\n // Users are allowed to tweak the given context by injecting values that can be\n // used in scriptable options to display labels differently based on the current\n // event (e.g. highlight an hovered label). That's why we update the label with\n // the output context and schedule a new chart render by setting it dirty.\n chart[EXPANDO_KEY]._dirty = true;\n label.update(context);\n }\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label, event) {\n var enter, leave;\n\n if (!previous && !label) {\n return;\n }\n\n if (!previous) {\n enter = true;\n } else if (!label) {\n leave = true;\n } else if (previous !== label) {\n leave = enter = true;\n }\n\n if (leave) {\n dispatchEvent(chart, listeners.leave, previous, event);\n }\n if (enter) {\n dispatchEvent(chart, listeners.enter, label, event);\n }\n}\n\nfunction handleMoveEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var listeners = expando._listeners;\n var previous, label;\n\n if (!listeners.enter && !listeners.leave) {\n return;\n }\n\n if (event.type === 'mousemove') {\n label = layout.lookup(expando._labels, event);\n } else if (event.type !== 'mouseout') {\n return;\n }\n\n previous = expando._hovered;\n expando._hovered = label;\n dispatchMoveEvents(chart, listeners, previous, label, event);\n}\n\nfunction handleClickEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var handlers = expando._listeners.click;\n var label = handlers && layout.lookup(expando._labels, event);\n if (label) {\n dispatchEvent(chart, handlers, label, event);\n }\n}\n\nvar plugin = {\n id: 'datalabels',\n\n defaults: defaults,\n\n beforeInit: function(chart) {\n chart[EXPANDO_KEY] = {\n _actives: []\n };\n },\n\n beforeUpdate: function(chart) {\n var expando = chart[EXPANDO_KEY];\n expando._listened = false;\n expando._listeners = {}; // {: {: {: }}}\n expando._datasets = []; // per dataset labels: [Label[]]\n expando._labels = []; // layouted labels: Label[]\n },\n\n afterDatasetUpdate: function(chart, args, options) {\n var datasetIndex = args.index;\n var expando = chart[EXPANDO_KEY];\n var labels = expando._datasets[datasetIndex] = [];\n var visible = chart.isDatasetVisible(datasetIndex);\n var dataset = chart.data.datasets[datasetIndex];\n var config = configure(dataset, options);\n var elements = args.meta.data || [];\n var ctx = chart.ctx;\n var i, j, ilen, jlen, cfg, key, el, label;\n\n ctx.save();\n\n for (i = 0, ilen = elements.length; i < ilen; ++i) {\n el = elements[i];\n el[EXPANDO_KEY] = [];\n\n if (visible && el && chart.getDataVisibility(i) && !el.skip) {\n for (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n cfg = config.labels[j];\n key = cfg._key;\n\n label = new Label(cfg, ctx, el, i);\n label.$groups = {\n _set: datasetIndex,\n _key: key || DEFAULT_KEY\n };\n label.$context = {\n active: false,\n chart: chart,\n dataIndex: i,\n dataset: dataset,\n datasetIndex: datasetIndex\n };\n\n label.update(label.$context);\n el[EXPANDO_KEY].push(label);\n labels.push(label);\n }\n }\n }\n\n ctx.restore();\n\n // Store listeners at the chart level and per event type to optimize\n // cases where no listeners are registered for a specific event.\n merge(expando._listeners, config.listeners, {\n merger: function(event, target, source) {\n target[event] = target[event] || {};\n target[event][args.index] = source[event];\n expando._listened = true;\n }\n });\n },\n\n afterUpdate: function(chart) {\n chart[EXPANDO_KEY]._labels = layout.prepare(chart[EXPANDO_KEY]._datasets);\n },\n\n // Draw labels on top of all dataset elements\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n afterDatasetsDraw: function(chart) {\n layout.draw(chart, chart[EXPANDO_KEY]._labels);\n },\n\n beforeEvent: function(chart, args) {\n // If there is no listener registered for this chart, `listened` will be false,\n // meaning we can immediately ignore the incoming event and avoid useless extra\n // computation for users who don't implement label interactions.\n if (chart[EXPANDO_KEY]._listened) {\n var event = args.event;\n switch (event.type) {\n case 'mousemove':\n case 'mouseout':\n handleMoveEvents(chart, event);\n break;\n case 'click':\n handleClickEvents(chart, event);\n break;\n }\n }\n },\n\n afterEvent: function(chart) {\n var expando = chart[EXPANDO_KEY];\n var previous = expando._actives;\n var actives = expando._actives = chart.getActiveElements();\n var updates = utils.arrayDiff(previous, actives);\n var i, ilen, j, jlen, update, label, labels;\n\n for (i = 0, ilen = updates.length; i < ilen; ++i) {\n update = updates[i];\n if (update[1]) {\n labels = update[0].element[EXPANDO_KEY] || [];\n for (j = 0, jlen = labels.length; j < jlen; ++j) {\n label = labels[j];\n label.$context.active = (update[1] === 1);\n label.update(label.$context);\n }\n }\n }\n\n if (expando._dirty || updates.length) {\n layout.update(expando._labels);\n chart.render();\n }\n\n delete expando._dirty;\n }\n};\n\nexport { plugin as default };\n", "import BaseController from \"decor/base_controller\";\n\nexport default class ButtonController extends BaseController {\n public set disabled(disabled: boolean) {\n if (disabled) {\n this.element.setAttribute(\"disabled\", \"disabled\");\n } else {\n this.element.removeAttribute(\"disabled\");\n }\n }\n}\n", "// This file is auto-generated by ./bin/rails stimulus_controller_imports\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nexport const Decor__ButtonControllerIdentifier = \"decor--button\";\nexport const Decor__CarouselControllerIdentifier = \"decor--carousel\";\nexport const Decor__ClickToCopyControllerIdentifier = \"decor--click-to-copy\";\nexport const Decor__ConfirmModalControllerIdentifier = \"decor--confirm-modal\";\nexport const Decor__DropdownControllerIdentifier = \"decor--dropdown\";\nexport const Decor__FlashControllerIdentifier = \"decor--flash\";\nexport const Decor__Forms__ButtonRadioGroupControllerIdentifier = \"decor--forms--button-radio-group\";\nexport const Decor__Forms__CheckboxControllerIdentifier = \"decor--forms--checkbox\";\nexport const Decor__Forms__DateCalendarControllerIdentifier = \"decor--forms--date-calendar\";\nexport const Decor__Forms__ErrorIconSectionControllerIdentifier = \"decor--forms--error-icon-section\";\nexport const Decor__Forms__ExpandingCheckboxCollectionControllerIdentifier = \"decor--forms--expanding-checkbox-collection\";\nexport const Decor__Forms__FileUploadControllerIdentifier = \"decor--forms--file-upload\";\nexport const Decor__Forms__FormControlControllerIdentifier = \"decor--forms--form-control\";\nexport const Decor__Forms__FormControllerIdentifier = \"decor--forms--form\";\nexport const Decor__Forms__FormFieldLayoutControllerIdentifier = \"decor--forms--form-field-layout\";\nexport const Decor__Forms__HelperTextSectionControllerIdentifier = \"decor--forms--helper-text-section\";\nexport const Decor__Forms__NumberFieldControllerIdentifier = \"decor--forms--number-field\";\nexport const Decor__Forms__RadioControllerIdentifier = \"decor--forms--radio\";\nexport const Decor__Forms__SelectControllerIdentifier = \"decor--forms--select\";\nexport const Decor__Forms__SwitchControllerIdentifier = \"decor--forms--switch\";\nexport const Decor__Forms__TextAreaControllerIdentifier = \"decor--forms--text-area\";\nexport const Decor__Forms__TextFieldControllerIdentifier = \"decor--forms--text-field\";\nexport const Decor__MapControllerIdentifier = \"decor--map\";\nexport const Decor__ModalCloseButtonControllerIdentifier = \"decor--modal-close-button\";\nexport const Decor__ModalControllerIdentifier = \"decor--modal\";\nexport const Decor__ModalOpenButtonControllerIdentifier = \"decor--modal-open-button\";\nexport const Decor__NotificationManagerControllerIdentifier = \"decor--notification-manager\";\nexport const Decor__SearchAndFilterControllerIdentifier = \"decor--search-and-filter\";\nexport const Decor__Tables__DataTableCellControllerIdentifier = \"decor--tables--data-table-cell\";\nexport const Decor__Tables__DataTableControllerIdentifier = \"decor--tables--data-table\";\nexport const Decor__Tables__DataTableHeaderCellControllerIdentifier = \"decor--tables--data-table-header-cell\";\nexport const Decor__Tables__DataTableHeaderRowControllerIdentifier = \"decor--tables--data-table-header-row\";\nexport const Decor__Tables__DataTableRowControllerIdentifier = \"decor--tables--data-table-row\";\nexport const Decor__TabsControllerIdentifier = \"decor--tabs\";\nexport const Decor__TooltipControllerIdentifier = \"decor--tooltip\";\nexport const Mercor__Carts__CartItemControllerIdentifier = \"mercor--carts--cart-item\";\nexport const Mercor__CatalogManagement__PriceEditControllerIdentifier = \"mercor--catalog-management--price-edit\";\nexport const Mercor__CatalogManagement__SubmitPriceUpdateControllerIdentifier = \"mercor--catalog-management--submit-price-update\";\nexport const Mercor__DeliveryCutOffPillControllerIdentifier = \"mercor--delivery-cut-off-pill\";\nexport const Mercor__DeliveryDateCalendarControllerIdentifier = \"mercor--delivery-date-calendar\";\nexport const Mercor__DeliveryDateSelectControllerIdentifier = \"mercor--delivery-date-select\";\nexport const Mercor__NavbarControllerIdentifier = \"mercor--navbar\";\nexport const Mercor__OrderGuideControllerIdentifier = \"mercor--order-guide\";\nexport const Mercor__OrderGuideRowControllerIdentifier = \"mercor--order-guide-row\";\nexport const Mercor__OrderManagement__BreakdownRemoveItemControllerIdentifier = \"mercor--order-management--breakdown-remove-item\";\nexport const Mercor__OrderManagement__InputFinalDetailsConfirmationControllerIdentifier = \"mercor--order-management--input-final-details-confirmation\";\nexport const Mercor__OrderManagement__InputFinalDetailsFormControllerIdentifier = \"mercor--order-management--input-final-details-form\";\nexport const Mercor__OrderManagement__ModifyOrderFormControllerIdentifier = \"mercor--order-management--modify-order-form\";\nexport const Mercor__ProductCategoryFilterTierControllerIdentifier = \"mercor--product-category-filter-tier\";\nexport const Mercor__ProductCategoryFiltersControllerIdentifier = \"mercor--product-category-filters\";\nexport const Mercor__ProductLightboxControllerIdentifier = \"mercor--product-lightbox\";\nexport const Mercor__ProductNavigationControllerIdentifier = \"mercor--product-navigation\";\nexport const Mercor__ProductNavigationTierControllerIdentifier = \"mercor--product-navigation-tier\";\nexport const Mercor__PurchaseConfigurator__AddNoteControllerIdentifier = \"mercor--purchase-configurator--add-note\";\nexport const Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier = \"mercor--purchase-configurator--extra-info\";\nexport const Mercor__PurchaseConfigurator__QuantityCalculatorControllerIdentifier = \"mercor--purchase-configurator--quantity-calculator\";\nexport const Mercor__PurchaseConfigurator__UomPricingDetailsControllerIdentifier = \"mercor--purchase-configurator--uom-pricing-details\";\nexport const Mercor__PurchaseConfiguratorControllerIdentifier = \"mercor--purchase-configurator\";\nexport const Mercor__ReportFiltersControllerIdentifier = \"mercor--report-filters\";\nexport const Mercor__ServiceabilityDropdownControllerIdentifier = \"mercor--serviceability-dropdown\";\nexport const Mercor__ShoppingCartDropdownControllerIdentifier = \"mercor--shopping-cart-dropdown\";\nexport const Mercor__SidebarFiltersControllerIdentifier = \"mercor--sidebar-filters\";\nexport const Navigo__BreadcrumbsControllerIdentifier = \"navigo--breadcrumbs\";\nexport const Navigo__SideNavbarControllerIdentifier = \"navigo--side-navbar\";\nexport const Navigo__SideNavbarItemControllerIdentifier = \"navigo--side-navbar-item\";\nexport const Navigo__SideNavbarSectionControllerIdentifier = \"navigo--side-navbar-section\";\nexport const Navigo__SideNavbarSubItemControllerIdentifier = \"navigo--side-navbar-sub-item\";\nexport const Navigo__TopNavbarControllerIdentifier = \"navigo--top-navbar\";\n\nexport const Base__NotificationsControllerIdentifier = \"base--notifications\";\nexport const Base__NotificationsEmitterControllerIdentifier = \"base--notifications-emitter\";\nexport const Base__TimeagoControllerIdentifier = \"base--timeago\";\nexport const Catalogs__PriceModifierControllerIdentifier = \"catalogs--price-modifier\";\nexport const Entities__EntityFormControllerIdentifier = \"entities--entity-form\";\nexport const Entities__EntityUserFormControllerIdentifier = \"entities--entity-user-form\";\nexport const Layouts__MessageThreads__AssigneeControllerIdentifier = \"layouts--message-threads--assignee\";\nexport const Layouts__MessageThreads__DynamicMessagesControllerIdentifier = \"layouts--message-threads--dynamic-messages\";\nexport const Layouts__MessageThreads__MessageItemControllerIdentifier = \"layouts--message-threads--message-item\";\nexport const Layouts__MessageThreads__SelectToggleControllerIdentifier = \"layouts--message-threads--select-toggle\";\nexport const Layouts__MessageThreads__UnreadItemControllerIdentifier = \"layouts--message-threads--unread-item\";\nexport const Layouts__MessageThreads__UnreadMessagesControllerIdentifier = \"layouts--message-threads--unread-messages\";\nexport const Layouts__Registration__Step1ControllerIdentifier = \"layouts--registration--step1\";\nexport const Serviceability__RouteFormControllerIdentifier = \"serviceability--route-form\";\nexport const Util__DevFormFillControllerIdentifier = \"util--dev-form-fill\";\n\nexport const Decor__ErrorLocationsExampleControllerIdentifier = \"decor--error-locations-example\";\nexport const Decor__FlashExamplesControllerIdentifier = \"decor--flash-examples\";\nexport const Decor__FormExamplesFlashControllerIdentifier = \"decor--form-examples-flash\";\nexport const Decor__RefreshPopupExampleControllerIdentifier = \"decor--refresh-popup-example\";\n", "/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n", "/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n", "import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;", "import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };", "import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };", "import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };", "import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };", "import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}", "import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}", "/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};", "export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}", "import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}", "import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}", "export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}", "import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}", "export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}", "export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}", "export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}", "import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}", "import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};", "import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}", "export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}", "export default function minTranslate() {\n return -this.snapGrid[0];\n}", "export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}", "import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}", "import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};", "export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}", "export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}", "import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}", "import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}", "import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};", "import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}", "export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}", "import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}", "import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}", "export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}", "export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}", "import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};", "export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}", "export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}", "import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}", "import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}", "export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}", "export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}", "export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}", "import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};", "import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}", "import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}", "import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};", "function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}", "export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}", "import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}", "export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}", "import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};", "function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};", "export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};", "import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}", "/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;", "import BaseController from \"decor/base_controller\";\n// Import only core, import { Swiper } from \"swiper\"; seems to still bring\n// into bundle all of swiper, not just Swiper core\n// @ts-ignore\nimport Swiper from \"swiper/core/core.js\";\n\nexport default class CarouselController extends BaseController {\n private carousel?: Swiper = undefined;\n\n public onInitialize() {\n this.onConnect(() => {\n this.element.classList.remove(\"hidden\");\n const perView = window.innerWidth > 600 ? 3 : 1.25;\n const desired = this.data.get(\"slidesPerView\");\n this.carousel = new Swiper(this.element as HTMLElement, {\n slidesPerView: desired\n ? parseFloat(this.data.get(\"slidesPerView\")!)\n : perView,\n centeredSlides: true,\n spaceBetween: 16,\n });\n });\n\n return super.onInitialize();\n }\n\n public previous() {\n this.carousel!.slidePrev();\n }\n\n public next() {\n this.carousel!.slideNext();\n }\n}\n", "import axios from \"lib/axios\";\nimport BaseController from \"decor/base_controller\";\nimport { localeMessage } from \"lib/i18n\";\nimport { markAsSafeHTML, safelySetInnerHTML } from \"lib/util/safe_html\";\nimport { SafeHTMLContent } from \"lib/types\";\n\nexport interface NotificationShowOptions {\n content?: SafeHTMLContent;\n timeout?: number;\n contentHref?: string;\n}\nexport interface NotificationDismissOptions {\n id: string;\n}\nexport type NotificationShowEvent = CustomEvent;\n\nexport type NotificationDismissEvent = CustomEvent;\n\ntype NotificationElement = HTMLDivElement;\n\nexport const NOTIFICATION_MANAGER_CLASS_NAME = \"decor--notification-manager\";\n\nconst NOTIFICATION_CLASSNAME = `${NOTIFICATION_MANAGER_CLASS_NAME}-notification`;\n\nconst DEFAULT_DISMISS_AFTER_MS = 3000;\nconst DISMISS_ALL_STAGGER_MS = 50;\n\nexport default class NotificationManagerController extends BaseController {\n public static targets = [\"notificationContainer\"];\n\n private declare readonly notificationContainerTarget: HTMLDivElement;\n\n public static classes = [\n \"notificationBase\",\n \"entering\",\n \"enteringFrom\",\n \"enteringTo\",\n \"leaving\",\n \"leavingFrom\",\n \"leavingTo\",\n ];\n\n protected declare readonly notificationBaseClasses: string[];\n protected declare readonly enteringClasses: string[];\n protected declare readonly enteringFromClasses: string[];\n protected declare readonly enteringToClasses: string[];\n protected declare readonly leavingClasses: string[];\n protected declare readonly leavingFromClasses: string[];\n protected declare readonly leavingToClasses: string[];\n\n private currentNotificationId = 0;\n\n public onInitialize() {\n this.onConnect(() => {\n const notifications = this.getOptionalDataAttrAsJSON<\n NotificationShowOptions[]\n >(\"initialNotifications\");\n if (notifications) {\n notifications.forEach((notificationOptions) => {\n this.showNotification(notificationOptions);\n });\n }\n });\n\n return super.onInitialize();\n }\n\n public async handleShowEvent(evt: NotificationShowEvent) {\n this.showNotification(evt.detail);\n }\n\n public async showNotification(options: NotificationShowOptions) {\n const { content, timeout, contentHref } = options;\n const notification = await this.createNotification(content, contentHref);\n const showTimeout = timeout || DEFAULT_DISMISS_AFTER_MS;\n if (showTimeout !== Infinity) {\n const timerId = window.setTimeout(\n () => this.dismissNotification(notification.id),\n showTimeout,\n );\n notification.dataset.dismissTimerId = timerId.toString();\n }\n // .prepend() not available in IE11\n // this.element.prepend(notification);\n this.notificationContainerTarget.insertBefore(\n notification,\n this.notificationContainerTarget.firstChild,\n );\n\n notification.addEventListener(\"click\", () => {\n this.dismissNotification(notification.id);\n });\n\n notification.addEventListener(\"touchend\", () => {\n this.dismissNotification(notification.id);\n });\n }\n\n public handleDismissAllEvent() {\n // This isn't exactly the 'stimulus way' - we should probably be using targets instead.\n // But, it works.\n Array.from(\n this.notificationContainerTarget.getElementsByClassName(\n NOTIFICATION_CLASSNAME,\n ),\n )\n .reverse() // Bottom notification should disappear first\n .forEach((node, idx) => {\n const el = node as NotificationElement;\n clearTimeout(+el.dataset.dismissTimerId!);\n setTimeout(\n () => this.dismissNotification(el.id),\n idx * DISMISS_ALL_STAGGER_MS,\n );\n });\n }\n\n public handleDismissSingleEvent(evt: NotificationDismissEvent) {\n const {\n detail: { id },\n } = evt;\n this.dismissNotification(id);\n }\n\n private nextNotificationId() {\n const next = this.currentNotificationId + 1;\n this.currentNotificationId = next;\n return `${NOTIFICATION_CLASSNAME}-${next}`;\n }\n\n private async createNotification(\n content: SafeHTMLContent | undefined,\n contentHref: string | undefined,\n ): Promise {\n const notification = document.createElement(\"div\");\n notification.id = this.nextNotificationId();\n this.setTargetElementClasses(\n notification,\n [],\n [NOTIFICATION_CLASSNAME].concat(this.notificationBaseClasses),\n );\n this.toggleTargetElementTransitionClasses(\n notification,\n true,\n this.enteringClasses,\n this.enteringFromClasses,\n this.enteringToClasses,\n this.leavingClasses,\n this.leavingFromClasses,\n this.leavingToClasses,\n );\n\n if (contentHref) {\n // TODO: What if contentHref already has a query string parameters?\n const remoteContent = await this.getRemoteContent(\n `${contentHref}?notification_id=${notification.id}`,\n );\n safelySetInnerHTML(notification, remoteContent);\n } else if (content) {\n safelySetInnerHTML(notification, content);\n }\n\n return notification;\n }\n\n private getRemoteContent(contentHref: string): Promise {\n return this.getContent(contentHref).catch((err) => {\n console.warn(err);\n const errorMessage = localeMessage(\"generic_server_error\");\n return markAsSafeHTML(errorMessage);\n });\n }\n\n private getContent(url: string): Promise {\n return axios\n .get(url, {\n headers: {\n \"Content-Type\": \"text/html\",\n },\n })\n .then((response) => markAsSafeHTML(response.data));\n }\n\n private dismissNotification(notificationId: string) {\n // Only try to dismiss the notification if it is still in the DOM,\n // and it is not being dismissed\n const notification = document.getElementById(notificationId);\n if (notification) {\n this.toggleTargetElementTransitionClasses(\n notification,\n false,\n this.enteringClasses,\n this.enteringFromClasses,\n this.enteringToClasses,\n this.leavingClasses,\n this.leavingFromClasses,\n this.leavingToClasses,\n );\n setTimeout(() => {\n this.removeNotification(notification);\n }, 150);\n }\n }\n\n private removeNotification(target: HTMLElement) {\n // .remove() not available in IE11\n // target.remove();\n if (this.notificationContainerTarget.contains(target)) {\n this.notificationContainerTarget.removeChild(target);\n }\n }\n}\n", "import {\n NOTIFICATION_MANAGER_CLASS_NAME,\n NotificationDismissOptions,\n NotificationShowOptions,\n} from \"decor/notification_manager_controller\";\n\nexport function showNotification(opts: NotificationShowOptions) {\n const evt = new CustomEvent(`${NOTIFICATION_MANAGER_CLASS_NAME}:show`, {\n bubbles: true,\n cancelable: false,\n detail: opts,\n });\n window.dispatchEvent(evt);\n}\n\nexport function dismissAllNotifications() {\n const evt = new CustomEvent(`${NOTIFICATION_MANAGER_CLASS_NAME}:dismissAll`, {\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(evt);\n}\n\nexport function dismissSingleNotification(opts: NotificationDismissOptions) {\n const evt = new CustomEvent(`${NOTIFICATION_MANAGER_CLASS_NAME}:dismiss`, {\n bubbles: true,\n cancelable: false,\n detail: opts,\n });\n window.dispatchEvent(evt);\n}\n", "import BaseController from \"decor/base_controller\";\nimport { showNotification } from \"lib/overlay/notification\";\nimport { markAsSafeHTML } from \"lib/util/safe_html\";\n\nexport default class ClickToCopyController extends BaseController {\n public static readonly targets = [\"content\"];\n\n public declare readonly contentTarget: HTMLDivElement;\n\n public copy() {\n this.selectText();\n showNotification({\n content: markAsSafeHTML(\"

Copied!

\"),\n timeout: 1000,\n });\n }\n\n private selectText() {\n const range = document.createRange();\n range.selectNodeContents(this.contentTarget);\n\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n\n document.execCommand(\"copy\");\n selection.removeAllRanges();\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { SafeHTMLContent } from \"lib/types\";\nimport { localeMessage } from \"lib/i18n\";\nimport { markAsSafeHTML, safelySetInnerHTML } from \"lib/util/safe_html\";\nimport { replaceContentsWithChildren } from \"lib/util/replace_with_dom_nodes\";\nimport axios from \"lib/axios\";\n\nexport default class DropdownController extends BaseController {\n public static targets = [\"menu\", \"button\"];\n\n private declare readonly menuTarget: HTMLDivElement;\n private declare readonly buttonTarget: HTMLButtonElement;\n private declare readonly hasButtonTarget: boolean;\n\n public static classes = [\n \"entering\",\n \"enteringFrom\",\n \"enteringTo\",\n \"leaving\",\n \"leavingFrom\",\n \"leavingTo\",\n ];\n\n protected declare readonly enteringClasses: string[];\n protected declare readonly enteringFromClasses: string[];\n protected declare readonly enteringToClasses: string[];\n protected declare readonly leavingClasses: string[];\n protected declare readonly leavingFromClasses: string[];\n protected declare readonly leavingToClasses: string[];\n\n private shown: boolean = false;\n\n public toggle(event: Event) {\n if (this.shown) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n public hideOnClickOutside(event?: Event) {\n if (!this.shown) {\n return;\n }\n // If the menu itself is clicked, we don't want to hide the menu.\n if (event && this.menuTarget.contains(event.target as Node)) {\n return;\n }\n if (\n event &&\n this.hasButtonTarget &&\n this.buttonTarget.contains(event.target as Node)\n ) {\n return;\n }\n this.hide();\n }\n\n public hide() {\n this.displayMenu(false);\n this.shown = false;\n }\n\n public show() {\n this.prepareContent();\n this.displayMenu(true);\n this.shown = true;\n }\n\n private displayMenu(state: boolean) {\n this.toggleTargetElementTransitionClasses(\n this.menuTarget,\n state,\n this.enteringClasses,\n this.enteringFromClasses,\n this.enteringToClasses,\n this.leavingClasses,\n this.leavingFromClasses,\n this.leavingToClasses,\n this.leaveTimeout(),\n );\n }\n\n private leaveTimeout() {\n const val = this.data.get(\"leaveTimeout\");\n if (val == null) {\n return;\n }\n return parseInt(val, 10);\n }\n\n protected async prepareContent() {\n const contentHref = this.getOptionalDataAttr(\"contentHref\");\n const placeholder = this.getOptionalDataAttr(\"placeholder\");\n if (placeholder) {\n this.setContent(markAsSafeHTML(placeholder));\n }\n if (contentHref) {\n this.getContent(contentHref)\n .then((c) => {\n this.setContent(c);\n })\n .catch((err) => {\n console.error(\n \"Could not fetch content for dropdown\",\n contentHref,\n err,\n );\n const errorMessage = localeMessage(\"generic_server_error\");\n this.setContent(markAsSafeHTML(errorMessage));\n });\n }\n }\n\n private async getContent(contentHref: string): Promise {\n return axios\n .get(contentHref, {\n headers: {\n \"Content-Type\": \"text/html\",\n },\n })\n .then((response) => {\n return markAsSafeHTML(response.data);\n });\n }\n\n private setContent(content: SafeHTMLContent) {\n replaceContentsWithChildren(this.menuTarget, this.createContent(content));\n }\n\n private createContent(content: SafeHTMLContent) {\n const contentContainer = document.createElement(\"div\");\n contentContainer.id = `${this.element.id}-content`;\n\n // We likely want to allow arbitrary HTML here so that the dialog content can be formatted appropriately, and allow things like other MDC components to be rendered inside.\n // The problem with allowing arbitrary HTML to be rendered is that it opens the possibility of a XSS attack.\n // To try and mitigate this issue, we ask that the developer explicitly wraps the content inside an object with a `__safe` property.\n // Of course, this can't guarantee that a developer is passing safe content, but it at least gets them thinking about the dangers of XSS when pushing content to be displayed.\n // https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)\n safelySetInnerHTML(contentContainer, content);\n\n return contentContainer;\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { replaceContentsWithChildren } from \"lib/util/replace_with_dom_nodes\";\nimport { FlashShowEvent } from \"lib/types\";\n\nconst INITIAL_CLASSES = \"invisible opacity-0\";\nconst VISIBLE_CLASSES = \"transition-opacity duration-300 opacity-100 visible\";\nconst COLLAPSED_CLASS = \"hidden\";\nconst TEXT_CLASS = \"c-text-subtitle\";\n\nexport default class FlashController extends BaseController {\n private hidden: boolean = true;\n\n public onInitialize() {\n this.onConnect(() => {\n if (this.data.get(\"showInitial\")) {\n this.hidden = false;\n this.reveal();\n }\n });\n\n return super.onInitialize();\n }\n\n public handleCloseEvent() {\n this.hide();\n }\n\n // Reveal by calling:\n // window.dispatchEvent(new CustomEvent(\"cnf-flash:show\", { detail: { message } }));\n public async handleShowEvent(evt: Event) {\n const {\n detail: { message, timeout },\n } = evt as FlashShowEvent;\n this.showFlashMessage(message, timeout);\n }\n\n public get isRevealed() {\n return !this.hidden;\n }\n\n public set text(text: string) {\n const p = document.createElement(\"p\");\n TEXT_CLASS.split(\" \").forEach((cl) => p.classList.add(cl));\n p.textContent = text;\n this.content = p;\n }\n\n public renderHeadingWithListContent(heading: string, items: string[]) {\n const headingNode = this.createHeading(heading);\n\n const listNode = document.createElement(\"ul\");\n items.forEach((item) => {\n const listItemNode = document.createElement(\"li\");\n listItemNode.textContent = item;\n listNode.appendChild(listItemNode);\n });\n\n this.content = [headingNode, listNode];\n }\n\n public showFlashMessage = (text: string, timeout?: number) => {\n this.text = text;\n this.reveal(timeout);\n };\n\n public reveal = (timeout?: number) => {\n this.removeInitialClass();\n this.addVisibleClasses();\n this.removeCollapsedClasses();\n if (timeout) {\n setTimeout(this.hide, timeout);\n }\n this.hidden = false;\n this.element.removeAttribute(\"hidden\");\n };\n\n public hide = () => {\n this.removeVisibleClasses();\n this.addInitialClasses();\n this.hidden = true;\n this.element.setAttribute(\"hidden\", \"hidden\");\n };\n\n public toggle = () => {\n if (this.hidden) {\n this.reveal();\n } else {\n this.hide();\n }\n };\n\n private removeVisibleClasses() {\n VISIBLE_CLASSES.split(\" \").forEach((cl) =>\n this.element.classList.remove(cl),\n );\n }\n\n private addVisibleClasses() {\n VISIBLE_CLASSES.split(\" \").forEach((cl) => this.element.classList.add(cl));\n }\n\n private removeCollapsedClasses() {\n COLLAPSED_CLASS.split(\" \").forEach((cl) =>\n this.element.classList.remove(cl),\n );\n }\n\n private removeInitialClass() {\n INITIAL_CLASSES.split(\" \").forEach((cl) =>\n this.element.classList.remove(cl),\n );\n }\n\n private addInitialClasses() {\n INITIAL_CLASSES.split(\" \").forEach((cl) => this.element.classList.add(cl));\n }\n\n private createHeading(content: string) {\n const heading = document.createElement(\"h2\");\n heading.classList.add(\"c-h7\");\n heading.textContent = content;\n return heading;\n }\n\n private set content(children: Node | Node[]) {\n replaceContentsWithChildren(this.element, children);\n }\n}\n", "// Inspired heavily by https://github.com/cferdinandi/bouncer\nexport interface ValueRequiredAttributes {\n required: boolean;\n value: string;\n}\n\nexport interface CheckableValueRequiredAttributes {\n required: boolean;\n checked: boolean;\n}\n\nexport interface PatternMismatchAttributes {\n pattern: string | null;\n type: string;\n value: string;\n}\n\nexport interface OutOfRangeAttributes {\n min: string | null;\n max: string | null;\n lt: string | null;\n gt: string | null;\n value: string;\n}\n\nexport interface WrongLengthAttributes {\n min: string | null;\n max: string | null;\n value: string;\n}\n\nexport interface ITypeMismatchAttributes {\n type: string | null;\n value: string;\n}\n\ninterface PatternType {\n [key: string]: RegExp;\n}\ntype RangeResponseType = false | \"over\" | \"under\" | \"invalid\";\n\nconst PATTERNS: PatternType = {\n color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,\n date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))/,\n email:\n /^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*(\\.\\w{2,})+$/,\n month: /^(?:(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])))$/,\n number: /^(?:[-+]?[0-9]*[.,]?[0-9]+)$/,\n time: /^(?:(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]))$/,\n url: /^(?:(?:https?|HTTPS?|ftp|FTP):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-zA-Z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/,\n};\n\nexport function missingValue(attrs: ValueRequiredAttributes): boolean {\n return attrs.required && !attrs.value.length;\n}\n\nexport function missingCheckboxValue(\n attrs: CheckableValueRequiredAttributes,\n): boolean {\n return attrs.required && !attrs.checked;\n}\n\nexport function missingRadioValue(\n attrs: CheckableValueRequiredAttributes[],\n): boolean {\n // Any is required && none are checked\n return (\n attrs.some((attr) => attr.required) && attrs.every((attr) => !attr.checked)\n );\n}\n\nexport function patternMismatch(attrs: PatternMismatchAttributes): boolean {\n const { pattern, type, value } = attrs;\n\n // Make sure field has value\n if (!value) {\n return false;\n }\n\n // TODO since we are dynamically creating a regex, there's a possibility this could cause a Regex DOS.\n // We could alleviate this through a package such as https://github.com/davisjam/safe-regex\n // Not including at present as currently we are in charge of the field pattern passed in\n // (it will most likely be the value from `pattern=\"\"` on a HTML element)\n const chosenPattern = pattern\n ? new RegExp(\"^(?:\" + pattern + \")$\")\n : PATTERNS[type];\n if (!chosenPattern) {\n return false;\n }\n\n return !value.match(chosenPattern);\n}\nexport function outOfRange(attrs: OutOfRangeAttributes): RangeResponseType {\n const { max, min, gt, lt, value } = attrs;\n\n // Make sure field has value\n if (!value) {\n return false;\n }\n\n // Should be a number\n if (\n (gt !== null || lt !== null || min !== null || max !== null) &&\n !value.match(PATTERNS[\"number\"])\n ) {\n return \"invalid\";\n }\n\n // Check validity\n const num = parseFloat(value);\n\n // Check that the value is not less than or equal to the gt\n if (gt !== null && num <= parseFloat(gt)) {\n return \"under\";\n }\n // Check that value is not greater than or equal to the lt\n if (lt !== null && num >= parseFloat(lt)) {\n return \"over\";\n }\n // Check that the value is not less than the min\n if (gt === null && min !== null && num < parseFloat(min)) {\n return \"under\";\n }\n // Check that value is not greater than the max\n if (lt === null && max !== null && num > parseFloat(max)) {\n return \"over\";\n }\n return false;\n}\n\nexport function wrongLength(attrs: WrongLengthAttributes): RangeResponseType {\n const { max, min, value } = attrs;\n\n // Make sure field has value\n if (!value) {\n return false;\n }\n\n // Check validity\n const { length } = value;\n if (max !== null && length > parseFloat(max)) {\n return \"over\";\n }\n if (min !== null && length < parseFloat(min)) {\n return \"under\";\n }\n return false;\n}\n\nexport function typeMismatch(attrs: ITypeMismatchAttributes): boolean {\n const { type, value } = attrs;\n\n // Make sure field has value\n if (!value) {\n return false;\n }\n\n // Check for the type\n switch (type) {\n case \"number\": {\n // Mismatch if we can't parse it as a float\n const parsed = parseFloat(value);\n return Number.isNaN(parsed);\n }\n case \"boolean\": {\n // Mismatch if the value isn't 'true' or 'false'\n const normalised = value.toLowerCase().trim();\n return normalised !== \"true\" && normalised !== \"false\";\n }\n default:\n // Never a mismatch\n return false;\n }\n}\n", "import {\n FormControlElement,\n FormControlErrors,\n FormControlValidationResponse,\n} from \"lib/types\";\n\nimport BaseController from \"decor/base_controller\";\nimport {\n missingCheckboxValue,\n missingRadioValue,\n missingValue,\n outOfRange,\n patternMismatch,\n typeMismatch,\n wrongLength,\n} from \"lib/util/form_validators\";\n\nconst NO_ERRORS: FormControlErrors = {\n missingValue: false,\n outOfRange: false,\n patternMismatch: false,\n typeMismatch: false,\n wrongLength: false,\n};\n\n// Form controls such as 'input' and 'select' have this controller, though\n// its use is usually constraint to be within a form-field component, such as\n// 'switch'.\nexport default class FormControlController extends BaseController {\n // TODO state management in stimulus should be in the DOM\n private listening = false;\n private touched = false;\n\n public onInitialize() {\n this.onDisconnect(() => {\n this.autoValidation = false;\n });\n return super.onInitialize();\n }\n\n public set autoValidation(shouldAutoValidate: boolean) {\n // By default, a form control will not validate itself on input/blur.\n // This is an opt-in arrangement by calling this setter.\n // Typically this is done by a parent form controller so that\n // form controls are only validated when they are part of a form.\n if (shouldAutoValidate) {\n this.setupEventListeners();\n } else {\n this.teardownEventListeners();\n }\n }\n\n public validate() {\n const errors = this.validationErrors;\n const valid = Object.values(errors).every((e) => e === false);\n\n if (!valid) {\n this.formControlElement.setCustomValidity(\"invalid\");\n }\n\n this.touched = true;\n this.emitValidationEvent({ errors, valid });\n\n return { errors, valid };\n }\n\n public focusControl() {\n const el = this.formControlElement;\n el.focus();\n }\n\n public get formControlElement() {\n return this.element as FormControlElement;\n }\n\n public get required() {\n return this.element.hasAttribute(\"required\");\n }\n\n public set required(required: boolean) {\n if (required) {\n this.element.setAttribute(\"required\", \"required\");\n } else {\n this.element.removeAttribute(\"required\");\n }\n }\n\n private get validationErrors(): FormControlErrors {\n if (this.disabled) {\n // If the form field is disabled, it won't be sent to the server.\n // So, let's not validate it.\n return { ...NO_ERRORS };\n }\n\n // Validations TODO: (http://parsleyjs.org/doc/index.html#validators)\n // - check / mincheck / maxcheck (e.g. at least 2 checkboxes)\n // - equalto (another control, e.g. confirm password)\n return {\n missingValue: this.missingValueError,\n outOfRange: this.outOfRangeError,\n patternMismatch: this.patternMismatchError,\n typeMismatch: this.typeMismatchError,\n wrongLength: this.wrongLengthError,\n };\n }\n\n private emitValidationEvent({\n errors,\n valid,\n }: FormControlValidationResponse) {\n this.dispatch(\"validated\", {\n bubbles: true,\n cancelable: false,\n detail: {\n errors,\n valid,\n },\n });\n }\n\n private setupEventListeners() {\n if (this.listening) {\n // Don't want to set these up again!\n return;\n }\n\n this.element.addEventListener(\"input\", this.handleInputEvent);\n this.element.addEventListener(\"focus\", this.handleFocusEvent);\n this.element.addEventListener(\"blur\", this.handleBlurEvent);\n this.listening = true;\n }\n\n private teardownEventListeners() {\n if (!this.listening) {\n // Nothing to do.\n return;\n }\n\n this.element.removeEventListener(\"input\", this.handleInputEvent);\n this.element.removeEventListener(\"blur\", this.handleBlurEvent);\n this.listening = false;\n }\n\n private handleInputEvent = () => {\n if (this.touched) {\n this.validate();\n }\n };\n\n private handleFocusEvent = () => {\n if (this.formControlElement.value) {\n this.touched = true;\n }\n };\n\n private handleBlurEvent = () => {\n this.validate();\n };\n\n private get missingValueError() {\n const el = this.formControlElement;\n switch (el.type) {\n case \"radio\": {\n const inputGroup = Array.from(document.getElementsByTagName(\"input\"));\n const radioGroup = inputGroup.filter(\n (input) => input.getAttribute(\"name\") === el.getAttribute(\"name\"),\n );\n const radioAttributes = radioGroup.map(this.mapCheckableAttributes);\n return missingRadioValue(radioAttributes);\n }\n case \"checkbox\": {\n const checkboxAttributes = this.mapCheckableAttributes(\n el as HTMLInputElement,\n );\n return missingCheckboxValue(checkboxAttributes);\n }\n default:\n return missingValue({\n required: el.hasAttribute(\"required\"),\n value: el.value,\n });\n }\n }\n\n private get outOfRangeError() {\n const el = this.formControlElement;\n const attributes = {\n gt: this.data.get(\"validate-gt\"),\n lt: this.data.get(\"validate-lt\"),\n max: el.getAttribute(\"max\"),\n min: el.getAttribute(\"min\"),\n value: el.value,\n };\n return outOfRange(attributes);\n }\n\n private get patternMismatchError() {\n const el = this.formControlElement;\n const attributes = {\n pattern: el.getAttribute(\"pattern\"),\n type: el.type,\n value: el.value,\n };\n return patternMismatch(attributes);\n }\n\n private get wrongLengthError() {\n const el = this.formControlElement;\n const attributes = {\n max: el.getAttribute(\"maxlength\"),\n min: el.getAttribute(\"minlength\"),\n value: el.value,\n };\n return wrongLength(attributes);\n }\n\n private get typeMismatchError() {\n const el = this.formControlElement;\n const attributes = {\n type: this.data.get(\"validate-type\"),\n value: el.value,\n };\n return typeMismatch(attributes);\n }\n\n private mapCheckableAttributes(field: HTMLInputElement) {\n return {\n checked: field.checked,\n required: field.hasAttribute(\"required\"),\n };\n }\n}\n", "interface IValidationMessageVariables {\n [key: string]: string;\n}\n\nconst RAILS_I18N_MESSAGE_REGEX = /%{([\\s\\S]+?)}/g;\n\nexport function generateFormValidationMessage(\n message: string,\n variables: IValidationMessageVariables = {},\n) {\n return message.replace(\n RAILS_I18N_MESSAGE_REGEX,\n (m, $1) => variables[$1] || \"\",\n );\n}\n", "import {\n Decor__Forms__ErrorIconSectionControllerIdentifier,\n Decor__Forms__HelperTextSectionControllerIdentifier,\n} from \"controllers/identifiers\";\nimport BaseController from \"decor/base_controller\";\nimport HelperTextSectionController from \"./helper_text_section_controller\";\nimport ErrorIconSectionController from \"./error_icon_section_controller\";\n\nexport default class FormFieldLayoutController extends BaseController {\n public static outlets = [\n Decor__Forms__HelperTextSectionControllerIdentifier,\n Decor__Forms__ErrorIconSectionControllerIdentifier,\n ];\n private declare readonly decorFormsHelperTextSectionOutlet: HelperTextSectionController;\n private declare readonly hasDecorFormsHelperTextSectionOutlet: boolean;\n private declare readonly decorFormsErrorIconSectionOutlet: ErrorIconSectionController;\n private declare readonly hasDecorFormsErrorIconSectionOutlet: boolean;\n\n private get hasHelperTextSection() {\n return this.hasDecorFormsHelperTextSectionOutlet;\n }\n private get helperTextSection() {\n return this.decorFormsHelperTextSectionOutlet;\n }\n private get hasErrorIconSection() {\n return this.hasDecorFormsErrorIconSectionOutlet;\n }\n private get errorIconSection() {\n return this.decorFormsErrorIconSectionOutlet;\n }\n\n public static targets = [\"label\"];\n\n protected declare readonly labelTarget: HTMLDivElement;\n protected declare readonly hasLabelTarget: HTMLDivElement;\n\n public static classes = [\"validLabel\", \"invalidLabel\"];\n\n protected declare readonly validLabelClasses: string[];\n protected declare readonly invalidLabelClasses: string[];\n\n public set valid(isValid: boolean) {\n if (this.hasLabelTarget) {\n this.toggleTargetElementClasses(\n this.labelTarget,\n isValid,\n this.invalidLabelClasses,\n this.validLabelClasses,\n );\n }\n if (this.hasHelperTextSection) {\n this.helperTextSection.toggleHelpError = isValid;\n }\n if (this.hasErrorIconSection) {\n this.errorIconSection.show = !isValid;\n }\n }\n\n public set errorTextContent(errorMessage: string | null) {\n if (this.hasHelperTextSection) {\n this.helperTextSection.errorText = errorMessage;\n }\n if (this.hasErrorIconSection) {\n this.errorIconSection.errorText = errorMessage;\n }\n }\n}\n", "import {\n FormControlElement,\n FormControlErrors,\n FormControlValidationEvent,\n FormFieldError,\n} from \"lib/types\";\n\nimport FormControlController from \"decor/forms/form_control_controller\";\nimport { localeMessage } from \"lib/i18n\";\nimport { generateFormValidationMessage } from \"lib/util/form_validation_messages\";\n\nimport BaseController from \"decor/base_controller\";\nimport HelperTextSectionController from \"decor/forms/helper_text_section_controller\";\nimport ErrorIconSectionController from \"decor/forms/error_icon_section_controller\";\nimport FormFieldLayoutController from \"decor/forms/form_field_layout_controller\";\n\nexport default abstract class FormFieldController extends BaseController {\n public static targets = [\"input\", \"container\"];\n\n protected declare readonly inputTarget: HTMLInputElement;\n protected declare readonly hasInputTarget: boolean;\n protected declare readonly containerTarget: HTMLDivElement;\n protected declare readonly hasContainerTarget: HTMLDivElement;\n\n public static classes = [\n \"valid\",\n \"invalid\",\n \"validInput\",\n \"invalidInput\",\n \"validContainer\",\n \"invalidContainer\",\n ];\n protected declare readonly validClasses: string[];\n protected declare readonly invalidClasses: string[];\n protected declare readonly validInputClasses: string[];\n protected declare readonly invalidInputClasses: string[];\n protected declare readonly validContainerClasses: string[];\n protected declare readonly invalidContainerClasses: string[];\n\n // Can be overridden with the 'invalid' class name modifier for this form field.\n protected get invalidClassName() {\n return \"invalid\";\n }\n\n public handleControlValidatedEvent(evt: FormControlValidationEvent) {\n const {\n target,\n detail: { errors, valid },\n } = evt;\n this.handleValidationResponse(target, valid, errors);\n }\n\n public get valid() {\n return this.validate().valid;\n }\n\n public validate() {\n // Ask the form control to carry out the validation.\n const fc = this.fieldControl;\n const { valid, errors: controlErrors } = fc.validate();\n\n // Convert the errors into human-readable and return.\n const errors = this.handleValidationResponse(\n fc.formControlElement,\n valid,\n controlErrors,\n );\n return {\n errors,\n valid,\n };\n }\n\n public focusControl() {\n // Proxy through to field_control.\n this.fieldControl.focusControl();\n }\n\n public get name() {\n return this.inputTarget.name;\n }\n\n public get value() {\n return this.inputTarget.value;\n }\n\n public set value(val: string) {\n this.inputTarget.value = val;\n }\n\n public get disabled() {\n // Proxy through to field_control.\n // May need to override/augment on a case-by-case basis.\n return this.fieldControl.disabled;\n }\n\n public set disabled(value) {\n // Proxy through to field_control.\n // May need to override/augment on a case-by-case basis.\n this.fieldControl.disabled = value;\n this.toggleTargetElementClasses(this.element, value, [], [\"disabled\"]);\n }\n\n public get required() {\n // Proxy through to field_control.\n // May need to override/augment on a case-by-case basis.\n return this.fieldControl.required;\n }\n\n public set required(value) {\n // Proxy through to field_control.\n // May need to override/augment on a case-by-case basis.\n this.fieldControl.required = value;\n }\n\n protected set valid(isValid: boolean) {\n this.toggleTargetElementClasses(\n this.element,\n isValid,\n this.invalidClasses,\n this.validClasses,\n );\n if (this.hasContainerTarget) {\n this.toggleTargetElementClasses(\n this.containerTarget,\n isValid,\n this.invalidContainerClasses,\n this.validContainerClasses,\n );\n }\n if (this.hasInputTarget) {\n this.toggleTargetElementClasses(\n this.inputTarget,\n isValid,\n this.invalidInputClasses,\n this.validInputClasses,\n );\n }\n\n if (this.fieldLayoutControl) {\n this.fieldLayoutControl.valid = isValid;\n }\n }\n\n protected generateErrorMessage(\n customMessageKey: string,\n defaultMessageKey: string,\n values = {},\n ) {\n const rawMessage =\n this.data.get(customMessageKey) ||\n this.generateDefaultMessage(defaultMessageKey);\n return generateFormValidationMessage(rawMessage, values);\n }\n\n private get fieldControl(): FormControlController {\n const fieldControl = this.getSpecificChildController(\n FormControlController,\n );\n if (!fieldControl) {\n throw new Error(\n \"Could not find a form control child inside this form field. Please check the DOM structure.\",\n );\n }\n return fieldControl;\n }\n\n private get fieldLayoutControl() {\n return this.getSpecificChildController(\n FormFieldLayoutController,\n );\n }\n\n private handleValidationResponse(\n fieldControlTarget: FormControlElement,\n isValid: boolean,\n errors: FormControlErrors,\n ) {\n this.valid = isValid;\n const parsedErrors = this.parseErrorMessages(errors);\n\n if (this.fieldLayoutControl) {\n this.fieldLayoutControl.errorTextContent =\n parsedErrors.length > 0 ? parsedErrors[0].message : null;\n }\n\n // Push out an event that a higher controller can respond to\n this.emitFormFieldValidatedEvent(fieldControlTarget, isValid, parsedErrors);\n\n return parsedErrors;\n }\n\n private parseErrorMessages(errors: FormControlErrors): FormFieldError[] {\n const errorResponse = [];\n if (errors.missingValue) {\n errorResponse.push({\n code: \"missingValue\",\n message: this.generateErrorMessage(\n \"validationMessageRequired\",\n \"blank\",\n ),\n });\n }\n if (errors.wrongLength === \"over\") {\n errorResponse.push({\n code: \"lengthOver\",\n message: this.generateErrorMessage(\n \"validationMessageLengthOver\",\n \"invalid\",\n ),\n });\n }\n if (errors.wrongLength === \"under\") {\n errorResponse.push({\n code: \"lengthUnder\",\n message: this.generateErrorMessage(\n \"validationMessageLengthUnder\",\n \"invalid\",\n ),\n });\n }\n if (errors.outOfRange === \"over\") {\n errorResponse.push({\n code: \"rangeOver\",\n message: this.generateErrorMessage(\n \"validationMessageRangeOver\",\n \"invalid\",\n ),\n });\n }\n if (errors.outOfRange === \"under\") {\n errorResponse.push({\n code: \"rangeUnder\",\n message: this.generateErrorMessage(\n \"validationMessageRangeUnder\",\n \"invalid\",\n ),\n });\n }\n // Pattern matching comes last.\n // Numerical values often have a pattern attribute to bring up the correct on-screen keyboard,\n // but in many cases we'd rather the (more specific) range message be displayed first.\n if (errors.patternMismatch) {\n errorResponse.push({\n code: \"patternMismatch\",\n message: this.generateErrorMessage(\n \"validationMessagePatternMismatch\",\n \"invalid\",\n ),\n });\n }\n if (errors.typeMismatch) {\n errorResponse.push({\n code: \"typeMismatch\",\n message: this.generateErrorMessage(\n \"validationMessageTypeMismatch\",\n \"invalid\",\n ),\n });\n }\n return errorResponse;\n }\n\n private generateDefaultMessage(key: string) {\n return `${this.label} ${localeMessage(key)}`;\n }\n\n private get label() {\n const label = this.data.get(\"label\");\n if (!label) {\n throw new Error(`${this.identifier} should define a label attribute`);\n }\n return label;\n }\n\n private emitFormFieldValidatedEvent(\n target: FormControlElement,\n valid: boolean,\n errors: FormFieldError[],\n ) {\n this.dispatch(\"validated\", {\n target,\n bubbles: true,\n cancelable: false,\n detail: {\n errors,\n valid,\n },\n });\n }\n}\n", "import FormFieldController from \"decor/forms/form_field_controller\";\n\nexport default class ButtonRadioGroupController extends FormFieldController {\n public static targets = FormFieldController.targets;\n}\n", "import FormFieldController from \"decor/forms/form_field_controller\";\n\nexport default class CheckboxController extends FormFieldController {\n public set checked(state: boolean) {\n this.inputTarget!.checked = state;\n }\n\n public get checked() {\n return this.inputTarget!.checked;\n }\n}\n", "export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n", "export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n", "export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n", "export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n", "import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n", "\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n", "var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "import { Instance } from \"flatpickr/dist/types/instance\";\n\nexport interface DataAttributes {\n defaultDate: string | undefined;\n maxDate: string;\n minDate: string;\n\n enableDates: string[];\n enableDaysOfWeek: number[];\n\n disableDates: string[];\n disableDaysOfWeek: number[];\n\n altInput: boolean;\n altFormat: string;\n}\n\nfunction dates(dateStrings: string[]): Date[] {\n return dateStrings.map((strDate: string) => new Date(strDate));\n}\n\nfunction sameDates(time1: Date, time2: Date): boolean {\n const date1 = new Date(time1).setHours(0, 0, 0, 0);\n const date2 = new Date(time2).setHours(0, 0, 0, 0);\n\n return date1 === date2;\n}\n\nexport function buildFlatpickrOptions(\n {\n defaultDate,\n maxDate,\n minDate,\n enableDates,\n enableDaysOfWeek,\n disableDates,\n disableDaysOfWeek,\n altInput,\n altFormat,\n }: DataAttributes,\n appendTo?: HTMLElement,\n) {\n const disableDatesArr = dates(disableDates);\n const enableDatesArr = dates(enableDates);\n const options = {\n appendTo,\n altFormat,\n altInput,\n defaultDate,\n disable: [\n (date: Date): boolean => {\n if (disableDatesArr.length === 0 && disableDaysOfWeek.length === 0) {\n return false;\n }\n\n return (\n disableDaysOfWeek.includes(date.getDay()) ||\n disableDatesArr.some((disabledDate: Date) =>\n sameDates(disabledDate, date),\n )\n );\n },\n ],\n enable: [] as ((date: Date) => boolean)[],\n maxDate,\n minDate,\n onChange: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n const dateSelectEvent = new CustomEvent(\"cnf:delivery-date-selected\", {\n bubbles: true,\n cancelable: false,\n detail: {\n selectedDate: selectedDates[0],\n },\n });\n\n instance.input.dispatchEvent(dateSelectEvent);\n },\n onReady: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n if (defaultDate && instance.altInput) {\n instance.altInput.value = instance.formatDate(\n new Date(defaultDate),\n altFormat,\n );\n }\n },\n };\n\n // Will override 'disable' option if specified instantly\n if (enableDatesArr.length > 0 || enableDaysOfWeek.length > 0) {\n options.enable = [\n (date: Date): boolean => {\n return (\n enableDaysOfWeek.includes(date.getDay()) ||\n enableDatesArr.some((enabledDate: Date) =>\n sameDates(enabledDate, date),\n )\n );\n },\n ];\n }\n\n return options;\n}\n", "import flatpickr from \"flatpickr\";\nimport { Instance } from \"flatpickr/dist/types/instance\";\nimport {\n buildFlatpickrOptions,\n DataAttributes,\n} from \"lib/util/build_flatpickr_options\";\nimport FormFieldController from \"decor/forms/form_field_controller\";\n\nexport default class DateCalendarController extends FormFieldController {\n public static targets = [\"datepicker\"];\n\n private declare readonly datepickerTarget: HTMLInputElement;\n\n private datePicker!: Instance | null;\n private ticking = false;\n\n public onInitialize() {\n this.onConnect(() => {\n const dataAttributes =\n this.getRequiredDataAttrAsJSON(\"data\");\n\n // Build flatpickr instance\n const flatpickrOpts = buildFlatpickrOptions(dataAttributes);\n this.datePicker = flatpickr(this.datepickerTarget, flatpickrOpts);\n\n return () => {\n this.datePicker!.destroy();\n this.datePicker = null;\n };\n });\n\n return super.onInitialize();\n }\n\n public scrolled() {\n if (!this.datePicker || !this.datePicker.isOpen) {\n return;\n }\n // The ticking check ensures that this.updateCalendarPosition() is called at most once per animation\n // frame, no matter how many times the scroll event fires.\n if (!this.ticking) {\n window.requestAnimationFrame(() => {\n this.updateCalendarPosition();\n this.ticking = false;\n });\n\n this.ticking = true;\n }\n }\n\n public isOpen() {\n return this.datePicker ? this.datePicker.isOpen : false;\n }\n\n public open() {\n if (this.datePicker) {\n this.datePicker!.open();\n }\n }\n\n public close() {\n if (this.datePicker) {\n this.datePicker!.destroy();\n }\n }\n\n // This updates position of calendar, needed when the calendar is on a modal to ensure it scrolls with the modal.\n private updateCalendarPosition() {\n if (this.datePicker) {\n this.datePicker._positionCalendar();\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class ErrorIconSectionController extends BaseController {\n public static targets = [\"errorText\"];\n\n protected declare readonly errorTextTarget: HTMLDivElement;\n protected declare readonly hasErrorTextTarget: boolean;\n\n public set errorText(errorMessage: string | null) {\n if (!this.hasErrorTextTarget) return;\n\n if (errorMessage) {\n this.errorTextTarget.textContent = errorMessage;\n }\n this.show = errorMessage != null;\n }\n\n public set show(show: boolean) {\n this.toggleTargetElementClasses(this.element, show, [\"hidden\"], []);\n }\n}\n", "import { Decor__Forms__CheckboxControllerIdentifier } from \"controllers/identifiers\";\nimport CheckboxController from \"decor/forms/checkbox_controller\";\nimport FormFieldController from \"decor/forms/form_field_controller\";\n\nexport default class ExpandingCheckboxCollectionController extends FormFieldController {\n public static outlets = [Decor__Forms__CheckboxControllerIdentifier];\n private declare readonly decorFormsCheckboxOutlets: CheckboxController[];\n private get checkboxControllers() {\n return this.decorFormsCheckboxOutlets;\n }\n\n public static targets = [\"showMoreLink\"];\n\n private declare readonly showMoreLinkTarget: HTMLElement;\n\n private showingMore = false;\n\n public onInitialize() {\n this.onConnect(() => {\n this.checkboxControllers.forEach((checkbox) => {\n if (\n checkbox.checked &&\n checkbox.element.classList.contains(\"hideable\")\n ) {\n checkbox.element.classList.remove(\"hidden\");\n }\n });\n });\n\n return super.onInitialize();\n }\n\n public validate() {\n if (!this.data.get(\"required\")) {\n return {\n errors: [],\n valid: true,\n };\n }\n return {\n errors: [\n {\n code: \"missingValue\",\n message: this.generateErrorMessage(\n \"validationMessageRequired\",\n \"blank\",\n ),\n },\n ],\n valid: !!this.checkboxControllers.find((field) => field.checked),\n };\n }\n\n public showMore() {\n this.checkboxControllers.forEach((checkbox) => {\n const classList = checkbox.element.classList;\n if (classList.contains(\"hideable\")) {\n if (checkbox.checked) {\n classList.remove(\"hidden\");\n } else {\n classList.toggle(\"hidden\");\n }\n }\n });\n this.showingMore = !this.showingMore;\n this.showMoreLinkTarget.innerText = this.showingMore\n ? \"Show less...\"\n : \"Show more...\";\n }\n}\n", "import FormFieldController from \"decor/forms/form_field_controller\";\n\nexport default class FileUploadController extends FormFieldController {\n public static classes = [\"image\"];\n\n private declare readonly imageClasses: string[];\n\n public fileSelected(event: Event) {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files[0]) {\n if (input.files[0].size / 1024 / 1024 > this.maxSize) {\n alert(\"Sorry that file is too large\");\n input.value = \"\";\n }\n // If an image type, then show preview\n const container = this.element.getElementsByClassName(\n \"decor--image-upload--image-container\",\n )[0];\n if (container) {\n const reader = new FileReader();\n\n reader.onload = (e) => {\n const image = document.createElement(\"img\") as HTMLImageElement;\n image.classList.add(...this.imageClasses);\n if (e.target && e.target.result) {\n image.src = e.target.result.toString();\n container.replaceChild(image, container.children[0]);\n }\n };\n reader.readAsDataURL(input.files[0]);\n }\n }\n }\n\n private get maxSize() {\n return parseInt(this.getRequiredDataAttr(\"maxSizeInMb\"), 10);\n }\n}\n", "import {\n CustomFormSubmissionEvent,\n FormFieldError,\n FormFieldValidationResponse,\n ValidateFormFieldsEvent,\n} from \"lib/types\";\n\nimport BaseController from \"decor/base_controller\";\nimport FormFieldController from \"decor/forms/form_field_controller\";\nimport { localeMessage } from \"lib/i18n\";\n\nimport FormControlController from \"decor/forms/form_control_controller\";\n\nexport default class FormController extends BaseController {\n public onInitialize() {\n this.onConnect(() => {\n // Disable HTML5 validation, we will handle that ourselves.\n this.element.setAttribute(\"novalidate\", \"true\");\n return () => {\n this.element.removeAttribute(\"novalidate\");\n };\n });\n\n // Ensure all form controls under this form are auto-validated\n // The control will take care of reversing this when it disconnects\n this.onChildControllerConnect((controller: BaseController) => {\n if (controller instanceof FormControlController) {\n controller.autoValidation = true;\n }\n });\n\n return super.onInitialize();\n }\n\n public handleSubmitEvent(evt: Event) {\n const hasInvalidFields = this.performValidation();\n if (hasInvalidFields) {\n // At least one field was invalid.\n // Prevent form submission.\n evt.preventDefault();\n\n // Ensure that the event doesn't propagate.\n // Without this, if data-disable-with is set on the submit button,\n // the button will be disabled even if the form is invalid.\n evt.stopPropagation();\n\n // Ensure any other submission handlers on this form element are skipped\n evt.stopImmediatePropagation();\n }\n }\n\n public handleCustomSubmitEvent(evt: Event) {\n // This event is meant for our eyes only.\n evt.stopPropagation();\n\n const {\n detail: { onSubmissionPrevented },\n } = evt as CustomFormSubmissionEvent;\n\n const hasInvalidFields = this.performValidation();\n if (hasInvalidFields) {\n onSubmissionPrevented();\n } else {\n this.formElement.submit();\n }\n }\n\n public handleValidateFieldsEvent(evt: Event) {\n // This event is meant for our eyes only.\n evt.stopPropagation();\n\n const {\n detail: { onValidated },\n } = evt as ValidateFormFieldsEvent;\n\n const hasInvalidFields = this.performValidation();\n onValidated(!hasInvalidFields);\n }\n\n private get formElement(): HTMLFormElement {\n return this.element as HTMLFormElement;\n }\n\n private get formFieldControllers(): FormFieldController[] {\n return this.getSpecificChildControllers(\n FormFieldController,\n );\n }\n\n private performValidation(): boolean {\n // Validate all fields.\n const { invalidFields, errorMessages } = this.harvestInvalids();\n\n const hasInvalidFields = invalidFields.length > 0;\n\n // Issue an event to say that the entire form was validated.\n // This allows higher controllers the opportunity to display\n // an overall summary of the fields that are in error.\n this.emitValidationEvent({\n errors: errorMessages,\n valid: !hasInvalidFields,\n });\n\n if (hasInvalidFields) {\n // At least one field was invalid.\n // Focus the first field that is in error.\n invalidFields[0].focusControl();\n }\n\n return hasInvalidFields;\n }\n\n private harvestInvalids() {\n let invalidFields: FormFieldController[] = [];\n let errorMessages: FormFieldError[] = [];\n\n this.formFieldControllers.forEach((fc) => {\n if (fc.disabled) {\n // Don't validate any disabled fields.\n return;\n }\n const { valid, errors } = fc.validate();\n if (!valid) {\n invalidFields = [...invalidFields, fc];\n errorMessages = [...errorMessages, ...errors];\n }\n });\n\n return {\n errorMessages,\n invalidFields,\n };\n }\n\n private emitValidationEvent({ errors, valid }: FormFieldValidationResponse) {\n this.dispatch(\"validated\", {\n bubbles: true,\n cancelable: false,\n detail: {\n errors,\n preamble: localeMessage(\"form_invalid_preamble\"),\n valid,\n },\n });\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class HelperTextSectionController extends BaseController {\n public static targets = [\"helperText\", \"errorText\"];\n\n protected declare readonly helperTextTarget: HTMLParagraphElement;\n protected declare readonly hasHelperTextTarget: boolean;\n protected declare readonly errorTextTarget: HTMLDivElement;\n protected declare readonly hasErrorTextTarget: boolean;\n\n public set errorText(errorMessage: string | null) {\n if (!this.hasErrorTextTarget) return;\n\n if (errorMessage) {\n this.errorTextTarget.textContent = errorMessage;\n }\n this.toggleHelpError = errorMessage === null;\n }\n\n public set toggleHelpError(showHelp: boolean) {\n if (this.hasHelperTextTarget) {\n this.toggleTargetElementClasses(\n this.helperTextTarget,\n showHelp &&\n !!(\n this.helperTextTarget.textContent &&\n this.helperTextTarget.textContent.trim() != \"\"\n ),\n [\"hidden\"],\n [],\n );\n }\n\n if (this.hasErrorTextTarget) {\n this.toggleTargetElementClasses(\n this.errorTextTarget,\n showHelp,\n [],\n [\"hidden\"],\n );\n }\n }\n}\n", "import FormFieldController from \"decor/forms/form_field_controller\";\n\nexport default class TextFieldController extends FormFieldController {\n public static targets = [\n \"leadingTextAddOn\",\n \"trailingTextAddOn\",\n ];\n\n protected declare readonly leadingTextAddOnTarget: HTMLSpanElement;\n protected declare readonly trailingTextAddOnTarget: HTMLSpanElement;\n}\n", "import TextFieldController from \"decor/forms/text_field_controller\";\n\nexport default class NumberFieldController extends TextFieldController {}\n", "import FormFieldController from \"decor/forms/form_field_controller\";\n\n// TODO need a radio group for validation.\nexport default class RadioController extends FormFieldController {}\n", "import { SafeHTMLContent } from \"lib/types\";\nimport FormFieldController from \"decor/forms/form_field_controller\";\nimport { markAsSafeHTML, safelySetInnerHTML } from \"lib/util/safe_html\";\n\nexport default class SelectController extends FormFieldController {\n public onInitialize() {\n this.onConnect(() => {\n this.inputTarget.addEventListener(\"change\", this.handleChangeEvent);\n this.styleOption();\n return () => {\n this.inputTarget.removeEventListener(\"change\", this.handleChangeEvent);\n };\n });\n\n return super.onInitialize();\n }\n\n public styleOption() {\n let blankSelected = false;\n for (const option of this.inputTarget.children) {\n const opt = option as HTMLOptionElement;\n const isBlank = this.hasBlankOrPlaceholder && opt.value === \"\";\n if (isBlank && this.value == opt.value) {\n blankSelected = true;\n }\n }\n this.toggleTargetElementClasses(\n this.inputTarget,\n blankSelected,\n [],\n [\"text-disabled\"],\n );\n }\n\n private get hasBlankOrPlaceholder() {\n return this.getOptionalDataAttr(\"hasBlankOrPlaceholder\");\n }\n\n public get optionsHTML() {\n return this.inputTarget.innerHTML;\n }\n\n public set options(options: SafeHTMLContent) {\n safelySetInnerHTML(this.inputTarget, options);\n }\n\n public empty(message: string) {\n this.options = markAsSafeHTML(\n ``,\n );\n }\n\n private handleChangeEvent = (evt: Event) => {\n const name = this.data.get(\"name\");\n const target = evt.target as HTMLSelectElement;\n this.styleOption();\n this.emitEvent(this.element, SelectController, \"change\", {\n name,\n index: target.selectedIndex,\n value: target.value,\n });\n };\n}\n", "import FormFieldController from \"decor/forms/form_field_controller\";\nimport { showConfirmModal } from \"lib/overlay/modal\";\nimport { markAsSafeHTML } from \"lib/util/safe_html\";\nimport { ModalLifecycleEvent } from \"decor/modal_controller\";\nimport FormController from \"decor/forms/form_controller\";\n\nexport default class SwitchController extends FormFieldController {\n public static targets = FormFieldController.targets.concat([\n \"switch\",\n \"slider\",\n \"sliderStart\",\n \"sliderEnd\",\n \"checkbox\",\n ]);\n\n protected declare readonly switchTarget: HTMLButtonElement;\n protected declare readonly sliderTarget: HTMLSpanElement;\n protected declare readonly sliderStartTarget: HTMLSpanElement;\n protected declare readonly sliderEndTarget: HTMLSpanElement;\n protected declare readonly checkboxTarget: HTMLInputElement;\n\n public static classes = [\n \"switchOn\",\n \"switchOff\",\n \"sliderOn\",\n \"sliderOff\",\n \"sliderStartOn\",\n \"sliderStartOff\",\n \"sliderEndOff\",\n \"sliderEndOn\",\n ];\n\n protected declare readonly sliderEndOffClasses: string[];\n protected declare readonly sliderEndOnClasses: string[];\n protected declare readonly sliderStartOffClasses: string[];\n protected declare readonly sliderStartOnClasses: string[];\n protected declare readonly sliderOffClasses: string[];\n protected declare readonly sliderOnClasses: string[];\n protected declare readonly switchOffClasses: string[];\n protected declare readonly switchOnClasses: string[];\n\n public handleClick(event: Event) {\n event.preventDefault();\n if (!this.checkboxTarget.disabled) {\n this.toggleSwitch();\n }\n }\n\n public handleChange() {\n if (this.data.has(\"submitOnChange\")) {\n if (!this.data.has(\"confirmOnSubmit\")) {\n // We can submit this right away.\n this.submitForm();\n return;\n }\n // Check if the form is valid - if it is, pop open a confirmation dialog.\n this.dispatch(\"validate\", {\n prefix: FormController.identifier,\n target: this.element,\n bubbles: true,\n cancelable: false,\n detail: {\n onValidated: this.handleFormValidatedBeforeConfirm,\n },\n });\n }\n }\n\n private handleFormValidatedBeforeConfirm = (isFormValid: boolean) => {\n if (isFormValid) {\n // Show the confirmation dialog, using the text sent in via data attributes.\n const confirmMessage = this.getRequiredDataAttr(\"confirmOnSubmit\");\n\n // TODO i18n\n const confirmLabel = this.data.get(\"confirmOnSubmitYes\") || \"Confirm\";\n const cancelLabel = this.data.get(\"confirmOnSubmitNo\") || \"Cancel\";\n\n showConfirmModal({\n defaultReason: \"cancel\",\n negativeButtonReason: \"cancel\",\n negativeButtonLabel: cancelLabel,\n positiveButtonReason: \"confirm\",\n positiveButtonLabel: confirmLabel,\n message: confirmMessage,\n onClosing: this.handleDialogClosing,\n });\n } else {\n this.toggleSwitchWithoutChangeEvent();\n }\n };\n\n private handleDialogClosing = ({\n detail: { closeReason },\n }: ModalLifecycleEvent) => {\n if (closeReason === \"confirm\") {\n // Submit the form.\n this.submitForm();\n } else {\n this.toggleSwitchWithoutChangeEvent();\n }\n };\n\n private submitForm = () => {\n // Ask the parent controller to submit the form.\n this.dispatch(\"submit\", {\n prefix: FormController.identifier,\n target: this.element,\n bubbles: true,\n cancelable: false,\n detail: {\n onSubmissionPrevented: this.toggleSwitchWithoutChangeEvent,\n },\n });\n };\n\n public toggleSwitch = () => {\n this.toggleSwitchState();\n this.toggleSwitchView();\n };\n\n public toggleSwitchWithoutChangeEvent = () => {\n this.toggleSwitchState(false);\n this.toggleSwitchView();\n };\n\n private toggleSwitchState(withChangeEvent = true) {\n this.checkboxTarget.checked = !this.checkboxTarget.checked;\n\n this.validate();\n if (withChangeEvent) this.handleChange();\n }\n\n private toggleSwitchView() {\n const state = this.checkboxTarget.checked;\n this.toggleTargetElementClasses(\n this.switchTarget,\n state,\n this.switchOffClasses,\n this.switchOnClasses,\n );\n this.toggleTargetElementClasses(\n this.sliderTarget,\n state,\n this.sliderOffClasses,\n this.sliderOnClasses,\n );\n this.toggleTargetElementClasses(\n this.sliderStartTarget,\n state,\n this.sliderStartOffClasses,\n this.sliderStartOnClasses,\n );\n\n this.toggleTargetElementClasses(\n this.sliderEndTarget,\n state,\n this.sliderEndOffClasses,\n this.sliderEndOnClasses,\n );\n }\n}\n", "import FormFieldController from \"decor/forms/form_field_controller\";\n\nexport default class TextAreaController extends FormFieldController {}\n", "/**\n * Creates a custom DOM event.\n * TODO use a polyfill instead of this.\n *\n * @param href the URL of the script\n * @param defer if the script should defer execution till page loaded\n * @param async if the script load should be async\n */\n\nexport interface AddScriptOptions {\n defer?: boolean;\n async?: boolean;\n id?: string;\n}\n\nexport function addScriptTag(href: string, options: AddScriptOptions = {}) {\n const scriptTag = document.createElement(\"script\");\n scriptTag.type = \"text/javascript\";\n if (options.async) {\n scriptTag.async = true;\n }\n if (options.defer) {\n scriptTag.async = true;\n }\n if (options.id) {\n scriptTag.id = options.id;\n }\n scriptTag.src = href;\n document.getElementsByTagName(\"head\")[0].appendChild(scriptTag);\n}\n", "import {\n getAppConfiguration,\n setAppConfiguration,\n} from \"lib/app_configuration\";\nimport BaseController from \"decor/base_controller\";\nimport { addScriptTag } from \"lib/util/add_script_tag\";\nimport { MapCompanyLocation, MapOverlay, MapPoint } from \"lib/types\";\n\n// Hacky quick solution to show a map - need to turn this info a proper component\n// and there maybe issues with inline styles and CSP...\n// FIXME: is a XSS waiting to happen with user specified name for locations etc?\nexport default class MapController extends BaseController {\n public static targets = [\"mapContainer\"];\n\n private declare readonly mapContainerTarget: HTMLDivElement;\n\n private googleMap!: google.maps.Map | null;\n\n // Note: we should also consider adjusting zoom to fit all placed geometry\n // https://developers.google.com/maps/documentation/javascript/examples/layer-data-dragndrop\n\n public onInitialize() {\n this.attachMapScript();\n\n this.onConnect(() => {\n this.onMapReady(() => {\n this.createMap();\n this.addOverlays();\n this.addPoints();\n });\n });\n\n this.onDisconnect(() => {\n this.googleMap = null;\n });\n\n return super.onInitialize();\n }\n\n private attachMapScript() {\n if (document.getElementById(\"google-maps-script-tag\")) {\n return;\n }\n window.__mapInitialised = this.mapInitialised.bind(this);\n const key = this.data.get(\"api-key\");\n const src = `https://maps.googleapis.com/maps/api/js?key=${key}&callback=__mapInitialised`;\n addScriptTag(src, {\n async: true,\n defer: true,\n id: \"google-maps-script-tag\",\n });\n }\n\n private mapInitialised() {\n setAppConfiguration(\"mapHasLoaded\", true);\n const evt = new CustomEvent(\"google-maps-script:ready\", {\n bubbles: true,\n cancelable: false,\n });\n document.dispatchEvent(evt);\n }\n\n private onMapReady(callback: () => void) {\n if (getAppConfiguration(\"mapHasLoaded\")) {\n return callback();\n }\n const readyListener = () => {\n callback();\n document.removeEventListener(\"google-maps-script:ready\", readyListener);\n };\n document.addEventListener(\"google-maps-script:ready\", readyListener);\n }\n\n private createMap() {\n this.googleMap = new google.maps.Map(this.mapContainerTarget, {\n center: this.mapCenter,\n zoom: parseInt(this.data.get(\"zoom\") || \"10\", 10),\n });\n }\n\n private addPoints() {\n const pointsData = this.data.get(\"points\");\n if (!pointsData) {\n return;\n }\n try {\n const points = JSON.parse(pointsData) as MapCompanyLocation[];\n points.forEach((location) => {\n const marker = new google.maps.Marker({\n position: { lat: location.lat, lng: location.lng },\n title: `${location.description} (${location.name})`,\n });\n marker.setMap(this.googleMap);\n });\n } catch (e: any) {\n console.error(\"Could not render the map points\", e.message);\n }\n }\n\n // https://coderwall.com/p/49ygrg/geojson-multipolygon-to-google-maps-polygon\n private addOverlays() {\n const regionsData = this.data.get(\"overlays\");\n if (!regionsData) {\n return;\n }\n try {\n const regions = JSON.parse(regionsData) as MapOverlay[];\n regions.forEach((region) => {\n const paths = region.coordinates.flatMap((polygon) => {\n return polygon.flatMap((path) => {\n return path.map((point) => {\n // Important: the lat/lng are vice-versa in GeoJSON\n return new google.maps.LatLng(point[1], point[0]);\n });\n });\n });\n const mapPolygon = new google.maps.Polygon({ paths });\n mapPolygon.setMap(this.googleMap);\n });\n } catch (e: any) {\n console.error(\"Could not render the map overlays\", e.message);\n }\n }\n\n private get mapCenter() {\n const centerData = this.data.get(\"center\");\n if (!centerData) {\n return;\n }\n try {\n const center = JSON.parse(centerData) as MapPoint;\n return { lat: center.lat, lng: center.lng };\n } catch (error) {\n return { lat: 33.6265064, lng: -84.5319427 };\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { closeModal } from \"lib/overlay/modal\";\n\nexport default class ModalCloseButtonController extends BaseController {\n public handleButtonClick(event: Event) {\n event.preventDefault();\n const reason = this.data.get(\"closeReason\");\n closeModal({\n closeReason: reason ? reason : undefined,\n });\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { showModal } from \"lib/overlay/modal\";\nimport { markAsSafeHTML } from \"lib/util/safe_html\";\n\nexport default class ModalOpenButtonController extends BaseController {\n public handleButtonClick(event: Event) {\n event.preventDefault();\n\n const href = this.getOptionalDataAttr(\"contentHref\");\n const placeholder = this.getOptionalDataAttr(\"initialContent\");\n const closeOnOverlayClick =\n this.getOptionalDataAttr(\"closeOnOverlayClick\") == \"true\";\n showModal({\n contentHref: href,\n closeOnOverlayClick,\n placeholder: placeholder ? markAsSafeHTML(placeholder) : undefined,\n });\n }\n}\n", "import qs from \"query-string\";\n\ninterface Params {\n [key: string]: string;\n}\n\nexport function addParametersToQueryString(str: string, params: Params) {\n return qs.stringify({\n ...qs.parse(str),\n ...params,\n });\n}\n\nexport function removeParameterFromQueryString(str: string, key: string) {\n const search = qs.parse(str) as Params;\n delete search[key];\n return qs.stringify(search);\n}\n\nexport function removeHashesFromQueryString(\n str: string,\n ...hashKeys: string[]\n) {\n const search = qs.parse(str) as Params;\n for (const hashKey of hashKeys) {\n for (const key in search) {\n if (key.split(\"[\")[0] === hashKey) {\n delete search[key];\n }\n }\n }\n\n return qs.stringify(search);\n}\n", "export enum Keys {\n Enter,\n}\n\nexport function keyWasPressed(evt: KeyboardEvent, key: Keys): boolean {\n switch (key) {\n case Keys.Enter:\n return evt.key === \"Enter\" || evt.keyCode === 13;\n default:\n return false;\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport {\n addParametersToQueryString,\n removeParameterFromQueryString,\n} from \"lib/util/add_parameter_to_url\";\nimport { Keys, keyWasPressed } from \"lib/util/keyboard_key\";\nimport flatpickr from \"flatpickr\";\nimport { Instance } from \"flatpickr/dist/types/instance\";\nimport DropdownController from \"decor/dropdown_controller\";\nimport FormFieldController from \"decor/forms/form_field_controller\";\nimport CheckboxController from \"decor/forms/checkbox_controller\";\nimport {\n Decor__DropdownControllerIdentifier,\n Decor__Forms__CheckboxControllerIdentifier,\n Decor__Forms__SelectControllerIdentifier,\n Decor__Forms__TextFieldControllerIdentifier,\n} from \"controllers/identifiers\";\nimport SelectController from \"./forms/select_controller\";\nimport TextFieldController from \"./forms/text_field_controller\";\n\nexport default class SearchAndFilterController extends BaseController {\n public static readonly targets = [\n \"searchInput\",\n \"applyButton\",\n \"clearFiltersButton\",\n ];\n\n public declare readonly searchInputTarget: HTMLInputElement;\n public declare readonly hasSearchInputTarget: boolean;\n public declare readonly applyButtonTarget: HTMLButtonElement;\n public declare readonly hasApplyButtonTarget: boolean;\n public declare readonly clearFiltersButtonTarget: HTMLButtonElement;\n public declare readonly hasClearFiltersButtonTarget: boolean;\n\n public static readonly outlets = [\n Decor__Forms__CheckboxControllerIdentifier,\n Decor__Forms__SelectControllerIdentifier,\n Decor__Forms__TextFieldControllerIdentifier,\n Decor__DropdownControllerIdentifier,\n ];\n private declare readonly decorDropdownOutlet: DropdownController;\n private declare readonly decorFormsCheckboxOutlets: CheckboxController[];\n private declare readonly decorFormsSelectOutlets: SelectController[];\n private declare readonly decorFormsTextFieldOutlets: TextFieldController[];\n private get dropdownController() {\n return this.decorDropdownOutlet;\n }\n private get checkboxControllers() {\n return this.decorFormsCheckboxOutlets;\n }\n private get selectControllers() {\n return this.decorFormsSelectOutlets;\n }\n private get textFieldControllers() {\n return this.decorFormsTextFieldOutlets;\n }\n\n protected filters: { [key: string]: string | undefined } = {};\n\n public toggle(event: Event) {\n this.dropdownController.toggle(event);\n event.stopPropagation();\n }\n\n public hide() {\n this.dropdownController.hide();\n }\n\n public hideOnClickOutside(event: Event) {\n this.dropdownController.hideOnClickOutside(event);\n }\n\n public handleClearFilters() {\n this.getFilterValues();\n if (this.hasClearFiltersButtonTarget) {\n this.clearFiltersButtonTarget.disabled = true;\n }\n // Clear the filters\n this.filters = Object.entries(this.filters).reduce(\n (acc, [name, _value]) => {\n acc[name] = undefined;\n return acc;\n },\n {},\n );\n this.reloadAndSetQueryParams();\n }\n\n public handleApply() {\n this.getFilterValues();\n if (this.hasApplyButtonTarget) {\n this.applyButtonTarget.disabled = true;\n }\n this.reloadAndSetQueryParams();\n }\n\n protected getFilterValues() {\n if (this.hasSearchInputTarget && this.searchInputTarget.value) {\n const { name, value } = this.searchInputTarget;\n this.addFilterParam(name, value);\n }\n this.checkboxControllers.forEach((controller) => {\n this.addFilterParam(\n controller.name,\n controller.checked ? \"true\" : undefined,\n );\n });\n this.selectControllers.forEach((controller) => {\n this.addFilterParam(controller.name, controller.value);\n });\n this.textFieldControllers.forEach((controller) => {\n this.addFilterParam(controller.name, controller.value);\n });\n }\n\n public handleRangePicker(evt: Event) {\n const datePicker = flatpickr(evt.target as HTMLInputElement, {\n mode: \"range\",\n onClose: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n if (selectedDates.length == 2) {\n this.addFilterParam(\n \"custom_range\",\n selectedDates\n .map((d) => {\n return instance.formatDate(new Date(d), \"Y-m-d\");\n })\n .join(\"_\"),\n );\n }\n },\n });\n datePicker.open();\n }\n\n // https://medium.com/@uistephen/keyboardevent-key-for-cross-browser-key-press-check-61dbad0a067a\n public handleSearchInputKeydown(evt: KeyboardEvent) {\n if (evt.defaultPrevented) {\n return;\n }\n const enterPressed = keyWasPressed(evt, Keys.Enter);\n if (enterPressed) {\n // Stop form submission\n evt.preventDefault();\n\n this.searchInputTarget.disabled = true;\n this.handleApply();\n }\n }\n\n protected addFilterParam(name: string, value?: string) {\n this.filters[name] = value;\n }\n\n protected reloadAndSetQueryParams() {\n // Reset to page 1\n this.filters[\"page\"] = undefined;\n window.location.search = Object.entries(this.filters).reduce(\n (params, filter) => {\n const [name, value] = filter;\n if (value === undefined) {\n return removeParameterFromQueryString(params, name);\n } else {\n return addParametersToQueryString(params, {\n [name]: value,\n });\n }\n },\n window.location.search,\n );\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class DataTableCellController extends BaseController {\n public handleCellClickToStopPropagation(e: MouseEvent) {\n // If stop_propagation is set, don't propagate the click event.\n e.stopPropagation();\n }\n\n public handleLinkClick(e: MouseEvent) {\n // This is called when the anchor itself was clicked.\n // We don't want this to be handled by JS, to preserve ctrl-click etc.\n e.stopPropagation();\n }\n}\n", "import {\n Decor__Tables__DataTableHeaderRowControllerIdentifier,\n Decor__Tables__DataTableRowControllerIdentifier,\n} from \"controllers/identifiers\";\nimport BaseController from \"decor/base_controller\";\nimport DataTableHeaderRowController from \"decor/tables/data_table_header_row_controller\";\nimport DataTableRowController from \"decor/tables/data_table_row_controller\";\n\nexport default class DataTableController extends BaseController {\n public static outlets = [\n Decor__Tables__DataTableHeaderRowControllerIdentifier,\n Decor__Tables__DataTableRowControllerIdentifier,\n ];\n private declare readonly decorTablesDataTableHeaderRowOutlet: DataTableHeaderRowController;\n private declare readonly hasDecorTablesDataTableHeaderRowOutlet: boolean;\n private get headerRowController() {\n return this.decorTablesDataTableHeaderRowOutlet;\n }\n private get hasHeaderRowController() {\n return this.hasDecorTablesDataTableHeaderRowOutlet;\n }\n private declare readonly decorTablesDataTableRowOutlets: DataTableRowController[];\n private get rowControllers() {\n return this.decorTablesDataTableRowOutlets;\n }\n\n public static targets = [\"tableContentContainer\", \"tableBody\"];\n\n private declare readonly tableContentContainerTarget: HTMLDivElement;\n private declare readonly tableBodyTarget: HTMLTableSectionElement;\n\n public onInitialize() {\n this.onConnect(() => {\n let removeListener = () => {};\n\n if (this.hasHeaderRowController) {\n // When a checkbox changes, toggle all rows.\n this.headerRowController.onCheckboxChange(this.toggleRows.bind(this));\n }\n\n // Remove the listener when the controller disconnects.\n return removeListener;\n });\n\n this.contentScrolled();\n\n return super.onInitialize();\n }\n\n public toggleRows(checked: boolean) {\n this.rowControllers.forEach((controller) => {\n controller.checked = checked;\n });\n }\n\n public appendRow(row: HTMLElement) {\n this.tableBodyTarget.appendChild(row);\n this.contentScrolled();\n }\n\n public contentScrolled() {\n const target = this.tableContentContainerTarget;\n const x = target.scrollLeft;\n const divWidth = target.scrollWidth - target.clientWidth;\n if (x == 0) {\n target.classList.remove(\"inset-scroll-shadow-not-at-left\");\n }\n\n if (x > 0) {\n target.classList.add(\"inset-scroll-shadow-not-at-left\");\n }\n\n if (x < divWidth) {\n target.classList.add(\"inset-scroll-shadow-not-at-right\");\n }\n\n if (x == divWidth) {\n target.classList.remove(\"inset-scroll-shadow-not-at-right\");\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { addParametersToQueryString } from \"lib/util/add_parameter_to_url\";\n\nexport default class DataTableHeaderCellController extends BaseController {\n public handleSortableClick() {\n const params = {\n // eslint-disable-next-line @typescript-eslint/camelcase\n sort_by: this.sortKey,\n // eslint-disable-next-line @typescript-eslint/camelcase\n sorted_direction: this.nextSortDirection,\n };\n window.location.search = addParametersToQueryString(\n window.location.search,\n params,\n );\n }\n\n private get sortKey() {\n return this.getRequiredDataAttr(\"sortKey\");\n }\n\n private get sortDirection() {\n return this.data.get(\"sortedDirection\");\n }\n\n private get nextSortDirection() {\n return this.sortDirection === \"desc\" ? \"asc\" : \"desc\";\n }\n}\n", "import { Decor__Forms__CheckboxControllerIdentifier } from \"controllers/identifiers\";\nimport BaseController from \"decor/base_controller\";\nimport CheckboxController from \"decor/forms/checkbox_controller\";\n\nexport default class DataTableHeaderRowController extends BaseController {\n public static outlets = [Decor__Forms__CheckboxControllerIdentifier];\n private declare readonly decorFormsCheckboxOutlet: CheckboxController;\n private get checkboxController() {\n return this.decorFormsCheckboxOutlet;\n }\n\n private checkboxChangeListeners: Set<(value: boolean) => void> = new Set();\n\n public onInitialize() {\n this.onDisconnect(() => {\n this.checkboxChangeListeners.clear();\n });\n\n return super.onInitialize();\n }\n\n public get checked(): boolean {\n return !!this.checkboxController?.checked;\n }\n\n public set checked(state: boolean) {\n if (this.checkboxController) {\n this.checkboxController.checked = state;\n }\n }\n\n public handleCheckboxChange(evt: Event) {\n const target = evt.target as HTMLInputElement;\n this.checkboxChangeListeners.forEach((listener) => {\n listener(target.checked);\n });\n }\n\n public onCheckboxChange(cb: (checked: boolean) => void) {\n this.checkboxChangeListeners.add(cb);\n return () => this.checkboxChangeListeners.delete(cb);\n }\n}\n", "import {\n Decor__Forms__CheckboxControllerIdentifier,\n Decor__Tables__DataTableCellControllerIdentifier,\n} from \"controllers/identifiers\";\nimport BaseController from \"decor/base_controller\";\nimport CheckboxController from \"decor/forms/checkbox_controller\";\nimport DataTableCellController from \"decor/tables/data_table_cell_controller\";\n\nexport default class DataTableRowController extends BaseController {\n public static targets = [\"checkbox\"];\n public declare readonly checkboxTarget: HTMLInputElement;\n\n public static classes = [\"selected\"];\n protected declare readonly selectedClasses: string[];\n\n public static outlets = [\n Decor__Tables__DataTableCellControllerIdentifier,\n Decor__Forms__CheckboxControllerIdentifier,\n ];\n private declare readonly decorTablesDataTableCellOutlets: DataTableCellController[];\n private get cellControllers() {\n return this.decorTablesDataTableCellOutlets;\n }\n private declare readonly decorFormsCheckboxOutlet: CheckboxController;\n private get checkboxController() {\n return this.decorFormsCheckboxOutlet;\n }\n\n public get id(): string {\n return this.getRequiredDataAttr(\"id\");\n }\n\n public get disabled() {\n return this.element.classList.contains(\"opacity-50\");\n }\n\n public set disabled(disabled: boolean) {\n if (disabled) {\n this.element.classList.add(\"opacity-50\");\n } else {\n this.element.classList.remove(\"opacity-50\");\n }\n }\n\n public rowSelected() {\n this.toggleTargetElementClasses(\n this.element,\n this.checked,\n [],\n this.selectedClasses,\n );\n }\n\n public get checked() {\n if (this.checkboxController) {\n return this.checkboxController.checked;\n }\n return false;\n }\n\n public set checked(state: boolean) {\n if (this.checkboxController && !this.checkboxController.disabled) {\n this.checkboxController.checked = state;\n this.rowSelected();\n }\n }\n\n public handleRowClick(e: MouseEvent) {\n const target = e.target;\n if (target) {\n const row = this.element;\n let child = target as HTMLElement | null;\n while (child && child !== row) {\n const cell = this.cellControllers.find((c) => c.element === child);\n if (cell && cell.data.get(\"no-path-navigation\")) {\n return;\n }\n child = child.parentElement;\n }\n }\n const href = this.data.get(\"href\");\n if (href) {\n window.location.href = href;\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class TabsController extends BaseController {\n public handleSelectTabOnMobile(event: Event) {\n const select = event.target as HTMLSelectElement;\n const selected = select.options[select.selectedIndex];\n\n const href = selected.getAttribute(\"data-href\");\n if (href) {\n window.location.href = href;\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\n// Ispired by tailwindcss-stimulus-components Popover\nexport default class TooltipController extends BaseController {\n public static targets = [\"content\"];\n\n private declare readonly contentTarget: HTMLElement;\n\n private debounceTimer?: any = undefined;\n\n initialize() {\n this.contentTarget.setAttribute(\n \"style\",\n `transform:translate(${this.data.get(\"translateX\")}, ${this.data.get(\n \"translateY\",\n )});`,\n );\n }\n\n public mouseOver() {\n this.debounceSimulatedEvents(() => {\n this.show();\n });\n }\n\n public mouseOut() {\n this.debounceSimulatedEvents(() => {\n this.hide();\n });\n }\n\n public handleClick(event: Event) {\n this.debounceSimulatedEvents(() => {\n this.toggle();\n });\n }\n\n private debounceSimulatedEvents(callback: () => void) {\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n this.debounceTimer = setTimeout(() => {\n this.debounceTimer = undefined;\n callback();\n }, 100);\n }\n\n // Toggle the popover on demand\n public toggle() {\n if (this.contentTarget.classList.contains(\"hidden\")) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n public show() {\n this.setTargetElementClasses(this.contentTarget, [\"hidden\"], []);\n }\n\n public hide() {\n this.setTargetElementClasses(this.contentTarget, [], [\"hidden\"]);\n }\n}\n", "import ProductLightboxController from \"mercor/product_lightbox_controller\";\nimport axios from \"lib/axios\";\nimport BaseController from \"decor/base_controller\";\nimport { closeModal, showConfirmModal } from \"lib/overlay/modal\";\nimport { ModalLifecycleEvent } from \"decor/modal_controller\";\nimport { Mercor__ProductLightboxControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class CartItemController extends BaseController {\n public static outlets = [Mercor__ProductLightboxControllerIdentifier];\n private declare readonly mercorProductLightboxOutlets: ProductLightboxController[];\n private get lightboxControllers() {\n return this.mercorProductLightboxOutlets;\n }\n\n public edit() {\n this.lightboxControllers.forEach((controller) => {\n // controller.showPurchaseConfigurator(); ???\n });\n }\n\n public removalWithoutConfirm() {\n this.deleteCartItem();\n }\n\n public showRemovalConfirm() {\n showConfirmModal({\n defaultReason: \"ok\",\n negativeButtonReason: \"cancel\",\n negativeButtonLabel: \"No\",\n positiveButtonReason: \"ok\",\n positiveButtonLabel: \"Yes\",\n message: \"Are you sure that you want to delete this item?\",\n onClosing: this.handleDialogClosing,\n });\n }\n\n private handleDialogClosing = ({\n detail: { closeReason },\n }: ModalLifecycleEvent) => {\n if (closeReason === \"ok\") {\n this.deleteCartItem();\n } else {\n closeModal();\n }\n };\n\n private deleteCartItem() {\n const url = this.data.get(\"url\");\n\n if (url === null) {\n return;\n }\n\n axios\n .delete(url)\n .then(() => {\n window.location.reload();\n })\n .catch((e: Error) => {\n console.error(\"Could not delete item from cart... \" + url);\n console.log(e.stack);\n console.log(e.message);\n });\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { showModal } from \"lib/overlay/modal\";\nimport { markAsSafeHTML } from \"lib/util/safe_html\";\n\nexport default class PriceEditController extends BaseController {\n public handleButtonClick(evt: Event) {\n // Stop propagation: prevent any clicks leaking out\n evt.preventDefault();\n evt.stopPropagation();\n\n // Show the dialog\n const [contentHref, placeholder] = this.getRequiredDataAttrs(\n \"contentHref\",\n \"placeholder\",\n );\n showModal({\n contentHref,\n placeholder: markAsSafeHTML(placeholder),\n });\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class SubmitPriceUpdateController extends BaseController {\n public static targets = [\"requiresScheduled\"];\n\n protected declare readonly requiresScheduledTarget: HTMLInputElement;\n\n public publishScheduled(evt: Event) {\n // Set form attribute to indicate we are scheduling\n this.requiresScheduledTarget.setAttribute(\"value\", \"true\");\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nconst ACTIVE_CLASS = \"shopping__delivery-cut-off-pill--active\";\nconst MINUTES_BEFORE_RUN = 30;\nconst SECONDS_BEFORE_RUN = MINUTES_BEFORE_RUN * 60;\n\nexport default class DeliveryCutOffPillController extends BaseController {\n public onInitialize() {\n this.onConnect(() => {\n const timeToCutOff = this.timeToCutOff;\n if (timeToCutOff !== null && timeToCutOff > 0) {\n const timeToActivateElement = timeToCutOff - SECONDS_BEFORE_RUN;\n const activateTimerId = this.activateElement(\n this.calculateTimeout(timeToActivateElement),\n );\n const inactivateTimerId = this.deactivateElement(\n this.calculateTimeout(timeToCutOff),\n );\n return () => {\n clearTimeout(activateTimerId);\n clearTimeout(inactivateTimerId);\n };\n }\n });\n\n return super.onInitialize();\n }\n\n public activateElement = (timeout: number) => {\n let timerId: any;\n if (timeout > 0) {\n timerId = setTimeout(this.addActiveClass, timeout);\n } else {\n this.addActiveClass();\n }\n return timerId || null;\n };\n\n public deactivateElement = (timeout: number) => {\n let timerId: any;\n if (timeout > 0) {\n timerId = setTimeout(this.removeActiveClass, timeout);\n }\n return timerId;\n };\n\n public calculateTimeout(timeoutInSeconds: number) {\n return timeoutInSeconds * 1000;\n }\n\n public addActiveClass = () => {\n this.element.classList.add(ACTIVE_CLASS);\n };\n\n public removeActiveClass = () => {\n this.element.classList.remove(ACTIVE_CLASS);\n };\n\n private get timeToCutOff(): number | null {\n const timeToCutOff = this.data.get(\"timeToCutOff\") as any;\n if (timeToCutOff === null) {\n return timeToCutOff;\n }\n return timeToCutOff as number;\n }\n}\n", "import DateCalendarController from \"decor/forms/date_calendar_controller\";\n\nexport default class DeliveryDateCalendarController extends DateCalendarController {}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class DeliveryDateSelectController extends BaseController {\n public static targets = [\"form\"];\n private declare readonly formTarget: HTMLFormElement;\n\n public dateSelected(evt: Event) {\n evt.stopPropagation();\n this.formTarget.submit();\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport axios from \"lib/axios\";\nimport { markAsSafeHTML, safelySetInnerHTML } from \"lib/util/safe_html\";\nimport { replaceContentsWithChildren } from \"lib/util/replace_with_dom_nodes\";\n\nexport default abstract class NavbarWithSearchController extends BaseController {\n public static targets = [\n \"searchInput\",\n \"searchDropdown\",\n \"searchDropdownContent\",\n \"searchSpinner\",\n ];\n\n protected declare readonly searchInputTarget: HTMLInputElement;\n protected declare readonly searchDropdownTarget: HTMLDivElement;\n protected declare readonly searchDropdownContentTarget: HTMLDivElement;\n protected declare readonly searchSpinnerTarget: HTMLDivElement;\n\n protected windowClickHandlerAdded = false;\n protected debounceSearch?: any = undefined;\n protected hasSearchResults = false;\n\n public clickedSearchInput(event: Event) {\n event.stopPropagation();\n }\n\n public clickedSearchContent(event: Event) {\n event.stopPropagation();\n }\n\n public async search() {\n const val = this.searchText();\n\n if (this.debounceSearch) {\n clearTimeout(this.debounceSearch);\n }\n this.debounceSearch = setTimeout(() => {\n this.debounceSearch = undefined;\n if (!val) {\n this.hasSearchResults = false;\n this.dropdownShow(false);\n return;\n }\n this.hasSearchResults = true;\n this.dropdownShow(true);\n this.getResultsAndShow(val);\n }, 300);\n }\n\n public handleWindowClick = (event: Event) => {\n event.stopPropagation();\n event.preventDefault();\n this.dropdownShow(false);\n };\n\n protected searchText() {\n return this.searchInputTarget.value.trim().toLowerCase();\n }\n\n protected getResultsAndShow(searchKey: string) {\n axios\n .get(\n this.getRequiredDataAttr(\"searchUrl\") + \"?search_key=\" + searchKey,\n {\n headers: {\n \"Content-Type\": \"text/html\",\n },\n },\n )\n .then((response) => {\n const content = markAsSafeHTML(response.data);\n const contentContainer = document.createElement(\"div\");\n safelySetInnerHTML(contentContainer, content);\n replaceContentsWithChildren(\n this.searchDropdownContentTarget,\n contentContainer,\n );\n this.setTargetElementClasses(\n this.searchDropdownContentTarget,\n [\"hidden\"],\n [],\n );\n this.setTargetElementClasses(this.searchSpinnerTarget, [], [\"hidden\"]);\n });\n }\n\n protected dropdownShow(show: boolean) {\n this.toggleTargetElementTransitionClasses(\n this.searchDropdownTarget,\n show,\n [\"transform\", \"ease-in\", \"duration-100\"],\n [\"opacity-0\", \"scale-95\"],\n [\"opacity-100\", \"scale-100\"],\n [\"transform\", \"ease-out\", \"duration-200\"],\n [\"opacity-100\", \"scale-100\"],\n [\"opacity-0\", \"scale-95\"],\n );\n if (show) {\n this.setTargetElementClasses(this.searchDropdownTarget, [\"hidden\"], []);\n if (!this.windowClickHandlerAdded) {\n window.addEventListener(\"click\", this.handleWindowClick);\n this.windowClickHandlerAdded = true;\n }\n } else {\n setTimeout(() => {\n this.setTargetElementClasses(this.searchDropdownTarget, [], [\"hidden\"]);\n if (this.windowClickHandlerAdded) {\n window.removeEventListener(\"click\", this.handleWindowClick);\n this.windowClickHandlerAdded = false;\n }\n }, 200);\n }\n }\n}\n", "import NavbarWithSearchController from \"navigo/navbar_with_search_controller\";\n\nexport default class NavbarController extends NavbarWithSearchController {\n public static targets = [\n \"mobileMenu\",\n \"mobileMenuIconOpen\",\n \"mobileMenuIconClose\",\n \"search\",\n ].concat(NavbarWithSearchController.targets);\n\n private declare readonly mobileMenuTarget: HTMLElement;\n private declare readonly mobileMenuIconOpenTarget: HTMLElement;\n private declare readonly mobileMenuIconCloseTarget: HTMLElement;\n private declare readonly searchTarget: HTMLDivElement;\n\n public toggleMobileMenu(): void {\n this.mobileMenuTarget.classList.toggle(\"hidden\");\n this.mobileMenuIconOpenTarget.classList.toggle(\"hidden\");\n this.mobileMenuIconCloseTarget.classList.toggle(\"hidden\");\n }\n\n public gotSearchFocus() {\n this.setTargetElementClasses(\n this.searchTarget,\n [\"md:w-1/4\"],\n [\"transform\", \"ease-in\", \"duration-200\"],\n );\n if (this.searchText()) {\n if (!this.hasSearchResults) {\n this.search();\n } else {\n this.dropdownShow(true);\n }\n }\n }\n\n public lostSearchFocus() {\n this.setTargetElementClasses(\n this.searchTarget,\n [],\n [\"md:w-1/4\", \"transform\", \"ease-out\", \"duration-200\"],\n );\n }\n}\n", "import Big from \"big.js\";\n\ninterface TotalPriceOpts {\n extraChargeMultiplier: string | number;\n priceMultiplier: string | number;\n quantity: string;\n quantityType: string;\n size?: string;\n sizeExcludedFromCalculation?: boolean;\n}\n\ninterface TotalPriceForDisplayOpts extends TotalPriceOpts {\n currency: string;\n locale: string;\n}\n\ninterface ExtraInfoAmountForDisplayOpts {\n locale: string;\n multiplier: string | number;\n quantity: string;\n quantityType: string;\n size?: string;\n sizeCalculationPerformDivision?: boolean;\n sizeExcludedFromCalculation?: boolean;\n sizeUnitConversionFactor?: string | number;\n}\n\nconst ZERO = Number(0);\nexport const BIG_ZERO = new Big(0);\n\nexport function isNullOrBigZero(input: Big | null | undefined) {\n return input === null || input === undefined || isBigZero(input);\n}\n\nexport function parseVariantSize(\n sizeRaw?: string,\n sizeExcludedFromCalculation?: boolean,\n): Big | undefined {\n if (sizeExcludedFromCalculation) {\n return new Big(1);\n }\n // Intentionally double equals to check for undefined and null\n if (sizeRaw === null || sizeRaw === undefined || sizeRaw.trim() === \"\") {\n return;\n }\n return newPositiveBigOrNull(sizeRaw) || new Big(1);\n}\n\nexport function calculateTotalPrice({\n extraChargeMultiplier,\n priceMultiplier,\n quantity,\n quantityType,\n size,\n sizeExcludedFromCalculation,\n}: TotalPriceOpts): Big | null {\n const quantityBig = parseQuantity(quantity, quantityType);\n\n if (quantityBig === null) {\n return null;\n }\n\n const sizeBig = parseVariantSize(size, sizeExcludedFromCalculation);\n if (sizeBig === null || sizeBig === undefined) {\n return null;\n }\n\n const priceMultiplierBig = parseQuantityPriceMultiplier(priceMultiplier);\n const extraChargeMultiplierBig = parseQuantityPriceMultiplier(\n extraChargeMultiplier,\n );\n\n // Use big.js to perform arithmetic, to prevent floating point rounding errors\n const totalMultiplierBig = priceMultiplierBig.add(extraChargeMultiplierBig);\n return totalMultiplierBig.times(quantityBig).times(sizeBig).div(100);\n}\n\nexport function calculateTotalPriceNumber(\n opts: TotalPriceForDisplayOpts,\n): number {\n const { currency, locale, ...priceFactors } = opts;\n\n const totalPriceBig = calculateTotalPrice(priceFactors);\n const totalPriceNumber =\n totalPriceBig !== null ? Number.parseFloat(totalPriceBig.toFixed(2)) : 0;\n\n return totalPriceNumber;\n}\n\nexport function calculateTotalPriceForDisplay(\n opts: TotalPriceForDisplayOpts,\n totalPriceNumber: number,\n): string {\n const { currency, locale } = opts;\n const totalPriceForDisplay = totalPriceNumber.toLocaleString(locale, {\n currency,\n style: \"currency\",\n });\n return totalPriceForDisplay;\n}\n\nexport function calculateExtraInfoAmountForDisplay({\n locale,\n multiplier,\n quantity,\n quantityType,\n size,\n sizeCalculationPerformDivision,\n sizeExcludedFromCalculation,\n}: ExtraInfoAmountForDisplayOpts) {\n const quantityBig = parseQuantity(quantity, quantityType);\n if (isNullOrBigZero(quantityBig)) {\n return ZERO.toLocaleString(locale);\n }\n\n const sizeBig = parseVariantSize(size, sizeExcludedFromCalculation);\n if (sizeBig === null || sizeBig === undefined) {\n return \"-\";\n }\n if (isBigZero(sizeBig)) {\n return ZERO.toLocaleString(locale);\n }\n\n const multiplierBig = parseQuantityPriceMultiplier(multiplier);\n if (isNullOrBigZero(multiplierBig)) {\n return ZERO.toLocaleString(locale);\n }\n\n // Use big.js to perform arithmetic, to prevent floating point rounding errors\n let extraInfoAmountBig = multiplierBig.times(quantityBig!);\n extraInfoAmountBig = sizeCalculationPerformDivision\n ? extraInfoAmountBig.div(sizeBig)\n : extraInfoAmountBig.times(sizeBig);\n\n // Format for display\n const extraInfoAmountNumber = Number.parseFloat(\n extraInfoAmountBig.toFixed(2),\n );\n return extraInfoAmountNumber.toLocaleString(locale);\n}\n\n// Helper methods\n\nexport function newPositiveBigOrNull(\n input: string | number,\n minValue: number = 0,\n): Big | null {\n if (typeof input === \"string\" && input.length === 0) {\n return null;\n }\n try {\n const big = new Big(input);\n return big.gte(minValue) ? big : null;\n } catch (error) {\n return null;\n }\n}\n\nfunction isBigZero(input: Big) {\n return BIG_ZERO.eq(input);\n}\n\nfunction parseQuantityPriceMultiplier(multiplierRaw: string | number): Big {\n const multiplierBig = newPositiveBigOrNull(multiplierRaw);\n if (multiplierBig === null) {\n // This is an error that the user cannot recover from.\n throw new Error(\n `multiplier was not a positive number: ${multiplierRaw || '\"\"'}`,\n );\n }\n\n return multiplierBig;\n}\n\nfunction parseQuantity(quantityRaw: string, quantityType: string): Big | null {\n switch (quantityType) {\n case \"float\": {\n return newPositiveBigOrNull(quantityRaw);\n }\n\n case \"integer\": {\n if (quantityRaw.includes(\".\")) {\n // Can't parse a decimal number as an integer.\n return null;\n }\n return newPositiveBigOrNull(quantityRaw);\n }\n\n default:\n // quantityType not recognised\n throw new Error(\n `quantityType '${\n quantityType || '\"\"'\n }' is invalid, should be 'float' or 'integer'`,\n );\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport OrderGuideRowController, {\n ProductPriceChangedEvent,\n} from \"./order_guide_row_controller\";\nimport { BIG_ZERO, newPositiveBigOrNull } from \"lib/price_calculations\";\nimport Big from \"big.js\";\nimport { Mercor__OrderGuideRowControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class OrderGuideController extends BaseController {\n public static targets = [\"searchField\", \"totalPrice\", \"totalPriceFooter\"];\n private rows: { [key: string]: Big } = {};\n private declare readonly searchFieldTarget: HTMLFormElement;\n private declare readonly totalPriceTarget: HTMLFormElement;\n private declare readonly totalPriceFooterTarget: HTMLFormElement;\n\n public static outlets = [Mercor__OrderGuideRowControllerIdentifier];\n private declare readonly mercorOrderGuideRowOutlets: OrderGuideRowController[];\n private get rowControllers() {\n return this.mercorOrderGuideRowOutlets;\n }\n\n private hasChanges = false;\n private formSubmitting = false;\n private sortDirection: { [key: string]: boolean } = {};\n\n private debounceSearch?: any = undefined;\n\n onInitialize() {\n this.rows = {};\n\n window.addEventListener(\"beforeunload\", (e) => {\n if (this.formSubmitting || !this.hasChanges) {\n return undefined;\n }\n const confirmationMessage =\n \"It looks like you have been editing your order guide. \" +\n \"If you leave this page before Adding to Cart, your changes will be lost.\";\n\n (e || window.event).returnValue = confirmationMessage; //Gecko + IE\n return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc.\n });\n\n return super.onInitialize();\n }\n\n public submittedForm(evt: Event) {\n this.formSubmitting = true;\n }\n\n public sortBySku() {\n this.applySort(\"sku\");\n }\n\n public sortByDescription() {\n this.applySort(\"description\");\n }\n\n public search(evt: Event) {\n const val = this.searchFieldTarget.value.trim().toLowerCase();\n\n if (this.debounceSearch) {\n clearTimeout(this.debounceSearch);\n }\n this.debounceSearch = setTimeout(() => {\n this.debounceSearch = undefined;\n this.rowControllers.forEach((rowController: OrderGuideRowController) => {\n rowController.hideOnSearch(val);\n });\n }, 300);\n }\n\n // Each product row sends a product_price_changed event, and these are used to infer how many rows there are\n // and calculate the order guide Estimated Total.\n public handleRowPriceChange(evt: ProductPriceChangedEvent) {\n const { totalPriceNumber, sku } = evt.detail;\n const price = newPositiveBigOrNull(totalPriceNumber) || BIG_ZERO;\n if (price.gt(0)) {\n this.hasChanges = true;\n }\n this.rows[sku] = price;\n const estimate = Object.values(this.rows).reduce(\n (a: Big, b: Big) => a.plus(b),\n BIG_ZERO,\n );\n if (estimate.eq(0)) {\n this.hasChanges = false;\n }\n this.updateTotalPrice(estimate);\n }\n\n private applySort(parameter: string) {\n if (!this.sortDirection.hasOwnProperty(parameter)) {\n this.sortDirection[parameter] = false;\n }\n const elements = this.rowControllers.map(\n (rowController: OrderGuideRowController) => {\n const parent = rowController.element.parentElement;\n if (parent) parent.removeChild(rowController.element);\n return [\n rowController.sortableParam(parameter),\n rowController.element,\n parent,\n ];\n },\n );\n const sorted = elements.sort((a, b) => {\n if (this.sortDirection[parameter]) {\n return (a[0] as string).localeCompare(b[0] as string);\n } else {\n return (b[0] as string).localeCompare(a[0] as string);\n }\n });\n sorted.forEach(([sku, element, parent]) => {\n if (parent) (parent as HTMLElement).appendChild(element as HTMLElement);\n });\n this.sortDirection[parameter] = !this.sortDirection[parameter];\n }\n\n private updateTotalPrice(price: any) {\n // TODO: use local formatting, highest precision, handle different currencies etc.\n this.totalPriceFooterTarget.textContent =\n this.totalPriceTarget.textContent = `$ ${price.toFixed(2)}`;\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport FormFieldController from \"decor/forms/form_field_controller\";\nimport PurchaseConfiguratorExtraInfoController from \"mercor/purchase_configurator/extra_info_controller\";\nimport {\n calculateTotalPriceForDisplay,\n calculateTotalPriceNumber,\n isNullOrBigZero,\n parseVariantSize,\n} from \"lib/price_calculations\";\nimport { getAppConfiguration } from \"lib/app_configuration\";\nimport { markAsSafeHTML, safelySetInnerHTML } from \"lib/util/safe_html\";\nimport { Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier } from \"controllers/identifiers\";\n\ntype ProductPriceChangedDetail = {\n totalPriceNumber: number;\n sku: string;\n variant: string;\n size: string | undefined;\n parsedSize: Big.Big | undefined;\n validSize: boolean;\n hasSize: boolean;\n};\n\nexport type ProductPriceChangedEvent = CustomEvent;\n\ninterface VariantDataAttributes {\n sku: string;\n variantEncodedId: string;\n fallbackDisplay: string;\n extraChargeMultiplier: string | number;\n priceMultiplier: string | number;\n quantityType: \"float\" | \"integer\";\n sizeUnitConversionFactor?: string | number;\n sizeExcludedFromCalculation?: boolean;\n currency: string;\n}\n\nexport default class OrderGuideRowController extends BaseController {\n public static targets = [\n \"shortDescription\",\n \"sku\",\n \"variantSelector\",\n \"pricePerUom\",\n \"rowTotalPrice\",\n ];\n\n private declare readonly shortDescriptionTarget: HTMLTableCellElement;\n private declare readonly skuTarget: HTMLTableCellElement;\n private declare readonly variantSelectorTarget: HTMLSelectElement;\n private declare readonly pricePerUomTargets: HTMLDivElement[];\n private declare readonly rowTotalPriceTarget: HTMLDivElement;\n\n public static outlets = [\n Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier,\n ];\n private declare readonly mercorPurchaseConfiguratorExtraInfoOutlets: PurchaseConfiguratorExtraInfoController[];\n private get extraInfoControllers() {\n return this.mercorPurchaseConfiguratorExtraInfoOutlets;\n }\n\n protected declare quantityData: { [key: string]: VariantDataAttributes };\n\n private get formFieldControllers(): FormFieldController[] {\n return this.getSpecificChildControllers(\n FormFieldController,\n );\n }\n\n onInitialize() {\n this.onConnect(() => {\n this.displaySelectedVariant(this.variantSelectorTarget.value);\n });\n\n this.quantityData = this.getRequiredDataAttrAsJSON<{\n [key: string]: VariantDataAttributes;\n }>(\"variantsQuantityData\");\n\n return super.onInitialize();\n }\n\n private isCurrentConfigurationValid(hasRequiredSize: boolean) {\n const size = this.currentSizeField;\n const req = hasRequiredSize && this.currentQuantityField!.valid;\n return size ? size.valid && req : req;\n }\n\n public get selectedVariant() {\n return this.variantSelectorTarget.value;\n }\n\n public handleVariantChanged(evt: Event) {\n this.displaySelectedVariant(this.selectedVariant);\n this.updateCalculations();\n }\n\n public handlePortionSizeChanged(evt: Event) {\n const size = parseVariantSize(this.currentSize);\n if (size && size.gt(1000000)) {\n this.currentSizeField!.value = \"1000000\";\n }\n this.updateCalculations();\n }\n\n public handleQuantityChanged(evt: Event) {\n const qty = parseVariantSize(this.currentQuantity);\n if (qty && qty.gt(1000000)) {\n this.currentQuantityField!.value = \"1000000\";\n }\n this.updateCalculations();\n }\n\n private updateCalculations() {\n // Hard code something in case the data attr parsing goes belly-up\n let fallbackDisplay = \"-\";\n\n try {\n const variant = this.selectedVariant;\n const sku = this.quantityData[variant].sku;\n\n const quantity = this.currentQuantity;\n\n const size = this.currentSize;\n const parsedSize = parseVariantSize(size);\n const validSize = !isNullOrBigZero(parsedSize);\n const hasSize = size != undefined;\n\n const {\n currency,\n extraChargeMultiplier,\n priceMultiplier,\n quantityType,\n sizeExcludedFromCalculation,\n sizeUnitConversionFactor,\n ...other\n } = this.quantityData[variant];\n\n // We can now get the real fallback display to use\n fallbackDisplay = other.fallbackDisplay;\n\n // Generate and set the total price\n const opts = {\n currency,\n extraChargeMultiplier,\n locale: getAppConfiguration(\"locale\"),\n priceMultiplier,\n quantity,\n quantityType,\n size,\n sizeExcludedFromCalculation,\n sizeUnitConversionFactor,\n };\n const totalPriceNumber = calculateTotalPriceNumber(opts);\n const totalPrice = calculateTotalPriceForDisplay(opts, totalPriceNumber);\n\n this.updateRowTotal(totalPrice !== null ? totalPrice : fallbackDisplay);\n //this.updateTotalPriceNumber(totalPriceNumber, size);\n\n // Update the info sections, if any\n this.extraInfoControllers.forEach((c) =>\n c.updateValue({ quantity, quantityType, size, fallbackDisplay }),\n );\n\n this.checkMarks(\n totalPriceNumber > 0,\n sku,\n variant,\n this.isCurrentConfigurationValid(hasSize ? validSize : true),\n );\n\n const detail: ProductPriceChangedDetail = {\n totalPriceNumber,\n sku,\n variant,\n size,\n parsedSize,\n validSize,\n hasSize,\n };\n\n // When a new estimated price is calculated on this row, we dispatch an event so a parent controller can update any totals.\n this.dispatch(\"product_price_change\", {\n bubbles: true,\n cancelable: false,\n detail,\n });\n\n if (this.currentSizeField) {\n this.currentSizeField.required =\n hasSize && !validSize && totalPriceNumber > 0;\n }\n } catch (e) {\n // Ru-roh, something's gone wrong when parsing the attributes\n // TODO handle this error: show the user somehow\n console.error(\"Order guide calc error\", e);\n this.updateRowTotal(\"!!\");\n }\n }\n\n private updateRowTotal(formattedTotal: string) {\n safelySetInnerHTML(\n this.rowTotalPriceTarget,\n markAsSafeHTML(formattedTotal),\n );\n }\n\n private displaySelectedVariant(variant: string) {\n const toggler = (field: BaseController) => {\n const encodedId = field.getOptionalDataAttr(\"variantEncodedId\");\n if (encodedId != undefined) {\n const current = encodedId == variant;\n field.disabled = !current;\n this.toggleTargetElementClasses(field.element, current, [\"hidden\"], []);\n }\n };\n this.formFieldControllers.forEach(toggler);\n this.extraInfoControllers.forEach(toggler);\n this.pricePerUomTargets.forEach((target) => {\n if (variant == target.getAttribute(\"data-variant-encoded-id\")) {\n target.classList.remove(\"hidden\");\n } else {\n target.classList.add(\"hidden\");\n }\n });\n }\n\n private get currentQuantity(): string {\n return this.currentQuantityField!.value;\n }\n\n private get currentQuantityField() {\n return this.formFieldControllers.find(\n (field) =>\n field.element.id.startsWith(\"quantity\") &&\n field.getOptionalDataAttr(\"variantEncodedId\") == this.selectedVariant,\n );\n }\n\n private get currentSize(): string | undefined {\n const field = this.currentSizeField;\n return field ? field.value : undefined;\n }\n\n private get currentSizeField() {\n return this.formFieldControllers.find(\n (field) =>\n field.element.id.startsWith(\"portion-size\") &&\n field.getOptionalDataAttr(\"variantEncodedId\") == this.selectedVariant,\n );\n }\n\n public hideOnSearch(search: string) {\n const st = search.trim().toLowerCase();\n if (st.length < 2 || st == \"\") {\n this.element.classList.remove(\"hidden\");\n return;\n }\n const matches =\n this.shortDescriptionTarget.innerText.toLowerCase().includes(st) ||\n this.sku.includes(st);\n\n this.element.classList.toggle(\"hidden\", !matches);\n }\n\n public get sku() {\n return this.skuTarget.innerText.toLowerCase();\n }\n\n public sortableParam(name: string) {\n switch (name) {\n case \"sku\":\n return this.sku;\n case \"description\":\n return this.shortDescriptionTarget.innerText;\n }\n }\n\n private checkMarks(\n hasTotal: boolean,\n sku: string,\n variant: string,\n isValidConfiguration: boolean,\n ) {\n const group = document.getElementById(`order-guide-check-${sku}`);\n // set the visibility to hidden of all the child elements of group\n if (group) {\n for (const child of group.children) {\n (child as HTMLDivElement).style.display = \"none\";\n }\n }\n\n const el = document.getElementById(`order-guide-check-${sku}-${variant}`);\n const elWarn = document.getElementById(\n `order-guide-warn-${sku}-${variant}`,\n );\n if (isValidConfiguration) {\n if (el) el.style.display = hasTotal ? \"block\" : \"none\";\n if (elWarn) elWarn.style.display = \"none\";\n } else {\n if (el) el.style.display = \"none\";\n if (elWarn) elWarn.style.display = \"block\";\n }\n }\n}\n", "import { Decor__Tables__DataTableRowControllerIdentifier } from \"controllers/identifiers\";\nimport BaseController from \"decor/base_controller\";\nimport DataTableRowController from \"decor/tables/data_table_row_controller\";\n\nexport default class ModifyOrderFormController extends BaseController {\n public static outlets = [Decor__Tables__DataTableRowControllerIdentifier];\n private declare readonly decorTablesDataTableRowOutlets: DataTableRowController[];\n private get rowControllers() {\n return this.decorTablesDataTableRowOutlets;\n }\n\n public toggleDisableRow(evt: CustomEvent<{ rowId: string }>) {\n const { rowId } = evt.detail;\n const rowToToggle = this.rowControllers.find((rc) => rc.id === rowId);\n if (rowToToggle) {\n rowToToggle.disabled = !rowToToggle.disabled;\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport ModifyOrderFormController from \"mercor/order_management/modify_order_form_controller\";\n\nexport default class BreakdownRemoveItemController extends BaseController {\n public static targets = [\"input\"];\n\n private declare readonly inputTarget: HTMLInputElement;\n\n public handleRemoveIconClick() {\n this.toggleInput();\n this.dispatchRemoveEvent();\n }\n\n private get rowId() {\n return this.getRequiredDataAttr(\"rowId\");\n }\n\n private dispatchRemoveEvent() {\n this.dispatch(\"disable-toggled\", {\n prefix: ModifyOrderFormController.identifier,\n bubbles: true,\n cancelable: false,\n detail: {\n rowId: this.rowId,\n },\n });\n }\n\n private toggleInput() {\n if (this.inputTarget.value === \"true\") {\n this.inputTarget.value = \"false\";\n } else {\n this.inputTarget.value = \"true\";\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class InputFinalDetailsConfirmationController extends BaseController {\n public static targets = [\"checkbox\", \"submit\"];\n\n private declare readonly submitTarget: HTMLButtonElement;\n private declare readonly checkboxTarget: HTMLInputElement;\n\n public handleConfirmationChanges() {\n this.submitTarget.disabled = !this.checkboxTarget.checked;\n }\n}\n", "import ModifyOrderFormController from \"mercor/order_management/modify_order_form_controller\";\n\nexport default class InputFinalDetailsFormController extends ModifyOrderFormController {}\n", "import SelectController from \"decor/forms/select_controller\";\nimport BaseController from \"decor/base_controller\";\nimport { markAsSafeHTML } from \"lib/util/safe_html\";\nimport { Category } from \"lib/types\";\nimport { Decor__Forms__SelectControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class ProductCategoryFilterTierController extends BaseController {\n public static outlets = [Decor__Forms__SelectControllerIdentifier];\n private declare readonly decorFormsSelectOutlet: SelectController;\n private get selectController() {\n return this.decorFormsSelectOutlet;\n }\n\n public items!: Category[];\n\n public onInitialize() {\n this.items = this.parseItems();\n return super.onInitialize();\n }\n\n public set disabled(disabled: boolean) {\n if (disabled) {\n this.selectController.empty(\"Category\");\n }\n\n this.selectController.disabled = disabled;\n }\n\n public set options(newOptions: Category[]) {\n this.data.set(\"categories\", JSON.stringify(newOptions));\n this.items = newOptions;\n\n if (newOptions.length === 0) {\n this.disabled = true;\n return;\n }\n\n this.selectController.empty(\"Category\");\n const newHtml = newOptions\n .map((category) => ``)\n .reduce((previous, current) => (previous += current));\n\n this.selectController.options = markAsSafeHTML(\n this.selectController.optionsHTML + newHtml,\n );\n this.disabled = false;\n }\n\n public get value(): string {\n return this.selectController.value;\n }\n\n private parseItems(): Category[] {\n const itemsStr = this.data.get(\"categories\");\n if (itemsStr !== null) {\n try {\n return JSON.parse(itemsStr) as Category[];\n } catch (e: any) {\n throw new Error(\n `Could not parse category filter items: for controller ${this.identifier}, was not valid JSON: ${itemsStr}`,\n );\n }\n }\n\n return [] as Category[];\n }\n}\n", "import ProductCategoryFilterTierController from \"mercor/product_category_filter_tier_controller\";\nimport BaseController from \"decor/base_controller\";\nimport {\n addParametersToQueryString,\n removeParameterFromQueryString,\n} from \"lib/util/add_parameter_to_url\";\nimport { Category } from \"lib/types\";\nimport { Mercor__ProductCategoryFilterTierControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class ProductCategoryFiltersController extends BaseController {\n public static outlets = [\n Mercor__ProductCategoryFilterTierControllerIdentifier,\n ];\n private declare readonly mercorProductCategoryFilterTierOutlets: ProductCategoryFilterTierController[];\n private get tierControllers() {\n return this.mercorProductCategoryFilterTierOutlets;\n }\n\n public items!: Category[];\n\n private debounceTimer: any = undefined;\n private timerStartTime: number = 0;\n\n public onInitialize() {\n this.items = this.parseItems();\n return super.onInitialize();\n }\n\n public tier0Selected({ detail: { index } }: CustomEvent) {\n this.tierSelected(index, 0);\n }\n\n public tierClicked() {\n this.tierExpanded();\n }\n\n public tier1Selected({ detail: { index } }: CustomEvent) {\n this.tierSelected(index, 1);\n }\n\n public tier2Selected({ detail: { index } }: CustomEvent) {\n this.tierSelected(index, 2);\n }\n\n public tier3Selected({ detail: { index } }: CustomEvent) {\n this.tierSelected(index, 3);\n }\n\n public submit(e?: Event) {\n if (e) e.preventDefault();\n const lastSelectedUid =\n this.selectedValues[this.selectedValues.length - 1] ||\n this.data.get(\"rootSluggedId\")!;\n\n if (lastSelectedUid !== this.currentUid) {\n const newPathname = window.location.pathname.replace(\n this.currentUid,\n lastSelectedUid,\n );\n // Remove the paging parameters\n window.location.href =\n newPathname +\n \"?\" +\n removeParameterFromQueryString(window.location.search, \"page\");\n }\n }\n\n public embeddedSubmit(e: Event) {\n e.preventDefault();\n\n const lastSelectedUid =\n this.selectedValues[this.selectedValues.length - 1] ||\n this.data.get(\"rootSluggedId\")!;\n\n if (lastSelectedUid !== this.currentUid) {\n const newPathname = \"/marketplace/categories/\" + lastSelectedUid;\n window.location.pathname = newPathname;\n }\n }\n\n public reorder({ detail: { value } }: CustomEvent) {\n if (value) {\n const params = { order_by: value };\n window.location.search = addParametersToQueryString(\n window.location.search,\n params,\n );\n } else {\n window.location.search = removeParameterFromQueryString(\n window.location.search,\n \"order_by\",\n );\n }\n }\n\n private tierSelected(index: number, tier: number) {\n const newSelectedCategory = this.tierControllers[tier].items[index - 1];\n const nextTierControllers = this.tierControllers.slice(tier + 1);\n\n for (const tierController of nextTierControllers) {\n tierController.disabled = true;\n }\n\n if (index > 0 && newSelectedCategory) {\n if (tier < this.tierControllers.length && newSelectedCategory.c?.length) {\n // Set options for next input\n const nextTierController = this.tierControllers[tier + 1];\n nextTierController.options = newSelectedCategory.c;\n nextTierController.disabled = false;\n }\n\n if (this.getOptionalDataAttr(\"autoSubmit\") == \"true\") {\n if (this.debounceTimer) {\n this.clearDebounceTimer();\n }\n this.timerStartTime = Date.now();\n this.debounceTimer = setTimeout(() => {\n this.debounceTimer = undefined;\n this.submit();\n }, 2000);\n }\n }\n }\n\n private clearDebounceTimer() {\n clearTimeout(this.debounceTimer);\n this.debounceTimer = undefined;\n this.timerStartTime = 0;\n }\n\n private tierExpanded() {\n if (this.getOptionalDataAttr(\"autoSubmit\") == \"true\") {\n // If the timer is running and has been more than some milliseconds,\n // then clear the timer, as we are expecting the user has expanded a tier.\n // We can't clear the timer no matter what, as the user may have expanded\n // and then selected at the same time (eg via automation) and the order\n // in which the events are fired is not guaranteed to ensure the timer\n // is not cleared as soon as it is set (set by the change event).\n if (this.shouldClearDebounceTimer()) {\n this.clearDebounceTimer();\n }\n }\n }\n\n private shouldClearDebounceTimer() {\n return this.debounceTimer && Date.now() - this.timerStartTime > 100;\n }\n\n private parseItems(): Category[] {\n const itemsStr = this.data.get(\"categories\");\n\n if (itemsStr !== null) {\n try {\n return JSON.parse(itemsStr) as Category[];\n } catch (e: any) {\n throw new Error(\n `Could not parse category filter items: for controller ${this.identifier}, was not valid JSON: ${itemsStr}`,\n );\n }\n }\n\n return [] as Category[];\n }\n\n private get currentUid(): string {\n const categoryAndQuery = window.location.pathname.split(\"/\").pop() || \"\";\n return categoryAndQuery.split(\"?\").pop() || \"\";\n }\n\n private get selectedValues(): string[] {\n return this.tierControllers.map((tc) => tc.value).filter((v) => !!v);\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { showModal } from \"lib/overlay/modal\";\nimport { markAsSafeHTML } from \"lib/util/safe_html\";\n\nexport default class ProductLightboxController extends BaseController {\n public handleButtonClick(evt: Event) {\n // Stop propagation: prevent any clicks leaking out\n evt.preventDefault();\n evt.stopPropagation();\n\n // Show the dialog\n const [contentHref, placeholder] = this.getRequiredDataAttrs(\n \"contentHref\",\n \"placeholder\",\n );\n showModal({\n closeOnOverlayClick: true,\n contentHref,\n placeholder: markAsSafeHTML(placeholder),\n });\n }\n}\n", "export function stringifyEscapeQuotes(element: any): string {\n return JSON.stringify(element).replace(/'/g, \"'\");\n}\n", "const DEFAULT_TIMEOUT = 300;\n\nexport default function trackHover(\n eventType: string,\n target: HTMLBaseElement | HTMLElement,\n callback: () => void,\n timeout = DEFAULT_TIMEOUT,\n) {\n const timer = setTimeout(callback, timeout);\n\n target.addEventListener(eventType, () => {\n clearTimeout(timer);\n });\n}\n", "import ProductNavigationTierController from \"./product_navigation_tier_controller\";\nimport BaseController from \"decor/base_controller\";\nimport { stringifyEscapeQuotes } from \"lib/util/stringify_escape_quotes\";\nimport trackHover from \"lib/util/track_hover\";\nimport { ControllerWithItems, NavigationCategory } from \"lib/types\";\nimport { Mercor__ProductNavigationTierControllerIdentifier } from \"controllers/identifiers\";\n\nconst supportsTouch =\n \"ontouchstart\" in window || (navigator as any).msMaxTouchPoints;\n\nexport default class ProductNavigationController extends BaseController {\n public static targets = [\n \"dropdown\",\n \"backdrop\",\n \"navigation\",\n \"mobileButton\",\n \"primaryCategoryList\",\n ];\n\n private declare readonly dropdownTarget: HTMLElement;\n private declare readonly backdropTarget: HTMLElement;\n private declare readonly navigationTarget: HTMLElement;\n private declare readonly mobileButtonTarget: HTMLElement;\n private declare readonly primaryCategoryListTarget: HTMLElement;\n\n public static outlets = [Mercor__ProductNavigationTierControllerIdentifier];\n private declare readonly mercorProductNavigationTierOutlets: ProductNavigationTierController[];\n private get tierControllers() {\n return this.mercorProductNavigationTierOutlets;\n }\n\n public items!: NavigationCategory[];\n\n private currentPath: {\n target?: HTMLBaseElement;\n tier: number;\n key: string;\n }[] = [];\n\n private startTouchX: number = 0;\n private startTouchY: number = 0;\n\n public onInitialize() {\n this.items = this.parseItems();\n return super.onInitialize();\n }\n\n public fingerDown(evt: TouchEvent) {\n // Store current scroll position and then when finger is lifted, we determine\n // if a scroll happened, and thus do not allow the tier to change\n [this.startTouchX, this.startTouchY] = this.getTouchCoords(evt);\n }\n\n // https://stackoverflow.com/questions/41993176/determine-touch-position-on-tablets-with-javascript/61732450#61732450\n private getTouchCoords(evt: TouchEvent) {\n const actualEvent =\n typeof (evt as any).originalEvent === \"undefined\"\n ? evt\n : (evt as any).originalEvent;\n var touch = actualEvent.touches[0] || actualEvent.changedTouches[0];\n return [touch.pageX, touch.pageY];\n }\n\n public tierSelected(e: Event, tier = 0) {\n const target = e.target as HTMLBaseElement;\n const link = target.closest(\"a\");\n if (!link) {\n return;\n }\n const key = this.parseKeyAttribute(link);\n const same =\n this.currentPath.length > 0 &&\n this.currentPath[this.currentPath.length - 1].tier === tier;\n if (!same) {\n this.currentPath.push({ target: link, tier, key });\n }\n\n if (e.type === \"mouseover\" && !supportsTouch) {\n trackHover(\"mouseleave\", link, () => {\n this.selectCategory(tier, key);\n this.itemSelected(tier, link);\n });\n } else if (e.type === \"touchend\" && same && !this.isMobile) {\n // If on a tablet device when you tap on the parent category again it will close, however tapping on any other\n // category a second time, then don't prevent default and navigate to that page\n if (tier === 0) {\n e.preventDefault();\n this.closeNavigation();\n }\n } else if (e.type === \"touchend\") {\n const [clientX, clientY] = this.getTouchCoords(e as TouchEvent);\n if (\n Math.abs(clientX - this.startTouchX) > 15 ||\n Math.abs(clientY - this.startTouchY) > 15\n ) {\n // User is dragging/scrolling, don't navigate\n e.preventDefault();\n return;\n }\n if (this.selectCategory(tier, key).length > 0) {\n // This is what happens on a mobile device\n e.preventDefault();\n this.itemSelected(tier, target);\n }\n }\n }\n\n public appendTier(items: NavigationCategory[], parent: NavigationCategory) {\n const tier = this.tierControllers.length + 1;\n if (!items.length) {\n return;\n }\n const htmlClass =\n !this.isMobile && this.isLastTier(items.slice(0, 9))\n ? \"last-tier\"\n : \"regular-tier border-r border-secondary-50\";\n const tierHtml = `\n
    mercor--product-navigation#fingerDown\">\n
\n `;\n this.dropdownTarget.insertAdjacentHTML(\"beforeend\", tierHtml);\n }\n\n public get isMobile() {\n return window.innerWidth < 840;\n }\n\n public backMenu(e: Event) {\n if (this.currentPath.length == 1) {\n this.closeNavigation();\n } else if (this.currentPath.length > 1) {\n this.currentPath.pop();\n const previous = this.currentPath[this.currentPath.length - 1];\n if (previous!.tier === -1) {\n this.showDropdown();\n }\n this.selectCategory(previous!.tier, previous!.key);\n }\n }\n\n public showMenu(e: Event) {\n if (this.currentPath.length > 0) {\n this.closeNavigation();\n } else {\n this.currentPath.push({ tier: -1, key: \"\" });\n this.showDropdown();\n this.addBackdrop();\n }\n }\n\n public isLastTier(items: NavigationCategory[]) {\n if (items.find((o) => o.i.length !== 0)) {\n return false;\n }\n return true;\n }\n\n public closeNavigation(): any {\n this.removeBackdrop();\n this.setTargetElementClasses(\n this.dropdownTarget,\n [\"lg:flex\", \"md:grid\", \"grid\"],\n [\"hidden\"],\n );\n this.hideDropdown();\n this.clearCategoriesTo(0);\n this.clearPreviousActiveItem(0);\n this.currentPath = [];\n }\n\n public closeNavigationWithTimeout() {\n trackHover(\n \"mouseenter\",\n this.navigationTarget,\n this.closeNavigation.bind(this),\n );\n }\n\n private itemSelected(tier: number, target: HTMLElement) {\n if (tier === 0) {\n this.setTargetElementClasses(\n this.dropdownTarget,\n [\"hidden\"],\n [\"lg:flex\", \"md:grid\", \"grid\"],\n );\n }\n this.setActive(tier, target.closest(\"li\"));\n this.hideDropdown();\n this.addBackdrop();\n }\n\n private selectCategory(\n tier: number,\n key: string | null,\n ): NavigationCategory[] {\n if (key == null) {\n this.clearCategoriesTo(0);\n return [];\n }\n\n this.clearCategoriesTo(tier);\n const emittedController = this.controllerOfTier(tier);\n if (emittedController !== undefined) {\n const items = emittedController.items;\n const category = items.find((el) => el.k === key);\n if (category !== undefined) {\n this.appendTier(category.i, category);\n return category.i;\n }\n }\n return [];\n }\n\n private clearPreviousActiveItem(tier: number) {\n const tierTarget = this.controllerOfTier(tier);\n if (tierTarget !== null && tierTarget !== undefined) {\n tierTarget.element.querySelectorAll(\"li\").forEach((el) => {\n this.setTargetElementClasses(el, [\"active\"], []);\n });\n }\n }\n\n private setActive(tier: number, target: HTMLElement | null): void {\n this.clearPreviousActiveItem(tier);\n if (target) {\n this.setTargetElementClasses(target, [], [\"active\"]);\n }\n }\n\n private clearCategoriesTo(tier: number): void {\n this.tierControllers.slice(tier).forEach((c) => {\n if (c.element !== null && c.element.parentNode !== null) {\n c.element.parentNode.removeChild(c.element);\n }\n this.tierControllers.pop();\n });\n }\n\n private controllerOfTier(tier: number): ControllerWithItems {\n if (tier === 0) {\n return this;\n }\n\n return this.tierControllers[tier - 1] as ControllerWithItems;\n }\n\n private parseItems(): NavigationCategory[] {\n const itemsStr = this.data.get(\"categories\");\n\n if (itemsStr === null) {\n return [];\n }\n\n try {\n return JSON.parse(itemsStr) as NavigationCategory[];\n } catch (e: any) {\n throw new Error(\n `Could not parse navigation items: for controller ${this.identifier}, was not valid JSON: ${itemsStr}`,\n );\n }\n }\n\n private parseKeyAttribute(link: HTMLElement): string {\n if (link !== null) {\n return link.getAttribute(\"key\") || \"\";\n }\n return \"\";\n }\n\n private showDropdown() {\n this.setTargetElementClasses(\n this.primaryCategoryListTarget,\n [\"hidden\"],\n [],\n );\n }\n\n private hideDropdown() {\n this.setTargetElementClasses(\n this.primaryCategoryListTarget,\n [],\n [\"hidden\"],\n );\n }\n\n private removeBackdrop() {\n this.setTargetElementClasses(this.backdropTarget, [\"fixed\"], [\"hidden\"]);\n }\n\n private addBackdrop() {\n this.setTargetElementClasses(this.backdropTarget, [\"hidden\"], [\"fixed\"]);\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { NavigationCategory } from \"lib/types\";\nimport ProductNavigationController from \"./product_navigation_controller\";\n\nexport default class ProductNavigationTierController extends BaseController {\n public items: NavigationCategory[] = [];\n private tier = 1;\n private parentController!: ProductNavigationController;\n private parentCategory!: NavigationCategory;\n\n public onInitialize() {\n this.onConnect(() => {\n this.parentController = this.parseParentController();\n this.tier = this.parseTier();\n this.items = this.parseItems();\n this.parentCategory = this.parseParentCategory();\n\n this.render();\n\n return () => {\n this.element?.parentNode?.removeChild(this.element);\n };\n });\n\n return super.onInitialize();\n }\n\n public itemHovered(e: Event) {\n this.parentController.tierSelected(e, this.tier);\n }\n\n public get isMobile() {\n return window.innerWidth < 840;\n }\n\n private render(): void {\n let itemsToRender = this.items.filter((i) => i.s);\n\n if (this.isMobile) {\n const seeAllHtml = `\n
  • \n mercor--product-navigation#backMenu\">\n \n Go Back...\n \n
  • \n
  • \n \n
    \n
    \n
    \n ${\n this.parentCategory.m\n ? `\"${this.parentCategory.n}\"`\n : '
    '\n }\n
    \n
    \n

    \n See all ${this.parentCategory.n}

    \n
    \n
    \n
    \n
    \n
    \n
  • \n `;\n this.element.insertAdjacentHTML(\"beforeend\", seeAllHtml);\n this.renderItems(itemsToRender);\n return;\n }\n // Truncate to first 9 items if there are parent categories present & add placeholder\n if (\n itemsToRender.length > 9 &&\n itemsToRender.find((el) => el.sic > 0) !== undefined\n ) {\n itemsToRender = itemsToRender.slice(0, 9);\n this.renderItems(itemsToRender);\n\n const seeAllHtml = `\n
  • \n See all\n
  • \n `;\n\n this.element.insertAdjacentHTML(\"beforeend\", seeAllHtml);\n return;\n }\n\n this.renderItems(itemsToRender.slice(0, 9));\n\n if (itemsToRender.length > 10) {\n this.parentController.appendTier(\n this.items.slice(9),\n this.parentCategory,\n );\n }\n }\n\n private renderItems(items: NavigationCategory[]) {\n items.forEach((item) => {\n let arrowHtml = \"\";\n let actionHtml = \"\";\n\n if (item.sic > 0) {\n arrowHtml =\n '';\n actionHtml = `mouseover->mercor--product-navigation-tier#itemHovered\n touchend->mercor--product-navigation-tier#itemHovered\n ${this.tier}Selected click->mercor--product-navigation-tier#itemHovered`;\n }\n\n const imageHtml = `\"${item.n}\"`;\n\n const itemHtml = `
  • \n \n
    \n
    \n
    \n ${\n item.m\n ? imageHtml\n : '
    '\n }\n
    \n
    \n

    ${\n item.n\n }

    \n
    \n
    \n
    ${arrowHtml}
    \n
    \n
    \n ${item.n}\n ${arrowHtml}\n
    \n
    \n
  • `;\n\n this.element.insertAdjacentHTML(\"beforeend\", itemHtml);\n });\n }\n\n private parseParentCategory(): NavigationCategory {\n const categoryStr = this.data.get(\"parentCategory\");\n\n if (categoryStr !== null) {\n try {\n return JSON.parse(categoryStr) as NavigationCategory;\n } catch (e: any) {\n throw new Error(\n `Could not parse category navigation items on tier: for controller ${this.identifier}, was not valid JSON: ${categoryStr}`,\n );\n }\n }\n return {} as NavigationCategory;\n }\n\n private parseParentController(): ProductNavigationController {\n return this.application.controllers.find((controller) => {\n return controller.context.identifier === \"mercor--product-navigation\";\n }) as ProductNavigationController;\n }\n\n private parseItems(): NavigationCategory[] {\n const itemsStr = this.data.get(\"items\");\n\n if (itemsStr !== null) {\n try {\n return JSON.parse(itemsStr) as NavigationCategory[];\n } catch (e: any) {\n throw new Error(\n `Could not parse navigation items: for controller ${this.identifier}, was not valid JSON: ${itemsStr}`,\n );\n }\n }\n return [] as NavigationCategory[];\n }\n\n private parseTier(): number {\n return parseInt(this.data.get(\"tier\") as string, 10);\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { closeModal, showModal } from \"lib/overlay/modal\";\nimport { markAsSafeHTML } from \"lib/util/safe_html\";\nimport { addParametersToQueryString } from \"lib/util/add_parameter_to_url\";\n\nfunction getFormElementValueByName(\n form: Element,\n namePrefix: string,\n name: string,\n checked = false,\n) {\n const el = form.querySelector(\n `input[name='${namePrefix}[${name}]']${checked ? \":checked\" : \"\"}`,\n ) as HTMLSelectElement | null;\n const selectEl = form.querySelector(\n `select[name='${namePrefix}[${name}]']`,\n ) as HTMLSelectElement | null;\n if (el) {\n return el.value;\n } else if (selectEl) {\n return selectEl.options[selectEl.selectedIndex].value;\n } else {\n return \"\";\n }\n}\n\nexport default class AddNoteController extends BaseController {\n public static targets = [\"notes\", \"triggerButton\"];\n\n private declare readonly notesTarget: HTMLInputElement;\n private declare readonly triggerButtonTarget: HTMLInputElement;\n\n public handleButtonClick(evt: Event) {\n // Stop propagation: prevent any clicks leaking out\n evt.preventDefault();\n evt.stopPropagation();\n\n let params = {};\n if (this.data.get(\"lightbox\") === \"true\") {\n const namePrefix = this.data.get(\"formName\");\n const form = this.findParentElementByTagName(this.notesTarget, \"form\");\n if (!form || !namePrefix) return;\n\n params = {\n // eslint-disable-next-line @typescript-eslint/camelcase\n chosen_variant: getFormElementValueByName(\n form,\n namePrefix,\n \"chosen_variant\",\n true,\n ),\n // eslint-disable-next-line @typescript-eslint/camelcase\n portion_size: getFormElementValueByName(\n form,\n namePrefix,\n \"portion_size\",\n ),\n quantity: getFormElementValueByName(form, namePrefix, \"quantity\"),\n // eslint-disable-next-line @typescript-eslint/camelcase\n delivery_date: getFormElementValueByName(\n form,\n namePrefix,\n \"delivery_date\",\n ),\n };\n }\n\n // Show the dialog\n const [contentHref, placeholder] = this.getRequiredDataAttrs(\n \"contentHref\",\n \"placeholder\",\n );\n showModal({\n onClosing: (e) => {\n if (e.detail.closeReason === \"save\") {\n this.notesTarget.value = (\n document.getElementsByName(\n \"order_note[note]\",\n )[0] as HTMLInputElement\n ).value;\n } else if (e.detail.closeReason === \"delete\") {\n this.notesTarget.value = \"\";\n }\n\n if (this.data.get(\"lightbox\") === \"true\") {\n // Reopen the lightbox of the product\n const [lightboxContentHref, lightboxPlaceholder] =\n this.getRequiredDataAttrs(\"lightboxContentHref\", \"placeholder\");\n return setTimeout(() => {\n return showModal({\n contentHref: `${lightboxContentHref}?${addParametersToQueryString(\n \"\",\n {\n notes: this.notesTarget.value,\n ...params,\n },\n )}`,\n closeOnOverlayClick: true,\n placeholder: markAsSafeHTML(lightboxPlaceholder),\n });\n }, 400); // FIXME: we need a better way.. currently after 200ms of closing a dialog a callback\n // sets the dialog to hidden (to allow for fadeout animation) but if we re-show in less than 200ms\n // we are immediately hidden again by the callback\n }\n const buttonElement = this.triggerButtonTarget;\n if (buttonElement) {\n if (this.notesTarget.value) {\n // tslint:disable-next-line:no-inner-html\n buttonElement.innerHTML =\n 'Edit note to seller';\n } else {\n // tslint:disable-next-line:no-inner-html\n buttonElement.innerHTML =\n 'Add note to seller';\n }\n }\n },\n contentHref:\n contentHref + \"?note=\" + encodeURIComponent(this.notesTarget.value),\n placeholder: markAsSafeHTML(placeholder),\n });\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default abstract class PurchaseConfiguratorVariantAbstract extends BaseController {\n public get id() {\n return this.data.get(\"variantEncodedId\");\n }\n\n public set isCurrent(isCurrent: boolean) {\n const classToToggle =\n \"shopping__purchase-configurator__variant-details--current\";\n // IE11 don't support second parameter in classList.toggle(classNmae, condition)\n isCurrent\n ? this.element.classList.add(classToToggle)\n : this.element.classList.remove(classToToggle);\n }\n}\n", "import PurchaseConfiguratorVariantAbstract from \"mercor/purchase_configurator/purchase_configurator_variant_abstract\";\nimport { calculateExtraInfoAmountForDisplay } from \"lib/price_calculations\";\nimport { getAppConfiguration } from \"lib/app_configuration\";\n\ninterface IDataAttributes {\n multiplier: string | number;\n sizeExcludedFromCalculation?: boolean;\n sizeCalculationPerformDivision?: boolean;\n}\n\ninterface IUpdateValueOptions {\n quantity: string;\n quantityType: string;\n size?: string;\n fallbackDisplay: string;\n}\n\nabstract class BasePurchaseConfiguratorExtraInfoController extends PurchaseConfiguratorVariantAbstract {\n public readonly valueTarget!: HTMLSpanElement;\n}\n\nexport default class PurchaseConfiguratorExtraInfoController extends (PurchaseConfiguratorVariantAbstract as typeof BasePurchaseConfiguratorExtraInfoController) {\n public static targets = [\"value\"];\n\n public updateValue({\n quantity,\n quantityType,\n size,\n fallbackDisplay,\n }: IUpdateValueOptions) {\n let valueDisplay = null;\n\n try {\n const {\n multiplier,\n sizeExcludedFromCalculation,\n sizeCalculationPerformDivision,\n } = this.getRequiredDataAttrAsJSON(\"data\");\n valueDisplay = calculateExtraInfoAmountForDisplay({\n locale: getAppConfiguration(\"locale\"),\n multiplier,\n quantity,\n quantityType,\n size,\n sizeCalculationPerformDivision,\n sizeExcludedFromCalculation,\n });\n } catch (e) {\n // Ru-roh, something's gone wrong when parsing the attributes\n // TODO handle this error: show the user somehow?\n console.error(\"Extra info calc error\", e);\n }\n\n // Set the value, or the fallback\n this.value = valueDisplay !== null ? valueDisplay : fallbackDisplay;\n }\n\n private set value(val: string) {\n this.valueTarget.textContent = val;\n }\n}\n", "import PurchaseConfiguratorVariantAbstract from \"mercor/purchase_configurator/purchase_configurator_variant_abstract\";\nimport {\n calculateTotalPriceForDisplay,\n calculateTotalPriceNumber,\n} from \"lib/price_calculations\";\nimport PurchaseConfiguratorQuantityExtraInfoController from \"./extra_info_controller\";\nimport { getAppConfiguration } from \"lib/app_configuration\";\nimport { Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier } from \"controllers/identifiers\";\n\ninterface DataAttributes {\n fallbackDisplay: string;\n extraChargeMultiplier: string | number;\n priceMultiplier: string | number;\n quantityType: \"float\" | \"integer\";\n sizeExcludedFromCalculation?: boolean;\n currency: string;\n variantEncodedId: number;\n}\n\nabstract class BasePurchaseConfiguratorQuantityCalculatorController extends PurchaseConfiguratorVariantAbstract {\n public readonly fieldsetTarget!: HTMLFieldSetElement;\n public readonly quantityTarget!: HTMLInputElement;\n public readonly quantityErrorTarget!: HTMLParagraphElement;\n public readonly sizeTarget!: HTMLInputElement | HTMLSelectElement;\n public readonly hasSizeTarget!: boolean;\n public readonly sizeErrorTarget!: HTMLParagraphElement;\n public readonly hasSizeErrorTarget!: boolean;\n public readonly totalPriceTarget!: HTMLSpanElement;\n}\n\nexport default class PurchaseConfiguratorQuantityCalculatorController extends (PurchaseConfiguratorVariantAbstract as typeof BasePurchaseConfiguratorQuantityCalculatorController) {\n public static outlets = [\n Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier,\n ];\n private declare readonly mercorPurchaseConfiguratorExtraInfoOutlets: PurchaseConfiguratorQuantityExtraInfoController[];\n private get extraInfoControllers() {\n return this.mercorPurchaseConfiguratorExtraInfoOutlets;\n }\n\n public static targets = [\n \"fieldset\",\n \"quantity\",\n \"quantityError\",\n \"size\",\n \"sizeError\",\n \"totalPrice\",\n ];\n protected quantityData: any;\n\n public onInitialize() {\n this.onConnect(() => {\n this.handleFieldsetInput();\n });\n\n this.quantityData =\n this.getRequiredDataAttrAsJSON(\"quantityData\");\n return super.onInitialize();\n }\n\n public set isCurrent(isCurrent: boolean) {\n super.isCurrent = isCurrent;\n if (isCurrent) {\n this.enableInputs();\n } else {\n this.disableInputs();\n }\n }\n\n public get hasSize() {\n return !!this.hasSizeTarget;\n }\n\n public handleFieldsetInput() {\n // Hard code something in case the data attr parsing goes belly-up\n let fallbackDisplay = \"-\";\n\n try {\n this.quantityData =\n this.getRequiredDataAttrAsJSON(\"quantityData\");\n const {\n currency,\n extraChargeMultiplier,\n priceMultiplier,\n quantityType,\n sizeExcludedFromCalculation,\n sizeUnitConversionFactor,\n ...other\n } = this.quantityData;\n\n // We can now get the real fallback display to use\n fallbackDisplay = other.fallbackDisplay;\n\n // Grab the actual values from the UI\n const quantity = this.quantityTarget.value;\n const size = this.hasSizeTarget ? this.sizeTarget.value : undefined;\n\n // Generate and set the total price\n const opts = {\n currency,\n extraChargeMultiplier,\n locale: getAppConfiguration(\"locale\"),\n priceMultiplier,\n quantity,\n quantityType,\n size,\n sizeExcludedFromCalculation,\n sizeUnitConversionFactor,\n };\n const totalPriceNumber = calculateTotalPriceNumber(opts);\n const totalPrice = calculateTotalPriceForDisplay(opts, totalPriceNumber);\n\n this.totalPrice = totalPrice !== null ? totalPrice : fallbackDisplay;\n this.updateTotalPriceNumber(totalPriceNumber, size);\n\n // Update the info sections, if any\n this.extraInfoControllers.forEach((c) =>\n c.updateValue({ quantity, quantityType, size, fallbackDisplay }),\n );\n } catch (e) {\n // Ru-roh, something's gone wrong when parsing the attributes\n // TODO handle this error: show the user somehow\n console.error(\"Error on purcon input\", e);\n this.totalPrice = fallbackDisplay;\n }\n }\n\n protected updateTotalPriceNumber(price: number, size: string | undefined) {\n // This can be overwritten by whatever class wants to get updated on the est. price\n return;\n }\n\n protected set totalPrice(price: string) {\n this.totalPriceTarget.textContent = price;\n }\n\n private enableInputs() {\n // Rails-UJS will support the automatic removal of input data from within disabled fieldsets soon.\n // For now we need to disable inner inputs manually.\n // We don't care about disabling through the MDC instance, since the inputs will be hidden anyway, so styling changes don't matter.\n this.fieldsetTarget.removeAttribute(\"disabled\");\n\n // TODO we can remove this hack once Rails has support for not serializing form inputs inside disabled fieldsets\n // https://github.com/rails/rails/pull/36764\n this.quantityTarget.removeAttribute(\"disabled\");\n if (this.hasSizeTarget) {\n this.sizeTarget.removeAttribute(\"disabled\");\n }\n }\n\n private disableInputs() {\n // Rails-UJS will support the automatic removal of input data from within disabled fieldsets soon.\n // For now we need to disable inner inputs manually.\n // We don't care about disabling through the MDC instance, since the inputs will be hidden anyway, so styling changes don't matter.\n this.fieldsetTarget.setAttribute(\"disabled\", \"disabled\");\n\n // TODO we can remove this hack once Rails has support for not serializing form inputs inside disabled fieldsets\n // https://github.com/rails/rails/pull/36764\n this.quantityTarget.setAttribute(\"disabled\", \"disabled\");\n if (this.hasSizeTarget) {\n this.sizeTarget.setAttribute(\"disabled\", \"disabled\");\n }\n }\n}\n", "import PurchaseConfiguratorVariantAbstract from \"mercor/purchase_configurator/purchase_configurator_variant_abstract\";\n\n// Just here to connect up to the correct ERB view.\n// Inherits all behaviour from the base class.\nexport default class PurchaseConfiguratorUomPricingDetailsController extends PurchaseConfiguratorVariantAbstract {}\n", "import BaseController from \"decor/base_controller\";\nimport { markAsSafeHTML, safelySetInnerHTML } from \"lib/util/safe_html\";\nimport axios from \"lib/axios\";\n\nexport default class ShoppingCartDropdownController extends BaseController {\n public static readonly targets = [\"total\"];\n\n private declare readonly totalTarget: HTMLElement;\n\n public async updateTotalOnDisplay(event: CustomEvent) {\n const location = event.detail.basePath.split(\"/\").slice(3, 7).join(\"/\");\n\n // Trigger update of total price\n axios\n .get(`/${location}/carts/total`, {\n headers: { Accept: \"text/fragment\" },\n })\n .then((resp) => {\n safelySetInnerHTML(this.totalTarget, markAsSafeHTML(resp.data));\n })\n .catch((e) => {\n console.error(\"Could not fetch cart total fragment\", e);\n });\n }\n}\n", "import { AjaxResponseEvent } from \"lib/types\";\n\nimport PurchaseConfiguratorVariantAbstract from \"mercor/purchase_configurator/purchase_configurator_variant_abstract\";\nimport BaseController from \"decor/base_controller\";\nimport { localeMessage } from \"lib/i18n\";\nimport { closeModal } from \"lib/overlay/modal\";\nimport { showNotification } from \"lib/overlay/notification\";\nimport { markAsSafeHTML } from \"lib/util/safe_html\";\nimport ShoppingCartDropdownController from \"mercor/shopping_cart_dropdown_controller\";\nimport {\n Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier,\n Mercor__PurchaseConfigurator__QuantityCalculatorControllerIdentifier,\n Mercor__PurchaseConfigurator__UomPricingDetailsControllerIdentifier,\n} from \"controllers/identifiers\";\n\nexport default class PurchaseConfiguratorController extends BaseController {\n public static outlets = [\n Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier,\n Mercor__PurchaseConfigurator__QuantityCalculatorControllerIdentifier,\n Mercor__PurchaseConfigurator__UomPricingDetailsControllerIdentifier,\n ];\n\n private declare readonly mercorPurchaseConfiguratorExtraInfoOutlets: PurchaseConfiguratorVariantAbstract[];\n private declare readonly mercorPurchaseConfiguratorQuantityCalculatorOutlets: PurchaseConfiguratorVariantAbstract[];\n private declare readonly mercorPurchaseConfiguratorUomPricingDetailsOutlets: PurchaseConfiguratorVariantAbstract[];\n\n private get variantControllers() {\n return [\n ...this.mercorPurchaseConfiguratorExtraInfoOutlets,\n ...this.mercorPurchaseConfiguratorQuantityCalculatorOutlets,\n ...this.mercorPurchaseConfiguratorUomPricingDetailsOutlets,\n ];\n }\n\n public static targets = [\"form\"];\n // private declare readonly formTarget: HTMLFormElement;\n\n public onInitialize() {\n // Ensure that all fields except for the chosen variant are initialized as disabled.\n // TODO we can remove this hack once Rails has support for not serializing form inputs inside disabled fieldsets\n // https://github.com/rails/rails/pull/36764\n this.onConnect(() => {\n const chosenVariant = this.getRequiredDataAttr(\"chosenVariant\");\n this.variantControllers.forEach((vc) => {\n vc.isCurrent = vc.id === chosenVariant;\n });\n });\n\n return super.onInitialize();\n }\n\n public handleVariantChanged(evt: Event) {\n const { value: chosenVariantId } = evt.target as HTMLInputElement;\n this.chosenVariant = chosenVariantId;\n }\n\n public handleCancelButton(evt: Event) {\n evt.preventDefault();\n // trigger event which parent should listen for\n closeModal();\n }\n\n public formSubmitSuccess(evt: AjaxResponseEvent) {\n const [data, status, xhr] = evt.detail;\n closeModal();\n\n this.emitEvent(window, ShoppingCartDropdownController, \"update-total\", {\n basePath: xhr.responseURL,\n });\n\n showNotification({\n content: markAsSafeHTML(xhr.response),\n });\n }\n\n public formSubmitError(evt: AjaxResponseEvent) {\n const [data, status, xhr] = evt.detail;\n // TODO show this in a flash container somewhere\n try {\n const response = JSON.parse(xhr.response);\n console.error(\"Failed to submit the purcon form\", response);\n showNotification({\n content: markAsSafeHTML(\n response.message || localeMessage(\"generic_server_error\"),\n ),\n timeout: 5000,\n });\n } catch (e: any) {\n throw new Error(\n `Could not parse form Submit response (${this.identifier}), was not valid JSON: ${xhr.response} (status ${status})`,\n );\n }\n }\n\n private set chosenVariant(chosenVariantId: string) {\n this.variantControllers.forEach((vc) => {\n vc.isCurrent = vc.id === chosenVariantId;\n });\n }\n}\n", "import DataTableSearchAndFilterController from \"decor/search_and_filter_controller\";\nimport flatpickr from \"flatpickr\";\nimport { Instance } from \"flatpickr/dist/types/instance\";\n\nexport default class ReportFiltersController extends DataTableSearchAndFilterController {\n public static readonly targets =\n DataTableSearchAndFilterController.targets.concat([\"calendarInput\"]);\n\n public declare readonly calendarInputTarget: HTMLInputElement;\n public declare readonly hasCalendarInputTarget: boolean;\n\n public previousDateRange() {\n const currentStep = parseInt(this.getRequiredDataAttr(\"dateRangeStep\"), 10);\n const previous = currentStep - 1;\n this.addFilterParam(\"date_range_step\", previous.toString());\n this.handleApply(false);\n }\n\n public nextDateRange() {\n const currentStep = parseInt(this.getRequiredDataAttr(\"dateRangeStep\"), 10);\n const next = currentStep + 1;\n this.addFilterParam(\"date_range_step\", next.toString());\n this.handleApply(false);\n }\n\n public handleRangePicker(evt: Event) {\n const datePicker = flatpickr(this.calendarInputTarget as HTMLInputElement, {\n mode: \"range\",\n onClose: (selectedDates: Date[], dateStr: string, instance: Instance) => {\n if (selectedDates.length == 2) {\n this.addFilterParam(\n \"custom_range\",\n selectedDates\n .map((d) => {\n return instance.formatDate(new Date(d), \"Y-m-d\");\n })\n .join(\"_\"),\n );\n this.getFilterValues();\n this.clearStep();\n this.addFilterParam(\"period\", \"custom_range\");\n this.reloadAndSetQueryParams();\n }\n },\n });\n datePicker.open();\n }\n\n private clearStep() {\n this.addFilterParam(\"date_range_step\", undefined);\n }\n\n public handleApply(clearStep: boolean = true) {\n this.getFilterValues();\n if (clearStep) this.clearStep();\n // If time period is not custom_range then remove custom_range values\n if (\n this.filters[\"period\"] !== \"custom_range\" &&\n this.filters[\"custom_range\"]\n ) {\n this.filters[\"custom_range\"] = undefined;\n }\n if (this.hasApplyButtonTarget) {\n this.applyButtonTarget.disabled = true;\n }\n this.reloadAndSetQueryParams();\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { showModal } from \"lib/overlay/modal\";\nimport { showNotification } from \"lib/overlay/notification\";\nimport DropdownController from \"decor/dropdown_controller\";\nimport { Decor__DropdownControllerIdentifier } from \"controllers/identifiers\";\n\ntype RefreshPopupMode = \"inactive\" | \"countdown\" | \"show_immediately\";\n\nconst ACTIVE_CLASS =\n \"shopping__product-serviceability-dropdown__button--active\";\nconst DROPDOWN_MINUTES_BEFORE_RUN = 60;\nconst TIMED_TOASTER_MINUTES_BEFORE_RUN = 30;\nconst TIMED_TOASTER_DISPLAY_UNTIL_IN_MINUTES = 11;\nconst DISMISSABLE_TOASTER_MINUTES_BEFORE_RUN = 10;\nconst DISMISSABLE_TOASTER_DISPLAY_UNTIL_IN_MINUTES = 1;\nconst REFRESH_POPUP_SHOW_IMMEDIATELY_DELAY = 2;\n\nexport default class ServiceabilityDropdownController extends BaseController {\n // Targets\n public static targets = [\"dropdownButton\"];\n private declare readonly dropdownButtonTarget: HTMLElement;\n\n // Outlets\n public static outlets = [Decor__DropdownControllerIdentifier];\n private declare readonly decorDropdownOutlet: DropdownController;\n public get dropdownController() {\n return this.decorDropdownOutlet;\n }\n\n public onInitialize() {\n this.onConnect(() => {\n const timeToCutOff = this.timeToCutOff;\n const refreshPopupMode = this.refreshPopupMode;\n\n if (timeToCutOff !== null && timeToCutOff > 0) {\n const timeToActivateDropdown =\n timeToCutOff - this.secondsBeforeRun(DROPDOWN_MINUTES_BEFORE_RUN);\n const timeToActivateTimedToaster =\n timeToCutOff -\n this.secondsBeforeRun(TIMED_TOASTER_MINUTES_BEFORE_RUN);\n const timeToActivateDismissableToaster =\n timeToCutOff -\n this.secondsBeforeRun(DISMISSABLE_TOASTER_MINUTES_BEFORE_RUN);\n const activateTimedToasterTimerId = this.activateTimedToaster(\n timeToCutOff,\n this.calculateTimeout(timeToActivateTimedToaster),\n );\n const activateDismissableToasterTimerId =\n this.activateDismissableToaster(\n timeToCutOff,\n this.calculateTimeout(timeToActivateDismissableToaster),\n );\n\n const activateDropdownTimerId = this.activateDropdown(\n this.calculateTimeout(timeToActivateDropdown),\n );\n const deactivateDropdownTimerId = this.deactivateDropdown(\n this.calculateTimeout(timeToCutOff),\n );\n\n const popupTimerId = this.initialiseRefreshDialog(\n refreshPopupMode,\n timeToCutOff,\n );\n\n return () => {\n clearTimeout(activateDropdownTimerId);\n clearTimeout(deactivateDropdownTimerId);\n clearTimeout(activateTimedToasterTimerId);\n clearTimeout(activateDismissableToasterTimerId);\n clearTimeout(popupTimerId);\n };\n }\n });\n\n return super.onInitialize();\n }\n\n public toggle(event: Event) {\n this.dropdownController.toggle(event);\n }\n\n public hideOnClickOutside(event?: Event) {\n if (event && this.dropdownButtonTarget.contains(event.target as Node)) {\n return;\n }\n this.dropdownController.hideOnClickOutside(event);\n }\n\n public hide() {\n this.dropdownController.hide();\n }\n\n private initialiseRefreshDialog(\n refreshPopupMode: RefreshPopupMode,\n timeToCutOff: number,\n ) {\n if (refreshPopupMode === \"inactive\") {\n return;\n }\n\n const timeoutDelay =\n refreshPopupMode === \"countdown\"\n ? timeToCutOff\n : REFRESH_POPUP_SHOW_IMMEDIATELY_DELAY;\n return this.countdownRefreshPopup(this.calculateTimeout(timeoutDelay));\n }\n\n private activateDropdown = (timeout: number) => {\n if (timeout <= 0) {\n this.addActiveClass();\n return;\n }\n return window.setTimeout(this.addActiveClass, timeout);\n };\n\n private deactivateDropdown = (timeout: number) => {\n if (timeout <= 0) {\n return;\n }\n return window.setTimeout(this.removeActiveClass, timeout);\n };\n\n private activateTimedToaster = (timeToCutOff: number, timeout: number) => {\n if (timeout > 0) {\n return window.setTimeout(this.showTimedToaster, timeout);\n }\n if (\n timeToCutOff >\n this.secondsBeforeRun(TIMED_TOASTER_DISPLAY_UNTIL_IN_MINUTES)\n ) {\n return window.setTimeout(this.showTimedToaster, 2000);\n }\n };\n\n private activateDismissableToaster = (\n timeToCutOff: number,\n timeout: number,\n ) => {\n if (timeout > 0) {\n return window.setTimeout(this.showDismissableToaster, timeout);\n }\n if (\n timeToCutOff >\n this.secondsBeforeRun(DISMISSABLE_TOASTER_DISPLAY_UNTIL_IN_MINUTES)\n ) {\n return window.setTimeout(this.showDismissableToaster, 2000);\n }\n };\n\n private countdownRefreshPopup = (timeout: number) => {\n if (timeout <= 0) {\n return;\n }\n return window.setTimeout(this.showRefreshPopup, timeout);\n };\n\n private showTimedToaster = () => {\n showNotification({\n contentHref: \"/marketplace/reminders/hurry-up\",\n timeout: 30000,\n });\n };\n\n private showDismissableToaster() {\n showNotification({\n contentHref: \"/marketplace/reminders/last-chance\",\n timeout: Infinity,\n });\n }\n\n private calculateTimeout(timeoutInSeconds: number) {\n return timeoutInSeconds * 1000;\n }\n\n private secondsBeforeRun(minutesBeforeRun: number) {\n return minutesBeforeRun * 60;\n }\n\n private addActiveClass = () => {\n this.dropdownButtonTarget.classList.add(ACTIVE_CLASS);\n };\n\n private removeActiveClass = () => {\n this.dropdownButtonTarget.classList.remove(ACTIVE_CLASS);\n };\n\n private showRefreshPopup = () => {\n const ids = this.data.get(\"cartUid\");\n const currentPage = this.data.get(\"currentPage\");\n const href = `/marketplace/reminders/refresh-page?cart_encoded_id=${ids}¤t_page=${currentPage}`;\n showModal({\n contentHref: href,\n });\n };\n\n private get timeToCutOff(): number | null {\n const timeToCutOffStr = this.data.get(\"timeToCutOff\");\n return timeToCutOffStr !== null ? parseInt(timeToCutOffStr, 10) : null;\n }\n\n private get refreshPopupMode(): RefreshPopupMode {\n const refreshPopupMode = this.data.get(\"refreshPopupMode\");\n switch (refreshPopupMode) {\n case \"show_immediately\":\n case \"countdown\":\n return refreshPopupMode;\n default:\n return \"inactive\";\n }\n }\n}\n", "/*!\n * Serialize all form data into a query string\n * (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com\n * @param {Node} form The form to serialize\n * @return {String} The serialized form data\n */\nexport function serialize(form: HTMLFormElement): string {\n // Setup our serialized data\n const serialized = [];\n\n // Loop through each field in the form\n for (const field of form.elements as any) {\n // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields\n if (\n !field.name ||\n field.disabled ||\n field.type === \"file\" ||\n field.type === \"reset\" ||\n field.type === \"submit\" ||\n field.type === \"button\"\n ) {\n continue;\n }\n\n // If a multi-select, get all selections\n if (field.type === \"select-multiple\") {\n for (const option of field.options) {\n if (!option.selected) {\n continue;\n }\n\n serialized.push(\n encodeURIComponent(field.name) +\n \"=\" +\n encodeURIComponent(option.value),\n );\n }\n }\n\n // Convert field data to a query string\n else if (\n (field.type !== \"checkbox\" && field.type !== \"radio\") ||\n field.checked\n ) {\n serialized.push(\n encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.value),\n );\n }\n }\n return serialized.join(\"&\");\n}\n", "import BaseController from \"decor/base_controller\";\nimport { removeHashesFromQueryString } from \"lib/util/add_parameter_to_url\";\nimport { serialize } from \"lib/util/serialize\";\n\nexport default class SidebarFiltersController extends BaseController {\n public static targets = [\"form\"];\n\n private declare readonly formTarget: HTMLFormElement;\n\n // Override reseting other parameters on form submit via GET method - build request url explicitly\n public submit(e: Event) {\n e.preventDefault();\n\n const serializedForm = serialize(this.formTarget);\n\n // reset query string parameters\n const queryString = removeHashesFromQueryString(\n window.location.search,\n \"ft\",\n \"utf8\",\n );\n\n window.location.search = queryString + \"&\" + serializedForm;\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class BreadcrumbsController extends BaseController {\n public mobileSelectChanged(event: Event) {\n const target = event.target as HTMLSelectElement;\n const value = target.value;\n window.location.href = value;\n }\n}\n", "import { Navigo__SideNavbarSectionControllerIdentifier } from \"controllers/identifiers\";\nimport BaseController from \"decor/base_controller\";\nimport SideNavbarSectionController from \"navigo/side_navbar_section_controller\";\n\nconst HOVER_BODY_CLASS = \"side-navbar-collapsed-hover-open\";\nconst COLLAPSED_BODY_CLASS = \"side-navbar-collapsed\";\n\nexport const SIDE_NAVBAR_MOBILE_TOGGLE_EVENT =\n \"navigo--side-navbar:toggle-mobile-overlay\";\n\nexport default class SideNavbarController extends BaseController {\n public static outlets = [Navigo__SideNavbarSectionControllerIdentifier];\n private declare readonly navigoSideNavbarSectionOutlets: SideNavbarSectionController[];\n private get sectionControllers() {\n return this.navigoSideNavbarSectionOutlets;\n }\n\n public static targets = [\n \"searchNavigation\",\n \"mobileSearchNavigation\",\n \"desktopMenu\",\n \"mobileMenu\",\n \"mobileMenuOverlay\",\n \"mobileMenuCanvas\",\n \"mobileMenuCloseButton\",\n \"desktopCollapseIcon\",\n \"desktopExpandIcon\",\n \"desktopLogo\",\n \"desktopAvatarLogo\",\n ];\n\n private declare readonly searchNavigationTarget: HTMLInputElement;\n private declare readonly mobileSearchNavigationTarget: HTMLInputElement;\n private declare readonly desktopMenuTarget: HTMLDivElement;\n private declare readonly mobileMenuTarget: HTMLDivElement;\n private declare readonly mobileMenuOverlayTarget: HTMLDivElement;\n private declare readonly mobileMenuCanvasTarget: HTMLDivElement;\n private declare readonly mobileMenuCloseButtonTarget: HTMLButtonElement;\n private declare readonly desktopCollapseIconTarget: HTMLDivElement;\n private declare readonly desktopExpandIconTarget: HTMLDivElement;\n private declare readonly desktopLogoTarget: HTMLDivElement;\n private declare readonly desktopAvatarLogoTarget: HTMLDivElement;\n\n public static classes = [\n \"mobileMenuOverlayEntering\",\n \"mobileMenuOverlayEnteringFrom\",\n \"mobileMenuOverlayEnteringTo\",\n \"mobileMenuOverlayLeaving\",\n \"mobileMenuOverlayLeavingFrom\",\n \"mobileMenuOverlayLeavingTo\",\n \"mobileMenuCanvasEntering\",\n \"mobileMenuCanvasEnteringFrom\",\n \"mobileMenuCanvasEnteringTo\",\n \"mobileMenuCanvasLeaving\",\n \"mobileMenuCanvasLeavingFrom\",\n \"mobileMenuCanvasLeavingTo\",\n \"mobileMenuCloseButtonEntering\",\n \"mobileMenuCloseButtonEnteringFrom\",\n \"mobileMenuCloseButtonEnteringTo\",\n \"mobileMenuCloseButtonLeaving\",\n \"mobileMenuCloseButtonLeavingFrom\",\n \"mobileMenuCloseButtonLeavingTo\",\n ];\n protected declare readonly mobileMenuOverlayEnteringClasses: string[];\n protected declare readonly mobileMenuOverlayEnteringFromClasses: string[];\n protected declare readonly mobileMenuOverlayEnteringToClasses: string[];\n protected declare readonly mobileMenuOverlayLeavingClasses: string[];\n protected declare readonly mobileMenuOverlayLeavingFromClasses: string[];\n protected declare readonly mobileMenuOverlayLeavingToClasses: string[];\n protected declare readonly mobileMenuCanvasEnteringClasses: string[];\n protected declare readonly mobileMenuCanvasEnteringFromClasses: string[];\n protected declare readonly mobileMenuCanvasEnteringToClasses: string[];\n protected declare readonly mobileMenuCanvasLeavingClasses: string[];\n protected declare readonly mobileMenuCanvasLeavingFromClasses: string[];\n protected declare readonly mobileMenuCanvasLeavingToClasses: string[];\n protected declare readonly mobileMenuCloseButtonEnteringClasses: string[];\n protected declare readonly mobileMenuCloseButtonEnteringFromClasses: string[];\n protected declare readonly mobileMenuCloseButtonEnteringToClasses: string[];\n protected declare readonly mobileMenuCloseButtonLeavingClasses: string[];\n protected declare readonly mobileMenuCloseButtonLeavingFromClasses: string[];\n protected declare readonly mobileMenuCloseButtonLeavingToClasses: string[];\n\n private debounceSearch?: any = undefined;\n private debounceMouseOver?: any = undefined;\n private collapsed: boolean = false;\n private overlayOpen: boolean = false;\n\n public onInitialize() {\n this.onConnect(() => {\n if (this.data.get(\"collapsed\") == \"true\") {\n this.toggleCollapseDesktopMenu();\n }\n });\n\n return super.onInitialize();\n }\n\n public toggleMobileMenu() {\n // todo toggle the mobile view\n this.overlayOpen = !this.overlayOpen;\n this.toggleMobileOverlay(this.overlayOpen);\n // Clear search\n this.searchNavigationTarget.value = \"\";\n this.mobileSearchNavigationTarget.value = \"\";\n this.search();\n }\n\n public handleMouseOver() {\n if (this.documentBody.classList.contains(COLLAPSED_BODY_CLASS)) {\n if (this.debounceMouseOver) {\n clearTimeout(this.debounceMouseOver);\n }\n this.debounceMouseOver = setTimeout(() => {\n this.debounceMouseOver = undefined;\n\n this.toggleLogo(false);\n this.documentBody.classList.add(HOVER_BODY_CLASS);\n }, 500);\n }\n }\n\n public handleMouseAway() {\n if (this.debounceMouseOver) {\n clearTimeout(this.debounceMouseOver);\n }\n if (this.documentBody.classList.contains(COLLAPSED_BODY_CLASS)) {\n this.toggleLogo(true);\n this.documentBody.classList.remove(HOVER_BODY_CLASS);\n }\n }\n\n public search() {\n const val =\n this.searchNavigationTarget.value.trim().toLowerCase() ||\n this.mobileSearchNavigationTarget.value.trim().toLowerCase();\n\n if (this.debounceSearch) {\n clearTimeout(this.debounceSearch);\n }\n this.debounceSearch = setTimeout(() => {\n this.debounceSearch = undefined;\n this.sectionControllers.forEach((section) => {\n section.filterOnSearch(val);\n });\n }, 300);\n }\n\n public toggleCollapseDesktopMenu() {\n this.collapsed = !this.collapsed;\n this.documentBody.classList.remove(HOVER_BODY_CLASS);\n if (this.collapsed) {\n this.documentBody.classList.add(COLLAPSED_BODY_CLASS);\n } else {\n this.documentBody.classList.remove(COLLAPSED_BODY_CLASS);\n }\n this.toggleLogo(this.collapsed);\n this.toggleTargetElementClasses(\n this.desktopCollapseIconTarget,\n this.collapsed,\n [],\n [\"hidden\"],\n );\n this.toggleTargetElementClasses(\n this.desktopExpandIconTarget,\n this.collapsed,\n [\"hidden\"],\n [],\n );\n }\n\n private toggleMobileOverlay(open: boolean) {\n this.desktopMenuTarget.classList.add(\"hidden\");\n if (open) {\n this.toggleTargetElementClasses(\n this.mobileMenuTarget,\n open,\n [\"hidden\"],\n [],\n );\n } else {\n setTimeout(() => {\n this.toggleTargetElementClasses(\n this.mobileMenuTarget,\n open,\n [\"hidden\"],\n [],\n );\n }, 300);\n }\n this.toggleTargetElementTransitionClasses(\n this.mobileMenuOverlayTarget,\n open,\n this.mobileMenuOverlayEnteringClasses,\n this.mobileMenuOverlayEnteringFromClasses,\n this.mobileMenuOverlayEnteringToClasses,\n this.mobileMenuOverlayLeavingClasses,\n this.mobileMenuOverlayLeavingFromClasses,\n this.mobileMenuOverlayLeavingToClasses,\n );\n this.toggleTargetElementTransitionClasses(\n this.mobileMenuCanvasTarget,\n open,\n this.mobileMenuCanvasEnteringClasses,\n this.mobileMenuCanvasEnteringFromClasses,\n this.mobileMenuCanvasEnteringToClasses,\n this.mobileMenuCanvasLeavingClasses,\n this.mobileMenuCanvasLeavingFromClasses,\n this.mobileMenuCanvasLeavingToClasses,\n );\n this.toggleTargetElementTransitionClasses(\n this.mobileMenuCloseButtonTarget,\n open,\n this.mobileMenuCloseButtonEnteringClasses,\n this.mobileMenuCloseButtonEnteringFromClasses,\n this.mobileMenuCloseButtonEnteringToClasses,\n this.mobileMenuCloseButtonLeavingClasses,\n this.mobileMenuCloseButtonLeavingFromClasses,\n this.mobileMenuCloseButtonLeavingToClasses,\n );\n }\n\n private toggleLogo(collapsed: boolean) {\n this.toggleTargetElementClasses(\n this.desktopLogoTarget,\n collapsed,\n [],\n [\"hidden\"],\n );\n this.toggleTargetElementClasses(\n this.desktopAvatarLogoTarget,\n collapsed,\n [\"hidden\"],\n [],\n );\n }\n\n private get documentBody() {\n return document.getElementsByTagName(\"body\")[0];\n }\n}\n", "import { Navigo__SideNavbarSubItemControllerIdentifier } from \"controllers/identifiers\";\nimport BaseController from \"decor/base_controller\";\nimport SideNavbarSubItemController from \"navigo/side_navbar_sub_item_controller\";\n\nexport default class SideNavbarItemController extends BaseController {\n public static outlets = [Navigo__SideNavbarSubItemControllerIdentifier];\n private declare readonly navigoSideNavbarSubItemOutlets: SideNavbarSubItemController[];\n private get subMenuItemControllers() {\n return this.navigoSideNavbarSubItemOutlets;\n }\n\n public static targets = [\"title\", \"arrow\", \"subMenu\"];\n\n private declare readonly arrowTarget: HTMLButtonElement;\n private declare readonly hasArrowTarget: boolean;\n private declare readonly titleTarget: HTMLElement;\n private declare readonly hasTitleTarget: boolean;\n private declare readonly subMenuTarget: HTMLElement;\n private declare readonly hasSubMenuTarget: boolean;\n\n public static classes = [\n \"closed\",\n \"open\",\n \"entering\",\n \"leaving\",\n \"arrowUp\",\n \"arrowDown\",\n \"shown\",\n \"filtered\",\n ];\n protected declare readonly closedClasses: string[];\n protected declare readonly openClasses: string[];\n protected declare readonly enteringClasses: string[];\n protected declare readonly leavingClasses: string[];\n protected declare readonly arrowUpClasses: string[];\n protected declare readonly arrowDownClasses: string[];\n protected declare readonly filteredClasses: string[];\n protected declare readonly shownClasses: string[];\n\n private subMenuOpen = false;\n\n public onInitialize() {\n this.onConnect(() => {\n this.subMenuOpen = this.data.get(\"selected\") == \"true\";\n });\n\n return super.onInitialize();\n }\n\n public buttonClicked() {\n this.subMenuOpen = !this.subMenuOpen;\n this.animateSubMenu();\n }\n\n public expand() {\n this.subMenuOpen = true;\n this.animateSubMenu();\n }\n\n public collapse() {\n this.subMenuOpen = false;\n this.animateSubMenu();\n }\n\n public filterOnSearch(keyword: string): boolean {\n const matchesSubItems =\n this.subMenuItemControllers.filter((item: SideNavbarSubItemController) =>\n item.filterOnSearch(keyword),\n ).length > 0;\n\n // If anything inside this item matches, expand it\n if (matchesSubItems) {\n this.expand();\n }\n\n if (!matchesSubItems) {\n const titleMatch = this.toggleOnSearch(\n keyword,\n this.element,\n [this.titleTarget],\n this.shownClasses,\n this.filteredClasses,\n );\n // If the title matches, make sure all sub are shown\n this.subMenuItemControllers.forEach(\n (item: SideNavbarSubItemController) => {\n item.filterOnSearch(\"\");\n },\n );\n return titleMatch;\n } else {\n this.setTargetElementClasses(\n this.element,\n this.filteredClasses,\n this.shownClasses,\n );\n }\n return matchesSubItems;\n }\n\n private animateSubMenu() {\n if (this.hasSubMenuTarget) {\n this.toggleTargetElementClasses(\n this.subMenuTarget,\n this.subMenuOpen,\n this.closedClasses,\n this.openClasses,\n );\n setTimeout(() => {\n this.toggleTargetElementClasses(\n this.subMenuTarget,\n this.subMenuOpen,\n this.leavingClasses,\n this.enteringClasses,\n );\n }, 100);\n }\n\n if (this.hasArrowTarget) {\n this.toggleTargetElementClasses(\n this.arrowTarget,\n this.subMenuOpen,\n this.arrowDownClasses,\n this.arrowUpClasses,\n );\n }\n }\n}\n", "import { Navigo__SideNavbarItemControllerIdentifier } from \"controllers/identifiers\";\nimport BaseController from \"decor/base_controller\";\nimport SideNavbarItemController from \"navigo/side_navbar_item_controller\";\n\nexport default class SideNavbarSectionController extends BaseController {\n public static outlets = [Navigo__SideNavbarItemControllerIdentifier];\n private declare readonly navigoSideNavbarItemOutlets: SideNavbarItemController[];\n private get itemControllers() {\n return this.navigoSideNavbarItemOutlets;\n }\n\n public static targets = [\"title\"];\n private declare readonly titleTarget: HTMLParagraphElement;\n private declare readonly hasTitleTarget: boolean;\n\n public static classes = [\"shown\", \"filtered\"];\n protected declare readonly filteredClasses: string[];\n protected declare readonly shownClasses: string[];\n\n public filterOnSearch(keyword: string): boolean {\n const matchesItems =\n this.itemControllers.filter((item: SideNavbarItemController) =>\n item.filterOnSearch(keyword),\n ).length > 0;\n\n if (!matchesItems && this.hasTitleTarget) {\n // Section has no matching items and a title\n const matchedOnTitle = this.toggleOnSearch(\n keyword,\n this.element,\n [this.titleTarget],\n this.shownClasses,\n this.filteredClasses,\n );\n // If title of section matches, the show it all\n if (matchedOnTitle) {\n this.itemControllers.forEach((item: SideNavbarItemController) =>\n item.filterOnSearch(\"\"),\n );\n }\n return matchedOnTitle;\n } else if (!matchesItems) {\n // We dont match items in the section and it has no title, so hide it\n this.setTargetElementClasses(\n this.element,\n this.shownClasses,\n this.filteredClasses,\n );\n } else {\n this.setTargetElementClasses(\n this.element,\n this.filteredClasses,\n this.shownClasses,\n );\n }\n return matchesItems;\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class SideNavbarSubItemController extends BaseController {\n public static targets = [\"title\"];\n\n private declare readonly titleTarget: HTMLHeadingElement;\n\n public static classes = [\"shown\", \"filtered\"];\n protected declare readonly filteredClasses: string[];\n protected declare readonly shownClasses: string[];\n\n public filterOnSearch(keyword: string): boolean {\n return this.toggleOnSearch(\n keyword,\n this.element,\n [this.titleTarget],\n this.shownClasses,\n this.filteredClasses,\n );\n }\n}\n", "import { SIDE_NAVBAR_MOBILE_TOGGLE_EVENT } from \"navigo/side_navbar_controller\";\nimport NavbarWithSearchController from \"navigo/navbar_with_search_controller\";\n\nexport default class TopNavbarController extends NavbarWithSearchController {\n public static targets = [\"search\"].concat(NavbarWithSearchController.targets);\n\n private declare readonly searchTarget: HTMLDivElement;\n\n public toggleMobileMenu() {\n const evt = new CustomEvent(SIDE_NAVBAR_MOBILE_TOGGLE_EVENT, {\n bubbles: true,\n cancelable: false,\n });\n window.dispatchEvent(evt);\n }\n\n public gotSearchFocus() {\n this.setTargetElementClasses(\n this.searchTarget,\n [\"md:w-1/4\"],\n [\"transform\", \"ease-in\", \"duration-200\"],\n );\n if (this.searchText()) {\n if (!this.hasSearchResults) {\n this.search();\n } else {\n this.dropdownShow(true);\n }\n }\n }\n\n public lostSearchFocus() {\n this.setTargetElementClasses(\n this.searchTarget,\n [],\n [\"md:w-1/4\", \"transform\", \"ease-out\", \"duration-200\"],\n );\n }\n}\n", "var adapters = {\n logger: typeof console !== \"undefined\" ? console : undefined,\n WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined\n};\n\nvar logger = {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now());\n adapters.logger.log(\"[ActionCable]\", ...messages);\n }\n }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n }\n }\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n }\n isRunning() {\n return this.startedAt && !this.stoppedAt;\n }\n recordMessage() {\n this.pingedAt = now();\n }\n recordConnect() {\n this.reconnectAttempts = 0;\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n }\n recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n }\n startPolling() {\n this.stopPolling();\n this.poll();\n }\n stopPolling() {\n clearTimeout(this.pollTimeout);\n }\n poll() {\n this.pollTimeout = setTimeout((() => {\n this.reconnectIfStale();\n this.poll();\n }), this.getPollInterval());\n }\n getPollInterval() {\n const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n const jitter = jitterMax * Math.random();\n return staleThreshold * 1e3 * backoff * (1 + jitter);\n }\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n }\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt;\n }\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n }\n disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n }\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout((() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n this.connection.reopen();\n }\n }), 200);\n }\n }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\",\n remote: \"remote\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n }\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n return false;\n } else {\n const socketProtocols = [ ...protocols, ...this.consumer.subprotocols || [] ];\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n }\n close({allowReconnect: allowReconnect} = {\n allowReconnect: true\n }) {\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isOpen()) {\n return this.webSocket.close();\n }\n }\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n }\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n }\n isOpen() {\n return this.isState(\"open\");\n }\n isActive() {\n return this.isState(\"open\", \"connecting\");\n }\n triedToReconnect() {\n return this.monitor.reconnectAttempts > 0;\n }\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n }\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0;\n }\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n }\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this);\n this.webSocket[`on${eventName}`] = handler;\n }\n }\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {};\n }\n }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n this.monitor.recordMessage();\n switch (type) {\n case message_types.welcome:\n if (this.triedToReconnect()) {\n this.reconnectAttempted = true;\n }\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return null;\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n if (this.reconnectAttempted) {\n this.reconnectAttempted = false;\n return this.subscriptions.notify(identifier, \"connected\", {\n reconnected: true\n });\n } else {\n return this.subscriptions.notify(identifier, \"connected\", {\n reconnected: false\n });\n }\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error() {\n logger.log(\"WebSocket onerror event\");\n }\n};\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key];\n object[key] = value;\n }\n }\n return object;\n};\n\nclass Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n perform(action, data = {}) {\n data.action = action;\n return this.send(data);\n }\n send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n }\n unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n }\n}\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n }\n this.startGuaranteeing();\n }\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n }\n startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n }\n stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n }\n retrySubscribing() {\n this.retryTimeout = setTimeout((() => {\n if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n this.pendingSubscriptions.map((subscription => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n this.subscriptions.subscribe(subscription);\n }));\n }\n }), 500);\n }\n}\n\nclass Subscriptions {\n constructor(consumer) {\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n create(channelName, mixin) {\n const channel = channelName;\n const params = typeof channel === \"object\" ? channel : {\n channel: channel\n };\n const subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n }\n add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n }\n remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n }\n reject(identifier) {\n return this.findAll(identifier).map((subscription => {\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n return subscription;\n }));\n }\n forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n return subscription;\n }\n findAll(identifier) {\n return this.subscriptions.filter((s => s.identifier === identifier));\n }\n reload() {\n return this.subscriptions.map((subscription => this.subscribe(subscription)));\n }\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n }\n notify(subscription, callbackName, ...args) {\n let subscriptions;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n }\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n }\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`);\n this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n }\n sendCommand(subscription, command) {\n const {identifier: identifier} = subscription;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n }\n}\n\nclass Consumer {\n constructor(url) {\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n this.subprotocols = [];\n }\n get url() {\n return createWebSocketURL(this._url);\n }\n send(data) {\n return this.connection.send(data);\n }\n connect() {\n return this.connection.open();\n }\n disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n }\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n }\n addSubProtocol(subprotocol) {\n this.subprotocols = [ ...this.subprotocols, subprotocol ];\n }\n}\n\nfunction createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url);\n}\n\nfunction getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n", "import { createConsumer } from \"@rails/actioncable\";\nimport BaseController from \"decor/base_controller\";\nimport { MessageNotificationData } from \"lib/types\";\n\nexport default class NotificationsController extends BaseController {\n public static targets = [\"count\"];\n\n private declare readonly countTarget: HTMLDivElement;\n\n public onInitialize() {\n const cableConsumer = createConsumer();\n\n cableConsumer.subscriptions.create(\n {\n channel: \"NotificationsChannel\",\n },\n\n {\n received: (data: MessageNotificationData) => {\n this.handleNewMessage(data);\n },\n\n connected: () => {\n return;\n },\n disconnected: () => {\n return;\n },\n },\n );\n\n this.onConnect(() => {\n cableConsumer.connect();\n\n return () => {\n cableConsumer.disconnect();\n };\n });\n\n return super.onInitialize();\n }\n\n public incrementCounter() {\n this.element.classList.add(\"cnf-messages__topbar-notifications--unread\");\n const countContent = this.countTarget.innerText;\n const currentCount =\n countContent.length === 0 ? 0 : parseInt(countContent, 10);\n this.countTarget.innerText = (currentCount + 1).toString();\n }\n\n public handleNewMessage(data: MessageNotificationData) {\n this.incrementCounter();\n }\n}\n", "import { MessageNotificationData } from \"lib/types\";\nimport NotificationsController from \"./notifications_controller\";\n\nexport default class NotificationsEmitterController extends NotificationsController {\n public handleNewMessage(data: MessageNotificationData) {\n const { message } = data;\n if (\n message.sender_user_encoded_id !==\n this.data.get(\"current-user-encoded_id\") &&\n message.type === \"Message\"\n ) {\n this.incrementCounter();\n }\n\n const event = new CustomEvent(\"notification\", {\n bubbles: true,\n cancelable: false,\n detail: data,\n });\n window.dispatchEvent(event);\n }\n}\n", null, null, null, null, null, null, "import BaseController from \"decor/base_controller\";\nimport { format } from \"timeago.js\";\n\nexport default class TimeagoController extends BaseController {\n private timeoutId!: number;\n private currentAgo!: string;\n private timestamp!: number;\n\n public onInitialize() {\n this.onConnect(() => {\n const timeStampString = this.data.get(\"timestamp\") || \"\";\n this.timestamp = parseInt(timeStampString, 10);\n this.render();\n return () => {\n this.finish();\n };\n });\n\n return super.onInitialize();\n }\n\n private finish() {\n clearTimeout(this.timeoutId);\n }\n\n private render() {\n // Tick every minute if date is older than 1 minute, tick every second otherwise\n const timeout = Date.now() - this.timestamp > 60000 ? 60000 : 1000;\n const newAgo = format(this.timestamp);\n\n if (this.currentAgo !== newAgo) {\n this.element.textContent = newAgo;\n this.currentAgo = newAgo;\n }\n\n this.timeoutId = window.setTimeout(this.render.bind(this), timeout);\n }\n}\n", "import NumberFieldController from \"decor/forms/number_field_controller\";\n\nexport default class PriceModifierController extends NumberFieldController {\n public static targets = NumberFieldController.targets.concat([\n \"priceModifierType\",\n \"priceModifierAmount\",\n ]);\n\n private declare readonly priceModifierTypeTarget: HTMLInputElement;\n protected declare readonly hasPriceModifierTypeTarget: boolean;\n\n public onInitialize() {\n this.handlePriceModifierTypeChanges();\n\n return super.onInitialize();\n }\n\n public handlePriceModifierTypeChanges() {\n if (!this.hasPriceModifierTypeTarget) return;\n\n const type = this.priceModifierTypeTarget.value as\n | \"fixed\"\n | \"percentage\"\n | undefined;\n\n if (type === \"fixed\") {\n this.update(\n this.leadingTextAddOnTarget,\n this.getOptionalDataAttr(\"leadingTextFixed\"),\n );\n this.update(\n this.trailingTextAddOnTarget,\n this.getOptionalDataAttr(\"trailingTextFixed\"),\n );\n } else if (type === \"percentage\") {\n this.update(this.leadingTextAddOnTarget, \"\");\n this.update(this.trailingTextAddOnTarget, \"%\");\n }\n }\n\n private update(target: HTMLElement | null, text: string | undefined) {\n if (target) {\n target.textContent = text || \"\";\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class EntityFormController extends BaseController {\n public static targets = [\n \"checkboxOther\",\n \"blockCustomType\",\n \"inputCustomType\",\n \"inputEmail\",\n \"blockEmailConfirmation\",\n \"inputEmailConfirmation\",\n ];\n\n private declare readonly checkboxOtherTarget: HTMLInputElement;\n private declare readonly inputCustomTypeTarget: HTMLInputElement;\n private declare readonly blockCustomTypeTarget: HTMLDivElement;\n private declare readonly inputEmailTarget: HTMLInputElement;\n private declare readonly blockEmailConfirmationTarget: HTMLDivElement;\n private declare readonly inputEmailConfirmationTarget: HTMLInputElement;\n\n public static classes = [\"emailConfirmation\"];\n\n private declare readonly emailConfirmationClasses: string[];\n\n public onInitialize() {\n this.handleOtherPropertyTypeChanges(false);\n this.handleEmailChanges();\n\n return super.onInitialize();\n }\n\n public handleEmailChanges() {\n if (this.inputEmailTarget.value === this.data.get(\"originalEmail\")) {\n this.setTargetElementClasses(\n this.blockEmailConfirmationTarget,\n [],\n this.emailConfirmationClasses,\n );\n this.inputEmailConfirmationTarget.value = \"\";\n this.inputEmailConfirmationTarget.disabled = true;\n } else {\n this.inputEmailConfirmationTarget.disabled = false;\n this.setTargetElementClasses(\n this.blockEmailConfirmationTarget,\n this.emailConfirmationClasses,\n [],\n );\n }\n }\n\n public handleOtherPropertyTypeChanges(focus = true) {\n if (this.checkboxOtherTarget.checked) {\n this.blockCustomTypeTarget.classList.remove(\"hidden\");\n if (focus) {\n this.inputCustomTypeTarget.focus();\n }\n } else {\n this.blockCustomTypeTarget.classList.add(\"hidden\");\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nconst HIDDEN_CLASS = \"invisible\";\n\nexport default class EntityUserFormController extends BaseController {\n public static targets = [\n \"emailField\",\n \"emailConfirmationField\",\n \"emailConfirmationContainer\",\n \"passwordField\",\n \"passwordConfirmationField\",\n \"passwordConfirmationContainer\",\n ];\n\n private declare readonly emailFieldTarget: HTMLInputElement;\n private declare readonly emailConfirmationFieldTarget: HTMLInputElement;\n private declare readonly emailConfirmationContainerTarget: HTMLBaseElement;\n\n private declare readonly passwordFieldTarget: HTMLInputElement;\n private declare readonly hasPasswordFieldTarget: boolean;\n private declare readonly passwordConfirmationFieldTarget: HTMLInputElement;\n private declare readonly passwordConfirmationContainerTarget: HTMLBaseElement;\n\n public onInitialize() {\n this.handleEmailChange();\n this.handlePasswordChange();\n\n if (this.data.get(\"alwaysShowEmailConfirmation\")) {\n this.showEmailConfirmation();\n }\n\n return super.onInitialize();\n }\n\n public handleEmailChange() {\n if (this.data.get(\"alwaysShowEmailConfirmation\")) {\n return;\n }\n const emailFieldValue = this.emailFieldTarget.value;\n if (emailFieldValue !== this.originalEmail) {\n return this.showEmailConfirmation();\n }\n this.emailConfirmationFieldTarget.required = false;\n this.emailConfirmationContainerTarget.classList.add(HIDDEN_CLASS);\n }\n\n public handlePasswordChange() {\n if (!this.hasPasswordFieldTarget) {\n return;\n }\n const fieldValue = this.passwordFieldTarget.value;\n if (fieldValue != \"\") {\n this.passwordConfirmationFieldTarget.required = true;\n return this.passwordConfirmationContainerTarget.classList.remove(\n HIDDEN_CLASS,\n );\n }\n this.passwordConfirmationFieldTarget.required = false;\n this.passwordConfirmationContainerTarget.classList.add(HIDDEN_CLASS);\n }\n\n private showEmailConfirmation() {\n this.emailConfirmationFieldTarget.required = true;\n return this.emailConfirmationContainerTarget.classList.remove(HIDDEN_CLASS);\n }\n\n private get originalEmail(): string | null {\n const originalValue = this.data.get(\"originalEmail\");\n if (originalValue === null) {\n return originalValue;\n }\n return originalValue as string;\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class AssigneeController extends BaseController {\n public static targets = [\"form\"];\n\n private declare readonly formTarget: HTMLFormElement;\n\n public submitForm() {\n this.formTarget.submit();\n }\n}\n", "/**\n * Helpers for ordering notification items by sent_at attribute value.\n */\n\nexport default function parseDateTime(html: string): number {\n const sentAtRegex = /datetime=\"(.*)\"\\s/g;\n const match = sentAtRegex.exec(html);\n\n return match ? Number(match[1]) : 0;\n}\n", "import { AxiosResponse } from \"axios\";\nimport MessageItemController from \"controllers/layouts/message_threads/message_item_controller\";\nimport axios from \"lib/axios\";\nimport BaseController from \"decor/base_controller\";\nimport parseDateTime from \"lib/util/parse_datetime_attr\";\nimport { MessageNotificationEvent } from \"lib/types\";\nimport { Layouts__MessageThreads__MessageItemControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class DynamicMessagesController extends BaseController {\n public static targets = [\"messages\"];\n\n private declare readonly messagesTarget: HTMLElement;\n\n public static outlets = [\n Layouts__MessageThreads__MessageItemControllerIdentifier,\n ];\n private declare readonly layoutsMessageThreadsMessageItemOutlets: MessageItemController[];\n private get messageControllers() {\n return this.layoutsMessageThreadsMessageItemOutlets;\n }\n\n public onInitialize() {\n this.onConnect(() => {\n // Fix missing scroll in Mozilla\n if (\"InstallTrigger\" in window) {\n this.messagesTarget.style.minHeight = \"0\";\n }\n\n this.scrollToBottom();\n\n this.removeAuthorsSeen();\n });\n\n return super.onInitialize();\n }\n\n public load(e: CustomEvent): void {\n const {\n detail: { message },\n } = e as MessageNotificationEvent;\n if (\n message.message_thread_encoded_id === this.data.get(\"thread-encoded_id\")\n ) {\n this.fetchMessage(message.encoded_id, message.type, message.event_type);\n }\n }\n\n private fetchMessage(\n encoded_id: string,\n type: string,\n eventType: string,\n ): void {\n axios\n .get(`/account/messages/messages/${encoded_id}`)\n .then((response: AxiosResponse) => response.data)\n .then((html: string) =>\n this.addMessage(html, type, eventType, encoded_id),\n )\n .catch((e: Error) => {\n alert(e.message);\n });\n }\n\n private addMessage = (\n html: string,\n type: string,\n eventType: string,\n encoded_id: string,\n ) => {\n if (type === \"EventMessage\" && eventType === \"messages_seen\") {\n const previousSeen = this.messageControllers.find(\n (controller: MessageItemController) => {\n return encoded_id === controller.encoded_id;\n },\n );\n\n if (previousSeen) {\n this.removeItem(previousSeen);\n }\n }\n\n // Action Cable may not preserve order of new messages, restoring order\n const sentAt = parseDateTime(html);\n const beforeNode = this.firstItemSentAfter(sentAt);\n\n beforeNode\n ? beforeNode.scope.element.insertAdjacentHTML(\"beforebegin\", html)\n : this.messagesTarget.insertAdjacentHTML(\"beforeend\", html);\n\n this.scrollToBottom();\n };\n\n private scrollToBottom(): void {\n const listNode = this.element.children[0];\n listNode.scrollTop = listNode.scrollHeight;\n }\n\n // Time ago time entries:\n\n private firstItemSentAfter(\n sentAt: number,\n ): MessageItemController | undefined {\n return this.messageControllers.find(\n (controller: MessageItemController) => controller.sentAt > sentAt,\n );\n }\n\n // Removes notification that last message was seen about its author\n private removeAuthorsSeen(): void {\n const messageNodes = this.messageControllers.filter(\n (controller: MessageItemController) =>\n controller.messageType === \"Message\",\n );\n\n const lastMessageNode = messageNodes[messageNodes.length - 1];\n const technicalNodes = this.messageControllers.filter(\n (controller: MessageItemController) =>\n controller.messageType === \"EventMessage\",\n );\n\n if (!(lastMessageNode && technicalNodes)) {\n return;\n }\n\n const senderId = lastMessageNode.senderUid;\n\n for (const node of technicalNodes) {\n if (node.senderUid === senderId) {\n this.removeItem(node);\n }\n }\n }\n\n private removeItem(controller: MessageItemController) {\n const index = this.messageControllers.indexOf(controller);\n controller.scope.element.remove();\n this.messageControllers.splice(index, 1);\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class MessageItemController extends BaseController {\n public get sentAt(): number {\n return Number(this.data.get(\"sentAt\"));\n }\n\n public get senderUid(): string {\n return this.data.get(\"senderUid\")!;\n }\n\n public get messageType(): string {\n return this.data.get(\"messageType\") || \"Message\";\n }\n\n public get eventType(): string | null {\n return this.data.get(\"eventType\");\n }\n\n public get encoded_id(): string {\n return this.data.get(\"messageEncodedId\")!;\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class SelectToggleController extends BaseController {\n public static targets = [\"privateSelect\", \"sharedSelect\"];\n\n private declare readonly privateSelectTarget: HTMLSelectElement;\n private declare readonly sharedSelectTarget: HTMLSelectElement;\n\n public clearSharedSelect() {\n this.sharedSelectTarget.selectedIndex = 0;\n }\n\n public clearPrivateSelect() {\n this.privateSelectTarget.selectedIndex = 0;\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class UnreadItemController extends BaseController {\n public static targets = [\"ago\"];\n\n // private declare readonly agoTarget: HTMLElement;\n\n public get sentAt(): number {\n return Number(this.data.get(\"sentAt\"));\n }\n\n public get threadUid(): string {\n return this.data.get(\"threadUid\")!;\n }\n}\n", "import { AxiosResponse } from \"axios\";\nimport { parse } from \"query-string\";\nimport UnreadItemController from \"controllers/layouts/message_threads/unread_item_controller\";\nimport axios from \"lib/axios\";\nimport BaseController from \"decor/base_controller\";\nimport parseDateTime from \"lib/util/parse_datetime_attr\";\nimport { MessageNotificationEvent } from \"lib/types\";\nimport { Layouts__MessageThreads__UnreadItemControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class UnreadMessagesController extends BaseController {\n public static targets = [\"items\"];\n\n private declare readonly itemsTarget: HTMLDivElement;\n\n public static outlets = [\n Layouts__MessageThreads__UnreadItemControllerIdentifier,\n ];\n private declare readonly layoutsMessageThreadsUnreadItemOutlets: UnreadItemController[];\n private get messageControllers() {\n return this.layoutsMessageThreadsUnreadItemOutlets;\n }\n\n public onInitialize() {\n this.onConnect(() => {\n if (\"InstallTrigger\" in window) {\n this.itemsTarget.style.minHeight = \"0\";\n }\n });\n\n return super.onInitialize();\n }\n\n public load(e: CustomEvent): void {\n const {\n detail: { message },\n } = e as MessageNotificationEvent;\n if (\n message.message_thread_encoded_id !== this.data.get(\"thread-encoded_id\")\n ) {\n this.fetchUnread(message.message_thread_encoded_id);\n }\n }\n\n private fetchUnread(messageThreadUid: string): void {\n axios\n .get(this.unreadUrl(messageThreadUid))\n .then((response: AxiosResponse) => response.data)\n .then((html) => this.addNotification(html, messageThreadUid))\n .catch((e: Error) => {\n alert(e.message);\n });\n }\n\n private addNotification(html: string, messageThreadUid: string) {\n const threadNotification = this.messageControllers.find(\n (controller: UnreadItemController) =>\n controller.threadUid === messageThreadUid,\n );\n\n if (threadNotification) {\n // Notification item exsists, remove old content\n this.removeItem(threadNotification);\n }\n\n this.prependNotificationNode(html);\n }\n\n private prependNotificationNode(html: string) {\n const sentAt = parseDateTime(html);\n const afterNode = this.firstItemSentBefore(sentAt);\n\n afterNode\n ? afterNode.scope.element.insertAdjacentHTML(\"beforebegin\", html)\n : this.itemsTarget.insertAdjacentHTML(\"afterbegin\", html);\n }\n\n private unreadUrl(messageThreadUid: string): string {\n let url = `/account/messages/threads/${messageThreadUid}/messages/unread`;\n const parts = parse(window.location.search);\n\n if (parts.shared_inbox_encoded_id) {\n url += `?shared_inbox_encoded_id=${parts.shared_inbox_encoded_id}`;\n }\n\n return url;\n }\n\n private firstItemSentBefore(\n sentAt: number,\n ): UnreadItemController | undefined {\n return this.messageControllers.find(\n (controller: UnreadItemController) => controller.sentAt < sentAt,\n );\n }\n\n private removeItem(controller: UnreadItemController) {\n const index = this.messageControllers.indexOf(controller);\n controller.scope.element.remove();\n this.messageControllers.splice(index, 1);\n }\n}\n", "export function hideElement(element: Element) {\n setElementHidden(element, true);\n}\n\nexport function unhideElement(element: Element) {\n setElementHidden(element, false);\n}\n\nexport function setElementHidden(element: Element, hidden: boolean) {\n element.classList.toggle(\"hidden\", hidden);\n}\n", "export function setElementRequired(element: Element, required = false) {\n if (required) {\n element.setAttribute(\"required\", \"\");\n } else {\n element.removeAttribute(\"required\");\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport {\n hideElement,\n setElementHidden,\n unhideElement,\n} from \"lib/util/set_element_hidden\";\nimport { setElementRequired } from \"lib/util/set_element_required\";\n\nexport default class RegistrationStep1Controller extends BaseController {\n public static targets = [\n \"consumerChoices\",\n \"consumerPropertyTypeOtherCheckbox\",\n \"consumerPropertyTypeOtherTextFieldContainer\",\n \"consumerPropertyTypeOtherTextField\",\n ];\n\n // private declare readonly consumerChoicesTarget: HTMLDivElement;\n private declare readonly consumerPropertyTypeOtherCheckboxTarget: HTMLInputElement;\n private declare readonly consumerPropertyTypeOtherTextFieldContainerTarget: HTMLDivElement;\n private declare readonly consumerPropertyTypeOtherTextFieldTarget: HTMLInputElement;\n\n public onInitialize() {\n this.onConnect(() => {\n this.toggleConsumerPropertyTypeOtherTextFieldControl(\n this.consumerPropertyTypeOtherCheckboxTarget.checked,\n );\n });\n\n return super.onInitialize();\n }\n\n public handleConsumerPropertyTypeOtherCheckboxToggle(evt: Event) {\n const { checked } = evt.target as HTMLInputElement;\n this.toggleConsumerPropertyTypeOtherTextFieldControl(checked);\n }\n\n private toggleConsumerPropertyTypeOtherTextFieldControl(reveal: boolean) {\n setElementHidden(\n this.consumerPropertyTypeOtherTextFieldContainerTarget,\n !reveal,\n );\n setElementRequired(this.consumerPropertyTypeOtherTextFieldTarget, reveal);\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport DataTableController from \"decor/tables/data_table_controller\";\nimport { Decor__Tables__DataTableControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class RouteFormController extends BaseController {\n public static targets = [\"templateRow\"];\n private declare readonly templateRowTarget: HTMLDivElement;\n\n public static outlets = [Decor__Tables__DataTableControllerIdentifier];\n private declare readonly decorTablesDataTableOutlet: DataTableController;\n private get tableController() {\n return this.decorTablesDataTableOutlet;\n }\n addDay(event: Event) {\n event.preventDefault();\n\n // Get the hidden row (the template)\n const template = this.templateRowTarget as HTMLElement;\n\n // Clone the template content\n const clone = document.importNode(template, true);\n\n // Remove the hidden class from the clone\n clone.classList.remove(\"hidden\");\n\n // Append the clone to the tbody\n this.tableController.appendRow(clone);\n }\n\n removeDay(event: Event) {\n event.preventDefault();\n\n // Get the clicked element\n const target = event.target as HTMLElement;\n\n // Find the closest row to the clicked element\n const row = target.closest(\"tr\");\n\n // If a row was found, remove it\n if (row) {\n row.remove();\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\n\nexport default class extends BaseController {\n static targets: string[] = [\"button\"];\n buttonTarget!: HTMLButtonElement;\n\n connect() {\n if (this.formElementsOnPage && this.devEnvironment) {\n this.addComponent();\n }\n }\n\n analysePage(admin: boolean = false) {\n if (this.formElementsOnPage) {\n if (admin) {\n this.fillFormForAdmin();\n } else {\n this.fillForm();\n }\n } else {\n this.buttonTarget.innerText = \"Too many forms on this page\u2026\";\n }\n }\n\n analysePageWithKeybinding(event: KeyboardEvent) {\n if (event.key === \"f\") {\n this.analysePage();\n } else if (event.key === \"a\") {\n this.analysePage(true);\n }\n }\n\n private get formElementsOnPage() {\n return this.numberOfFormElements > 0;\n }\n\n private get devEnvironment() {\n return process.env.NODE_ENV === \"development\";\n }\n\n private addComponent() {\n this.element.insertAdjacentHTML(\"beforeend\", this.buttonTag);\n }\n\n private get numberOfFormElements() {\n return [].filter.call(\n document.getElementsByTagName(\"form\"),\n (el: HTMLFormElement) => {\n const action = el.getAttribute(\"action\");\n return action && action.startsWith(\"/account/\");\n },\n ).length;\n }\n\n private get buttonTag(): string {\n return `\n util--dev-form-fill#analysePageWithKeybinding\"\n >\n Fill form\n \n `;\n }\n\n private fillForm() {\n const forms = document.getElementsByTagName(\"form\");\n\n [].forEach.call(forms, (form) => {\n this.fillInputsFor(form);\n });\n }\n\n private fillFormForAdmin() {\n const forms = document.getElementsByTagName(\"form\");\n\n [].forEach.call(forms, (form) => {\n this.fillInputsFor(form, true);\n });\n }\n\n private fillInputsFor(form: HTMLFormElement, admin: boolean = false) {\n const inputs = form.getElementsByTagName(\"input\");\n\n [].forEach.call(inputs, (input: HTMLInputElement) => {\n let regex = /(^.*\\[|\\].*$)/g;\n let inputName = input.name.replace(regex, \"\");\n\n if (input.value.length > 0) {\n return;\n }\n\n switch (inputName) {\n case \"name\":\n input.value = this.randomiseValue(this.nameValueOptions());\n break;\n case \"email\":\n input.value = this.randomiseValue(this.emailValueOptions(admin));\n break;\n case \"password\":\n input.value = this.randomiseValue(this.passwordValueOptions(admin));\n break;\n }\n });\n }\n\n private nameValueOptions() {\n return [\"Chris\", \"Kate\", \"Cameron\"];\n }\n\n private emailValueOptions(admin: boolean) {\n if (admin) {\n return [\"super_admin@confinus.com\"];\n }\n return [\"martha.archer@confinus.com\"];\n }\n\n private passwordValueOptions(admin: boolean) {\n if (admin) {\n return [\"password\"];\n }\n return [\"password\"];\n }\n\n private randomiseValue(items: string[]) {\n return items[Math.floor(Math.random() * items.length)];\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { FormFieldValidationEvent } from \"lib/types\";\n\nexport default class ErrorLocationsExampleController extends BaseController {\n public static targets = [\n \"firstName\",\n \"firstNameErrorMessage\",\n \"lastName\",\n \"lastNameErrorMessage\",\n \"email\",\n \"emailErrorMessage\",\n \"agree\",\n \"agreeErrorMessage\",\n ];\n\n private declare readonly firstNameTarget: HTMLInputElement;\n private declare readonly firstNameErrorMessageTarget: HTMLParagraphElement;\n private declare readonly lastNameTarget: HTMLInputElement;\n private declare readonly lastNameErrorMessageTarget: HTMLParagraphElement;\n private declare readonly emailTarget: HTMLInputElement;\n private declare readonly emailErrorMessageTarget: HTMLParagraphElement;\n private declare readonly agreeTarget: HTMLInputElement;\n private declare readonly agreeErrorMessageTarget: HTMLParagraphElement;\n\n public handleFieldValidatedEvent(evt: FormFieldValidationEvent) {\n const { detail, target } = evt;\n const errorMessageTarget = this.errorMessageTargetForFormField(target);\n if (errorMessageTarget) {\n const message = !detail.valid\n ? detail.errors.map((e) => e.message).join(\", \")\n : \"\";\n errorMessageTarget.textContent = message;\n }\n }\n\n private errorMessageTargetForFormField(\n target: HTMLElement\n ): HTMLParagraphElement | null {\n switch (target) {\n case this.firstNameTarget:\n return this.firstNameErrorMessageTarget;\n case this.lastNameTarget:\n return this.lastNameErrorMessageTarget;\n case this.emailTarget:\n return this.emailErrorMessageTarget;\n case this.agreeTarget:\n return this.agreeErrorMessageTarget;\n default:\n return null;\n }\n }\n}\n", "import FlashController from \"decor/flash_controller\";\nimport BaseController from \"decor/base_controller\";\nimport { Decor__FlashControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class FlashExamplesController extends BaseController {\n public static outlets = [Decor__FlashControllerIdentifier];\n\n private declare readonly decorFlashOutlet: FlashController;\n\n public toggleFlash() {\n this.decorFlashOutlet.text = \"Hello from a toggled flash box\";\n this.decorFlashOutlet.toggle();\n }\n\n public revealBriefly() {\n this.decorFlashOutlet.text = \"Hello from a revealed flash box\";\n this.decorFlashOutlet.reveal(1000);\n }\n}\n", "import { FormValidationEvent } from \"lib/types\";\n\nimport FlashController from \"decor/flash_controller\";\nimport BaseController from \"decor/base_controller\";\nimport { Decor__FlashControllerIdentifier } from \"controllers/identifiers\";\n\nexport default class FormExamplesFlashController extends BaseController {\n public static outlets = [Decor__FlashControllerIdentifier];\n private declare readonly decorFlashOutlet: FlashController;\n private get flashController() {\n return this.decorFlashOutlet;\n }\n\n public handleFormValidatedEvent(evt: FormValidationEvent) {\n const {\n detail: { valid, preamble, errors },\n } = evt;\n\n const fc = this.flashController;\n if (fc) {\n if (valid) {\n fc.hide();\n } else {\n // Show the flash box.\n // TODO this might be best wrapped up in a utility component.\n const errorMessages = errors.map((err) => err.message);\n fc.renderHeadingWithListContent(preamble, errorMessages);\n fc.reveal();\n }\n }\n }\n}\n", "import BaseController from \"decor/base_controller\";\nimport { showModal } from \"lib/overlay/modal\";\n\nexport default class RefreshPopupExampleController extends BaseController {\n public showRefreshPopup() {\n showModal({\n contentHref: \"/marketplace/reminders/refresh-page\",\n });\n }\n}\n", "// This file is auto-generated by ./bin/rails stimulus_controller_imports\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { Application } from \"@hotwired/stimulus\";\n// If stimulus is already loaded, use it, otherwise start a new application.\nexport const application = window.Stimulus || Application.start();\n\nimport Decor__ButtonController from \"../../../app/components/decor/button_controller\";\nimport { Decor__ButtonControllerIdentifier } from \"./identifiers\";\nDecor__ButtonController.setIdentifier(Decor__ButtonControllerIdentifier);\napplication.register(Decor__ButtonControllerIdentifier, Decor__ButtonController);\n\nimport Decor__CarouselController from \"../../../app/components/decor/carousel_controller\";\nimport { Decor__CarouselControllerIdentifier } from \"./identifiers\";\nDecor__CarouselController.setIdentifier(Decor__CarouselControllerIdentifier);\napplication.register(Decor__CarouselControllerIdentifier, Decor__CarouselController);\n\nimport Decor__ClickToCopyController from \"../../../app/components/decor/click_to_copy_controller\";\nimport { Decor__ClickToCopyControllerIdentifier } from \"./identifiers\";\nDecor__ClickToCopyController.setIdentifier(Decor__ClickToCopyControllerIdentifier);\napplication.register(Decor__ClickToCopyControllerIdentifier, Decor__ClickToCopyController);\n\nimport Decor__ConfirmModalController from \"../../../app/components/decor/confirm_modal_controller\";\nimport { Decor__ConfirmModalControllerIdentifier } from \"./identifiers\";\nDecor__ConfirmModalController.setIdentifier(Decor__ConfirmModalControllerIdentifier);\napplication.register(Decor__ConfirmModalControllerIdentifier, Decor__ConfirmModalController);\n\nimport Decor__DropdownController from \"../../../app/components/decor/dropdown_controller\";\nimport { Decor__DropdownControllerIdentifier } from \"./identifiers\";\nDecor__DropdownController.setIdentifier(Decor__DropdownControllerIdentifier);\napplication.register(Decor__DropdownControllerIdentifier, Decor__DropdownController);\n\nimport Decor__FlashController from \"../../../app/components/decor/flash_controller\";\nimport { Decor__FlashControllerIdentifier } from \"./identifiers\";\nDecor__FlashController.setIdentifier(Decor__FlashControllerIdentifier);\napplication.register(Decor__FlashControllerIdentifier, Decor__FlashController);\n\nimport Decor__Forms__ButtonRadioGroupController from \"../../../app/components/decor/forms/button_radio_group_controller\";\nimport { Decor__Forms__ButtonRadioGroupControllerIdentifier } from \"./identifiers\";\nDecor__Forms__ButtonRadioGroupController.setIdentifier(Decor__Forms__ButtonRadioGroupControllerIdentifier);\napplication.register(Decor__Forms__ButtonRadioGroupControllerIdentifier, Decor__Forms__ButtonRadioGroupController);\n\nimport Decor__Forms__CheckboxController from \"../../../app/components/decor/forms/checkbox_controller\";\nimport { Decor__Forms__CheckboxControllerIdentifier } from \"./identifiers\";\nDecor__Forms__CheckboxController.setIdentifier(Decor__Forms__CheckboxControllerIdentifier);\napplication.register(Decor__Forms__CheckboxControllerIdentifier, Decor__Forms__CheckboxController);\n\nimport Decor__Forms__DateCalendarController from \"../../../app/components/decor/forms/date_calendar_controller\";\nimport { Decor__Forms__DateCalendarControllerIdentifier } from \"./identifiers\";\nDecor__Forms__DateCalendarController.setIdentifier(Decor__Forms__DateCalendarControllerIdentifier);\napplication.register(Decor__Forms__DateCalendarControllerIdentifier, Decor__Forms__DateCalendarController);\n\nimport Decor__Forms__ErrorIconSectionController from \"../../../app/components/decor/forms/error_icon_section_controller\";\nimport { Decor__Forms__ErrorIconSectionControllerIdentifier } from \"./identifiers\";\nDecor__Forms__ErrorIconSectionController.setIdentifier(Decor__Forms__ErrorIconSectionControllerIdentifier);\napplication.register(Decor__Forms__ErrorIconSectionControllerIdentifier, Decor__Forms__ErrorIconSectionController);\n\nimport Decor__Forms__ExpandingCheckboxCollectionController from \"../../../app/components/decor/forms/expanding_checkbox_collection_controller\";\nimport { Decor__Forms__ExpandingCheckboxCollectionControllerIdentifier } from \"./identifiers\";\nDecor__Forms__ExpandingCheckboxCollectionController.setIdentifier(Decor__Forms__ExpandingCheckboxCollectionControllerIdentifier);\napplication.register(Decor__Forms__ExpandingCheckboxCollectionControllerIdentifier, Decor__Forms__ExpandingCheckboxCollectionController);\n\nimport Decor__Forms__FileUploadController from \"../../../app/components/decor/forms/file_upload_controller\";\nimport { Decor__Forms__FileUploadControllerIdentifier } from \"./identifiers\";\nDecor__Forms__FileUploadController.setIdentifier(Decor__Forms__FileUploadControllerIdentifier);\napplication.register(Decor__Forms__FileUploadControllerIdentifier, Decor__Forms__FileUploadController);\n\nimport Decor__Forms__FormControlController from \"../../../app/components/decor/forms/form_control_controller\";\nimport { Decor__Forms__FormControlControllerIdentifier } from \"./identifiers\";\nDecor__Forms__FormControlController.setIdentifier(Decor__Forms__FormControlControllerIdentifier);\napplication.register(Decor__Forms__FormControlControllerIdentifier, Decor__Forms__FormControlController);\n\nimport Decor__Forms__FormController from \"../../../app/components/decor/forms/form_controller\";\nimport { Decor__Forms__FormControllerIdentifier } from \"./identifiers\";\nDecor__Forms__FormController.setIdentifier(Decor__Forms__FormControllerIdentifier);\napplication.register(Decor__Forms__FormControllerIdentifier, Decor__Forms__FormController);\n\nimport Decor__Forms__FormFieldLayoutController from \"../../../app/components/decor/forms/form_field_layout_controller\";\nimport { Decor__Forms__FormFieldLayoutControllerIdentifier } from \"./identifiers\";\nDecor__Forms__FormFieldLayoutController.setIdentifier(Decor__Forms__FormFieldLayoutControllerIdentifier);\napplication.register(Decor__Forms__FormFieldLayoutControllerIdentifier, Decor__Forms__FormFieldLayoutController);\n\nimport Decor__Forms__HelperTextSectionController from \"../../../app/components/decor/forms/helper_text_section_controller\";\nimport { Decor__Forms__HelperTextSectionControllerIdentifier } from \"./identifiers\";\nDecor__Forms__HelperTextSectionController.setIdentifier(Decor__Forms__HelperTextSectionControllerIdentifier);\napplication.register(Decor__Forms__HelperTextSectionControllerIdentifier, Decor__Forms__HelperTextSectionController);\n\nimport Decor__Forms__NumberFieldController from \"../../../app/components/decor/forms/number_field_controller\";\nimport { Decor__Forms__NumberFieldControllerIdentifier } from \"./identifiers\";\nDecor__Forms__NumberFieldController.setIdentifier(Decor__Forms__NumberFieldControllerIdentifier);\napplication.register(Decor__Forms__NumberFieldControllerIdentifier, Decor__Forms__NumberFieldController);\n\nimport Decor__Forms__RadioController from \"../../../app/components/decor/forms/radio_controller\";\nimport { Decor__Forms__RadioControllerIdentifier } from \"./identifiers\";\nDecor__Forms__RadioController.setIdentifier(Decor__Forms__RadioControllerIdentifier);\napplication.register(Decor__Forms__RadioControllerIdentifier, Decor__Forms__RadioController);\n\nimport Decor__Forms__SelectController from \"../../../app/components/decor/forms/select_controller\";\nimport { Decor__Forms__SelectControllerIdentifier } from \"./identifiers\";\nDecor__Forms__SelectController.setIdentifier(Decor__Forms__SelectControllerIdentifier);\napplication.register(Decor__Forms__SelectControllerIdentifier, Decor__Forms__SelectController);\n\nimport Decor__Forms__SwitchController from \"../../../app/components/decor/forms/switch_controller\";\nimport { Decor__Forms__SwitchControllerIdentifier } from \"./identifiers\";\nDecor__Forms__SwitchController.setIdentifier(Decor__Forms__SwitchControllerIdentifier);\napplication.register(Decor__Forms__SwitchControllerIdentifier, Decor__Forms__SwitchController);\n\nimport Decor__Forms__TextAreaController from \"../../../app/components/decor/forms/text_area_controller\";\nimport { Decor__Forms__TextAreaControllerIdentifier } from \"./identifiers\";\nDecor__Forms__TextAreaController.setIdentifier(Decor__Forms__TextAreaControllerIdentifier);\napplication.register(Decor__Forms__TextAreaControllerIdentifier, Decor__Forms__TextAreaController);\n\nimport Decor__Forms__TextFieldController from \"../../../app/components/decor/forms/text_field_controller\";\nimport { Decor__Forms__TextFieldControllerIdentifier } from \"./identifiers\";\nDecor__Forms__TextFieldController.setIdentifier(Decor__Forms__TextFieldControllerIdentifier);\napplication.register(Decor__Forms__TextFieldControllerIdentifier, Decor__Forms__TextFieldController);\n\nimport Decor__MapController from \"../../../app/components/decor/map_controller\";\nimport { Decor__MapControllerIdentifier } from \"./identifiers\";\nDecor__MapController.setIdentifier(Decor__MapControllerIdentifier);\napplication.register(Decor__MapControllerIdentifier, Decor__MapController);\n\nimport Decor__ModalCloseButtonController from \"../../../app/components/decor/modal_close_button_controller\";\nimport { Decor__ModalCloseButtonControllerIdentifier } from \"./identifiers\";\nDecor__ModalCloseButtonController.setIdentifier(Decor__ModalCloseButtonControllerIdentifier);\napplication.register(Decor__ModalCloseButtonControllerIdentifier, Decor__ModalCloseButtonController);\n\nimport Decor__ModalController from \"../../../app/components/decor/modal_controller\";\nimport { Decor__ModalControllerIdentifier } from \"./identifiers\";\nDecor__ModalController.setIdentifier(Decor__ModalControllerIdentifier);\napplication.register(Decor__ModalControllerIdentifier, Decor__ModalController);\n\nimport Decor__ModalOpenButtonController from \"../../../app/components/decor/modal_open_button_controller\";\nimport { Decor__ModalOpenButtonControllerIdentifier } from \"./identifiers\";\nDecor__ModalOpenButtonController.setIdentifier(Decor__ModalOpenButtonControllerIdentifier);\napplication.register(Decor__ModalOpenButtonControllerIdentifier, Decor__ModalOpenButtonController);\n\nimport Decor__NotificationManagerController from \"../../../app/components/decor/notification_manager_controller\";\nimport { Decor__NotificationManagerControllerIdentifier } from \"./identifiers\";\nDecor__NotificationManagerController.setIdentifier(Decor__NotificationManagerControllerIdentifier);\napplication.register(Decor__NotificationManagerControllerIdentifier, Decor__NotificationManagerController);\n\nimport Decor__SearchAndFilterController from \"../../../app/components/decor/search_and_filter_controller\";\nimport { Decor__SearchAndFilterControllerIdentifier } from \"./identifiers\";\nDecor__SearchAndFilterController.setIdentifier(Decor__SearchAndFilterControllerIdentifier);\napplication.register(Decor__SearchAndFilterControllerIdentifier, Decor__SearchAndFilterController);\n\nimport Decor__Tables__DataTableCellController from \"../../../app/components/decor/tables/data_table_cell_controller\";\nimport { Decor__Tables__DataTableCellControllerIdentifier } from \"./identifiers\";\nDecor__Tables__DataTableCellController.setIdentifier(Decor__Tables__DataTableCellControllerIdentifier);\napplication.register(Decor__Tables__DataTableCellControllerIdentifier, Decor__Tables__DataTableCellController);\n\nimport Decor__Tables__DataTableController from \"../../../app/components/decor/tables/data_table_controller\";\nimport { Decor__Tables__DataTableControllerIdentifier } from \"./identifiers\";\nDecor__Tables__DataTableController.setIdentifier(Decor__Tables__DataTableControllerIdentifier);\napplication.register(Decor__Tables__DataTableControllerIdentifier, Decor__Tables__DataTableController);\n\nimport Decor__Tables__DataTableHeaderCellController from \"../../../app/components/decor/tables/data_table_header_cell_controller\";\nimport { Decor__Tables__DataTableHeaderCellControllerIdentifier } from \"./identifiers\";\nDecor__Tables__DataTableHeaderCellController.setIdentifier(Decor__Tables__DataTableHeaderCellControllerIdentifier);\napplication.register(Decor__Tables__DataTableHeaderCellControllerIdentifier, Decor__Tables__DataTableHeaderCellController);\n\nimport Decor__Tables__DataTableHeaderRowController from \"../../../app/components/decor/tables/data_table_header_row_controller\";\nimport { Decor__Tables__DataTableHeaderRowControllerIdentifier } from \"./identifiers\";\nDecor__Tables__DataTableHeaderRowController.setIdentifier(Decor__Tables__DataTableHeaderRowControllerIdentifier);\napplication.register(Decor__Tables__DataTableHeaderRowControllerIdentifier, Decor__Tables__DataTableHeaderRowController);\n\nimport Decor__Tables__DataTableRowController from \"../../../app/components/decor/tables/data_table_row_controller\";\nimport { Decor__Tables__DataTableRowControllerIdentifier } from \"./identifiers\";\nDecor__Tables__DataTableRowController.setIdentifier(Decor__Tables__DataTableRowControllerIdentifier);\napplication.register(Decor__Tables__DataTableRowControllerIdentifier, Decor__Tables__DataTableRowController);\n\nimport Decor__TabsController from \"../../../app/components/decor/tabs_controller\";\nimport { Decor__TabsControllerIdentifier } from \"./identifiers\";\nDecor__TabsController.setIdentifier(Decor__TabsControllerIdentifier);\napplication.register(Decor__TabsControllerIdentifier, Decor__TabsController);\n\nimport Decor__TooltipController from \"../../../app/components/decor/tooltip_controller\";\nimport { Decor__TooltipControllerIdentifier } from \"./identifiers\";\nDecor__TooltipController.setIdentifier(Decor__TooltipControllerIdentifier);\napplication.register(Decor__TooltipControllerIdentifier, Decor__TooltipController);\n\nimport Mercor__Carts__CartItemController from \"../../../app/components/mercor/carts/cart_item_controller\";\nimport { Mercor__Carts__CartItemControllerIdentifier } from \"./identifiers\";\nMercor__Carts__CartItemController.setIdentifier(Mercor__Carts__CartItemControllerIdentifier);\napplication.register(Mercor__Carts__CartItemControllerIdentifier, Mercor__Carts__CartItemController);\n\nimport Mercor__CatalogManagement__PriceEditController from \"../../../app/components/mercor/catalog_management/price_edit_controller\";\nimport { Mercor__CatalogManagement__PriceEditControllerIdentifier } from \"./identifiers\";\nMercor__CatalogManagement__PriceEditController.setIdentifier(Mercor__CatalogManagement__PriceEditControllerIdentifier);\napplication.register(Mercor__CatalogManagement__PriceEditControllerIdentifier, Mercor__CatalogManagement__PriceEditController);\n\nimport Mercor__CatalogManagement__SubmitPriceUpdateController from \"../../../app/components/mercor/catalog_management/submit_price_update_controller\";\nimport { Mercor__CatalogManagement__SubmitPriceUpdateControllerIdentifier } from \"./identifiers\";\nMercor__CatalogManagement__SubmitPriceUpdateController.setIdentifier(Mercor__CatalogManagement__SubmitPriceUpdateControllerIdentifier);\napplication.register(Mercor__CatalogManagement__SubmitPriceUpdateControllerIdentifier, Mercor__CatalogManagement__SubmitPriceUpdateController);\n\nimport Mercor__DeliveryCutOffPillController from \"../../../app/components/mercor/delivery_cut_off_pill_controller\";\nimport { Mercor__DeliveryCutOffPillControllerIdentifier } from \"./identifiers\";\nMercor__DeliveryCutOffPillController.setIdentifier(Mercor__DeliveryCutOffPillControllerIdentifier);\napplication.register(Mercor__DeliveryCutOffPillControllerIdentifier, Mercor__DeliveryCutOffPillController);\n\nimport Mercor__DeliveryDateCalendarController from \"../../../app/components/mercor/delivery_date_calendar_controller\";\nimport { Mercor__DeliveryDateCalendarControllerIdentifier } from \"./identifiers\";\nMercor__DeliveryDateCalendarController.setIdentifier(Mercor__DeliveryDateCalendarControllerIdentifier);\napplication.register(Mercor__DeliveryDateCalendarControllerIdentifier, Mercor__DeliveryDateCalendarController);\n\nimport Mercor__DeliveryDateSelectController from \"../../../app/components/mercor/delivery_date_select_controller\";\nimport { Mercor__DeliveryDateSelectControllerIdentifier } from \"./identifiers\";\nMercor__DeliveryDateSelectController.setIdentifier(Mercor__DeliveryDateSelectControllerIdentifier);\napplication.register(Mercor__DeliveryDateSelectControllerIdentifier, Mercor__DeliveryDateSelectController);\n\nimport Mercor__NavbarController from \"../../../app/components/mercor/navbar_controller\";\nimport { Mercor__NavbarControllerIdentifier } from \"./identifiers\";\nMercor__NavbarController.setIdentifier(Mercor__NavbarControllerIdentifier);\napplication.register(Mercor__NavbarControllerIdentifier, Mercor__NavbarController);\n\nimport Mercor__OrderGuideController from \"../../../app/components/mercor/order_guide_controller\";\nimport { Mercor__OrderGuideControllerIdentifier } from \"./identifiers\";\nMercor__OrderGuideController.setIdentifier(Mercor__OrderGuideControllerIdentifier);\napplication.register(Mercor__OrderGuideControllerIdentifier, Mercor__OrderGuideController);\n\nimport Mercor__OrderGuideRowController from \"../../../app/components/mercor/order_guide_row_controller\";\nimport { Mercor__OrderGuideRowControllerIdentifier } from \"./identifiers\";\nMercor__OrderGuideRowController.setIdentifier(Mercor__OrderGuideRowControllerIdentifier);\napplication.register(Mercor__OrderGuideRowControllerIdentifier, Mercor__OrderGuideRowController);\n\nimport Mercor__OrderManagement__BreakdownRemoveItemController from \"../../../app/components/mercor/order_management/breakdown_remove_item_controller\";\nimport { Mercor__OrderManagement__BreakdownRemoveItemControllerIdentifier } from \"./identifiers\";\nMercor__OrderManagement__BreakdownRemoveItemController.setIdentifier(Mercor__OrderManagement__BreakdownRemoveItemControllerIdentifier);\napplication.register(Mercor__OrderManagement__BreakdownRemoveItemControllerIdentifier, Mercor__OrderManagement__BreakdownRemoveItemController);\n\nimport Mercor__OrderManagement__InputFinalDetailsConfirmationController from \"../../../app/components/mercor/order_management/input_final_details_confirmation_controller\";\nimport { Mercor__OrderManagement__InputFinalDetailsConfirmationControllerIdentifier } from \"./identifiers\";\nMercor__OrderManagement__InputFinalDetailsConfirmationController.setIdentifier(Mercor__OrderManagement__InputFinalDetailsConfirmationControllerIdentifier);\napplication.register(Mercor__OrderManagement__InputFinalDetailsConfirmationControllerIdentifier, Mercor__OrderManagement__InputFinalDetailsConfirmationController);\n\nimport Mercor__OrderManagement__InputFinalDetailsFormController from \"../../../app/components/mercor/order_management/input_final_details_form_controller\";\nimport { Mercor__OrderManagement__InputFinalDetailsFormControllerIdentifier } from \"./identifiers\";\nMercor__OrderManagement__InputFinalDetailsFormController.setIdentifier(Mercor__OrderManagement__InputFinalDetailsFormControllerIdentifier);\napplication.register(Mercor__OrderManagement__InputFinalDetailsFormControllerIdentifier, Mercor__OrderManagement__InputFinalDetailsFormController);\n\nimport Mercor__OrderManagement__ModifyOrderFormController from \"../../../app/components/mercor/order_management/modify_order_form_controller\";\nimport { Mercor__OrderManagement__ModifyOrderFormControllerIdentifier } from \"./identifiers\";\nMercor__OrderManagement__ModifyOrderFormController.setIdentifier(Mercor__OrderManagement__ModifyOrderFormControllerIdentifier);\napplication.register(Mercor__OrderManagement__ModifyOrderFormControllerIdentifier, Mercor__OrderManagement__ModifyOrderFormController);\n\nimport Mercor__ProductCategoryFilterTierController from \"../../../app/components/mercor/product_category_filter_tier_controller\";\nimport { Mercor__ProductCategoryFilterTierControllerIdentifier } from \"./identifiers\";\nMercor__ProductCategoryFilterTierController.setIdentifier(Mercor__ProductCategoryFilterTierControllerIdentifier);\napplication.register(Mercor__ProductCategoryFilterTierControllerIdentifier, Mercor__ProductCategoryFilterTierController);\n\nimport Mercor__ProductCategoryFiltersController from \"../../../app/components/mercor/product_category_filters_controller\";\nimport { Mercor__ProductCategoryFiltersControllerIdentifier } from \"./identifiers\";\nMercor__ProductCategoryFiltersController.setIdentifier(Mercor__ProductCategoryFiltersControllerIdentifier);\napplication.register(Mercor__ProductCategoryFiltersControllerIdentifier, Mercor__ProductCategoryFiltersController);\n\nimport Mercor__ProductLightboxController from \"../../../app/components/mercor/product_lightbox_controller\";\nimport { Mercor__ProductLightboxControllerIdentifier } from \"./identifiers\";\nMercor__ProductLightboxController.setIdentifier(Mercor__ProductLightboxControllerIdentifier);\napplication.register(Mercor__ProductLightboxControllerIdentifier, Mercor__ProductLightboxController);\n\nimport Mercor__ProductNavigationController from \"../../../app/components/mercor/product_navigation_controller\";\nimport { Mercor__ProductNavigationControllerIdentifier } from \"./identifiers\";\nMercor__ProductNavigationController.setIdentifier(Mercor__ProductNavigationControllerIdentifier);\napplication.register(Mercor__ProductNavigationControllerIdentifier, Mercor__ProductNavigationController);\n\nimport Mercor__ProductNavigationTierController from \"../../../app/components/mercor/product_navigation_tier_controller\";\nimport { Mercor__ProductNavigationTierControllerIdentifier } from \"./identifiers\";\nMercor__ProductNavigationTierController.setIdentifier(Mercor__ProductNavigationTierControllerIdentifier);\napplication.register(Mercor__ProductNavigationTierControllerIdentifier, Mercor__ProductNavigationTierController);\n\nimport Mercor__PurchaseConfigurator__AddNoteController from \"../../../app/components/mercor/purchase_configurator/add_note_controller\";\nimport { Mercor__PurchaseConfigurator__AddNoteControllerIdentifier } from \"./identifiers\";\nMercor__PurchaseConfigurator__AddNoteController.setIdentifier(Mercor__PurchaseConfigurator__AddNoteControllerIdentifier);\napplication.register(Mercor__PurchaseConfigurator__AddNoteControllerIdentifier, Mercor__PurchaseConfigurator__AddNoteController);\n\nimport Mercor__PurchaseConfigurator__ExtraInfoController from \"../../../app/components/mercor/purchase_configurator/extra_info_controller\";\nimport { Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier } from \"./identifiers\";\nMercor__PurchaseConfigurator__ExtraInfoController.setIdentifier(Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier);\napplication.register(Mercor__PurchaseConfigurator__ExtraInfoControllerIdentifier, Mercor__PurchaseConfigurator__ExtraInfoController);\n\nimport Mercor__PurchaseConfigurator__QuantityCalculatorController from \"../../../app/components/mercor/purchase_configurator/quantity_calculator_controller\";\nimport { Mercor__PurchaseConfigurator__QuantityCalculatorControllerIdentifier } from \"./identifiers\";\nMercor__PurchaseConfigurator__QuantityCalculatorController.setIdentifier(Mercor__PurchaseConfigurator__QuantityCalculatorControllerIdentifier);\napplication.register(Mercor__PurchaseConfigurator__QuantityCalculatorControllerIdentifier, Mercor__PurchaseConfigurator__QuantityCalculatorController);\n\nimport Mercor__PurchaseConfigurator__UomPricingDetailsController from \"../../../app/components/mercor/purchase_configurator/uom_pricing_details_controller\";\nimport { Mercor__PurchaseConfigurator__UomPricingDetailsControllerIdentifier } from \"./identifiers\";\nMercor__PurchaseConfigurator__UomPricingDetailsController.setIdentifier(Mercor__PurchaseConfigurator__UomPricingDetailsControllerIdentifier);\napplication.register(Mercor__PurchaseConfigurator__UomPricingDetailsControllerIdentifier, Mercor__PurchaseConfigurator__UomPricingDetailsController);\n\nimport Mercor__PurchaseConfiguratorController from \"../../../app/components/mercor/purchase_configurator_controller\";\nimport { Mercor__PurchaseConfiguratorControllerIdentifier } from \"./identifiers\";\nMercor__PurchaseConfiguratorController.setIdentifier(Mercor__PurchaseConfiguratorControllerIdentifier);\napplication.register(Mercor__PurchaseConfiguratorControllerIdentifier, Mercor__PurchaseConfiguratorController);\n\nimport Mercor__ReportFiltersController from \"../../../app/components/mercor/report_filters_controller\";\nimport { Mercor__ReportFiltersControllerIdentifier } from \"./identifiers\";\nMercor__ReportFiltersController.setIdentifier(Mercor__ReportFiltersControllerIdentifier);\napplication.register(Mercor__ReportFiltersControllerIdentifier, Mercor__ReportFiltersController);\n\nimport Mercor__ServiceabilityDropdownController from \"../../../app/components/mercor/serviceability_dropdown_controller\";\nimport { Mercor__ServiceabilityDropdownControllerIdentifier } from \"./identifiers\";\nMercor__ServiceabilityDropdownController.setIdentifier(Mercor__ServiceabilityDropdownControllerIdentifier);\napplication.register(Mercor__ServiceabilityDropdownControllerIdentifier, Mercor__ServiceabilityDropdownController);\n\nimport Mercor__ShoppingCartDropdownController from \"../../../app/components/mercor/shopping_cart_dropdown_controller\";\nimport { Mercor__ShoppingCartDropdownControllerIdentifier } from \"./identifiers\";\nMercor__ShoppingCartDropdownController.setIdentifier(Mercor__ShoppingCartDropdownControllerIdentifier);\napplication.register(Mercor__ShoppingCartDropdownControllerIdentifier, Mercor__ShoppingCartDropdownController);\n\nimport Mercor__SidebarFiltersController from \"../../../app/components/mercor/sidebar_filters_controller\";\nimport { Mercor__SidebarFiltersControllerIdentifier } from \"./identifiers\";\nMercor__SidebarFiltersController.setIdentifier(Mercor__SidebarFiltersControllerIdentifier);\napplication.register(Mercor__SidebarFiltersControllerIdentifier, Mercor__SidebarFiltersController);\n\nimport Navigo__BreadcrumbsController from \"../../../app/components/navigo/breadcrumbs_controller\";\nimport { Navigo__BreadcrumbsControllerIdentifier } from \"./identifiers\";\nNavigo__BreadcrumbsController.setIdentifier(Navigo__BreadcrumbsControllerIdentifier);\napplication.register(Navigo__BreadcrumbsControllerIdentifier, Navigo__BreadcrumbsController);\n\nimport Navigo__SideNavbarController from \"../../../app/components/navigo/side_navbar_controller\";\nimport { Navigo__SideNavbarControllerIdentifier } from \"./identifiers\";\nNavigo__SideNavbarController.setIdentifier(Navigo__SideNavbarControllerIdentifier);\napplication.register(Navigo__SideNavbarControllerIdentifier, Navigo__SideNavbarController);\n\nimport Navigo__SideNavbarItemController from \"../../../app/components/navigo/side_navbar_item_controller\";\nimport { Navigo__SideNavbarItemControllerIdentifier } from \"./identifiers\";\nNavigo__SideNavbarItemController.setIdentifier(Navigo__SideNavbarItemControllerIdentifier);\napplication.register(Navigo__SideNavbarItemControllerIdentifier, Navigo__SideNavbarItemController);\n\nimport Navigo__SideNavbarSectionController from \"../../../app/components/navigo/side_navbar_section_controller\";\nimport { Navigo__SideNavbarSectionControllerIdentifier } from \"./identifiers\";\nNavigo__SideNavbarSectionController.setIdentifier(Navigo__SideNavbarSectionControllerIdentifier);\napplication.register(Navigo__SideNavbarSectionControllerIdentifier, Navigo__SideNavbarSectionController);\n\nimport Navigo__SideNavbarSubItemController from \"../../../app/components/navigo/side_navbar_sub_item_controller\";\nimport { Navigo__SideNavbarSubItemControllerIdentifier } from \"./identifiers\";\nNavigo__SideNavbarSubItemController.setIdentifier(Navigo__SideNavbarSubItemControllerIdentifier);\napplication.register(Navigo__SideNavbarSubItemControllerIdentifier, Navigo__SideNavbarSubItemController);\n\nimport Navigo__TopNavbarController from \"../../../app/components/navigo/top_navbar_controller\";\nimport { Navigo__TopNavbarControllerIdentifier } from \"./identifiers\";\nNavigo__TopNavbarController.setIdentifier(Navigo__TopNavbarControllerIdentifier);\napplication.register(Navigo__TopNavbarControllerIdentifier, Navigo__TopNavbarController);\n\nimport Base__NotificationsController from \"../../../app/javascript/controllers/base/notifications_controller\";\nimport { Base__NotificationsControllerIdentifier } from \"./identifiers\";\nBase__NotificationsController.setIdentifier(Base__NotificationsControllerIdentifier);\napplication.register(Base__NotificationsControllerIdentifier, Base__NotificationsController);\n\nimport Base__NotificationsEmitterController from \"../../../app/javascript/controllers/base/notifications_emitter_controller\";\nimport { Base__NotificationsEmitterControllerIdentifier } from \"./identifiers\";\nBase__NotificationsEmitterController.setIdentifier(Base__NotificationsEmitterControllerIdentifier);\napplication.register(Base__NotificationsEmitterControllerIdentifier, Base__NotificationsEmitterController);\n\nimport Base__TimeagoController from \"../../../app/javascript/controllers/base/timeago_controller\";\nimport { Base__TimeagoControllerIdentifier } from \"./identifiers\";\nBase__TimeagoController.setIdentifier(Base__TimeagoControllerIdentifier);\napplication.register(Base__TimeagoControllerIdentifier, Base__TimeagoController);\n\nimport Catalogs__PriceModifierController from \"../../../app/javascript/controllers/catalogs/price_modifier_controller\";\nimport { Catalogs__PriceModifierControllerIdentifier } from \"./identifiers\";\nCatalogs__PriceModifierController.setIdentifier(Catalogs__PriceModifierControllerIdentifier);\napplication.register(Catalogs__PriceModifierControllerIdentifier, Catalogs__PriceModifierController);\n\nimport Entities__EntityFormController from \"../../../app/javascript/controllers/entities/entity_form_controller\";\nimport { Entities__EntityFormControllerIdentifier } from \"./identifiers\";\nEntities__EntityFormController.setIdentifier(Entities__EntityFormControllerIdentifier);\napplication.register(Entities__EntityFormControllerIdentifier, Entities__EntityFormController);\n\nimport Entities__EntityUserFormController from \"../../../app/javascript/controllers/entities/entity_user_form_controller\";\nimport { Entities__EntityUserFormControllerIdentifier } from \"./identifiers\";\nEntities__EntityUserFormController.setIdentifier(Entities__EntityUserFormControllerIdentifier);\napplication.register(Entities__EntityUserFormControllerIdentifier, Entities__EntityUserFormController);\n\nimport Layouts__MessageThreads__AssigneeController from \"../../../app/javascript/controllers/layouts/message_threads/assignee_controller\";\nimport { Layouts__MessageThreads__AssigneeControllerIdentifier } from \"./identifiers\";\nLayouts__MessageThreads__AssigneeController.setIdentifier(Layouts__MessageThreads__AssigneeControllerIdentifier);\napplication.register(Layouts__MessageThreads__AssigneeControllerIdentifier, Layouts__MessageThreads__AssigneeController);\n\nimport Layouts__MessageThreads__DynamicMessagesController from \"../../../app/javascript/controllers/layouts/message_threads/dynamic_messages_controller\";\nimport { Layouts__MessageThreads__DynamicMessagesControllerIdentifier } from \"./identifiers\";\nLayouts__MessageThreads__DynamicMessagesController.setIdentifier(Layouts__MessageThreads__DynamicMessagesControllerIdentifier);\napplication.register(Layouts__MessageThreads__DynamicMessagesControllerIdentifier, Layouts__MessageThreads__DynamicMessagesController);\n\nimport Layouts__MessageThreads__MessageItemController from \"../../../app/javascript/controllers/layouts/message_threads/message_item_controller\";\nimport { Layouts__MessageThreads__MessageItemControllerIdentifier } from \"./identifiers\";\nLayouts__MessageThreads__MessageItemController.setIdentifier(Layouts__MessageThreads__MessageItemControllerIdentifier);\napplication.register(Layouts__MessageThreads__MessageItemControllerIdentifier, Layouts__MessageThreads__MessageItemController);\n\nimport Layouts__MessageThreads__SelectToggleController from \"../../../app/javascript/controllers/layouts/message_threads/select_toggle_controller\";\nimport { Layouts__MessageThreads__SelectToggleControllerIdentifier } from \"./identifiers\";\nLayouts__MessageThreads__SelectToggleController.setIdentifier(Layouts__MessageThreads__SelectToggleControllerIdentifier);\napplication.register(Layouts__MessageThreads__SelectToggleControllerIdentifier, Layouts__MessageThreads__SelectToggleController);\n\nimport Layouts__MessageThreads__UnreadItemController from \"../../../app/javascript/controllers/layouts/message_threads/unread_item_controller\";\nimport { Layouts__MessageThreads__UnreadItemControllerIdentifier } from \"./identifiers\";\nLayouts__MessageThreads__UnreadItemController.setIdentifier(Layouts__MessageThreads__UnreadItemControllerIdentifier);\napplication.register(Layouts__MessageThreads__UnreadItemControllerIdentifier, Layouts__MessageThreads__UnreadItemController);\n\nimport Layouts__MessageThreads__UnreadMessagesController from \"../../../app/javascript/controllers/layouts/message_threads/unread_messages_controller\";\nimport { Layouts__MessageThreads__UnreadMessagesControllerIdentifier } from \"./identifiers\";\nLayouts__MessageThreads__UnreadMessagesController.setIdentifier(Layouts__MessageThreads__UnreadMessagesControllerIdentifier);\napplication.register(Layouts__MessageThreads__UnreadMessagesControllerIdentifier, Layouts__MessageThreads__UnreadMessagesController);\n\nimport Layouts__Registration__Step1Controller from \"../../../app/javascript/controllers/layouts/registration/step1_controller\";\nimport { Layouts__Registration__Step1ControllerIdentifier } from \"./identifiers\";\nLayouts__Registration__Step1Controller.setIdentifier(Layouts__Registration__Step1ControllerIdentifier);\napplication.register(Layouts__Registration__Step1ControllerIdentifier, Layouts__Registration__Step1Controller);\n\nimport Serviceability__RouteFormController from \"../../../app/javascript/controllers/serviceability/route_form_controller\";\nimport { Serviceability__RouteFormControllerIdentifier } from \"./identifiers\";\nServiceability__RouteFormController.setIdentifier(Serviceability__RouteFormControllerIdentifier);\napplication.register(Serviceability__RouteFormControllerIdentifier, Serviceability__RouteFormController);\n\nimport Util__DevFormFillController from \"../../../app/javascript/controllers/util/dev_form_fill_controller\";\nimport { Util__DevFormFillControllerIdentifier } from \"./identifiers\";\nUtil__DevFormFillController.setIdentifier(Util__DevFormFillControllerIdentifier);\napplication.register(Util__DevFormFillControllerIdentifier, Util__DevFormFillController);\n\nimport Decor__ErrorLocationsExampleController from \"../../../spec/components/previews/decor/error_locations_example_controller\";\nimport { Decor__ErrorLocationsExampleControllerIdentifier } from \"./identifiers\";\nDecor__ErrorLocationsExampleController.setIdentifier(Decor__ErrorLocationsExampleControllerIdentifier);\napplication.register(Decor__ErrorLocationsExampleControllerIdentifier, Decor__ErrorLocationsExampleController);\n\nimport Decor__FlashExamplesController from \"../../../spec/components/previews/decor/flash_examples_controller\";\nimport { Decor__FlashExamplesControllerIdentifier } from \"./identifiers\";\nDecor__FlashExamplesController.setIdentifier(Decor__FlashExamplesControllerIdentifier);\napplication.register(Decor__FlashExamplesControllerIdentifier, Decor__FlashExamplesController);\n\nimport Decor__FormExamplesFlashController from \"../../../spec/components/previews/decor/form_examples_flash_controller\";\nimport { Decor__FormExamplesFlashControllerIdentifier } from \"./identifiers\";\nDecor__FormExamplesFlashController.setIdentifier(Decor__FormExamplesFlashControllerIdentifier);\napplication.register(Decor__FormExamplesFlashControllerIdentifier, Decor__FormExamplesFlashController);\n\nimport Decor__RefreshPopupExampleController from \"../../../spec/components/previews/decor/refresh_popup_example_controller\";\nimport { Decor__RefreshPopupExampleControllerIdentifier } from \"./identifiers\";\nDecor__RefreshPopupExampleController.setIdentifier(Decor__RefreshPopupExampleControllerIdentifier);\napplication.register(Decor__RefreshPopupExampleControllerIdentifier, Decor__RefreshPopupExampleController);\n", "import Rails from \"./lib/rails\";\nimport \"./lib/third_party_libs\";\n\n// TODO: this should be set according to the current locale\nsetAppConfiguration(\"locale\", \"en\");\n\nconsole.debug(\"[Boot] Register Confinus JS Components\");\n// Prepare client side controllers\nimport { application } from \"./controllers\";\nimport { setAppConfiguration } from \"lib/app_configuration\";\n\n// @ts-ignore\napplication.debug = process.env.NODE_ENV === \"development\";\n\nconsole.debug(\"[Boot] Start UJS\");\n// This breaks JS as it raises in 7.1.1. The fix is in main:\n// https://github.com/rails/rails/commit/f7617808992c9c2a77920ccf4f2a4a42160fe1bd\nRails.start();\n"], "mappings": "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", "names": ["exports", "__webpack_require__", "id", "to", "from", "i", "l", "ar", "Choices", "_", "re", "resolve", "filter", "sorter", "_a", "_e", "_i", "index", "Container", "Dropdown", "Input", "List", "WrappedElement", "d", "b", "p", "WrappedInput", "WrappedSelect", "o", "m", "k", "k2", "parent", "a", "dispatchEvent", "e", "choice", "Store", "module", "isMergeableObject", "prev", "next", "__webpack_exports__", "isArray", "INFINITY", "toString", "isString", "isNumber", "isBoolean", "isObject", "obj", "path", "Config", "norm", "n", "value", "start", "match", "text", "location", "score", "j", "pattern", "result", "matches", "item", "searchers", "register", "parse", "query", "format", "randomString", "isPlainObject", "isDate", "kindOf", "subscribe", "message", "createStore", "global", "isArray", "isFunction", "isPlainObject", "extend", "merge", "i", "j", "n", "toDate", "matches", "defaultOptions", "hideLegend", "setTitle", "setMin", "setMax", "setStacked", "setXtitle", "setYtitle", "a", "b", "d", "isDate", "isNumber", "round", "hex", "x", "s", "colors", "k", "color", "minTime", "maxTime", "defaultExport", "d2", "resize", "callback", "config", "createDataTable", "r", "e", "fn", "fn2", "p", "c", "error", "message", "$", "adapters", "text", "Chart", "Chartkick", "getData", "getAdapter", "LineChart", "PieChart", "ColumnChart", "BarChart", "AreaChart", "GeoChart", "ScatterChart", "BubbleChart", "Timeline", "x", "i", "match", "i", "index", "encode", "isArray", "a", "b", "parseValue", "parse", "formatter", "k", "x", "filter", "Big", "P", "n", "x", "parse", "e", "i", "round", "s", "y", "j", "k", "l", "a", "b", "bt", "ri", "ai", "r", "q", "qi", "p", "t", "xe", "ye", "c", "error", "e", "CustomEvent", "message", "callback", "href", "attachmentSelector", "attachments", "preview", "presentation", "caption", "name", "size", "file", "attributes", "default", "tagName", "parse", "quote", "nestable", "heading1", "terminal", "breakOnReturn", "group", "code", "htmlAttributes", "text", "plaintext", "bulletList", "bullet", "listAttribute", "test", "element", "parentNode", "this", "numberList", "number", "attachmentGallery", "exclusive", "_element$tagName", "toLowerCase", "androidVersionMatch", "navigator", "userAgent", "match", "androidVersion", "parseInt", "browser$1", "composesExistingText", "recentAndroid", "samsungAndroid", "forcesObjectResizing", "supportsInputEvents", "InputEvent", "every", "prop", "prototype", "dompurify", "ADD_ATTR", "SAFE_FOR_XML", "RETURN_DOM", "lang$1", "attachFiles", "bold", "bullets", "byte", "bytes", "captionPlaceholder", "indent", "italic", "link", "numbers", "outdent", "redo", "remove", "strike", "undo", "unlink", "url", "urlPlaceholder", "GB", "KB", "MB", "PB", "TB", "sizes", "lang", "file_size_formatting", "prefix", "precision", "formatter", "concat", "base", "exp", "Math", "floor", "log", "withoutInsignificantZeros", "pow", "toFixed", "replace", "ZERO_WIDTH_SPACE", "NON_BREAKING_SPACE", "extend", "properties", "key", "value", "html", "document", "documentElement", "matches", "handleEvent", "eventName", "onElement", "matchingSelector", "withCallback", "inPhase", "preventDefault", "times", "arguments", "length", "undefined", "selector", "useCapture", "handler", "event", "destroy", "target", "findClosestElementFromNode", "call", "removeEventListener", "addEventListener", "triggerEvent", "bubbles", "cancelable", "createEvent", "initEvent", "dispatchEvent", "elementMatchesSelector", "nodeType", "node", "untilNode", "Node", "ELEMENT_NODE", "closest", "innerElementIsActive", "activeElement", "elementContainsNode", "findChildIndexOfNode", "_node", "childIndex", "previousSibling", "removeNode", "_node$parentNode", "removeChild", "walkTree", "tree", "onlyNodesOfType", "usingFilter", "expandEntityReferences", "whatToShow", "NodeFilter", "SHOW_ELEMENT", "SHOW_TEXT", "SHOW_COMMENT", "SHOW_ALL", "createTreeWalker", "makeElement", "tag", "options", "createElement", "editable", "contenteditable", "setAttribute", "style", "data", "dataset", "className", "split", "forEach", "classList", "add", "textContent", "childNodes", "childNode", "appendChild", "blockTagNames", "getBlockTagNames", "blockAttributes", "push", "nodeIsBlockContainer", "nodeIsBlockStartComment", "firstChild", "nodeIsBlockStart", "strict", "includes", "nodeIsCommentNode", "COMMENT_NODE", "nodeIsCursorTarget", "nodeIsTextNode", "trixCursorTarget", "nodeIsAttachmentElement", "nodeIsEmptyTextNode", "TEXT_NODE", "input", "level2Enabled", "getLevel", "browser", "pickFiles", "callback", "type", "multiple", "hidden", "id", "fileInputId", "files", "getElementById", "body", "click", "parser", "removeBlankTableCells", "tableCellSeparator", "tableRowSeparator", "text_attributes", "inheritable", "window", "getComputedStyle", "fontWeight", "fontStyle", "href", "groupTagName", "getAttribute", "frozen", "backgroundColor", "toolbar", "getDefaultHTML", "interval", "attachment", "attachmentCaption", "attachmentCaptionEditor", "attachmentMetadata", "attachmentMetadataContainer", "attachmentName", "attachmentProgress", "attachmentSize", "attachmentToolbar", "BasicObject", "expression", "toMethod", "toProperty", "optional", "parseProxyMethodExpression", "subject", "object", "_this$toMethod", "_object", "apply", "proxyMethodExpressionPattern", "Error", "args", "Function", "RegExp", "$", "UTF16String", "box", "fromUCS2String", "toString", "ucs2String", "ucs2decode", "codepoints", "ucs2encode", "constructor", "super", "ucs2Length", "offsetToUCS2Offset", "offset", "slice", "max", "offsetFromUCS2Offset", "ucs2Offset", "fromCodepoints", "charAt", "isEqualTo", "toJSON", "getCacheKey", "hasArrayFrom", "_Array$from", "Array", "from", "hasStringCodePointAt", "_$codePointAt", "codePointAt", "hasStringFromCodePoint", "_String$fromCodePoint", "String", "fromCodePoint", "string", "map", "char", "output", "counter", "charCodeAt", "extra", "array", "result", "fromCharCode", "join", "TrixObject", "jsonString", "fromJSON", "JSON", "hasSameConstructorAs", "inspect", "parts", "contents", "contentsForInspection", "toJSONString", "stringify", "toUTF16String", "arraysAreEqual", "a", "b", "index", "spliceArray", "_len", "_key", "splice", "RTL_PATTERN", "getDirection", "dir", "dirName", "textArea", "form", "supportsDirName", "FormData", "has", "error", "supportsDirSelector", "get", "trim", "allAttributeNames", "blockAttributeNames", "textAttributeNames", "listAttributeNames", "getAllAttributeNames", "getTextAttributeNames", "getBlockAttributeNames", "getBlockConfig", "attributeName", "config", "Object", "keys", "getTextConfig", "installDefaultCSSForTagName", "defaultCSS", "insertStyleElementForTagName", "nonce", "getCSPNonce", "head", "insertBefore", "getMetaElement", "content", "querySelector", "testTransferData", "dataTransferIsPlainText", "dataTransfer", "getData", "DOMParser", "parseFromString", "keyEventIsKeyboardCommand", "platform", "metaKey", "ctrlKey", "defer", "fn", "setTimeout", "copyObject", "objectsAreEqual", "normalizeRange", "range", "isArray", "copyValue", "rangeIsCollapsed", "start", "end", "rangeValuesAreEqual", "rangesAreEqual", "leftRange", "rightRange", "leftStart", "leftEnd", "rightStart", "rightEnd", "left", "right", "SelectionChangeObserver", "update", "bind", "selectionManagers", "started", "stop", "registerSelectionManager", "selectionManager", "unregisterSelectionManager", "filter", "sm", "notifySelectionManagersOfSelectionChange", "selectionDidChange", "reset", "selectionChangeObserver", "getDOMSelection", "selection", "getSelection", "rangeCount", "getDOMRange", "_getDOMSelection", "domRange", "getRangeAt", "domRangeIsPrivate", "setDOMRange", "removeAllRanges", "addRange", "nodeIsPrivate", "startContainer", "endContainer", "getPrototypeOf", "normalizeSpaces", "breakableWhitespacePattern", "squishBreakableWhitespace", "source", "utf16StringDifferences", "diffA", "utf16StringDifference", "utf16String", "diffB", "leftIndex", "rightIndexA", "rightIndexB", "Hash", "fromCommonAttributesOfObjects", "objects", "hash", "getKeys", "getKeysCommonToHash", "values", "copy", "merge", "unbox", "toArray", "isEmpty", "toObject", "keyToRemove", "sort", "ObjectGroup", "groupObjects", "ungroupedObjects", "depth", "asTree", "_object$canBeGrouped2", "_object$canBeGrouped", "_group$canBeGroupedWi", "_group", "canBeGrouped", "canBeGroupedWith", "getObjects", "getDepth", "ObjectMap", "find", "ElementStore", "elements", "getKey", "trixStoreKey", "Operation", "isPerforming", "performing", "hasPerformed", "performed", "hasSucceeded", "succeeded", "hasFailed", "getPromise", "promise", "Promise", "resolve", "reject", "perform", "release", "_this$promise", "_this$promise$cancel", "cancel", "proxyMethod", "ObjectView", "childViews", "rootView", "getNodes", "nodes", "createNodes", "cloneNode", "invalidate", "_this$parentView", "parentView", "invalidateViewForObject", "_this$findViewForObje", "findViewForObject", "findOrCreateCachedChildView", "viewClass", "view", "getCachedViewForObject", "recordChildView", "createChildView", "cacheViewForObject", "ObjectGroupView", "getAllChildViews", "views", "childView", "findElement", "findElementForObject", "getViewCache", "isViewCachingEnabled", "viewCache", "shouldCacheViews", "enableViewCaching", "disableViewCaching", "_this$getViewCache", "cache", "garbageCollectCachedViews", "objectKeys", "objectGroup", "getChildViews", "createContainerElement", "DOMPurify", "addHook", "attrName", "forceKeepAttr", "DEFAULT_ALLOWED_ATTRIBUTES", "DEFAULT_FORBIDDEN_PROTOCOLS", "DEFAULT_FORBIDDEN_ELEMENTS", "HTMLSanitizer", "sanitizedElement", "sanitize", "sanitizedHtml", "getHTML", "outerHTML", "innerHTML", "sanitizer", "allowedAttributes", "forbiddenProtocols", "forbiddenElements", "createBodyElementForHTML", "sanitizeElements", "normalizeListElementNesting", "setConfig", "getBody", "walker", "nodesToRemove", "nextNode", "currentNode", "elementIsRemovable", "sanitizeElement", "hasAttribute", "protocol", "removeAttribute", "_ref", "indexOf", "querySelectorAll", "listElement", "previousElement", "previousElementSibling", "elementIsForbidden", "elementIsntSerializable", "doc", "implementation", "createHTMLDocument", "css", "AttachmentView", "uploadProgressDelegate", "attachmentPiece", "piece", "createContentNodes", "innerElement", "figure", "getClassName", "getHref", "tabindex", "hasContent", "setHTML", "getContent", "createCaptionElement", "isPending", "progressElement", "class", "getUploadProgress", "trixMutable", "createCursorTarget", "figcaption", "getCaption", "captionConfig", "getCaptionConfig", "getFilename", "getFormattedFilesize", "nameElement", "createTextNode", "sizeElement", "names", "getType", "extension", "getExtension", "trixAttachment", "trixContentType", "getContentType", "trixId", "trixAttributes", "trixSerialize", "htmlContainsTagName", "_config$attachments$t", "findProgressElement", "_this$findElement", "attachmentDidChangeUploadProgress", "div", "PreviewableAttachmentView", "previewDelegate", "image", "src", "refresh", "updateAttributesForImage", "getURL", "previewURL", "getPreviewURL", "serializedAttributes", "width", "getWidth", "height", "getHeight", "storeKey", "attachmentDidChangeAttributes", "PieceView", "getAttributes", "textConfig", "context", "createAttachmentNodes", "createStringNodes", "_element", "firstElementChild", "isPreviewable", "_this$textConfig", "iterable", "substring", "preserveSpaces", "styles", "pendingElement", "styleProperty", "isLast", "isFirst", "followsWhitespace", "TextView", "pieces", "getPieces", "lastIndex", "endsWithWhitespace", "previousPiece", "BlockView", "block", "createComment", "_getBlockConfig", "getLastAttribute", "textView", "shouldAddExtraNewlineElement", "isRTL", "assign", "getBlockBreakPosition", "entries", "DocumentView", "render", "sync", "elementStore", "setDocument", "shadowElement", "getBlocks", "isSynced", "elementsHaveEqualHTML", "fragment", "createDocumentFragmentForSync", "lastChild", "didSync", "findStoredElements", "createDocumentFragment", "storedElement", "replaceChild", "otherElement", "ignoreSpaces", "t", "e", "i", "n", "o", "s", "l", "r", "Piece", "types", "pieceJSON", "copyWithAttributes", "getValue", "copyWithAdditionalAttributes", "copyWithoutAttribute", "attribute", "getAttributesHash", "hasSameStringValueAsPiece", "hasSameAttributesAsPiece", "isBlockBreak", "isSerializable", "getLength", "canBeConsolidatedWith", "_defineProperty", "ImagePreloadOperation", "Image", "onload", "naturalWidth", "naturalHeight", "onerror", "Attachment", "attributesForFile", "setFile", "filename", "filesize", "contentType", "attachmentJSON", "releaseFile", "didChangeAttributes", "setAttributes", "newAttributes", "_this$previewDelegate", "_this$previewDelegate2", "_this$delegate", "_this$delegate$attach", "delegate", "preloadURL", "previewablePattern", "getFilesize", "_this$getFilename$mat", "getFile", "preloadFile", "releasePreloadedFile", "uploadProgress", "setUploadProgress", "_this$uploadProgressD", "_this$uploadProgressD2", "preloadingURL", "setPreviewURL", "_this$previewDelegate3", "_this$previewDelegate4", "_this$delegate2", "_this$delegate2$attac", "attachmentDidChangePreviewURL", "preload", "fileObjectURL", "URL", "createObjectURL", "revokeObjectURL", "then", "catch", "AttachmentPiece", "ensureAttachmentExclusivelyHasAttribute", "removeProhibitedAttributes", "permittedAttributes", "_piece$attachment", "json", "toConsole", "registerType", "StringPiece", "consolidateWith", "splitAtOffset", "SplittableList", "eachObject", "insertObjectAtIndex", "insertSplittableListAtIndex", "splittableList", "insertSplittableListAtPosition", "position", "splitObjectAtPosition", "editObjectAtIndex", "replaceObjectAtIndex", "removeObjectAtIndex", "getObjectAtIndex", "getSplittableListInRange", "rightIndex", "splitObjectsAtRange", "selectSplittableList", "removeObjectsInRange", "transformObjectsInRange", "transform", "transformedObjects", "rightOuterIndex", "leftInnerIndex", "startOfRange", "endOfRange", "getObjectAtPosition", "findIndexAndOffsetAtPosition", "splitIndex", "splitOffset", "leftObject", "rightObject", "consolidate", "pendingObject", "_pendingObject$canBeC", "_pendingObject", "consolidateFromIndexToIndex", "startIndex", "endIndex", "objectsInRange", "consolidatedInRange", "currentPosition", "nextPosition", "findPositionAtIndexAndOffset", "currentIndex", "getEndPosition", "endPosition", "objectArraysAreEqual", "Text", "textJSON", "notEmpty", "pieceList", "copyWithPieceList", "copyUsingObjectMap", "objectMap", "appendText", "insertTextAtPosition", "removeTextAtRange", "replaceTextAtRange", "moveTextFromRangeToPosition", "getTextAtRange", "addAttributeAtRange", "addAttributesAtRange", "removeAttributeAtRange", "setAttributesAtRange", "getAttributesAtPosition", "_this$pieceList$getOb", "getCommonAttributes", "getCommonAttributesAtRange", "getExpandedRangeForAttributeAtOffset", "getStringAtRange", "getStringAtPosition", "startsWithString", "endsWithString", "getAttachmentPieces", "getAttachments", "getAttachmentAndPositionById", "attachmentId", "getAttachmentById", "getRangeOfAttachment", "attachmentAndPosition", "updateAttributesForAttachment", "_text$pieceList", "eachPiece", "getPieceAtPosition", "toSerializableText", "Block", "blockJSON", "applyBlockBreakToText", "copyWithText", "copyWithoutText", "copyWithoutAttributes", "mappedText", "addAttribute", "expandAttribute", "addHTMLAttribute", "removeLastValue", "removeLastAttribute", "getLastElement", "getAttributeLevel", "getAttributeAtLevel", "level", "hasAttributes", "getLastNestableAttribute", "getNestableAttributes", "getNestingLevel", "decreaseNestingLevel", "increaseNestingLevel", "lastIndexOf", "getListItemAttributes", "isListItem", "isTerminalBlock", "_getBlockConfig2", "breaksOnReturn", "_getBlockConfig3", "findLineBreakInDirectionFromPosition", "direction", "newlineText", "textForStringWithAttributes", "getTextWithoutBlockBreak", "textEndsInBlockBreak", "otherBlock", "otherAttributes", "otherAttribute", "getListAttributeNames", "unmarkExistingInnerBlockBreaksInText", "addBlockBreakToText", "modified", "innerPieces", "lastPiece", "unmarkBlockBreakPiece", "blockBreakText", "blockBreak", "Document", "documentJSON", "textAttributes", "blocks", "blockList", "getBlockAtIndex", "consolidateBlocks", "copyUsingObjectsFromDocument", "sourceDocument", "copyWithBaseBlockAttributes", "replaceBlock", "oldBlock", "newBlock", "insertDocumentAtRange", "locationFromPosition", "getBlockAtPosition", "mergeDocumentAtRange", "formattedDocument", "startPosition", "startLocation", "baseBlockAttributes", "getBaseBlockAttributes", "trailingBlockAttributes", "leadingBlockAttributes", "blockCount", "getBlockCount", "firstBlock", "firstText", "insertTextAtRange", "leftPosition", "rightPosition", "leftLocation", "rightLocation", "locationRangeFromRange", "leftOffset", "leftBlock", "rightOffset", "rightBlock", "leftText", "rightText", "affectedBlockCount", "getDocumentAtRange", "movingRightward", "eachBlockAtRange", "textRange", "eachBlock", "getTextAtIndex", "removeAttributeForAttachment", "setHTMLAttributeAtPosition", "updatedBlock", "insertBlockBreakAtRange", "applyBlockAttributeAtRange", "expanded", "expandRangeToLineBreaksAndSplitBlocks", "blockConfig", "removeLastListAttributeAtRange", "exceptAttributeName", "converted", "convertLineBreaksToBlockBreaksInRange", "removeBlockAttributesAtRange", "removeLastTerminalAttributeAtRange", "consolidateBlocksAtRange", "lastAttributeName", "endLocation", "startBlock", "positionFromLocation", "endBlock", "_this$getBlockAtIndex", "getTextAtPosition", "getCharacterAtPosition", "getEditCount", "editCount", "getCommonAttributesAtPosition", "attributesForBlock", "commonAttributes", "attributesLeft", "inheritableAttributes", "getRangeOfCommonAttributeAtPosition", "startOffset", "endOffset", "blockIndex", "lastAttributeIndex", "min", "attachmentPieces", "getLocationRangeOfAttachment", "getAttachmentPieceForAttachment", "findRangesForBlockAttribute", "ranges", "findRangesForTextAttribute", "withValue", "location", "locationRangeFromPosition", "rangeFromLocationRange", "locationRange", "getTexts", "toSerializableDocument", "pieceForString", "parseTrixDataAttribute", "HTMLParser", "referenceElement", "blockElements", "processedElements", "getDocument", "createHiddenContainer", "containerElement", "nodeFilter", "processNode", "translateBlockElementMarginsToNewlines", "removeHiddenContainer", "display", "nextSibling", "isInsignificantTextNode", "appendBlockForTextNode", "processTextNode", "appendBlockForElement", "processElement", "currentBlockElement", "isBlockElement", "appendStringWithAttributes", "_this$currentBlock", "getBlockAttributes", "getBlockHTMLAttributes", "currentBlock", "appendBlockForAttributesWithElement", "elementIsBlockElement", "currentBlockContainsElement", "parentBlockElement", "findParentBlockElement", "appendEmptyBlock", "parentElement", "_node$previousSibling", "elementCanDisplayPreformattedText", "stringEndsWithWhitespace", "leftTrimBreakableWhitespace", "getTextAttributes", "appendAttachmentWithAttributes", "isExtraBR", "dimensions", "needsTableSeparator", "appendPiece", "appendStringToTextAtIndex", "prependStringToTextAtIndex", "unshift", "configAttr", "attributeInheritedFromBlock", "blockElement", "findBlockElementAncestors", "attrConfig", "_attrConfig$test", "reverse", "settings", "ancestors", "stringIsAllBreakableWhitespace", "nodeEndsWithNonWhitespace", "_element$previousSibl", "defaultMargin", "getMarginOfDefaultBlockElement", "margin", "getMarginOfBlockElementAtIndex", "top", "bottom", "getBlockElementMargin", "whiteSpace", "marginTop", "marginBottom", "FILTER_REJECT", "FILTER_ACCEPT", "unserializableAttributeNames", "serializedAttributesAttribute", "serializedAttributesSelector", "blockCommentPattern", "serializers", "serializable", "HTMLElement", "el", "ManagedAttachment", "attachmentManager", "requestRemovalOfAttachment", "AttachmentManager", "managedAttachments", "manageAttachment", "attachmentIsManaged", "attachmentManagerDidRequestRemovalOfAttachment", "unmanageAttachment", "managedAttachment", "LineBreakInsertion", "composition", "selectedRange", "getSelectedRange", "previousCharacter", "nextCharacter", "shouldInsertBlockBreak", "shouldBreakFormattedBlock", "shouldDecreaseListLevel", "shouldPrependListItem", "shouldRemoveLastBlockAttribute", "Composition", "currentAttributes", "revision", "_this$delegate$compos", "refreshAttachments", "compositionDidChangeDocument", "getSnapshot", "loadSnapshot", "_this$delegate2$compo", "_this$delegate3", "_this$delegate3$compo", "compositionWillLoadSnapshot", "setSelection", "compositionDidLoadSnapshot", "insertText", "updatePosition", "notifyDelegateOfInsertionAtRange", "insertBlock", "insertDocument", "insertString", "getCurrentTextAttributes", "insertBlockBreak", "insertLineBreak", "insertion", "decreaseListLevel", "removeLastBlockAttribute", "breakFormattedBlock", "insertHTML", "replaceHTML", "getLocationRange", "insertFile", "insertFiles", "_this$delegate4", "compositionShouldAcceptFile", "attachmentForFile", "insertAttachments", "insertAttachment", "attachmentText", "textForAttachmentWithAttributes", "shouldManageDeletingInDirection", "shouldManageMovingCursorInDirection", "deleteInDirection", "deletingIntoPreviousBlock", "selectionSpansBlocks", "selectionIsCollapsed", "canDecreaseBlockAttributeLevel", "getBlock", "decreaseBlockAttributeLevel", "getExpandedRangeInDirection", "getAttachmentAtRange", "editAttachment", "moveTextFromRange", "removeAttachment", "stopEditingAttachment", "removeCurrentAttribute", "insertPlaceholder", "placeholderPosition", "getPosition", "selectPlaceholder", "setSelectedRange", "PLACEHOLDER", "forgetPlaceholder", "hasCurrentAttribute", "toggleCurrentAttribute", "setCurrentAttribute", "canSetCurrentAttribute", "canSetCurrentBlockAttribute", "canSetCurrentTextAttribute", "getSelectedDocument", "setBlockAttribute", "setTextAttribute", "notifyDelegateOfCurrentAttributesChange", "setHTMLAtributeAtPosition", "allowedHTMLAttributes", "newDocument", "removeBlockAttribute", "updateCurrentAttributes", "removeTextAttribute", "canDecreaseNestingLevel", "_this$getBlock", "canIncreaseNestingLevel", "previousBlock", "getPreviousBlock", "_this$getBlock2", "_this$getBlock3", "attributeLevel", "ignoreLock", "getCurrentAttributes", "freezeSelection", "thawSelection", "hasFrozenSelection", "_this$delegate5", "compositionDidRequestChangingSelectionToLocationRange", "getSelectionManager", "setLocationRange", "targetLocationRange", "withTargetLocationRange", "withTargetRange", "withTargetDOMRange", "createLocationRangeFromDOMRange", "translateUTF16PositionFromOffset", "editingAttachment", "moveCursorInDirection", "canEditAttachment", "expandSelectionInDirection", "expandSelectionForEditing", "expandSelectionAroundCommonAttribute", "selectionContainsAttachments", "_this$getSelectedAtta", "getSelectedAttachments", "selectionIsInCursorTarget", "positionIsCursorTarget", "locationIsCursorTarget", "positionIsBlockBreak", "_this$document$getPie", "_this$getSelectedDocu", "added", "removed", "oldArray", "newArray", "existingValues", "Set", "currentValues", "_this$delegate6", "_this$delegate6$compo", "compositionDidRemoveAttachment", "_this$delegate7", "_this$delegate7$compo", "compositionDidAddAttachment", "_this$delegate8", "_this$delegate8$compo", "compositionDidEditAttachment", "_this$delegate9", "_this$delegate9$compo", "compositionDidChangeAttachmentPreviewURL", "_this$delegate10", "_this$delegate10$comp", "compositionDidStartEditingAttachment", "_this$delegate11", "_this$delegate11$comp", "compositionDidStopEditingAttachment", "_this$delegate12", "_this$delegate12$comp", "compositionDidChangeCurrentAttributes", "_this$delegate13", "_this$delegate13$comp", "compositionDidPerformInsertionAtRange", "utf16string", "utf16position", "UndoManager", "undoEntries", "redoEntries", "recordUndoEntry", "description", "consolidatable", "previousEntry", "entryHasDescriptionAndContext", "undoEntry", "createEntry", "pop", "redoEntry", "snapshot", "canUndo", "canRedo", "entry", "BLOCK_ATTRIBUTE_NAME", "Filter", "applyBlockAttribute", "findRangesOfBlocks", "findRangesOfPieces", "moveSelectedRangeForward", "attachmentGalleryFilter", "DEFAULT_FILTERS", "Editor", "undoManager", "filters", "loadDocument", "loadHTML", "loadJSON", "getClientRectAtPosition", "getClientRectAtLocationRange", "activateAttribute", "attributeIsActive", "canActivateAttribute", "deactivateAttribute", "LocationMapper", "findLocationFromContainerAndOffset", "container", "foundBlock", "attachmentElement", "findAttachmentElementParentForNode", "rejectAttachmentContents", "nodeLength", "findContainerAndOffsetFromLocation", "nodeOffset", "findNodeAndOffsetFromLocation", "getSignificantNodesForIndex", "acceptSignificantNodes", "recordingNodes", "rejectEmptyTextNodes", "PointMapper", "createDOMRangeFromPoint", "x", "y", "caretPositionFromPoint", "offsetNode", "createRange", "setStart", "caretRangeFromPoint", "createTextRange", "originalDOMRange", "moveToPoint", "select", "getClientRectsForDOMRange", "getClientRects", "SelectionManager", "didMouseDown", "locationMapper", "pointMapper", "lockCount", "currentLocationRange", "lockedLocationRange", "createDOMRangeFromLocationRange", "updateCurrentLocationRange", "setLocationRangeFromPointRange", "pointRange", "getLocationAtPoint", "lock", "unlock", "clearSelection", "_getDOMRange", "collapsed", "selectionIsExpanded", "domRangeWithinElement", "pauseTemporarily", "resumeHandlers", "paused", "resume", "clearTimeout", "resumeTimeout", "_this$delegate$locati", "locationRangeDidChange", "rangeStart", "rangeEnd", "setEnd", "point", "_this$createLocationR", "keyNames", "undoable", "commands", "do", "undos", "AttachmentEditorController", "title", "trixAction", "didClickToolbar", "didClickActionButton", "textarea", "placeholder", "textareaClone", "tabIndex", "autoresize", "scrollHeight", "didInputCaption", "didKeyDownCaption", "didChangeCaption", "didBlurCaption", "editingFigcaption", "editCaption", "focus", "install", "makeElementMutable", "addToolbar", "installCaptionEditor", "uninstall", "savePendingCaption", "didUninstallAttachmentEditor", "pendingCaption", "_this$delegate3$attac", "attachmentEditorDidRequestUpdatingAttributesForAttachment", "attachmentEditorDidRequestRemovingAttributeForAttachment", "stopPropagation", "attachmentEditorDidRequestRemovalOfAttachment", "_this$delegate5$attac", "keyCode", "attachmentEditorDidRequestDeselectingAttachment", "CompositionController", "didFocus", "didBlur", "didClickAttachment", "documentView", "_this$blurPromise", "focused", "compositionControllerDidFocus", "blurPromise", "compositionControllerDidBlur", "findAttachmentForElement", "compositionControllerDidSelectAttachment", "getSerializableElement", "isEditingAttachment", "_this$delegate4$compo", "_this$delegate5$compo", "canSyncDocumentView", "compositionControllerWillSyncDocumentView", "compositionControllerDidSyncDocumentView", "compositionControllerDidRender", "rerenderViewForObject", "refreshViewCache", "attachmentEditor", "installAttachmentEditorForAttachment", "_this$attachmentEdito", "uninstallAttachmentEditor", "_this$attachmentEdito2", "compositionControllerWillUpdateAttachment", "compositionControllerDidRequestRemovalOfAttachment", "compositionControllerDidRequestDeselectingAttachment", "Controller", "mutableAttributeName", "mutableSelector", "childList", "characterData", "characterDataOldValue", "subtree", "MutationObserver", "didMutate", "observer", "observe", "disconnect", "mutations", "_this$delegate$elemen", "findSignificantMutations", "elementDidMutate", "getMutationSummary", "mutation", "mutationIsSignificant", "nodeIsMutable", "nodesModifiedByMutation", "nodeIsSignificant", "addedNodes", "removedNodes", "getTextMutationSummary", "additions", "deletions", "getTextChangesFromCharacterData", "textChanges", "getTextChangesFromChildList", "addition", "summary", "textAdded", "deleted", "textDeleted", "getMutationsByType", "textRemoved", "getTextForNodes", "characterMutations", "startMutation", "endMutation", "summarized", "oldString", "newString", "oldValue", "FileVerificationOperation", "reader", "FileReader", "abort", "readAsArrayBuffer", "FlakyAndroidKeyboardDetector", "shouldIgnore", "previousEvent", "checkSamsungKeyboardBuggyModeStart", "checkSamsungKeyboardBuggyModeEnd", "buggyMode", "insertingLongTextAfterUnidentifiedChar", "differsInWhitespace", "innerText", "inputType", "_this$event$data", "isBeforeInputInsertText", "previousEventWasUnidentifiedKeydown", "_this$previousEvent", "_this$previousEvent2", "text1", "text2", "normalize", "whiteSpaceNormalizerRegexp", "InputController", "mutationObserver", "flakyKeyboardDetector", "events", "handlerFor", "mutationSummary", "editorWillSyncDocumentView", "editorDidSyncDocumentView", "requestRender", "_this$delegate$inputC", "inputControllerDidRequestRender", "requestReparse", "_this$delegate2$input", "inputControllerDidRequestReparse", "operations", "all", "handleInput", "_this$responder", "inputControllerWillAttachFiles", "responder", "defaultPrevented", "inputControllerWillHandleInput", "inputControllerDidHandleInput", "createLinkHTML", "pastedFileCount", "Level0InputController", "resetInputSummary", "setInputSummary", "inputSummary", "isComposing", "inputControllerDidAllowUnhandledInput", "mutationIsExpected", "preferDocument", "mutationAdditionMatchesSummary", "mutationDeletionMatchesSummary", "didDelete", "unexpectedNewlineAddition", "unexpectedNewlineDeletion", "_this$compositionInpu", "textChanged", "composedEmptyString", "compositionInput", "getEndData", "getCompositionInput", "CompositionInput", "isEnded", "_this$responder2", "serializeSelectionToDataTransfer", "_this$responder3", "setData", "canAcceptDataTransfer", "Files", "getPastedHTMLUsingHiddenElement", "pageXOffset", "pageYOffset", "opacity", "requestAnimationFrame", "keydown", "didInput", "keyName", "_context2", "modifier", "_context", "character", "inputControllerDidReceiveKeyboardCommand", "keypress", "altKey", "stringFromKeyEvent", "_this$responder9", "inputControllerWillPerformTyping", "textInput", "toUpperCase", "_this$responder10", "dragenter", "dragstart", "_this$delegate5$input", "draggedRange", "inputControllerDidStartDrag", "dragover", "draggingPoint", "clientX", "clientY", "_this$delegate6$input", "inputControllerDidReceiveDragOverPoint", "dragend", "_this$delegate7$input", "inputControllerDidCancelDrag", "drop", "_event$dataTransfer", "_this$responder11", "_this$responder12", "inputControllerWillMoveText", "_this$responder13", "fromJSONString", "cut", "_this$responder14", "clipboardData", "inputControllerWillCutText", "_this$responder15", "paste", "clipboard", "testClipboardData", "pasteEventIsCrippledSafariHTMLPaste", "_this$responder16", "inputControllerWillPaste", "inputControllerDidPaste", "_this$responder17", "_this$delegate14", "_this$responder18", "_this$delegate15", "_this$delegate16", "_this$responder19", "_this$delegate17", "_clipboard$items", "_clipboard$items$getA", "items", "getAsFile", "_this$delegate18", "_this$responder20", "_this$delegate19", "extensionForFile", "compositionstart", "compositionupdate", "compositionend", "beforeinput", "backspace", "_this$delegate20", "delete", "_this$delegate21", "return", "_this$delegate22", "_this$responder21", "tab", "_this$responder22", "_this$responder23", "_this$responder24", "_this$responder25", "control", "d", "_this$delegate23", "h", "_this$delegate24", "_this$delegate25", "_this$responder26", "shift", "_this$delegate26", "_this$responder27", "_this$responder28", "_this$responder29", "alt", "_this$delegate27", "meta", "_this$delegate28", "_file$type", "which", "charCode", "hasPasteboardFlavor", "hasReadableDynamicData", "isExternalHTMLPaste", "isExternalRichTextPaste", "inputController", "isSignificant", "_this$responder5", "_this$responder4", "canApplyToDocument", "_this$responder6", "_this$responder7", "_this$responder8", "_this$data$start", "_this$data$end", "Level2InputController", "scheduledRender", "composing", "reparse", "scheduleRender", "_this$afterRender", "cancelAnimationFrame", "afterRender", "toggleAttributeIfSupported", "inputControllerWillPerformFormatting", "activateAttributeIfSupported", "getTargetDOMRange", "minLength", "_this$event$getTarget", "_this$event", "targetRanges", "getTargetRanges", "staticRangeToRange", "withEvent", "command", "keyboardCommandFromKeyEvent", "shiftKey", "_event$clipboardData", "pasteEventHasFilesOnly", "pasteEventHasPlainTextOnly", "inputTypes", "immmediateRender", "inputEvent", "dragging", "pointFromEvent", "dragEventHasFiles", "ArrowLeft", "ArrowRight", "Backspace", "Tab", "deleteByComposition", "deleteByCut", "deleteByDrag", "deleteByDragRange", "deleteCompositionText", "deleteContent", "deleteContentBackward", "deleteContentForward", "deleteEntireSoftLine", "deleteHardLineBackward", "deleteHardLineForward", "deleteSoftLineBackward", "deleteSoftLineForward", "deleteWordBackward", "deleteWordForward", "formatBackColor", "formatBold", "formatFontColor", "formatFontName", "formatIndent", "formatItalic", "formatJustifyCenter", "formatJustifyFull", "formatJustifyLeft", "formatJustifyRight", "formatOutdent", "formatRemove", "_this$responder30", "formatSetBlockTextDirection", "formatSetInlineTextDirection", "formatStrikeThrough", "formatSubscript", "formatSuperscript", "formatUnderline", "historyRedo", "inputControllerWillPerformRedo", "historyUndo", "inputControllerWillPerformUndo", "insertCompositionText", "insertFromComposition", "insertFromDrop", "_this$responder31", "insertFromPaste", "_this$responder32", "_this$responder33", "processableFilePaste", "_this$responder34", "_this$responder35", "insertFromYank", "insertLink", "insertOrderedList", "insertParagraph", "_this$responder36", "insertReplacementText", "replacement", "_this$event$dataTrans", "insertTranspose", "insertUnorderedList", "staticRange", "_event$dataTransfer$f", "attributeButtonSelector", "actionButtonSelector", "toolbarButtonSelector", "dialogSelector", "activeDialogSelector", "dialogButtonSelector", "dialogInputSelector", "getInputForDialog", "getAttributeName", "getActionName", "ToolbarController", "didClickAttributeButton", "didClickDialogButton", "didKeyDownDialogInput", "actions", "resetDialogInputs", "toolbarDidClickButton", "actionName", "getDialog", "toggleDialog", "toolbarDidInvokeAction", "toolbarDidToggleAttribute", "refreshAttributeButtons", "dialogElement", "dialog", "hideDialog", "updateActions", "refreshActionButtons", "eachActionButton", "disabled", "updateAttributes", "eachAttributeButton", "dialogIsVisible", "applyKeyboardCommand", "keyString", "button", "buttonKeys", "dialogName", "showDialog", "toolbarWillShowDialog", "disabledInput", "toolbarDidShowDialog", "willValidate", "setCustomValidity", "checkValidity", "isSafeAttribute", "toolbarDidUpdateAttribute", "isValidAttribute", "toolbarDidRemoveAttribute", "toolbarDidHideDialog", "EditorController", "editorElement", "compositionController", "toolbarController", "toolbarElement", "editor", "notifyEditorElement", "handlingInput", "updateCurrentActions", "pasting", "pastedRange", "attachmentLocationRange", "loadingSnapshot", "isFocused", "requestedLocationRange", "compositionRevisionWhenLocationRangeRequested", "renderedCompositionRevision", "runEditorFilters", "isFocusedInvisibly", "requestedRender", "recordTypingUndoEntry", "recordFormattingUndoEntry", "locationRangeBeforeDrag", "invokingElement", "invokeAction", "selectionFrozen", "canInvokeAction", "actionIsExternal", "_this$actions$actionN", "_this$actions$actionN2", "getCurrentActions", "currentActions", "snapshotsAreEqual", "updateInputElement", "serializer", "setFormValue", "message", "documentChangedSinceLastRender", "notify", "getUndoContext", "getLocationContext", "getTimeContext", "Date", "getTime", "_this$editorElement$o", "ownerDocument", "TrixToolbarElement", "connectedCallback", "makeEditable", "configureContentEditable", "disableObjectResizing", "setDefaultParagraphSeparator", "_document$queryComman", "_document", "queryCommandSupported", "execCommand", "_document$queryComman2", "_document2", "cursorTargetStyles", "_internals", "WeakMap", "_validate", "WeakSet", "ElementInternalsDelegate", "_classPrivateFieldInitSpec", "writable", "_classPrivateFieldSet", "attachInternals", "_classPrivateMethodGet", "_validate2", "disconnectedCallback", "labels", "_classPrivateFieldGet", "_this$element$inputEl", "inputElement", "toggleAttribute", "required", "validity", "validationMessage", "reportValidity", "customValidationMessage", "valueMissing", "customError", "setValidity", "_focusHandler", "_resetBubbled", "_clickBubbled", "LegacyDelegate", "contains", "label", "texts", "_classPrivateFieldGet2", "console", "warn", "_delegate", "TrixEditorElement", "formAssociated", "localName", "_this$ownerDocument", "toolbarId", "_this$inputElement", "_this$ownerDocument2", "inputId", "nextElementSibling", "_this$editorControlle", "editorController", "_this$inputElement2", "_this$inputElement3", "defaultValue", "_this$editor", "_this$editorControlle2", "formDisabledCallback", "formResetCallback", "Trix", "VERSION", "version", "core", "models", "controllers", "observers", "customElements", "define", "x", "k", "a", "b", "c", "d", "s", "i", "n", "hi", "j", "hex", "from", "to", "SparkMD5", "callback", "start", "toArray", "csrfToken", "delegate", "error", "sparkMd5", "x", "k", "a", "b", "c", "d", "s", "i", "n", "hi", "j", "hex", "from", "to", "SparkMD5", "fileSlice", "FileChecksum", "callback", "start", "getMetaValue", "findElement", "findElements", "toArray", "dispatchEvent", "BlobRecord", "csrfToken", "BlobUpload", "id", "DirectUpload", "delegate", "error", "notify", "DirectUploadController", "inputSelector", "DirectUploadsController", "processingAttribute", "submitButtonsByForm", "started", "didClick", "didSubmitForm", "didSubmitRemoteElement", "handleFormSubmissionEvent", "disable", "enable", "submitForm", "autostart", "fn", "prototype", "fn", "i", "l", "a", "b", "descriptors", "filter", "toArray", "matches", "m", "hasOwnProperty", "define", "message", "config", "error", "filter", "each", "i", "defined", "index", "match", "prototype", "toString", "each", "encode", "id", "fn", "h", "match", "i", "index", "e", "isFormData", "isFileList", "transitional", "i", "match", "filter", "w", "self", "i", "format", "prototype", "config", "transform", "fn", "message", "config", "resolve", "validateStatus", "match", "now", "i", "fn", "now", "throttled", "e", "inRange", "throttled", "fn", "origin", "match", "config", "a", "b", "merge", "config", "config", "resolve", "_resolve", "transitional", "cancel", "signal", "e", "done", "fn", "e", "res", "_", "config", "resolve", "fn", "e", "adapters", "i", "id", "s", "config", "i", "version", "message", "validators", "config", "e", "transitional", "i", "error", "resolve", "cancel", "i", "_resolve", "message", "config", "index", "c", "callback", "Axios", "AxiosError", "CanceledError", "isCancel", "CancelToken", "VERSION", "all", "isAxiosError", "spread", "toFormData", "AxiosHeaders", "HttpStatusCode", "mergeConfig", "csrfToken", "axios_default", "application", "map", "error", "message", "matches", "_", "index", "match", "e", "filter", "delegate", "callback", "fetch", "set", "delegate", "callback", "matches", "match", "oldValue", "index", "_", "error", "descriptors", "constructor", "message", "extend", "prototype", "a", "b", "application", "logger", "element", "c", "n", "k", "v", "filter", "resolve", "d", "id", "fn", "c", "e", "st", "matches", "parent", "children", "html", "c", "axios_default", "message", "e", "message", "start", "counter", "module", "exports", "incr", "decr", "curr", "idMap", "attributeValueOrCSS", "attributeName", "svgRefRegex", "urlRefRegex", "match", "replace", "g0", "g1", "includes", "css", "prefix", "re", "RegExp", "g2", "promisifyRequest", "request", "Promise", "resolve", "reject", "oncomplete", "onsuccess", "result", "onabort", "onerror", "error", "createStore", "dbName", "storeName", "indexedDB", "open", "onupgradeneeded", "createObjectStore", "dbp", "txMode", "callback", "then", "db", "transaction", "objectStore", "defaultGetStoreFunc", "defaultGetStore", "get", "key", "customStore", "store", "set", "value", "put", "setMany", "entries", "forEach", "entry", "getMany", "keys", "all", "map", "update", "updater", "this", "err", "del", "delete", "delMany", "clear", "eachCursor", "openCursor", "continue", "getAllKeys", "items", "cursor", "push", "values", "getAll", "i", "__webpack_module_cache__", "__webpack_require__", "moduleId", "cachedModule", "__webpack_modules__", "d", "definition", "o", "Object", "defineProperty", "enumerable", "obj", "prop", "prototype", "hasOwnProperty", "call", "r", "Symbol", "toStringTag", "cssScope", "cssUrlFixer", "DOM_EVENTS", "attributesSet", "renderBody", "elem", "options", "body", "enableJs", "disableUniqueIds", "disableCssScoping", "spriteIconId", "isSpriteIcon", "doc", "DOMParser", "parseFromString", "fragment", "getElementById", "querySelector", "eventNames", "length", "document", "startsWith", "getAllEventNames", "elemAttributesSet", "getAttribute", "Set", "elemUniqueId", "Array", "from", "querySelectorAll", "id", "newId", "setAttribute", "concat", "el", "tagName", "remove", "scriptEl", "createElement", "appendChild", "childNodes", "attributesToRemove", "attributes", "name", "newValue", "toLowerCase", "attr", "removeAttribute", "innerHTML", "outerHTML", "has", "add", "event", "CustomEvent", "bubbles", "dispatchEvent", "view", "window", "requestsInProgress", "memoryCache", "renderIcon", "async", "url", "URL", "globalThis", "location", "src", "toString", "hash", "cacheOpt", "lsCache", "item", "e", "localStorage", "getItem", "JSON", "parse", "Date", "now", "expiry", "data", "isCachingEnabled", "renderBodyCb", "bind", "self", "cache", "setTimeout", "fetch", "response", "ok", "Error", "status", "statusText", "text", "bodyLower", "trim", "cacheExp", "parseInt", "dataToSet", "stringify", "Number", "isNaN", "setItem", "console", "warn", "catch", "detail", "Function", "finally", "intObserver", "IntersectionObserver", "isIntersecting", "target", "unobserve", "rootMargin", "handled", "renderAllSVGs", "element", "indexOf", "observe", "observerAdded", "addEventListener", "init", "clearInterval", "intervalCheck", "MutationObserver", "mutationRecords", "some", "record", "addedNodes", "nodeType", "Node", "ELEMENT_NODE", "type", "documentElement", "attributeFilter", "childList", "subtree", "setInterval", "readyState", "SVGLoader", "destroyCache", "entriesCache", "removeItem", "noop", "id", "isArray", "isObject", "fn", "i", "k", "merge", "v", "o", "k", "isFunction", "a", "b", "e", "i", "isNumber", "n", "x", "y", "p", "start", "s", "index", "hi", "set", "callback", "fn", "args", "start", "t", "s", "p", "m", "d", "v", "l", "h", "b", "a", "f", "n", "k", "w", "i", "r", "g", "c", "j", "to", "color", "descriptors", "merge", "_descriptors", "isObject", "defaults", "isArray", "devicePixelRatio", "x", "y", "text", "matches", "index", "change", "add", "isFunction", "resolve", "parent", "set", "next", "pt", "prev", "getComputedStyle", "styles", "e", "formatter", "st", "fn", "i", "draw", "from", "to", "duration", "defaults", "v", "config", "isObject", "isArray", "x", "y", "t", "r", "b", "l", "index", "parent", "start", "prev", "names", "transition", "a", "next", "e", "isNumber", "Element", "offset", "validIndex", "j", "fontString", "w", "h", "color", "id", "merge", "registry", "format", "a", "b", "start", "i", "index", "hi", "j", "inRange", "e", "v", "layouts", "layout", "isObject", "change", "positions", "x", "y", "defaults", "config", "trigger", "resize", "w", "filter", "descriptors", "plugin", "all", "id", "set", "transition", "names", "isFunction", "p", "isArray", "animationOptions", "c", "listener", "o", "r", "offset", "alpha", "Element", "prev", "t", "skip", "h", "start", "x", "y", "a", "b", "fn", "isArray", "index", "fill", "isObject", "i", "j", "color", "draw", "Element", "config", "defaults", "v", "e", "ci", "offset", "i", "x", "y", "d", "isArray", "index", "callback", "parent", "Element", "config", "a", "b", "pt", "isObject", "v", "j", "e", "noop", "index", "offset", "j", "v", "start", "m", "defaults", "isArray", "i", "x", "y", "w", "h", "color", "parent", "a", "b", "round", "isNumber", "hi", "map", "format", "formats", "formatter", "interpolate", "prev", "next", "defaultOptions", "dates", "isDate", "isDate", "sign", "round", "sign", "sign", "defaultOptions", "format", "index", "findKey", "index", "defaultOptions", "defaultOptions", "sign", "formatters", "localize", "offset", "sign", "formatLong", "format", "defaultOptions", "formatters", "formatter", "getDefaultOptions", "setValue", "match", "match", "sign", "n", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "defaultOptions", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "formattingTokensRegExp", "longFormattingTokensRegExp", "escapedStringRegExp", "doubleQuoteRegExp", "unescapedLatinCharacterRegExp", "parse", "defaultOptions", "getDefaultOptions", "cleanEscapedString", "a", "b", "index", "offset", "sign", "isLeapYearIndex", "parse", "parse", "isNumber", "colors", "l", "interpolate", "start", "c", "i", "a", "b", "index", "prev", "i", "j", "v", "origin", "ln", "x", "y", "r", "config", "positioners", "boundingRects", "w", "h", "HALF_PI", "text", "shadow", "color", "index", "me", "merge", "defaults", "pt", "p", "h1", "a", "b", "k", "isObject", "EXPANDO_KEY", "fn", "dispatchEvent", "Choices", "index", "Chartkick", "isObject", "extend", "CustomEvent", "callback", "id", "callback", "i", "a", "i", "$", "window", "document", "html", "c", "attr", "transform", "i", "duration", "on", "e", "$", "parents", "k", "events", "j", "window", "events", "i", "j", "callback", "e", "styles", "styles", "window", "document", "window", "i", "each", "callback", "index", "filter", "$", "html", "text", "document", "eq", "append", "k", "j", "document", "i", "j", "$", "next", "prev", "parents", "i", "$", "parent", "closest", "j", "children", "i", "$", "on", "each", "index", "eq", "append", "filter", "$", "e", "callback", "getComputedStyle", "window", "a", "isObject", "o", "extend", "to", "i", "duration", "window", "document", "e", "support", "window", "overrides", "window", "on", "window", "on", "window", "observerUpdate", "i", "events", "self", "index", "index", "i", "_", "v", "i", "index", "i", "i", "i", "skip", "e", "i", "x", "y", "z", "minTranslate", "maxTranslate", "transitionEnd", "e", "duration", "transitionEnd", "transitionEnd", "index", "skip", "i", "t", "transitionEnd", "e", "index", "index", "skip", "document", "i", "index", "document", "window", "e", "preventDefault", "document", "e", "e", "i", "increment", "e", "document", "support", "extend", "window", "a", "b", "i", "support", "callback", "window", "i", "defaults_default", "extend", "extend", "defaults_default", "i", "setTranslate", "document", "m", "id", "next", "axios_default", "c", "axios_default", "text", "message", "p", "children", "attr", "gt", "lt", "e", "message", "m", "isValid", "isValid", "defaults", "s", "debounce", "fn", "t", "toggleClass", "e", "error", "_", "config", "defaults", "c", "i", "format", "match", "_a", "fn", "config", "_i", "source", "t", "s", "i", "n", "p", "r", "k", "a", "j", "self", "defaults", "bind", "set", "yr", "fn", "config", "e", "maxTime", "minTime", "element", "debounce", "onResize", "triggerChange", "toggleClass", "m", "c", "offset", "d", "month", "_", "x", "outOfRange", "formats", "dates", "b", "format", "instances", "e", "message", "href", "callback", "location", "e", "region", "error", "href", "qs", "d", "filter", "e", "removeListener", "x", "e", "c", "href", "href", "callback", "axios_default", "e", "axios_default", "Big", "error", "e", "a", "b", "parent", "c", "e", "st", "matches", "e", "index", "e", "v", "callback", "e", "parent", "o", "c", "e", "i", "e", "e", "c", "e", "location", "axios_default", "e", "e", "next", "d", "ACTIVE_CLASS", "href", "e", "adapters", "now", "error", "message", "extend", "s", "subscription", "a", "message", "toDate", "format", "format", "text", "focus", "html", "match", "html", "e", "message", "axios_default", "index", "import_query_string", "e", "message", "axios_default", "html", "index", "clone", "message", "e"] }